/*! * DevExtreme (dx.web.debug.js) * Version: 25.1.3 * Build date: Wed Jun 25 2025 * * Copyright (c) 2012 - 2025 Developer Express Inc. ALL RIGHTS RESERVED * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/ */ "use strict"; ! function() { var __webpack_modules__ = { 70037: /*!*************************************************************************************************************************!*\ !*** ../../node_modules/.pnpm/@preact+signals-core@1.8.0/node_modules/@preact/signals-core/dist/signals-core.module.js ***! \*************************************************************************************************************************/ function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { __webpack_require__.r(__webpack_exports__); __webpack_require__.d(__webpack_exports__, { Signal: function() { return u }, batch: function() { return r }, computed: function() { return w }, effect: function() { return E }, signal: function() { return d }, untracked: function() { return n } }); var i = Symbol.for("preact-signals"); function t() { if (!(s > 1)) { var i, t = !1; while (void 0 !== h) { var r = h; h = void 0; f++; while (void 0 !== r) { var o = r.o; r.o = void 0; r.f &= -3; if (!(8 & r.f) && c(r)) { try { r.c() } catch (r) { if (!t) { i = r; t = !0 } } } r = o } } f = 0; s--; if (t) { throw i } } else { s-- } } function r(i) { if (s > 0) { return i() } s++; try { return i() } finally { t() } } var o = void 0; function n(i) { var t = o; o = void 0; try { return i() } finally { o = t } } var h = void 0, s = 0, f = 0, v = 0; function e(i) { if (void 0 !== o) { var t = i.n; if (void 0 === t || t.t !== o) { t = { i: 0, S: i, p: o.s, n: void 0, t: o, e: void 0, x: void 0, r: t }; if (void 0 !== o.s) { o.s.n = t } o.s = t; i.n = t; if (32 & o.f) { i.S(t) } return t } else if (-1 === t.i) { t.i = 0; if (void 0 !== t.n) { t.n.p = t.p; if (void 0 !== t.p) { t.p.n = t.n } t.p = o.s; t.n = void 0; o.s.n = t; o.s = t } return t } } } function u(i) { this.v = i; this.i = 0; this.n = void 0; this.t = void 0 } u.prototype.brand = i; u.prototype.h = function() { return !0 }; u.prototype.S = function(i) { if (this.t !== i && void 0 === i.e) { i.x = this.t; if (void 0 !== this.t) { this.t.e = i } this.t = i } }; u.prototype.U = function(i) { if (void 0 !== this.t) { var t = i.e, r = i.x; if (void 0 !== t) { t.x = r; i.e = void 0 } if (void 0 !== r) { r.e = t; i.x = void 0 } if (i === this.t) { this.t = r } } }; u.prototype.subscribe = function(i) { var t = this; return E((function() { var r = t.value, n = o; o = void 0; try { i(r) } finally { o = n } })) }; u.prototype.valueOf = function() { return this.value }; u.prototype.toString = function() { return this.value + "" }; u.prototype.toJSON = function() { return this.value }; u.prototype.peek = function() { var i = o; o = void 0; try { return this.value } finally { o = i } }; Object.defineProperty(u.prototype, "value", { get: function() { var i = e(this); if (void 0 !== i) { i.i = this.i } return this.v }, set: function(i) { if (i !== this.v) { if (f > 100) { throw new Error("Cycle detected") } this.v = i; this.i++; v++; s++; try { for (var r = this.t; void 0 !== r; r = r.x) { r.t.N() } } finally { t() } } } }); function d(i) { return new u(i) } function c(i) { for (var t = i.s; void 0 !== t; t = t.n) { if (t.S.i !== t.i || !t.S.h() || t.S.i !== t.i) { return !0 } } return !1 } function a(i) { for (var t = i.s; void 0 !== t; t = t.n) { var r = t.S.n; if (void 0 !== r) { t.r = r } t.S.n = t; t.i = -1; if (void 0 === t.n) { i.s = t; break } } } function l(i) { var t = i.s, r = void 0; while (void 0 !== t) { var o = t.p; if (-1 === t.i) { t.S.U(t); if (void 0 !== o) { o.n = t.n } if (void 0 !== t.n) { t.n.p = o } } else { r = t } t.S.n = t.r; if (void 0 !== t.r) { t.r = void 0 } t = o } i.s = r } function y(i) { u.call(this, void 0); this.x = i; this.s = void 0; this.g = v - 1; this.f = 4 }(y.prototype = new u).h = function() { this.f &= -3; if (1 & this.f) { return !1 } if (32 == (36 & this.f)) { return !0 } this.f &= -5; if (this.g === v) { return !0 } this.g = v; this.f |= 1; if (this.i > 0 && !c(this)) { this.f &= -2; return !0 } var i = o; try { a(this); o = this; var t = this.x(); if (16 & this.f || this.v !== t || 0 === this.i) { this.v = t; this.f &= -17; this.i++ } } catch (i) { this.v = i; this.f |= 16; this.i++ } o = i; l(this); this.f &= -2; return !0 }; y.prototype.S = function(i) { if (void 0 === this.t) { this.f |= 36; for (var t = this.s; void 0 !== t; t = t.n) { t.S.S(t) } } u.prototype.S.call(this, i) }; y.prototype.U = function(i) { if (void 0 !== this.t) { u.prototype.U.call(this, i); if (void 0 === this.t) { this.f &= -33; for (var t = this.s; void 0 !== t; t = t.n) { t.S.U(t) } } } }; y.prototype.N = function() { if (!(2 & this.f)) { this.f |= 6; for (var i = this.t; void 0 !== i; i = i.x) { i.t.N() } } }; Object.defineProperty(y.prototype, "value", { get: function() { if (1 & this.f) { throw new Error("Cycle detected") } var i = e(this); this.h(); if (void 0 !== i) { i.i = this.i } if (16 & this.f) { throw this.v } return this.v } }); function w(i) { return new y(i) } function _(i) { var r = i.u; i.u = void 0; if ("function" == typeof r) { s++; var n = o; o = void 0; try { r() } catch (t) { i.f &= -2; i.f |= 8; g(i); throw t } finally { o = n; t() } } } function g(i) { for (var t = i.s; void 0 !== t; t = t.n) { t.S.U(t) } i.x = void 0; i.s = void 0; _(i) } function p(i) { if (o !== this) { throw new Error("Out-of-order effect") } l(this); o = i; this.f &= -2; if (8 & this.f) { g(this) } t() } function b(i) { this.x = i; this.u = void 0; this.s = void 0; this.o = void 0; this.f = 32 } b.prototype.c = function() { var i = this.S(); try { if (8 & this.f) { return } if (void 0 === this.x) { return } var t = this.x(); if ("function" == typeof t) { this.u = t } } finally { i() } }; b.prototype.S = function() { if (1 & this.f) { throw new Error("Cycle detected") } this.f |= 1; this.f &= -9; _(this); a(this); s++; var i = o; o = this; return p.bind(this, i) }; b.prototype.N = function() { if (!(2 & this.f)) { this.f |= 2; this.o = h; h = this } }; b.prototype.d = function() { this.f |= 8; if (!(1 & this.f)) { g(this) } }; function E(i) { var t = new b(i); try { t.c() } catch (i) { t.d(); throw i } return t.d.bind(t) } }, 12887: /*!*******************************************************************************************************************!*\ !*** ../../node_modules/.pnpm/inferno-create-element@8.2.3/node_modules/inferno-create-element/dist/index.esm.js ***! \*******************************************************************************************************************/ function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { __webpack_require__.r(__webpack_exports__); __webpack_require__.d(__webpack_exports__, { createElement: function() { return createElement } }); var inferno__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__( /*! inferno */ 76231); function isNullOrUndef(o) { return void 0 === o || null === o } function isUndefined(o) { return void 0 === o } var componentHooks = { onComponentDidAppear: 1, onComponentDidMount: 1, onComponentDidUpdate: 1, onComponentShouldUpdate: 1, onComponentWillDisappear: 1, onComponentWillMount: 1, onComponentWillUnmount: 1, onComponentWillUpdate: 1 }; function createElement(type, props, _children) { var children; var ref = null; var key = null; var className = null; var flags; var newProps; var childLen = arguments.length - 2; if (1 === childLen) { children = _children } else if (childLen > 1) { children = []; while (childLen-- > 0) { children[childLen] = arguments[childLen + 2] } } if (o = type, "string" === typeof o) { flags = (0, inferno__WEBPACK_IMPORTED_MODULE_0__.getFlagsForElementVnode)(type); if (!isNullOrUndef(props)) { newProps = {}; for (var prop in props) { if ("className" === prop || "class" === prop) { className = props[prop] } else if ("key" === prop) { key = props.key } else if ("children" === prop && isUndefined(children)) { children = props.children } else if ("ref" === prop) { ref = props.ref } else { if ("contenteditable" === prop) { flags |= 4096 } newProps[prop] = props[prop] } } } } else { flags = 2; if (!isUndefined(children)) { if (!props) { props = {} } props.children = children } if (!isNullOrUndef(props)) { newProps = {}; for (var _prop in props) { if ("key" === _prop) { key = props.key } else if ("ref" === _prop) { ref = props.ref } else if (1 === componentHooks[_prop]) { if (!ref) { ref = {} } ref[_prop] = props[_prop] } else { newProps[_prop] = props[_prop] } } } return (0, inferno__WEBPACK_IMPORTED_MODULE_0__.createComponentVNode)(flags, type, newProps, key, ref) } var o; if (8192 & flags) { return (0, inferno__WEBPACK_IMPORTED_MODULE_0__.createFragment)(1 === childLen ? [children] : children, 0, key) } return (0, inferno__WEBPACK_IMPORTED_MODULE_0__.createVNode)(flags, type, className, children, 0, newProps, key, ref) } }, 76231: /*!********************************************************************************************!*\ !*** ../../node_modules/.pnpm/inferno@8.2.3/node_modules/inferno/index.esm.js + 1 modules ***! \********************************************************************************************/ function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { __webpack_require__.r(__webpack_exports__); __webpack_require__.d(__webpack_exports__, { AnimationQueues: function() { return AnimationQueues }, Component: function() { return Component }, EMPTY_OBJ: function() { return EMPTY_OBJ }, Fragment: function() { return Fragment }, _CI: function() { return createClassComponentInstance }, _HI: function() { return normalizeRoot }, _M: function() { return mount }, _MCCC: function() { return mountClassComponentCallbacks }, _ME: function() { return mountElement }, _MFCC: function() { return mountFunctionalComponentCallbacks }, _MP: function() { return mountProps }, _MR: function() { return mountRef }, _RFC: function() { return renderFunctionalComponent }, __render: function() { return __render }, createComponentVNode: function() { return createComponentVNode }, createFragment: function() { return createFragment }, createPortal: function() { return createPortal }, createRef: function() { return createRef }, createRenderer: function() { return createRenderer }, createTextVNode: function() { return createTextVNode }, createVNode: function() { return createVNode }, directClone: function() { return directClone }, findDOMFromVNode: function() { return findDOMFromVNode }, forwardRef: function() { return forwardRef }, getFlagsForElementVnode: function() { return getFlagsForElementVnode }, linkEvent: function() { return linkEvent }, normalizeProps: function() { return normalizeProps }, options: function() { return options }, render: function() { return render }, rerender: function() { return rerender }, version: function() { return version } }); var isArray = Array.isArray; function isStringOrNumber(o) { var type = typeof o; return "string" === type || "number" === type } function isNullOrUndef(o) { return void 0 === o || null === o } function isInvalid(o) { return null === o || false === o || true === o || void 0 === o } function isFunction(o) { return "function" === typeof o } function isString(o) { return "string" === typeof o } function isNull(o) { return null === o } function combineFrom(first, second) { var out = {}; if (first) { for (var key in first) { out[key] = first[key] } } if (second) { for (var _key in second) { out[_key] = second[_key] } } return out } function linkEvent(data, event) { if (isFunction(event)) { return { data: data, event: event } } return null } function isLinkEventObject(o) { return !isNull(o) && "object" === typeof o } var EMPTY_OBJ = {}; var Fragment = "$F"; var AnimationQueues = function() { this.componentDidAppear = []; this.componentWillDisappear = []; this.componentWillMove = [] }; function normalizeEventName(name) { return name.substring(2).toLowerCase() } function appendChild(parentDOM, dom) { parentDOM.appendChild(dom) } function insertOrAppend(parentDOM, newNode, nextNode) { if (isNull(nextNode)) { appendChild(parentDOM, newNode) } else { parentDOM.insertBefore(newNode, nextNode) } } function removeChild(parentDOM, childNode) { parentDOM.removeChild(childNode) } function callAll(arrayFn) { for (var i = 0; i < arrayFn.length; i++) { arrayFn[i]() } } function findChildVNode(vNode, startEdge, flags) { var children = vNode.children; if (4 & flags) { return children.$LI } if (8192 & flags) { return 2 === vNode.childFlags ? children : children[startEdge ? 0 : children.length - 1] } return children } function findDOMFromVNode(vNode, startEdge) { var flags; while (vNode) { flags = vNode.flags; if (1521 & flags) { return vNode.dom } vNode = findChildVNode(vNode, startEdge, flags) } return null } function callAllAnimationHooks(animationQueue, callback) { var animationsLeft = animationQueue.length; var fn; while (void 0 !== (fn = animationQueue.pop())) { fn((function() { if (--animationsLeft <= 0 && isFunction(callback)) { callback() } })) } } function clearVNodeDOM(vNode, parentDOM, deferredRemoval) { do { var flags = vNode.flags; if (1521 & flags) { if (!deferredRemoval || vNode.dom.parentNode === parentDOM) { removeChild(parentDOM, vNode.dom) } return } var children = vNode.children; if (4 & flags) { vNode = children.$LI } if (8 & flags) { vNode = children } if (8192 & flags) { if (2 === vNode.childFlags) { vNode = children } else { for (var i = 0, len = children.length; i < len; ++i) { clearVNodeDOM(children[i], parentDOM, false) } return } } } while (vNode) } function removeVNodeDOM(vNode, parentDOM, animations) { if (animations.componentWillDisappear.length > 0) { callAllAnimationHooks(animations.componentWillDisappear, function(vNode, parentDOM) { return function() { clearVNodeDOM(vNode, parentDOM, true) } }(vNode, parentDOM)) } else { clearVNodeDOM(vNode, parentDOM, false) } } function addMoveAnimationHook(animations, parentVNode, refOrInstance, dom, parentDOM, nextNode, flags, props) { animations.componentWillMove.push({ dom: dom, fn: function() { if (4 & flags) { refOrInstance.componentWillMove(parentVNode, parentDOM, dom) } else if (8 & flags) { refOrInstance.onComponentWillMove(parentVNode, parentDOM, dom, props) } }, next: nextNode, parent: parentDOM }) } function moveVNodeDOM(parentVNode, vNode, parentDOM, nextNode, animations) { var refOrInstance; var instanceProps; var instanceFlags = vNode.flags; do { var flags = vNode.flags; if (1521 & flags) { if (!isNullOrUndef(refOrInstance) && (isFunction(refOrInstance.componentWillMove) || isFunction(refOrInstance.onComponentWillMove))) { addMoveAnimationHook(animations, parentVNode, refOrInstance, vNode.dom, parentDOM, nextNode, instanceFlags, instanceProps) } else { insertOrAppend(parentDOM, vNode.dom, nextNode) } return } var children = vNode.children; if (4 & flags) { refOrInstance = vNode.children; instanceProps = vNode.props; vNode = children.$LI } else if (8 & flags) { refOrInstance = vNode.ref; instanceProps = vNode.props; vNode = children } else if (8192 & flags) { if (2 === vNode.childFlags) { vNode = children } else { for (var i = 0, len = children.length; i < len; ++i) { moveVNodeDOM(parentVNode, children[i], parentDOM, nextNode, animations) } return } } } while (vNode) } function createDerivedState(instance, nextProps, state) { if (instance.constructor.getDerivedStateFromProps) { return combineFrom(state, instance.constructor.getDerivedStateFromProps(nextProps, state)) } return state } var renderCheck = { v: false }; var options = { componentComparator: null, createVNode: null, renderComplete: null }; function setTextContent(dom, children) { dom.textContent = children } function isLastValueSameLinkEvent(lastValue, nextValue) { return isLinkEventObject(lastValue) && lastValue.event === nextValue.event && lastValue.data === nextValue.data } function mergeUnsetProperties(to, from) { for (var propName in from) { if (o = to[propName], void 0 === o) { to[propName] = from[propName] } } var o; return to } function safeCall1(method, arg1) { return !!isFunction(method) && (method(arg1), true) } var keyPrefix = "$"; function V(childFlags, children, className, flags, key, props, ref, type) { this.childFlags = childFlags; this.children = children; this.className = className; this.dom = null; this.flags = flags; this.key = void 0 === key ? null : key; this.props = void 0 === props ? null : props; this.ref = void 0 === ref ? null : ref; this.type = type } function createVNode(flags, type, className, children, childFlags, props, key, ref) { var childFlag = void 0 === childFlags ? 1 : childFlags; var vNode = new V(childFlag, children, className, flags, key, props, ref, type); if (options.createVNode) { options.createVNode(vNode) } if (0 === childFlag) { normalizeChildren(vNode, vNode.children) } return vNode } function createComponentVNode(flags, type, props, key, ref) { flags = function(flags, type) { if (12 & flags) { return flags } if (type.prototype && type.prototype.render) { return 4 } if (type.render) { return 32776 } return 8 }(flags, type); var vNode = new V(1, null, null, flags, key, function(flags, type, props) { var defaultProps = (32768 & flags ? type.render : type).defaultProps; if (isNullOrUndef(defaultProps)) { return props } if (isNullOrUndef(props)) { return combineFrom(defaultProps, null) } return mergeUnsetProperties(props, defaultProps) }(flags, type, props), function(flags, type, ref) { if (4 & flags) { return ref } var defaultHooks = (32768 & flags ? type.render : type).defaultHooks; if (isNullOrUndef(defaultHooks)) { return ref } if (isNullOrUndef(ref)) { return defaultHooks } return mergeUnsetProperties(ref, defaultHooks) }(flags, type, ref), type); if (options.createVNode) { options.createVNode(vNode) } return vNode } function createTextVNode(text, key) { return new V(1, isNullOrUndef(text) || true === text || false === text ? "" : text, null, 16, key, null, null, null) } function createFragment(children, childFlags, key) { var fragment = createVNode(8192, 8192, null, children, childFlags, null, key, null); switch (fragment.childFlags) { case 1: fragment.children = createVoidVNode(); fragment.childFlags = 2; break; case 16: fragment.children = [createTextVNode(children)]; fragment.childFlags = 4 } return fragment } function normalizeProps(vNode) { var props = vNode.props; if (props) { var flags = vNode.flags; if (481 & flags) { if (void 0 !== props.children && isNullOrUndef(vNode.children)) { normalizeChildren(vNode, props.children) } if (void 0 !== props.className) { if (isNullOrUndef(vNode.className)) { vNode.className = props.className || null } props.className = void 0 } } if (void 0 !== props.key) { vNode.key = props.key; props.key = void 0 } if (void 0 !== props.ref) { if (8 & flags) { vNode.ref = combineFrom(vNode.ref, props.ref) } else { vNode.ref = props.ref } props.ref = void 0 } } return vNode } function directClone(vNodeToClone) { var flags = -16385 & vNodeToClone.flags; var props = vNodeToClone.props; if (14 & flags) { if (!isNull(props)) { var propsToClone = props; props = {}; for (var key in propsToClone) { props[key] = propsToClone[key] } } } if (0 === (8192 & flags)) { return new V(vNodeToClone.childFlags, vNodeToClone.children, vNodeToClone.className, flags, vNodeToClone.key, props, vNodeToClone.ref, vNodeToClone.type) } return function(vNodeToClone) { var oldChildren = vNodeToClone.children; var childFlags = vNodeToClone.childFlags; return createFragment(2 === childFlags ? directClone(oldChildren) : oldChildren.map(directClone), childFlags, vNodeToClone.key) }(vNodeToClone) } function createVoidVNode() { return createTextVNode("", null) } function createPortal(children, container) { var normalizedRoot = normalizeRoot(children); return createVNode(1024, 1024, null, normalizedRoot, 0, null, normalizedRoot.key, container) } function _normalizeVNodes(nodes, result, index, currentKey) { for (var len = nodes.length; index < len; index++) { var n = nodes[index]; if (!isInvalid(n)) { var newKey = currentKey + keyPrefix + index; if (isArray(n)) { _normalizeVNodes(n, result, 0, newKey) } else { if (isStringOrNumber(n)) { n = createTextVNode(n, newKey) } else { var oldKey = n.key; var isPrefixedKey = isString(oldKey) && oldKey[0] === keyPrefix; if (81920 & n.flags || isPrefixedKey) { n = directClone(n) } n.flags |= 65536; if (!isPrefixedKey) { if (isNull(oldKey)) { n.key = newKey } else { n.key = currentKey + oldKey } } else if (oldKey.substring(0, currentKey.length) !== currentKey) { n.key = currentKey + oldKey } } result.push(n) } } } } function getFlagsForElementVnode(type) { switch (type) { case "svg": return 32; case "input": return 64; case "select": return 256; case "textarea": return 128; case Fragment: return 8192; default: return 1 } } function normalizeChildren(vNode, children) { var newChildren; var newChildFlags = 1; if (isInvalid(children)) { newChildren = children } else if (isStringOrNumber(children)) { newChildFlags = 16; newChildren = children } else if (isArray(children)) { var len = children.length; for (var i = 0; i < len; ++i) { var n = children[i]; if (isInvalid(n) || isArray(n)) { newChildren = newChildren || children.slice(0, i); _normalizeVNodes(children, newChildren, i, ""); break } else if (isStringOrNumber(n)) { newChildren = newChildren || children.slice(0, i); newChildren.push(createTextVNode(n, keyPrefix + i)) } else { var key = n.key; var needsCloning = (81920 & n.flags) > 0; var isNullKey = isNull(key); var isPrefixed = isString(key) && key[0] === keyPrefix; if (needsCloning || isNullKey || isPrefixed) { newChildren = newChildren || children.slice(0, i); if (needsCloning || isPrefixed) { n = directClone(n) } if (isNullKey || isPrefixed) { n.key = keyPrefix + i } newChildren.push(n) } else if (newChildren) { newChildren.push(n) } n.flags |= 65536 } } newChildren = newChildren || children; if (0 === newChildren.length) { newChildFlags = 1 } else { newChildFlags = 8 } } else { newChildren = children; newChildren.flags |= 65536; if (81920 & children.flags) { newChildren = directClone(children) } newChildFlags = 2 } vNode.children = newChildren; vNode.childFlags = newChildFlags; return vNode } function normalizeRoot(input) { if (isInvalid(input) || isStringOrNumber(input)) { return createTextVNode(input, null) } if (isArray(input)) { return createFragment(input, 0, null) } return 16384 & input.flags ? directClone(input) : input } var xlinkNS = "http://www.w3.org/1999/xlink"; var xmlNS = "http://www.w3.org/XML/1998/namespace"; var namespaces = { "xlink:actuate": xlinkNS, "xlink:arcrole": xlinkNS, "xlink:href": xlinkNS, "xlink:role": xlinkNS, "xlink:show": xlinkNS, "xlink:title": xlinkNS, "xlink:type": xlinkNS, "xml:base": xmlNS, "xml:lang": xmlNS, "xml:space": xmlNS }; function getDelegatedEventObject(v) { return { onClick: v, onDblClick: v, onFocusIn: v, onFocusOut: v, onKeyDown: v, onKeyPress: v, onKeyUp: v, onMouseDown: v, onMouseMove: v, onMouseUp: v, onTouchEnd: v, onTouchMove: v, onTouchStart: v } } var attachedEventCounts = getDelegatedEventObject(0); var attachedEvents = getDelegatedEventObject(null); var syntheticEvents = getDelegatedEventObject(true); function updateOrAddSyntheticEvent(name, dom) { var eventsObject = dom.$EV; if (!eventsObject) { eventsObject = dom.$EV = getDelegatedEventObject(null) } if (!eventsObject[name]) { if (1 === ++attachedEventCounts[name]) { attachedEvents[name] = function(name) { var attachedEvent = "onClick" === name || "onDblClick" === name ? function(name) { return function(event) { if (0 !== event.button) { event.stopPropagation(); return } dispatchEvents(event, true, name, extendEventProperties(event)) } }(name) : function(name) { return function(event) { dispatchEvents(event, false, name, extendEventProperties(event)) } }(name); document.addEventListener(normalizeEventName(name), attachedEvent); return attachedEvent }(name) } } return eventsObject } function unmountSyntheticEvent(name, dom) { var eventsObject = dom.$EV; if (eventsObject && eventsObject[name]) { if (0 === --attachedEventCounts[name]) { document.removeEventListener(normalizeEventName(name), attachedEvents[name]); attachedEvents[name] = null } eventsObject[name] = null } } function dispatchEvents(event, isClick, name, eventData) { var dom = function(event) { return isFunction(event.composedPath) ? event.composedPath()[0] : event.target }(event); do { if (isClick && dom.disabled) { return } var eventsObject = dom.$EV; if (eventsObject) { var currentEvent = eventsObject[name]; if (currentEvent) { eventData.dom = dom; currentEvent.event ? currentEvent.event(currentEvent.data, event) : currentEvent(event); if (event.cancelBubble) { return } } } dom = dom.parentNode } while (!isNull(dom)) } function stopPropagation() { this.cancelBubble = true; if (!this.immediatePropagationStopped) { this.stopImmediatePropagation() } } function isDefaultPrevented() { return this.defaultPrevented } function isPropagationStopped() { return this.cancelBubble } function extendEventProperties(event) { var eventData = { dom: document }; event.isDefaultPrevented = isDefaultPrevented; event.isPropagationStopped = isPropagationStopped; event.stopPropagation = stopPropagation; Object.defineProperty(event, "currentTarget", { configurable: true, get: function() { return eventData.dom } }); return eventData } function triggerEventListener(props, methodName, e) { if (props[methodName]) { var listener = props[methodName]; if (listener.event) { listener.event(listener.data, e) } else { listener(e) } } else { var nativeListenerName = methodName.toLowerCase(); if (props[nativeListenerName]) { props[nativeListenerName](e) } } } function createWrappedFunction(methodName, applyValue) { var fnMethod = function(e) { var vNode = this.$V; if (!vNode) { return } var props = vNode.props || EMPTY_OBJ; var dom = vNode.dom; if (isString(methodName)) { triggerEventListener(props, methodName, e) } else { for (var i = 0; i < methodName.length; ++i) { triggerEventListener(props, methodName[i], e) } } if (isFunction(applyValue)) { var newVNode = this.$V; var newProps = newVNode.props || EMPTY_OBJ; applyValue(newProps, dom, false, newVNode) } }; Object.defineProperty(fnMethod, "wrapped", { configurable: false, enumerable: false, value: true, writable: false }); return fnMethod } function attachEvent(dom, eventName, handler) { var previousKey = "$" + eventName; var previousArgs = dom[previousKey]; if (previousArgs) { if (previousArgs[1].wrapped) { return } dom.removeEventListener(previousArgs[0], previousArgs[1]); dom[previousKey] = null } if (isFunction(handler)) { dom.addEventListener(eventName, handler); dom[previousKey] = [eventName, handler] } } function isCheckedType(type) { return "checkbox" === type || "radio" === type } var onTextInputChange = createWrappedFunction("onInput", applyValueInput); var wrappedOnChange$1 = createWrappedFunction(["onClick", "onChange"], applyValueInput); function emptywrapper(event) { event.stopPropagation() } emptywrapper.wrapped = true; function applyValueInput(nextPropsOrEmpty, dom) { var type = nextPropsOrEmpty.type; var value = nextPropsOrEmpty.value; var checked = nextPropsOrEmpty.checked; var multiple = nextPropsOrEmpty.multiple; var defaultValue = nextPropsOrEmpty.defaultValue; var hasValue = !isNullOrUndef(value); if (type && type !== dom.type) { dom.setAttribute("type", type) } if (!isNullOrUndef(multiple) && multiple !== dom.multiple) { dom.multiple = multiple } if (!isNullOrUndef(defaultValue) && !hasValue) { dom.defaultValue = defaultValue + "" } if (isCheckedType(type)) { if (hasValue) { dom.value = value } if (!isNullOrUndef(checked)) { dom.checked = checked } } else if (hasValue && dom.value !== value) { dom.defaultValue = value; dom.value = value } else if (!isNullOrUndef(checked)) { dom.checked = checked } } function updateChildOptions(vNode, value) { if ("option" === vNode.type) { ! function(vNode, value) { var props = vNode.props || EMPTY_OBJ; var dom = vNode.dom; dom.value = props.value; if (props.value === value || isArray(value) && -1 !== value.indexOf(props.value)) { dom.selected = true } else if (!isNullOrUndef(value) || !isNullOrUndef(props.selected)) { dom.selected = props.selected || false } }(vNode, value) } else { var children = vNode.children; var flags = vNode.flags; if (4 & flags) { updateChildOptions(children.$LI, value) } else if (8 & flags) { updateChildOptions(children, value) } else if (2 === vNode.childFlags) { updateChildOptions(children, value) } else if (12 & vNode.childFlags) { for (var i = 0, len = children.length; i < len; ++i) { updateChildOptions(children[i], value) } } } } var onSelectChange = createWrappedFunction("onChange", applyValueSelect); function applyValueSelect(nextPropsOrEmpty, dom, mounting, vNode) { var multiplePropInBoolean = Boolean(nextPropsOrEmpty.multiple); if (!isNullOrUndef(nextPropsOrEmpty.multiple) && multiplePropInBoolean !== dom.multiple) { dom.multiple = multiplePropInBoolean } var index = nextPropsOrEmpty.selectedIndex; if (-1 === index) { dom.selectedIndex = -1 } var childFlags = vNode.childFlags; if (1 !== childFlags) { var value = nextPropsOrEmpty.value; if ((o = index, "number" === typeof o) && index > -1 && dom.options[index]) { value = dom.options[index].value } if (mounting && isNullOrUndef(value)) { value = nextPropsOrEmpty.defaultValue } updateChildOptions(vNode, value) } var o } var onTextareaInputChange = createWrappedFunction("onInput", applyValueTextArea); var wrappedOnChange = createWrappedFunction("onChange"); function applyValueTextArea(nextPropsOrEmpty, dom, mounting) { var value = nextPropsOrEmpty.value; var domValue = dom.value; if (isNullOrUndef(value)) { if (mounting) { var defaultValue = nextPropsOrEmpty.defaultValue; if (!isNullOrUndef(defaultValue) && defaultValue !== domValue) { dom.defaultValue = defaultValue; dom.value = defaultValue } } } else if (domValue !== value) { dom.defaultValue = value; dom.value = value } } function processElement(flags, vNode, dom, nextPropsOrEmpty, mounting, isControlled) { if (64 & flags) { applyValueInput(nextPropsOrEmpty, dom) } else if (256 & flags) { applyValueSelect(nextPropsOrEmpty, dom, mounting, vNode) } else if (128 & flags) { applyValueTextArea(nextPropsOrEmpty, dom, mounting) } if (isControlled) { dom.$V = vNode } } function addFormElementEventHandlers(flags, dom, nextPropsOrEmpty) { if (64 & flags) { ! function(dom, nextPropsOrEmpty) { if (isCheckedType(nextPropsOrEmpty.type)) { attachEvent(dom, "change", wrappedOnChange$1); attachEvent(dom, "click", emptywrapper) } else { attachEvent(dom, "input", onTextInputChange) } }(dom, nextPropsOrEmpty) } else if (256 & flags) { ! function(dom) { attachEvent(dom, "change", onSelectChange) }(dom) } else if (128 & flags) { ! function(dom, nextPropsOrEmpty) { attachEvent(dom, "input", onTextareaInputChange); if (nextPropsOrEmpty.onChange) { attachEvent(dom, "change", wrappedOnChange) } }(dom, nextPropsOrEmpty) } } function isControlledFormElement(nextPropsOrEmpty) { return nextPropsOrEmpty.type && isCheckedType(nextPropsOrEmpty.type) ? !isNullOrUndef(nextPropsOrEmpty.checked) : !isNullOrUndef(nextPropsOrEmpty.value) } function createRef() { return { current: null } } function forwardRef(render) { var ref = { render: render }; return ref } function unmountRef(ref) { if (ref) { if (!safeCall1(ref, null) && ref.current) { ref.current = null } } } function mountRef(ref, value, lifecycle) { if (ref && (isFunction(ref) || void 0 !== ref.current)) { lifecycle.push((function() { if (!safeCall1(ref, value) && void 0 !== ref.current) { ref.current = value } })) } } function remove(vNode, parentDOM, animations) { unmount(vNode, animations); removeVNodeDOM(vNode, parentDOM, animations) } function unmount(vNode, animations) { var flags = vNode.flags; var children = vNode.children; var ref; if (481 & flags) { ref = vNode.ref; var props = vNode.props; unmountRef(ref); var childFlags = vNode.childFlags; if (!isNull(props)) { var keys = Object.keys(props); for (var i = 0, len = keys.length; i < len; i++) { var key = keys[i]; if (syntheticEvents[key]) { unmountSyntheticEvent(key, vNode.dom) } } } if (12 & childFlags) { unmountAllChildren(children, animations) } else if (2 === childFlags) { unmount(children, animations) } } else if (children) { if (4 & flags) { if (isFunction(children.componentWillUnmount)) { children.componentWillUnmount() } var childAnimations = animations; if (isFunction(children.componentWillDisappear)) { childAnimations = new AnimationQueues; addDisappearAnimationHook(animations, children, children.$LI.dom, flags, void 0) } unmountRef(vNode.ref); children.$UN = true; unmount(children.$LI, childAnimations) } else if (8 & flags) { var _childAnimations = animations; ref = vNode.ref; if (!isNullOrUndef(ref)) { var domEl = null; if (isFunction(ref.onComponentWillUnmount)) { domEl = findDOMFromVNode(vNode, true); ref.onComponentWillUnmount(domEl, vNode.props || EMPTY_OBJ) } if (isFunction(ref.onComponentWillDisappear)) { _childAnimations = new AnimationQueues; domEl = domEl || findDOMFromVNode(vNode, true); addDisappearAnimationHook(animations, ref, domEl, flags, vNode.props) } } unmount(children, _childAnimations) } else if (1024 & flags) { remove(children, vNode.ref, animations) } else if (8192 & flags) { if (12 & vNode.childFlags) { unmountAllChildren(children, animations) } } } } function unmountAllChildren(children, animations) { for (var i = 0, len = children.length; i < len; ++i) { unmount(children[i], animations) } } function clearDOM(parentDOM, children, animations) { if (animations.componentWillDisappear.length > 0) { callAllAnimationHooks(animations.componentWillDisappear, function(children, parentDOM) { return function() { if (parentDOM) { for (var i = 0; i < children.length; i++) { var vNode = children[i]; clearVNodeDOM(vNode, parentDOM, false) } } } }(children, parentDOM)) } else { parentDOM.textContent = "" } } function removeAllChildren(dom, vNode, children, animations) { unmountAllChildren(children, animations); if (8192 & vNode.flags) { removeVNodeDOM(vNode, dom, animations) } else { clearDOM(dom, children, animations) } } function addDisappearAnimationHook(animations, instanceOrRef, dom, flags, props) { animations.componentWillDisappear.push((function(callback) { if (4 & flags) { instanceOrRef.componentWillDisappear(dom, callback) } else if (8 & flags) { instanceOrRef.onComponentWillDisappear(dom, props, callback) } })) } function patchDangerInnerHTML(lastValue, nextValue, lastVNode, dom, animations) { var lastHtml = lastValue && lastValue.__html || ""; var nextHtml = nextValue && nextValue.__html || ""; if (lastHtml !== nextHtml) { if (!isNullOrUndef(nextHtml) && ! function(dom, innerHTML) { var tempdom = document.createElement("i"); tempdom.innerHTML = innerHTML; return tempdom.innerHTML === dom.innerHTML }(dom, nextHtml)) { if (!isNull(lastVNode)) { if (12 & lastVNode.childFlags) { unmountAllChildren(lastVNode.children, animations) } else if (2 === lastVNode.childFlags) { unmount(lastVNode.children, animations) } lastVNode.children = null; lastVNode.childFlags = 1 } dom.innerHTML = nextHtml } } } function patchProp(prop, lastValue, nextValue, dom, isSVG, hasControlledValue, lastVNode, animations) { switch (prop) { case "children": case "childrenType": case "className": case "defaultValue": case "key": case "multiple": case "ref": case "selectedIndex": break; case "autoFocus": dom.autofocus = !!nextValue; break; case "allowfullscreen": case "autoplay": case "capture": case "checked": case "controls": case "default": case "disabled": case "hidden": case "indeterminate": case "loop": case "muted": case "novalidate": case "open": case "readOnly": case "required": case "reversed": case "scoped": case "seamless": case "selected": dom[prop] = !!nextValue; break; case "defaultChecked": case "value": case "volume": if (hasControlledValue && "value" === prop) { break } var value = isNullOrUndef(nextValue) ? "" : nextValue; if (dom[prop] !== value) { dom[prop] = value } break; case "style": ! function(lastAttrValue, nextAttrValue, dom) { if (isNullOrUndef(nextAttrValue)) { dom.removeAttribute("style"); return } var domStyle = dom.style; var style; var value; if (isString(nextAttrValue)) { domStyle.cssText = nextAttrValue; return } if (!isNullOrUndef(lastAttrValue) && !isString(lastAttrValue)) { for (style in nextAttrValue) { value = nextAttrValue[style]; if (value !== lastAttrValue[style]) { domStyle.setProperty(style, value) } } for (style in lastAttrValue) { if (isNullOrUndef(nextAttrValue[style])) { domStyle.removeProperty(style) } } } else { for (style in nextAttrValue) { value = nextAttrValue[style]; domStyle.setProperty(style, value) } } }(lastValue, nextValue, dom); break; case "dangerouslySetInnerHTML": patchDangerInnerHTML(lastValue, nextValue, lastVNode, dom, animations); break; default: if (syntheticEvents[prop]) { ! function(name, lastEvent, nextEvent, dom) { if (isFunction(nextEvent)) { updateOrAddSyntheticEvent(name, dom)[name] = nextEvent } else if (isLinkEventObject(nextEvent)) { if (isLastValueSameLinkEvent(lastEvent, nextEvent)) { return } updateOrAddSyntheticEvent(name, dom)[name] = nextEvent } else { unmountSyntheticEvent(name, dom) } }(prop, lastValue, nextValue, dom) } else if (111 === prop.charCodeAt(0) && 110 === prop.charCodeAt(1)) { ! function(name, lastValue, nextValue, dom) { if (isLinkEventObject(nextValue)) { if (isLastValueSameLinkEvent(lastValue, nextValue)) { return } nextValue = function(nextValue) { var ev = nextValue.event; return function(e) { ev(nextValue.data, e) } }(nextValue) } attachEvent(dom, normalizeEventName(name), nextValue) }(prop, lastValue, nextValue, dom) } else if (isNullOrUndef(nextValue)) { dom.removeAttribute(prop) } else if (isSVG && namespaces[prop]) { dom.setAttributeNS(namespaces[prop], prop, nextValue) } else { dom.setAttribute(prop, nextValue) } } } function mountProps(vNode, flags, props, dom, isSVG, animations) { var hasControlledValue = false; var isFormElement = (448 & flags) > 0; if (isFormElement) { hasControlledValue = isControlledFormElement(props); if (hasControlledValue) { addFormElementEventHandlers(flags, dom, props) } } for (var prop in props) { patchProp(prop, null, props[prop], dom, isSVG, hasControlledValue, null, animations) } if (isFormElement) { processElement(flags, vNode, dom, props, true, hasControlledValue) } } function renderNewInput(instance, props, context) { var nextInput = normalizeRoot(instance.render(props, instance.state, context)); var childContext = context; if (isFunction(instance.getChildContext)) { childContext = combineFrom(context, instance.getChildContext()) } instance.$CX = childContext; return nextInput } function createClassComponentInstance(vNode, Component, props, context, isSVG, lifecycle) { var instance = new Component(props, context); var usesNewAPI = instance.$N = Boolean(Component.getDerivedStateFromProps || instance.getSnapshotBeforeUpdate); instance.$SVG = isSVG; instance.$L = lifecycle; vNode.children = instance; instance.$BS = false; instance.context = context; if (instance.props === EMPTY_OBJ) { instance.props = props } if (!usesNewAPI) { if (isFunction(instance.componentWillMount)) { instance.$BR = true; instance.componentWillMount(); var pending = instance.$PS; if (!isNull(pending)) { var state = instance.state; if (isNull(state)) { instance.state = pending } else { for (var key in pending) { state[key] = pending[key] } } instance.$PS = null } instance.$BR = false } } else { instance.state = createDerivedState(instance, props, instance.state) } instance.$LI = renderNewInput(instance, props, context); return instance } function renderFunctionalComponent(vNode, context) { var props = vNode.props || EMPTY_OBJ; return 32768 & vNode.flags ? vNode.type.render(props, vNode.ref, context) : vNode.type(props, context) } function mount(vNode, parentDOM, context, isSVG, nextNode, lifecycle, animations) { var flags = vNode.flags |= 16384; if (481 & flags) { mountElement(vNode, parentDOM, context, isSVG, nextNode, lifecycle, animations) } else if (4 & flags) { ! function(vNode, parentDOM, context, isSVG, nextNode, lifecycle, animations) { var instance = createClassComponentInstance(vNode, vNode.type, vNode.props || EMPTY_OBJ, context, isSVG, lifecycle); var childAnimations = animations; if (isFunction(instance.componentDidAppear)) { childAnimations = new AnimationQueues } mount(instance.$LI, parentDOM, instance.$CX, isSVG, nextNode, lifecycle, childAnimations); mountClassComponentCallbacks(vNode.ref, instance, lifecycle, animations) }(vNode, parentDOM, context, isSVG, nextNode, lifecycle, animations) } else if (8 & flags) { ! function(vNode, parentDOM, context, isSVG, nextNode, lifecycle, animations) { var ref = vNode.ref; var childAnimations = animations; if (!isNullOrUndef(ref) && isFunction(ref.onComponentDidAppear)) { childAnimations = new AnimationQueues } mount(vNode.children = normalizeRoot(renderFunctionalComponent(vNode, context)), parentDOM, context, isSVG, nextNode, lifecycle, childAnimations); mountFunctionalComponentCallbacks(vNode, lifecycle, animations) }(vNode, parentDOM, context, isSVG, nextNode, lifecycle, animations) } else if (16 & flags) { mountText(vNode, parentDOM, nextNode) } else if (8192 & flags) { ! function(vNode, context, parentDOM, isSVG, nextNode, lifecycle, animations) { var children = vNode.children; var childFlags = vNode.childFlags; if (12 & childFlags && 0 === children.length) { childFlags = vNode.childFlags = 2; children = vNode.children = createVoidVNode() } if (2 === childFlags) { mount(children, parentDOM, context, isSVG, nextNode, lifecycle, animations) } else { mountArrayChildren(children, parentDOM, context, isSVG, nextNode, lifecycle, animations) } }(vNode, context, parentDOM, isSVG, nextNode, lifecycle, animations) } else if (1024 & flags) { ! function(vNode, context, parentDOM, nextNode, lifecycle, animations) { mount(vNode.children, vNode.ref, context, false, null, lifecycle, animations); var placeHolderVNode = createVoidVNode(); mountText(placeHolderVNode, parentDOM, nextNode); vNode.dom = placeHolderVNode.dom }(vNode, context, parentDOM, nextNode, lifecycle, animations) } } function mountText(vNode, parentDOM, nextNode) { var dom = vNode.dom = document.createTextNode(vNode.children); if (!isNull(parentDOM)) { insertOrAppend(parentDOM, dom, nextNode) } } function mountElement(vNode, parentDOM, context, isSVG, nextNode, lifecycle, animations) { var flags = vNode.flags; var props = vNode.props; var className = vNode.className; var childFlags = vNode.childFlags; var dom = vNode.dom = function(tag, isSVG) { if (isSVG) { return document.createElementNS("http://www.w3.org/2000/svg", tag) } return document.createElement(tag) }(vNode.type, isSVG = isSVG || (32 & flags) > 0); var children = vNode.children; if (!isNullOrUndef(className) && "" !== className) { if (isSVG) { dom.setAttribute("class", className) } else { dom.className = className } } if (16 === childFlags) { setTextContent(dom, children) } else if (1 !== childFlags) { var childrenIsSVG = isSVG && "foreignObject" !== vNode.type; if (2 === childFlags) { if (16384 & children.flags) { vNode.children = children = directClone(children) } mount(children, dom, context, childrenIsSVG, null, lifecycle, animations) } else if (8 === childFlags || 4 === childFlags) { mountArrayChildren(children, dom, context, childrenIsSVG, null, lifecycle, animations) } } if (!isNull(parentDOM)) { insertOrAppend(parentDOM, dom, nextNode) } if (!isNull(props)) { mountProps(vNode, flags, props, dom, isSVG, animations) } mountRef(vNode.ref, dom, lifecycle) } function mountArrayChildren(children, dom, context, isSVG, nextNode, lifecycle, animations) { for (var i = 0; i < children.length; ++i) { var child = children[i]; if (16384 & child.flags) { children[i] = child = directClone(child) } mount(child, dom, context, isSVG, nextNode, lifecycle, animations) } } function addAppearAnimationHook(animations, instanceOrRef, dom, flags, props) { animations.componentDidAppear.push((function() { if (4 & flags) { instanceOrRef.componentDidAppear(dom) } else if (8 & flags) { instanceOrRef.onComponentDidAppear(dom, props) } })) } function mountClassComponentCallbacks(ref, instance, lifecycle, animations) { mountRef(ref, instance, lifecycle); if (isFunction(instance.componentDidMount)) { lifecycle.push(function(instance) { return function() { instance.componentDidMount() } }(instance)) } if (isFunction(instance.componentDidAppear)) { addAppearAnimationHook(animations, instance, instance.$LI.dom, 4, void 0) } } function mountFunctionalComponentCallbacks(vNode, lifecycle, animations) { var ref = vNode.ref; if (!isNullOrUndef(ref)) { safeCall1(ref.onComponentWillMount, vNode.props || EMPTY_OBJ); if (isFunction(ref.onComponentDidMount)) { lifecycle.push(function(ref, vNode) { return function() { ref.onComponentDidMount(findDOMFromVNode(vNode, true), vNode.props || EMPTY_OBJ) } }(ref, vNode)) } if (isFunction(ref.onComponentDidAppear)) { addAppearAnimationHook(animations, ref, findDOMFromVNode(vNode, true), 8, vNode.props) } } } function patch(lastVNode, nextVNode, parentDOM, context, isSVG, nextNode, lifecycle, animations) { var nextFlags = nextVNode.flags |= 16384; if (lastVNode.flags !== nextFlags || lastVNode.type !== nextVNode.type || lastVNode.key !== nextVNode.key || 2048 & nextFlags) { if (16384 & lastVNode.flags) { ! function(lastVNode, nextVNode, parentDOM, context, isSVG, lifecycle, animations) { unmount(lastVNode, animations); if (0 !== (nextVNode.flags & lastVNode.flags & 1521)) { mount(nextVNode, null, context, isSVG, null, lifecycle, animations); ! function(parentDOM, newDom, lastDom) { parentDOM.replaceChild(newDom, lastDom) }(parentDOM, nextVNode.dom, lastVNode.dom) } else { mount(nextVNode, parentDOM, context, isSVG, findDOMFromVNode(lastVNode, true), lifecycle, animations); removeVNodeDOM(lastVNode, parentDOM, animations) } }(lastVNode, nextVNode, parentDOM, context, isSVG, lifecycle, animations) } else { mount(nextVNode, parentDOM, context, isSVG, nextNode, lifecycle, animations) } } else if (481 & nextFlags) { ! function(lastVNode, nextVNode, context, isSVG, nextFlags, lifecycle, animations) { var dom = nextVNode.dom = lastVNode.dom; var lastProps = lastVNode.props; var nextProps = nextVNode.props; var isFormElement = false; var hasControlledValue = false; var nextPropsOrEmpty; isSVG = isSVG || (32 & nextFlags) > 0; if (lastProps !== nextProps) { var lastPropsOrEmpty = lastProps || EMPTY_OBJ; nextPropsOrEmpty = nextProps || EMPTY_OBJ; if (nextPropsOrEmpty !== EMPTY_OBJ) { isFormElement = (448 & nextFlags) > 0; if (isFormElement) { hasControlledValue = isControlledFormElement(nextPropsOrEmpty) } for (var prop in nextPropsOrEmpty) { var lastValue = lastPropsOrEmpty[prop]; var nextValue = nextPropsOrEmpty[prop]; if (lastValue !== nextValue) { patchProp(prop, lastValue, nextValue, dom, isSVG, hasControlledValue, lastVNode, animations) } } } if (lastPropsOrEmpty !== EMPTY_OBJ) { for (var _prop in lastPropsOrEmpty) { if (isNullOrUndef(nextPropsOrEmpty[_prop]) && !isNullOrUndef(lastPropsOrEmpty[_prop])) { patchProp(_prop, lastPropsOrEmpty[_prop], null, dom, isSVG, hasControlledValue, lastVNode, animations) } } } } var nextChildren = nextVNode.children; var nextClassName = nextVNode.className; if (lastVNode.className !== nextClassName) { if (isNullOrUndef(nextClassName)) { dom.removeAttribute("class") } else if (isSVG) { dom.setAttribute("class", nextClassName) } else { dom.className = nextClassName } } if (4096 & nextFlags) { ! function(dom, nextChildren) { if (dom.textContent !== nextChildren) { dom.textContent = nextChildren } }(dom, nextChildren) } else { patchChildren(lastVNode.childFlags, nextVNode.childFlags, lastVNode.children, nextChildren, dom, context, isSVG && "foreignObject" !== nextVNode.type, null, lastVNode, lifecycle, animations) } if (isFormElement) { processElement(nextFlags, nextVNode, dom, nextPropsOrEmpty, false, hasControlledValue) } var nextRef = nextVNode.ref; var lastRef = lastVNode.ref; if (lastRef !== nextRef) { unmountRef(lastRef); mountRef(nextRef, dom, lifecycle) } }(lastVNode, nextVNode, context, isSVG, nextFlags, lifecycle, animations) } else if (4 & nextFlags) { ! function(lastVNode, nextVNode, parentDOM, context, isSVG, nextNode, lifecycle, animations) { var instance = nextVNode.children = lastVNode.children; if (isNull(instance)) { return } instance.$L = lifecycle; var nextProps = nextVNode.props || EMPTY_OBJ; var nextRef = nextVNode.ref; var lastRef = lastVNode.ref; var nextState = instance.state; if (!instance.$N) { if (isFunction(instance.componentWillReceiveProps)) { instance.$BR = true; instance.componentWillReceiveProps(nextProps, context); if (instance.$UN) { return } instance.$BR = false } if (!isNull(instance.$PS)) { nextState = combineFrom(nextState, instance.$PS); instance.$PS = null } } updateClassComponent(instance, nextState, nextProps, parentDOM, context, isSVG, false, nextNode, lifecycle, animations); if (lastRef !== nextRef) { unmountRef(lastRef); mountRef(nextRef, instance, lifecycle) } }(lastVNode, nextVNode, parentDOM, context, isSVG, nextNode, lifecycle, animations) } else if (8 & nextFlags) { ! function(lastVNode, nextVNode, parentDOM, context, isSVG, nextNode, lifecycle, animations) { var shouldUpdate = true; var nextProps = nextVNode.props || EMPTY_OBJ; var nextRef = nextVNode.ref; var lastProps = lastVNode.props; var nextHooksDefined = !isNullOrUndef(nextRef); var lastInput = lastVNode.children; if (nextHooksDefined && isFunction(nextRef.onComponentShouldUpdate)) { shouldUpdate = nextRef.onComponentShouldUpdate(lastProps, nextProps) } if (false !== shouldUpdate) { if (nextHooksDefined && isFunction(nextRef.onComponentWillUpdate)) { nextRef.onComponentWillUpdate(lastProps, nextProps) } var nextInput = normalizeRoot(renderFunctionalComponent(nextVNode, context)); patch(lastInput, nextInput, parentDOM, context, isSVG, nextNode, lifecycle, animations); nextVNode.children = nextInput; if (nextHooksDefined && isFunction(nextRef.onComponentDidUpdate)) { nextRef.onComponentDidUpdate(lastProps, nextProps) } } else { nextVNode.children = lastInput } }(lastVNode, nextVNode, parentDOM, context, isSVG, nextNode, lifecycle, animations) } else if (16 & nextFlags) { ! function(lastVNode, nextVNode) { var nextText = nextVNode.children; var dom = nextVNode.dom = lastVNode.dom; if (nextText !== lastVNode.children) { dom.nodeValue = nextText } }(lastVNode, nextVNode) } else if (8192 & nextFlags) { ! function(lastVNode, nextVNode, parentDOM, context, isSVG, lifecycle, animations) { var lastChildren = lastVNode.children; var nextChildren = nextVNode.children; var lastChildFlags = lastVNode.childFlags; var nextChildFlags = nextVNode.childFlags; var nextNode = null; if (12 & nextChildFlags && 0 === nextChildren.length) { nextChildFlags = nextVNode.childFlags = 2; nextChildren = nextVNode.children = createVoidVNode() } var nextIsSingle = 0 !== (2 & nextChildFlags); if (12 & lastChildFlags) { var lastLen = lastChildren.length; if (8 & lastChildFlags && 8 & nextChildFlags || nextIsSingle || !nextIsSingle && nextChildren.length > lastLen) { nextNode = findDOMFromVNode(lastChildren[lastLen - 1], false).nextSibling } } patchChildren(lastChildFlags, nextChildFlags, lastChildren, nextChildren, parentDOM, context, isSVG, nextNode, lastVNode, lifecycle, animations) }(lastVNode, nextVNode, parentDOM, context, isSVG, lifecycle, animations) } else { ! function(lastVNode, nextVNode, context, lifecycle, animations) { var lastContainer = lastVNode.ref; var nextContainer = nextVNode.ref; var nextChildren = nextVNode.children; patchChildren(lastVNode.childFlags, nextVNode.childFlags, lastVNode.children, nextChildren, lastContainer, context, false, null, lastVNode, lifecycle, animations); nextVNode.dom = lastVNode.dom; if (lastContainer !== nextContainer && !isInvalid(nextChildren)) { var node = nextChildren.dom; removeChild(lastContainer, node); appendChild(nextContainer, node) } }(lastVNode, nextVNode, context, lifecycle, animations) } } function patchChildren(lastChildFlags, nextChildFlags, lastChildren, nextChildren, parentDOM, context, isSVG, nextNode, parentVNode, lifecycle, animations) { switch (lastChildFlags) { case 2: switch (nextChildFlags) { case 2: patch(lastChildren, nextChildren, parentDOM, context, isSVG, nextNode, lifecycle, animations); break; case 1: remove(lastChildren, parentDOM, animations); break; case 16: unmount(lastChildren, animations); setTextContent(parentDOM, nextChildren); break; default: ! function(lastChildren, nextChildren, parentDOM, context, isSVG, lifecycle, animations) { unmount(lastChildren, animations); mountArrayChildren(nextChildren, parentDOM, context, isSVG, findDOMFromVNode(lastChildren, true), lifecycle, animations); removeVNodeDOM(lastChildren, parentDOM, animations) }(lastChildren, nextChildren, parentDOM, context, isSVG, lifecycle, animations) } break; case 1: switch (nextChildFlags) { case 2: mount(nextChildren, parentDOM, context, isSVG, nextNode, lifecycle, animations); break; case 1: break; case 16: setTextContent(parentDOM, nextChildren); break; default: mountArrayChildren(nextChildren, parentDOM, context, isSVG, nextNode, lifecycle, animations) } break; case 16: switch (nextChildFlags) { case 16: ! function(lastChildren, nextChildren, parentDOM) { if (lastChildren !== nextChildren) { if ("" !== lastChildren) { parentDOM.firstChild.nodeValue = nextChildren } else { setTextContent(parentDOM, nextChildren) } } }(lastChildren, nextChildren, parentDOM); break; case 2: clearDOM(parentDOM, lastChildren, animations); mount(nextChildren, parentDOM, context, isSVG, nextNode, lifecycle, animations); break; case 1: clearDOM(parentDOM, lastChildren, animations); break; default: clearDOM(parentDOM, lastChildren, animations); mountArrayChildren(nextChildren, parentDOM, context, isSVG, nextNode, lifecycle, animations) } break; default: switch (nextChildFlags) { case 16: unmountAllChildren(lastChildren, animations); setTextContent(parentDOM, nextChildren); break; case 2: removeAllChildren(parentDOM, parentVNode, lastChildren, animations); mount(nextChildren, parentDOM, context, isSVG, nextNode, lifecycle, animations); break; case 1: removeAllChildren(parentDOM, parentVNode, lastChildren, animations); break; default: var lastLength = 0 | lastChildren.length; var nextLength = 0 | nextChildren.length; if (0 === lastLength) { if (nextLength > 0) { mountArrayChildren(nextChildren, parentDOM, context, isSVG, nextNode, lifecycle, animations) } } else if (0 === nextLength) { removeAllChildren(parentDOM, parentVNode, lastChildren, animations) } else if (8 === nextChildFlags && 8 === lastChildFlags) { ! function(a, b, dom, context, isSVG, aLength, bLength, outerEdge, parentVNode, lifecycle, animations) { var aEnd = aLength - 1; var bEnd = bLength - 1; var j = 0; var aNode = a[j]; var bNode = b[j]; var nextPos; var nextNode; outer: { while (aNode.key === bNode.key) { if (16384 & bNode.flags) { b[j] = bNode = directClone(bNode) } patch(aNode, bNode, dom, context, isSVG, outerEdge, lifecycle, animations); a[j] = bNode; ++j; if (j > aEnd || j > bEnd) { break outer } aNode = a[j]; bNode = b[j] } aNode = a[aEnd];bNode = b[bEnd]; while (aNode.key === bNode.key) { if (16384 & bNode.flags) { b[bEnd] = bNode = directClone(bNode) } patch(aNode, bNode, dom, context, isSVG, outerEdge, lifecycle, animations); a[aEnd] = bNode; aEnd--; bEnd--; if (j > aEnd || j > bEnd) { break outer } aNode = a[aEnd]; bNode = b[bEnd] } } if (j > aEnd) { if (j <= bEnd) { nextPos = bEnd + 1; nextNode = nextPos < bLength ? findDOMFromVNode(b[nextPos], true) : outerEdge; while (j <= bEnd) { bNode = b[j]; if (16384 & bNode.flags) { b[j] = bNode = directClone(bNode) }++j; mount(bNode, dom, context, isSVG, nextNode, lifecycle, animations) } } } else if (j > bEnd) { while (j <= aEnd) { remove(a[j++], dom, animations) } } else { ! function(a, b, context, aLength, bLength, aEnd, bEnd, j, dom, isSVG, outerEdge, parentVNode, lifecycle, animations) { var aNode; var bNode; var nextPos = 0; var i = 0; var aStart = j; var bStart = j; var aLeft = aEnd - j + 1; var bLeft = bEnd - j + 1; var sources = new Int32Array(bLeft + 1); var canRemoveWholeContent = aLeft === aLength; var moved = false; var pos = 0; var patched = 0; if (bLength < 4 || (aLeft | bLeft) < 32) { for (i = aStart; i <= aEnd; ++i) { aNode = a[i]; if (patched < bLeft) { for (j = bStart; j <= bEnd; j++) { bNode = b[j]; if (aNode.key === bNode.key) { sources[j - bStart] = i + 1; if (canRemoveWholeContent) { canRemoveWholeContent = false; while (aStart < i) { remove(a[aStart++], dom, animations) } } if (pos > j) { moved = true } else { pos = j } if (16384 & bNode.flags) { b[j] = bNode = directClone(bNode) } patch(aNode, bNode, dom, context, isSVG, outerEdge, lifecycle, animations); ++patched; break } } if (!canRemoveWholeContent && j > bEnd) { remove(aNode, dom, animations) } } else if (!canRemoveWholeContent) { remove(aNode, dom, animations) } } } else { var keyIndex = {}; for (i = bStart; i <= bEnd; ++i) { keyIndex[b[i].key] = i } for (i = aStart; i <= aEnd; ++i) { aNode = a[i]; if (patched < bLeft) { j = keyIndex[aNode.key]; if (void 0 !== j) { if (canRemoveWholeContent) { canRemoveWholeContent = false; while (i > aStart) { remove(a[aStart++], dom, animations) } } sources[j - bStart] = i + 1; if (pos > j) { moved = true } else { pos = j } bNode = b[j]; if (16384 & bNode.flags) { b[j] = bNode = directClone(bNode) } patch(aNode, bNode, dom, context, isSVG, outerEdge, lifecycle, animations); ++patched } else if (!canRemoveWholeContent) { remove(aNode, dom, animations) } } else if (!canRemoveWholeContent) { remove(aNode, dom, animations) } } } if (canRemoveWholeContent) { removeAllChildren(dom, parentVNode, a, animations); mountArrayChildren(b, dom, context, isSVG, outerEdge, lifecycle, animations) } else if (moved) { var seq = function(arr) { var arrI = 0; var i = 0; var j = 0; var k = 0; var u = 0; var v = 0; var c = 0; var len = arr.length; if (len > maxLen) { maxLen = len; result = new Int32Array(len); p = new Int32Array(len) } for (; i < len; ++i) { arrI = arr[i]; if (0 !== arrI) { j = result[k]; if (arr[j] < arrI) { p[i] = j; result[++k] = i; continue } u = 0; v = k; while (u < v) { c = u + v >> 1; if (arr[result[c]] < arrI) { u = c + 1 } else { v = c } } if (arrI < arr[result[u]]) { if (u > 0) { p[i] = result[u - 1] } result[u] = i } } } u = k + 1; var seq = new Int32Array(u); v = result[u - 1]; while (u-- > 0) { seq[u] = v; v = p[v]; result[u] = 0 } return seq }(sources); j = seq.length - 1; for (i = bLeft - 1; i >= 0; i--) { if (0 === sources[i]) { pos = i + bStart; bNode = b[pos]; if (16384 & bNode.flags) { b[pos] = bNode = directClone(bNode) } nextPos = pos + 1; mount(bNode, dom, context, isSVG, nextPos < bLength ? findDOMFromVNode(b[nextPos], true) : outerEdge, lifecycle, animations) } else if (j < 0 || i !== seq[j]) { pos = i + bStart; bNode = b[pos]; nextPos = pos + 1; moveVNodeDOM(parentVNode, bNode, dom, nextPos < bLength ? findDOMFromVNode(b[nextPos], true) : outerEdge, animations) } else { j-- } } if (animations.componentWillMove.length > 0) { ! function(animationQueue) { for (var i = 0; i < animationQueue.length; i++) { animationQueue[i].fn() } for (var _i = 0; _i < animationQueue.length; _i++) { var tmp = animationQueue[_i]; insertOrAppend(tmp.parent, tmp.dom, tmp.next) } animationQueue.splice(0, animationQueue.length) }(animations.componentWillMove) } } else if (patched !== bLeft) { for (i = bLeft - 1; i >= 0; i--) { if (0 === sources[i]) { pos = i + bStart; bNode = b[pos]; if (16384 & bNode.flags) { b[pos] = bNode = directClone(bNode) } nextPos = pos + 1; mount(bNode, dom, context, isSVG, nextPos < bLength ? findDOMFromVNode(b[nextPos], true) : outerEdge, lifecycle, animations) } } } }(a, b, context, aLength, bLength, aEnd, bEnd, j, dom, isSVG, outerEdge, parentVNode, lifecycle, animations) } }(lastChildren, nextChildren, parentDOM, context, isSVG, lastLength, nextLength, nextNode, parentVNode, lifecycle, animations) } else { ! function(lastChildren, nextChildren, dom, context, isSVG, lastChildrenLength, nextChildrenLength, nextNode, lifecycle, animations) { var commonLength = lastChildrenLength > nextChildrenLength ? nextChildrenLength : lastChildrenLength; var i = 0; var nextChild; var lastChild; for (; i < commonLength; ++i) { nextChild = nextChildren[i]; lastChild = lastChildren[i]; if (16384 & nextChild.flags) { nextChild = nextChildren[i] = directClone(nextChild) } patch(lastChild, nextChild, dom, context, isSVG, nextNode, lifecycle, animations); lastChildren[i] = nextChild } if (lastChildrenLength < nextChildrenLength) { for (i = commonLength; i < nextChildrenLength; ++i) { nextChild = nextChildren[i]; if (16384 & nextChild.flags) { nextChild = nextChildren[i] = directClone(nextChild) } mount(nextChild, dom, context, isSVG, nextNode, lifecycle, animations) } } else if (lastChildrenLength > nextChildrenLength) { for (i = commonLength; i < lastChildrenLength; ++i) { remove(lastChildren[i], dom, animations) } } }(lastChildren, nextChildren, parentDOM, context, isSVG, lastLength, nextLength, nextNode, lifecycle, animations) } } } } function updateClassComponent(instance, nextState, nextProps, parentDOM, context, isSVG, force, nextNode, lifecycle, animations) { var lastState = instance.state; var lastProps = instance.props; var usesNewAPI = Boolean(instance.$N); var hasSCU = isFunction(instance.shouldComponentUpdate); if (usesNewAPI) { nextState = createDerivedState(instance, nextProps, nextState !== lastState ? combineFrom(lastState, nextState) : nextState) } if (force || !hasSCU || hasSCU && instance.shouldComponentUpdate(nextProps, nextState, context)) { if (!usesNewAPI && isFunction(instance.componentWillUpdate)) { instance.componentWillUpdate(nextProps, nextState, context) } instance.props = nextProps; instance.state = nextState; instance.context = context; var snapshot = null; var nextInput = renderNewInput(instance, nextProps, context); if (usesNewAPI && isFunction(instance.getSnapshotBeforeUpdate)) { snapshot = instance.getSnapshotBeforeUpdate(lastProps, lastState) } patch(instance.$LI, nextInput, parentDOM, instance.$CX, isSVG, nextNode, lifecycle, animations); instance.$LI = nextInput; if (isFunction(instance.componentDidUpdate)) { ! function(instance, lastProps, lastState, snapshot, lifecycle) { lifecycle.push((function() { instance.componentDidUpdate(lastProps, lastState, snapshot) })) }(instance, lastProps, lastState, snapshot, lifecycle) } } else { instance.props = nextProps; instance.state = nextState; instance.context = context } } var result; var p; var maxLen = 0; var hasDocumentAvailable = "undefined" !== typeof document; if (hasDocumentAvailable) { if (window.Node) { Node.prototype.$EV = null; Node.prototype.$V = null } } function __render(input, parentDOM, callback, context) { var lifecycle = []; var animations = new AnimationQueues; var rootInput = parentDOM.$V; renderCheck.v = true; if (isNullOrUndef(rootInput)) { if (!isNullOrUndef(input)) { if (16384 & input.flags) { input = directClone(input) } mount(input, parentDOM, context, false, null, lifecycle, animations); parentDOM.$V = input; rootInput = input } } else if (isNullOrUndef(input)) { remove(rootInput, parentDOM, animations); parentDOM.$V = null } else { if (16384 & input.flags) { input = directClone(input) } patch(rootInput, input, parentDOM, context, false, null, lifecycle, animations); rootInput = parentDOM.$V = input } callAll(lifecycle); callAllAnimationHooks(animations.componentDidAppear); renderCheck.v = false; if (isFunction(callback)) { callback() } if (isFunction(options.renderComplete)) { options.renderComplete(rootInput, parentDOM) } } function render(input, parentDOM, callback, context) { if (void 0 === callback) { callback = null } if (void 0 === context) { context = EMPTY_OBJ } __render(input, parentDOM, callback, context) } function createRenderer(parentDOM) { return function(lastInput, nextInput, callback, context) { if (!parentDOM) { parentDOM = lastInput } render(nextInput, parentDOM, callback, context) } } var COMPONENTS_QUEUE = []; var nextTick = "undefined" !== typeof Promise ? Promise.resolve().then.bind(Promise.resolve()) : function(a) { window.setTimeout(a, 0) }; var microTaskPending = false; function queueStateChanges(component, newState, callback, force) { var pending = component.$PS; if (isFunction(newState)) { newState = newState(pending ? combineFrom(component.state, pending) : component.state, component.props, component.context) } if (isNullOrUndef(pending)) { component.$PS = newState } else { for (var stateKey in newState) { pending[stateKey] = newState[stateKey] } } if (!component.$BR) { if (!renderCheck.v) { if (0 === COMPONENTS_QUEUE.length) { applyState(component, force); if (isFunction(callback)) { callback.call(component) } return } } if (-1 === COMPONENTS_QUEUE.indexOf(component)) { COMPONENTS_QUEUE.push(component) } if (force) { component.$F = true } if (!microTaskPending) { microTaskPending = true; nextTick(rerender) } if (isFunction(callback)) { var QU = component.$QU; if (!QU) { QU = component.$QU = [] } QU.push(callback) } } else if (isFunction(callback)) { component.$L.push(callback.bind(component)) } } function callSetStateCallbacks(component) { var queue = component.$QU; for (var i = 0; i < queue.length; ++i) { queue[i].call(component) } component.$QU = null } function rerender() { var component; microTaskPending = false; while (component = COMPONENTS_QUEUE.shift()) { if (!component.$UN) { var force = component.$F; component.$F = false; applyState(component, force); if (component.$QU) { callSetStateCallbacks(component) } } } } function applyState(component, force) { if (force || !component.$BR) { var pendingState = component.$PS; component.$PS = null; var lifecycle = []; var animations = new AnimationQueues; renderCheck.v = true; updateClassComponent(component, combineFrom(component.state, pendingState), component.props, findDOMFromVNode(component.$LI, true).parentNode, component.context, component.$SVG, force, null, lifecycle, animations); callAll(lifecycle); callAllAnimationHooks(animations.componentDidAppear); renderCheck.v = false } else { component.state = component.$PS; component.$PS = null } } var Component = function() { function Component(props, context) { this.state = null; this.props = void 0; this.context = void 0; this.displayName = void 0; this.$BR = false; this.$BS = true; this.$PS = null; this.$LI = null; this.$UN = false; this.$CX = null; this.$QU = null; this.$N = false; this.$SSR = void 0; this.$L = null; this.$SVG = false; this.$F = false; this.props = props || EMPTY_OBJ; this.context = context || EMPTY_OBJ } var _proto = Component.prototype; _proto.forceUpdate = function(callback) { if (this.$UN) { return } queueStateChanges(this, {}, callback, true) }; _proto.setState = function(newState, callback) { if (this.$UN) { return } if (!this.$BS) { queueStateChanges(this, newState, callback, false) } }; _proto.render = function(props, state, context) { return null }; return Component }(); Component.defaultProps = null; var version = "8.2.3"; if (false) {} }, 4755: /*!**********************************************************************************************!*\ !*** ../../node_modules/.pnpm/rrule@2.8.1/node_modules/rrule/dist/esm/index.js + 28 modules ***! \**********************************************************************************************/ function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { __webpack_require__.r(__webpack_exports__); __webpack_require__.d(__webpack_exports__, { ALL_WEEKDAYS: function() { return ALL_WEEKDAYS }, Frequency: function() { return Frequency }, RRule: function() { return RRule }, RRuleSet: function() { return RRuleSet }, Weekday: function() { return Weekday }, datetime: function() { return datetime }, rrulestr: function() { return rrulestr } }); var ALL_WEEKDAYS = ["MO", "TU", "WE", "TH", "FR", "SA", "SU"]; var Weekday = function() { function Weekday(weekday, n) { if (0 === n) { throw new Error("Can't create weekday with n == 0") } this.weekday = weekday; this.n = n } Weekday.fromStr = function(str) { return new Weekday(ALL_WEEKDAYS.indexOf(str)) }; Weekday.prototype.nth = function(n) { return this.n === n ? this : new Weekday(this.weekday, n) }; Weekday.prototype.equals = function(other) { return this.weekday === other.weekday && this.n === other.n }; Weekday.prototype.toString = function() { var s = ALL_WEEKDAYS[this.weekday]; if (this.n) { s = (this.n > 0 ? "+" : "") + String(this.n) + s } return s }; Weekday.prototype.getJsWeekday = function() { return 6 === this.weekday ? 0 : this.weekday + 1 }; return Weekday }(); var isPresent = function(value) { return null !== value && void 0 !== value }; var isNumber = function(value) { return "number" === typeof value }; var isWeekdayStr = function(value) { return "string" === typeof value && ALL_WEEKDAYS.includes(value) }; var isArray = Array.isArray; var range = function(start, end) { if (void 0 === end) { end = start } if (1 === arguments.length) { end = start; start = 0 } var rang = []; for (var i = start; i < end; i++) { rang.push(i) } return rang }; var repeat = function(value, times) { var i = 0; var array = []; if (isArray(value)) { for (; i < times; i++) { array[i] = [].concat(value) } } else { for (; i < times; i++) { array[i] = value } } return array }; var toArray = function(item) { if (isArray(item)) { return item } return [item] }; function padStart(item, targetLength, padString) { if (void 0 === padString) { padString = " " } var str = String(item); targetLength |= 0; if (str.length > targetLength) { return String(str) } targetLength -= str.length; if (targetLength > padString.length) { padString += repeat(padString, targetLength / padString.length) } return padString.slice(0, targetLength) + String(str) } var split = function(str, sep, num) { var splits = str.split(sep); return num ? splits.slice(0, num).concat([splits.slice(num).join(sep)]) : splits }; var pymod = function(a, b) { var r = a % b; return r * b < 0 ? r + b : r }; var divmod = function(a, b) { return { div: Math.floor(a / b), mod: pymod(a, b) } }; var empty = function(obj) { return !isPresent(obj) || 0 === obj.length }; var notEmpty = function(obj) { return !empty(obj) }; var includes = function(arr, val) { return notEmpty(arr) && -1 !== arr.indexOf(val) }; var datetime = function(y, m, d, h, i, s) { if (void 0 === h) { h = 0 } if (void 0 === i) { i = 0 } if (void 0 === s) { s = 0 } return new Date(Date.UTC(y, m - 1, d, h, i, s)) }; var MONTH_DAYS = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]; var ORDINAL_BASE = datetime(1970, 1, 1); var PY_WEEKDAYS = [6, 0, 1, 2, 3, 4, 5]; var isLeapYear = function(year) { return year % 4 === 0 && year % 100 !== 0 || year % 400 === 0 }; var isDate = function(value) { return value instanceof Date }; var isValidDate = function(value) { return isDate(value) && !isNaN(value.getTime()) }; var toOrdinal = function(date) { return date1 = date, date2 = ORDINAL_BASE, date1ms = date1.getTime(), date2ms = date2.getTime(), differencems = date1ms - date2ms, Math.round(differencems / 864e5); var date1, date2, date1ms, date2ms, differencems }; var fromOrdinal = function(ordinal) { return new Date(ORDINAL_BASE.getTime() + 864e5 * ordinal) }; var getMonthDays = function(date) { var month = date.getUTCMonth(); return 1 === month && isLeapYear(date.getUTCFullYear()) ? 29 : MONTH_DAYS[month] }; var getWeekday = function(date) { return PY_WEEKDAYS[date.getUTCDay()] }; var monthRange = function(year, month) { var date = datetime(year, month + 1, 1); return [getWeekday(date), getMonthDays(date)] }; var combine = function(date, time) { time = time || date; return new Date(Date.UTC(date.getUTCFullYear(), date.getUTCMonth(), date.getUTCDate(), time.getHours(), time.getMinutes(), time.getSeconds(), time.getMilliseconds())) }; var dateutil_clone = function(date) { var dolly = new Date(date.getTime()); return dolly }; var cloneDates = function(dates) { var clones = []; for (var i = 0; i < dates.length; i++) { clones.push(dateutil_clone(dates[i])) } return clones }; var sort = function(dates) { dates.sort((function(a, b) { return a.getTime() - b.getTime() })) }; var timeToUntilString = function(time, utc) { if (void 0 === utc) { utc = true } var date = new Date(time); return [padStart(date.getUTCFullYear().toString(), 4, "0"), padStart(date.getUTCMonth() + 1, 2, "0"), padStart(date.getUTCDate(), 2, "0"), "T", padStart(date.getUTCHours(), 2, "0"), padStart(date.getUTCMinutes(), 2, "0"), padStart(date.getUTCSeconds(), 2, "0"), utc ? "Z" : ""].join("") }; var untilStringToDate = function(until) { var bits = /^(\d{4})(\d{2})(\d{2})(T(\d{2})(\d{2})(\d{2})Z?)?$/.exec(until); if (!bits) { throw new Error("Invalid UNTIL value: ".concat(until)) } return new Date(Date.UTC(parseInt(bits[1], 10), parseInt(bits[2], 10) - 1, parseInt(bits[3], 10), parseInt(bits[5], 10) || 0, parseInt(bits[6], 10) || 0, parseInt(bits[7], 10) || 0)) }; var dateTZtoISO8601 = function(date, timeZone) { var dateStr = date.toLocaleString("sv-SE", { timeZone: timeZone }); return dateStr.replace(" ", "T") + "Z" }; var IterResult = function() { function IterResult(method, args) { this.minDate = null; this.maxDate = null; this._result = []; this.total = 0; this.method = method; this.args = args; if ("between" === method) { this.maxDate = args.inc ? args.before : new Date(args.before.getTime() - 1); this.minDate = args.inc ? args.after : new Date(args.after.getTime() + 1) } else if ("before" === method) { this.maxDate = args.inc ? args.dt : new Date(args.dt.getTime() - 1) } else if ("after" === method) { this.minDate = args.inc ? args.dt : new Date(args.dt.getTime() + 1) } } IterResult.prototype.accept = function(date) { ++this.total; var tooEarly = this.minDate && date < this.minDate; var tooLate = this.maxDate && date > this.maxDate; if ("between" === this.method) { if (tooEarly) { return true } if (tooLate) { return false } } else if ("before" === this.method) { if (tooLate) { return false } } else if ("after" === this.method) { if (tooEarly) { return true } this.add(date); return false } return this.add(date) }; IterResult.prototype.add = function(date) { this._result.push(date); return true }; IterResult.prototype.getValue = function() { var res = this._result; switch (this.method) { case "all": case "between": return res; default: return res.length ? res[res.length - 1] : null } }; IterResult.prototype.clone = function() { return new IterResult(this.method, this.args) }; return IterResult }(); var iterresult = IterResult; var extendStatics = function(d, b) { extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function(d, b) { d.__proto__ = b } || function(d, b) { for (var p in b) { if (Object.prototype.hasOwnProperty.call(b, p)) { d[p] = b[p] } } }; return extendStatics(d, b) }; function __extends(d, b) { if ("function" !== typeof b && null !== b) { throw new TypeError("Class extends value " + String(b) + " is not a constructor or null") } extendStatics(d, b); function __() { this.constructor = d } d.prototype = null === b ? Object.create(b) : (__.prototype = b.prototype, new __) } var __assign = function() { __assign = Object.assign || function(t) { for (var s, i = 1, n = arguments.length; i < n; i++) { s = arguments[i]; for (var p in s) { if (Object.prototype.hasOwnProperty.call(s, p)) { t[p] = s[p] } } } return t }; return __assign.apply(this, arguments) }; Object.create; function __spreadArray(to, from, pack) { if (pack || 2 === arguments.length) { for (var ar, i = 0, l = from.length; i < l; i++) { if (ar || !(i in from)) { if (!ar) { ar = Array.prototype.slice.call(from, 0, i) } ar[i] = from[i] } } } return to.concat(ar || Array.prototype.slice.call(from)) } Object.create; "function" === typeof SuppressedError && SuppressedError; var CallbackIterResult = function(_super) { __extends(CallbackIterResult, _super); function CallbackIterResult(method, args, iterator) { var _this = _super.call(this, method, args) || this; _this.iterator = iterator; return _this } CallbackIterResult.prototype.add = function(date) { if (this.iterator(date, this._result.length)) { this._result.push(date); return true } return false }; return CallbackIterResult }(iterresult); var callbackiterresult = CallbackIterResult; var i18n = { dayNames: ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"], monthNames: ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"], tokens: { SKIP: /^[ \r\n\t]+|^\.$/, number: /^[1-9][0-9]*/, numberAsText: /^(one|two|three)/i, every: /^every/i, "day(s)": /^days?/i, "weekday(s)": /^weekdays?/i, "week(s)": /^weeks?/i, "hour(s)": /^hours?/i, "minute(s)": /^minutes?/i, "month(s)": /^months?/i, "year(s)": /^years?/i, on: /^(on|in)/i, at: /^(at)/i, the: /^the/i, first: /^first/i, second: /^second/i, third: /^third/i, nth: /^([1-9][0-9]*)(\.|th|nd|rd|st)/i, last: /^last/i, for: /^for/i, "time(s)": /^times?/i, until: /^(un)?til/i, monday: /^mo(n(day)?)?/i, tuesday: /^tu(e(s(day)?)?)?/i, wednesday: /^we(d(n(esday)?)?)?/i, thursday: /^th(u(r(sday)?)?)?/i, friday: /^fr(i(day)?)?/i, saturday: /^sa(t(urday)?)?/i, sunday: /^su(n(day)?)?/i, january: /^jan(uary)?/i, february: /^feb(ruary)?/i, march: /^mar(ch)?/i, april: /^apr(il)?/i, may: /^may/i, june: /^june?/i, july: /^july?/i, august: /^aug(ust)?/i, september: /^sep(t(ember)?)?/i, october: /^oct(ober)?/i, november: /^nov(ember)?/i, december: /^dec(ember)?/i, comma: /^(,\s*|(and|or)\s*)+/i } }; var contains = function(arr, val) { return -1 !== arr.indexOf(val) }; var defaultGetText = function(id) { return id.toString() }; var defaultDateFormatter = function(year, month, day) { return "".concat(month, " ").concat(day, ", ").concat(year) }; var ToText = function() { function ToText(rrule, gettext, language, dateFormatter) { if (void 0 === gettext) { gettext = defaultGetText } if (void 0 === language) { language = i18n } if (void 0 === dateFormatter) { dateFormatter = defaultDateFormatter } this.text = []; this.language = language || i18n; this.gettext = gettext; this.dateFormatter = dateFormatter; this.rrule = rrule; this.options = rrule.options; this.origOptions = rrule.origOptions; if (this.origOptions.bymonthday) { var bymonthday = [].concat(this.options.bymonthday); var bynmonthday = [].concat(this.options.bynmonthday); bymonthday.sort((function(a, b) { return a - b })); bynmonthday.sort((function(a, b) { return b - a })); this.bymonthday = bymonthday.concat(bynmonthday); if (!this.bymonthday.length) { this.bymonthday = null } } if (isPresent(this.origOptions.byweekday)) { var byweekday = !isArray(this.origOptions.byweekday) ? [this.origOptions.byweekday] : this.origOptions.byweekday; var days = String(byweekday); this.byweekday = { allWeeks: byweekday.filter((function(weekday) { return !weekday.n })), someWeeks: byweekday.filter((function(weekday) { return Boolean(weekday.n) })), isWeekdays: -1 !== days.indexOf("MO") && -1 !== days.indexOf("TU") && -1 !== days.indexOf("WE") && -1 !== days.indexOf("TH") && -1 !== days.indexOf("FR") && -1 === days.indexOf("SA") && -1 === days.indexOf("SU"), isEveryDay: -1 !== days.indexOf("MO") && -1 !== days.indexOf("TU") && -1 !== days.indexOf("WE") && -1 !== days.indexOf("TH") && -1 !== days.indexOf("FR") && -1 !== days.indexOf("SA") && -1 !== days.indexOf("SU") }; var sortWeekDays = function(a, b) { return a.weekday - b.weekday }; this.byweekday.allWeeks.sort(sortWeekDays); this.byweekday.someWeeks.sort(sortWeekDays); if (!this.byweekday.allWeeks.length) { this.byweekday.allWeeks = null } if (!this.byweekday.someWeeks.length) { this.byweekday.someWeeks = null } } else { this.byweekday = null } } ToText.isFullyConvertible = function(rrule) { if (!(rrule.options.freq in ToText.IMPLEMENTED)) { return false } if (rrule.origOptions.until && rrule.origOptions.count) { return false } for (var key in rrule.origOptions) { if (contains(["dtstart", "tzid", "wkst", "freq"], key)) { return true } if (!contains(ToText.IMPLEMENTED[rrule.options.freq], key)) { return false } } return true }; ToText.prototype.isFullyConvertible = function() { return ToText.isFullyConvertible(this.rrule) }; ToText.prototype.toString = function() { var gettext = this.gettext; if (!(this.options.freq in ToText.IMPLEMENTED)) { return gettext("RRule error: Unable to fully convert this rrule to text") } this.text = [gettext("every")]; this[RRule.FREQUENCIES[this.options.freq]](); if (this.options.until) { this.add(gettext("until")); var until = this.options.until; this.add(this.dateFormatter(until.getUTCFullYear(), this.language.monthNames[until.getUTCMonth()], until.getUTCDate())) } else if (this.options.count) { this.add(gettext("for")).add(this.options.count.toString()).add(this.plural(this.options.count) ? gettext("times") : gettext("time")) } if (!this.isFullyConvertible()) { this.add(gettext("(~ approximate)")) } return this.text.join("") }; ToText.prototype.HOURLY = function() { var gettext = this.gettext; if (1 !== this.options.interval) { this.add(this.options.interval.toString()) } this.add(this.plural(this.options.interval) ? gettext("hours") : gettext("hour")) }; ToText.prototype.MINUTELY = function() { var gettext = this.gettext; if (1 !== this.options.interval) { this.add(this.options.interval.toString()) } this.add(this.plural(this.options.interval) ? gettext("minutes") : gettext("minute")) }; ToText.prototype.DAILY = function() { var gettext = this.gettext; if (1 !== this.options.interval) { this.add(this.options.interval.toString()) } if (this.byweekday && this.byweekday.isWeekdays) { this.add(this.plural(this.options.interval) ? gettext("weekdays") : gettext("weekday")) } else { this.add(this.plural(this.options.interval) ? gettext("days") : gettext("day")) } if (this.origOptions.bymonth) { this.add(gettext("in")); this._bymonth() } if (this.bymonthday) { this._bymonthday() } else if (this.byweekday) { this._byweekday() } else if (this.origOptions.byhour) { this._byhour() } }; ToText.prototype.WEEKLY = function() { var gettext = this.gettext; if (1 !== this.options.interval) { this.add(this.options.interval.toString()).add(this.plural(this.options.interval) ? gettext("weeks") : gettext("week")) } if (this.byweekday && this.byweekday.isWeekdays) { if (1 === this.options.interval) { this.add(this.plural(this.options.interval) ? gettext("weekdays") : gettext("weekday")) } else { this.add(gettext("on")).add(gettext("weekdays")) } } else if (this.byweekday && this.byweekday.isEveryDay) { this.add(this.plural(this.options.interval) ? gettext("days") : gettext("day")) } else { if (1 === this.options.interval) { this.add(gettext("week")) } if (this.origOptions.bymonth) { this.add(gettext("in")); this._bymonth() } if (this.bymonthday) { this._bymonthday() } else if (this.byweekday) { this._byweekday() } if (this.origOptions.byhour) { this._byhour() } } }; ToText.prototype.MONTHLY = function() { var gettext = this.gettext; if (this.origOptions.bymonth) { if (1 !== this.options.interval) { this.add(this.options.interval.toString()).add(gettext("months")); if (this.plural(this.options.interval)) { this.add(gettext("in")) } } this._bymonth() } else { if (1 !== this.options.interval) { this.add(this.options.interval.toString()) } this.add(this.plural(this.options.interval) ? gettext("months") : gettext("month")) } if (this.bymonthday) { this._bymonthday() } else if (this.byweekday && this.byweekday.isWeekdays) { this.add(gettext("on")).add(gettext("weekdays")) } else if (this.byweekday) { this._byweekday() } }; ToText.prototype.YEARLY = function() { var gettext = this.gettext; if (this.origOptions.bymonth) { if (1 !== this.options.interval) { this.add(this.options.interval.toString()); this.add(gettext("years")) } this._bymonth() } else { if (1 !== this.options.interval) { this.add(this.options.interval.toString()) } this.add(this.plural(this.options.interval) ? gettext("years") : gettext("year")) } if (this.bymonthday) { this._bymonthday() } else if (this.byweekday) { this._byweekday() } if (this.options.byyearday) { this.add(gettext("on the")).add(this.list(this.options.byyearday, this.nth, gettext("and"))).add(gettext("day")) } if (this.options.byweekno) { this.add(gettext("in")).add(this.plural(this.options.byweekno.length) ? gettext("weeks") : gettext("week")).add(this.list(this.options.byweekno, void 0, gettext("and"))) } }; ToText.prototype._bymonthday = function() { var gettext = this.gettext; if (this.byweekday && this.byweekday.allWeeks) { this.add(gettext("on")).add(this.list(this.byweekday.allWeeks, this.weekdaytext, gettext("or"))).add(gettext("the")).add(this.list(this.bymonthday, this.nth, gettext("or"))) } else { this.add(gettext("on the")).add(this.list(this.bymonthday, this.nth, gettext("and"))) } }; ToText.prototype._byweekday = function() { var gettext = this.gettext; if (this.byweekday.allWeeks && !this.byweekday.isWeekdays) { this.add(gettext("on")).add(this.list(this.byweekday.allWeeks, this.weekdaytext)) } if (this.byweekday.someWeeks) { if (this.byweekday.allWeeks) { this.add(gettext("and")) } this.add(gettext("on the")).add(this.list(this.byweekday.someWeeks, this.weekdaytext, gettext("and"))) } }; ToText.prototype._byhour = function() { var gettext = this.gettext; this.add(gettext("at")).add(this.list(this.origOptions.byhour, void 0, gettext("and"))) }; ToText.prototype._bymonth = function() { this.add(this.list(this.options.bymonth, this.monthtext, this.gettext("and"))) }; ToText.prototype.nth = function(n) { n = parseInt(n.toString(), 10); var nth; var gettext = this.gettext; if (-1 === n) { return gettext("last") } var npos = Math.abs(n); switch (npos) { case 1: case 21: case 31: nth = npos + gettext("st"); break; case 2: case 22: nth = npos + gettext("nd"); break; case 3: case 23: nth = npos + gettext("rd"); break; default: nth = npos + gettext("th") } return n < 0 ? nth + " " + gettext("last") : nth }; ToText.prototype.monthtext = function(m) { return this.language.monthNames[m - 1] }; ToText.prototype.weekdaytext = function(wday) { var weekday = isNumber(wday) ? (wday + 1) % 7 : wday.getJsWeekday(); return (wday.n ? this.nth(wday.n) + " " : "") + this.language.dayNames[weekday] }; ToText.prototype.plural = function(n) { return n % 100 !== 1 }; ToText.prototype.add = function(s) { this.text.push(" "); this.text.push(s); return this }; ToText.prototype.list = function(arr, callback, finalDelim, delim) { var _this = this; if (void 0 === delim) { delim = "," } if (!isArray(arr)) { arr = [arr] } callback = callback || function(o) { return o.toString() }; var realCallback = function(arg) { return callback && callback.call(_this, arg) }; if (finalDelim) { return function(array, delimiter, finalDelimiter) { var list = ""; for (var i = 0; i < array.length; i++) { if (0 !== i) { if (i === array.length - 1) { list += " " + finalDelimiter + " " } else { list += delimiter + " " } } list += array[i] } return list }(arr.map(realCallback), delim, finalDelim) } else { return arr.map(realCallback).join(delim + " ") } }; return ToText }(); var totext = ToText; var Parser = function() { function Parser(rules) { this.done = true; this.rules = rules } Parser.prototype.start = function(text) { this.text = text; this.done = false; return this.nextSymbol() }; Parser.prototype.isDone = function() { return this.done && null === this.symbol }; Parser.prototype.nextSymbol = function() { var best; var bestSymbol; this.symbol = null; this.value = null; do { if (this.done) { return false } var rule = void 0; best = null; for (var name_1 in this.rules) { rule = this.rules[name_1]; var match = rule.exec(this.text); if (match) { if (null === best || match[0].length > best[0].length) { best = match; bestSymbol = name_1 } } } if (null != best) { this.text = this.text.substr(best[0].length); if ("" === this.text) { this.done = true } } if (null == best) { this.done = true; this.symbol = null; this.value = null; return } } while ("SKIP" === bestSymbol); this.symbol = bestSymbol; this.value = best; return true }; Parser.prototype.accept = function(name) { if (this.symbol === name) { if (this.value) { var v = this.value; this.nextSymbol(); return v } this.nextSymbol(); return true } return false }; Parser.prototype.acceptNumber = function() { return this.accept("number") }; Parser.prototype.expect = function(name) { if (this.accept(name)) { return true } throw new Error("expected " + name + " but found " + this.symbol) }; return Parser }(); function parseText(text, language) { if (void 0 === language) { language = i18n } var options = {}; var ttr = new Parser(language.tokens); if (!ttr.start(text)) { return null }! function() { ttr.expect("every"); var n = ttr.acceptNumber(); if (n) { options.interval = parseInt(n[0], 10) } if (ttr.isDone()) { throw new Error("Unexpected end") } switch (ttr.symbol) { case "day(s)": options.freq = RRule.DAILY; if (ttr.nextSymbol()) { AT(); F() } break; case "weekday(s)": options.freq = RRule.WEEKLY; options.byweekday = [RRule.MO, RRule.TU, RRule.WE, RRule.TH, RRule.FR]; ttr.nextSymbol(); AT(); F(); break; case "week(s)": options.freq = RRule.WEEKLY; if (ttr.nextSymbol()) { ON(); AT(); F() } break; case "hour(s)": options.freq = RRule.HOURLY; if (ttr.nextSymbol()) { ON(); F() } break; case "minute(s)": options.freq = RRule.MINUTELY; if (ttr.nextSymbol()) { ON(); F() } break; case "month(s)": options.freq = RRule.MONTHLY; if (ttr.nextSymbol()) { ON(); F() } break; case "year(s)": options.freq = RRule.YEARLY; if (ttr.nextSymbol()) { ON(); F() } break; case "monday": case "tuesday": case "wednesday": case "thursday": case "friday": case "saturday": case "sunday": options.freq = RRule.WEEKLY; var key = ttr.symbol.substr(0, 2).toUpperCase(); options.byweekday = [RRule[key]]; if (!ttr.nextSymbol()) { return } while (ttr.accept("comma")) { if (ttr.isDone()) { throw new Error("Unexpected end") } var wkd = decodeWKD(); if (!wkd) { throw new Error("Unexpected symbol " + ttr.symbol + ", expected weekday") } options.byweekday.push(RRule[wkd]); ttr.nextSymbol() } AT(); ! function() { ttr.accept("on"); ttr.accept("the"); var nth = decodeNTH(); if (!nth) { return } options.bymonthday = [nth]; ttr.nextSymbol(); while (ttr.accept("comma")) { nth = decodeNTH(); if (!nth) { throw new Error("Unexpected symbol " + ttr.symbol + "; expected monthday") } options.bymonthday.push(nth); ttr.nextSymbol() } }(); F(); break; case "january": case "february": case "march": case "april": case "may": case "june": case "july": case "august": case "september": case "october": case "november": case "december": options.freq = RRule.YEARLY; options.bymonth = [decodeM()]; if (!ttr.nextSymbol()) { return } while (ttr.accept("comma")) { if (ttr.isDone()) { throw new Error("Unexpected end") } var m = decodeM(); if (!m) { throw new Error("Unexpected symbol " + ttr.symbol + ", expected month") } options.bymonth.push(m); ttr.nextSymbol() } ON(); F(); break; default: throw new Error("Unknown symbol") } }(); return options; function ON() { var on = ttr.accept("on"); var the = ttr.accept("the"); if (!(on || the)) { return } do { var nth = decodeNTH(); var wkd = decodeWKD(); var m = decodeM(); if (nth) { if (wkd) { ttr.nextSymbol(); if (!options.byweekday) { options.byweekday = [] } options.byweekday.push(RRule[wkd].nth(nth)) } else { if (!options.bymonthday) { options.bymonthday = [] } options.bymonthday.push(nth); ttr.accept("day(s)") } } else if (wkd) { ttr.nextSymbol(); if (!options.byweekday) { options.byweekday = [] } options.byweekday.push(RRule[wkd]) } else if ("weekday(s)" === ttr.symbol) { ttr.nextSymbol(); if (!options.byweekday) { options.byweekday = [RRule.MO, RRule.TU, RRule.WE, RRule.TH, RRule.FR] } } else if ("week(s)" === ttr.symbol) { ttr.nextSymbol(); var n = ttr.acceptNumber(); if (!n) { throw new Error("Unexpected symbol " + ttr.symbol + ", expected week number") } options.byweekno = [parseInt(n[0], 10)]; while (ttr.accept("comma")) { n = ttr.acceptNumber(); if (!n) { throw new Error("Unexpected symbol " + ttr.symbol + "; expected monthday") } options.byweekno.push(parseInt(n[0], 10)) } } else if (m) { ttr.nextSymbol(); if (!options.bymonth) { options.bymonth = [] } options.bymonth.push(m) } else { return } } while (ttr.accept("comma") || ttr.accept("the") || ttr.accept("on")) } function AT() { var at = ttr.accept("at"); if (!at) { return } do { var n = ttr.acceptNumber(); if (!n) { throw new Error("Unexpected symbol " + ttr.symbol + ", expected hour") } options.byhour = [parseInt(n[0], 10)]; while (ttr.accept("comma")) { n = ttr.acceptNumber(); if (!n) { throw new Error("Unexpected symbol " + ttr.symbol + "; expected hour") } options.byhour.push(parseInt(n[0], 10)) } } while (ttr.accept("comma") || ttr.accept("at")) } function decodeM() { switch (ttr.symbol) { case "january": return 1; case "february": return 2; case "march": return 3; case "april": return 4; case "may": return 5; case "june": return 6; case "july": return 7; case "august": return 8; case "september": return 9; case "october": return 10; case "november": return 11; case "december": return 12; default: return false } } function decodeWKD() { switch (ttr.symbol) { case "monday": case "tuesday": case "wednesday": case "thursday": case "friday": case "saturday": case "sunday": return ttr.symbol.substr(0, 2).toUpperCase(); default: return false } } function decodeNTH() { switch (ttr.symbol) { case "last": ttr.nextSymbol(); return -1; case "first": ttr.nextSymbol(); return 1; case "second": ttr.nextSymbol(); return ttr.accept("last") ? -2 : 2; case "third": ttr.nextSymbol(); return ttr.accept("last") ? -3 : 3; case "nth": var v = parseInt(ttr.value[1], 10); if (v < -366 || v > 366) { throw new Error("Nth out of range: " + v) } ttr.nextSymbol(); return ttr.accept("last") ? -v : v; default: return false } } function F() { if ("until" === ttr.symbol) { var date = Date.parse(ttr.text); if (!date) { throw new Error("Cannot parse until date:" + ttr.text) } options.until = new Date(date) } else if (ttr.accept("for")) { options.count = parseInt(ttr.value[0], 10); ttr.expect("number") } } } var Frequency; ! function(Frequency) { Frequency[Frequency.YEARLY = 0] = "YEARLY"; Frequency[Frequency.MONTHLY = 1] = "MONTHLY"; Frequency[Frequency.WEEKLY = 2] = "WEEKLY"; Frequency[Frequency.DAILY = 3] = "DAILY"; Frequency[Frequency.HOURLY = 4] = "HOURLY"; Frequency[Frequency.MINUTELY = 5] = "MINUTELY"; Frequency[Frequency.SECONDLY = 6] = "SECONDLY" }(Frequency || (Frequency = {})); function freqIsDailyOrGreater(freq) { return freq < Frequency.HOURLY } /* ! * rrule.js - Library for working with recurrence rules for calendar dates. * https://github.com/jakubroztocil/rrule * * Copyright 2010, Jakub Roztocil and Lars Schoning * Licenced under the BSD licence. * https://github.com/jakubroztocil/rrule/blob/master/LICENCE * */ var fromText = function(text, language) { if (void 0 === language) { language = i18n } return new RRule(parseText(text, language) || void 0) }; var common = ["count", "until", "interval", "byweekday", "bymonthday", "bymonth"]; totext.IMPLEMENTED = []; totext.IMPLEMENTED[Frequency.HOURLY] = common; totext.IMPLEMENTED[Frequency.MINUTELY] = common; totext.IMPLEMENTED[Frequency.DAILY] = ["byhour"].concat(common); totext.IMPLEMENTED[Frequency.WEEKLY] = common; totext.IMPLEMENTED[Frequency.MONTHLY] = common; totext.IMPLEMENTED[Frequency.YEARLY] = ["byweekno", "byyearday"].concat(common); var isFullyConvertible = totext.isFullyConvertible; var Time = function() { function Time(hour, minute, second, millisecond) { this.hour = hour; this.minute = minute; this.second = second; this.millisecond = millisecond || 0 } Time.prototype.getHours = function() { return this.hour }; Time.prototype.getMinutes = function() { return this.minute }; Time.prototype.getSeconds = function() { return this.second }; Time.prototype.getMilliseconds = function() { return this.millisecond }; Time.prototype.getTime = function() { return 1e3 * (60 * this.hour * 60 + 60 * this.minute + this.second) + this.millisecond }; return Time }(); var DateTime = function(_super) { __extends(DateTime, _super); function DateTime(year, month, day, hour, minute, second, millisecond) { var _this = _super.call(this, hour, minute, second, millisecond) || this; _this.year = year; _this.month = month; _this.day = day; return _this } DateTime.fromDate = function(date) { return new this(date.getUTCFullYear(), date.getUTCMonth() + 1, date.getUTCDate(), date.getUTCHours(), date.getUTCMinutes(), date.getUTCSeconds(), date.valueOf() % 1e3) }; DateTime.prototype.getWeekday = function() { return getWeekday(new Date(this.getTime())) }; DateTime.prototype.getTime = function() { return new Date(Date.UTC(this.year, this.month - 1, this.day, this.hour, this.minute, this.second, this.millisecond)).getTime() }; DateTime.prototype.getDay = function() { return this.day }; DateTime.prototype.getMonth = function() { return this.month }; DateTime.prototype.getYear = function() { return this.year }; DateTime.prototype.addYears = function(years) { this.year += years }; DateTime.prototype.addMonths = function(months) { this.month += months; if (this.month > 12) { var yearDiv = Math.floor(this.month / 12); var monthMod = pymod(this.month, 12); this.month = monthMod; this.year += yearDiv; if (0 === this.month) { this.month = 12; --this.year } } }; DateTime.prototype.addWeekly = function(days, wkst) { if (wkst > this.getWeekday()) { this.day += -(this.getWeekday() + 1 + (6 - wkst)) + 7 * days } else { this.day += -(this.getWeekday() - wkst) + 7 * days } this.fixDay() }; DateTime.prototype.addDaily = function(days) { this.day += days; this.fixDay() }; DateTime.prototype.addHours = function(hours, filtered, byhour) { if (filtered) { this.hour += Math.floor((23 - this.hour) / hours) * hours } for (;;) { this.hour += hours; var _a = divmod(this.hour, 24), dayDiv = _a.div, hourMod = _a.mod; if (dayDiv) { this.hour = hourMod; this.addDaily(dayDiv) } if (empty(byhour) || includes(byhour, this.hour)) { break } } }; DateTime.prototype.addMinutes = function(minutes, filtered, byhour, byminute) { if (filtered) { this.minute += Math.floor((1439 - (60 * this.hour + this.minute)) / minutes) * minutes } for (;;) { this.minute += minutes; var _a = divmod(this.minute, 60), hourDiv = _a.div, minuteMod = _a.mod; if (hourDiv) { this.minute = minuteMod; this.addHours(hourDiv, false, byhour) } if ((empty(byhour) || includes(byhour, this.hour)) && (empty(byminute) || includes(byminute, this.minute))) { break } } }; DateTime.prototype.addSeconds = function(seconds, filtered, byhour, byminute, bysecond) { if (filtered) { this.second += Math.floor((86399 - (3600 * this.hour + 60 * this.minute + this.second)) / seconds) * seconds } for (;;) { this.second += seconds; var _a = divmod(this.second, 60), minuteDiv = _a.div, secondMod = _a.mod; if (minuteDiv) { this.second = secondMod; this.addMinutes(minuteDiv, false, byhour, byminute) } if ((empty(byhour) || includes(byhour, this.hour)) && (empty(byminute) || includes(byminute, this.minute)) && (empty(bysecond) || includes(bysecond, this.second))) { break } } }; DateTime.prototype.fixDay = function() { if (this.day <= 28) { return } var daysinmonth = monthRange(this.year, this.month - 1)[1]; if (this.day <= daysinmonth) { return } while (this.day > daysinmonth) { this.day -= daysinmonth; ++this.month; if (13 === this.month) { this.month = 1; ++this.year; if (this.year > 9999) { return } } daysinmonth = monthRange(this.year, this.month - 1)[1] } }; DateTime.prototype.add = function(options, filtered) { var freq = options.freq, interval = options.interval, wkst = options.wkst, byhour = options.byhour, byminute = options.byminute, bysecond = options.bysecond; switch (freq) { case Frequency.YEARLY: return this.addYears(interval); case Frequency.MONTHLY: return this.addMonths(interval); case Frequency.WEEKLY: return this.addWeekly(interval, wkst); case Frequency.DAILY: return this.addDaily(interval); case Frequency.HOURLY: return this.addHours(interval, filtered, byhour); case Frequency.MINUTELY: return this.addMinutes(interval, filtered, byhour, byminute); case Frequency.SECONDLY: return this.addSeconds(interval, filtered, byhour, byminute, bysecond) } }; return DateTime }(Time); function initializeOptions(options) { var invalid = []; var keys = Object.keys(options); for (var _i = 0, keys_1 = keys; _i < keys_1.length; _i++) { var key = keys_1[_i]; if (!includes(defaultKeys, key)) { invalid.push(key) } if (isDate(options[key]) && !isValidDate(options[key])) { invalid.push(key) } } if (invalid.length) { throw new Error("Invalid options: " + invalid.join(", ")) } return __assign({}, options) } function parseOptions(options) { var opts = __assign(__assign({}, DEFAULT_OPTIONS), initializeOptions(options)); if (isPresent(opts.byeaster)) { opts.freq = RRule.YEARLY } if (!(isPresent(opts.freq) && RRule.FREQUENCIES[opts.freq])) { throw new Error("Invalid frequency: ".concat(opts.freq, " ").concat(options.freq)) } if (!opts.dtstart) { opts.dtstart = new Date((new Date).setMilliseconds(0)) } if (!isPresent(opts.wkst)) { opts.wkst = RRule.MO.weekday } else if (isNumber(opts.wkst)) {} else { opts.wkst = opts.wkst.weekday } if (isPresent(opts.bysetpos)) { if (isNumber(opts.bysetpos)) { opts.bysetpos = [opts.bysetpos] } for (var i = 0; i < opts.bysetpos.length; i++) { var v = opts.bysetpos[i]; if (0 === v || !(v >= -366 && v <= 366)) { throw new Error("bysetpos must be between 1 and 366, or between -366 and -1") } } } if (!(Boolean(opts.byweekno) || notEmpty(opts.byweekno) || notEmpty(opts.byyearday) || Boolean(opts.bymonthday) || notEmpty(opts.bymonthday) || isPresent(opts.byweekday) || isPresent(opts.byeaster))) { switch (opts.freq) { case RRule.YEARLY: if (!opts.bymonth) { opts.bymonth = opts.dtstart.getUTCMonth() + 1 } opts.bymonthday = opts.dtstart.getUTCDate(); break; case RRule.MONTHLY: opts.bymonthday = opts.dtstart.getUTCDate(); break; case RRule.WEEKLY: opts.byweekday = [getWeekday(opts.dtstart)] } } if (isPresent(opts.bymonth) && !isArray(opts.bymonth)) { opts.bymonth = [opts.bymonth] } if (isPresent(opts.byyearday) && !isArray(opts.byyearday) && isNumber(opts.byyearday)) { opts.byyearday = [opts.byyearday] } if (!isPresent(opts.bymonthday)) { opts.bymonthday = []; opts.bynmonthday = [] } else if (isArray(opts.bymonthday)) { var bymonthday = []; var bynmonthday = []; for (i = 0; i < opts.bymonthday.length; i++) { v = opts.bymonthday[i]; if (v > 0) { bymonthday.push(v) } else if (v < 0) { bynmonthday.push(v) } } opts.bymonthday = bymonthday; opts.bynmonthday = bynmonthday } else if (opts.bymonthday < 0) { opts.bynmonthday = [opts.bymonthday]; opts.bymonthday = [] } else { opts.bynmonthday = []; opts.bymonthday = [opts.bymonthday] } if (isPresent(opts.byweekno) && !isArray(opts.byweekno)) { opts.byweekno = [opts.byweekno] } if (!isPresent(opts.byweekday)) { opts.bynweekday = null } else if (isNumber(opts.byweekday)) { opts.byweekday = [opts.byweekday]; opts.bynweekday = null } else if (isWeekdayStr(opts.byweekday)) { opts.byweekday = [Weekday.fromStr(opts.byweekday).weekday]; opts.bynweekday = null } else if (opts.byweekday instanceof Weekday) { if (!opts.byweekday.n || opts.freq > RRule.MONTHLY) { opts.byweekday = [opts.byweekday.weekday]; opts.bynweekday = null } else { opts.bynweekday = [ [opts.byweekday.weekday, opts.byweekday.n] ]; opts.byweekday = null } } else { var byweekday = []; var bynweekday = []; for (i = 0; i < opts.byweekday.length; i++) { var wday = opts.byweekday[i]; if (isNumber(wday)) { byweekday.push(wday); continue } else if (isWeekdayStr(wday)) { byweekday.push(Weekday.fromStr(wday).weekday); continue } if (!wday.n || opts.freq > RRule.MONTHLY) { byweekday.push(wday.weekday) } else { bynweekday.push([wday.weekday, wday.n]) } } opts.byweekday = notEmpty(byweekday) ? byweekday : null; opts.bynweekday = notEmpty(bynweekday) ? bynweekday : null } if (!isPresent(opts.byhour)) { opts.byhour = opts.freq < RRule.HOURLY ? [opts.dtstart.getUTCHours()] : null } else if (isNumber(opts.byhour)) { opts.byhour = [opts.byhour] } if (!isPresent(opts.byminute)) { opts.byminute = opts.freq < RRule.MINUTELY ? [opts.dtstart.getUTCMinutes()] : null } else if (isNumber(opts.byminute)) { opts.byminute = [opts.byminute] } if (!isPresent(opts.bysecond)) { opts.bysecond = opts.freq < RRule.SECONDLY ? [opts.dtstart.getUTCSeconds()] : null } else if (isNumber(opts.bysecond)) { opts.bysecond = [opts.bysecond] } return { parsedOptions: opts } } function parseString(rfcString) { var options = rfcString.split("\n").map(parseLine).filter((function(x) { return null !== x })); return __assign(__assign({}, options[0]), options[1]) } function parseDtstart(line) { var options = {}; var dtstartWithZone = /DTSTART(?:;TZID=([^:=]+?))?(?::|=)([^;\s]+)/i.exec(line); if (!dtstartWithZone) { return options } var tzid = dtstartWithZone[1], dtstart = dtstartWithZone[2]; if (tzid) { options.tzid = tzid } options.dtstart = untilStringToDate(dtstart); return options } function parseLine(rfcString) { rfcString = rfcString.replace(/^\s+|\s+$/, ""); if (!rfcString.length) { return null } var header = /^([A-Z]+?)[:;]/.exec(rfcString.toUpperCase()); if (!header) { return parseRrule(rfcString) } var key = header[1]; switch (key.toUpperCase()) { case "RRULE": case "EXRULE": return parseRrule(rfcString); case "DTSTART": return parseDtstart(rfcString); default: throw new Error("Unsupported RFC prop ".concat(key, " in ").concat(rfcString)) } } function parseRrule(line) { var strippedLine = line.replace(/^RRULE:/i, ""); var options = parseDtstart(strippedLine); var attrs = line.replace(/^(?:RRULE|EXRULE):/i, "").split(";"); attrs.forEach((function(attr) { var _a = attr.split("="), key = _a[0], value = _a[1]; switch (key.toUpperCase()) { case "FREQ": options.freq = Frequency[value.toUpperCase()]; break; case "WKST": options.wkst = Days[value.toUpperCase()]; break; case "COUNT": case "INTERVAL": case "BYSETPOS": case "BYMONTH": case "BYMONTHDAY": case "BYYEARDAY": case "BYWEEKNO": case "BYHOUR": case "BYMINUTE": case "BYSECOND": var num = function(value) { if (-1 !== value.indexOf(",")) { var values = value.split(","); return values.map(parseIndividualNumber) } return parseIndividualNumber(value) }(value); var optionKey = key.toLowerCase(); options[optionKey] = num; break; case "BYWEEKDAY": case "BYDAY": options.byweekday = function(value) { var days = value.split(","); return days.map((function(day) { if (2 === day.length) { return Days[day] } var parts = day.match(/^([+-]?\d{1,2})([A-Z]{2})$/); if (!parts || parts.length < 3) { throw new SyntaxError("Invalid weekday string: ".concat(day)) } var n = Number(parts[1]); var wdaypart = parts[2]; var wday = Days[wdaypart].weekday; return new Weekday(wday, n) })) }(value); break; case "DTSTART": case "TZID": var dtstart = parseDtstart(line); options.tzid = dtstart.tzid; options.dtstart = dtstart.dtstart; break; case "UNTIL": options.until = untilStringToDate(value); break; case "BYEASTER": options.byeaster = Number(value); break; default: throw new Error("Unknown RRULE property '" + key + "'") } })); return options } function parseIndividualNumber(value) { if (/^[+-]?\d+$/.test(value)) { return Number(value) } return value } var DateWithZone = function() { function DateWithZone(date, tzid) { if (isNaN(date.getTime())) { throw new RangeError("Invalid date passed to DateWithZone") } this.date = date; this.tzid = tzid } Object.defineProperty(DateWithZone.prototype, "isUTC", { get: function() { return !this.tzid || "UTC" === this.tzid.toUpperCase() }, enumerable: false, configurable: true }); DateWithZone.prototype.toString = function() { var datestr = timeToUntilString(this.date.getTime(), this.isUTC); if (!this.isUTC) { return ";TZID=".concat(this.tzid, ":").concat(datestr) } return ":".concat(datestr) }; DateWithZone.prototype.getTime = function() { return this.date.getTime() }; DateWithZone.prototype.rezonedDate = function() { if (this.isUTC) { return this.date } return function(date, timeZone) { var localTimeZone = Intl.DateTimeFormat().resolvedOptions().timeZone; var dateInLocalTZ = new Date(dateTZtoISO8601(date, localTimeZone)); var dateInTargetTZ = new Date(dateTZtoISO8601(date, null !== timeZone && void 0 !== timeZone ? timeZone : "UTC")); var tzOffset = dateInTargetTZ.getTime() - dateInLocalTZ.getTime(); return new Date(date.getTime() - tzOffset) }(this.date, this.tzid) }; return DateWithZone }(); function optionsToString(options) { var rrule = []; var dtstart = ""; var keys = Object.keys(options); var defaultKeys = Object.keys(DEFAULT_OPTIONS); for (var i = 0; i < keys.length; i++) { if ("tzid" === keys[i]) { continue } if (!includes(defaultKeys, keys[i])) { continue } var key = keys[i].toUpperCase(); var value = options[keys[i]]; var outValue = ""; if (!isPresent(value) || isArray(value) && !value.length) { continue } switch (key) { case "FREQ": outValue = RRule.FREQUENCIES[options.freq]; break; case "WKST": if (isNumber(value)) { outValue = new Weekday(value).toString() } else { outValue = value.toString() } break; case "BYWEEKDAY": key = "BYDAY"; outValue = toArray(value).map((function(wday) { if (wday instanceof Weekday) { return wday } if (isArray(wday)) { return new Weekday(wday[0], wday[1]) } return new Weekday(wday) })).toString(); break; case "DTSTART": dtstart = buildDtstart(value, options.tzid); break; case "UNTIL": outValue = timeToUntilString(value, !options.tzid); break; default: if (isArray(value)) { var strValues = []; for (var j = 0; j < value.length; j++) { strValues[j] = String(value[j]) } outValue = strValues.toString() } else { outValue = String(value) } } if (outValue) { rrule.push([key, outValue]) } } var rules = rrule.map((function(_a) { var key = _a[0], value = _a[1]; return "".concat(key, "=").concat(value.toString()) })).join(";"); var ruleString = ""; if ("" !== rules) { ruleString = "RRULE:".concat(rules) } return [dtstart, ruleString].filter((function(x) { return !!x })).join("\n") } function buildDtstart(dtstart, tzid) { if (!dtstart) { return "" } return "DTSTART" + new DateWithZone(new Date(dtstart), tzid).toString() } function argsMatch(left, right) { if (Array.isArray(left)) { if (!Array.isArray(right)) { return false } if (left.length !== right.length) { return false } return left.every((function(date, i) { return date.getTime() === right[i].getTime() })) } if (left instanceof Date) { return right instanceof Date && left.getTime() === right.getTime() } return left === right } var Cache = function() { function Cache() { this.all = false; this.before = []; this.after = []; this.between = [] } Cache.prototype._cacheAdd = function(what, value, args) { if (value) { value = value instanceof Date ? dateutil_clone(value) : cloneDates(value) } if ("all" === what) { this.all = value } else { args._value = value; this[what].push(args) } }; Cache.prototype._cacheGet = function(what, args) { var cached = false; var argsKeys = args ? Object.keys(args) : []; var findCacheDiff = function(item) { for (var i = 0; i < argsKeys.length; i++) { var key = argsKeys[i]; if (!argsMatch(args[key], item[key])) { return true } } return false }; var cachedObject = this[what]; if ("all" === what) { cached = this.all } else if (isArray(cachedObject)) { for (var i = 0; i < cachedObject.length; i++) { var item = cachedObject[i]; if (argsKeys.length && findCacheDiff(item)) { continue } cached = item._value; break } } if (!cached && this.all) { var iterResult = new iterresult(what, args); for (i = 0; i < this.all.length; i++) { if (!iterResult.accept(this.all[i])) { break } } cached = iterResult.getValue(); this._cacheAdd(what, cached, args) } return isArray(cached) ? cloneDates(cached) : cached instanceof Date ? dateutil_clone(cached) : cached }; return Cache }(); var M365MASK = __spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray([], repeat(1, 31), true), repeat(2, 28), true), repeat(3, 31), true), repeat(4, 30), true), repeat(5, 31), true), repeat(6, 30), true), repeat(7, 31), true), repeat(8, 31), true), repeat(9, 30), true), repeat(10, 31), true), repeat(11, 30), true), repeat(12, 31), true), repeat(1, 7), true); var M366MASK = __spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray([], repeat(1, 31), true), repeat(2, 29), true), repeat(3, 31), true), repeat(4, 30), true), repeat(5, 31), true), repeat(6, 30), true), repeat(7, 31), true), repeat(8, 31), true), repeat(9, 30), true), repeat(10, 31), true), repeat(11, 30), true), repeat(12, 31), true), repeat(1, 7), true); var M28 = range(1, 29); var M29 = range(1, 30); var M30 = range(1, 31); var M31 = range(1, 32); var MDAY366MASK = __spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray([], M31, true), M29, true), M31, true), M30, true), M31, true), M30, true), M31, true), M31, true), M30, true), M31, true), M30, true), M31, true), M31.slice(0, 7), true); var MDAY365MASK = __spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray([], M31, true), M28, true), M31, true), M30, true), M31, true), M30, true), M31, true), M31, true), M30, true), M31, true), M30, true), M31, true), M31.slice(0, 7), true); var NM28 = range(-28, 0); var NM29 = range(-29, 0); var NM30 = range(-30, 0); var NM31 = range(-31, 0); var NMDAY366MASK = __spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray([], NM31, true), NM29, true), NM31, true), NM30, true), NM31, true), NM30, true), NM31, true), NM31, true), NM30, true), NM31, true), NM30, true), NM31, true), NM31.slice(0, 7), true); var NMDAY365MASK = __spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray([], NM31, true), NM28, true), NM31, true), NM30, true), NM31, true), NM30, true), NM31, true), NM31, true), NM30, true), NM31, true), NM30, true), NM31, true), NM31.slice(0, 7), true); var M366RANGE = [0, 31, 60, 91, 121, 152, 182, 213, 244, 274, 305, 335, 366]; var M365RANGE = [0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334, 365]; var WDAYMASK = function() { var wdaymask = []; for (var i = 0; i < 55; i++) { wdaymask = wdaymask.concat(range(7)) } return wdaymask }(); function rebuildYear(year, options) { var firstyday = datetime(year, 1, 1); var yearlen = isLeapYear(year) ? 366 : 365; var nextyearlen = isLeapYear(year + 1) ? 366 : 365; var yearordinal = toOrdinal(firstyday); var yearweekday = getWeekday(firstyday); var result = __assign(__assign({ yearlen: yearlen, nextyearlen: nextyearlen, yearordinal: yearordinal, yearweekday: yearweekday }, function(year) { var yearlen = isLeapYear(year) ? 366 : 365; var firstyday = datetime(year, 1, 1); var wday = getWeekday(firstyday); if (365 === yearlen) { return { mmask: M365MASK, mdaymask: MDAY365MASK, nmdaymask: NMDAY365MASK, wdaymask: WDAYMASK.slice(wday), mrange: M365RANGE } } return { mmask: M366MASK, mdaymask: MDAY366MASK, nmdaymask: NMDAY366MASK, wdaymask: WDAYMASK.slice(wday), mrange: M366RANGE } }(year)), { wnomask: null }); if (empty(options.byweekno)) { return result } result.wnomask = repeat(0, yearlen + 7); var firstwkst; var wyearlen; var no1wkst = firstwkst = pymod(7 - yearweekday + options.wkst, 7); if (no1wkst >= 4) { no1wkst = 0; wyearlen = result.yearlen + pymod(yearweekday - options.wkst, 7) } else { wyearlen = yearlen - no1wkst } var div = Math.floor(wyearlen / 7); var mod = pymod(wyearlen, 7); var numweeks = Math.floor(div + mod / 4); for (var j = 0; j < options.byweekno.length; j++) { var n = options.byweekno[j]; if (n < 0) { n += numweeks + 1 } if (!(n > 0 && n <= numweeks)) { continue } var i = void 0; if (n > 1) { i = no1wkst + 7 * (n - 1); if (no1wkst !== firstwkst) { i -= 7 - firstwkst } } else { i = no1wkst } for (var k = 0; k < 7; k++) { result.wnomask[i] = 1; i++; if (result.wdaymask[i] === options.wkst) { break } } } if (includes(options.byweekno, 1)) { i = no1wkst + 7 * numweeks; if (no1wkst !== firstwkst) { i -= 7 - firstwkst } if (i < yearlen) { for (j = 0; j < 7; j++) { result.wnomask[i] = 1; i += 1; if (result.wdaymask[i] === options.wkst) { break } } } } if (no1wkst) { var lnumweeks = void 0; if (!includes(options.byweekno, -1)) { var lyearweekday = getWeekday(datetime(year - 1, 1, 1)); var lno1wkst = pymod(7 - lyearweekday.valueOf() + options.wkst, 7); var lyearlen = isLeapYear(year - 1) ? 366 : 365; var weekst = void 0; if (lno1wkst >= 4) { lno1wkst = 0; weekst = lyearlen + pymod(lyearweekday - options.wkst, 7) } else { weekst = yearlen - no1wkst } lnumweeks = Math.floor(52 + pymod(weekst, 7) / 4) } else { lnumweeks = -1 } if (includes(options.byweekno, lnumweeks)) { for (i = 0; i < no1wkst; i++) { result.wnomask[i] = 1 } } } return result } var Iterinfo = function() { function Iterinfo(options) { this.options = options } Iterinfo.prototype.rebuild = function(year, month) { var options = this.options; if (year !== this.lastyear) { this.yearinfo = rebuildYear(year, options) } if (notEmpty(options.bynweekday) && (month !== this.lastmonth || year !== this.lastyear)) { var _a = this.yearinfo, yearlen = _a.yearlen, mrange = _a.mrange, wdaymask = _a.wdaymask; this.monthinfo = function(year, month, yearlen, mrange, wdaymask, options) { var result = { lastyear: year, lastmonth: month, nwdaymask: [] }; var ranges = []; if (options.freq === RRule.YEARLY) { if (empty(options.bymonth)) { ranges = [ [0, yearlen] ] } else { for (var j = 0; j < options.bymonth.length; j++) { month = options.bymonth[j]; ranges.push(mrange.slice(month - 1, month + 1)) } } } else if (options.freq === RRule.MONTHLY) { ranges = [mrange.slice(month - 1, month + 1)] } if (empty(ranges)) { return result } result.nwdaymask = repeat(0, yearlen); for (j = 0; j < ranges.length; j++) { var rang = ranges[j]; var first = rang[0]; var last = rang[1] - 1; for (var k = 0; k < options.bynweekday.length; k++) { var i = void 0; var _a = options.bynweekday[k], wday = _a[0], n = _a[1]; if (n < 0) { i = last + 7 * (n + 1); i -= pymod(wdaymask[i] - wday, 7) } else { i = first + 7 * (n - 1); i += pymod(7 - wdaymask[i] + wday, 7) } if (first <= i && i <= last) { result.nwdaymask[i] = 1 } } } return result }(year, month, yearlen, mrange, wdaymask, options) } if (isPresent(options.byeaster)) { this.eastermask = function(y, offset) { if (void 0 === offset) { offset = 0 } var a = y % 19; var b = Math.floor(y / 100); var c = y % 100; var d = Math.floor(b / 4); var e = b % 4; var f = Math.floor((b + 8) / 25); var g = Math.floor((b - f + 1) / 3); var h = Math.floor(19 * a + b - d - g + 15) % 30; var i = Math.floor(c / 4); var k = c % 4; var l = Math.floor(32 + 2 * e + 2 * i - h - k) % 7; var m = Math.floor((a + 11 * h + 22 * l) / 451); var month = Math.floor((h + l - 7 * m + 114) / 31); var day = (h + l - 7 * m + 114) % 31 + 1; var date = Date.UTC(y, month - 1, day + offset); var yearStart = Date.UTC(y, 0, 1); return [Math.ceil((date - yearStart) / 864e5)] }(year, options.byeaster) } }; Object.defineProperty(Iterinfo.prototype, "lastyear", { get: function() { return this.monthinfo ? this.monthinfo.lastyear : null }, enumerable: false, configurable: true }); Object.defineProperty(Iterinfo.prototype, "lastmonth", { get: function() { return this.monthinfo ? this.monthinfo.lastmonth : null }, enumerable: false, configurable: true }); Object.defineProperty(Iterinfo.prototype, "yearlen", { get: function() { return this.yearinfo.yearlen }, enumerable: false, configurable: true }); Object.defineProperty(Iterinfo.prototype, "yearordinal", { get: function() { return this.yearinfo.yearordinal }, enumerable: false, configurable: true }); Object.defineProperty(Iterinfo.prototype, "mrange", { get: function() { return this.yearinfo.mrange }, enumerable: false, configurable: true }); Object.defineProperty(Iterinfo.prototype, "wdaymask", { get: function() { return this.yearinfo.wdaymask }, enumerable: false, configurable: true }); Object.defineProperty(Iterinfo.prototype, "mmask", { get: function() { return this.yearinfo.mmask }, enumerable: false, configurable: true }); Object.defineProperty(Iterinfo.prototype, "wnomask", { get: function() { return this.yearinfo.wnomask }, enumerable: false, configurable: true }); Object.defineProperty(Iterinfo.prototype, "nwdaymask", { get: function() { return this.monthinfo ? this.monthinfo.nwdaymask : [] }, enumerable: false, configurable: true }); Object.defineProperty(Iterinfo.prototype, "nextyearlen", { get: function() { return this.yearinfo.nextyearlen }, enumerable: false, configurable: true }); Object.defineProperty(Iterinfo.prototype, "mdaymask", { get: function() { return this.yearinfo.mdaymask }, enumerable: false, configurable: true }); Object.defineProperty(Iterinfo.prototype, "nmdaymask", { get: function() { return this.yearinfo.nmdaymask }, enumerable: false, configurable: true }); Iterinfo.prototype.ydayset = function() { return [range(this.yearlen), 0, this.yearlen] }; Iterinfo.prototype.mdayset = function(_, month) { var start = this.mrange[month - 1]; var end = this.mrange[month]; var set = repeat(null, this.yearlen); for (var i = start; i < end; i++) { set[i] = i } return [set, start, end] }; Iterinfo.prototype.wdayset = function(year, month, day) { var set = repeat(null, this.yearlen + 7); var i = toOrdinal(datetime(year, month, day)) - this.yearordinal; var start = i; for (var j = 0; j < 7; j++) { set[i] = i; ++i; if (this.wdaymask[i] === this.options.wkst) { break } } return [set, start, i] }; Iterinfo.prototype.ddayset = function(year, month, day) { var set = repeat(null, this.yearlen); var i = toOrdinal(datetime(year, month, day)) - this.yearordinal; set[i] = i; return [set, i, i + 1] }; Iterinfo.prototype.htimeset = function(hour, _, second, millisecond) { var _this = this; var set = []; this.options.byminute.forEach((function(minute) { set = set.concat(_this.mtimeset(hour, minute, second, millisecond)) })); sort(set); return set }; Iterinfo.prototype.mtimeset = function(hour, minute, _, millisecond) { var set = this.options.bysecond.map((function(second) { return new Time(hour, minute, second, millisecond) })); sort(set); return set }; Iterinfo.prototype.stimeset = function(hour, minute, second, millisecond) { return [new Time(hour, minute, second, millisecond)] }; Iterinfo.prototype.getdayset = function(freq) { switch (freq) { case Frequency.YEARLY: return this.ydayset.bind(this); case Frequency.MONTHLY: return this.mdayset.bind(this); case Frequency.WEEKLY: return this.wdayset.bind(this); case Frequency.DAILY: default: return this.ddayset.bind(this) } }; Iterinfo.prototype.gettimeset = function(freq) { switch (freq) { case Frequency.HOURLY: return this.htimeset.bind(this); case Frequency.MINUTELY: return this.mtimeset.bind(this); case Frequency.SECONDLY: return this.stimeset.bind(this) } }; return Iterinfo }(); var iterinfo = Iterinfo; function buildPoslist(bysetpos, timeset, start, end, ii, dayset) { var poslist = []; for (var j = 0; j < bysetpos.length; j++) { var daypos = void 0; var timepos = void 0; var pos = bysetpos[j]; if (pos < 0) { daypos = Math.floor(pos / timeset.length); timepos = pymod(pos, timeset.length) } else { daypos = Math.floor((pos - 1) / timeset.length); timepos = pymod(pos - 1, timeset.length) } var tmp = []; for (var k = start; k < end; k++) { var val = dayset[k]; if (!isPresent(val)) { continue } tmp.push(val) } var i = void 0; if (daypos < 0) { i = tmp.slice(daypos)[0] } else { i = tmp[daypos] } var time = timeset[timepos]; var date = fromOrdinal(ii.yearordinal + i); var res = combine(date, time); if (!includes(poslist, res)) { poslist.push(res) } } sort(poslist); return poslist } function iter(iterResult, options) { var dtstart = options.dtstart, freq = options.freq, interval = options.interval, until = options.until, bysetpos = options.bysetpos; var count = options.count; if (0 === count || 0 === interval) { return emitResult(iterResult) } var counterDate = DateTime.fromDate(dtstart); var ii = new iterinfo(options); ii.rebuild(counterDate.year, counterDate.month); var timeset = function(ii, counterDate, options) { var freq = options.freq, byhour = options.byhour, byminute = options.byminute, bysecond = options.bysecond; if (freqIsDailyOrGreater(freq)) { return function(opts) { var millisecondModulo = opts.dtstart.getTime() % 1e3; if (!freqIsDailyOrGreater(opts.freq)) { return [] } var timeset = []; opts.byhour.forEach((function(hour) { opts.byminute.forEach((function(minute) { opts.bysecond.forEach((function(second) { timeset.push(new Time(hour, minute, second, millisecondModulo)) })) })) })); return timeset }(options) } if (freq >= RRule.HOURLY && notEmpty(byhour) && !includes(byhour, counterDate.hour) || freq >= RRule.MINUTELY && notEmpty(byminute) && !includes(byminute, counterDate.minute) || freq >= RRule.SECONDLY && notEmpty(bysecond) && !includes(bysecond, counterDate.second)) { return [] } return ii.gettimeset(freq)(counterDate.hour, counterDate.minute, counterDate.second, counterDate.millisecond) }(ii, counterDate, options); for (;;) { var _a = ii.getdayset(freq)(counterDate.year, counterDate.month, counterDate.day), dayset = _a[0], start = _a[1], end = _a[2]; var filtered = removeFilteredDays(dayset, start, end, ii, options); if (notEmpty(bysetpos)) { var poslist = buildPoslist(bysetpos, timeset, start, end, ii, dayset); for (var j = 0; j < poslist.length; j++) { var res = poslist[j]; if (until && res > until) { return emitResult(iterResult) } if (res >= dtstart) { var rezonedDate = rezoneIfNeeded(res, options); if (!iterResult.accept(rezonedDate)) { return emitResult(iterResult) } if (count) { --count; if (!count) { return emitResult(iterResult) } } } } } else { for (j = start; j < end; j++) { var currentDay = dayset[j]; if (!isPresent(currentDay)) { continue } var date = fromOrdinal(ii.yearordinal + currentDay); for (var k = 0; k < timeset.length; k++) { var time = timeset[k]; res = combine(date, time); if (until && res > until) { return emitResult(iterResult) } if (res >= dtstart) { rezonedDate = rezoneIfNeeded(res, options); if (!iterResult.accept(rezonedDate)) { return emitResult(iterResult) } if (count) { --count; if (!count) { return emitResult(iterResult) } } } } } } if (0 === options.interval) { return emitResult(iterResult) } counterDate.add(options, filtered); if (counterDate.year > 9999) { return emitResult(iterResult) } if (!freqIsDailyOrGreater(freq)) { timeset = ii.gettimeset(freq)(counterDate.hour, counterDate.minute, counterDate.second, 0) } ii.rebuild(counterDate.year, counterDate.month) } } function isFiltered(ii, currentDay, options) { var bymonth = options.bymonth, byweekno = options.byweekno, byweekday = options.byweekday, byeaster = options.byeaster, bymonthday = options.bymonthday, bynmonthday = options.bynmonthday, byyearday = options.byyearday; return notEmpty(bymonth) && !includes(bymonth, ii.mmask[currentDay]) || notEmpty(byweekno) && !ii.wnomask[currentDay] || notEmpty(byweekday) && !includes(byweekday, ii.wdaymask[currentDay]) || notEmpty(ii.nwdaymask) && !ii.nwdaymask[currentDay] || null !== byeaster && !includes(ii.eastermask, currentDay) || (notEmpty(bymonthday) || notEmpty(bynmonthday)) && !includes(bymonthday, ii.mdaymask[currentDay]) && !includes(bynmonthday, ii.nmdaymask[currentDay]) || notEmpty(byyearday) && (currentDay < ii.yearlen && !includes(byyearday, currentDay + 1) && !includes(byyearday, -ii.yearlen + currentDay) || currentDay >= ii.yearlen && !includes(byyearday, currentDay + 1 - ii.yearlen) && !includes(byyearday, -ii.nextyearlen + currentDay - ii.yearlen)) } function rezoneIfNeeded(date, options) { return new DateWithZone(date, options.tzid).rezonedDate() } function emitResult(iterResult) { return iterResult.getValue() } function removeFilteredDays(dayset, start, end, ii, options) { var filtered = false; for (var dayCounter = start; dayCounter < end; dayCounter++) { var currentDay = dayset[dayCounter]; filtered = isFiltered(ii, currentDay, options); if (filtered) { dayset[currentDay] = null } } return filtered } var Days = { MO: new Weekday(0), TU: new Weekday(1), WE: new Weekday(2), TH: new Weekday(3), FR: new Weekday(4), SA: new Weekday(5), SU: new Weekday(6) }; var DEFAULT_OPTIONS = { freq: Frequency.YEARLY, dtstart: null, interval: 1, wkst: Days.MO, count: null, until: null, tzid: null, bysetpos: null, bymonth: null, bymonthday: null, bynmonthday: null, byyearday: null, byweekno: null, byweekday: null, bynweekday: null, byhour: null, byminute: null, bysecond: null, byeaster: null }; var defaultKeys = Object.keys(DEFAULT_OPTIONS); var RRule = function() { function RRule(options, noCache) { if (void 0 === options) { options = {} } if (void 0 === noCache) { noCache = false } this._cache = noCache ? null : new Cache; this.origOptions = initializeOptions(options); var parsedOptions = parseOptions(options).parsedOptions; this.options = parsedOptions } RRule.parseText = function(text, language) { return parseText(text, language) }; RRule.fromText = function(text, language) { return fromText(text, language) }; RRule.fromString = function(str) { return new RRule(RRule.parseString(str) || void 0) }; RRule.prototype._iter = function(iterResult) { return iter(iterResult, this.options) }; RRule.prototype._cacheGet = function(what, args) { if (!this._cache) { return false } return this._cache._cacheGet(what, args) }; RRule.prototype._cacheAdd = function(what, value, args) { if (!this._cache) { return } return this._cache._cacheAdd(what, value, args) }; RRule.prototype.all = function(iterator) { if (iterator) { return this._iter(new callbackiterresult("all", {}, iterator)) } var result = this._cacheGet("all"); if (false === result) { result = this._iter(new iterresult("all", {})); this._cacheAdd("all", result) } return result }; RRule.prototype.between = function(after, before, inc, iterator) { if (void 0 === inc) { inc = false } if (!isValidDate(after) || !isValidDate(before)) { throw new Error("Invalid date passed in to RRule.between") } var args = { before: before, after: after, inc: inc }; if (iterator) { return this._iter(new callbackiterresult("between", args, iterator)) } var result = this._cacheGet("between", args); if (false === result) { result = this._iter(new iterresult("between", args)); this._cacheAdd("between", result, args) } return result }; RRule.prototype.before = function(dt, inc) { if (void 0 === inc) { inc = false } if (!isValidDate(dt)) { throw new Error("Invalid date passed in to RRule.before") } var args = { dt: dt, inc: inc }; var result = this._cacheGet("before", args); if (false === result) { result = this._iter(new iterresult("before", args)); this._cacheAdd("before", result, args) } return result }; RRule.prototype.after = function(dt, inc) { if (void 0 === inc) { inc = false } if (!isValidDate(dt)) { throw new Error("Invalid date passed in to RRule.after") } var args = { dt: dt, inc: inc }; var result = this._cacheGet("after", args); if (false === result) { result = this._iter(new iterresult("after", args)); this._cacheAdd("after", result, args) } return result }; RRule.prototype.count = function() { return this.all().length }; RRule.prototype.toString = function() { return optionsToString(this.origOptions) }; RRule.prototype.toText = function(gettext, language, dateFormatter) { return function(rrule, gettext, language, dateFormatter) { return new totext(rrule, gettext, language, dateFormatter).toString() }(this, gettext, language, dateFormatter) }; RRule.prototype.isFullyConvertibleToText = function() { return isFullyConvertible(this) }; RRule.prototype.clone = function() { return new RRule(this.origOptions) }; RRule.FREQUENCIES = ["YEARLY", "MONTHLY", "WEEKLY", "DAILY", "HOURLY", "MINUTELY", "SECONDLY"]; RRule.YEARLY = Frequency.YEARLY; RRule.MONTHLY = Frequency.MONTHLY; RRule.WEEKLY = Frequency.WEEKLY; RRule.DAILY = Frequency.DAILY; RRule.HOURLY = Frequency.HOURLY; RRule.MINUTELY = Frequency.MINUTELY; RRule.SECONDLY = Frequency.SECONDLY; RRule.MO = Days.MO; RRule.TU = Days.TU; RRule.WE = Days.WE; RRule.TH = Days.TH; RRule.FR = Days.FR; RRule.SA = Days.SA; RRule.SU = Days.SU; RRule.parseString = parseString; RRule.optionsToString = optionsToString; return RRule }(); var rrulestr_DEFAULT_OPTIONS = { dtstart: null, cache: false, unfold: false, forceset: false, compatible: false, tzid: null }; function parseInput(s, options) { var rrulevals = []; var rdatevals = []; var exrulevals = []; var exdatevals = []; var parsedDtstart = parseDtstart(s); var dtstart = parsedDtstart.dtstart; var tzid = parsedDtstart.tzid; var lines = function(s, unfold) { if (void 0 === unfold) { unfold = false } s = s && s.trim(); if (!s) { throw new Error("Invalid empty string") } if (!unfold) { return s.split(/\s/) } var lines = s.split("\n"); var i = 0; while (i < lines.length) { var line = lines[i] = lines[i].replace(/\s+$/g, ""); if (!line) { lines.splice(i, 1) } else if (i > 0 && " " === line[0]) { lines[i - 1] += line.slice(1); lines.splice(i, 1) } else { i += 1 } } return lines }(s, options.unfold); lines.forEach((function(line) { var _a; if (!line) { return } var _b = function(line) { var _a = function(line) { if (-1 === line.indexOf(":")) { return { name: "RRULE", value: line } } var _a = split(line, ":", 1), name = _a[0], value = _a[1]; return { name: name, value: value } }(line), name = _a.name, value = _a.value; var parms = name.split(";"); if (!parms) { throw new Error("empty property name") } return { name: parms[0].toUpperCase(), parms: parms.slice(1), value: value } }(line), name = _b.name, parms = _b.parms, value = _b.value; switch (name.toUpperCase()) { case "RRULE": if (parms.length) { throw new Error("unsupported RRULE parm: ".concat(parms.join(","))) } rrulevals.push(parseString(line)); break; case "RDATE": var _c = null !== (_a = /RDATE(?:;TZID=([^:=]+))?/i.exec(line)) && void 0 !== _a ? _a : [], rdateTzid = _c[1]; if (rdateTzid && !tzid) { tzid = rdateTzid } rdatevals = rdatevals.concat(parseRDate(value, parms)); break; case "EXRULE": if (parms.length) { throw new Error("unsupported EXRULE parm: ".concat(parms.join(","))) } exrulevals.push(parseString(value)); break; case "EXDATE": exdatevals = exdatevals.concat(parseRDate(value, parms)); break; case "DTSTART": break; default: throw new Error("unsupported property: " + name) } })); return { dtstart: dtstart, tzid: tzid, rrulevals: rrulevals, rdatevals: rdatevals, exrulevals: exrulevals, exdatevals: exdatevals } } function rrulestr(s, options) { if (void 0 === options) { options = {} } return function(s, options) { var _a = parseInput(s, options), rrulevals = _a.rrulevals, rdatevals = _a.rdatevals, exrulevals = _a.exrulevals, exdatevals = _a.exdatevals, dtstart = _a.dtstart, tzid = _a.tzid; var noCache = false === options.cache; if (options.compatible) { options.forceset = true; options.unfold = true } if (options.forceset || rrulevals.length > 1 || rdatevals.length || exrulevals.length || exdatevals.length) { var rset_1 = new RRuleSet(noCache); rset_1.dtstart(dtstart); rset_1.tzid(tzid || void 0); rrulevals.forEach((function(val) { rset_1.rrule(new RRule(groomRruleOptions(val, dtstart, tzid), noCache)) })); rdatevals.forEach((function(date) { rset_1.rdate(date) })); exrulevals.forEach((function(val) { rset_1.exrule(new RRule(groomRruleOptions(val, dtstart, tzid), noCache)) })); exdatevals.forEach((function(date) { rset_1.exdate(date) })); if (options.compatible && options.dtstart) { rset_1.rdate(dtstart) } return rset_1 } var val = rrulevals[0] || {}; return new RRule(groomRruleOptions(val, val.dtstart || options.dtstart || dtstart, val.tzid || options.tzid || tzid), noCache) }(s, function(options) { var invalid = []; var keys = Object.keys(options); var defaultKeys = Object.keys(rrulestr_DEFAULT_OPTIONS); keys.forEach((function(key) { if (!includes(defaultKeys, key)) { invalid.push(key) } })); if (invalid.length) { throw new Error("Invalid options: " + invalid.join(", ")) } return __assign(__assign({}, rrulestr_DEFAULT_OPTIONS), options) }(options)) } function groomRruleOptions(val, dtstart, tzid) { return __assign(__assign({}, val), { dtstart: dtstart, tzid: tzid }) } function parseRDate(rdateval, parms) { ! function(parms) { parms.forEach((function(parm) { if (!/(VALUE=DATE(-TIME)?)|(TZID=)/.test(parm)) { throw new Error("unsupported RDATE/EXDATE parm: " + parm) } })) }(parms); return rdateval.split(",").map((function(datestr) { return untilStringToDate(datestr) })) } function createGetterSetter(fieldName) { var _this = this; return function(field) { if (void 0 !== field) { _this["_".concat(fieldName)] = field } if (void 0 !== _this["_".concat(fieldName)]) { return _this["_".concat(fieldName)] } for (var i = 0; i < _this._rrule.length; i++) { var field_1 = _this._rrule[i].origOptions[fieldName]; if (field_1) { return field_1 } } } } var RRuleSet = function(_super) { __extends(RRuleSet, _super); function RRuleSet(noCache) { if (void 0 === noCache) { noCache = false } var _this = _super.call(this, {}, noCache) || this; _this.dtstart = createGetterSetter.apply(_this, ["dtstart"]); _this.tzid = createGetterSetter.apply(_this, ["tzid"]); _this._rrule = []; _this._rdate = []; _this._exrule = []; _this._exdate = []; return _this } RRuleSet.prototype._iter = function(iterResult) { return function(iterResult, _rrule, _exrule, _rdate, _exdate, tzid) { var _exdateHash = {}; var _accept = iterResult.accept; function evalExdate(after, before) { _exrule.forEach((function(rrule) { rrule.between(after, before, true).forEach((function(date) { _exdateHash[Number(date)] = true })) })) } _exdate.forEach((function(date) { var zonedDate = new DateWithZone(date, tzid).rezonedDate(); _exdateHash[Number(zonedDate)] = true })); iterResult.accept = function(date) { var dt = Number(date); if (isNaN(dt)) { return _accept.call(this, date) } if (!_exdateHash[dt]) { evalExdate(new Date(dt - 1), new Date(dt + 1)); if (!_exdateHash[dt]) { _exdateHash[dt] = true; return _accept.call(this, date) } } return true }; if ("between" === iterResult.method) { evalExdate(iterResult.args.after, iterResult.args.before); iterResult.accept = function(date) { var dt = Number(date); if (!_exdateHash[dt]) { _exdateHash[dt] = true; return _accept.call(this, date) } return true } } for (var i = 0; i < _rdate.length; i++) { var zonedDate = new DateWithZone(_rdate[i], tzid).rezonedDate(); if (!iterResult.accept(new Date(zonedDate.getTime()))) { break } } _rrule.forEach((function(rrule) { iter(iterResult, rrule.options) })); var res = iterResult._result; sort(res); switch (iterResult.method) { case "all": case "between": return res; case "before": return res.length && res[res.length - 1] || null; default: return res.length && res[0] || null } }(iterResult, this._rrule, this._exrule, this._rdate, this._exdate, this.tzid()) }; RRuleSet.prototype.rrule = function(rrule) { _addRule(rrule, this._rrule) }; RRuleSet.prototype.exrule = function(rrule) { _addRule(rrule, this._exrule) }; RRuleSet.prototype.rdate = function(date) { _addDate(date, this._rdate) }; RRuleSet.prototype.exdate = function(date) { _addDate(date, this._exdate) }; RRuleSet.prototype.rrules = function() { return this._rrule.map((function(e) { return rrulestr(e.toString()) })) }; RRuleSet.prototype.exrules = function() { return this._exrule.map((function(e) { return rrulestr(e.toString()) })) }; RRuleSet.prototype.rdates = function() { return this._rdate.map((function(e) { return new Date(e.getTime()) })) }; RRuleSet.prototype.exdates = function() { return this._exdate.map((function(e) { return new Date(e.getTime()) })) }; RRuleSet.prototype.valueOf = function() { var result = []; if (!this._rrule.length && this._dtstart) { result = result.concat(optionsToString({ dtstart: this._dtstart })) } this._rrule.forEach((function(rrule) { result = result.concat(rrule.toString().split("\n")) })); this._exrule.forEach((function(exrule) { result = result.concat(exrule.toString().split("\n").map((function(line) { return line.replace(/^RRULE:/, "EXRULE:") })).filter((function(line) { return !/^DTSTART/.test(line) }))) })); if (this._rdate.length) { result.push(rdatesToString("RDATE", this._rdate, this.tzid())) } if (this._exdate.length) { result.push(rdatesToString("EXDATE", this._exdate, this.tzid())) } return result }; RRuleSet.prototype.toString = function() { return this.valueOf().join("\n") }; RRuleSet.prototype.clone = function() { var rrs = new RRuleSet(!!this._cache); this._rrule.forEach((function(rule) { return rrs.rrule(rule.clone()) })); this._exrule.forEach((function(rule) { return rrs.exrule(rule.clone()) })); this._rdate.forEach((function(date) { return rrs.rdate(new Date(date.getTime())) })); this._exdate.forEach((function(date) { return rrs.exdate(new Date(date.getTime())) })); return rrs }; return RRuleSet }(RRule); function _addRule(rrule, collection) { if (!(rrule instanceof RRule)) { throw new TypeError(String(rrule) + " is not RRule instance") } if (!includes(collection.map(String), String(rrule))) { collection.push(rrule) } } function _addDate(date, collection) { if (!(date instanceof Date)) { throw new TypeError(String(date) + " is not Date instance") } if (!includes(collection.map(Number), Number(date))) { collection.push(date); sort(collection) } } function rdatesToString(param, rdates, tzid) { var isUTC = !tzid || "UTC" === tzid.toUpperCase(); var header = isUTC ? "".concat(param, ":") : "".concat(param, ";TZID=").concat(tzid, ":"); var dateString = rdates.map((function(rdate) { return timeToUntilString(rdate.valueOf(), isUTC) })).join(","); return "".concat(header).concat(dateString) } }, 55351: /*!***************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/common/m_charts.js ***! \***************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.registerPattern = exports.registerGradient = exports.default = void 0; var _utils = __webpack_require__( /*! ../../viz/core/utils */ 28779); function _extends() { return _extends = Object.assign ? Object.assign.bind() : function(n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) { ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]) } } return n }, _extends.apply(null, arguments) } const graphicObjects = {}; exports.registerPattern = options => { const id = (0, _utils.getNextDefsSvgId)(); graphicObjects[id] = _extends({ type: "pattern" }, options); return id }; exports.registerGradient = (type, options) => { const id = (0, _utils.getNextDefsSvgId)(); graphicObjects[id] = _extends({ type: type }, options); return id }; exports.default = { getGraphicObjects: () => graphicObjects } }, 87752: /*!*************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/core/di/index.js ***! \*************************************************************************/ function(__unused_webpack_module, exports) { Object.defineProperty(exports, "__esModule", { value: true }); exports.DIContext = void 0; exports.DIContext = class { constructor() { this.instances = new Map; this.fabrics = new Map; this.aliases = new Map; this.antiRecursionSet = new Set } register(id, fabric) { fabric ?? (fabric = id); this.fabrics.set(id, fabric) } registerInstance(id, instance) { this.instances.set(id, instance) } get(id) { const instance = this.tryGet(id); if (instance) { return instance } throw new Error(`DI item is not registered: ${id}`) } tryGet(id) { id = this.resolveAlias(id); if (this.instances.get(id)) { return this.instances.get(id) } const fabric = this.fabrics.get(id); if (fabric) { const res = this.create(fabric); this.instances.set(id, res); this.instances.set(fabric, res); return res } return null } create(fabric) { if (this.antiRecursionSet.has(fabric)) { throw new Error("dependency cycle in DI") } this.antiRecursionSet.add(fabric); const args = fabric.dependencies.map((dependency => this.get(dependency))); this.antiRecursionSet.delete(fabric); return new fabric(...args) } addAlias(aliasId, id) { this.aliases.set(aliasId, id) } resolveAlias(aliasId) { let result = aliasId; while (this.aliases.has(result)) { result = this.aliases.get(result) } return result } } }, 22692: /*!***********************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/core/license/byte_utils.js ***! \***********************************************************************************/ function(__unused_webpack_module, exports) { Object.defineProperty(exports, "__esModule", { value: true }); exports.base64ToBytes = function(base64) { return new Uint8Array(atob(base64).split("").map((s => s.charCodeAt(0)))) }; exports.bytesToHex = function(bytes) { return [...bytes].map((b => b.toString(16).padStart(2, "0"))).join("") }; exports.bytesToWords = function(bytes) { const words = new Uint32Array(1 + (bytes.length - 1 >> 2)); for (let k = 0; k < bytes.length; k += 1) { words[k >> 2] |= bytes[k] << 8 * (3 - k % 4) } return words }; exports.concatBytes = function(a, b) { const result = new Uint8Array(a.length + b.length); result.set(a, 0); result.set(b, a.length); return result }; exports.hexToBytes = function(string) { var _string$match; return new Uint8Array((null === (_string$match = string.match(/.{1,2}/g)) || void 0 === _string$match ? void 0 : _string$match.map((byte => parseInt(byte, 16)))) ?? []) }; exports.leftRotate = function(x, n) { return (x << n | x >>> 32 - n) >>> 0 }; exports.stringToBytes = function(string) { const bytes = new Uint8Array(string.length); for (let k = 0; k < string.length; k += 1) { bytes[k] = 255 & string.charCodeAt(k) } return bytes }; exports.wordsToBytes = function(words) { const bytes = new Uint8Array(4 * words.length); for (let k = 0; k < bytes.length; k += 1) { bytes[k] = words[k >> 2] >>> 8 * (3 - k % 4) } return bytes }; exports.wordsToHex = function(words) { return [...words].map((w => w.toString(16).padStart(8, "0"))).join("") } }, 78157: /*!****************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/core/license/key.js ***! \****************************************************************************/ function(__unused_webpack_module, exports) { Object.defineProperty(exports, "__esModule", { value: true }); exports.PUBLIC_KEY = exports.INTERNAL_USAGE_ID = void 0; exports.PUBLIC_KEY = { e: 65537, n: new Uint8Array([200, 219, 153, 203, 140, 7, 228, 253, 193, 243, 62, 137, 139, 60, 68, 242, 48, 142, 113, 88, 185, 235, 253, 105, 80, 74, 32, 170, 96, 74, 111, 250, 7, 205, 154, 3, 146, 115, 153, 53, 45, 132, 123, 56, 61, 208, 184, 201, 63, 24, 109, 223, 0, 179, 169, 102, 139, 224, 73, 233, 45, 173, 138, 66, 98, 88, 69, 76, 177, 111, 113, 218, 192, 33, 101, 152, 25, 134, 34, 173, 32, 82, 230, 44, 247, 200, 253, 170, 192, 246, 30, 12, 96, 205, 100, 249, 181, 93, 0, 231]) }; exports.INTERNAL_USAGE_ID = "V2QpQmJVXWy6Nexkq9Xk9o" }, 93391: /*!*******************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/core/license/license_validation.js ***! \*******************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; exports.parseLicenseKey = parseLicenseKey; exports.peekValidationPerformed = function() { return validationPerformed }; exports.setLicenseCheckSkipCondition = function() {}; exports.validateLicense = validateLicense; var _config = _interopRequireDefault(__webpack_require__( /*! ../../../core/config */ 66636)); var _errors = _interopRequireDefault(__webpack_require__( /*! ../../../core/errors */ 87129)); var _version = __webpack_require__( /*! ../../../core/version */ 1956); var _version2 = __webpack_require__( /*! ../../utils/version */ 20258); var _byte_utils = __webpack_require__( /*! ./byte_utils */ 22692); var _key = __webpack_require__( /*! ./key */ 78157); var _pkcs = __webpack_require__( /*! ./pkcs1 */ 1012); var _rsa_bigint = __webpack_require__( /*! ./rsa_bigint */ 42752); var _sha = __webpack_require__( /*! ./sha1 */ 94281); var _trial_panel = __webpack_require__( /*! ./trial_panel */ 99671); var _types = __webpack_require__( /*! ./types */ 13407); const _excluded = ["customerId", "maxVersionAllowed", "format", "internalUsageId"]; function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } function _extends() { return _extends = Object.assign ? Object.assign.bind() : function(n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) { ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]) } } return n }, _extends.apply(null, arguments) } const FORMAT = 1; const RTM_MIN_PATCH_VERSION = 3; const KEY_SPLITTER = "."; const BUY_NOW_LINK = "https://go.devexpress.com/Licensing_Installer_Watermark_DevExtremeJQuery.aspx"; const LICENSING_DOC_LINK = "https://go.devexpress.com/Licensing_Documentation_DevExtremeJQuery.aspx"; const GENERAL_ERROR = { kind: _types.TokenKind.corrupted, error: "general" }; const VERIFICATION_ERROR = { kind: _types.TokenKind.corrupted, error: "verification" }; const DECODING_ERROR = { kind: _types.TokenKind.corrupted, error: "decoding" }; const DESERIALIZATION_ERROR = { kind: _types.TokenKind.corrupted, error: "deserialization" }; const PAYLOAD_ERROR = { kind: _types.TokenKind.corrupted, error: "payload" }; const VERSION_ERROR = { kind: _types.TokenKind.corrupted, error: "version" }; let validationPerformed = false; function parseLicenseKey(encodedKey) { if (void 0 === encodedKey) { return GENERAL_ERROR } const parts = encodedKey.split(KEY_SPLITTER); if (2 !== parts.length || 0 === parts[0].length || 0 === parts[1].length) { return GENERAL_ERROR } if (! function(_ref) { let { text: text, signature: encodedSignature } = _ref; return (0, _rsa_bigint.compareSignatures)({ key: _key.PUBLIC_KEY, signature: (0, _byte_utils.base64ToBytes)(encodedSignature), actual: (0, _pkcs.pad)((0, _sha.sha1)(text)) }) }({ text: parts[0], signature: parts[1] })) { return VERIFICATION_ERROR } let decodedPayload = ""; try { decodedPayload = atob(parts[0]) } catch { return DECODING_ERROR } let payload = {}; try { payload = JSON.parse(decodedPayload) } catch { return DESERIALIZATION_ERROR } const { customerId: customerId, maxVersionAllowed: maxVersionAllowed, format: format, internalUsageId: internalUsageId } = payload, rest = function(r, e) { if (null == r) { return {} } var t = {}; for (var n in r) { if ({}.hasOwnProperty.call(r, n)) { if (e.includes(n)) { continue } t[n] = r[n] } } return t }(payload, _excluded); if (void 0 !== internalUsageId) { return { kind: _types.TokenKind.internal, internalUsageId: internalUsageId } } if (void 0 === customerId || void 0 === maxVersionAllowed || void 0 === format) { return PAYLOAD_ERROR } if (format !== FORMAT) { return VERSION_ERROR } return { kind: _types.TokenKind.verified, payload: _extends({ customerId: customerId, maxVersionAllowed: maxVersionAllowed }, rest) } } function isPreview(patch) { return isNaN(patch) || patch < RTM_MIN_PATCH_VERSION } function validateLicense(licenseKey) { let versionStr = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : _version.fullVersion; if (validationPerformed) { return } validationPerformed = true; const version = (0, _version2.parseVersion)(versionStr); const versionsCompatible = (0, _version2.assertedVersionsCompatible)(version); const { internal: internal, error: error } = function(_ref2) { let { licenseKey: licenseKey, version: version } = _ref2; let preview = false; try { preview = isPreview(version.patch); const { major: major, minor: minor } = preview ? (0, _version2.getPreviousMajorVersion)(version) : version; if (!licenseKey) { return { preview: preview, error: "W0019" } } const license = parseLicenseKey(licenseKey); if (license.kind === _types.TokenKind.corrupted) { return { preview: preview, error: "W0021" } } if (license.kind === _types.TokenKind.internal) { return { preview: preview, internal: true, error: license.internalUsageId === _key.INTERNAL_USAGE_ID ? void 0 : "W0020" } } if (!(major && minor)) { return { preview: preview, error: "W0021" } } if (10 * major + minor > license.payload.maxVersionAllowed) { return { preview: preview, error: "W0020" } } return { preview: preview, error: void 0 } } catch { return { preview: preview, error: "W0021" } } }({ licenseKey: licenseKey, version: version }); if (!versionsCompatible && internal) { return } if (error && !internal) { const buyNowLink = (0, _config.default)().buyNowLink ?? BUY_NOW_LINK; const licensingDocLink = (0, _config.default)().licensingDocLink ?? LICENSING_DOC_LINK; (0, _trial_panel.showTrialPanel)(buyNowLink, licensingDocLink, _version.fullVersion) } const preview = isPreview(version.patch); if (error) { _errors.default.log(preview ? "W0022" : error); return } if (preview && !internal) { _errors.default.log("W0022") } } exports.default = { validateLicense: validateLicense } }, 1012: /*!******************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/core/license/pkcs1.js ***! \******************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.pad = function(hash) { const dataLength = (8 * _key.PUBLIC_KEY.n.length + 6) / 8; const data = (0, _byte_utils.concatBytes)((0, _byte_utils.hexToBytes)(ASN1_SHA1), hash); if (data.length + 10 > dataLength) { throw Error("Key is too short for SHA1 signing algorithm") } const padding = new Uint8Array(dataLength - data.length); padding.fill(255, 0, padding.length - 1); padding[0] = 0; padding[1] = 1; padding[padding.length - 1] = 0; return (0, _byte_utils.concatBytes)(padding, data) }; var _byte_utils = __webpack_require__( /*! ./byte_utils */ 22692); var _key = __webpack_require__( /*! ./key */ 78157); const ASN1_SHA1 = "3021300906052b0e03021a05000414" }, 42752: /*!***********************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/core/license/rsa_bigint.js ***! \***********************************************************************************/ function(__unused_webpack_module, exports) { Object.defineProperty(exports, "__esModule", { value: true }); exports.compareSignatures = function(args) { try { const zero = BigInt(0); const one = BigInt(1); const eight = BigInt(8); const modExp = (base, exponent, modulus) => { let result = one; let b = base; let e = exponent; while (e) { if (e & one) { result = result * b % modulus } b = b * b % modulus; e >>= one } return result }; const bigIntFromBytes = bytes => bytes.reduce(((acc, cur) => (acc << eight) + BigInt(cur)), zero); const actual = bigIntFromBytes(args.actual); const signature = bigIntFromBytes(args.signature); const exponent = BigInt(args.key.e); const modulus = bigIntFromBytes(args.key.n); const expected = modExp(signature, exponent, modulus); return expected === actual } catch { return true } } }, 94281: /*!*****************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/core/license/sha1.js ***! \*****************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.preprocess = preprocess; exports.sha1 = function(text) { const message = preprocess(text); const h = new Uint32Array([1732584193, 4023233417, 2562383102, 271733878, 3285377520]); for (let i = 0; i < message.length; i += 16) { const w = new Uint32Array(80); for (let j = 0; j < 16; j += 1) { w[j] = message[i + j] } for (let j = 16; j < 80; j += 1) { const n = w[j - 3] ^ w[j - 8] ^ w[j - 14] ^ w[j - 16]; w[j] = n << 1 | n >>> 31 } let a = h[0]; let b = h[1]; let c = h[2]; let d = h[3]; let e = h[4]; for (let j = 0; j < 80; j += 1) { const [f, k] = j < 20 ? [b & c | ~b & d, 1518500249] : j < 40 ? [b ^ c ^ d, 1859775393] : j < 60 ? [b & c | b & d | c & d, 2400959708] : [b ^ c ^ d, 3395469782]; const temp = (0, _byte_utils.leftRotate)(a, 5) + f + e + k + w[j]; e = d; d = c; c = (0, _byte_utils.leftRotate)(b, 30); b = a; a = temp } h[0] += a; h[1] += b; h[2] += c; h[3] += d; h[4] += e } return (0, _byte_utils.wordsToBytes)(h) }; var _byte_utils = __webpack_require__( /*! ./byte_utils */ 22692); function preprocess(text) { const bytes = new Uint8Array(text.length + 1); bytes.set((0, _byte_utils.stringToBytes)(text)); bytes[bytes.length - 1] = 128; const words = (0, _byte_utils.bytesToWords)(new Uint8Array(bytes)); const result = new Uint32Array(16 * Math.ceil((words.length + 2) / 16)); result.set(words, 0); result[result.length - 1] = 8 * (bytes.length - 1); return result } }, 42570: /*!*******************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/core/license/trial_panel.client.js ***! \*******************************************************************************************/ function(__unused_webpack_module, exports) { Object.defineProperty(exports, "__esModule", { value: true }); exports.isClient = exports.BASE_Z_INDEX = void 0; exports.registerCustomComponents = registerCustomComponents; exports.renderTrialPanel = function(buyNowUrl, licensingDocUrl, version, customStyles) { registerCustomComponents(customStyles); const trialPanelTrigger = document.createElement(componentNames.trigger); trialPanelTrigger.setAttribute(attributeNames.buyNow, buyNowUrl); trialPanelTrigger.setAttribute(attributeNames.licensingDoc, licensingDocUrl); trialPanelTrigger.setAttribute(attributeNames.version, version); document.body.appendChild(trialPanelTrigger) }; function _extends() { return _extends = Object.assign ? Object.assign.bind() : function(n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) { ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]) } } return n }, _extends.apply(null, arguments) } const BASE_Z_INDEX = exports.BASE_Z_INDEX = 1500; const isClient = () => "undefined" !== typeof HTMLElement && "undefined" !== typeof customElements; exports.isClient = isClient; const SafeHTMLElement = isClient() ? HTMLElement : class {}; const componentNames = { trigger: "dx-license-trigger", panel: "dx-license" }; const attributeNames = { buyNow: "buy-now", licensingDoc: "licensing-doc", version: "version" }; const commonStyles = { opacity: "1", visibility: "visible", "clip-path": "none", filter: "none" }; const contentStyles = _extends({}, commonStyles, { width: "100%", height: "auto", "line-height": "normal", display: "block", "z-index": `${BASE_Z_INDEX}`, position: "static", transform: "translate(0px, 0px)", "background-color": "#FF7200", border: "none", margin: "auto", "box-sizing": "border-box", "text-align": "center" }); const containerStyles = _extends({}, contentStyles, { display: "flex", "align-items": "center", "flex-direction": "row", position: "relative", top: "0px", left: "0px", padding: "0.5rem" }); const buttonStyles = { width: "1rem", cursor: "pointer", height: "1rem" }; const textStyles = _extends({}, commonStyles, { display: "inline", position: "static", padding: "0px", margin: "0px", color: "white", "font-family": "'Segoe UI','Open Sans Condensed',-apple-system,BlinkMacSystemFont,avenir next,avenir,helvetica neue,helvetica,Cantarell,Ubuntu,roboto,noto,arial,sans-serif", "font-size": "0.875rem", "font-wight": "600" }); function createImportantStyles(defaultStyles, customStyles) { const styles = customStyles ? _extends({}, defaultStyles, customStyles) : defaultStyles; return Object.keys(styles).reduce(((cssString, currentKey) => `${cssString}${[currentKey,`${styles[currentKey]} !important;`].join(": ")}`), "") } class DxLicense extends SafeHTMLElement { constructor() { var _DxLicense$customStyl, _DxLicense$customStyl2, _DxLicense$customStyl3, _DxLicense$customStyl4, _DxLicense$customStyl5; super(); this._observer = null; this._inReassign = false; this._spanStyles = createImportantStyles(textStyles, null === (_DxLicense$customStyl = DxLicense.customStyles) || void 0 === _DxLicense$customStyl ? void 0 : _DxLicense$customStyl.textStyles); this._linkStyles = createImportantStyles(textStyles, null === (_DxLicense$customStyl2 = DxLicense.customStyles) || void 0 === _DxLicense$customStyl2 ? void 0 : _DxLicense$customStyl2.linkStyles); this._containerStyles = createImportantStyles(containerStyles, null === (_DxLicense$customStyl3 = DxLicense.customStyles) || void 0 === _DxLicense$customStyl3 ? void 0 : _DxLicense$customStyl3.containerStyles); this._contentStyles = createImportantStyles(contentStyles, null === (_DxLicense$customStyl4 = DxLicense.customStyles) || void 0 === _DxLicense$customStyl4 ? void 0 : _DxLicense$customStyl4.contentStyles); this._buttonStyles = createImportantStyles(buttonStyles, null === (_DxLicense$customStyl5 = DxLicense.customStyles) || void 0 === _DxLicense$customStyl5 ? void 0 : _DxLicense$customStyl5.contentStyles) } _createSpan(text) { const span = document.createElement("span"); span.innerText = text; span.style.cssText = this._spanStyles; return span } _createLink(text, href) { const link = document.createElement("a"); link.innerText = text; link.style.cssText = this._linkStyles; link.href = href; link.target = "_blank"; return link } _createButton() { const button = document.createElement("div"); button.style.cssText = this._buttonStyles; const polygon = document.createElementNS("http://www.w3.org/2000/svg", "polygon"); const svg = document.createElementNS("http://www.w3.org/2000/svg", "svg"); polygon.setAttribute("points", "13.4 12.7 8.7 8 13.4 3.4 12.6 2.6 8 7.3 3.4 2.6 2.6 3.4 7.3 8 2.6 12.6 3.4 13.4 8 8.7 12.7 13.4 13.4 12.7"); polygon.style.cssText = createImportantStyles({ fill: "#fff", opacity: ".5", "stroke-width": "0px" }); svg.setAttribute("id", "Layer_1"); svg.setAttribute("data-name", "Layer 1"); svg.setAttribute("version", "1.1"); svg.setAttribute("viewBox", "0 0 16 16"); svg.style.cssText = createImportantStyles({ "vertical-align": "baseline" }); svg.appendChild(polygon); button.appendChild(svg); button.onclick = () => { DxLicense.closed = true; this.style.cssText = createImportantStyles({ display: "none" }) }; return button } _createContentContainer() { const contentContainer = document.createElement("div"); contentContainer.style.cssText = this._contentStyles; contentContainer.append(this._createSpan("For evaluation purposes only. Redistribution prohibited. Please "), this._createLink("register", this.getAttribute(attributeNames.licensingDoc)), this._createSpan(" an existing license or "), this._createLink("purchase a new license", this.getAttribute(attributeNames.buyNow)), this._createSpan(` to continue use of DevExpress product libraries (v${this.getAttribute(attributeNames.version)}).`)); return contentContainer } _reassignComponent() { this.innerHTML = ""; this.style.cssText = this._containerStyles; this.append(this._createContentContainer(), this._createButton()) } connectedCallback() { this._reassignComponent(); if (!this._observer) { this._observer = new MutationObserver((() => { if (DxLicense.closed) { var _this$_observer; null === (_this$_observer = this._observer) || void 0 === _this$_observer || _this$_observer.disconnect(); return } if (this._inReassign) { this._inReassign = false } else { this._inReassign = true; this._reassignComponent() } })); this._observer.observe(this, { childList: true, attributes: true, subtree: true }) } } disconnectedCallback() { if (DxLicense.closed) { return } Promise.resolve().then((() => { if (!document) { return } const licensePanel = document.getElementsByTagName(componentNames.panel); if (!licensePanel.length) { document.body.prepend(this) } })) } } DxLicense.customStyles = void 0; DxLicense.closed = false; class DxLicenseTrigger extends SafeHTMLElement { connectedCallback() { this.style.cssText = createImportantStyles({ display: "none" }); const licensePanel = document.getElementsByTagName(componentNames.panel); if (!licensePanel.length && !DxLicense.closed) { const license = document.createElement(componentNames.panel); license.setAttribute(attributeNames.version, this.getAttribute(attributeNames.version)); license.setAttribute(attributeNames.buyNow, this.getAttribute(attributeNames.buyNow)); license.setAttribute(attributeNames.licensingDoc, this.getAttribute(attributeNames.licensingDoc)); license.setAttribute("data-permanent", ""); document.body.prepend(license) } } } function registerCustomComponents(customStyles) { if (!customElements.get(componentNames.trigger)) { DxLicense.customStyles = customStyles; customElements.define(componentNames.trigger, DxLicenseTrigger); customElements.define(componentNames.panel, DxLicense) } } }, 99671: /*!************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/core/license/trial_panel.js ***! \************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.registerTrialPanelComponents = function(customStyles) { if ((0, _trial_panel.isClient)()) { (0, _trial_panel.registerCustomComponents)(customStyles) } }; exports.showTrialPanel = function(buyNowUrl, licensingDocUrl, version, customStyles) { if ((0, _trial_panel.isClient)()) { (0, _trial_panel.renderTrialPanel)(buyNowUrl, licensingDocUrl, version, customStyles) } }; var _trial_panel = __webpack_require__( /*! ./trial_panel.client */ 42570) }, 13407: /*!******************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/core/license/types.js ***! \******************************************************************************/ function(__unused_webpack_module, exports) { Object.defineProperty(exports, "__esModule", { value: true }); exports.TokenKind = void 0; var TokenKind; ! function(TokenKind) { TokenKind.corrupted = "corrupted"; TokenKind.verified = "verified"; TokenKind.internal = "internal" }(TokenKind || (exports.TokenKind = TokenKind = {})) }, 3226: /*!*************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/core/m_action.js ***! \*************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = exports.Action = void 0; var _renderer = (e = __webpack_require__( /*! ../../core/renderer */ 64553), e && e.__esModule ? e : { default: e }); var e; var _iterator = __webpack_require__( /*! ../../core/utils/iterator */ 21274); var _type = __webpack_require__( /*! ../../core/utils/type */ 11528); var _window = __webpack_require__( /*! ../../core/utils/window */ 3104); class Action { constructor(action, config) { config = config || {}; this._action = action; this._context = config.context || (0, _window.getWindow)(); this._beforeExecute = config.beforeExecute; this._afterExecute = config.afterExecute; this._component = config.component; this._validatingTargetName = config.validatingTargetName; const excludeValidators = this._excludeValidators = {}; if (config.excludeValidators) { for (let i = 0; i < config.excludeValidators.length; i++) { excludeValidators[config.excludeValidators[i]] = true } } } execute() { for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { args[_key] = arguments[_key] } const e = { action: this._action, args: Array.prototype.slice.call(args), context: this._context, component: this._component, validatingTargetName: this._validatingTargetName, cancel: false, handled: false }; const beforeExecute = this._beforeExecute; const afterExecute = this._afterExecute; const argsBag = e.args[0] || {}; if (!this._validateAction(e)) { return } null === beforeExecute || void 0 === beforeExecute || beforeExecute.call(this._context, e); if (e.cancel) { return } const result = this._executeAction(e); if (argsBag.cancel) { return } null === afterExecute || void 0 === afterExecute || afterExecute.call(this._context, e); return result } _validateAction(e) { const excludeValidators = this._excludeValidators; const { executors: executors } = Action; for (const name in executors) { if (!excludeValidators[name]) { var _executor$validate; const executor = executors[name]; null === (_executor$validate = executor.validate) || void 0 === _executor$validate || _executor$validate.call(executor, e); if (e.cancel) { return false } } } return true } _executeAction(e) { let result; const { executors: executors } = Action; for (const name in executors) { var _executor$execute; const executor = executors[name]; null === (_executor$execute = executor.execute) || void 0 === _executor$execute || _executor$execute.call(executor, e); if (e.handled) { result = e.result; break } } return result } static registerExecutor(name, executor) { if ((0, _type.isPlainObject)(name)) { (0, _iterator.each)(name, Action.registerExecutor); return } Action.executors[name] = executor } static unregisterExecutor() { for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) { args[_key2] = arguments[_key2] }(0, _iterator.each)(args, (function() { delete Action.executors[this] })) } } exports.Action = Action; Action.executors = {}; const createValidatorByTargetElement = condition => e => { if (!e.args.length) { return } const args = e.args[0]; const element = args[e.validatingTargetName] || args.element; if (element && condition((0, _renderer.default)(element))) { e.cancel = true } }; Action.registerExecutor({ disabled: { validate: createValidatorByTargetElement(($target => $target.is(".dx-state-disabled, .dx-state-disabled *"))) }, readOnly: { validate: createValidatorByTargetElement(($target => $target.is(".dx-state-readonly, .dx-state-readonly *:not(.dx-state-independent)"))) }, undefined: { execute: e => { if (!e.action) { e.result = void 0; e.handled = true } } }, func: { execute: e => { if ((0, _type.isFunction)(e.action)) { e.result = e.action.call(e.context, e.args[0]); e.handled = true } } } }); exports.default = Action }, 40958: /*!************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/core/m_class.js ***! \************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _errors = (e = __webpack_require__( /*! ../../core/errors */ 87129), e && e.__esModule ? e : { default: e }); var e; var _type = __webpack_require__( /*! ../../core/utils/type */ 11528); const wrapOverridden = function(baseProto, methodName, method) { return function() { const prevCallBase = this.callBase; this.callBase = baseProto[methodName]; try { return method.apply(this, arguments) } finally { this.callBase = prevCallBase } } }; const redefine = function(members) { const that = this; let overridden; let memberName; let member; if (!members) { return that } for (memberName in members) { member = members[memberName]; overridden = "function" === typeof that.prototype[memberName] && "function" === typeof member; that.prototype[memberName] = overridden ? wrapOverridden(that.parent.prototype, memberName, member) : member } return that }; const include = function() { const classObj = this; let argument; let name; let i; const hasClassObjOwnProperty = Object.prototype.hasOwnProperty.bind(classObj); const isES6Class = !hasClassObjOwnProperty("_includedCtors") && !hasClassObjOwnProperty("_includedPostCtors"); if (isES6Class) { classObj._includedCtors = classObj._includedCtors.slice(0); classObj._includedPostCtors = classObj._includedPostCtors.slice(0) } for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { args[_key] = arguments[_key] } for (i = 0; i < args.length; i++) { argument = args[i]; if (argument.ctor) { classObj._includedCtors.push(argument.ctor) } if (argument.postCtor) { classObj._includedPostCtors.push(argument.postCtor) } for (name in argument) { if ("ctor" === name || "postCtor" === name || "default" === name) { continue } classObj.prototype[name] = argument[name] } } return classObj }; const subclassOf = function(parentClass) { const hasParentProperty = Object.prototype.hasOwnProperty.bind(this)("parent"); const isES6Class = !hasParentProperty && this.parent; if (isES6Class) { const baseClass = Object.getPrototypeOf(this); return baseClass === parentClass || baseClass.subclassOf(parentClass) } if (this.parent === parentClass) { return true } if (!this.parent || !this.parent.subclassOf) { return false } return this.parent.subclassOf(parentClass) }; const abstract = function() { throw _errors.default.Error("E0001") }; const classImpl = function() {}; classImpl.inherit = function(members) { const inheritor = function() { if (!this || (0, _type.isWindow)(this) || "function" !== typeof this.constructor) { throw _errors.default.Error("E0003") } const instance = this; const { ctor: ctor } = instance; const includedCtors = instance.constructor._includedCtors; const includedPostCtors = instance.constructor._includedPostCtors; let i; for (i = 0; i < includedCtors.length; i++) { includedCtors[i].call(instance) } if (ctor) { for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) { args[_key2] = arguments[_key2] } ctor.apply(instance, args) } for (i = 0; i < includedPostCtors.length; i++) { includedPostCtors[i].call(instance) } }; inheritor.prototype = function(obj) { const func = function() {}; func.prototype = obj.prototype; return new func }(this); Object.setPrototypeOf(inheritor, this); inheritor.inherit = this.inherit; inheritor.abstract = abstract; inheritor.redefine = redefine; inheritor.include = include; inheritor.subclassOf = subclassOf; inheritor.parent = this; inheritor._includedCtors = this._includedCtors ? this._includedCtors.slice(0) : []; inheritor._includedPostCtors = this._includedPostCtors ? this._includedPostCtors.slice(0) : []; inheritor.prototype.constructor = inheritor; inheritor.redefine(members); return inheritor }; classImpl.abstract = abstract; exports.default = classImpl }, 10718: /*!****************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/core/m_component_registrator.js ***! \****************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.registerComponent = void 0; var _component_registrator_callbacks = _interopRequireDefault(__webpack_require__( /*! ../../core/component_registrator_callbacks */ 55771)); var _errors = _interopRequireDefault(__webpack_require__( /*! ../../core/errors */ 87129)); var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../core/renderer */ 64553)); var _public_component = __webpack_require__( /*! ../../core/utils/public_component */ 85521); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } exports.registerComponent = function(name, namespace, componentClass) { if (!componentClass) { componentClass = namespace } else { namespace[name] = componentClass }(0, _public_component.name)(componentClass, name); _component_registrator_callbacks.default.fire(name, componentClass) }; _component_registrator_callbacks.default.add((function(name, componentClass) { _renderer.default.fn[name] = function(options) { const isMemberInvoke = "string" === typeof options; let result; if (isMemberInvoke) { const memberName = options; const memberArgs = [].slice.call(arguments).slice(1); this.each((function() { const instance = componentClass.getInstance(this); if (!instance) { throw _errors.default.Error("E0009", name) } const member = instance[memberName]; const memberValue = member.apply(instance, memberArgs); if (void 0 === result) { result = memberValue } })) } else { this.each((function() { const instance = componentClass.getInstance(this); if (instance) { instance.option(options) } else { new componentClass(this, options) } })); result = this } return result } })) }, 21233: /*!**************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/core/m_component_registrator_callbacks.js ***! \**************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.componentRegistratorCallbacks = void 0; var _memorized_callbacks = (e = __webpack_require__( /*! ../../core/memorized_callbacks */ 35329), e && e.__esModule ? e : { default: e }); var e; exports.componentRegistratorCallbacks = new _memorized_callbacks.default }, 34338: /*!*************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/core/m_config.js ***! \*************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _errors = (e = __webpack_require__( /*! ../../core/errors */ 87129), e && e.__esModule ? e : { default: e }); var e; var _extend = __webpack_require__( /*! ../../core/utils/extend */ 52576); const config = { rtlEnabled: false, defaultCurrency: "USD", defaultUseCurrencyAccountingStyle: true, oDataFilterToLower: true, serverDecimalSeparator: ".", decimalSeparator: ".", thousandsSeparator: ",", forceIsoDateParsing: true, wrapActionsBeforeExecute: true, useLegacyStoreResult: false, useJQuery: void 0, editorStylingMode: void 0, useLegacyVisibleIndex: false, floatingActionButtonConfig: { icon: "add", closeIcon: "close", label: "", position: { at: "right bottom", my: "right bottom", offset: { x: -16, y: -16 } }, maxSpeedDialActionCount: 5, shading: false, direction: "auto" }, optionsParser: optionsString => { if ("{" !== optionsString.trim().charAt(0)) { optionsString = `{${optionsString}}` } try { return JSON.parse(optionsString) } catch (ex) { try { return JSON.parse(normalizeToJSONString(optionsString)) } catch (exNormalize) { throw _errors.default.Error("E3018", ex, optionsString) } } } }; const normalizeToJSONString = optionsString => optionsString.replace(/'/g, '"').replace(/,\s*([\]}])/g, "$1").replace(/([{,])\s*([^":\s]+)\s*:/g, '$1"$2":'); const deprecatedFields = ["decimalSeparator", "thousandsSeparator"]; const configMethod = function() { if (!arguments.length) { return config } const newConfig = arguments.length <= 0 ? void 0 : arguments[0]; deprecatedFields.forEach((deprecatedField => { if (newConfig[deprecatedField]) { const message = `Now, the ${deprecatedField} is selected based on the specified locale.`; _errors.default.log("W0003", "config", deprecatedField, "19.2", message) } })); (0, _extend.extend)(config, newConfig) }; if ("undefined" !== typeof DevExpress && DevExpress.config) { configMethod(DevExpress.config) } exports.default = configMethod }, 98905: /*!**************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/core/m_devices.js ***! \**************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _config = _interopRequireDefault(__webpack_require__( /*! ../../core/config */ 66636)); var _errors = _interopRequireDefault(__webpack_require__( /*! ../../core/errors */ 87129)); var _events_strategy = __webpack_require__( /*! ../../core/events_strategy */ 2607); var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../core/renderer */ 64553)); var _callbacks = _interopRequireDefault(__webpack_require__( /*! ../../core/utils/callbacks */ 84718)); var _deferred = __webpack_require__( /*! ../../core/utils/deferred */ 87739); var _extend = __webpack_require__( /*! ../../core/utils/extend */ 52576); var _ready_callbacks = _interopRequireDefault(__webpack_require__( /*! ../../core/utils/ready_callbacks */ 3122)); var _resize_callbacks = _interopRequireDefault(__webpack_require__( /*! ../../core/utils/resize_callbacks */ 63283)); var _size = __webpack_require__( /*! ../../core/utils/size */ 57653); var _storage = __webpack_require__( /*! ../../core/utils/storage */ 98479); var _type = __webpack_require__( /*! ../../core/utils/type */ 11528); var _view_port = __webpack_require__( /*! ../../core/utils/view_port */ 55355); var _window = __webpack_require__( /*! ../../core/utils/window */ 3104); var _m_common = __webpack_require__( /*! ../core/utils/m_common */ 39315); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } const window = (0, _window.getWindow)(); const KNOWN_UA_TABLE = { iPhone: "iPhone", iPhone5: "iPhone", iPhone6: "iPhone", iPhone6plus: "iPhone", iPad: "iPad", iPadMini: "iPad Mini", androidPhone: "Android Mobile", androidTablet: "Android", msSurface: "Windows ARM Tablet PC", desktop: "desktop" }; const DEFAULT_DEVICE = { deviceType: "desktop", platform: "generic", version: [], phone: false, tablet: false, android: false, ios: false, generic: true, grade: "A", mac: false }; const UA_PARSERS = { generic(userAgent) { const isPhone = /windows phone/i.test(userAgent) || userAgent.match(/WPDesktop/); const isTablet = !isPhone && /Windows(.*)arm(.*)Tablet PC/i.test(userAgent); const isDesktop = !isPhone && !isTablet && /msapphost/i.test(userAgent); const isMac = /((intel|ppc) mac os x)/.test(userAgent.toLowerCase()); if (!(isPhone || isTablet || isDesktop || isMac)) { return null } return { deviceType: isPhone ? "phone" : isTablet ? "tablet" : "desktop", platform: "generic", version: [], grade: "A", mac: isMac } }, appleTouchDevice(userAgent) { const navigator = (0, _window.getNavigator)(); const isIpadOs = /Macintosh/i.test(userAgent) && (null === navigator || void 0 === navigator ? void 0 : navigator.maxTouchPoints) > 2; const isAppleDevice = /ip(hone|od|ad)/i.test(userAgent); if (!isAppleDevice && !isIpadOs) { return null } const isPhone = /ip(hone|od)/i.test(userAgent); const matches = userAgent.match(/os\s{0,}X? (\d+)_(\d+)_?(\d+)?/i); const version = matches ? [parseInt(matches[1], 10), parseInt(matches[2], 10), parseInt(matches[3] || 0, 10)] : []; const isIPhone4 = 480 === window.screen.height; const grade = isIPhone4 ? "B" : "A"; return { deviceType: isPhone ? "phone" : "tablet", platform: "ios", version: version, grade: grade } }, android(userAgent) { const isAndroid = /android|htc_|silk/i.test(userAgent); const isWinPhone = /windows phone/i.test(userAgent); if (!isAndroid || isWinPhone) { return null } const isPhone = /mobile/i.test(userAgent); const matches = userAgent.match(/android (\d+)\.?(\d+)?\.?(\d+)?/i); const version = matches ? [parseInt(matches[1], 10), parseInt(matches[2] || 0, 10), parseInt(matches[3] || 0, 10)] : []; const worseThan4_4 = version.length > 1 && (version[0] < 4 || 4 === version[0] && version[1] < 4); const grade = worseThan4_4 ? "B" : "A"; return { deviceType: isPhone ? "phone" : "tablet", platform: "android", version: version, grade: grade } } }; const UA_PARSERS_ARRAY = [UA_PARSERS.appleTouchDevice, UA_PARSERS.android, UA_PARSERS.generic]; const devices = new class { constructor(options) { this._window = (null === options || void 0 === options ? void 0 : options.window) ?? window; this._realDevice = this._getDevice(); this._currentDevice = void 0; this._currentOrientation = void 0; this._eventsStrategy = new _events_strategy.EventsStrategy(this); this.changed = (0, _callbacks.default)(); if ((0, _window.hasWindow)()) { _ready_callbacks.default.add(this._recalculateOrientation.bind(this)); _resize_callbacks.default.add(this._recalculateOrientation.bind(this)) } } current(deviceOrName) { if (deviceOrName) { this._currentDevice = this._getDevice(deviceOrName); this._forced = true; this.changed.fire(); return } if (!this._currentDevice) { deviceOrName = void 0; try { deviceOrName = this._getDeviceOrNameFromWindowScope() } catch (e) { deviceOrName = this._getDeviceNameFromSessionStorage() } finally { if (!deviceOrName) { deviceOrName = this._getDeviceNameFromSessionStorage() } if (deviceOrName) { this._forced = true } } this._currentDevice = this._getDevice(deviceOrName) } return this._currentDevice } real(forceDevice) { return (0, _extend.extend)({}, this._realDevice) } orientation() { return this._currentOrientation } isForced() { return this._forced } isRippleEmulator() { return !!this._window.tinyHippos } _getCssClasses(device) { const result = []; const realDevice = this._realDevice; device = device || this.current(); if (device.deviceType) { result.push(`dx-device-${device.deviceType}`); if ("desktop" !== device.deviceType) { result.push("dx-device-mobile") } } result.push(`dx-device-${realDevice.platform}`); if (realDevice.version && realDevice.version.length) { result.push(`dx-device-${realDevice.platform}-${realDevice.version[0]}`) } if (this.isSimulator()) { result.push("dx-simulator") } if ((0, _config.default)().rtlEnabled) { result.push("dx-rtl") } return result } attachCssClasses(element, device) { this._deviceClasses = this._getCssClasses(device).join(" "); (0, _renderer.default)(element).addClass(this._deviceClasses) } detachCssClasses(element) { (0, _renderer.default)(element).removeClass(this._deviceClasses) } isSimulator() { try { var _this$_window$top; return this._isSimulator || (0, _window.hasWindow)() && this._window.top !== this._window.self && (null === (_this$_window$top = this._window.top) || void 0 === _this$_window$top ? void 0 : _this$_window$top["dx-force-device"]) || this.isRippleEmulator() } catch (e) { return false } } forceSimulator() { this._isSimulator = true } _getDevice(deviceName) { if ("genericPhone" === deviceName) { deviceName = { deviceType: "phone", platform: "generic", generic: true } } if ((0, _type.isPlainObject)(deviceName)) { return this._fromConfig(deviceName) } let ua; if (deviceName) { ua = KNOWN_UA_TABLE[deviceName]; if (!ua) { throw _errors.default.Error("E0005") } } else { const navigator = (0, _window.getNavigator)(); ua = navigator.userAgent } return this._fromUA(ua) } _getDeviceOrNameFromWindowScope() { var _this$_window$top2, _this$_window$top3; let result; if ((0, _window.hasWindow)() && (null !== (_this$_window$top2 = this._window.top) && void 0 !== _this$_window$top2 && _this$_window$top2["dx-force-device-object"] || null !== (_this$_window$top3 = this._window.top) && void 0 !== _this$_window$top3 && _this$_window$top3["dx-force-device"])) { var _this$_window$top4, _this$_window$top5; result = (null === (_this$_window$top4 = this._window.top) || void 0 === _this$_window$top4 ? void 0 : _this$_window$top4["dx-force-device-object"]) || (null === (_this$_window$top5 = this._window.top) || void 0 === _this$_window$top5 ? void 0 : _this$_window$top5["dx-force-device"]) } return result } _getDeviceNameFromSessionStorage() { const sessionStorage = (0, _storage.sessionStorage)(); if (!sessionStorage) { return } const deviceOrName = sessionStorage.getItem("dx-force-device"); try { return JSON.parse(deviceOrName) } catch (ex) { return deviceOrName } } _fromConfig(config) { const result = (0, _extend.extend)({}, DEFAULT_DEVICE, this._currentDevice, config); const shortcuts = { phone: "phone" === result.deviceType, tablet: "tablet" === result.deviceType, android: "android" === result.platform, ios: "ios" === result.platform, generic: "generic" === result.platform }; return (0, _extend.extend)(result, shortcuts) } _fromUA(ua) { for (let idx = 0; idx < UA_PARSERS_ARRAY.length; idx += 1) { const parser = UA_PARSERS_ARRAY[idx]; const config = parser(ua); if (config) { return this._fromConfig(config) } } return DEFAULT_DEVICE } _changeOrientation() { const $window = (0, _renderer.default)(this._window); const orientation = (0, _size.getHeight)($window) > (0, _size.getWidth)($window) ? "portrait" : "landscape"; if (this._currentOrientation === orientation) { return } this._currentOrientation = orientation; this._eventsStrategy.fireEvent("orientationChanged", [{ orientation: orientation }]) } _recalculateOrientation() { const windowWidth = (0, _size.getWidth)(this._window); if (this._currentWidth === windowWidth) { return } this._currentWidth = windowWidth; this._changeOrientation() } on(eventName, eventHandler) { this._eventsStrategy.on(eventName, eventHandler); return this } off(eventName, eventHandler) { this._eventsStrategy.off(eventName, eventHandler); return this } }; (0, _deferred.when)(_m_common.uiLayerInitialized).done((() => { const viewPortElement = (0, _view_port.value)(); if (viewPortElement) { devices.attachCssClasses(viewPortElement) } _view_port.changeCallback.add(((viewPort, prevViewport) => { devices.detachCssClasses(prevViewport); devices.attachCssClasses(viewPort) })) })); exports.default = devices }, 62018: /*!******************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/core/m_dom_adapter.js ***! \******************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.domAdapter = exports.default = void 0; var _common = __webpack_require__( /*! ../../core/utils/common */ 17781); var _dependency_injector = (e = __webpack_require__( /*! ../../core/utils/dependency_injector */ 89656), e && e.__esModule ? e : { default: e }); var e; var _shadow_dom = __webpack_require__( /*! ../../core/utils/shadow_dom */ 93631); const nativeDOMAdapterStrategy = { querySelectorAll: (element, selector) => element.querySelectorAll(selector), elementMatches(element, selector) { const matches = element.matches || element.matchesSelector || element.mozMatchesSelector || element.msMatchesSelector || element.oMatchesSelector || element.webkitMatchesSelector || (selector => { const doc = element.document || element.ownerDocument; if (!doc) { return false } const items = this.querySelectorAll(doc, selector); for (let i = 0; i < items.length; i++) { if (items[i] === element) { return true } } }); return matches.call(element, selector) }, createElement(tagName, context) { context = context ?? this._document; return context.createElement(tagName) }, createElementNS(ns, tagName, context) { context = context || this._document; return context.createElementNS(ns, tagName) }, createTextNode(text, context) { context = context || this._document; return context.createTextNode(text) }, createAttribute(text, context) { context = context || this._document; return context.createAttribute(text) }, isNode: element => !!element && "object" === typeof element && "nodeType" in element && "nodeName" in element, isElementNode: element => !!element && 1 === element.nodeType, isTextNode: element => element && 3 === element.nodeType, isDocument: element => element && 9 === element.nodeType, isDocumentFragment: element => element && 11 === element.nodeType, removeElement(element) { const parentNode = element && element.parentNode; if (parentNode) { parentNode.removeChild(element) } }, insertElement(parentElement, newElement, nextSiblingElement) { if (parentElement && newElement && parentElement !== newElement) { if (nextSiblingElement) { parentElement.insertBefore(newElement, nextSiblingElement) } else { parentElement.appendChild(newElement) } } }, getAttribute: (element, name) => element.getAttribute(name), setAttribute(element, name, value) { if ("style" === name) { element.style.cssText = value } else { element.setAttribute(name, value) } }, removeAttribute(element, name) { element.removeAttribute(name) }, setProperty(element, name, value) { element[name] = value }, setText(element, text) { if (element) { element.textContent = text } }, setClass(element, className, isAdd) { if (1 === element.nodeType && className) { isAdd ? element.classList.add(className) : element.classList.remove(className) } }, setStyle(element, name, value) { element.style[name] = value || "" }, _document: "undefined" === typeof document ? void 0 : document, getDocument() { return this._document }, getActiveElement(element) { const activeElementHolder = this.getRootNode(element); return activeElementHolder.activeElement }, getRootNode(element) { var _element$getRootNode; return (null === element || void 0 === element || null === (_element$getRootNode = element.getRootNode) || void 0 === _element$getRootNode ? void 0 : _element$getRootNode.call(element)) ?? this._document }, getBody() { return this._document.body }, createDocumentFragment() { return this._document.createDocumentFragment() }, getDocumentElement() { return this._document.documentElement }, getLocation() { return this._document.location }, getSelection() { return this._document.selection }, getReadyState() { return this._document.readyState }, getHead() { return this._document.head }, hasDocumentProperty(property) { return property in this._document }, listen(element, event, callback, options) { if (!element || !("addEventListener" in element)) { return _common.noop } element.addEventListener(event, callback, options); return () => { element.removeEventListener(event, callback) } }, elementsFromPoint(x, y, element) { const activeElementHolder = this.getRootNode(element); if (activeElementHolder.host) { return (0, _shadow_dom.getShadowElementsFromPoint)(x, y, activeElementHolder) } return activeElementHolder.elementsFromPoint(x, y) } }; const domAdapter = exports.domAdapter = (0, _dependency_injector.default)(nativeDOMAdapterStrategy); exports.default = domAdapter }, 93630: /*!**************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/core/m_element.js ***! \**************************************************************************/ function(__unused_webpack_module, exports) { Object.defineProperty(exports, "__esModule", { value: true }); exports.getPublicElement = function(element) { return strategy(element) }; exports.getPublicElementNonJquery = getPublicElementNonJquery; exports.setPublicElementWrapper = function(newStrategy) { strategy = newStrategy }; function getPublicElementNonJquery(element) { if (element && element.get) { return element.get(0) } return element } let strategy = getPublicElementNonJquery }, 29489: /*!*******************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/core/m_element_data.js ***! \*******************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.afterCleanData = function(callback) { afterCleanDataFunc = callback }; exports.beforeCleanData = function(callback) { beforeCleanDataFunc = callback }; exports.cleanData = function(nodes) { return strategy.cleanData.call(this, nodes) }; exports.cleanDataRecursive = function(element, cleanSelf) { if (!_dom_adapter.default.isElementNode(element)) { return } const childElements = element.getElementsByTagName("*"); strategy.cleanData(childElements); if (cleanSelf) { strategy.cleanData([element]) } }; exports.data = function() { for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { args[_key] = arguments[_key] } return strategy.data.apply(this, args) }; exports.getDataStrategy = function() { return strategy }; exports.removeData = function(element, key) { return strategy.removeData.call(this, element, key) }; exports.strategyChanging = exports.setDataStrategy = void 0; var _events_engine = _interopRequireDefault(__webpack_require__( /*! ../../common/core/events/core/events_engine */ 92774)); var _dom_adapter = _interopRequireDefault(__webpack_require__( /*! ../../core/dom_adapter */ 64960)); var _memorized_callbacks = _interopRequireDefault(__webpack_require__( /*! ../../core/memorized_callbacks */ 35329)); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } const dataMap = new WeakMap; let strategy; const strategyChanging = exports.strategyChanging = new _memorized_callbacks.default; let beforeCleanDataFunc = function() {}; let afterCleanDataFunc = function() {}; const setDataStrategy = function(value) { strategyChanging.fire(value); strategy = value; const { cleanData: cleanData } = strategy; strategy.cleanData = function(nodes) { beforeCleanDataFunc(nodes); const result = cleanData.call(this, nodes); afterCleanDataFunc(nodes); return result } }; exports.setDataStrategy = setDataStrategy; setDataStrategy({ data: function() { const element = arguments.length <= 0 ? void 0 : arguments[0]; const key = arguments.length <= 1 ? void 0 : arguments[1]; const value = arguments.length <= 2 ? void 0 : arguments[2]; if (!element) { return } let elementData = dataMap.get(element); if (!elementData) { elementData = {}; dataMap.set(element, elementData) } if (void 0 === key) { return elementData } if (2 === arguments.length) { return elementData[key] } elementData[key] = value; return value }, removeData: function(element, key) { if (!element) { return } if (void 0 === key) { dataMap.delete(element) } else { const elementData = dataMap.get(element); if (elementData) { delete elementData[key] } } }, cleanData: function(elements) { for (let i = 0; i < elements.length; i++) { _events_engine.default.off(elements[i]); dataMap.delete(elements[i]) } } }) }, 5583: /*!*************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/core/m_errors.js ***! \*************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _error = (e = __webpack_require__( /*! ../../core/utils/error */ 67264), e && e.__esModule ? e : { default: e }); var e; exports.default = (0, _error.default)({ E0001: "Method is not implemented", E0002: "Member name collision: {0}", E0003: "A class must be instantiated using the 'new' keyword", E0004: "The NAME property of the component is not specified", E0005: "Unknown device", E0006: "Unknown endpoint key is requested", E0007: "'Invalidate' method is called outside the update transaction", E0008: "Type of the option name is not appropriate to create an action", E0009: "Component '{0}' has not been initialized for an element", E0010: "Animation configuration with the '{0}' type requires '{1}' configuration as {2}", E0011: "Unknown animation type '{0}'", E0012: "jQuery version is too old. Please upgrade jQuery to 1.10.0 or later", E0013: "KnockoutJS version is too old. Please upgrade KnockoutJS to 2.3.0 or later", E0014: "The 'release' method shouldn't be called for an unlocked Lock object", E0015: "Queued task returned an unexpected result", E0017: "Event namespace is not defined", E0018: "DevExpress.ui.DevExpressPopup widget is required", E0020: "Template engine '{0}' is not supported", E0021: "Unknown theme is set: {0}", E0022: "LINK[rel=DevExpress-theme] tags must go before DevExpress included scripts", E0023: "Template name is not specified", E0024: "DevExtreme bundle already included", E0025: "Unexpected argument type", E0100: "Unknown validation type is detected", E0101: "Misconfigured range validation rule is detected", E0102: "Misconfigured comparison validation rule is detected", E0103: "validationCallback of an asynchronous rule should return a jQuery or a native promise", E0110: "Unknown validation group is detected", E0120: "Adapter for a DevExpressValidator component cannot be configured", E0121: "The 'customItem' parameter of the 'onCustomItemCreating' function is empty or contains invalid data. Assign a custom object or a Promise that is resolved after the item is created.", E0122: "AIIntegration: The sendRequest method is missing.", W0000: "'{0}' is deprecated in {1}. {2}", W0001: "{0} - '{1}' option is deprecated in {2}. {3}", W0002: "{0} - '{1}' method is deprecated in {2}. {3}", W0003: "{0} - '{1}' property is deprecated in {2}. {3}", W0004: "Timeout for theme loading is over: {0}", W0005: "'{0}' event is deprecated in {1}. {2}", W0006: "Invalid recurrence rule: '{0}'", W0007: "'{0}' Globalize culture is not defined", W0008: "Invalid view name: '{0}'", W0009: "Invalid time zone name: '{0}'", W0010: "{0} is deprecated in {1}. {2}", W0011: "Number parsing is invoked while the parser is not defined", W0012: "Date parsing is invoked while the parser is not defined", W0013: "'{0}' file is deprecated in {1}. {2}", W0014: "{0} - '{1}' type is deprecated in {2}. {3}", W0015: "Instead of returning a value from the '{0}' function, write it into the '{1}' field of the function's parameter.", W0016: 'The "{0}" option does not accept the "{1}" value since v{2}. {3}.', W0017: 'Setting the "{0}" property with a function is deprecated since v21.2', W0018: 'Setting the "position" property with a function is deprecated since v21.2', W0019: "DevExtreme: Unable to Locate a Valid License Key.\n\nDetailed license/registration related information and instructions: https://js.devexpress.com/Documentation/Licensing/.\n\nIf you are using a 30-day trial version of DevExtreme, you must uninstall all copies of DevExtreme once your 30-day trial period expires. For terms and conditions that govern use of DevExtreme UI components/libraries, please refer to the DevExtreme End User License Agreement: https://js.devexpress.com/EULAs/DevExtremeComplete.\n\nTo use DevExtreme in a commercial project, you must purchase a license. For pricing/licensing options, please visit: https://js.devexpress.com/Buy.\n\nIf you have licensing-related questions or need help with a purchase, please email clientservices@devexpress.com.\n\n", W0020: "DevExtreme: License Key Has Expired.\n\nDetailed license/registration related information and instructions: https://js.devexpress.com/Documentation/Licensing/.\n\nA mismatch exists between the license key used and the DevExtreme version referenced in this project.\n\nTo proceed, you can:\n\u2022 use a version of DevExtreme linked to your license key: https://www.devexpress.com/ClientCenter/DownloadManager\n\u2022 renew your DevExpress Subscription: https://www.devexpress.com/buy/renew (once you renew your subscription, you will be entitled to product updates and support service as defined in the DevExtreme End User License Agreement)\n\nIf you have licensing-related questions or need help with a renewal, please email clientservices@devexpress.com.\n\n", W0021: "DevExtreme: License Key Verification Has Failed.\n\nDetailed license/registration related information and instructions: https://js.devexpress.com/Documentation/Licensing/.\n\nTo verify your DevExtreme license, make certain to specify a correct key in the GlobalConfig. If you continue to encounter this error, please visit https://www.devexpress.com/ClientCenter/DownloadManager to obtain a valid license key.\n\nIf you have a valid license and this problem persists, please submit a support ticket via the DevExpress Support Center. We will be happy to follow-up: https://supportcenter.devexpress.com/ticket/create.\n\n", W0022: "DevExtreme: Pre-release software. Not suitable for commercial use.\n\nDetailed license/registration related information and instructions: https://js.devexpress.com/Documentation/Licensing/.\n\nPre-release software may contain deficiencies and as such, should not be considered for use or integrated in any mission critical application.\n\n", W0023: "DevExtreme: the following 'devextreme' package version does not match versions of other DevExpress products used in this application:\n\n{0}\n\nInteroperability between different versions of the products listed herein cannot be guaranteed.\n\n" }) }, 14201: /*!**********************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/core/m_events_strategy.js ***! \**********************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.EventsStrategy = void 0; var _callbacks = (e = __webpack_require__( /*! ../../core/utils/callbacks */ 84718), e && e.__esModule ? e : { default: e }); var e; var _iterator = __webpack_require__( /*! ../../core/utils/iterator */ 21274); var _type = __webpack_require__( /*! ../../core/utils/type */ 11528); class EventsStrategy { constructor(owner) { let options = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {}; this._events = {}; this._owner = owner; this._options = options } static create(owner, strategy) { if (strategy) { return (0, _type.isFunction)(strategy) ? strategy(owner) : strategy } return new EventsStrategy(owner) } hasEvent(eventName) { const callbacks = this._events[eventName]; return callbacks ? callbacks.has() : false } fireEvent(eventName, eventArgs) { const callbacks = this._events[eventName]; if (callbacks) { callbacks.fireWith(this._owner, eventArgs) } return this._owner } on(eventName, eventHandler) { if ((0, _type.isPlainObject)(eventName)) { (0, _iterator.each)(eventName, ((e, h) => { this.on(e, h) })) } else { let callbacks = this._events[eventName]; if (!callbacks) { callbacks = (0, _callbacks.default)({ syncStrategy: this._options.syncStrategy }); this._events[eventName] = callbacks } const addFn = callbacks.originalAdd || callbacks.add; addFn.call(callbacks, eventHandler) } } off(eventName, eventHandler) { const callbacks = this._events[eventName]; if (callbacks) { if ((0, _type.isFunction)(eventHandler)) { callbacks.remove(eventHandler) } else { callbacks.empty() } } } dispose() { (0, _iterator.each)(this._events, ((eventName, event) => { event.empty() })) } } exports.EventsStrategy = EventsStrategy }, 7201: /*!***********************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/core/m_guid.js ***! \***********************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.Guid = void 0; var _class = (e = __webpack_require__( /*! ../../core/class */ 55620), e && e.__esModule ? e : { default: e }); var e; exports.Guid = _class.default.inherit({ ctor: function(value) { if (value) { value = String(value) } this._value = this._normalize(value || this._generate()) }, _normalize: function(value) { value = value.replace(/[^a-f0-9]/gi, "").toLowerCase(); while (value.length < 32) { value += "0" } return [value.substr(0, 8), value.substr(8, 4), value.substr(12, 4), value.substr(16, 4), value.substr(20, 12)].join("-") }, _generate: function() { let value = ""; for (let i = 0; i < 32; i++) { value += Math.round(15 * Math.random()).toString(16) } return value }, toString: function() { return this._value }, valueOf: function() { return this._value }, toJSON: function() { return this._value } }) }, 58670: /*!*******************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/core/m_http_request.js ***! \*******************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.httpRequest = void 0; var _dependency_injector = (e = __webpack_require__( /*! ../../core/utils/dependency_injector */ 89656), e && e.__esModule ? e : { default: e }); var e; var _window = __webpack_require__( /*! ../../core/utils/window */ 3104); const window = (0, _window.getWindow)(); const nativeXMLHttpRequest = { getXhr: () => new window.XMLHttpRequest }; exports.httpRequest = (0, _dependency_injector.default)(nativeXMLHttpRequest) }, 21327: /*!***********************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/core/m_inferno_renderer.js ***! \***********************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.infernoRenderer = void 0; var _dom_adapter = _interopRequireDefault(__webpack_require__( /*! ../../core/dom_adapter */ 64960)); var _element_data = __webpack_require__( /*! ../../core/element_data */ 74663); var _dependency_injector = _interopRequireDefault(__webpack_require__( /*! ../../core/utils/dependency_injector */ 89656)); var _index = __webpack_require__( /*! ../core/r1/runtime/inferno/index */ 6257); var _inferno = __webpack_require__( /*! inferno */ 76231); var _infernoCreateElement = __webpack_require__( /*! inferno-create-element */ 12887); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } const remove = element => { const { parentNode: parentNode } = element; if (parentNode) { const { nextSibling: nextSibling } = element; (0, _element_data.cleanDataRecursive)(element); parentNode.$V = element.$V; (0, _inferno.render)(null, parentNode); parentNode.insertBefore(element, nextSibling); element.innerHTML = ""; delete parentNode.$V } delete element.$V }; exports.infernoRenderer = (0, _dependency_injector.default)({ createElement: (component, props) => (0, _infernoCreateElement.createElement)(component, props), remove: remove, onAfterRender: () => { _index.InfernoEffectHost.callEffects() }, onPreRender: () => { _index.InfernoEffectHost.lock() }, render: (component, props, container, replace) => { if (!replace) { const { parentNode: parentNode } = container; const nextNode = null === container || void 0 === container ? void 0 : container.nextSibling; const rootNode = _dom_adapter.default.createElement("div"); rootNode.appendChild(container); const mountNode = _dom_adapter.default.createDocumentFragment().appendChild(rootNode); const vNodeAlreadyExists = !!container.$V; vNodeAlreadyExists && remove(container); (0, _index.hydrate)((0, _infernoCreateElement.createElement)(component, props), mountNode); container.$V = mountNode.$V; if (parentNode) { parentNode.insertBefore(container, nextNode) } } else { (0, _inferno.render)((0, _infernoCreateElement.createElement)(component, props), container) } }, renderIntoContainer: (jsx, container, replace) => { if (!replace) { (0, _index.hydrate)(jsx, container) } else { (0, _inferno.render)(jsx, container) } } }) }, 87107: /*!**************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/core/m_memorized_callbacks.js ***! \**************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.MemorizedCallbacks = void 0; var _callbacks = (e = __webpack_require__( /*! ../../core/utils/callbacks */ 84718), e && e.__esModule ? e : { default: e }); var e; var _iterator = __webpack_require__( /*! ../../core/utils/iterator */ 21274); exports.MemorizedCallbacks = class { constructor() { this.memory = []; this.callbacks = (0, _callbacks.default)() } add(fn) { (0, _iterator.each)(this.memory, ((_, item) => fn.apply(fn, item))); this.callbacks.add(fn) } remove(fn) { this.callbacks.remove(fn) } fire() { for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { args[_key] = arguments[_key] } this.memory.push(args); this.callbacks.fire.apply(this.callbacks, args) } } }, 45693: /*!***************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/core/m_postponed_operations.js ***! \***************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.PostponedOperations = void 0; var _deferred = __webpack_require__( /*! ../../core/utils/deferred */ 87739); var _type = __webpack_require__( /*! ../../core/utils/type */ 11528); exports.PostponedOperations = class { constructor() { this._postponedOperations = {} } add(key, fn, postponedPromise) { if (key in this._postponedOperations) { postponedPromise && this._postponedOperations[key].promises.push(postponedPromise) } else { const completePromise = new _deferred.Deferred; this._postponedOperations[key] = { fn: fn, completePromise: completePromise, promises: postponedPromise ? [postponedPromise] : [] } } return this._postponedOperations[key].completePromise.promise() } callPostponedOperations() { for (const key in this._postponedOperations) { const operation = this._postponedOperations[key]; if ((0, _type.isDefined)(operation)) { if (operation.promises && operation.promises.length) { (0, _deferred.when)(...operation.promises).done(operation.fn).then(operation.completePromise.resolve) } else { operation.fn().done(operation.completePromise.resolve) } } } this._postponedOperations = {} } } }, 95539: /*!***************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/core/m_renderer.js ***! \***************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.renderer = exports.default = void 0; var _renderer_base = (e = __webpack_require__( /*! ../../core/renderer_base */ 21681), e && e.__esModule ? e : { default: e }); var e; const renderer = exports.renderer = _renderer_base.default.get(); exports.default = renderer }, 1811: /*!********************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/core/m_renderer_base.js ***! \********************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _dom_adapter = (e = __webpack_require__( /*! ../../core/dom_adapter */ 64960), e && e.__esModule ? e : { default: e }); var e; var _element_data = __webpack_require__( /*! ../../core/element_data */ 74663); var _html_parser = __webpack_require__( /*! ../../core/utils/html_parser */ 23563); var _size = __webpack_require__( /*! ../../core/utils/size */ 57653); var _style = __webpack_require__( /*! ../../core/utils/style */ 58515); var _type = __webpack_require__( /*! ../../core/utils/type */ 11528); var _window = __webpack_require__( /*! ../../core/utils/window */ 3104); const window = (0, _window.getWindow)(); let renderer; const initRender = function(selector, context) { if (!selector) { this.length = 0; return this } if ("string" === typeof selector) { if ("body" === selector) { this[0] = context ? context.body : _dom_adapter.default.getBody(); this.length = 1; return this } context = context || _dom_adapter.default.getDocument(); if (selector.startsWith("<")) { this[0] = _dom_adapter.default.createElement(selector.slice(1, -1), context); this.length = 1; return this } [].push.apply(this, _dom_adapter.default.querySelectorAll(context, selector)); return this } if (_dom_adapter.default.isNode(selector) || (0, _type.isWindow)(selector)) { this[0] = selector; this.length = 1; return this } if (Array.isArray(selector)) { [].push.apply(this, selector); return this } return renderer(selector.toArray ? selector.toArray() : [selector]) }; renderer = function(selector, context) { return new initRender(selector, context) }; renderer.fn = { dxRenderer: true }; initRender.prototype = renderer.fn; const repeatMethod = function(methodName, args) { for (let i = 0; i < this.length; i++) { const item = renderer(this[i]); item[methodName].apply(item, args) } return this }; const setAttributeValue = function(element, attrName, value) { if (void 0 !== value && null !== value && false !== value) { _dom_adapter.default.setAttribute(element, attrName, value) } else { _dom_adapter.default.removeAttribute(element, attrName) } }; initRender.prototype.show = function() { return this.toggle(true) }; initRender.prototype.hide = function() { return this.toggle(false) }; initRender.prototype.toggle = function(value) { if (this[0]) { this.toggleClass("dx-state-invisible", !value) } return this }; initRender.prototype.attr = function(attrName, value) { if (this.length > 1 && arguments.length > 1) { return repeatMethod.call(this, "attr", arguments) } if (!this[0]) { if ((0, _type.isObject)(attrName) || void 0 !== value) { return this } return } if (!this[0].getAttribute) { return this.prop(attrName, value) } if ("string" === typeof attrName && 1 === arguments.length) { const result = this[0].getAttribute(attrName); return null == result ? void 0 : result } if ((0, _type.isPlainObject)(attrName)) { for (const key in attrName) { this.attr(key, attrName[key]) } } else { setAttributeValue(this[0], attrName, value) } return this }; initRender.prototype.removeAttr = function(attrName) { this.each((function(_, element) { _dom_adapter.default.removeAttribute(element, attrName) })); return this }; initRender.prototype.prop = function(propName, value) { if (!this[0]) { return this } if ("string" === typeof propName && 1 === arguments.length) { return this[0][propName] } if ((0, _type.isPlainObject)(propName)) { for (const key in propName) { this.prop(key, propName[key]) } } else { _dom_adapter.default.setProperty(this[0], propName, value) } return this }; initRender.prototype.addClass = function(className) { return this.toggleClass(className, true) }; initRender.prototype.removeClass = function(className) { return this.toggleClass(className, false) }; initRender.prototype.hasClass = function(className) { if (!this[0] || void 0 === this[0].className) { return false } const classNames = className.split(" "); for (let i = 0; i < classNames.length; i++) { if (this[0].classList) { if (this[0].classList.contains(classNames[i])) { return true } } else { const className = (0, _type.isString)(this[0].className) ? this[0].className : _dom_adapter.default.getAttribute(this[0], "class"); if ((className || "").split(" ").indexOf(classNames[i]) >= 0) { return true } } } return false }; initRender.prototype.toggleClass = function(className, value) { if (this.length > 1) { return repeatMethod.call(this, "toggleClass", arguments) } if (!this[0] || !className) { return this } value = void 0 === value ? !this.hasClass(className) : value; const classNames = className.split(" "); for (let i = 0; i < classNames.length; i++) { _dom_adapter.default.setClass(this[0], classNames[i], value) } return this }; initRender.prototype.html = function(value) { if (!arguments.length) { return this[0].innerHTML } this.empty(); if ("string" === typeof value && !(0, _html_parser.isTablePart)(value) || "number" === typeof value) { this[0].innerHTML = value; return this } return this.append((0, _html_parser.parseHTML)(value)) }; const appendElements = function(element, nextSibling) { if (!this[0] || !element) { return } if ("string" === typeof element) { element = (0, _html_parser.parseHTML)(element) } else if (element.nodeType) { element = [element] } else if ((0, _type.isNumeric)(element)) { element = [_dom_adapter.default.createTextNode(element)] } for (let i = 0; i < element.length; i++) { const item = element[i]; let container = this[0]; const wrapTR = "TABLE" === container.tagName && "TR" === item.tagName; if (wrapTR && container.tBodies && container.tBodies.length) { container = container.tBodies[0] } _dom_adapter.default.insertElement(container, item.nodeType ? item : item[0], nextSibling) } }; const setCss = function(name, value) { if (!this[0] || !this[0].style) { return } if (null === value || "number" === typeof value && isNaN(value)) { return } name = (0, _style.styleProp)(name); for (let i = 0; i < this.length; i++) { this[i].style[name] = (0, _style.normalizeStyleProp)(name, value) } }; initRender.prototype.css = function(name, value) { if ((0, _type.isString)(name)) { if (2 === arguments.length) { setCss.call(this, name, value) } else { if (!this[0]) { return } name = (0, _style.styleProp)(name); const result = window.getComputedStyle(this[0])[name] || this[0].style[name]; return (0, _type.isNumeric)(result) ? result.toString() : result } } else if ((0, _type.isPlainObject)(name)) { for (const key in name) { setCss.call(this, key, name[key]) } } return this }; initRender.prototype.prepend = function(element) { if (arguments.length > 1) { for (let i = 0; i < arguments.length; i++) { this.prepend(arguments[i]) } return this } appendElements.apply(this, [element, this[0].firstChild]); return this }; initRender.prototype.append = function(element) { if (arguments.length > 1) { for (let i = 0; i < arguments.length; i++) { this.append(arguments[i]) } return this } appendElements.apply(this, [element]); return this }; initRender.prototype.prependTo = function(element) { if (this.length > 1) { for (let i = this.length - 1; i >= 0; i--) { renderer(this[i]).prependTo(element) } return this } element = renderer(element); if (element[0]) { _dom_adapter.default.insertElement(element[0], this[0], element[0].firstChild) } return this }; initRender.prototype.appendTo = function(element) { if (this.length > 1) { return repeatMethod.call(this, "appendTo", arguments) } _dom_adapter.default.insertElement(renderer(element)[0], this[0]); return this }; initRender.prototype.insertBefore = function(element) { if (element && element[0]) { _dom_adapter.default.insertElement(element[0].parentNode, this[0], element[0]) } return this }; initRender.prototype.insertAfter = function(element) { if (element && element[0]) { _dom_adapter.default.insertElement(element[0].parentNode, this[0], element[0].nextSibling) } return this }; initRender.prototype.before = function(element) { if (this[0]) { _dom_adapter.default.insertElement(this[0].parentNode, element[0], this[0]) } return this }; initRender.prototype.after = function(element) { if (this[0]) { _dom_adapter.default.insertElement(this[0].parentNode, element[0], this[0].nextSibling) } return this }; initRender.prototype.wrap = function(wrapper) { if (this[0]) { const wrap = renderer(wrapper); wrap.insertBefore(this); wrap.append(this) } return this }; initRender.prototype.wrapInner = function(wrapper) { const contents = this.contents(); if (contents.length) { contents.wrap(wrapper) } else { this.append(wrapper) } return this }; initRender.prototype.replaceWith = function(element) { if (!(element && element[0])) { return } if (element.is(this)) { return this } element.insertBefore(this); this.remove(); return element }; initRender.prototype.remove = function() { if (this.length > 1) { return repeatMethod.call(this, "remove", arguments) }(0, _element_data.cleanDataRecursive)(this[0], true); _dom_adapter.default.removeElement(this[0]); return this }; initRender.prototype.detach = function() { if (this.length > 1) { return repeatMethod.call(this, "detach", arguments) } _dom_adapter.default.removeElement(this[0]); return this }; initRender.prototype.empty = function() { if (this.length > 1) { return repeatMethod.call(this, "empty", arguments) }(0, _element_data.cleanDataRecursive)(this[0]); _dom_adapter.default.setText(this[0], ""); return this }; initRender.prototype.clone = function() { const result = []; for (let i = 0; i < this.length; i++) { result.push(this[i].cloneNode(true)) } return renderer(result) }; initRender.prototype.text = function(value) { if (!arguments.length) { let result = ""; for (let i = 0; i < this.length; i++) { result += this[i] && this[i].textContent || "" } return result } const text = (0, _type.isFunction)(value) ? value() : value; (0, _element_data.cleanDataRecursive)(this[0], false); _dom_adapter.default.setText(this[0], (0, _type.isDefined)(text) ? text : ""); return this }; initRender.prototype.val = function(value) { if (1 === arguments.length) { return this.prop("value", (0, _type.isDefined)(value) ? value : "") } return this.prop("value") }; initRender.prototype.contents = function() { if (!this[0]) { return renderer() } const result = []; result.push.apply(result, this[0].childNodes); return renderer(result) }; initRender.prototype.find = function(selector) { const result = renderer(); if (!selector) { return result } const nodes = []; let i; if ("string" === typeof selector) { selector = selector.trim(); for (i = 0; i < this.length; i++) { const element = this[i]; if (_dom_adapter.default.isElementNode(element)) { const elementId = element.getAttribute("id"); let queryId = elementId || "dx-query-children"; if (!elementId) { setAttributeValue(element, "id", queryId) } queryId = `[id='${queryId}'] `; const querySelector = queryId + selector.replace(/([^\\])(,)/g, `$1, ${queryId}`); nodes.push.apply(nodes, _dom_adapter.default.querySelectorAll(element, querySelector)); setAttributeValue(element, "id", elementId) } else if (_dom_adapter.default.isDocument(element) || _dom_adapter.default.isDocumentFragment(element)) { nodes.push.apply(nodes, _dom_adapter.default.querySelectorAll(element, selector)) } } } else { for (i = 0; i < this.length; i++) { selector = _dom_adapter.default.isNode(selector) ? selector : selector[0]; if (this[i] !== selector && this[i].contains(selector)) { nodes.push(selector) } } } return result.add(nodes) }; const isVisible = function(_, element) { var _element$getClientRec, _element; element = element.host ?? element; if (!element.nodeType) { return true } return !!(element.offsetWidth || element.offsetHeight || null !== (_element$getClientRec = (_element = element).getClientRects) && void 0 !== _element$getClientRec && _element$getClientRec.call(_element).length) }; initRender.prototype.filter = function(selector) { if (!selector) { return renderer() } if (":visible" === selector) { return this.filter(isVisible) } if (":hidden" === selector) { return this.filter((function(_, element) { return !isVisible(0, element) })) } const result = []; for (let i = 0; i < this.length; i++) { const item = this[i]; if (_dom_adapter.default.isElementNode(item) && "string" === (0, _type.type)(selector)) { _dom_adapter.default.elementMatches(item, selector) && result.push(item) } else if (_dom_adapter.default.isNode(selector) || (0, _type.isWindow)(selector)) { selector === item && result.push(item) } else if ((0, _type.isFunction)(selector)) { selector.call(item, i, item) && result.push(item) } else { for (let j = 0; j < selector.length; j++) { selector[j] === item && result.push(item) } } } return renderer(result) }; initRender.prototype.not = function(selector) { const result = []; const nodes = this.filter(selector).toArray(); for (let i = 0; i < this.length; i++) { if (-1 === nodes.indexOf(this[i])) { result.push(this[i]) } } return renderer(result) }; initRender.prototype.is = function(selector) { return !!this.filter(selector).length }; initRender.prototype.children = function(selector) { let result = []; for (let i = 0; i < this.length; i++) { const nodes = this[i] ? this[i].childNodes : []; for (let j = 0; j < nodes.length; j++) { if (_dom_adapter.default.isElementNode(nodes[j])) { result.push(nodes[j]) } } } result = renderer(result); return selector ? result.filter(selector) : result }; initRender.prototype.siblings = function() { const element = this[0]; if (!element || !element.parentNode) { return renderer() } const result = []; const parentChildNodes = element.parentNode.childNodes || []; for (let i = 0; i < parentChildNodes.length; i++) { const node = parentChildNodes[i]; if (_dom_adapter.default.isElementNode(node) && node !== element) { result.push(node) } } return renderer(result) }; initRender.prototype.each = function(callback) { for (let i = 0; i < this.length; i++) { if (false === callback.call(this[i], i, this[i])) { break } } }; initRender.prototype.index = function(element) { if (!element) { return this.parent().children().index(this) } element = renderer(element); return this.toArray().indexOf(element[0]) }; initRender.prototype.get = function(index) { return this[index < 0 ? this.length + index : index] }; initRender.prototype.eq = function(index) { index = index < 0 ? this.length + index : index; return renderer(this[index]) }; initRender.prototype.first = function() { return this.eq(0) }; initRender.prototype.last = function() { return this.eq(-1) }; initRender.prototype.select = function() { for (let i = 0; i < this.length; i += 1) { this[i].select && this[i].select() } return this }; initRender.prototype.parent = function(selector) { if (!this[0]) { return renderer() } const result = renderer(this[0].parentNode); return !selector || result.is(selector) ? result : renderer() }; initRender.prototype.parents = function(selector) { const result = []; let parent = this.parent(); while (parent && parent[0] && !_dom_adapter.default.isDocument(parent[0])) { if (_dom_adapter.default.isElementNode(parent[0])) { if (!selector || parent.is(selector)) { result.push(parent.get(0)) } } parent = parent.parent() } return renderer(result) }; initRender.prototype.closest = function(selector) { if (this.is(selector)) { return this } let parent = this.parent(); while (parent && parent.length) { if (parent.is(selector)) { return parent } parent = parent.parent() } return renderer() }; initRender.prototype.next = function(selector) { if (!this[0]) { return renderer() } let next = renderer(this[0].nextSibling); if (!arguments.length) { return next } while (next && next.length) { if (next.is(selector)) { return next } next = next.next() } return renderer() }; initRender.prototype.prev = function() { if (!this[0]) { return renderer() } return renderer(this[0].previousSibling) }; initRender.prototype.add = function(selector) { const targets = renderer(selector); const result = this.toArray(); for (let i = 0; i < targets.length; i++) { const target = targets[i]; if (-1 === result.indexOf(target)) { result.push(target) } } return renderer(result) }; const emptyArray = []; initRender.prototype.splice = function() { return renderer(emptyArray.splice.apply(this, arguments)) }; initRender.prototype.slice = function() { return renderer(emptyArray.slice.apply(this, arguments)) }; initRender.prototype.toArray = function() { return emptyArray.slice.call(this) }; initRender.prototype.offset = function() { if (!this[0]) { return } return (0, _size.getOffset)(this[0]) }; initRender.prototype.offsetParent = function() { if (!this[0]) { return renderer() } let offsetParent = renderer(this[0].offsetParent); while (offsetParent[0] && "static" === offsetParent.css("position")) { offsetParent = renderer(offsetParent[0].offsetParent) } offsetParent = offsetParent[0] ? offsetParent : renderer(_dom_adapter.default.getDocumentElement()); return offsetParent }; initRender.prototype.position = function() { if (!this[0]) { return } let offset; const marginTop = parseFloat(this.css("marginTop")); const marginLeft = parseFloat(this.css("marginLeft")); if ("fixed" === this.css("position")) { offset = this[0].getBoundingClientRect(); return { top: offset.top - marginTop, left: offset.left - marginLeft } } offset = this.offset(); const offsetParent = this.offsetParent(); let parentOffset = { top: 0, left: 0 }; if ("HTML" !== offsetParent[0].nodeName) { parentOffset = offsetParent.offset() } parentOffset = { top: parentOffset.top + parseFloat(offsetParent.css("borderTopWidth")), left: parentOffset.left + parseFloat(offsetParent.css("borderLeftWidth")) }; return { top: offset.top - parentOffset.top - marginTop, left: offset.left - parentOffset.left - marginLeft } }; [{ name: "scrollLeft", offsetProp: "pageXOffset", scrollWindow: function(win, value) { win.scrollTo(value, win.pageYOffset) } }, { name: "scrollTop", offsetProp: "pageYOffset", scrollWindow: function(win, value) { win.scrollTo(win.pageXOffset, value) } }].forEach((function(directionStrategy) { const propName = directionStrategy.name; initRender.prototype[propName] = function(value) { if (!this[0]) { return } const window = (0, _size.getWindowByElement)(this[0]); if (void 0 === value) { return window ? window[directionStrategy.offsetProp] : this[0][propName] } if (window) { directionStrategy.scrollWindow(window, value) } else { this[0][propName] = value } return this } })); initRender.prototype.data = function(key, value) { if (!this[0]) { return } if (arguments.length < 2) { return _element_data.data.call(renderer, this[0], key) } _element_data.data.call(renderer, this[0], key, value); return this }; initRender.prototype.removeData = function(key) { this[0] && (0, _element_data.removeData)(this[0], key); return this }; const rendererWrapper = function() { return renderer.apply(this, arguments) }; Object.defineProperty(rendererWrapper, "fn", { enumerable: true, configurable: true, get: function() { return renderer.fn }, set: function(value) { renderer.fn = value } }); exports.default = { set: function(strategy) { renderer = strategy }, get: function() { return rendererWrapper } } }, 57785: /*!**********************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/core/m_resize_observer.js ***! \**********************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.resizeObserverSingleton = void 0; var _common = __webpack_require__( /*! ../../core/utils/common */ 17781); var _m_window = (e = __webpack_require__( /*! ./utils/m_window */ 14470), e && e.__esModule ? e : { default: e }); var e; const window = _m_window.default.getWindow(); const ResizeObserverMock = { observe: _common.noop, unobserve: _common.noop, disconnect: _common.noop }; exports.resizeObserverSingleton = new class { constructor() { if (!_m_window.default.hasWindow() || !window.ResizeObserver) { return ResizeObserverMock } this._callbacksMap = new Map; this._observer = new window.ResizeObserver((entries => { entries.forEach((entry => { var _this$_callbacksMap$g; null === (_this$_callbacksMap$g = this._callbacksMap.get(entry.target)) || void 0 === _this$_callbacksMap$g || _this$_callbacksMap$g(entry) })) })) } observe(element, callback) { this._callbacksMap.set(element, callback); this._observer.observe(element) } unobserve(element) { this._callbacksMap.delete(element); this._observer.unobserve(element) } disconnect() { this._callbacksMap.clear(); this._observer.disconnect() } } }, 61644: /*!**************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/core/m_set_template_engine.js ***! \**************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "setTemplateEngine", { enumerable: true, get: function() { return _template_engine_registry.setTemplateEngine } }); var _template_engine_registry = __webpack_require__( /*! ../../core/templates/template_engine_registry */ 35155) }, 66298: /*!***********************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/core/m_template_manager.js ***! \***********************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = exports.TemplateManager = void 0; var _renderer = (e = __webpack_require__( /*! ../../core/renderer */ 64553), e && e.__esModule ? e : { default: e }); var e; var _empty_template = __webpack_require__( /*! ../../core/templates/empty_template */ 48650); var _function_template = __webpack_require__( /*! ../../core/templates/function_template */ 38699); var _common = __webpack_require__( /*! ../../core/utils/common */ 17781); var _extend = __webpack_require__( /*! ../../core/utils/extend */ 52576); var _template_manager = __webpack_require__( /*! ../../core/utils/template_manager */ 49194); var _type = __webpack_require__( /*! ../../core/utils/type */ 11528); const DX_POLYMORPH_WIDGET_TEMPLATE = new _function_template.FunctionTemplate((_ref => { let { model: model, parent: parent } = _ref; const widgetName = model.widget; if (!widgetName) { return (0, _renderer.default)() } const widgetElement = (0, _renderer.default)("
"); const widgetOptions = model.options || {}; if (parent) { parent._createComponent(widgetElement, widgetName, widgetOptions) } else { widgetElement[widgetName](widgetOptions) } return widgetElement })); class TemplateManager { constructor(createElement, anonymousTemplateName) { this._tempTemplates = []; this._defaultTemplates = {}; this._anonymousTemplateName = anonymousTemplateName || "template"; this._createElement = createElement || _template_manager.defaultCreateElement; this._createTemplateIfNeeded = this._createTemplateIfNeeded.bind(this) } static createDefaultOptions() { return { integrationOptions: { watchMethod: function(fn, callback) { let options = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : {}; if (!options.skipImmediate) { callback(fn()) } return _common.noop }, templates: { "dx-polymorph-widget": DX_POLYMORPH_WIDGET_TEMPLATE }, useDeferUpdateForTemplates: true } } } get anonymousTemplateName() { return this._anonymousTemplateName } addDefaultTemplates(templates) { this._defaultTemplates = (0, _extend.extend)({}, this._defaultTemplates, templates) } dispose() { this._tempTemplates.forEach((tempTemplate => { tempTemplate.template.dispose && tempTemplate.template.dispose() })); this._tempTemplates = [] } extractTemplates($el) { const templates = this._extractTemplates($el); const anonymousTemplateMeta = this._extractAnonymousTemplate($el); return { templates: templates, anonymousTemplateMeta: anonymousTemplateMeta } } _extractTemplates($el) { const templates = (0, _template_manager.findTemplates)($el, "dxTemplate"); const suitableTemplates = (0, _template_manager.suitableTemplatesByName)(templates); templates.forEach((_ref2 => { let { element: element, options: { name: name } } = _ref2; if (element === suitableTemplates[name]) { (0, _renderer.default)(element).addClass("dx-template-wrapper").detach() } else { (0, _renderer.default)(element).remove() } })); return Object.keys(suitableTemplates).map((name => ({ name: name, template: this._createTemplate(suitableTemplates[name]) }))) } _extractAnonymousTemplate($el) { const $anonymousTemplate = $el.contents().detach(); const $notJunkTemplateContent = $anonymousTemplate.filter(((_, element) => { const isTextNode = 3 === element.nodeType; const isEmptyText = (0, _renderer.default)(element).text().trim().length < 1; return !(isTextNode && isEmptyText) })); return $notJunkTemplateContent.length > 0 ? { template: this._createTemplate($anonymousTemplate), name: this._anonymousTemplateName } : {} } _createTemplateIfNeeded(templateSource) { const cachedTemplate = this._tempTemplates.filter((tempTemplate => tempTemplate.source === (0, _template_manager.templateKey)(templateSource)))[0]; if (cachedTemplate) { return cachedTemplate.template } const template = this._createTemplate(templateSource); this._tempTemplates.push({ template: template, source: (0, _template_manager.templateKey)(templateSource) }); return template } _createTemplate(templateSource) { return this._createElement((0, _template_manager.validateTemplateSource)(templateSource)) } getTemplate(templateSource, templates, _ref3, context) { let { isAsyncTemplate: isAsyncTemplate, skipTemplates: skipTemplates } = _ref3; if (!(0, _type.isFunction)(templateSource)) { return (0, _template_manager.acquireTemplate)(templateSource, this._createTemplateIfNeeded, templates, isAsyncTemplate, skipTemplates, this._defaultTemplates) } return new _function_template.FunctionTemplate((options => { const templateSourceResult = templateSource.apply(context, (0, _template_manager.getNormalizedTemplateArgs)(options)); if (!(0, _type.isDefined)(templateSourceResult)) { return new _empty_template.EmptyTemplate } let dispose = false; const template = (0, _template_manager.acquireTemplate)(templateSourceResult, (templateSource => { if (templateSource.nodeType || (0, _type.isRenderer)(templateSource) && !(0, _renderer.default)(templateSource).is("script")) { return new _function_template.FunctionTemplate((() => templateSource)) } dispose = true; return this._createTemplate(templateSource) }), templates, isAsyncTemplate, skipTemplates, this._defaultTemplates); const result = template.render(options); dispose && template.dispose && template.dispose(); return result })) } } exports.TemplateManager = TemplateManager; exports.default = { TemplateManager: TemplateManager } }, 43399: /*!********************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/core/options/m_index.js ***! \********************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.Options = void 0; var _option_manager = __webpack_require__( /*! ../../../core/options/option_manager */ 1896); var _utils = __webpack_require__( /*! ../../../core/options/utils */ 53904); var _common = __webpack_require__( /*! ../../../core/utils/common */ 17781); var _data = __webpack_require__( /*! ../../../core/utils/data */ 31e3); var _extend = __webpack_require__( /*! ../../../core/utils/extend */ 52576); var _type = __webpack_require__( /*! ../../../core/utils/type */ 11528); function _extends() { return _extends = Object.assign ? Object.assign.bind() : function(n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) { ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]) } } return n }, _extends.apply(null, arguments) } exports.Options = class { constructor(options, defaultOptions, optionsByReference, deprecatedOptions) { this._deprecatedCallback; this._startChangeCallback; this._endChangeCallback; this._validateOptionsCallback; this._default = defaultOptions; this._deprecated = deprecatedOptions; this._deprecatedNames = []; this._initDeprecatedNames(); this._optionManager = new _option_manager.OptionManager(options, optionsByReference); this._optionManager.onRelevantNamesPrepared(((options, name, value, silent) => this._setRelevantNames(options, name, value, silent))); this._cachedOptions = {}; this._rules = [] } set _initial(value) { this._initialOptions = value } get _initial() { if (!this._initialOptions) { const rulesOptions = this._getByRules(this.silent("defaultOptionsRules")); this._initialOptions = this._default; this._optionManager._setByReference(this._initialOptions, rulesOptions) } return this._initialOptions } _initDeprecatedNames() { for (const optionName in this._deprecated) { this._deprecatedNames.push(optionName) } } _getByRules(rules) { rules = Array.isArray(rules) ? this._rules.concat(rules) : this._rules; return (0, _utils.convertRulesToOptions)(rules) } _notifyDeprecated(option) { const info = this._deprecated[option]; if (info) { this._deprecatedCallback(option, info) } } _setRelevantNames(options, name, value, silent) { if (name) { const normalizedName = this._normalizeName(name, silent); if (normalizedName && normalizedName !== name) { this._setField(options, normalizedName, value); this._clearField(options, name) } } } _setField(options, fullName, value) { let fieldName = ""; let fieldObject = null; do { fieldName = fieldName ? `.${fieldName}` : ""; fieldName = (0, _utils.getFieldName)(fullName) + fieldName; fullName = (0, _utils.getParentName)(fullName); fieldObject = fullName ? this._optionManager.get(options, fullName, false) : options } while (!fieldObject); fieldObject[fieldName] = value } _clearField(options, name) { delete options[name]; const previousFieldName = (0, _utils.getParentName)(name); const fieldObject = previousFieldName ? this._optionManager.get(options, previousFieldName, false) : options; if (fieldObject) { delete fieldObject[(0, _utils.getFieldName)(name)] } } _normalizeName(name, silent) { if (this._deprecatedNames.length && name) { for (let i = 0; i < this._deprecatedNames.length; i++) { if (this._deprecatedNames[i] === name) { const deprecate = this._deprecated[name]; if (deprecate) { !silent && this._notifyDeprecated(name); return deprecate.alias || name } } } } return name } addRules(rules) { this._rules = rules.concat(this._rules) } applyRules(rules) { const options = this._getByRules(rules); this.silent(options) } dispose() { this._deprecatedCallback = _common.noop; this._startChangeCallback = _common.noop; this._endChangeCallback = _common.noop; this._optionManager.dispose() } onChanging(callBack) { this._optionManager.onChanging(callBack) } onChanged(callBack) { this._optionManager.onChanged(callBack) } validateOptions(callBack) { this._optionManager.onValidateOptions(callBack) } onDeprecated(callBack) { this._deprecatedCallback = callBack } onStartChange(callBack) { this._startChangeCallback = callBack } onEndChange(callBack) { this._endChangeCallback = callBack } isInitial(name) { const value = this.silent(name); const initialValue = this.initial(name); const areFunctions = (0, _type.isFunction)(value) && (0, _type.isFunction)(initialValue); return areFunctions ? value.toString() === initialValue.toString() : (0, _common.equalByValue)(value, initialValue) } initial(name) { return (0, _utils.getNestedOptionValue)(this._initial, name) } option(options, value) { const isGetter = arguments.length < 2 && "object" !== (0, _type.type)(options); if (isGetter) { return this._optionManager.get(void 0, this._normalizeName(options)) } this._startChangeCallback(); try { this._optionManager.set(options, value) } finally { this._endChangeCallback() } } silent(options, value) { const isGetter = arguments.length < 2 && "object" !== (0, _type.type)(options); if (isGetter) { return this._optionManager.get(void 0, options, void 0, true) } this._optionManager.set(options, value, void 0, true) } reset(name) { if (name) { const fullPath = (0, _data.getPathParts)(name); const value = fullPath.reduce(((value, field) => value ? value[field] : this.initial(field)), null); const defaultValue = (0, _type.isObject)(value) ? _extends({}, value) : value; this._optionManager.set(name, defaultValue, false) } } getAliasesByName(name) { return Object.keys(this._deprecated).filter((aliasName => name === this._deprecated[aliasName].alias)) } isDeprecated(name) { return Object.prototype.hasOwnProperty.call(this._deprecated, name) } cache(name, options) { const isGetter = arguments.length < 2; if (isGetter) { return this._cachedOptions[name] } this._cachedOptions[name] = (0, _extend.extend)(this._cachedOptions[name], options) } } }, 59830: /*!*****************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/core/options/m_option_manager.js ***! \*****************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.OptionManager = void 0; var _utils = __webpack_require__( /*! ../../../core/options/utils */ 53904); var _common = __webpack_require__( /*! ../../../core/utils/common */ 17781); var _comparator = __webpack_require__( /*! ../../../core/utils/comparator */ 60648); var _data = __webpack_require__( /*! ../../../core/utils/data */ 31e3); var _extend = __webpack_require__( /*! ../../../core/utils/extend */ 52576); var _type = __webpack_require__( /*! ../../../core/utils/type */ 11528); const cachedGetters = {}; const cachedSetters = {}; exports.OptionManager = class { constructor(options, optionsByReference) { this._options = options; this._optionsByReference = optionsByReference; this._changingCallback; this._changedCallback; this._namePreparedCallbacks; this._validateOptionsCallback } _setByReference(options, rulesOptions) { (0, _extend.extend)(true, options, rulesOptions); for (const fieldName in this._optionsByReference) { if (Object.prototype.hasOwnProperty.call(rulesOptions, fieldName)) { options[fieldName] = rulesOptions[fieldName] } } } _setPreparedValue(name, value, merge, silent) { const previousValue = this.get(this._options, name, false); if (!(0, _comparator.equals)(previousValue, value)) { const path = (0, _data.getPathParts)(name); !silent && this._changingCallback(name, previousValue, value); cachedSetters[name] = cachedSetters[name] || (0, _data.compileSetter)(name); cachedSetters[name](this._options, value, { functionsAsIs: true, merge: (0, _type.isDefined)(merge) ? merge : !this._optionsByReference[name], unwrapObservables: path.length > 1 && !!this._optionsByReference[path[0]] }); !silent && this._changedCallback(name, value, previousValue) } } _prepareRelevantNames(options, name, value, silent) { if ((0, _type.isPlainObject)(value)) { for (const valueName in value) { this._prepareRelevantNames(options, `${name}.${valueName}`, value[valueName]) } } this._namePreparedCallbacks(options, name, value, silent) } get() { let options = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : this._options; let name = arguments.length > 1 ? arguments[1] : void 0; let unwrapObservables = arguments.length > 2 ? arguments[2] : void 0; cachedGetters[name] = cachedGetters[name] || (0, _data.compileGetter)(name); return cachedGetters[name](options, { functionsAsIs: true, unwrapObservables: unwrapObservables }) } set(options, value, merge, silent) { options = (0, _utils.normalizeOptions)(options, value); for (const name in options) { this._prepareRelevantNames(options, name, options[name], silent) } if (this._validateOptionsCallback) { options = this._validateOptionsCallback(options) } for (const name in options) { this._setPreparedValue(name, options[name], merge, silent) } } onRelevantNamesPrepared(callBack) { this._namePreparedCallbacks = callBack } onChanging(callBack) { this._changingCallback = callBack } onChanged(callBack) { this._changedCallback = callBack } onValidateOptions(callback) { this._validateOptionsCallback = callback } dispose() { this._changingCallback = _common.noop; this._changedCallback = _common.noop } } }, 33810: /*!********************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/core/options/m_utils.js ***! \********************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.normalizeOptions = exports.getParentName = exports.getNestedOptionValue = exports.getFieldName = exports.deviceMatch = exports.createDefaultOptionRules = exports.convertRulesToOptions = void 0; var _devices = (e = __webpack_require__( /*! ../../../core/devices */ 65951), e && e.__esModule ? e : { default: e }); var e; var _common = __webpack_require__( /*! ../../../core/utils/common */ 17781); var _data = __webpack_require__( /*! ../../../core/utils/data */ 31e3); var _extend = __webpack_require__( /*! ../../../core/utils/extend */ 52576); var _type = __webpack_require__( /*! ../../../core/utils/type */ 11528); const cachedGetters = {}; exports.convertRulesToOptions = rules => { const currentDevice = _devices.default.current(); return rules.reduce(((options, _ref) => { let { device: device, options: ruleOptions } = _ref; const deviceFilter = device || {}; const match = (0, _type.isFunction)(deviceFilter) ? deviceFilter(currentDevice) : deviceMatch(currentDevice, deviceFilter); if (match) { (0, _extend.extend)(true, options, ruleOptions) } return options }), {}) }; exports.normalizeOptions = (options, value) => "string" !== typeof options ? options : { [options]: value }; const deviceMatch = (device, filter) => (0, _type.isEmptyObject)(filter) || (0, _common.findBestMatches)(device, [filter]).length > 0; exports.deviceMatch = deviceMatch; exports.getFieldName = fullName => fullName.substr(fullName.lastIndexOf(".") + 1); exports.getParentName = fullName => fullName.substr(0, fullName.lastIndexOf(".")); exports.getNestedOptionValue = function(optionsObject, name) { cachedGetters[name] = cachedGetters[name] || (0, _data.compileGetter)(name); return cachedGetters[name](optionsObject, { functionsAsIs: true }) }; exports.createDefaultOptionRules = function() { let options = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : []; return options } }, 28112: /*!******************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/core/r1/base_props.js ***! \******************************************************************************/ function(__unused_webpack_module, exports) { Object.defineProperty(exports, "__esModule", { value: true }); exports.BaseWidgetDefaultProps = void 0; exports.BaseWidgetDefaultProps = { className: "", activeStateEnabled: false, disabled: false, focusStateEnabled: false, hoverStateEnabled: false, tabIndex: 0, visible: true } }, 34993: /*!*************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/core/r1/component_wrapper.js ***! \*************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.ComponentWrapper = void 0; __webpack_require__( /*! ../../../common/core/events/click */ 64044); __webpack_require__( /*! ../../../common/core/events/core/emitter.feedback */ 69331); __webpack_require__( /*! ../../../common/core/events/hover */ 638); var _dom_adapter = _interopRequireDefault(__webpack_require__( /*! ../../../core/dom_adapter */ 64960)); var _dom_component = _interopRequireDefault(__webpack_require__( /*! ../../../core/dom_component */ 97832)); var _element = __webpack_require__( /*! ../../../core/element */ 61404); var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../../core/renderer */ 64553)); var _extend = __webpack_require__( /*! ../../../core/utils/extend */ 52576); var _type = __webpack_require__( /*! ../../../core/utils/type */ 11528); var _inferno = __webpack_require__( /*! inferno */ 76231); var _keyboard_processor = _interopRequireDefault(__webpack_require__( /*! ../../../common/core/events/core/keyboard_processor */ 52818)); var _inferno_renderer = _interopRequireDefault(__webpack_require__( /*! ../../../core/inferno_renderer */ 16965)); var _template_wrapper = __webpack_require__( /*! ./template_wrapper */ 34554); var _index = __webpack_require__( /*! ./utils/index */ 10632); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } function _extends() { return _extends = Object.assign ? Object.assign.bind() : function(n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) { ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]) } } return n }, _extends.apply(null, arguments) } const setDefaultOptionValue = (options, defaultValueGetter) => name => { if (Object.prototype.hasOwnProperty.call(options, name) && void 0 === options[name]) { options[name] = defaultValueGetter(name) } }; class ComponentWrapper extends _dom_component.default { get _propsInfo() { return { allowNull: [], twoWay: [], elements: [], templates: [], props: [] } } constructor(element, options) { super(element, options); this._shouldRaiseContentReady = false; this.validateKeyDownHandler() } validateKeyDownHandler() { const supportedKeyNames = this.getSupportedKeyNames(); const hasComponentDefaultKeyHandlers = supportedKeyNames.length > 0; const hasComponentKeyDownMethod = "function" === typeof this._viewComponent.prototype.keyDown; if (hasComponentDefaultKeyHandlers && !hasComponentKeyDownMethod) { throw Error("Component's declaration must have 'keyDown' method.") } } get viewRef() { var _this$_viewRef; return null === (_this$_viewRef = this._viewRef) || void 0 === _this$_viewRef ? void 0 : _this$_viewRef.current } _checkContentReadyOption(fullName) { const contentReadyOptions = this._getContentReadyOptions().reduce(((options, name) => { options[name] = true; return options }), {}); this._checkContentReadyOption = optionName => !!contentReadyOptions[optionName]; return this._checkContentReadyOption(fullName) } _getContentReadyOptions() { return ["rtlEnabled"] } _fireContentReady() { this._actionsMap.onContentReady({}) } _getDefaultOptions() { const viewDefaultProps = this._getViewComponentDefaultProps(); return (0, _extend.extend)(true, super._getDefaultOptions(), viewDefaultProps, this._propsInfo.twoWay.reduce(((options, _ref) => { let [name, defaultName, eventName] = _ref; return _extends({}, options, { [name]: viewDefaultProps[defaultName], [eventName]: value => this.option(name, value) }) }), {}), this._propsInfo.templates.reduce(((options, name) => _extends({}, options, { [name]: null })), {})) } _getUnwrappedOption() { const unwrappedProps = {}; Object.keys(this.option()).forEach((key => { unwrappedProps[key] = this.option(key) })); return unwrappedProps } _initializeComponent() { var _this$_templateManage; super._initializeComponent(); null === (_this$_templateManage = this._templateManager) || void 0 === _this$_templateManage || _this$_templateManage.addDefaultTemplates(this.getDefaultTemplates()); const optionProxy = this._getUnwrappedOption(); this._props = this._optionsWithDefaultTemplates(optionProxy); this._propsInfo.templates.forEach((template => { this._componentTemplates[template] = this._createTemplateComponent(this._props[template]) })); Object.keys(this._getActionConfigsFull()).forEach((name => this._addAction(name))); this._viewRef = (0, _inferno.createRef)(); this.defaultKeyHandlers = this._createDefaultKeyHandlers() } _initMarkup() { const props = this.getProps(); this._renderWrapper(props) } _renderWrapper(props) { const containerNode = this.$element()[0]; if (!this._isNodeReplaced) { _inferno_renderer.default.onPreRender() } _inferno_renderer.default.render(this._viewComponent, props, containerNode, this._isNodeReplaced); if (!this._isNodeReplaced) { this._isNodeReplaced = true; _inferno_renderer.default.onAfterRender(); this._shouldRaiseContentReady = true } if (this._shouldRaiseContentReady) { this._fireContentReady(); this._shouldRaiseContentReady = false } } _silent(name, value) { this._options.silent(name, value) } _render() {} _removeWidget() { _inferno_renderer.default.remove(this.$element()[0]) } _dispose() { this._removeWidget(); super._dispose() } get elementAttr() { const element = this.$element()[0]; if (!this._elementAttr) { const { attributes: attributes } = element; const attrs = Array.from(attributes).filter((attr => { var _attributes$attr$name; return !this._propsInfo.templates.includes(attr.name) && (null === (_attributes$attr$name = attributes[attr.name]) || void 0 === _attributes$attr$name ? void 0 : _attributes$attr$name.specified) })).reduce(((result, _ref2) => { let { name: name, value: value } = _ref2; const updatedAttributes = result; const isDomAttr = name in element; updatedAttributes[name] = "" === value && isDomAttr ? element[name] : value; return updatedAttributes }), {}); this._elementAttr = attrs; this._storedClasses = element.getAttribute("class") || "" } const elemStyle = element.style; const style = {}; for (let i = 0; i < elemStyle.length; i += 1) { style[elemStyle[i]] = elemStyle.getPropertyValue(elemStyle[i]) } this._elementAttr.style = style; this._elementAttr.class = this._storedClasses; return this._elementAttr } _getAdditionalActionConfigs() { return { onContentReady: { excludeValidators: ["disabled", "readOnly"] } } } _getAdditionalProps() { return [] } _patchOptionValues(options) { const { allowNull: allowNull, twoWay: twoWay, elements: elements, props: props } = this._propsInfo; const viewDefaultProps = this._getViewComponentDefaultProps(); const defaultWidgetPropsKeys = Object.keys(viewDefaultProps); const defaultOptions = this._getDefaultOptions(); const { ref: ref, children: children, onKeyboardHandled: onKeyboardHandled } = options; const onKeyDown = onKeyboardHandled ? (_, event_options) => { onKeyboardHandled(event_options) } : void 0; const widgetProps = { ref: ref, children: children, onKeyDown: onKeyDown }; [...props, ...this._getAdditionalProps()].forEach((propName => { if (Object.prototype.hasOwnProperty.call(options, propName)) { widgetProps[propName] = options[propName] } })); allowNull.forEach(setDefaultOptionValue(widgetProps, (() => null))); defaultWidgetPropsKeys.forEach(setDefaultOptionValue(widgetProps, (name => defaultOptions[name]))); twoWay.forEach((_ref3 => { let [name, defaultName] = _ref3; setDefaultOptionValue(widgetProps, (() => defaultOptions[defaultName]))(name) })); elements.forEach((name => { if (name in widgetProps) { const value = widgetProps[name]; if ((0, _type.isRenderer)(value)) { widgetProps[name] = this._patchElementParam(value) } } })); return widgetProps } getSupportedKeyNames() { return [] } prepareStyleProp(props) { if ("string" === typeof props.style) { return _extends({}, props, { style: {}, cssText: props.style }) } return props } getProps() { const { elementAttr: elementAttr } = this.option(); const options = this._patchOptionValues(_extends({}, this._props, { ref: this._viewRef, children: this._extractDefaultSlot(), aria: this._aria })); this._propsInfo.templates.forEach((template => { options[template] = this._componentTemplates[template] })); return this.prepareStyleProp(_extends({}, options, this.elementAttr, elementAttr, { className: [...(this.elementAttr.class ?? "").split(" "), ...((null === elementAttr || void 0 === elementAttr ? void 0 : elementAttr.class) ?? "").split(" ")].filter(((c, i, a) => c && a.indexOf(c) === i)).join(" ").trim(), class: "" }, this._actionsMap)) } _getActionConfigs() { return {} } _getActionConfigsFull() { return _extends({}, this._getActionConfigs(), this._getAdditionalActionConfigs()) } getDefaultTemplates() { const defaultTemplates = Object.values(this._templatesInfo); const result = {}; defaultTemplates.forEach((template => { result[template] = "dx-renovation-template-mock" })); return result } get _templatesInfo() { return {} } _optionsWithDefaultTemplates(options) { const templateOptions = Object.entries(this._templatesInfo).reduce(((result, _ref4) => { let [templateName, templateValue] = _ref4; return _extends({}, result, { [templateName]: options[templateName] ?? templateValue }) }), {}); return _extends({}, options, templateOptions) } _init() { super._init(); this.customKeyHandlers = {}; this._actionsMap = {}; this._aria = {}; this._componentTemplates = {} } _createDefaultKeyHandlers() { const result = {}; const keys = this.getSupportedKeyNames(); keys.forEach((key => { result[key] = e => this.viewRef.keyDown(_keyboard_processor.default.createKeyDownOptions(e)) })); return result } _addAction(event, actionToAdd) { let action = actionToAdd; if (!action) { const actionByOption = this._createActionByOption(event, this._getActionConfigsFull()[event]); action = actArgs => { Object.keys(actArgs).forEach((name => { if ((0, _type.isDefined)(actArgs[name]) && _dom_adapter.default.isNode(actArgs[name])) { actArgs[name] = (0, _element.getPublicElement)((0, _renderer.default)(actArgs[name])) } })); return actionByOption(actArgs) } } this._actionsMap[event] = action } _optionChanged(option) { const { name: name, fullName: fullName, value: value, previousValue: previousValue } = option; (0, _index.updatePropsImmutable)(this._props, this.option(), name, fullName); if (this._propsInfo.templates.includes(name) && value !== previousValue) { this._componentTemplates[name] = this._createTemplateComponent(value) } if (name && this._getActionConfigsFull()[name]) { this._addAction(name) } this._shouldRaiseContentReady = this._shouldRaiseContentReady || this._checkContentReadyOption(fullName); super._optionChanged(option); this._invalidate() } _validateOptions(options) { return super._validateOptions(options) } _extractDefaultSlot() { if (this.option("_hasAnonymousTemplateContent")) { return _inferno_renderer.default.createElement(_template_wrapper.TemplateWrapper, { template: this._getTemplate(this._templateManager.anonymousTemplateName), transclude: true, renovated: true }) } return null } _createTemplateComponent(templateOption) { if (!templateOption) { return } const template = this._getTemplate(templateOption); if ((0, _type.isString)(template) && "dx-renovation-template-mock" === template) { return } return model => _inferno_renderer.default.createElement(_template_wrapper.TemplateWrapper, (0, _template_wrapper.buildTemplateArgs)(model, template)) } _wrapKeyDownHandler(initialHandler) { return options => { const { originalEvent: originalEvent, keyName: keyName, which: which } = options; const keys = this.customKeyHandlers; const func = keys[keyName] || keys[which]; if (void 0 !== func) { const handler = func.bind(this); const result = handler(originalEvent, options); if (!result) { originalEvent.cancel = true; return originalEvent } } return null === initialHandler || void 0 === initialHandler ? void 0 : initialHandler(originalEvent, options) } } _toPublicElement(element) { return (0, _element.getPublicElement)((0, _renderer.default)(element)) } _patchElementParam(value) { try { const result = (0, _renderer.default)(value); const element = null === result || void 0 === result ? void 0 : result.get(0); return null !== element && void 0 !== element && element.nodeType ? element : value } catch (error) { return value } } focus() { const $root = this.$element(); const hasFocus = $root.is(":focus") || $root.find(":focus").length > 0; if (hasFocus) { return } if (this.option("focusStateEnabled")) { $root.focus() } else { var _focusableElements$; const focusableElements = $root.find("[tabindex]"); null === (_focusableElements$ = focusableElements[0]) || void 0 === _focusableElements$ || _focusableElements$.focus() } } repaint() { this._isNodeReplaced = false; this._shouldRaiseContentReady = true; this._removeWidget(); this._refresh() } _supportedKeys() { return _extends({}, this.defaultKeyHandlers, this.customKeyHandlers) } registerKeyHandler(key, handler) { this.customKeyHandlers[key] = handler } setAria(name, value) { this._aria[name] = value; this._initMarkup() } _getViewComponentDefaultProps() { return this._viewComponent.defaultProps || {} } } exports.ComponentWrapper = ComponentWrapper; ComponentWrapper.IS_RENOVATED_WIDGET = false; ComponentWrapper.IS_RENOVATED_WIDGET = true }, 12274: /*!**********************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/core/r1/config_context.js ***! \**********************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.ConfigContext = void 0; var _index = __webpack_require__( /*! ../../core/r1/runtime/inferno/index */ 6257); exports.ConfigContext = (0, _index.createContext)(void 0) }, 86688: /*!***********************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/core/r1/config_provider.js ***! \***********************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.ConfigProviderDefaultProps = exports.ConfigProvider = void 0; var _index = __webpack_require__( /*! ../../core/r1/runtime/inferno/index */ 6257); var _config_context = __webpack_require__( /*! ./config_context */ 12274); function _extends() { return _extends = Object.assign ? Object.assign.bind() : function(n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) { ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]) } } return n }, _extends.apply(null, arguments) } const ConfigProviderDefaultProps = exports.ConfigProviderDefaultProps = {}; class ConfigProvider extends _index.BaseInfernoComponent { constructor() { super(...arguments); this.__getterCache = {} } get config() { if (void 0 !== this.__getterCache.config) { return this.__getterCache.config } return this.__getterCache.config = (() => ({ rtlEnabled: this.props.rtlEnabled }))() } componentWillUpdate(nextProps) { if (this.props.rtlEnabled !== nextProps.rtlEnabled) { this.__getterCache.config = void 0 } } getChildContext() { return _extends({}, this.context, { [_config_context.ConfigContext.id]: this.config || _config_context.ConfigContext.defaultValue }) } render() { return this.props.children } } exports.ConfigProvider = ConfigProvider; ConfigProvider.defaultProps = ConfigProviderDefaultProps }, 10922: /*!*****************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/core/r1/dom_component_wrapper.js ***! \*****************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.DomComponentWrapper = void 0; var _inferno = __webpack_require__( /*! inferno */ 76231); var _index = __webpack_require__( /*! ../../core/r1/runtime/inferno/index */ 6257); var _get_updated_options = __webpack_require__( /*! ../../core/r1/utils/get_updated_options */ 15393); var _extend = __webpack_require__( /*! ../../../core/utils/extend */ 52576); var _config_context = __webpack_require__( /*! ./config_context */ 12274); const _excluded = ["componentProps", "componentType", "templateNames"]; function _extends() { return _extends = Object.assign ? Object.assign.bind() : function(n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) { ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]) } } return n }, _extends.apply(null, arguments) } const normalizeProps = props => Object.keys(props).reduce(((accumulator, key) => { if (void 0 !== props[key]) { accumulator[key] = props[key] } return accumulator }), {}); class DomComponentWrapper extends _index.InfernoComponent { constructor(props) { super(props); this.state = {}; this.refs = null; this.widgetRef = (0, _inferno.createRef)(); this.instance = null; this.prevProps = null; this.getInstance = this.getInstance.bind(this); this.setupWidget = this.setupWidget.bind(this); this.updateWidget = this.updateWidget.bind(this) } getConfig() { const { id: id } = _config_context.ConfigContext; if (this.context[id]) { return this.context[id] } return _config_context.ConfigContext.defaultValue } render() { return normalizeProps((0, _inferno.createVNode)(1, "div", this.props.componentProps.className, null, 1, _extends({}, this.getRestAttributes()), null, this.widgetRef)) } componentWillUpdate(nextProps, nextState, context) { super.componentWillUpdate(nextProps, nextState, context) } createEffects() { return [new _index.InfernoEffect(this.setupWidget, []), new _index.InfernoEffect(this.updateWidget, [this.props.componentProps, this.getConfig(), this.props.templateNames])] } updateEffects() { var _this$_effects$; const dependency = [this.props.componentProps, this.getConfig(), this.props.templateNames]; null === (_this$_effects$ = this._effects[1]) || void 0 === _this$_effects$ || _this$_effects$.update(dependency) } setupWidget() { const current = this.widgetRef.current; const componentInstance = new this.props.componentType(current, this.getProperties()); this.instance = componentInstance; return () => { componentInstance.dispose(); this.instance = null } } updateWidget() { if (!this.instance) { return } const updatedOptions = (0, _get_updated_options.getUpdatedOptions)(this.prevProps ?? {}, this.getProperties()); if (updatedOptions.length) { this.instance.beginUpdate(); updatedOptions.forEach((_ref2 => { var _this$instance; const { path: path, value: value } = _ref2; null === (_this$instance = this.instance) || void 0 === _this$instance || _this$instance.option(path, value) })); this.instance.endUpdate() } this.prevProps = this.getProperties() } getRestAttributes() { const _this$props = this.props, restAttr = function(r, e) { if (null == r) { return {} } var t = {}; for (var n in r) { if ({}.hasOwnProperty.call(r, n)) { if (e.includes(n)) { continue } t[n] = r[n] } } return t }(_this$props, _excluded); return restAttr } getProperties() { var _this$getConfig; const normalizedProps = normalizeProps(this.props.componentProps); const { valueChange: valueChange } = normalizedProps; const properties = (0, _extend.extend)({ rtlEnabled: null === (_this$getConfig = this.getConfig()) || void 0 === _this$getConfig ? void 0 : _this$getConfig.rtlEnabled, isRenovated: true }, normalizedProps); if (valueChange) { properties.onValueChanged = _ref3 => { const { value: value } = _ref3; return valueChange(value) } } const templates = this.props.templateNames; templates.forEach((name => { if ((0, _index.hasTemplate)(name, properties, this)) { properties[name] = (item, index, container) => { (0, _index.renderTemplate)(this.props.componentProps[name], { item: item, index: index, container: container }, this) } } })); return properties } getInstance() { return this.instance } } exports.DomComponentWrapper = DomComponentWrapper }, 84766: /*!*************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/core/r1/index.js ***! \*************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "ComponentWrapper", { enumerable: true, get: function() { return _component_wrapper.ComponentWrapper } }); var _component_wrapper = __webpack_require__( /*! ./component_wrapper */ 34993) }, 5428: /*!**************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/core/r1/runtime/inferno/base_component.js ***! \**************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.InfernoWrapperComponent = exports.InfernoComponent = exports.BaseInfernoComponent = void 0; var _inferno = __webpack_require__( /*! inferno */ 76231); var _effect_host = __webpack_require__( /*! ./effect_host */ 23405); const areObjectsEqual = (firstObject, secondObject) => { const bothAreObjects = firstObject instanceof Object && secondObject instanceof Object; if (!bothAreObjects) { return firstObject === secondObject } const firstObjectKeys = Object.keys(firstObject); const secondObjectKeys = Object.keys(secondObject); if (firstObjectKeys.length !== secondObjectKeys.length) { return false } const hasDifferentElement = firstObjectKeys.some((key => firstObject[key] !== secondObject[key])); return !hasDifferentElement }; class BaseInfernoComponent extends _inferno.Component { constructor() { super(...arguments); this._pendingContext = this.context } componentWillReceiveProps(_, context) { this._pendingContext = context ?? {} } shouldComponentUpdate(nextProps, nextState) { return !areObjectsEqual(this.props, nextProps) || !areObjectsEqual(this.state, nextState) || !areObjectsEqual(this.context, this._pendingContext) } } exports.BaseInfernoComponent = BaseInfernoComponent; class InfernoComponent extends BaseInfernoComponent { constructor() { super(...arguments); this._effects = [] } createEffects() { return [] } updateEffects() {} componentWillMount() { _effect_host.InfernoEffectHost.lock() } componentWillUpdate(_nextProps, _nextState, _context) { _effect_host.InfernoEffectHost.lock() } componentDidMount() { _effect_host.InfernoEffectHost.callbacks.push((() => { this._effects = this.createEffects() })); _effect_host.InfernoEffectHost.callEffects() } componentDidUpdate() { _effect_host.InfernoEffectHost.callbacks.push((() => this.updateEffects())); _effect_host.InfernoEffectHost.callEffects() } destroyEffects() { this._effects.forEach((e => e.dispose())) } componentWillUnmount() { this.destroyEffects() } } exports.InfernoComponent = InfernoComponent; exports.InfernoWrapperComponent = class extends InfernoComponent { constructor() { super(...arguments); this.vDomElement = null } vDomUpdateClasses() { var _el$className; const el = this.vDomElement; const currentClasses = null !== (_el$className = el.className) && void 0 !== _el$className && _el$className.length ? el.className.split(" ") : []; const addedClasses = currentClasses.filter((className => !el.dxClasses.previous.includes(className))); const removedClasses = el.dxClasses.previous.filter((className => !currentClasses.includes(className))); addedClasses.forEach((value => { const indexInRemoved = el.dxClasses.removed.indexOf(value); if (indexInRemoved > -1) { el.dxClasses.removed.splice(indexInRemoved, 1) } else if (!el.dxClasses.added.includes(value)) { el.dxClasses.added.push(value) } })); removedClasses.forEach((value => { const indexInAdded = el.dxClasses.added.indexOf(value); if (indexInAdded > -1) { el.dxClasses.added.splice(indexInAdded, 1) } else if (!el.dxClasses.removed.includes(value)) { el.dxClasses.removed.push(value) } })) } componentDidMount() { var _el$className2; const el = (0, _inferno.findDOMFromVNode)(this.$LI, true); this.vDomElement = el; super.componentDidMount(); el.dxClasses = el.dxClasses || { removed: [], added: [], previous: [] }; el.dxClasses.previous = null !== el && void 0 !== el && null !== (_el$className2 = el.className) && void 0 !== _el$className2 && _el$className2.length ? el.className.split(" ") : [] } componentDidUpdate() { super.componentDidUpdate(); const el = this.vDomElement; if (null !== el) { var _el$className3; el.dxClasses.added.forEach((className => el.classList.add(className))); el.dxClasses.removed.forEach((className => el.classList.remove(className))); el.dxClasses.previous = null !== (_el$className3 = el.className) && void 0 !== _el$className3 && _el$className3.length ? el.className.split(" ") : [] } } shouldComponentUpdate(nextProps, nextState) { const shouldUpdate = super.shouldComponentUpdate(nextProps, nextState); if (shouldUpdate) { this.vDomUpdateClasses() } return shouldUpdate } } }, 34781: /*!**************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/core/r1/runtime/inferno/create_context.js ***! \**************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.createContext = void 0; var _inferno = __webpack_require__( /*! inferno */ 76231); function _extends() { return _extends = Object.assign ? Object.assign.bind() : function(n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) { ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]) } } return n }, _extends.apply(null, arguments) } let contextId = 0; exports.createContext = function(defaultValue) { const id = contextId++; return { id: id, defaultValue: defaultValue, Provider: class extends _inferno.Component { getChildContext() { return _extends({}, this.context, { [id]: this.props.value || defaultValue }) } render() { return this.props.children } } } } }, 2836: /*!******************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/core/r1/runtime/inferno/effect.js ***! \******************************************************************************************/ function(__unused_webpack_module, exports) { Object.defineProperty(exports, "__esModule", { value: true }); exports.InfernoEffect = void 0; exports.InfernoEffect = class { constructor(effect, dependency) { this.dependency = dependency; this.effect = effect; this.destroy = effect() } update(dependency) { const currentDependency = this.dependency; if (dependency) { this.dependency = dependency } if (!dependency || dependency.some(((d, i) => currentDependency[i] !== d))) { this.dispose(); this.destroy = this.effect() } } dispose() { if (this.destroy) { this.destroy() } } } }, 23405: /*!***********************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/core/r1/runtime/inferno/effect_host.js ***! \***********************************************************************************************/ function(__unused_webpack_module, exports) { Object.defineProperty(exports, "__esModule", { value: true }); exports.InfernoEffectHost = void 0; exports.InfernoEffectHost = { lockCount: 0, lock() { this.lockCount++ }, callbacks: [], callEffects() { this.lockCount--; if (this.lockCount < 0) { throw new Error("Unexpected Effect Call") } if (0 === this.lockCount) { const effects = this.callbacks; this.callbacks = []; effects.forEach((callback => callback())) } } } }, 6257: /*!*****************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/core/r1/runtime/inferno/index.js ***! \*****************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); var _base_component = __webpack_require__( /*! ./base_component */ 5428); Object.keys(_base_component).forEach((function(key) { if ("default" === key || "__esModule" === key) { return } if (key in exports && exports[key] === _base_component[key]) { return } Object.defineProperty(exports, key, { enumerable: true, get: function() { return _base_component[key] } }) })); var _create_context = __webpack_require__( /*! ./create_context */ 34781); Object.keys(_create_context).forEach((function(key) { if ("default" === key || "__esModule" === key) { return } if (key in exports && exports[key] === _create_context[key]) { return } Object.defineProperty(exports, key, { enumerable: true, get: function() { return _create_context[key] } }) })); var _effect = __webpack_require__( /*! ./effect */ 2836); Object.keys(_effect).forEach((function(key) { if ("default" === key || "__esModule" === key) { return } if (key in exports && exports[key] === _effect[key]) { return } Object.defineProperty(exports, key, { enumerable: true, get: function() { return _effect[key] } }) })); var _effect_host = __webpack_require__( /*! ./effect_host */ 23405); Object.keys(_effect_host).forEach((function(key) { if ("default" === key || "__esModule" === key) { return } if (key in exports && exports[key] === _effect_host[key]) { return } Object.defineProperty(exports, key, { enumerable: true, get: function() { return _effect_host[key] } }) })); var _hydrate = __webpack_require__( /*! ./mocked/hydrate */ 11934); Object.keys(_hydrate).forEach((function(key) { if ("default" === key || "__esModule" === key) { return } if (key in exports && exports[key] === _hydrate[key]) { return } Object.defineProperty(exports, key, { enumerable: true, get: function() { return _hydrate[key] } }) })); var _normalize_styles = __webpack_require__( /*! ./normalize_styles */ 75467); Object.keys(_normalize_styles).forEach((function(key) { if ("default" === key || "__esModule" === key) { return } if (key in exports && exports[key] === _normalize_styles[key]) { return } Object.defineProperty(exports, key, { enumerable: true, get: function() { return _normalize_styles[key] } }) })); var _portal = __webpack_require__( /*! ./portal */ 37695); Object.keys(_portal).forEach((function(key) { if ("default" === key || "__esModule" === key) { return } if (key in exports && exports[key] === _portal[key]) { return } Object.defineProperty(exports, key, { enumerable: true, get: function() { return _portal[key] } }) })); var _re_render_effect = __webpack_require__( /*! ./re_render_effect */ 31603); Object.keys(_re_render_effect).forEach((function(key) { if ("default" === key || "__esModule" === key) { return } if (key in exports && exports[key] === _re_render_effect[key]) { return } Object.defineProperty(exports, key, { enumerable: true, get: function() { return _re_render_effect[key] } }) })); var _render_template = __webpack_require__( /*! ./render_template */ 90626); Object.keys(_render_template).forEach((function(key) { if ("default" === key || "__esModule" === key) { return } if (key in exports && exports[key] === _render_template[key]) { return } Object.defineProperty(exports, key, { enumerable: true, get: function() { return _render_template[key] } }) })) }, 11934: /*!**************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/core/r1/runtime/inferno/mocked/hydrate.js ***! \**************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.hydrate = function(input, parentDOM, callback) { let dom = parentDOM.firstChild; if ((0, _shared.isNull)(dom)) { (0, _inferno.render)(input, parentDOM, callback) } else { const lifecycle = []; const animations = new _inferno.AnimationQueues; if (!(0, _shared.isInvalid)(input)) { dom = hydrateVNode(input, parentDOM, dom, {}, false, lifecycle, animations) } while (dom && (dom = dom.nextSibling)) { parentDOM.removeChild(dom) } if (lifecycle.length > 0) { let listener; while (void 0 !== (listener = lifecycle.shift())) { listener() } } } parentDOM.$V = input; if ((0, _shared.isFunction)(callback)) { callback() } }; var _inferno = __webpack_require__( /*! inferno */ 76231); var _shared = __webpack_require__( /*! ./shared */ 54640); var _vnodeFlags = __webpack_require__( /*! ./vnode-flags */ 55869); function isSamePropsInnerHTML(dom, props) { return Boolean(props && props.dangerouslySetInnerHTML && props.dangerouslySetInnerHTML.__html && function(dom, innerHTML) { const tempdom = document.createElement("i"); tempdom.innerHTML = innerHTML; return tempdom.innerHTML === dom.innerHTML }(dom, props.dangerouslySetInnerHTML.__html)) } function hydrateChildren(parentVNode, parentNode, currentNode, context, isSVG, lifecycle, animations) { const childFlags = parentVNode.childFlags; const children = parentVNode.children; const props = parentVNode.props; const flags = parentVNode.flags; if (childFlags !== _vnodeFlags.ChildFlags.HasInvalidChildren) { if (childFlags === _vnodeFlags.ChildFlags.HasVNodeChildren) { if ((0, _shared.isNull)(currentNode)) { (0, _inferno._M)(children, parentNode, context, isSVG, null, lifecycle, animations) } else { currentNode = hydrateVNode(children, parentNode, currentNode, context, isSVG, lifecycle, animations); currentNode = currentNode ? currentNode.nextSibling : null } } else if (childFlags === _vnodeFlags.ChildFlags.HasTextChildren) { if ((0, _shared.isNull)(currentNode)) { parentNode.appendChild(document.createTextNode(children)) } else if (1 !== parentNode.childNodes.length || 3 !== currentNode.nodeType) { parentNode.textContent = children } else if (currentNode.nodeValue !== children) { currentNode.nodeValue = children } currentNode = null } else if (childFlags & _vnodeFlags.ChildFlags.MultipleChildren) { let prevVNodeIsTextNode = false; for (let i = 0, len = children.length; i < len; ++i) { const child = children[i]; if ((0, _shared.isNull)(currentNode) || prevVNodeIsTextNode && (child.flags & _vnodeFlags.VNodeFlags.Text) > 0) { (0, _inferno._M)(child, parentNode, context, isSVG, currentNode, lifecycle, animations) } else { currentNode = hydrateVNode(child, parentNode, currentNode, context, isSVG, lifecycle, animations); currentNode = currentNode ? currentNode.nextSibling : null } prevVNodeIsTextNode = (child.flags & _vnodeFlags.VNodeFlags.Text) > 0 } } if (0 === (flags & _vnodeFlags.VNodeFlags.Fragment)) { let nextSibling = null; while (currentNode) { nextSibling = currentNode.nextSibling; parentNode.removeChild(currentNode); currentNode = nextSibling } } } else if (!(0, _shared.isNull)(parentNode.firstChild) && !isSamePropsInnerHTML(parentNode, props)) { parentNode.textContent = ""; if (flags & _vnodeFlags.VNodeFlags.FormElement) { parentNode.defaultValue = "" } } } function hydrateText(vNode, parentDOM, dom) { if (3 !== dom.nodeType) { parentDOM.replaceChild(vNode.dom = document.createTextNode(vNode.children), dom) } else { const text = vNode.children; if (dom.nodeValue !== text) { dom.nodeValue = text } vNode.dom = dom } return vNode.dom } function hydrateFragment(vNode, parentDOM, dom, context, isSVG, lifecycle, animations) { const children = vNode.children; if (vNode.childFlags === _vnodeFlags.ChildFlags.HasVNodeChildren) { hydrateText(children, parentDOM, dom); return children.dom } hydrateChildren(vNode, parentDOM, dom, context, isSVG, lifecycle, animations); return function(vNode) { let flags; let children; while (vNode) { flags = vNode.flags; if (flags & _vnodeFlags.VNodeFlags.DOMRef) { return vNode.dom } children = vNode.children; if (flags & _vnodeFlags.VNodeFlags.Fragment) { vNode = vNode.childFlags === _vnodeFlags.ChildFlags.HasVNodeChildren ? children : children[children.length - 1] } else if (flags & _vnodeFlags.VNodeFlags.ComponentClass) { vNode = children.$LI } else { vNode = children } } return null }(children[children.length - 1]) } function hydrateVNode(vNode, parentDOM, currentDom, context, isSVG, lifecycle, animations) { const flags = vNode.flags |= _vnodeFlags.VNodeFlags.InUse; if (flags & _vnodeFlags.VNodeFlags.Component) { return function(vNode, parentDOM, dom, context, isSVG, isClass, lifecycle, animations) { const type = vNode.type; const ref = vNode.ref; const props = vNode.props || _inferno.EMPTY_OBJ; let currentNode; if (isClass) { const instance = (0, _inferno._CI)(vNode, type, props, context, isSVG, lifecycle); const input = instance.$LI; currentNode = hydrateVNode(input, parentDOM, dom, instance.$CX, isSVG, lifecycle, animations); (0, _inferno._MCCC)(ref, instance, lifecycle, animations) } else { const input = (0, _inferno._HI)((0, _inferno._RFC)(vNode, context)); currentNode = hydrateVNode(input, parentDOM, dom, context, isSVG, lifecycle, animations); vNode.children = input; (0, _inferno._MFCC)(vNode, lifecycle, animations) } return currentNode }(vNode, parentDOM, currentDom, context, isSVG, (flags & _vnodeFlags.VNodeFlags.ComponentClass) > 0, lifecycle, animations) } if (flags & _vnodeFlags.VNodeFlags.Element) { return function(vNode, parentDOM, dom, context, isSVG, lifecycle, animations) { const props = vNode.props; const className = vNode.className; const flags = vNode.flags; const ref = vNode.ref; isSVG = isSVG || (flags & _vnodeFlags.VNodeFlags.SvgElement) > 0; if (1 !== dom.nodeType) { (0, _inferno._ME)(vNode, null, context, isSVG, null, lifecycle, animations); parentDOM.replaceChild(vNode.dom, dom) } else { vNode.dom = dom; hydrateChildren(vNode, dom, dom.firstChild, context, isSVG, lifecycle, animations); if (!(0, _shared.isNull)(props)) { (0, _inferno._MP)(vNode, flags, props, dom, isSVG, animations) } if ((0, _shared.isNullOrUndef)(className)) { if ("" !== dom.className) { dom.removeAttribute("class") } } else if (isSVG) { dom.setAttribute("class", className) } else { dom.className = className }(0, _inferno._MR)(ref, dom, lifecycle) } return vNode.dom }(vNode, parentDOM, currentDom, context, isSVG, lifecycle, animations) } if (flags & _vnodeFlags.VNodeFlags.Text) { return hydrateText(vNode, parentDOM, currentDom) } if (flags & _vnodeFlags.VNodeFlags.Void) { return vNode.dom = currentDom } if (flags & _vnodeFlags.VNodeFlags.Fragment) { return hydrateFragment(vNode, parentDOM, currentDom, context, isSVG, lifecycle, animations) }(0, _shared.throwError)(); return null } }, 54640: /*!*************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/core/r1/runtime/inferno/mocked/shared.js ***! \*************************************************************************************************/ function(__unused_webpack_module, exports) { Object.defineProperty(exports, "__esModule", { value: true }); exports.ERROR_MSG = void 0; exports.isFunction = function(o) { return "function" === typeof o }; exports.isInvalid = function(o) { return null === o || false === o || true === o || void 0 === o }; exports.isNull = function(o) { return null === o }; exports.isNullOrUndef = function(o) { return void 0 === o || null === o }; exports.throwError = function(message) { if (!message) { message = ERROR_MSG } throw new Error(`Inferno Error: ${message}`) }; const ERROR_MSG = exports.ERROR_MSG = "a runtime error occured! Use Inferno in development environment to find the error." }, 55869: /*!******************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/core/r1/runtime/inferno/mocked/vnode-flags.js ***! \******************************************************************************************************/ function(__unused_webpack_module, exports) { Object.defineProperty(exports, "__esModule", { value: true }); exports.VNodeFlags = exports.ChildFlags = void 0; var VNodeFlags; ! function(VNodeFlags) { VNodeFlags[VNodeFlags.HtmlElement = 1] = "HtmlElement"; VNodeFlags[VNodeFlags.ComponentUnknown = 2] = "ComponentUnknown"; VNodeFlags[VNodeFlags.ComponentClass = 4] = "ComponentClass"; VNodeFlags[VNodeFlags.ComponentFunction = 8] = "ComponentFunction"; VNodeFlags[VNodeFlags.Text = 16] = "Text"; VNodeFlags[VNodeFlags.SvgElement = 32] = "SvgElement"; VNodeFlags[VNodeFlags.InputElement = 64] = "InputElement"; VNodeFlags[VNodeFlags.TextareaElement = 128] = "TextareaElement"; VNodeFlags[VNodeFlags.SelectElement = 256] = "SelectElement"; VNodeFlags[VNodeFlags.Void = 512] = "Void"; VNodeFlags[VNodeFlags.Portal = 1024] = "Portal"; VNodeFlags[VNodeFlags.ReCreate = 2048] = "ReCreate"; VNodeFlags[VNodeFlags.ContentEditable = 4096] = "ContentEditable"; VNodeFlags[VNodeFlags.Fragment = 8192] = "Fragment"; VNodeFlags[VNodeFlags.InUse = 16384] = "InUse"; VNodeFlags[VNodeFlags.ForwardRef = 32768] = "ForwardRef"; VNodeFlags[VNodeFlags.Normalized = 65536] = "Normalized"; VNodeFlags[VNodeFlags.ForwardRefComponent = 32776] = "ForwardRefComponent"; VNodeFlags[VNodeFlags.FormElement = 448] = "FormElement"; VNodeFlags[VNodeFlags.Element = 481] = "Element"; VNodeFlags[VNodeFlags.Component = 14] = "Component"; VNodeFlags[VNodeFlags.DOMRef = 2033] = "DOMRef"; VNodeFlags[VNodeFlags.InUseOrNormalized = 81920] = "InUseOrNormalized"; VNodeFlags[VNodeFlags.ClearInUse = -16385] = "ClearInUse"; VNodeFlags[VNodeFlags.ComponentKnown = 12] = "ComponentKnown" }(VNodeFlags || (exports.VNodeFlags = VNodeFlags = {})); var ChildFlags; ! function(ChildFlags) { ChildFlags[ChildFlags.UnknownChildren = 0] = "UnknownChildren"; ChildFlags[ChildFlags.HasInvalidChildren = 1] = "HasInvalidChildren"; ChildFlags[ChildFlags.HasVNodeChildren = 2] = "HasVNodeChildren"; ChildFlags[ChildFlags.HasNonKeyedChildren = 4] = "HasNonKeyedChildren"; ChildFlags[ChildFlags.HasKeyedChildren = 8] = "HasKeyedChildren"; ChildFlags[ChildFlags.HasTextChildren = 16] = "HasTextChildren"; ChildFlags[ChildFlags.MultipleChildren = 12] = "MultipleChildren" }(ChildFlags || (exports.ChildFlags = ChildFlags = {})) }, 75467: /*!****************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/core/r1/runtime/inferno/normalize_styles.js ***! \****************************************************************************************************/ function(__unused_webpack_module, exports) { Object.defineProperty(exports, "__esModule", { value: true }); exports.normalizeStyles = function(styles) { if (!(styles instanceof Object)) { return } return Object.entries(styles).reduce(((acc, _ref) => { let [key, value] = _ref; acc[kebabCase(key)] = isNumeric(value) ? getNumberStyleValue(key, value) : value; return acc }), {}) }; const NUMBER_STYLES = new Set(["animationIterationCount", "borderImageOutset", "borderImageSlice", "border-imageWidth", "boxFlex", "boxFlexGroup", "boxOrdinalGroup", "columnCount", "fillOpacity", "flex", "flexGrow", "flexNegative", "flexOrder", "flexPositive", "flexShrink", "floodOpacity", "fontWeight", "gridColumn", "gridRow", "lineClamp", "lineHeight", "opacity", "order", "orphans", "stopOpacity", "strokeDasharray", "strokeDashoffset", "strokeMiterlimit", "strokeOpacity", "strokeWidth", "tabSize", "widows", "zIndex", "zoom"]); const isNumeric = value => { if ("number" === typeof value) { return true } return !Number.isNaN(Number(value)) }; const getNumberStyleValue = (style, value) => NUMBER_STYLES.has(style) ? value : `${value}px`; const uppercasePattern = /[A-Z]/g; const kebabCase = str => str.replace(uppercasePattern, "-$&").toLowerCase() }, 37695: /*!******************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/core/r1/runtime/inferno/portal.js ***! \******************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.Portal = void 0; var _inferno = __webpack_require__( /*! inferno */ 76231); exports.Portal = _ref => { let { container: container, children: children } = _ref; if (container) { return (0, _inferno.createPortal)(children, container) } return null } }, 31603: /*!****************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/core/r1/runtime/inferno/re_render_effect.js ***! \****************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.createReRenderEffect = void 0; var _inferno = __webpack_require__( /*! inferno */ 76231); var _effect = __webpack_require__( /*! ./effect */ 2836); exports.createReRenderEffect = () => new _effect.InfernoEffect((() => { (0, _inferno.rerender)() }), []) }, 90626: /*!***************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/core/r1/runtime/inferno/render_template.js ***! \***************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.hasTemplate = void 0; exports.renderTemplate = function(template, props, _component) { setTimeout((() => { (0, _inferno.render)((0, _infernoCreateElement.createElement)(template, props), getContainer(props)) }), 0) }; var _inferno = __webpack_require__( /*! inferno */ 76231); var _infernoCreateElement = __webpack_require__( /*! inferno-create-element */ 12887); const getContainer = props => { var _props$container, _props$item; return (null === (_props$container = props.container) || void 0 === _props$container ? void 0 : _props$container.get(0)) || (null === (_props$item = props.item) || void 0 === _props$item ? void 0 : _props$item.get(0)) }; exports.hasTemplate = (name, properties, _component) => { const value = properties[name]; return !!value && "string" !== typeof value } }, 34554: /*!************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/core/r1/template_wrapper.js ***! \************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.buildTemplateArgs = exports.TemplateWrapper = void 0; var _dom_adapter = _interopRequireDefault(__webpack_require__( /*! ../../../core/dom_adapter */ 64960)); var _element = __webpack_require__( /*! ../../../core/element */ 61404); var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../../core/renderer */ 64553)); var _dom = __webpack_require__( /*! ../../../core/utils/dom */ 86858); var _type = __webpack_require__( /*! ../../../core/utils/type */ 11528); var _index = __webpack_require__( /*! ../../core/r1/runtime/inferno/index */ 6257); var _inferno = __webpack_require__( /*! inferno */ 76231); var _shallow_equals = __webpack_require__( /*! ./utils/shallow_equals */ 1270); const _excluded = ["isEqual"]; function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } function _extends() { return _extends = Object.assign ? Object.assign.bind() : function(n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) { ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]) } } return n }, _extends.apply(null, arguments) } exports.buildTemplateArgs = (model, template) => { const args = { template: template, model: _extends({}, model) }; const _ref = model.data ?? {}, { isEqual: isEqual } = _ref, data = function(r, e) { if (null == r) { return {} } var t = {}; for (var n in r) { if ({}.hasOwnProperty.call(r, n)) { if (e.includes(n)) { continue } t[n] = r[n] } } return t }(_ref, _excluded); if (isEqual) { args.model.data = data; args.isEqual = isEqual } return args }; class TemplateWrapper extends _index.InfernoComponent { constructor(props) { super(props); this.renderTemplate = this.renderTemplate.bind(this) } renderTemplate() { const node = (0, _inferno.findDOMFromVNode)(this.$LI, true); if (!(null !== node && void 0 !== node && node.parentNode)) { return () => {} } const container = node.parentNode; const $container = (0, _renderer.default)(container); const $oldContainerContent = $container.contents().toArray(); const content = ((props, container) => { const { data: data, index: index } = props.model ?? { data: {} }; if (data) { Object.keys(data).forEach((name => { if (data[name] && _dom_adapter.default.isNode(data[name])) { data[name] = (0, _element.getPublicElement)((0, _renderer.default)(data[name])) } })) } const rendered = props.template.render(_extends({ container: container, transclude: props.transclude }, { renovated: props.renovated }, !props.transclude ? { model: data } : {}, !props.transclude && Number.isFinite(index) ? { index: index } : {})); if (void 0 === rendered) { return [] } return (element = rendered, !!element.toArray) ? rendered.toArray() : [(0, _renderer.default)(rendered).get(0)]; var element })(this.props, (0, _element.getPublicElement)($container)); (0, _dom.replaceWith)((0, _renderer.default)(node), (0, _renderer.default)(content)); return () => { const $actualContainerContent = (0, _renderer.default)(container).contents().toArray(); oldChildren = $oldContainerContent, newChildren = $actualContainerContent, void newChildren.forEach((newElement => { const hasOldChild = !!oldChildren.find((oldElement => newElement === oldElement)); if (!hasOldChild && newElement.parentNode) { (0, _renderer.default)(newElement).remove() } })); var oldChildren, newChildren; container.appendChild(node) } } shouldComponentUpdate(nextProps) { const { template: template, model: model } = this.props; const { template: nextTemplate, model: nextModel, isEqual: isEqual } = nextProps; const equalityComparer = isEqual ?? _shallow_equals.shallowEquals; if (template !== nextTemplate) { return true } if (!(0, _type.isDefined)(model) || !(0, _type.isDefined)(nextModel)) { return model !== nextModel } const { data: data, index: index } = model; const { data: nextData, index: nextIndex } = nextModel; if (index !== nextIndex) { return true } if (!(0, _type.isDefined)(data) || !(0, _type.isDefined)(nextData)) { return model !== nextModel } return !equalityComparer(data, nextData) } createEffects() { return [new _index.InfernoEffect(this.renderTemplate, [this.props.template, this.props.model])] } updateEffects() { this._effects[0].update([this.props.template, this.props.model]) } componentWillUnmount() {} render() { return null } } exports.TemplateWrapper = TemplateWrapper }, 8808: /*!*****************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/core/r1/utils/dom.js ***! \*****************************************************************************/ function(__unused_webpack_module, exports) { Object.defineProperty(exports, "__esModule", { value: true }); exports.querySelectorInSameDocument = function(el, selector) { var _el$getRootNode; const root = (null === (_el$getRootNode = el.getRootNode) || void 0 === _el$getRootNode ? void 0 : _el$getRootNode.call(el)) ?? document; return root.querySelector(selector) } }, 31006: /*!********************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/core/r1/utils/get_computed_style.js ***! \********************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = function(el) { var _window$getComputedSt; const window = (0, _window.getWindow)(); return el ? null === (_window$getComputedSt = window.getComputedStyle) || void 0 === _window$getComputedSt ? void 0 : _window$getComputedSt.call(window, el) : null }; var _window = __webpack_require__( /*! ../../../../core/utils/window */ 3104) }, 6909: /*!**************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/core/r1/utils/get_template.js ***! \**************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.getTemplate = void 0; var _inferno = __webpack_require__( /*! inferno */ 76231); function _extends() { return _extends = Object.assign ? Object.assign.bind() : function(n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) { ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]) } } return n }, _extends.apply(null, arguments) } exports.getTemplate = TemplateProp => TemplateProp && (TemplateProp.defaultProps ? props => (0, _inferno.normalizeProps)((0, _inferno.createComponentVNode)(2, TemplateProp, _extends({}, props))) : TemplateProp) }, 15393: /*!*********************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/core/r1/utils/get_updated_options.js ***! \*********************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.getUpdatedOptions = function(oldProps, props) { let notDeepCopyArrays = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : defaultNotDeepCopyArrays; return objectDiffsWithoutReactProps(oldProps, props, "", notDeepCopyArrays) }; var _type = __webpack_require__( /*! ../../../../core/utils/type */ 11528); function _extends() { return _extends = Object.assign ? Object.assign.bind() : function(n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) { ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]) } } return n }, _extends.apply(null, arguments) } const defaultNotDeepCopyArrays = ["dataSource", "selectedRowKeys"]; const propsToIgnore = { integrationOptions: true }; function getDiffItem(key, value, previousValue) { return { path: key, value: value, previousValue: previousValue } } function compare(resultPaths, item1, item2, key, fullPropName, notDeepCopyArrays) { if (propsToIgnore[key]) { return } const type1 = (0, _type.type)(item1); const type2 = (0, _type.type)(item2); if (item1 === item2) { return } if (type1 !== type2) { resultPaths.push(getDiffItem(key, item2, item1)) } else if ("object" === type1) { if (!(0, _type.isPlainObject)(item2)) { resultPaths.push(getDiffItem(key, item2, item1)) } else { const diffPaths = objectDiffs(item1, item2, fullPropName, notDeepCopyArrays); resultPaths.push(...diffPaths.map((item => _extends({}, item, { path: `${key}.${item.path}` })))) } } else if ("array" === type1) { const notDeepCopy = notDeepCopyArrays.some((prop => fullPropName.includes(prop))); if (notDeepCopy && item1 !== item2) { resultPaths.push(getDiffItem(key, item2, item1)) } else if (item1.length !== item2.length) { resultPaths.push(getDiffItem(key, item2, item1)) } else { const diffPaths = objectDiffs(item1, item2, fullPropName, notDeepCopyArrays); [].push.apply(resultPaths, diffPaths.map((item => _extends({}, item, { path: `${key}${item.path}` })))) } } else { resultPaths.push(getDiffItem(key, item2, item1)) } } const objectDiffsFiltered = propsEnumerator => (oldProps, props, fullPropName, notDeepCopyArrays) => { const resultPaths = []; const processItem = !Array.isArray(oldProps) ? propName => { compare(resultPaths, oldProps[propName], props[propName], propName, `${fullPropName}.${propName}`, notDeepCopyArrays) } : propName => { compare(resultPaths, oldProps[propName], props[propName], `[${propName}]`, `${fullPropName}.${propName}`, notDeepCopyArrays) }; propsEnumerator(oldProps).forEach(processItem); Object.keys(props).filter((propName => !Object.prototype.hasOwnProperty.call(oldProps, propName) && oldProps[propName] !== props[propName])).forEach((propName => { resultPaths.push({ path: propName, value: props[propName], previousValue: oldProps[propName] }) })); return resultPaths }; const objectDiffs = objectDiffsFiltered((oldProps => Object.keys(oldProps))); const reactProps = { key: true, ref: true, children: true, style: true }; const objectDiffsWithoutReactProps = objectDiffsFiltered((prop => Object.keys(prop).filter((p => !reactProps[p])))) }, 10632: /*!*******************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/core/r1/utils/index.js ***! \*******************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "getTemplate", { enumerable: true, get: function() { return _get_template.getTemplate } }); Object.defineProperty(exports, "shallowEquals", { enumerable: true, get: function() { return _shallow_equals.shallowEquals } }); Object.defineProperty(exports, "updatePropsImmutable", { enumerable: true, get: function() { return _update_props_immutable.updatePropsImmutable } }); var _get_template = __webpack_require__( /*! ./get_template */ 6909); var _shallow_equals = __webpack_require__( /*! ./shallow_equals */ 1270); var _update_props_immutable = __webpack_require__( /*! ./update_props_immutable */ 73725) }, 71312: /*!**************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/core/r1/utils/render_utils.js ***! \**************************************************************************************/ function(__unused_webpack_module, exports) { Object.defineProperty(exports, "__esModule", { value: true }); exports.combineClasses = void 0; exports.combineClasses = classesMap => Object.keys(classesMap).filter((cssClass => !!cssClass && classesMap[cssClass])).join(" ").split(" ").filter(((cssClass, i, filteredClassesMap) => filteredClassesMap.indexOf(cssClass) === i)).join(" ") }, 28477: /*!*************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/core/r1/utils/resolve_rtl.js ***! \*************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.resolveRtlEnabled = function(rtlProp, config) { if (void 0 !== rtlProp) { return rtlProp } if (void 0 !== (null === config || void 0 === config ? void 0 : config.rtlEnabled)) { return config.rtlEnabled } return (0, _common.config)().rtlEnabled }; exports.resolveRtlEnabledDefinition = function(rtlProp, config) { const isPropDefined = (0, _type.isDefined)(rtlProp); const onlyGlobalDefined = (0, _type.isDefined)((0, _common.config)().rtlEnabled) && !isPropDefined && !(0, _type.isDefined)(null === config || void 0 === config ? void 0 : config.rtlEnabled); return isPropDefined && rtlProp !== (null === config || void 0 === config ? void 0 : config.rtlEnabled) || onlyGlobalDefined }; var _common = __webpack_require__( /*! ../../../../common */ 83077); var _type = __webpack_require__( /*! ../../../../core/utils/type */ 11528) }, 1270: /*!****************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/core/r1/utils/shallow_equals.js ***! \****************************************************************************************/ function(__unused_webpack_module, exports) { Object.defineProperty(exports, "__esModule", { value: true }); exports.shallowEquals = void 0; exports.shallowEquals = (firstObject, secondObject) => { if (Object.keys(firstObject).length !== Object.keys(secondObject).length) { return false } return Object.entries(firstObject).every((_ref => { let [key, firstValue] = _ref; const secondValue = secondObject[key]; if (firstValue instanceof Date && secondValue instanceof Date) { return firstValue.getTime() === secondValue.getTime() } return firstValue === secondValue })) } }, 28677: /*!********************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/core/r1/utils/subscribe_to_event.js ***! \********************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.subscribeToDxInactiveEvent = exports.subscribeToDxHoverStartEvent = exports.subscribeToDxHoverEndEvent = exports.subscribeToDxFocusOutEvent = exports.subscribeToDxFocusInEvent = exports.subscribeToDxActiveEvent = exports.subscribeToDXScrollStopEvent = exports.subscribeToDXScrollStartEvent = exports.subscribeToDXScrollMoveEvent = exports.subscribeToDXScrollEndEvent = exports.subscribeToDXScrollCancelEvent = exports.subscribeToDXPointerUpEvent = exports.subscribeToDXPointerMoveEvent = exports.subscribeToDXPointerDownEvent = exports.subscribeToClickEvent = void 0; exports.subscribeToEvent = subscribeToEvent; exports.subscribeToScrollInitEvent = exports.subscribeToScrollEvent = exports.subscribeToMouseLeaveEvent = exports.subscribeToMouseEnterEvent = exports.subscribeToKeyDownEvent = void 0; var clickEvent = function(e, r) { if (!r && e && e.__esModule) { return e } if (null === e || "object" != typeof e && "function" != typeof e) { return { default: e } } var t = _getRequireWildcardCache(r); if (t && t.has(e)) { return t.get(e) } var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) { if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u] } } return n.default = e, t && t.set(e, n), n }(__webpack_require__( /*! ../../../../common/core/events/click */ 64044)); var _events_engine = _interopRequireDefault(__webpack_require__( /*! ../../../../common/core/events/core/events_engine */ 92774)); var _emitterGesture = _interopRequireDefault(__webpack_require__( /*! ../../../../common/core/events/gesture/emitter.gesture.scroll */ 86548)); var _pointer = _interopRequireDefault(__webpack_require__( /*! ../../../../common/core/events/pointer */ 89797)); var _index = __webpack_require__( /*! ../../../../common/core/events/utils/index */ 98834); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) { return null } var r = new WeakMap, t = new WeakMap; return (_getRequireWildcardCache = function(e) { return e ? t : r })(e) } function subscribeToEvent(eventName) { return (element, handler, eventData, namespace) => { const event = namespace ? (0, _index.addNamespace)(eventName, namespace) : eventName; if (handler) { _events_engine.default.on(element, event, eventData, handler); return () => { _events_engine.default.off(element, event, handler) } } return } } exports.subscribeToClickEvent = subscribeToEvent(clickEvent.name); exports.subscribeToScrollEvent = subscribeToEvent(_emitterGesture.default.scroll); exports.subscribeToScrollInitEvent = subscribeToEvent(_emitterGesture.default.init); exports.subscribeToDXScrollStartEvent = subscribeToEvent(_emitterGesture.default.start); exports.subscribeToDXScrollMoveEvent = subscribeToEvent(_emitterGesture.default.move); exports.subscribeToDXScrollEndEvent = subscribeToEvent(_emitterGesture.default.end); exports.subscribeToDXScrollStopEvent = subscribeToEvent(_emitterGesture.default.stop); exports.subscribeToDXScrollCancelEvent = subscribeToEvent(_emitterGesture.default.cancel); exports.subscribeToDXPointerDownEvent = subscribeToEvent(_pointer.default.down); exports.subscribeToDXPointerUpEvent = subscribeToEvent(_pointer.default.up); exports.subscribeToDXPointerMoveEvent = subscribeToEvent(_pointer.default.move); exports.subscribeToMouseEnterEvent = subscribeToEvent("mouseenter"); exports.subscribeToMouseLeaveEvent = subscribeToEvent("mouseleave"); exports.subscribeToKeyDownEvent = subscribeToEvent("keydown"); exports.subscribeToDxActiveEvent = subscribeToEvent("dxactive"); exports.subscribeToDxInactiveEvent = subscribeToEvent("dxinactive"); exports.subscribeToDxHoverStartEvent = subscribeToEvent("dxhoverstart"); exports.subscribeToDxHoverEndEvent = subscribeToEvent("dxhoverend"); exports.subscribeToDxFocusInEvent = subscribeToEvent("focusin"); exports.subscribeToDxFocusOutEvent = subscribeToEvent("focusout") }, 7529: /*!*****************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/core/r1/utils/type_conversion.js ***! \*****************************************************************************************/ function(__unused_webpack_module, exports) { Object.defineProperty(exports, "__esModule", { value: true }); exports.toNumber = function(attribute) { return attribute ? Number(attribute.replace("px", "")) : 0 } }, 73725: /*!************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/core/r1/utils/update_props_immutable.js ***! \************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.updatePropsImmutable = void 0; var _data = __webpack_require__( /*! ../../../../core/utils/data */ 31e3); var _type = __webpack_require__( /*! ../../../../core/utils/type */ 11528); function _extends() { return _extends = Object.assign ? Object.assign.bind() : function(n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) { ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]) } } return n }, _extends.apply(null, arguments) } const cloneObjectValue = value => Array.isArray(value) ? [...value] : _extends({}, value); const cloneObjectProp = (value, prevValue, fullNameParts) => { const result = fullNameParts.length > 0 && prevValue && value !== prevValue ? cloneObjectValue(prevValue) : cloneObjectValue(value); const name = fullNameParts[0]; if (fullNameParts.length > 1) { result[name] = cloneObjectProp(value[name], null === prevValue || void 0 === prevValue ? void 0 : prevValue[name], fullNameParts.slice(1)) } else if (name) { if ((0, _type.isPlainObject)(value[name])) { result[name] = cloneObjectValue(value[name]) } else { result[name] = value[name] } } return result }; exports.updatePropsImmutable = (props, option, name, fullName) => { const currentPropsValue = option[name]; const prevPropsValue = props[name]; const result = props; if ((0, _type.isPlainObject)(currentPropsValue) || name !== fullName && Array.isArray(currentPropsValue)) { result[name] = cloneObjectProp(currentPropsValue, prevPropsValue, (0, _data.getPathParts)(fullName).slice(1)) } else { result[name] = currentPropsValue } } }, 93796: /*!**************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/core/r1/widget.js ***! \**************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.WidgetDefaultProps = exports.Widget = exports.WIDGET_CLASS = void 0; var _inferno = __webpack_require__( /*! inferno */ 76231); __webpack_require__( /*! ../../../common/core/events/click */ 64044); __webpack_require__( /*! ../../../common/core/events/hover */ 638); var _short = __webpack_require__( /*! ../../../common/core/events/short */ 42222); var _dom_adapter = _interopRequireDefault(__webpack_require__( /*! ../../../core/dom_adapter */ 64960)); var _errors = _interopRequireDefault(__webpack_require__( /*! ../../../core/errors */ 87129)); var _extend = __webpack_require__( /*! ../../../core/utils/extend */ 52576); var _resize_callbacks = _interopRequireDefault(__webpack_require__( /*! ../../../core/utils/resize_callbacks */ 63283)); var _style = __webpack_require__( /*! ../../../core/utils/style */ 58515); var _type = __webpack_require__( /*! ../../../core/utils/type */ 11528); var _config_context = __webpack_require__( /*! ../../core/r1/config_context */ 12274); var _config_provider = __webpack_require__( /*! ../../core/r1/config_provider */ 86688); var _index = __webpack_require__( /*! ../../core/r1/runtime/inferno/index */ 6257); var _render_utils = __webpack_require__( /*! ../../core/r1/utils/render_utils */ 71312); var _resolve_rtl = __webpack_require__( /*! ../../core/r1/utils/resolve_rtl */ 28477); var _base_props = __webpack_require__( /*! ./base_props */ 28112); var _subscribe_to_event = __webpack_require__( /*! ./utils/subscribe_to_event */ 28677); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } function _extends() { return _extends = Object.assign ? Object.assign.bind() : function(n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) { ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]) } } return n }, _extends.apply(null, arguments) } const WIDGET_CLASS = exports.WIDGET_CLASS = "dx-widget"; const WidgetDefaultProps = exports.WidgetDefaultProps = _extends({}, _base_props.BaseWidgetDefaultProps, { _feedbackHideTimeout: 400, _feedbackShowTimeout: 30, cssText: "", aria: {}, classes: "", name: "", addWidgetClass: true }); class Widget extends _index.InfernoWrapperComponent { constructor(props) { super(props); this.state = { active: false, focused: false, hovered: false }; this.refs = null; this.rootElementRef = (0, _inferno.createRef)(); this.widgetElementRef = (0, _inferno.createRef)(); this.setRootElementRef = this.setRootElementRef.bind(this); this.activeEffect = this.activeEffect.bind(this); this.inactiveEffect = this.inactiveEffect.bind(this); this.clickEffect = this.clickEffect.bind(this); this.focus = this.focus.bind(this); this.blur = this.blur.bind(this); this.activate = this.activate.bind(this); this.deactivate = this.deactivate.bind(this); this.focusInEffect = this.focusInEffect.bind(this); this.focusOutEffect = this.focusOutEffect.bind(this); this.hoverStartEffect = this.hoverStartEffect.bind(this); this.hoverEndEffect = this.hoverEndEffect.bind(this); this.keyboardEffect = this.keyboardEffect.bind(this); this.resizeEffect = this.resizeEffect.bind(this); this.windowResizeEffect = this.windowResizeEffect.bind(this); this.visibilityEffect = this.visibilityEffect.bind(this); this.checkDeprecation = this.checkDeprecation.bind(this); this.applyCssTextEffect = this.applyCssTextEffect.bind(this) } componentWillUpdate(nextProps, nextState, context) { super.componentWillUpdate(nextProps, nextState, context) } getConfig() { if (this.context[_config_context.ConfigContext.id]) { return this.context[_config_context.ConfigContext.id] } return _config_context.ConfigContext.defaultValue } createEffects() { return [new _index.InfernoEffect(this.setRootElementRef, []), new _index.InfernoEffect(this.activeEffect, [this.props._feedbackShowTimeout, this.props.activeStateEnabled, this.props.activeStateUnit, this.props.disabled, this.props.onActive]), new _index.InfernoEffect(this.inactiveEffect, [this.props._feedbackHideTimeout, this.props.activeStateEnabled, this.props.activeStateUnit, this.props.onInactive, this.state.active]), new _index.InfernoEffect(this.clickEffect, [this.props.disabled, this.props.name, this.props.onClick]), new _index.InfernoEffect(this.focusInEffect, [this.props.disabled, this.props.focusStateEnabled, this.props.name, this.props.onFocusIn]), new _index.InfernoEffect(this.focusOutEffect, [this.props.focusStateEnabled, this.props.name, this.props.onFocusOut, this.state.focused]), new _index.InfernoEffect(this.hoverStartEffect, [this.props.activeStateUnit, this.props.disabled, this.props.hoverStateEnabled, this.props.onHoverStart, this.state.active]), new _index.InfernoEffect(this.hoverEndEffect, [this.props.activeStateUnit, this.props.hoverStateEnabled, this.props.onHoverEnd, this.state.hovered]), new _index.InfernoEffect(this.keyboardEffect, [this.props.focusStateEnabled, this.props.onKeyDown]), new _index.InfernoEffect(this.resizeEffect, [this.props.name, this.props.onDimensionChanged]), new _index.InfernoEffect(this.windowResizeEffect, [this.props.onDimensionChanged]), new _index.InfernoEffect(this.visibilityEffect, [this.props.name, this.props.onVisibilityChange]), new _index.InfernoEffect(this.checkDeprecation, [this.props.height, this.props.width]), new _index.InfernoEffect(this.applyCssTextEffect, [this.props.cssText]), (0, _index.createReRenderEffect)()] } updateEffects() { var _this$_effects$, _this$_effects$2, _this$_effects$3, _this$_effects$4, _this$_effects$5, _this$_effects$6, _this$_effects$7, _this$_effects$8, _this$_effects$9, _this$_effects$10, _this$_effects$11, _this$_effects$12, _this$_effects$13; null === (_this$_effects$ = this._effects[1]) || void 0 === _this$_effects$ || _this$_effects$.update([this.props._feedbackShowTimeout, this.props.activeStateEnabled, this.props.activeStateUnit, this.props.disabled, this.props.onActive]); null === (_this$_effects$2 = this._effects[2]) || void 0 === _this$_effects$2 || _this$_effects$2.update([this.props._feedbackHideTimeout, this.props.activeStateEnabled, this.props.activeStateUnit, this.props.onInactive, this.state.active]); null === (_this$_effects$3 = this._effects[3]) || void 0 === _this$_effects$3 || _this$_effects$3.update([this.props.disabled, this.props.name, this.props.onClick]); null === (_this$_effects$4 = this._effects[4]) || void 0 === _this$_effects$4 || _this$_effects$4.update([this.props.disabled, this.props.focusStateEnabled, this.props.name, this.props.onFocusIn]); null === (_this$_effects$5 = this._effects[5]) || void 0 === _this$_effects$5 || _this$_effects$5.update([this.props.focusStateEnabled, this.props.name, this.props.onFocusOut, this.state.focused]); null === (_this$_effects$6 = this._effects[6]) || void 0 === _this$_effects$6 || _this$_effects$6.update([this.props.activeStateUnit, this.props.disabled, this.props.hoverStateEnabled, this.props.onHoverStart, this.state.active]); null === (_this$_effects$7 = this._effects[7]) || void 0 === _this$_effects$7 || _this$_effects$7.update([this.props.activeStateUnit, this.props.hoverStateEnabled, this.props.onHoverEnd, this.state.hovered]); null === (_this$_effects$8 = this._effects[8]) || void 0 === _this$_effects$8 || _this$_effects$8.update([this.props.focusStateEnabled, this.props.onKeyDown]); null === (_this$_effects$9 = this._effects[9]) || void 0 === _this$_effects$9 || _this$_effects$9.update([this.props.name, this.props.onDimensionChanged]); null === (_this$_effects$10 = this._effects[10]) || void 0 === _this$_effects$10 || _this$_effects$10.update([this.props.onDimensionChanged]); null === (_this$_effects$11 = this._effects[11]) || void 0 === _this$_effects$11 || _this$_effects$11.update([this.props.name, this.props.onVisibilityChange]); null === (_this$_effects$12 = this._effects[12]) || void 0 === _this$_effects$12 || _this$_effects$12.update([this.props.height, this.props.width]); null === (_this$_effects$13 = this._effects[13]) || void 0 === _this$_effects$13 || _this$_effects$13.update([this.props.cssText]) } setRootElementRef() { var _this$widgetElementRe; const { rootElementRef: rootElementRef, onRootElementRendered: onRootElementRendered } = this.props; if (rootElementRef && this.widgetElementRef) { rootElementRef.current = this.widgetElementRef.current } if (null !== this && void 0 !== this && null !== (_this$widgetElementRe = this.widgetElementRef) && void 0 !== _this$widgetElementRe && _this$widgetElementRe.current) { null === onRootElementRendered || void 0 === onRootElementRendered || onRootElementRendered(this.widgetElementRef.current) } } activeEffect() { const { activeStateEnabled: activeStateEnabled, activeStateUnit: activeStateUnit, disabled: disabled, _feedbackShowTimeout: _feedbackShowTimeout, onActive: onActive } = this.props; const selector = activeStateUnit; if (activeStateEnabled) { if (!disabled) { var _this$widgetElementRe2; return (0, _subscribe_to_event.subscribeToDxActiveEvent)(null === (_this$widgetElementRe2 = this.widgetElementRef) || void 0 === _this$widgetElementRe2 ? void 0 : _this$widgetElementRe2.current, (event => { this.setState({ active: true }); null === onActive || void 0 === onActive || onActive(event) }), { timeout: _feedbackShowTimeout, selector: selector }, "UIFeedback") } } return } inactiveEffect() { const { activeStateEnabled: activeStateEnabled, activeStateUnit: activeStateUnit, _feedbackHideTimeout: _feedbackHideTimeout, onInactive: onInactive } = this.props; const selector = activeStateUnit; if (activeStateEnabled) { var _this$widgetElementRe3; return (0, _subscribe_to_event.subscribeToDxInactiveEvent)(null === (_this$widgetElementRe3 = this.widgetElementRef) || void 0 === _this$widgetElementRe3 ? void 0 : _this$widgetElementRe3.current, (event => { if (this.state.active) { this.setState({ active: false }); null === onInactive || void 0 === onInactive || onInactive(event) } }), { timeout: _feedbackHideTimeout, selector: selector }, "UIFeedback") } return } clickEffect() { const { name: name, onClick: onClick, disabled: disabled } = this.props; const namespace = name; if (onClick && !disabled) { var _this$widgetElementRe4; _short.dxClick.on(null === (_this$widgetElementRe4 = this.widgetElementRef) || void 0 === _this$widgetElementRe4 ? void 0 : _this$widgetElementRe4.current, onClick, { namespace: namespace }); return () => { var _this$widgetElementRe5; return _short.dxClick.off(null === (_this$widgetElementRe5 = this.widgetElementRef) || void 0 === _this$widgetElementRe5 ? void 0 : _this$widgetElementRe5.current, { namespace: namespace }) } } return } focusInEffect() { const { disabled: disabled, focusStateEnabled: focusStateEnabled, name: name, onFocusIn: onFocusIn } = this.props; const namespace = `${name}Focus`; if (focusStateEnabled) { if (!disabled) { var _this$widgetElementRe6; return (0, _subscribe_to_event.subscribeToDxFocusInEvent)(null === (_this$widgetElementRe6 = this.widgetElementRef) || void 0 === _this$widgetElementRe6 ? void 0 : _this$widgetElementRe6.current, (event => { if (!event.isDefaultPrevented()) { this.setState({ focused: true }); null === onFocusIn || void 0 === onFocusIn || onFocusIn(event) } }), null, namespace) } } return } focusOutEffect() { const { focusStateEnabled: focusStateEnabled, name: name, onFocusOut: onFocusOut } = this.props; const namespace = `${name}Focus`; if (focusStateEnabled) { var _this$widgetElementRe7; return (0, _subscribe_to_event.subscribeToDxFocusOutEvent)(null === (_this$widgetElementRe7 = this.widgetElementRef) || void 0 === _this$widgetElementRe7 ? void 0 : _this$widgetElementRe7.current, (event => { if (!event.isDefaultPrevented() && this.state.focused) { this.setState({ focused: false }); null === onFocusOut || void 0 === onFocusOut || onFocusOut(event) } }), null, namespace) } return } hoverStartEffect() { const { activeStateUnit: activeStateUnit, hoverStateEnabled: hoverStateEnabled, disabled: disabled, onHoverStart: onHoverStart } = this.props; const selector = activeStateUnit; if (hoverStateEnabled) { if (!disabled) { var _this$widgetElementRe8; return (0, _subscribe_to_event.subscribeToDxHoverStartEvent)(null === (_this$widgetElementRe8 = this.widgetElementRef) || void 0 === _this$widgetElementRe8 ? void 0 : _this$widgetElementRe8.current, (event => { if (!this.state.active) { this.setState({ hovered: true }) } null === onHoverStart || void 0 === onHoverStart || onHoverStart(event) }), { selector: selector }, "UIFeedback") } } return } hoverEndEffect() { const { activeStateUnit: activeStateUnit, hoverStateEnabled: hoverStateEnabled, onHoverEnd: onHoverEnd } = this.props; const selector = activeStateUnit; if (hoverStateEnabled) { var _this$widgetElementRe9; return (0, _subscribe_to_event.subscribeToDxHoverEndEvent)(null === (_this$widgetElementRe9 = this.widgetElementRef) || void 0 === _this$widgetElementRe9 ? void 0 : _this$widgetElementRe9.current, (event => { if (this.state.hovered) { this.setState({ hovered: false }); null === onHoverEnd || void 0 === onHoverEnd || onHoverEnd(event) } }), { selector: selector }, "UIFeedback") } return } keyboardEffect() { const { onKeyDown: onKeyDown, focusStateEnabled: focusStateEnabled } = this.props; if (focusStateEnabled && onKeyDown) { var _this$widgetElementRe10, _this$widgetElementRe11; const id = _short.keyboard.on(null === (_this$widgetElementRe10 = this.widgetElementRef) || void 0 === _this$widgetElementRe10 ? void 0 : _this$widgetElementRe10.current, null === (_this$widgetElementRe11 = this.widgetElementRef) || void 0 === _this$widgetElementRe11 ? void 0 : _this$widgetElementRe11.current, (e => onKeyDown(e))); return () => _short.keyboard.off(id) } return } resizeEffect() { const namespace = `${this.props.name}VisibilityChange`; const { onDimensionChanged: onDimensionChanged } = this.props; if (onDimensionChanged) { var _this$widgetElementRe12; _short.resize.on(null === (_this$widgetElementRe12 = this.widgetElementRef) || void 0 === _this$widgetElementRe12 ? void 0 : _this$widgetElementRe12.current, onDimensionChanged, { namespace: namespace }); return () => { var _this$widgetElementRe13; return _short.resize.off(null === (_this$widgetElementRe13 = this.widgetElementRef) || void 0 === _this$widgetElementRe13 ? void 0 : _this$widgetElementRe13.current, { namespace: namespace }) } } return } windowResizeEffect() { const { onDimensionChanged: onDimensionChanged } = this.props; if (onDimensionChanged) { _resize_callbacks.default.add(onDimensionChanged); return () => { _resize_callbacks.default.remove(onDimensionChanged) } } return } visibilityEffect() { const { name: name, onVisibilityChange: onVisibilityChange } = this.props; const namespace = `${name}VisibilityChange`; if (onVisibilityChange) { var _this$widgetElementRe14; _short.visibility.on(null === (_this$widgetElementRe14 = this.widgetElementRef) || void 0 === _this$widgetElementRe14 ? void 0 : _this$widgetElementRe14.current, (() => onVisibilityChange(true)), (() => onVisibilityChange(false)), { namespace: namespace }); return () => { var _this$widgetElementRe15; return _short.visibility.off(null === (_this$widgetElementRe15 = this.widgetElementRef) || void 0 === _this$widgetElementRe15 ? void 0 : _this$widgetElementRe15.current, { namespace: namespace }) } } return } checkDeprecation() { const { width: width, height: height } = this.props; if ((0, _type.isFunction)(width)) { _errors.default.log("W0017", "width") } if ((0, _type.isFunction)(height)) { _errors.default.log("W0017", "height") } } applyCssTextEffect() { var _this$widgetElementRe16; const { cssText: cssText } = this.props; if (void 0 !== cssText && "" !== cssText && null !== (_this$widgetElementRe16 = this.widgetElementRef) && void 0 !== _this$widgetElementRe16 && _this$widgetElementRe16.current) { this.widgetElementRef.current.style.cssText = cssText } } getShouldRenderConfigProvider() { const { rtlEnabled: rtlEnabled } = this.props; return (0, _resolve_rtl.resolveRtlEnabledDefinition)(rtlEnabled, this.config) } getRtlEnabled() { const { rtlEnabled: rtlEnabled } = this.props; return (0, _resolve_rtl.resolveRtlEnabled)(rtlEnabled, this.config) } getAttributes() { const { aria: aria, disabled: disabled, focusStateEnabled: focusStateEnabled, visible: visible } = this.props; const accessKey = focusStateEnabled && !disabled && this.props.accessKey; const props = _extends({}, (0, _extend.extend)({}, accessKey && { accessKey: accessKey }), (args = _extends({}, aria, { disabled: disabled, hidden: !visible }), Object.keys(args).reduce(((r, key) => { if (args[key]) { return _extends({}, r, { ["role" === key || "id" === key ? key : `aria-${key}`]: String(args[key]) }) } return r }), {})), (0, _extend.extend)({}, this.getRestAttributes(this.props))); var args; return props } getRestAttributes(props) { const result = _extends({}, props); ["_feedbackHideTimeout", "_feedbackShowTimeout", "accessKey", "activeStateEnabled", "activeStateUnit", "addWidgetClass", "aria", "children", "className", "classes", "cssText", "disabled", "focusStateEnabled", "height", "hint", "hoverStateEnabled", "name", "onActive", "onClick", "onDimensionChanged", "onFocusIn", "onFocusOut", "onHoverEnd", "onHoverStart", "onInactive", "onKeyDown", "onRootElementRendered", "onVisibilityChange", "rootElementRef", "rtlEnabled", "tabIndex", "visible", "width"].forEach((exclude => { delete result[exclude] })); return result } getStyles() { const { width: width, height: height } = this.props; const style = this.props.style || {}; const computedWidth = (0, _style.normalizeStyleProp)("width", (0, _type.isFunction)(width) ? width() : width); const computedHeight = (0, _style.normalizeStyleProp)("height", (0, _type.isFunction)(height) ? height() : height); return _extends({}, style, { height: computedHeight ?? style.height, width: computedWidth ?? style.width }) } getCssClasses() { const { classes: classes, addWidgetClass: addWidgetClass, className: className, disabled: disabled, activeStateEnabled: activeStateEnabled, focusStateEnabled: focusStateEnabled, hoverStateEnabled: hoverStateEnabled, onVisibilityChange: onVisibilityChange, visible: visible } = this.props; const isFocusable = !!focusStateEnabled && !disabled; const isHoverable = !!hoverStateEnabled && !disabled; const canBeActive = !!activeStateEnabled && !disabled; const classesMap = { [WIDGET_CLASS]: !!addWidgetClass, [String(classes)]: !!classes, [String(className)]: !!className, "dx-state-disabled": !!disabled, "dx-state-invisible": !visible, "dx-state-focused": !!this.state.focused && isFocusable, "dx-state-active": !!this.state.active && canBeActive, "dx-state-hover": !!this.state.hovered && isHoverable && !this.state.active, "dx-rtl": !!this.props.rtlEnabled, "dx-visibility-change-handler": !!onVisibilityChange }; return (0, _render_utils.combineClasses)(classesMap) } getTabIndex() { const { focusStateEnabled: focusStateEnabled, disabled: disabled, tabIndex: tabIndex } = this.props; const isFocusable = focusStateEnabled && !disabled; return isFocusable ? tabIndex : void 0 } focus() { var _this$widgetElementRe17; _short.focus.trigger(null === (_this$widgetElementRe17 = this.widgetElementRef) || void 0 === _this$widgetElementRe17 ? void 0 : _this$widgetElementRe17.current) } blur() { var _this$widgetElementRe18, _this$widgetElementRe19; const activeElement = _dom_adapter.default.getActiveElement(null === (_this$widgetElementRe18 = this.widgetElementRef) || void 0 === _this$widgetElementRe18 ? void 0 : _this$widgetElementRe18.current); if ((null === (_this$widgetElementRe19 = this.widgetElementRef) || void 0 === _this$widgetElementRe19 ? void 0 : _this$widgetElementRe19.current) === activeElement) { activeElement.blur() } } activate() { this.setState({ active: true }) } deactivate() { this.setState({ active: false }) } render() { const { hint: hint, children: children } = this.props; const widget = (0, _inferno.normalizeProps)((0, _inferno.createVNode)(1, "div", this.getCssClasses(), children, 0, _extends({}, this.getAttributes(), { tabindex: this.getTabIndex(), title: hint, style: this.getStyles() }), null, this.widgetElementRef)); return this.getShouldRenderConfigProvider() ? (0, _inferno.createComponentVNode)(2, _config_provider.ConfigProvider, { rtlEnabled: this.getRtlEnabled(), children: widget }) : widget } } exports.Widget = Widget; Widget.defaultProps = WidgetDefaultProps }, 52820: /*!**********************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/core/templates/m_bindable_template.js ***! \**********************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.BindableTemplate = void 0; var _events_engine = _interopRequireDefault(__webpack_require__( /*! ../../../common/core/events/core/events_engine */ 92774)); var _remove = __webpack_require__( /*! ../../../common/core/events/remove */ 28630); var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../../core/renderer */ 64553)); var _template_base = __webpack_require__( /*! ../../../core/templates/template_base */ 42186); var _type = __webpack_require__( /*! ../../../core/utils/type */ 11528); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } const watchChanges = function(rawData, watchMethod, fields, fieldsMap, callback) { let fieldsDispose; const globalDispose = ((data, watchMethod, callback) => watchMethod((() => data), callback))(rawData, watchMethod, (dataWithRawFields => { fieldsDispose && fieldsDispose(); if ((0, _type.isPrimitive)(dataWithRawFields)) { callback(dataWithRawFields); return } fieldsDispose = function(data, watchMethod, fields, fieldsMap, callback) { const resolvedData = {}; const missedFields = fields.slice(); const watchHandlers = fields.map((name => { const fieldGetter = fieldsMap[name]; return watchMethod(fieldGetter ? () => fieldGetter(data) : () => data[name], (value => { resolvedData[name] = value; if (missedFields.length) { const index = missedFields.indexOf(name); if (index >= 0) { missedFields.splice(index, 1) } } if (!missedFields.length) { callback(resolvedData) } })) })); return function() { watchHandlers.forEach((dispose => dispose())) } }(dataWithRawFields, watchMethod, fields, fieldsMap, callback) })); return function() { fieldsDispose && fieldsDispose(); globalDispose && globalDispose() } }; class BindableTemplate extends _template_base.TemplateBase { constructor(render, fields, watchMethod, fieldsMap) { super(); this._render = render; this._fields = fields; this._fieldsMap = fieldsMap || {}; this._watchMethod = watchMethod } _renderCore(options) { const $container = (0, _renderer.default)(options.container); const dispose = watchChanges(options.model, this._watchMethod, this._fields, this._fieldsMap, (data => { $container.empty(); this._render($container, data, options.model) })); _events_engine.default.on($container, _remove.removeEvent, dispose); return $container.contents() } } exports.BindableTemplate = BindableTemplate }, 93971: /*!***************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/core/templates/m_child_default_template.js ***! \***************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.ChildDefaultTemplate = void 0; var _template_base = __webpack_require__( /*! ../../../core/templates/template_base */ 42186); class ChildDefaultTemplate extends _template_base.TemplateBase { constructor(name) { super(); this.name = name } } exports.ChildDefaultTemplate = ChildDefaultTemplate }, 11768: /*!*******************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/core/templates/m_empty_template.js ***! \*******************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.EmptyTemplate = void 0; var _renderer = (e = __webpack_require__( /*! ../../../core/renderer */ 64553), e && e.__esModule ? e : { default: e }); var e; var _template_base = __webpack_require__( /*! ../../../core/templates/template_base */ 42186); class EmptyTemplate extends _template_base.TemplateBase { _renderCore() { return (0, _renderer.default)() } } exports.EmptyTemplate = EmptyTemplate }, 88969: /*!**********************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/core/templates/m_function_template.js ***! \**********************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.FunctionTemplate = void 0; var _template_base = __webpack_require__( /*! ../../../core/templates/template_base */ 42186); var _dom = __webpack_require__( /*! ../../../core/utils/dom */ 86858); class FunctionTemplate extends _template_base.TemplateBase { constructor(render) { super(); this._render = render } _renderCore(options) { return (0, _dom.normalizeTemplateElement)(this._render(options)) } } exports.FunctionTemplate = FunctionTemplate }, 52538: /*!*************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/core/templates/m_template.js ***! \*************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.Template = void 0; var _renderer = (e = __webpack_require__( /*! ../../../core/renderer */ 64553), e && e.__esModule ? e : { default: e }); var e; var _template_base = __webpack_require__( /*! ../../../core/templates/template_base */ 42186); var _template_engine_registry = __webpack_require__( /*! ../../../core/templates/template_engine_registry */ 35155); var _dom = __webpack_require__( /*! ../../../core/utils/dom */ 86858); (0, _template_engine_registry.registerTemplateEngine)("default", { compile: element => (0, _dom.normalizeTemplateElement)(element), render: (template, model, index) => template.clone() }); (0, _template_engine_registry.setTemplateEngine)("default"); class Template extends _template_base.TemplateBase { constructor(element) { super(); this._element = element } _renderCore(options) { const { transclude: transclude } = options; if (!transclude && !this._compiledTemplate) { this._compiledTemplate = (0, _template_engine_registry.getCurrentTemplateEngine)().compile(this._element) } return (0, _renderer.default)("
").append(transclude ? this._element : (0, _template_engine_registry.getCurrentTemplateEngine)().render(this._compiledTemplate, options.model, options.index)).contents() } source() { return (0, _renderer.default)(this._element).clone() } } exports.Template = Template }, 31292: /*!******************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/core/templates/m_template_base.js ***! \******************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.renderedCallbacks = exports.TemplateBase = void 0; var _visibility_change = __webpack_require__( /*! ../../../common/core/events/visibility_change */ 18029); var _dom_adapter = _interopRequireDefault(__webpack_require__( /*! ../../../core/dom_adapter */ 64960)); var _errors = _interopRequireDefault(__webpack_require__( /*! ../../../core/errors */ 87129)); var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../../core/renderer */ 64553)); var _callbacks = _interopRequireDefault(__webpack_require__( /*! ../../../core/utils/callbacks */ 84718)); var _dom = __webpack_require__( /*! ../../../core/utils/dom */ 86858); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } const renderedCallbacks = exports.renderedCallbacks = (0, _callbacks.default)({ syncStrategy: true }); exports.TemplateBase = class { render(options) { options = options || {}; const { onRendered: onRendered } = options; delete options.onRendered; let $result; if (options.renovated && options.transclude && this._element) { $result = (0, _renderer.default)("
").append(this._element).contents() } else { $result = this._renderCore(options) } this._ensureResultInContainer($result, options.container); renderedCallbacks.fire($result, options.container); onRendered && onRendered(); return $result } _ensureResultInContainer($result, container) { if (!container) { return } const $container = (0, _renderer.default)(container); const resultInContainer = (0, _dom.contains)($container.get(0), $result.get(0)); $container.append($result); if (resultInContainer) { return } const resultInBody = (0, _dom.contains)(_dom_adapter.default.getBody(), $container.get(0)); if (!resultInBody) { return }(0, _visibility_change.triggerShownEvent)($result) } _renderCore() { throw _errors.default.Error("E0001") } } }, 70785: /*!*****************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/core/templates/m_template_engine_registry.js ***! \*****************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.getCurrentTemplateEngine = function() { return currentTemplateEngine }; exports.registerTemplateEngine = function(name, templateEngine) { templateEngines[name] = templateEngine }; exports.setTemplateEngine = function(templateEngine) { if ((0, _type.isString)(templateEngine)) { currentTemplateEngine = templateEngines[templateEngine]; if (!currentTemplateEngine) { throw _errors.default.Error("E0020", templateEngine) } } else { currentTemplateEngine = templateEngine } }; var _errors = (e = __webpack_require__( /*! ../../../core/errors */ 87129), e && e.__esModule ? e : { default: e }); var e; var _type = __webpack_require__( /*! ../../../core/utils/type */ 11528); const templateEngines = {}; let currentTemplateEngine }, 72928: /*!*********************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/core/utils/capitalize.js ***! \*********************************************************************************/ function(__unused_webpack_module, exports) { Object.defineProperty(exports, "__esModule", { value: true }); exports.capitalize = void 0; exports.capitalize = str => str.charAt(0).toUpperCase() + str.slice(1) }, 46190: /*!**************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/core/utils/combine_classes.js ***! \**************************************************************************************/ function(__unused_webpack_module, exports) { Object.defineProperty(exports, "__esModule", { value: true }); exports.combineClasses = function(classesMap) { return Object.keys(classesMap).filter((p => classesMap[p])).join(" ") } }, 93147: /*!*****************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/core/utils/conditional_invoke.js ***! \*****************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.invokeConditionally = function(cancelResult, callback, cancelCallback) { const invokeCallback = cancel => { const callbackToInvoke = cancel ? cancelCallback : callback; null === callbackToInvoke || void 0 === callbackToInvoke || callbackToInvoke() }; if ((0, _type.isPromise)(cancelResult)) { cancelResult.then(invokeCallback).catch(callback) } else { invokeCallback(Boolean(cancelResult)) } }; var _type = __webpack_require__( /*! ../../../core/utils/type */ 11528) }, 55594: /*!***************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/core/utils/date.js ***! \***************************************************************************/ function(__unused_webpack_module, exports) { Object.defineProperty(exports, "__esModule", { value: true }); exports.dateUtilsTs = void 0; exports.dateUtilsTs = { addOffsets: (date, offsets) => { const newDateMs = offsets.reduce(((result, offset) => result + offset), date.getTime()); return new Date(newDateMs) }, isValidDate: date => Boolean(date && !isNaN(new Date(date).valueOf())) } }, 14136: /*!*****************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/core/utils/m_ajax.js ***! \*****************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.Ajax = void 0; var _http_request = _interopRequireDefault(__webpack_require__( /*! ../../../core/http_request */ 35688)); var _ajax_utils = __webpack_require__( /*! ../../../core/utils/ajax_utils */ 28248); var _deferred = __webpack_require__( /*! ../../../core/utils/deferred */ 87739); var _dependency_injector = _interopRequireDefault(__webpack_require__( /*! ../../../core/utils/dependency_injector */ 89656)); var _type = __webpack_require__( /*! ../../../core/utils/type */ 11528); var _window = __webpack_require__( /*! ../../../core/utils/window */ 3104); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } const window = (0, _window.getWindow)(); exports.Ajax = (0, _dependency_injector.default)({ sendRequest: function(options) { const xhr = _http_request.default.getXhr(); const d = new _deferred.Deferred; const result = d.promise(); const async = (0, _type.isDefined)(options.async) ? options.async : true; const { dataType: dataType } = options; const timeout = options.timeout || 0; let timeoutId; options.crossDomain = (0, _ajax_utils.isCrossDomain)(options.url); const needScriptEvaluation = "jsonp" === dataType || "script" === dataType; if (void 0 === options.cache) { options.cache = !needScriptEvaluation } const callbackName = (0, _ajax_utils.getJsonpCallbackName)(options); const headers = (0, _ajax_utils.getRequestHeaders)(options); const requestOptions = (0, _ajax_utils.getRequestOptions)(options, headers); const { url: url } = requestOptions; const { parameters: parameters } = requestOptions; if (callbackName) { window[callbackName] = function(data) { d.resolve(data, "success", xhr) } } if (options.crossDomain && needScriptEvaluation) { const reject = function() { d.reject(xhr, "error") }; const resolve = function() { if ("jsonp" === dataType) { return } d.resolve(null, "success", xhr) }; (0, _ajax_utils.evalCrossDomainScript)(url).then(resolve, reject); return result } if (options.crossDomain && !("withCredentials" in xhr)) { d.reject(xhr, "error"); return result } xhr.open((0, _ajax_utils.getMethod)(options), url, async, options.username, options.password); if (async) { xhr.timeout = timeout; timeoutId = function(timeout, xhr) { return timeout && setTimeout((function() { xhr.customStatus = "timeout"; xhr.abort() }), timeout) }(timeout, xhr) } xhr.onreadystatechange = function(e) { if (4 === xhr.readyState) { clearTimeout(timeoutId); if (status = xhr.status, status >= 200 && status < 300) { if (function(status) { return 204 !== status }(xhr.status)) { ! function(deferred, xhr, dataType) { const data = function(xhr) { return xhr.responseType && "text" !== xhr.responseType || "string" !== typeof xhr.responseText ? xhr.response : xhr.responseText }(xhr); switch (dataType) { case "jsonp": (0, _ajax_utils.evalScript)(data); break; case "script": (0, _ajax_utils.evalScript)(data); deferred.resolve(data, "success", xhr); break; case "json": try { deferred.resolve(JSON.parse(data), "success", xhr) } catch (e) { deferred.reject(xhr, "parsererror", e) } break; default: deferred.resolve(data, "success", xhr) } }(d, xhr, dataType) } else { d.resolve(null, "nocontent", xhr) } } else { d.reject(xhr, xhr.customStatus || "error") } } var status }; if (options.upload) { xhr.upload.onprogress = options.upload.onprogress; xhr.upload.onloadstart = options.upload.onloadstart; xhr.upload.onabort = options.upload.onabort } if (options.xhrFields) { for (const field in options.xhrFields) { xhr[field] = options.xhrFields[field] } } if ("arraybuffer" === options.responseType) { xhr.responseType = options.responseType } for (const name in headers) { if (Object.prototype.hasOwnProperty.call(headers, name) && (0, _type.isDefined)(headers[name])) { xhr.setRequestHeader(name, headers[name]) } } if (options.beforeSend) { options.beforeSend(xhr) } xhr.send(parameters); result.abort = function() { xhr.abort() }; return result } }) }, 42202: /*!***********************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/core/utils/m_ajax_utils.js ***! \***********************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.getJsonpCallbackName = exports.getAcceptHeader = exports.evalScript = exports.evalCrossDomainScript = void 0; exports.getMethod = getMethod; exports.isCrossDomain = exports.getRequestOptions = exports.getRequestHeaders = void 0; var _dom_adapter = (e = __webpack_require__( /*! ../../../core/dom_adapter */ 64960), e && e.__esModule ? e : { default: e }); var e; var _extend = __webpack_require__( /*! ../../../core/utils/extend */ 52576); var _window = __webpack_require__( /*! ../../../core/utils/window */ 3104); const window = (0, _window.getWindow)(); const createScript = function(options) { const script = _dom_adapter.default.createElement("script"); for (const name in options) { script[name] = options[name] } return script }; const appendToHead = function(element) { return _dom_adapter.default.getHead().appendChild(element) }; const removeScript = function(scriptNode) { scriptNode.parentNode.removeChild(scriptNode) }; exports.evalScript = function(code) { const script = createScript({ text: code }); appendToHead(script); removeScript(script) }; exports.evalCrossDomainScript = function(url) { const script = createScript({ src: url }); return new Promise(((resolve, reject) => { const events = { load: resolve, error: reject }; const loadHandler = function(e) { events[e.type](); removeScript(script) }; for (const event in events) { _dom_adapter.default.listen(script, event, loadHandler) } appendToHead(script) })) }; function getMethod(options) { return (options.method || "GET").toUpperCase() } const getAcceptHeader = function(options) { const dataType = options.dataType || "*"; const scriptAccept = "text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"; const accepts = { "*": "*/*", text: "text/plain", html: "text/html", xml: "application/xml, text/xml", json: "application/json, text/javascript", jsonp: scriptAccept, script: scriptAccept }; (0, _extend.extendFromObject)(accepts, options.accepts, true); return accepts[dataType] ? accepts[dataType] + ("*" !== dataType ? ", */*; q=0.01" : "") : accepts["*"] }; exports.getAcceptHeader = getAcceptHeader; exports.getRequestHeaders = function(options) { const headers = options.headers || {}; headers["Content-Type"] = headers["Content-Type"] || function(options) { let defaultContentType; if (options.data && !options.upload && "GET" !== getMethod(options)) { defaultContentType = "application/x-www-form-urlencoded;charset=utf-8" } return options.contentType || defaultContentType }(options); headers.Accept = headers.Accept || getAcceptHeader(options); if (!options.crossDomain && !headers["X-Requested-With"]) { headers["X-Requested-With"] = "XMLHttpRequest" } return headers }; exports.getJsonpCallbackName = function(options) { if ("jsonp" === options.dataType) { const random = Math.random().toString().replace(/\D/g, ""); const callbackName = options.jsonpCallback || `dxCallback${Date.now()}_${random}`; const callbackParameter = options.jsonp || "callback"; options.data = options.data || {}; options.data[callbackParameter] = callbackName; return callbackName } }; exports.getRequestOptions = function(options, headers) { let params = options.data; const paramsAlreadyString = "string" === typeof params; let url = options.url || window.location.href; if (!paramsAlreadyString && !options.cache) { params = params || {}; params._ = Date.now() } if (params && !options.upload) { if (!paramsAlreadyString) { params = function(params) { const result = []; for (const name in params) { let value = params[name]; if (void 0 === value) { continue } if (null === value) { value = "" } if ("function" === typeof value) { value = value() } result.push(`${encodeURIComponent(name)}=${encodeURIComponent(value)}`) } return result.join("&") }(params) } if ("GET" === getMethod(options)) { if ("" !== params) { url += (url.indexOf("?") > -1 ? "&" : "?") + params } params = null } else if (headers["Content-Type"] && headers["Content-Type"].indexOf("application/x-www-form-urlencoded") > -1) { params = params.replace(/%20/g, "+") } } return { url: url, parameters: params } }; exports.isCrossDomain = function(url) { if (!(0, _window.hasWindow)()) { return true } let crossDomain = false; const originAnchor = _dom_adapter.default.createElement("a"); const urlAnchor = _dom_adapter.default.createElement("a"); originAnchor.href = window.location.href; try { urlAnchor.href = url; urlAnchor.href = urlAnchor.href; crossDomain = `${originAnchor.protocol}//${originAnchor.host}` !== `${urlAnchor.protocol}//${urlAnchor.host}` } catch (e) { crossDomain = true } return crossDomain } }, 28601: /*!******************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/core/utils/m_array.js ***! \******************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.wrapToArray = exports.removeDuplicates = exports.normalizeIndexes = exports.groupBy = exports.getUniqueValues = exports.getIntersection = void 0; var _config = (e = __webpack_require__( /*! ../../../core/config */ 66636), e && e.__esModule ? e : { default: e }); var e; var _object = __webpack_require__( /*! ../../../core/utils/object */ 22263); var _type = __webpack_require__( /*! ../../../core/utils/type */ 11528); function createOccurrenceMap(array) { return array.reduce(((map, value) => { const count = (map.get(value) ?? 0) + 1; map.set(value, count); return map }), new Map) } exports.wrapToArray = function(item) { return Array.isArray(item) ? item : [item] }; exports.getUniqueValues = function(values) { return [...new Set(values)] }; exports.getIntersection = function(firstArray, secondArray) { const toRemoveMap = createOccurrenceMap(secondArray); return firstArray.filter((value => { const occurrencesCount = toRemoveMap.get(value); occurrencesCount && toRemoveMap.set(value, occurrencesCount - 1); return occurrencesCount })) }; exports.removeDuplicates = function() { let from = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : []; let toRemove = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : []; const toRemoveMap = createOccurrenceMap(toRemove); return from.filter((value => { const occurrencesCount = toRemoveMap.get(value); occurrencesCount && toRemoveMap.set(value, occurrencesCount - 1); return !occurrencesCount })) }; exports.normalizeIndexes = function(items, indexPropName, currentItem, needIndexCallback) { const indexedItems = {}; const { useLegacyVisibleIndex: useLegacyVisibleIndex } = (0, _config.default)(); let currentIndex = 0; const shouldUpdateIndex = item => !(0, _type.isDefined)(item[indexPropName]) && (!needIndexCallback || needIndexCallback(item)); items.forEach((item => { const index = item[indexPropName]; if (index >= 0) { indexedItems[index] = indexedItems[index] || []; if (item === currentItem) { indexedItems[index].unshift(item) } else { indexedItems[index].push(item) } } else { item[indexPropName] = void 0 } })); if (!useLegacyVisibleIndex) { items.forEach((item => { if (shouldUpdateIndex(item)) { while (indexedItems[currentIndex]) { currentIndex++ } indexedItems[currentIndex] = [item]; currentIndex++ } })) } currentIndex = 0; (0, _object.orderEach)(indexedItems, (function(index, items) { items.forEach((item => { if (index >= 0) { item[indexPropName] = currentIndex++ } })) })); if (useLegacyVisibleIndex) { items.forEach((item => { if (shouldUpdateIndex(item)) { item[indexPropName] = currentIndex++ } })) } }; exports.groupBy = (array, getGroupName) => array.reduce(((groupedResult, item) => { const groupName = getGroupName(item); groupedResult[groupName] = groupedResult[groupName] ?? []; groupedResult[groupName].push(item); return groupedResult }), {}) }, 87525: /*!**************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/core/utils/m_array_compare.js ***! \**************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.isKeysEqual = exports.findChanges = void 0; var _type = __webpack_require__( /*! ../../../core/utils/type */ 11528); const getKeyWrapper = function(item, getKey) { const key = getKey(item); if ((0, _type.isObject)(key)) { try { return JSON.stringify(key) } catch (e) { return key } } return key }; const getSameNewByOld = function(oldItem, newItems, newIndexByKey, getKey) { const key = getKeyWrapper(oldItem, getKey); return newItems[newIndexByKey[key]] }; exports.isKeysEqual = function(oldKeys, newKeys) { if (oldKeys.length !== newKeys.length) { return false } for (let i = 0; i < newKeys.length; i++) { if (oldKeys[i] !== newKeys[i]) { return false } } return true }; exports.findChanges = function(oldItems, newItems, getKey, isItemEquals) { const oldIndexByKey = {}; const newIndexByKey = {}; let addedCount = 0; let removeCount = 0; const result = []; oldItems.forEach((function(item, index) { const key = getKeyWrapper(item, getKey); oldIndexByKey[key] = index })); newItems.forEach((function(item, index) { const key = getKeyWrapper(item, getKey); newIndexByKey[key] = index })); const itemCount = Math.max(oldItems.length, newItems.length); for (let index = 0; index < itemCount + addedCount; index++) { const newItem = newItems[index]; const oldNextIndex = index - addedCount + removeCount; const nextOldItem = oldItems[oldNextIndex]; const isRemoved = !newItem || nextOldItem && !getSameNewByOld(nextOldItem, newItems, newIndexByKey, getKey); if (isRemoved) { if (nextOldItem) { result.push({ type: "remove", key: getKey(nextOldItem), index: index, oldItem: nextOldItem }); removeCount++; index-- } } else { const key = getKeyWrapper(newItem, getKey); const oldIndex = oldIndexByKey[key]; const oldItem = oldItems[oldIndex]; if (!oldItem) { addedCount++; result.push({ type: "insert", data: newItem, index: index }) } else if (oldIndex === oldNextIndex) { if (!isItemEquals(oldItem, newItem)) { result.push({ type: "update", data: newItem, key: getKey(newItem), index: index, oldItem: oldItem }) } } else { return } } } return result } }, 33436: /*!********************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/core/utils/m_browser.js ***! \********************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.browser = void 0; var _extend = __webpack_require__( /*! ../../../core/utils/extend */ 52576); var _window = __webpack_require__( /*! ../../../core/utils/window */ 3104); const navigator = (0, _window.getNavigator)(); const webkitRegExp = /(webkit)[ /]([\w.]+)/; const mozillaRegExp = /(mozilla)(?:.*? rv:([\w.]+))/; const browserFromUA = ua => { ua = ua.toLowerCase(); const result = {}; const matches = webkitRegExp.exec(ua) || ua.indexOf("compatible") < 0 && mozillaRegExp.exec(ua) || []; let browserName = matches[1]; let browserVersion = matches[2]; if ("webkit" === browserName) { result.webkit = true; if (ua.indexOf("chrome") >= 0 || ua.indexOf("crios") >= 0) { browserName = "chrome"; browserVersion = /(?:chrome|crios)\/(\d+\.\d+)/.exec(ua); browserVersion = browserVersion && browserVersion[1] } else if (ua.indexOf("fxios") >= 0) { browserName = "mozilla"; browserVersion = /fxios\/(\d+\.\d+)/.exec(ua); browserVersion = browserVersion && browserVersion[1] } else if (ua.indexOf("safari") >= 0 && /version|phantomjs/.test(ua)) { browserName = "safari"; browserVersion = /(?:version|phantomjs)\/([0-9.]+)/.exec(ua); browserVersion = browserVersion && browserVersion[1] } else { browserName = "unknown"; browserVersion = /applewebkit\/([0-9.]+)/.exec(ua); browserVersion = browserVersion && browserVersion[1] } } if (browserName) { result[browserName] = true; result.version = browserVersion } return result }; exports.browser = (0, _extend.extend)({ _fromUA: browserFromUA }, browserFromUA(navigator.userAgent)) }, 58060: /*!**********************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/core/utils/m_call_once.js ***! \**********************************************************************************/ function(__unused_webpack_module, exports) { Object.defineProperty(exports, "__esModule", { value: true }); exports.callOnce = void 0; exports.callOnce = function(handler) { let result; let wrappedHandler = function() { result = handler.apply(this, arguments); wrappedHandler = function() { return result }; return result }; return function() { return wrappedHandler.apply(this, arguments) } } }, 63172: /*!**********************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/core/utils/m_callbacks.js ***! \**********************************************************************************/ function(__unused_webpack_module, exports) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = exports.Callbacks = void 0; const Callback = function(options) { this._options = options || {}; this._list = []; this._queue = []; this._firing = false; this._fired = false; this._firingIndexes = [] }; Callback.prototype._fireCore = function(context, args) { const firingIndexes = this._firingIndexes; const list = this._list; const { stopOnFalse: stopOnFalse } = this._options; const step = firingIndexes.length; for (firingIndexes[step] = 0; firingIndexes[step] < list.length; firingIndexes[step]++) { const result = list[firingIndexes[step]].apply(context, args); if (false === result && stopOnFalse) { break } } firingIndexes.pop() }; Callback.prototype.add = function(fn) { if ("function" === typeof fn && (!this._options.unique || !this.has(fn))) { this._list.push(fn) } return this }; Callback.prototype.remove = function(fn) { const list = this._list; const firingIndexes = this._firingIndexes; const index = list.indexOf(fn); if (index > -1) { list.splice(index, 1); if (this._firing && firingIndexes.length) { for (let step = 0; step < firingIndexes.length; step++) { if (index <= firingIndexes[step]) { firingIndexes[step]-- } } } } return this }; Callback.prototype.has = function(fn) { const list = this._list; return fn ? list.indexOf(fn) > -1 : !!list.length }; Callback.prototype.empty = function(fn) { this._list = []; return this }; Callback.prototype.fireWith = function(context, args) { const queue = this._queue; args = args || []; args = args.slice ? args.slice() : args; if (this._options.syncStrategy) { this._firing = true; this._fireCore(context, args) } else { queue.push([context, args]); if (this._firing) { return } this._firing = true; while (queue.length) { const memory = queue.shift(); this._fireCore(memory[0], memory[1]) } } this._firing = false; this._fired = true; return this }; Callback.prototype.fire = function() { this.fireWith(this, arguments) }; Callback.prototype.fired = function() { return this._fired }; const Callbacks = function(options) { return new Callback(options) }; exports.Callbacks = Callbacks; exports.default = Callbacks }, 39315: /*!*******************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/core/utils/m_common.js ***! \*******************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.uiLayerInitialized = exports.splitPair = exports.pairToObject = exports.normalizeKey = exports.noop = exports.grep = exports.getKeyHash = exports.findBestMatches = exports.executeAsync = exports.escapeRegExp = exports.equalByValue = exports.ensureDefined = exports.denormalizeKey = exports.deferUpdater = exports.deferUpdate = exports.deferRenderer = exports.deferRender = exports.default = exports.asyncNoop = exports.applyServerDecimalSeparator = void 0; var _config = _interopRequireDefault(__webpack_require__( /*! ../../../core/config */ 66636)); var _guid = _interopRequireDefault(__webpack_require__( /*! ../../../core/guid */ 19427)); var _data = __webpack_require__( /*! ../../../core/utils/data */ 31e3); var _deferred = __webpack_require__( /*! ../../../core/utils/deferred */ 87739); var _iterator = __webpack_require__( /*! ../../../core/utils/iterator */ 21274); var _type = __webpack_require__( /*! ../../../core/utils/type */ 11528); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } function _extends() { return _extends = Object.assign ? Object.assign.bind() : function(n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) { ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]) } } return n }, _extends.apply(null, arguments) } exports.uiLayerInitialized = new _deferred.Deferred; const ensureDefined = function(value, defaultValue) { return (0, _type.isDefined)(value) ? value : defaultValue }; exports.ensureDefined = ensureDefined; const executeAsync = function(action, context) { const deferred = new _deferred.Deferred; const normalizedContext = context || this; const task = { promise: deferred.promise(), abort() { clearTimeout(timerId); deferred.rejectWith(normalizedContext) } }; const timerId = (arguments[2] || setTimeout)((function() { const result = action.call(normalizedContext); if (result && result.done && (0, _type.isFunction)(result.done)) { result.done((function() { deferred.resolveWith(normalizedContext) })) } else { deferred.resolveWith(normalizedContext) } }), "number" === typeof context ? context : 0); return task }; exports.executeAsync = executeAsync; const delayedFuncs = []; const delayedNames = []; const delayedDeferreds = []; let executingName; const deferExecute = function(name, func, deferred) { if (executingName && executingName !== name) { delayedFuncs.push(func); delayedNames.push(name); deferred = deferred || new _deferred.Deferred; delayedDeferreds.push(deferred); return deferred } const oldExecutingName = executingName; const currentDelayedCount = delayedDeferreds.length; executingName = name; let result = func(); if (!result) { if (delayedDeferreds.length > currentDelayedCount) { result = _deferred.when.apply(this, delayedDeferreds.slice(currentDelayedCount)) } else if (deferred) { deferred.resolve() } } executingName = oldExecutingName; if (deferred && result && result.done) { result.done(deferred.resolve).fail(deferred.reject) } if (!executingName && delayedFuncs.length) { ("render" === delayedNames.shift() ? deferRender : deferUpdate)(delayedFuncs.shift(), delayedDeferreds.shift()) } return result || (0, _deferred.when)() }; const deferRender = function(func, deferred) { return deferExecute("render", func, deferred) }; exports.deferRender = deferRender; const deferUpdate = function(func, deferred) { return deferExecute("update", func, deferred) }; exports.deferUpdate = deferUpdate; const deferRenderer = function(func) { return function() { const that = this; return deferExecute("render", (function() { return func.call(that) })) } }; exports.deferRenderer = deferRenderer; const deferUpdater = function(func) { return function() { const that = this; return deferExecute("update", (function() { return func.call(that) })) } }; exports.deferUpdater = deferUpdater; const findBestMatches = (targetFilter, items, mapFn) => { const bestMatches = []; let maxMatchCount = 0; (0, _iterator.each)(items, ((index, itemSrc) => { let matchCount = 0; const item = mapFn ? mapFn(itemSrc) : itemSrc; (0, _iterator.each)(targetFilter, ((paramName, targetValue) => { const value = item[paramName]; if (void 0 === value) { return } if (match(value, targetValue)) { matchCount++; return } matchCount = -1; return false })); if (matchCount < maxMatchCount) { return } if (matchCount > maxMatchCount) { bestMatches.length = 0; maxMatchCount = matchCount } bestMatches.push(itemSrc) })); return bestMatches }; exports.findBestMatches = findBestMatches; const match = function(value, targetValue) { if (Array.isArray(value) && Array.isArray(targetValue)) { let mismatch = false; (0, _iterator.each)(value, ((index, valueItem) => { if (valueItem !== targetValue[index]) { mismatch = true; return false } })); if (mismatch) { return false } return true } if (value === targetValue) { return true } return false }; const splitPair = function(raw) { switch ((0, _type.type)(raw)) { case "string": return raw.split(/\s+/, 2); case "object": return [raw.x ?? raw.h, raw.y ?? raw.v]; case "number": return [raw]; case "array": return raw; default: return null } }; exports.splitPair = splitPair; const normalizeKey = function(id) { let key = (0, _type.isString)(id) ? id : id.toString(); const arr = key.match(/[^a-zA-Z0-9_]/g); arr && (0, _iterator.each)(arr, ((_, sign) => { key = key.replace(sign, `__${sign.charCodeAt()}__`) })); return key }; exports.normalizeKey = normalizeKey; const denormalizeKey = function(key) { const arr = key.match(/__\d+__/g); arr && arr.forEach((char => { const charCode = parseInt(char.replace("__", "")); key = key.replace(char, String.fromCharCode(charCode)) })); return key }; exports.denormalizeKey = denormalizeKey; const pairToObject = function(raw, preventRound) { const pair = splitPair(raw); let h = preventRound ? parseFloat(pair && pair[0]) : parseInt(pair && pair[0], 10); let v = preventRound ? parseFloat(pair && pair[1]) : parseInt(pair && pair[1], 10); if (!isFinite(h)) { h = 0 } if (!isFinite(v)) { v = h } return { h: h, v: v } }; exports.pairToObject = pairToObject; const getKeyHash = function(key) { if (key instanceof _guid.default) { return key.toString() } if ((0, _type.isObject)(key) || Array.isArray(key)) { try { const keyHash = JSON.stringify(key); return "{}" === keyHash ? key : keyHash } catch (e) { return key } } return key }; exports.getKeyHash = getKeyHash; const escapeRegExp = function(string) { return string.replace(/[[\]{}\-()*+?.\\^$|\s]/g, "\\$&") }; exports.escapeRegExp = escapeRegExp; const applyServerDecimalSeparator = function(value) { const separator = (0, _config.default)().serverDecimalSeparator; if ((0, _type.isDefined)(value)) { value = value.toString().replace(".", separator) } return value }; exports.applyServerDecimalSeparator = applyServerDecimalSeparator; const noop = function() {}; exports.noop = noop; const asyncNoop = function() { return (new _deferred.Deferred).resolve().promise() }; exports.asyncNoop = asyncNoop; const grep = function(elements, checkFunction, invert) { const result = []; let check; const expectedCheck = !invert; for (let i = 0; i < elements.length; i++) { check = !!checkFunction(elements[i], i); if (check === expectedCheck) { result.push(elements[i]) } } return result }; exports.grep = grep; const DEFAULT_EQUAL_BY_VALUE_OPTS = { maxDepth: 3, strict: true }; const compareByValue = (value1, value2, depth, options) => { const { strict: strict, maxDepth: maxDepth } = options; const comparable1 = (0, _data.toComparable)(value1, true); const comparable2 = (0, _data.toComparable)(value2, true); const comparisonResult = strict ? comparable1 === comparable2 : comparable1 == comparable2; switch (true) { case comparisonResult: case depth >= maxDepth: return true; case (0, _type.isObject)(comparable1) && (0, _type.isObject)(comparable2): return ((object1, object2, depth, options) => { const keys1 = Object.keys(object1); const keys2 = Object.keys(object2); if (keys1.length !== keys2.length) { return false } const keys2Set = new Set(keys2); return !keys1.some((key => !keys2Set.has(key) || !compareByValue(object1[key], object2[key], depth + 1, options))) })(comparable1, comparable2, depth, options); case Array.isArray(comparable1) && Array.isArray(comparable2): return ((array1, array2, depth, options) => { if (array1.length !== array2.length) { return false } return !array1.some(((item, idx) => !compareByValue(item, array2[idx], depth + 1, _extends({}, options, { strict: true })))) })(comparable1, comparable2, depth, options); default: return false } }; const equalByValue = function(value1, value2) { let options = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : DEFAULT_EQUAL_BY_VALUE_OPTS; const compareOptions = _extends({}, DEFAULT_EQUAL_BY_VALUE_OPTS, options); return compareByValue(value1, value2, 0, compareOptions) }; exports.equalByValue = equalByValue; exports.default = { ensureDefined: ensureDefined, executeAsync: executeAsync, deferRender: deferRender, deferUpdate: deferUpdate, deferRenderer: deferRenderer, deferUpdater: deferUpdater, findBestMatches: findBestMatches, splitPair: splitPair, normalizeKey: normalizeKey, denormalizeKey: denormalizeKey, pairToObject: pairToObject, getKeyHash: getKeyHash, escapeRegExp: escapeRegExp, applyServerDecimalSeparator: applyServerDecimalSeparator, noop: noop, asyncNoop: asyncNoop, grep: grep, equalByValue: equalByValue } }, 90834: /*!***********************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/core/utils/m_comparator.js ***! \***********************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.equals = void 0; var _dom_adapter = (e = __webpack_require__( /*! ../../../core/dom_adapter */ 64960), e && e.__esModule ? e : { default: e }); var e; var _data = __webpack_require__( /*! ../../../core/utils/data */ 31e3); var _type = __webpack_require__( /*! ../../../core/utils/type */ 11528); exports.equals = function(oldValue, newValue) { oldValue = (0, _data.toComparable)(oldValue, true); newValue = (0, _data.toComparable)(newValue, true); if (oldValue && newValue && (0, _type.isRenderer)(oldValue) && (0, _type.isRenderer)(newValue)) { return newValue.is(oldValue) } const oldValueIsNaN = oldValue !== oldValue; const newValueIsNaN = newValue !== newValue; if (oldValueIsNaN && newValueIsNaN) { return true } if (0 === oldValue && 0 === newValue) { return function(oldValue, newValue) { return 1 / oldValue === 1 / newValue }(oldValue, newValue) } if (null === oldValue || "object" !== typeof oldValue || _dom_adapter.default.isElementNode(oldValue)) { return oldValue === newValue } return false } }, 35005: /*!********************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/core/utils/m_console.js ***! \********************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.logger = exports.default = exports.debug = void 0; var _type = __webpack_require__( /*! ../../../core/utils/type */ 11528); const noop = function() {}; const getConsoleMethod = function(method) { if ("undefined" === typeof console || !(0, _type.isFunction)(console[method])) { return noop } return console[method].bind(console) }; const logger = exports.logger = { log: getConsoleMethod("log"), info: getConsoleMethod("info"), warn: getConsoleMethod("warn"), error: getConsoleMethod("error") }; const debug = exports.debug = function() { function assert(condition, message) { if (!condition) { throw new Error(message) } } return { assert: assert, assertParam: function(parameter, message) { assert(null !== parameter && void 0 !== parameter, message) } } }(); exports.default = { logger: logger, debug: debug } }, 93142: /*!*****************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/core/utils/m_data.js ***! \*****************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.toComparable = exports.getPathParts = exports.compileSetter = exports.compileGetter = void 0; var _class = _interopRequireDefault(__webpack_require__( /*! ../../../core/class */ 55620)); var _errors = _interopRequireDefault(__webpack_require__( /*! ../../../core/errors */ 87129)); var _iterator = __webpack_require__( /*! ../../../core/utils/iterator */ 21274); var _object = __webpack_require__( /*! ../../../core/utils/object */ 22263); var _type = __webpack_require__( /*! ../../../core/utils/type */ 11528); var _variable_wrapper = _interopRequireDefault(__webpack_require__( /*! ../../../core/utils/variable_wrapper */ 40216)); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } const unwrapVariable = _variable_wrapper.default.unwrap; const { isWrapped: isWrapped } = _variable_wrapper.default; const { assign: assign } = _variable_wrapper.default; const getPathParts = function(name) { return (expr = name, expr.replace(/\[/g, ".").replace(/\]/g, "")).split("."); var expr }; exports.getPathParts = getPathParts; const assignPropValue = function(obj, propName, value, options) { if ("this" === propName) { throw new _errors.default.Error("E4016") } const propValue = obj[propName]; if (options.unwrapObservables && isWrapped(propValue)) { assign(propValue, value) } else { obj[propName] = value } }; const prepareOptions = function(options) { options = options || {}; options.unwrapObservables = void 0 !== options.unwrapObservables ? options.unwrapObservables : true; return options }; function unwrap(value, options) { return options.unwrapObservables ? unwrapVariable(value) : value } const compileGetter = function(expr) { if (arguments.length > 1) { expr = [].slice.call(arguments) } if (!expr || "this" === expr) { return function(obj) { return obj } } if ("string" === typeof expr) { const path = getPathParts(expr); return function(obj, options) { options = prepareOptions(options); const functionAsIs = options.functionsAsIs; const hasDefaultValue = "defaultValue" in options; let current = unwrap(obj, options); for (let i = 0; i < path.length; i++) { if (!current) { if (null == current && hasDefaultValue) { return options.defaultValue } break } const pathPart = path[i]; if (hasDefaultValue && (0, _type.isObject)(current) && !(pathPart in current)) { return options.defaultValue } let next = unwrap(current[pathPart], options); if (!functionAsIs && (0, _type.isFunction)(next)) { next = next.call(current) } current = next } return current } } if (Array.isArray(expr)) { return function(getters) { const compiledGetters = {}; for (let i = 0, l = getters.length; i < l; i++) { const getter = getters[i]; compiledGetters[getter] = compileGetter(getter) } return function(obj, options) { let result; (0, _iterator.each)(compiledGetters, (function(name) { const value = this(obj, options); if (void 0 === value) { return } let current = result || (result = {}); const path = name.split("."); const last = path.length - 1; for (let i = 0; i < last; i++) { const pathItem = path[i]; if (!(pathItem in current)) { current[pathItem] = {} } current = current[pathItem] } current[path[last]] = value })); return result } }(expr) } if ((0, _type.isFunction)(expr)) { return expr } }; exports.compileGetter = compileGetter; function toLowerCase(value, options) { return null !== options && void 0 !== options && options.locale ? value.toLocaleLowerCase(options.locale) : value.toLowerCase() } function toUpperCase(value, options) { return null !== options && void 0 !== options && options.locale ? value.toLocaleUpperCase(options.locale) : value.toUpperCase() } const ensurePropValueDefined = function(obj, propName, value, options) { if ((0, _type.isDefined)(value)) { return value } const newValue = {}; assignPropValue(obj, propName, newValue, options); return newValue }; exports.compileSetter = function(expr) { expr = getPathParts(expr || "this"); const lastLevelIndex = expr.length - 1; return function(obj, value, options) { options = prepareOptions(options); let currentValue = unwrap(obj, options); expr.forEach((function(propertyName, levelIndex) { let propertyValue = function(obj, propName, options) { options = options || {}; if ("this" === propName) { return unwrap(obj, options) } return unwrap(obj[propName], options) }(currentValue, propertyName, options); const isPropertyFunc = !options.functionsAsIs && (0, _type.isFunction)(propertyValue) && !isWrapped(propertyValue); if (levelIndex === lastLevelIndex) { if (options.merge && (0, _type.isPlainObject)(value) && (!(0, _type.isDefined)(propertyValue) || (0, _type.isPlainObject)(propertyValue))) { propertyValue = ensurePropValueDefined(currentValue, propertyName, propertyValue, options); (0, _object.deepExtendArraySafe)(propertyValue, value, false, true) } else if (isPropertyFunc) { currentValue[propertyName](value) } else { assignPropValue(currentValue, propertyName, value, options) } } else { propertyValue = ensurePropValueDefined(currentValue, propertyName, propertyValue, options); if (isPropertyFunc) { propertyValue = propertyValue.call(currentValue) } currentValue = propertyValue } })) } }; exports.toComparable = function(value, caseSensitive) { var _options$collatorOpti; let options = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : {}; if (value instanceof Date) { return value.getTime() } const collatorSensitivity = null === options || void 0 === options || null === (_options$collatorOpti = options.collatorOptions) || void 0 === _options$collatorOpti ? void 0 : _options$collatorOpti.sensitivity; if (value && value instanceof _class.default && value.valueOf) { value = value.valueOf() } else if ("string" === typeof value && ("base" === collatorSensitivity || "case" === collatorSensitivity)) { const REMOVE_DIACRITICAL_MARKS_REGEXP = /[\u0300-\u036f]/g; if ("base" === collatorSensitivity) { value = toLowerCase(value, options) } value = value.normalize("NFD").replace(REMOVE_DIACRITICAL_MARKS_REGEXP, "") } const isCaseSensitive = caseSensitive || "case" === collatorSensitivity || "variant" === collatorSensitivity; if ("string" === typeof value && !isCaseSensitive) { var _options$locale; const locale = null === options || void 0 === options || null === (_options$locale = options.locale) || void 0 === _options$locale ? void 0 : _options$locale.toLowerCase(); const useUpperCase = locale && !!["hy", "el"].find((code => locale === code || locale.startsWith(`${code}-`))); return (useUpperCase ? toUpperCase : toLowerCase)(value, options) } return value } }, 66570: /*!*****************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/core/utils/m_date.js ***! \*****************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.dateUtils = void 0; var _date_serialization = (e = __webpack_require__( /*! ../../../core/utils/date_serialization */ 71051), e && e.__esModule ? e : { default: e }); var e; var _inflector = __webpack_require__( /*! ../../../core/utils/inflector */ 53124); var _iterator = __webpack_require__( /*! ../../../core/utils/iterator */ 21274); var _math = __webpack_require__( /*! ../../../core/utils/math */ 50254); var _type = __webpack_require__( /*! ../../../core/utils/type */ 11528); var _toMilliseconds = __webpack_require__( /*! ../../utils/toMilliseconds */ 24491); const dateUnitIntervals = ["millisecond", "second", "minute", "hour", "day", "week", "month", "quarter", "year"]; const convertMillisecondsToDateUnits = function(value) { let i; let dateUnitCount; let dateUnitInterval; const dateUnitIntervals = ["millisecond", "second", "minute", "hour", "day", "month", "year"]; const result = {}; for (i = dateUnitIntervals.length - 1; i >= 0; i--) { dateUnitInterval = dateUnitIntervals[i]; dateUnitCount = Math.floor(value / (0, _toMilliseconds.toMilliseconds)(dateUnitInterval)); if (dateUnitCount > 0) { result[`${dateUnitInterval}s`] = dateUnitCount; value -= convertDateUnitToMilliseconds(dateUnitInterval, dateUnitCount) } } return result }; function convertDateUnitToMilliseconds(dateUnit, count) { return (0, _toMilliseconds.toMilliseconds)(dateUnit) * count } function getDateUnitInterval(tickInterval) { let maxInterval = -1; let i; if ((0, _type.isString)(tickInterval)) { return tickInterval } if ((0, _type.isObject)(tickInterval)) { (0, _iterator.each)(tickInterval, (function(key, value) { for (i = 0; i < dateUnitIntervals.length; i++) { if (value && (key === `${dateUnitIntervals[i]}s` || key === dateUnitIntervals[i]) && maxInterval < i) { maxInterval = i } } })); return dateUnitIntervals[maxInterval] } return "" } const tickIntervalToFormatMap = { millisecond: "millisecond", second: "longtime", minute: "shorttime", hour: "shorttime", day: "day", week: "day", month: "month", quarter: "quarter", year: "year" }; const getQuarter = function(month) { return Math.floor(month / 3) }; const getFirstQuarterMonth = function(month) { return 3 * getQuarter(month) }; function correctDateWithUnitBeginning(date, dateInterval, withCorrection, firstDayOfWeek) { date = new Date(date.getTime()); const oldDate = new Date(date.getTime()); let firstQuarterMonth; let month; const dateUnitInterval = getDateUnitInterval(dateInterval); switch (dateUnitInterval) { case "second": date = new Date(1e3 * Math.floor(oldDate.getTime() / 1e3)); break; case "minute": date = new Date(6e4 * Math.floor(oldDate.getTime() / 6e4)); break; case "hour": date = new Date(36e5 * Math.floor(oldDate.getTime() / 36e5)); break; case "year": date.setMonth(0); case "month": date.setDate(1); case "day": date.setHours(0, 0, 0, 0); break; case "week": date = getFirstWeekDate(date, firstDayOfWeek || 0); date.setHours(0, 0, 0, 0); break; case "quarter": firstQuarterMonth = getFirstQuarterMonth(date.getMonth()); month = date.getMonth(); date.setDate(1); date.setHours(0, 0, 0, 0); if (month !== firstQuarterMonth) { date.setMonth(firstQuarterMonth) } } if (withCorrection && "hour" !== dateUnitInterval && "minute" !== dateUnitInterval && "second" !== dateUnitInterval) { fixTimezoneGap(oldDate, date) } return date } function trimTime(date) { return correctDateWithUnitBeginning(date, "day") } function addDateInterval(value, interval, dir) { const result = new Date(value.getTime()); const intervalObject = (0, _type.isString)(interval) ? getDateIntervalByString(interval.toLowerCase()) : (0, _type.isNumeric)(interval) ? convertMillisecondsToDateUnits(interval) : interval; if (intervalObject.years) { result.setFullYear(result.getFullYear() + intervalObject.years * dir) } if (intervalObject.quarters) { result.setMonth(result.getMonth() + 3 * intervalObject.quarters * dir) } if (intervalObject.months) { result.setMonth(result.getMonth() + intervalObject.months * dir) } if (intervalObject.weeks) { result.setDate(result.getDate() + 7 * intervalObject.weeks * dir) } if (intervalObject.days) { result.setDate(result.getDate() + intervalObject.days * dir) } if (intervalObject.hours) { result.setTime(result.getTime() + 36e5 * intervalObject.hours * dir) } if (intervalObject.minutes) { result.setTime(result.getTime() + 6e4 * intervalObject.minutes * dir) } if (intervalObject.seconds) { result.setTime(result.getTime() + 1e3 * intervalObject.seconds * dir) } if (intervalObject.milliseconds) { result.setTime(result.getTime() + intervalObject.milliseconds * dir) } return result } const addInterval = function(value, interval, isNegative) { const dir = isNegative ? -1 : 1; return (0, _type.isDate)(value) ? addDateInterval(value, interval, dir) : (0, _math.adjust)(value + interval * dir, interval) }; function getLastMonthDay(date) { const resultDate = createDateWithFullYear(date.getFullYear(), date.getMonth() + 1, 0); return resultDate.getDate() } function getDateIntervalByString(intervalString) { const result = {}; switch (intervalString) { case "year": result.years = 1; break; case "month": result.months = 1; break; case "quarter": result.months = 3; break; case "week": result.weeks = 1; break; case "day": result.days = 1; break; case "hour": result.hours = 1; break; case "minute": result.minutes = 1; break; case "second": result.seconds = 1; break; case "millisecond": result.milliseconds = 1 } return result } function sameDate(date1, date2) { return sameMonthAndYear(date1, date2) && date1.getDate() === date2.getDate() } function sameMonthAndYear(date1, date2) { return sameYear(date1, date2) && date1.getMonth() === date2.getMonth() } function sameYear(date1, date2) { return date1 && date2 && date1.getFullYear() === date2.getFullYear() } function getFirstDecadeInCentury(date) { return date && date.getFullYear() - date.getFullYear() % 100 } function getFirstYearInDecade(date) { return date && date.getFullYear() - date.getFullYear() % 10 } function getFirstWeekDate(date, firstDayOfWeek) { const delta = (date.getDay() - firstDayOfWeek + 7) % 7; const result = new Date(date); result.setDate(date.getDate() - delta); return result } function getUTCTime(date) { return Date.UTC(date.getFullYear(), date.getMonth(), date.getDate()) } function getFirstDateInYear(year) { return new Date(year, 0, 1) } function getLastDateInYear(year) { return new Date(year, 11, 31) } function getDayWeekNumber(date, firstDayOfWeek) { let day = date.getDay() - firstDayOfWeek + 1; if (day <= 0) { day += 7 } return day } function normalizeDate(date, min, max) { let normalizedDate = date; if (!(0, _type.isDefined)(date)) { return date } if ((0, _type.isDefined)(min) && date < min) { normalizedDate = min } if ((0, _type.isDefined)(max) && date > max) { normalizedDate = max } return normalizedDate } function fixTimezoneGap(oldDate, newDate) { if (!(0, _type.isDefined)(oldDate)) { return } const diff = newDate.getHours() - oldDate.getHours(); if (0 === diff) { return } const sign = 1 === diff || -23 === diff ? -1 : 1; const trial = new Date(newDate.getTime() + 36e5 * sign); if (sign > 0 || trial.getDate() === newDate.getDate()) { newDate.setTime(trial.getTime()) } } function getTimezonesDifference(min, max) { return 60 * (max.getTimezoneOffset() - min.getTimezoneOffset()) * 1e3 } const createDateWithFullYear = function(year) { for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { args[_key - 1] = arguments[_key] } const result = new Date(year, ...args); result.setFullYear(year); return result }; const dateUtils = exports.dateUtils = { dateUnitIntervals: dateUnitIntervals, convertMillisecondsToDateUnits: convertMillisecondsToDateUnits, dateToMilliseconds: function(tickInterval) { let milliseconds = 0; if ((0, _type.isObject)(tickInterval)) { (0, _iterator.each)(tickInterval, (function(key, value) { milliseconds += convertDateUnitToMilliseconds(key.substr(0, key.length - 1), value) })) } if ((0, _type.isString)(tickInterval)) { milliseconds = convertDateUnitToMilliseconds(tickInterval, 1) } return milliseconds }, getNextDateUnit: function(unit, withWeeks) { const interval = getDateUnitInterval(unit); switch (interval) { case "millisecond": return "second"; case "second": return "minute"; case "minute": return "hour"; case "hour": return "day"; case "day": return withWeeks ? "week" : "month"; case "week": return "month"; case "month": return "quarter"; case "quarter": case "year": return "year"; default: return 0 } }, convertDateUnitToMilliseconds: convertDateUnitToMilliseconds, getDateUnitInterval: getDateUnitInterval, getDateFormatByTickInterval: function(tickInterval) { return tickIntervalToFormatMap[getDateUnitInterval(tickInterval)] || "" }, getDatesDifferences: function(date1, date2) { let counter = 0; const differences = { year: date1.getFullYear() !== date2.getFullYear(), month: date1.getMonth() !== date2.getMonth(), day: date1.getDate() !== date2.getDate(), hour: date1.getHours() !== date2.getHours(), minute: date1.getMinutes() !== date2.getMinutes(), second: date1.getSeconds() !== date2.getSeconds(), millisecond: date1.getMilliseconds() !== date2.getMilliseconds() }; (0, _iterator.each)(differences, (function(key, value) { if (value) { counter++ } })); if (0 === counter && 0 !== getTimezonesDifference(date1, date2)) { differences.hour = true; counter++ } differences.count = counter; return differences }, correctDateWithUnitBeginning: correctDateWithUnitBeginning, trimTime: trimTime, setToDayEnd: function(date) { const result = trimTime(date); result.setDate(result.getDate() + 1); return new Date(result.getTime() - 1) }, roundDateByStartDayHour: function(date, startDayHour) { const startTime = this.dateTimeFromDecimal(startDayHour); const result = new Date(date); if (date.getHours() === startTime.hours && date.getMinutes() < startTime.minutes || date.getHours() < startTime.hours) { result.setHours(startTime.hours, startTime.minutes, 0, 0) } return result }, dateTimeFromDecimal: function(number) { const hours = Math.floor(number); const minutes = number % 1 * 60; return { hours: hours, minutes: minutes } }, addDateInterval: addDateInterval, addInterval: addInterval, getSequenceByInterval: function(min, max, interval) { const intervals = []; let cur; intervals.push((0, _type.isDate)(min) ? new Date(min.getTime()) : min); cur = min; while (cur < max) { cur = addInterval(cur, interval); intervals.push(cur) } return intervals }, getDateIntervalByString: getDateIntervalByString, sameHoursAndMinutes: function(date1, date2) { return date1 && date2 && date1.getHours() === date2.getHours() && date1.getMinutes() === date2.getMinutes() }, sameDate: sameDate, sameMonthAndYear: sameMonthAndYear, sameMonth: sameMonthAndYear, sameYear: sameYear, sameDecade: function(date1, date2) { if (!(0, _type.isDefined)(date1) || !(0, _type.isDefined)(date2)) { return } const startDecadeDate1 = date1.getFullYear() - date1.getFullYear() % 10; const startDecadeDate2 = date2.getFullYear() - date2.getFullYear() % 10; return date1 && date2 && startDecadeDate1 === startDecadeDate2 }, sameCentury: function(date1, date2) { if (!(0, _type.isDefined)(date1) || !(0, _type.isDefined)(date2)) { return } const startCenturyDate1 = date1.getFullYear() - date1.getFullYear() % 100; const startCenturyDate2 = date2.getFullYear() - date2.getFullYear() % 100; return date1 && date2 && startCenturyDate1 === startCenturyDate2 }, sameView: function(view, date1, date2) { return dateUtils[(0, _inflector.camelize)(`same ${view}`)](date1, date2) }, sameDatesArrays: (arr1, arr2) => { if (!Array.isArray(arr1) || !Array.isArray(arr2) || arr1.length !== arr2.length) { return false } return arr1.every(((date1, index) => { const date2 = arr2[index]; if ([date1, date2].some((date => null !== date && !(date instanceof Date)))) { return false } if (date1 instanceof Date && date2 instanceof Date) { return sameDate(date1, date2) } return date1 === date2 })) }, getDifferenceInMonth: function(typeView) { let difference = 1; if ("year" === typeView) { difference = 12 } if ("decade" === typeView) { difference = 120 } if ("century" === typeView) { difference = 1200 } return difference }, getDifferenceInMonthForCells: function(typeView) { let difference = 1; if ("decade" === typeView) { difference = 12 } if ("century" === typeView) { difference = 120 } return difference }, getFirstYearInDecade: getFirstYearInDecade, getFirstDecadeInCentury: getFirstDecadeInCentury, getShortDateFormat: function() { return "yyyy/MM/dd" }, getViewFirstCellDate: function(viewType, date) { if ("month" === viewType) { return createDateWithFullYear(date.getFullYear(), date.getMonth(), 1) } if ("year" === viewType) { return createDateWithFullYear(date.getFullYear(), 0, date.getDate()) } if ("decade" === viewType) { return createDateWithFullYear(getFirstYearInDecade(date), date.getMonth(), date.getDate()) } if ("century" === viewType) { return createDateWithFullYear(getFirstDecadeInCentury(date), date.getMonth(), date.getDate()) } }, getViewLastCellDate: function(viewType, date) { if ("month" === viewType) { return createDateWithFullYear(date.getFullYear(), date.getMonth(), getLastMonthDay(date)) } if ("year" === viewType) { return createDateWithFullYear(date.getFullYear(), 11, date.getDate()) } if ("decade" === viewType) { return createDateWithFullYear(getFirstYearInDecade(date) + 9, date.getMonth(), date.getDate()) } if ("century" === viewType) { return createDateWithFullYear(getFirstDecadeInCentury(date) + 90, date.getMonth(), date.getDate()) } }, getViewDown: function(typeView) { switch (typeView) { case "century": return "decade"; case "decade": return "year"; case "year": return "month" } }, getViewUp: function(typeView) { switch (typeView) { case "month": return "year"; case "year": return "decade"; case "decade": return "century" } }, getLastMonthDay: getLastMonthDay, getLastMonthDate: function(date) { let offset = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : 0; if (!(0, _type.isDefined)(date)) { return } const currentDate = new Date(date.getTime()); const month = currentDate.getMonth() + offset; currentDate.setMonth(month); return createDateWithFullYear(currentDate.getFullYear(), month + 1, 0) }, getFirstMonthDate: function(date) { let offset = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : 0; if (!(0, _type.isDefined)(date)) { return } const currentDate = new Date(date.getTime()); const month = currentDate.getMonth() + offset; currentDate.setMonth(month); return createDateWithFullYear(currentDate.getFullYear(), month, 1) }, getFirstWeekDate: getFirstWeekDate, getWeekNumber: function getWeekNumber(date, firstDayOfWeek, rule) { const firstWeekDayInYear = getDayWeekNumber(getFirstDateInYear(date.getFullYear()), firstDayOfWeek); const lastWeekDayInYear = getDayWeekNumber(getLastDateInYear(date.getFullYear()), firstDayOfWeek); const daysInFirstWeek = 7 - firstWeekDayInYear + 1; let weekNumber = Math.ceil((function(date) { const ms = getUTCTime(date) - getUTCTime(getFirstDateInYear(date.getFullYear())); return 1 + Math.floor(ms / (0, _toMilliseconds.toMilliseconds)("day")) }(date) - daysInFirstWeek) / 7); switch (rule) { case "fullWeek": if (7 === daysInFirstWeek) { weekNumber++ } if (0 === weekNumber) { const lastDateInPreviousYear = getLastDateInYear(date.getFullYear() - 1); return getWeekNumber(lastDateInPreviousYear, firstDayOfWeek, rule) } return weekNumber; case "firstDay": { if (daysInFirstWeek > 0) { weekNumber++ } const isSunday = 7 === firstWeekDayInYear || 7 === lastWeekDayInYear; if (weekNumber > 52 && !isSunday || 54 === weekNumber) { weekNumber = 1 } return weekNumber } case "firstFourDays": { if (daysInFirstWeek > 3) { weekNumber++ } const isThursday = 4 === firstWeekDayInYear || 4 === lastWeekDayInYear; if (weekNumber > 52 && !isThursday) { weekNumber = 1 } if (0 === weekNumber) { const lastDateInPreviousYear = getLastDateInYear(date.getFullYear() - 1); return getWeekNumber(lastDateInPreviousYear, firstDayOfWeek, rule) } return weekNumber } } }, normalizeDateByWeek: function(date, currentDate) { const differenceInDays = dateUtils.getDatesInterval(date, currentDate, "day"); let resultDate = new Date(date); if (differenceInDays >= 6) { resultDate = new Date(resultDate.setDate(resultDate.getDate() + 7)) } return resultDate }, getQuarter: getQuarter, getFirstQuarterMonth: getFirstQuarterMonth, dateInRange: function(date, min, max, format) { if ("date" === format) { min = min && dateUtils.correctDateWithUnitBeginning(min, "day"); max = max && dateUtils.correctDateWithUnitBeginning(max, "day"); date = date && dateUtils.correctDateWithUnitBeginning(date, "day") } return normalizeDate(date, min, max) === date }, intervalsOverlap: function(options) { const { firstMin: firstMin, firstMax: firstMax, secondMin: secondMin, secondMax: secondMax } = options; return firstMin <= secondMin && secondMin <= firstMax || firstMin > secondMin && firstMin < secondMax || firstMin < secondMax && firstMax > secondMax }, roundToHour: function(date) { const result = new Date(date.getTime()); result.setHours(result.getHours() + 1); result.setMinutes(0); return result }, normalizeDate: normalizeDate, getViewMinBoundaryDate: function(viewType, date) { const resultDate = createDateWithFullYear(date.getFullYear(), date.getMonth(), 1); if ("month" === viewType) { return resultDate } resultDate.setMonth(0); if ("year" === viewType) { return resultDate } if ("decade" === viewType) { resultDate.setFullYear(getFirstYearInDecade(date)) } if ("century" === viewType) { resultDate.setFullYear(getFirstDecadeInCentury(date)) } return resultDate }, getViewMaxBoundaryDate: function(viewType, date) { const resultDate = new Date(date); resultDate.setDate(getLastMonthDay(date)); if ("month" === viewType) { return resultDate } resultDate.setMonth(11); resultDate.setDate(getLastMonthDay(resultDate)); if ("year" === viewType) { return resultDate } if ("decade" === viewType) { resultDate.setFullYear(getFirstYearInDecade(date) + 9) } if ("century" === viewType) { resultDate.setFullYear(getFirstDecadeInCentury(date) + 99) } return resultDate }, fixTimezoneGap: fixTimezoneGap, getTimezonesDifference: getTimezonesDifference, makeDate: function(date) { return new Date(date) }, getDatesInterval: function(startDate, endDate, intervalUnit) { const delta = endDate.getTime() - startDate.getTime(); const millisecondCount = (0, _toMilliseconds.toMilliseconds)(intervalUnit) || 1; return Math.floor(delta / millisecondCount) }, getDatesOfInterval: function(startDate, endDate, step) { const result = []; let currentDate = new Date(startDate.getTime()); while (currentDate < endDate) { result.push(new Date(currentDate.getTime())); currentDate = this.addInterval(currentDate, step) } return result }, createDateWithFullYear: createDateWithFullYear, getMachineTimezoneName: () => { const hasIntl = "undefined" !== typeof Intl; return hasIntl ? Intl.DateTimeFormat().resolvedOptions().timeZone : null }, getRangesByDates: dates => { const datesInMilliseconds = dates.map((value => correctDateWithUnitBeginning(value, "day").getTime())); const sortedDates = datesInMilliseconds.sort(((a, b) => a - b)); const msInDay = (0, _toMilliseconds.toMilliseconds)("day"); const ranges = []; let startDate = sortedDates[0]; for (let i = 1; i <= sortedDates.length; ++i) { const nextDate = sortedDates[i]; const currentDate = sortedDates[i - 1]; const isNewRange = nextDate - currentDate > msInDay; if (isNewRange || i === sortedDates.length) { const range = startDate === sortedDates[i - 1] ? [startDate] : [startDate, sortedDates[i - 1]]; const serializedRange = range.map((value => _date_serialization.default.deserializeDate(value))); ranges.push(serializedRange); startDate = nextDate } } return ranges } } }, 62897: /*!*******************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/core/utils/m_date_serialization.js ***! \*******************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.dateSerialization = void 0; var _default_date_names = _interopRequireDefault(__webpack_require__( /*! ../../../common/core/localization/default_date_names */ 81179)); var _date = __webpack_require__( /*! ../../../common/core/localization/ldml/date.formatter */ 86670); var _config = _interopRequireDefault(__webpack_require__( /*! ../../../core/config */ 66636)); var _type = __webpack_require__( /*! ../../../core/utils/type */ 11528); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } const ISO8601_PATTERN = /^(\d{4,})(-)?(\d{2})(-)?(\d{2})(?:T(\d{2})(:)?(\d{2})?(:)?(\d{2}(?:\.(\d{1,3})\d*)?)?)?(Z|([+-])(\d{2})(:)?(\d{2})?)?$/; const ISO8601_TIME_PATTERN = /^(\d{2}):(\d{2})(:(\d{2}))?$/; const ISO8601_PATTERN_PARTS = ["", "yyyy", "", "MM", "", "dd", "THH", "", "mm", "", "ss", ".SSS"]; const DATE_SERIALIZATION_PATTERN = /^(\d{4})\/(\d{2})\/(\d{2})$/; const dateParser = function(text, skipISO8601Parsing) { let result; if ((0, _type.isString)(text) && !skipISO8601Parsing) { result = function(text) { let parts = text.match(ISO8601_PATTERN); if (!parts) { parts = text.match(ISO8601_TIME_PATTERN); if (parts) { return new Date(0, 0, 0, getTimePart(parts[1]), getTimePart(parts[2]), getTimePart(parts[4])) } return } const year = getTimePart(parts[1]); const month = --parts[3]; const day = parts[5]; let timeZoneHour = 0; let timeZoneMinute = 0; const correctYear = d => { year < 100 && d.setFullYear(year); return d }; timeZoneHour = getTimePart(parts[14]); timeZoneMinute = getTimePart(parts[16]); if ("-" === parts[13]) { timeZoneHour = -timeZoneHour; timeZoneMinute = -timeZoneMinute } const hour = getTimePart(parts[6]) - timeZoneHour; const minute = getTimePart(parts[8]) - timeZoneMinute; const second = getTimePart(parts[10]); const parseMilliseconds = function(part) { part = part || ""; return getTimePart(part) * 10 ** (3 - part.length) }; const millisecond = parseMilliseconds(parts[11]); if (parts[12]) { return correctYear(new Date(Date.UTC(year, month, day, hour, minute, second, millisecond))) } return correctYear(new Date(year, month, day, hour, minute, second, millisecond)) }(text) } return result || function(text) { const isDefaultSerializationFormat = "yyyy/MM/dd" === getDateSerializationFormat(text); const parsedValue = !(0, _type.isDate)(text) && Date.parse(text); if (!parsedValue && isDefaultSerializationFormat) { const parts = text.match(DATE_SERIALIZATION_PATTERN); if (parts) { const newDate = new Date(getTimePart(parts[1]), getTimePart(parts[2]), getTimePart(parts[3])); newDate.setFullYear(getTimePart(parts[1])); newDate.setMonth(getTimePart(parts[2]) - 1); newDate.setDate(getTimePart(parts[3])); return newDate } } return (0, _type.isNumeric)(parsedValue) ? new Date(parsedValue) : text }(text) }; function getTimePart(part) { return +part || 0 } const getDateSerializationFormat = function(value) { if ("number" === typeof value) { return "number" } if ((0, _type.isString)(value)) { let format; if ((0, _config.default)().forceIsoDateParsing) { format = function(text) { let parts = text.match(ISO8601_PATTERN); let result = ""; if (!parts) { parts = text.match(ISO8601_TIME_PATTERN); if (parts) { return parts[3] ? "HH:mm:ss" : "HH:mm" } return } for (let i = 1; i < ISO8601_PATTERN_PARTS.length; i++) { if (parts[i]) { result += ISO8601_PATTERN_PARTS[i] || parts[i] } } if ("Z" === parts[12]) { result += "'Z'" } if (parts[14]) { if (parts[15]) { result += "xxx" } else if (parts[16]) { result += "xx" } else { result += "x" } } return result }(value) } if (format) { return format } if (value.includes(":")) { return "yyyy/MM/dd HH:mm:ss" } return "yyyy/MM/dd" } if (value) { return null } }; exports.dateSerialization = { dateParser: dateParser, deserializeDate: function(value) { if ("number" === typeof value) { return new Date(value) } return dateParser(value, !(0, _config.default)().forceIsoDateParsing) }, serializeDate: function(value, serializationFormat) { if (!serializationFormat) { return value } if (!(0, _type.isDate)(value)) { return null } if ("number" === serializationFormat) { return value && value.valueOf ? value.valueOf() : null } return (0, _date.getFormatter)(serializationFormat, _default_date_names.default)(value) }, getDateSerializationFormat: getDateSerializationFormat } }, 77117: /*!*********************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/core/utils/m_deferred.js ***! \*********************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.Deferred = function() { return new DeferredObj }; exports.fromPromise = fromPromise; exports.setStrategy = function(value) { DeferredObj = value.Deferred; whenFunc = value.when }; exports.when = function() { return whenFunc.apply(this, arguments) }; var _callbacks = (e = __webpack_require__( /*! ../../../core/utils/callbacks */ 84718), e && e.__esModule ? e : { default: e }); var e; var _extend = __webpack_require__( /*! ../../../core/utils/extend */ 52576); var _type = __webpack_require__( /*! ../../../core/utils/type */ 11528); const deferredConfig = [{ method: "resolve", handler: "done", state: "resolved" }, { method: "reject", handler: "fail", state: "rejected" }, { method: "notify", handler: "progress" }]; let DeferredObj = function() { const that = this; this._state = "pending"; this._promise = {}; deferredConfig.forEach(function(config) { const methodName = config.method; this[`${methodName}Callbacks`] = (0, _callbacks.default)(); this[methodName] = function() { return this[`${methodName}With`](this._promise, arguments) }.bind(this); this._promise[config.handler] = function(handler) { if (!handler) { return this } const callbacks = that[`${methodName}Callbacks`]; if (callbacks.fired()) { handler.apply(that[`${methodName}Context`], that[`${methodName}Args`]) } else { callbacks.add((function(context, args) { handler.apply(context, args) })) } return this } }.bind(this)); this._promise.always = function(handler) { return this.done(handler).fail(handler) }; this._promise.catch = function(handler) { return this.then(null, handler) }; this._promise.then = function(resolve, reject) { const result = new DeferredObj; ["done", "fail"].forEach(function(method) { const callback = "done" === method ? resolve : reject; this[method]((function() { if (!callback) { result["done" === method ? "resolve" : "reject"].apply(this, arguments); return } const callbackResult = callback && callback.apply(this, arguments); if ((0, _type.isDeferred)(callbackResult)) { callbackResult.done(result.resolve).fail(result.reject) } else if ((0, _type.isPromise)(callbackResult)) { callbackResult.then(result.resolve, result.reject) } else { result.resolve.apply(this, (0, _type.isDefined)(callbackResult) ? [callbackResult] : arguments) } })) }.bind(this)); return result.promise() }; this._promise.state = function() { return that._state }; this._promise.promise = function(args) { return args ? (0, _extend.extend)(args, that._promise) : that._promise }; this._promise.promise(this) }; deferredConfig.forEach((function(config) { const methodName = config.method; const { state: state } = config; DeferredObj.prototype[`${methodName}With`] = function(context, args) { const callbacks = this[`${methodName}Callbacks`]; if ("pending" === this.state()) { this[`${methodName}Args`] = args; this[`${methodName}Context`] = context; if (state) { this._state = state } callbacks.fire(context, args); if ("pending" !== state) { this.resolveCallbacks.empty(); this.rejectCallbacks.empty() } } return this } })); function fromPromise(promise, context) { if ((0, _type.isDeferred)(promise)) { return promise } if ((0, _type.isPromise)(promise)) { const d = new DeferredObj; promise.then((function() { d.resolveWith.apply(d, [context].concat([ [].slice.call(arguments) ])) }), (function() { d.rejectWith.apply(d, [context].concat([ [].slice.call(arguments) ])) })); return d } return (new DeferredObj).resolveWith(context, [promise]) } let whenFunc = function() { if (1 === arguments.length) { return fromPromise(arguments[0]) } const values = [].slice.call(arguments); const contexts = []; let resolvedCount = 0; const deferred = new DeferredObj; const updateState = function(i) { return function(value) { contexts[i] = this; values[i] = arguments.length > 1 ? [].slice.call(arguments) : value; resolvedCount++; if (resolvedCount === values.length) { deferred.resolveWith(contexts, values) } } }; for (let i = 0; i < values.length; i++) { if ((0, _type.isDeferred)(values[i])) { values[i].promise().done(updateState(i)).fail(deferred.reject) } else { resolvedCount++ } } if (resolvedCount === values.length) { deferred.resolveWith(contexts, values) } return deferred.promise() } }, 62142: /*!********************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/core/utils/m_dependency_injector.js ***! \********************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.injector = function(object) { const BaseClass = _class.default.inherit(object); let InjectedClass = BaseClass; let instance = new InjectedClass(object); const initialFields = {}; const injectFields = function(injectionObject, initial) { (0, _iterator.each)(injectionObject, (function(key) { if ((0, _type.isFunction)(instance[key])) { if (initial || !object[key]) { object[key] = function() { return instance[key].apply(object, arguments) } } } else { if (initial) { initialFields[key] = object[key] } object[key] = instance[key] } })) }; injectFields(object, true); object.inject = function(injectionObject) { InjectedClass = InjectedClass.inherit(injectionObject); instance = new InjectedClass; injectFields(injectionObject) }; object.resetInjection = function() { (0, _extend.extend)(object, initialFields); InjectedClass = BaseClass; instance = new BaseClass }; return object }; var _class = (e = __webpack_require__( /*! ../../../core/class */ 55620), e && e.__esModule ? e : { default: e }); var e; var _extend = __webpack_require__( /*! ../../../core/utils/extend */ 52576); var _iterator = __webpack_require__( /*! ../../../core/utils/iterator */ 21274); var _type = __webpack_require__( /*! ../../../core/utils/type */ 11528) }, 76400: /*!****************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/core/utils/m_dom.js ***! \****************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.resetActiveElement = exports.replaceWith = exports.normalizeTemplateElement = exports.isElementInDom = exports.insertBefore = exports.extractTemplateMarkup = exports.default = exports.createTextElementHiddenCopy = exports.contains = exports.closestCommonParent = exports.clipboardText = exports.clearSelection = void 0; var _dom_adapter = _interopRequireDefault(__webpack_require__( /*! ../../../core/dom_adapter */ 64960)); var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../../core/renderer */ 64553)); var _iterator = __webpack_require__( /*! ../../../core/utils/iterator */ 21274); var _type = __webpack_require__( /*! ../../../core/utils/type */ 11528); var _window = __webpack_require__( /*! ../../../core/utils/window */ 3104); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } const window = (0, _window.getWindow)(); const resetActiveElement = () => { const activeElement = _dom_adapter.default.getActiveElement(); if (activeElement && activeElement !== _dom_adapter.default.getBody()) { var _activeElement$blur; null === (_activeElement$blur = activeElement.blur) || void 0 === _activeElement$blur || _activeElement$blur.call(activeElement) } }; exports.resetActiveElement = resetActiveElement; const clearSelection = () => { const selection = window.getSelection(); if (!selection) { return } if ("Caret" === selection.type) { return } if (selection.empty) { selection.empty() } else if (selection.removeAllRanges) { try { selection.removeAllRanges() } catch (e) {} } }; exports.clearSelection = clearSelection; const closestCommonParent = (startTarget, endTarget) => { const $startTarget = (0, _renderer.default)(startTarget); const $endTarget = (0, _renderer.default)(endTarget); if ($startTarget[0] === $endTarget[0]) { return $startTarget[0] } const $startParents = $startTarget.parents(); const $endParents = $endTarget.parents(); const startingParent = Math.min($startParents.length, $endParents.length); for (let i = -startingParent; i < 0; i++) { if ($startParents.get(i) === $endParents.get(i)) { return $startParents.get(i) } } }; exports.closestCommonParent = closestCommonParent; const extractTemplateMarkup = element => { element = (0, _renderer.default)(element); const templateTag = element.length && element.filter((function() { const $node = (0, _renderer.default)(this); return $node.is("script[type]") && !$node.attr("type").includes("script") })); if (templateTag.length) { return templateTag.eq(0).html() } element = (0, _renderer.default)("
").append(element); return element.html() }; exports.extractTemplateMarkup = extractTemplateMarkup; const normalizeTemplateElement = element => { let $element = (0, _renderer.default)(); if ((0, _type.isDefined)(element) && (element.nodeType || (0, _type.isRenderer)(element))) { $element = (0, _renderer.default)(element) } else if ("object" !== typeof element) { $element = (0, _renderer.default)("
").html(element).contents() } if (1 === $element.length) { if ($element.is("script")) { $element = normalizeTemplateElement($element.html().trim()) } else if ($element.is("table")) { $element = $element.children("tbody").contents() } } return $element }; exports.normalizeTemplateElement = normalizeTemplateElement; const clipboardText = (event, text) => { const clipboard = event.originalEvent && event.originalEvent.clipboardData || window.clipboardData; if (!text) { return clipboard && clipboard.getData("Text") } clipboard && clipboard.setData("Text", text) }; exports.clipboardText = clipboardText; const contains = (container, element) => { if (!element) { return false } if ((0, _type.isWindow)(container)) { return contains(container.document, element) } return container.contains(element) || contains(container, (element => { if (!element.getRootNode) { return } const { host: host } = element.getRootNode(); if ((0, _type.isString)(host)) { return } return host })(element)) }; exports.contains = contains; const createTextElementHiddenCopy = (element, text, options) => { const elementStyles = window.getComputedStyle((0, _renderer.default)(element).get(0)); const includePaddings = options && options.includePaddings; return (0, _renderer.default)("
").text(text).css({ fontStyle: elementStyles.fontStyle, fontVariant: elementStyles.fontVariant, fontWeight: elementStyles.fontWeight, fontSize: elementStyles.fontSize, fontFamily: elementStyles.fontFamily, letterSpacing: elementStyles.letterSpacing, border: elementStyles.border, paddingTop: includePaddings ? elementStyles.paddingTop : "", paddingRight: includePaddings ? elementStyles.paddingRight : "", paddingBottom: includePaddings ? elementStyles.paddingBottom : "", paddingLeft: includePaddings ? elementStyles.paddingLeft : "", visibility: "hidden", whiteSpace: "pre", position: "absolute", float: "left" }) }; exports.createTextElementHiddenCopy = createTextElementHiddenCopy; const insertBefore = (element, newElement) => { if (newElement) { _dom_adapter.default.insertElement(element.parentNode, newElement, element) } return element }; exports.insertBefore = insertBefore; const replaceWith = (element, newElement) => { if (!(newElement && newElement[0])) { return } if (newElement.is(element)) { return element }(0, _iterator.each)(newElement, ((_, currentElement) => { insertBefore(element[0], currentElement) })); element.remove(); return newElement }; exports.replaceWith = replaceWith; const isElementInDom = $element => { const element = null === $element || void 0 === $element ? void 0 : $element.get(0); const shadowHost = null === element || void 0 === element ? void 0 : element.getRootNode().host; return !!(0, _renderer.default)(shadowHost || element).closest((0, _window.getWindow)().document).length }; exports.isElementInDom = isElementInDom; exports.default = { resetActiveElement: resetActiveElement, clearSelection: clearSelection, closestCommonParent: closestCommonParent, extractTemplateMarkup: extractTemplateMarkup, normalizeTemplateElement: normalizeTemplateElement, clipboardText: clipboardText, contains: contains, createTextElementHiddenCopy: createTextElementHiddenCopy, insertBefore: insertBefore, replaceWith: replaceWith, isElementInDom: isElementInDom } }, 40818: /*!******************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/core/utils/m_error.js ***! \******************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; exports.error = error; var _extend = __webpack_require__( /*! ../../../core/utils/extend */ 52576); var _string = __webpack_require__( /*! ../../../core/utils/string */ 54497); var _version = __webpack_require__( /*! ../../../core/version */ 1956); var _m_console = (e = __webpack_require__( /*! ./m_console */ 35005), e && e.__esModule ? e : { default: e }); var e; const ERROR_URL = `https://js.devexpress.com/error/${_version.version.split(".").slice(0,2).join("_")}/`; function error(baseErrors, errors) { const exports = { ERROR_MESSAGES: (0, _extend.extend)(errors, baseErrors), Error: function() { for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { args[_key] = arguments[_key] } return function(args) { const id = args[0]; args = args.slice(1); const details = formatDetails(id, args); const url = getErrorUrl(id); const message = formatMessage(id, details); return (0, _extend.extend)(new Error(message), { __id: id, __details: details, url: url }) }(args) }, log() { for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) { args[_key2] = arguments[_key2] } const id = args[0]; let method = "log"; if (/^E\d+$/.test(id)) { method = "error" } else if (/^W\d+$/.test(id)) { method = "warn" } _m_console.default.logger[method]("log" === method ? id : function(args) { const id = args[0]; args = args.slice(1); return formatMessage(id, formatDetails(id, args)) }(args)) } }; function formatDetails(id, args) { args = [exports.ERROR_MESSAGES[id]].concat(args); return _string.format.apply(this, args).replace(/\.*\s*?$/, "") } function formatMessage(id, details) { const kind = null !== id && void 0 !== id && id.startsWith("W") ? "warning" : "error"; return _string.format.apply(this, ["{0} - {1}.\n\nFor additional information on this {2} message, see: {3}", id, details, kind, getErrorUrl(id)]) } function getErrorUrl(id) { return ERROR_URL + id } return exports } exports.default = error }, 96298: /*!*******************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/core/utils/m_extend.js ***! \*******************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.extendFromObject = exports.extend = void 0; var _type = __webpack_require__( /*! ../../../core/utils/type */ 11528); exports.extendFromObject = function(target, source, overrideExistingValues) { target = target || {}; for (const prop in source) { if (Object.prototype.hasOwnProperty.call(source, prop)) { const value = source[prop]; if (!(prop in target) || overrideExistingValues) { target[prop] = value } } } return target }; const extend = function(target) { target = target || {}; let i = 1; let deep = false; if ("boolean" === typeof target) { deep = target; target = arguments[1] || {}; i++ } for (; i < arguments.length; i++) { const source = arguments[i]; if (null == source) { continue } for (const key in source) { const targetValue = target[key]; const sourceValue = source[key]; let sourceValueIsArray = false; let clone; if ("__proto__" === key || "constructor" === key || target === sourceValue) { continue } if (deep && sourceValue && ((0, _type.isPlainObject)(sourceValue) || (sourceValueIsArray = Array.isArray(sourceValue)))) { if (sourceValueIsArray) { clone = targetValue && Array.isArray(targetValue) ? targetValue : [] } else { clone = targetValue && (0, _type.isPlainObject)(targetValue) ? targetValue : {} } target[key] = extend(deep, clone, sourceValue) } else if (void 0 !== sourceValue) { target[key] = sourceValue } } } return target }; exports.extend = extend }, 25317: /*!************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/core/utils/m_html_parser.js ***! \************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.parseHTML = exports.isTablePart = void 0; var _dom_adapter = (e = __webpack_require__( /*! ../../../core/dom_adapter */ 64960), e && e.__esModule ? e : { default: e }); var e; const isTagName = /<([a-z][^/\0>\x20\t\r\n\f]+)/i; const tagWrappers = { default: { tagsCount: 0, startTags: "", endTags: "" }, thead: { tagsCount: 1, startTags: "", endTags: "
" }, td: { tagsCount: 3, startTags: "", endTags: "
" }, col: { tagsCount: 2, startTags: "", endTags: "
" }, tr: { tagsCount: 2, startTags: "", endTags: "
" } }; tagWrappers.tbody = tagWrappers.colgroup = tagWrappers.caption = tagWrappers.tfoot = tagWrappers.thead; tagWrappers.th = tagWrappers.td; exports.parseHTML = function(html) { if ("string" !== typeof html) { return null } const fragment = _dom_adapter.default.createDocumentFragment(); let container = fragment.appendChild(_dom_adapter.default.createElement("div")); const tags = isTagName.exec(html); const firstRootTag = null === tags || void 0 === tags ? void 0 : tags[1].toLowerCase(); const tagWrapper = tagWrappers[firstRootTag] || tagWrappers.default; container.innerHTML = tagWrapper.startTags + html + tagWrapper.endTags; for (let i = 0; i < tagWrapper.tagsCount; i++) { container = container.lastChild } return [...container.childNodes] }; exports.isTablePart = function(html) { const tags = isTagName.exec(html); return tags && tags[1] in tagWrappers } }, 42463: /*!*****************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/core/utils/m_icon.js ***! \*****************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.getImageSourceType = exports.getImageContainer = exports.ICON_CLASS = void 0; var _renderer = (e = __webpack_require__( /*! ../../../core/renderer */ 64553), e && e.__esModule ? e : { default: e }); var e; const ICON_CLASS = exports.ICON_CLASS = "dx-icon"; const getImageSourceType = source => { if (!source || "string" !== typeof source) { return false } if (/^\s*]*>(.|\r?\n)*?<\/svg>\s*$/i.test(source)) { return "svg" } if (/data:.*base64|\.|[^<\s]\/{1,1}/.test(source)) { return "image" } if (/^[\w-_]+$/.test(source)) { return "dxIcon" } if (/^\s?([\w-_:]\s?)+$/.test(source)) { return "fontIcon" } return false }; exports.getImageSourceType = getImageSourceType; exports.getImageContainer = source => { switch (getImageSourceType(source)) { case "image": return (0, _renderer.default)("").attr("src", source).addClass(ICON_CLASS); case "fontIcon": return (0, _renderer.default)("").addClass(`${ICON_CLASS} ${source}`); case "dxIcon": return (0, _renderer.default)("").addClass(`${ICON_CLASS} ${ICON_CLASS}-${source}`); case "svg": return (0, _renderer.default)("").addClass(`${ICON_CLASS} dx-svg-icon`).append(source); default: return null } } }, 66122: /*!**********************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/core/utils/m_inflector.js ***! \**********************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.underscore = exports.titleize = exports.humanize = exports.default = exports.dasherize = exports.captionize = exports.camelize = void 0; var _iterator = __webpack_require__( /*! ../../../core/utils/iterator */ 21274); const _normalize = function(text) { if (void 0 === text || null === text) { return "" } return String(text) }; const _upperCaseFirst = function(text) { return _normalize(text).charAt(0).toUpperCase() + text.substr(1) }; const _chop = function(text) { return _normalize(text).replace(/([a-z\d])([A-Z])/g, "$1 $2").split(/[\s_-]+/) }; const dasherize = function(text) { return (0, _iterator.map)(_chop(text), (function(p) { return p.toLowerCase() })).join("-") }; exports.dasherize = dasherize; const underscore = function(text) { return dasherize(text).replace(/-/g, "_") }; exports.underscore = underscore; const camelize = function(text, upperFirst) { return (0, _iterator.map)(_chop(text), (function(p, i) { p = p.toLowerCase(); if (upperFirst || i > 0) { p = _upperCaseFirst(p) } return p })).join("") }; exports.camelize = camelize; const humanize = function(text) { return _upperCaseFirst(dasherize(text).replace(/-/g, " ")) }; exports.humanize = humanize; const titleize = function(text) { return (0, _iterator.map)(_chop(text), (function(p) { return _upperCaseFirst(p.toLowerCase()) })).join(" ") }; exports.titleize = titleize; const DIGIT_CHARS = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9"]; const captionize = function(name) { const captionList = []; let i; let char; let isPrevCharNewWord = false; let isNewWord = false; for (i = 0; i < name.length; i++) { char = name.charAt(i); isNewWord = char === char.toUpperCase() && "-" !== char && ")" !== char && "/" !== char || char in DIGIT_CHARS; if ("_" === char || "." === char) { char = " "; isNewWord = true } else if (0 === i) { char = char.toUpperCase(); isNewWord = true } else if (!isPrevCharNewWord && isNewWord) { if (captionList.length > 0) { captionList.push(" ") } } captionList.push(char); isPrevCharNewWord = isNewWord } return captionList.join("") }; exports.captionize = captionize; exports.default = { dasherize: dasherize, underscore: underscore, camelize: camelize, humanize: humanize, titleize: titleize, captionize: captionize } }, 26044: /*!*********************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/core/utils/m_iterator.js ***! \*********************************************************************************/ function(__unused_webpack_module, exports) { Object.defineProperty(exports, "__esModule", { value: true }); exports.reverseEach = exports.map = exports.each = void 0; exports.map = (values, callback) => { if (Array.isArray(values)) { return values.map(callback) } const result = []; for (const key in values) { result.push(callback(values[key], key)) } return result }; exports.each = (values, callback) => { if (!values) { return } if ("length" in values) { for (let i = 0; i < values.length; i++) { if (false === callback.call(values[i], i, values[i])) { break } } } else { for (const key in values) { if (false === callback.call(values[key], key, values[key])) { break } } } return values }; exports.reverseEach = (array, callback) => { if (!array || !("length" in array) || 0 === array.length) { return } for (let i = array.length - 1; i >= 0; i--) { if (false === callback.call(array[i], i, array[i])) { break } } } }, 24574: /*!*******************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/core/utils/m_locker.js ***! \*******************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.Locker = void 0; var _errors = (e = __webpack_require__( /*! ../../../core/errors */ 87129), e && e.__esModule ? e : { default: e }); var e; exports.Locker = function() { const info = {}; const currentCount = function(lockName) { return info[lockName] || 0 }; return { obtain(lockName) { info[lockName] = currentCount(lockName) + 1 }, release(lockName) { const count = currentCount(lockName); if (count < 1) { throw _errors.default.Error("E0014") } if (1 === count) { delete info[lockName] } else { info[lockName] = count - 1 } }, locked: lockName => currentCount(lockName) > 0 } } }, 80764: /*!*****************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/core/utils/m_math.js ***! \*****************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.adjust = function(value, interval) { let precision = getPrecision(interval || 0) + 2; const separatedValue = value.toString().split("."); const sourceValue = value; const absValue = Math.abs(value); let separatedAdjustedValue; const isExponentValue = (0, _type.isExponential)(value); const integerPart = absValue > 1 ? 10 : 0; if (1 === separatedValue.length) { return value } if (!isExponentValue) { if ((0, _type.isExponential)(interval)) { precision = separatedValue[0].length + getExponent(interval) } value = absValue; value = value - Math.floor(value) + integerPart } precision = function() { const value = 3e-4; const correctValue = "0.000300"; const precisionValue = 3; return correctValue !== value.toPrecision(precisionValue) }() && getExponent(value) > 6 || precision > 7 ? 15 : 7; if (!isExponentValue) { separatedAdjustedValue = parseFloat(value.toPrecision(precision)).toString().split("."); if (separatedAdjustedValue[0] === integerPart.toString()) { return parseFloat(`${separatedValue[0]}.${separatedAdjustedValue[1]}`) } } return parseFloat(sourceValue.toPrecision(precision)) }; exports.fitIntoRange = void 0; exports.getExponent = getExponent; exports.getExponentLength = function(value) { var _valueString$split$; const valueString = value.toString(); return (null === (_valueString$split$ = valueString.split(".")[1]) || void 0 === _valueString$split$ ? void 0 : _valueString$split$.length) || parseInt(valueString.split("e-")[1], 10) || 0 }; exports.getPrecision = getPrecision; exports.getRemainderByDivision = function(dividend, divider, digitsCount) { if (divider === parseInt(divider, 10)) { return dividend % divider } const quotient = roundFloatPart(dividend / divider, digitsCount); return (quotient - parseInt(quotient, 10)) * divider }; exports.getRoot = getRoot; exports.inRange = void 0; exports.multiplyInExponentialForm = function(value, exponentShift) { const exponentialNotation = function(value) { const parts = value.toExponential().split("e"); const mantissa = parseFloat(parts[0]); const exponent = parseInt(parts[1], 10); return { exponent: exponent, mantissa: mantissa } }(value); return parseFloat(`${exponentialNotation.mantissa}e${exponentialNotation.exponent+exponentShift}`) }; exports.roundFloatPart = roundFloatPart; exports.sign = void 0; exports.solveCubicEquation = function(a, b, c, d) { if (Math.abs(a) < 1e-8) { a = b; b = c; c = d; if (Math.abs(a) < 1e-8) { a = b; b = c; if (Math.abs(a) < 1e-8) { return [] } return [-b / a] } const D2 = b * b - 4 * a * c; if (Math.abs(D2) < 1e-8) { return [-b / (2 * a)] } if (D2 > 0) { return [(-b + Math.sqrt(D2)) / (2 * a), (-b - Math.sqrt(D2)) / (2 * a)] } return [] } const p = (3 * a * c - b * b) / (3 * a * a); const q = (2 * b * b * b - 9 * a * b * c + 27 * a * a * d) / (27 * a * a * a); let roots; let u; if (Math.abs(p) < 1e-8) { roots = [getRoot(-q, 3)] } else if (Math.abs(q) < 1e-8) { roots = [0].concat(p < 0 ? [Math.sqrt(-p), -Math.sqrt(-p)] : []) } else { const D3 = q * q / 4 + p * p * p / 27; if (Math.abs(D3) < 1e-8) { roots = [-1.5 * q / p, 3 * q / p] } else if (D3 > 0) { u = getRoot(-q / 2 - Math.sqrt(D3), 3); roots = [u - p / (3 * u)] } else { u = 2 * Math.sqrt(-p / 3); const t = Math.acos(3 * q / p / u) / 3; const k = 2 * Math.PI / 3; roots = [u * Math.cos(t), u * Math.cos(t - k), u * Math.cos(t - 2 * k)] } } for (let i = 0; i < roots.length; i++) { roots[i] -= b / (3 * a) } return roots }; exports.trunc = function(value) { return Math.trunc ? Math.trunc(value) : value > 0 ? Math.floor(value) : Math.ceil(value) }; var _type = __webpack_require__( /*! ../../../core/utils/type */ 11528); exports.sign = function(value) { if (0 === value) { return 0 } return value / Math.abs(value) }; exports.fitIntoRange = function(value, minValue, maxValue) { const isMinValueUndefined = !minValue && 0 !== minValue; const isMaxValueUndefined = !maxValue && 0 !== maxValue; isMinValueUndefined && (minValue = !isMaxValueUndefined ? Math.min(value, maxValue) : value); isMaxValueUndefined && (maxValue = !isMinValueUndefined ? Math.max(value, minValue) : value); return Math.min(Math.max(value, minValue), maxValue) }; exports.inRange = function(value, minValue, maxValue) { return value >= minValue && value <= maxValue }; function getExponent(value) { return Math.abs(parseInt(value.toExponential().split("e")[1], 10)) } function getPrecision(value) { const str = value.toString(); if (str.indexOf(".") < 0) { return 0 } const mantissa = str.split("."); const positionOfDelimiter = mantissa[1].indexOf("e"); return positionOfDelimiter >= 0 ? positionOfDelimiter : mantissa[1].length } function getRoot(x, n) { if (x < 0 && n % 2 !== 1) { return NaN } const y = Math.abs(x) ** (1 / n); return n % 2 === 1 && x < 0 ? -y : y } function roundFloatPart(value) { let digitsCount = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : 0; return parseFloat(value.toFixed(digitsCount)) } }, 86005: /*!*******************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/core/utils/m_object.js ***! \*******************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.orderEach = exports.newAssign = exports.legacyAssign = exports.deepExtendArraySafe = exports.clone = void 0; var _type = __webpack_require__( /*! ../../../core/utils/type */ 11528); var _variable_wrapper = (e = __webpack_require__( /*! ../../../core/utils/variable_wrapper */ 40216), e && e.__esModule ? e : { default: e }); var e; exports.clone = function() { function Clone() {} return function(obj) { Clone.prototype = obj; return new Clone } }(); exports.orderEach = function(map, func) { const keys = []; let key; let i; for (key in map) { if (Object.prototype.hasOwnProperty.call(map, key)) { keys.push(key) } } keys.sort((function(x, y) { const isNumberX = (0, _type.isNumeric)(x); const isNumberY = (0, _type.isNumeric)(y); if (isNumberX && isNumberY) { return x - y } if (isNumberX && !isNumberY) { return -1 } if (!isNumberX && isNumberY) { return 1 } if (x < y) { return -1 } if (x > y) { return 1 } return 0 })); for (i = 0; i < keys.length; i++) { key = keys[i]; func(key, map[key]) } }; const getDeepCopyTarget = item => { if ((0, _type.isObject)(item)) { return Array.isArray(item) ? [] : {} } return item }; const legacyAssign = function(target, property, value, extendComplexObject, assignByReference, shouldCopyUndefined) { if (!assignByReference && _variable_wrapper.default.isWrapped(target[property])) { _variable_wrapper.default.assign(target[property], value) } else { target[property] = value } }; exports.legacyAssign = legacyAssign; const newAssign = function(target, property, value, extendComplexObject, assignByReference, shouldCopyUndefined) { const goDeeper = extendComplexObject ? (0, _type.isObject)(target) : (0, _type.isPlainObject)(target); if (!assignByReference && _variable_wrapper.default.isWrapped(target[property])) { _variable_wrapper.default.assign(target[property], value) } else if (!assignByReference && Array.isArray(value)) { target[property] = value.map((item => deepExtendArraySafe(getDeepCopyTarget(item), item, extendComplexObject, assignByReference, shouldCopyUndefined))) } else if (!assignByReference && goDeeper) { target[property] = deepExtendArraySafe(getDeepCopyTarget(value), value, extendComplexObject, assignByReference, shouldCopyUndefined, newAssign) } else { target[property] = value } }; exports.newAssign = newAssign; const deepExtendArraySafe = function(target, changes, extendComplexObject, assignByReference, shouldCopyUndefined, useNewAssign) { let prevValue; let newValue; const assignFunc = useNewAssign ? newAssign : legacyAssign; for (const name in changes) { prevValue = target[name]; newValue = changes[name]; if ("__proto__" === name || "constructor" === name || target === newValue) { continue } if ((0, _type.isPlainObject)(newValue)) { const goDeeper = extendComplexObject ? (0, _type.isObject)(prevValue) : (0, _type.isPlainObject)(prevValue); newValue = deepExtendArraySafe(goDeeper ? prevValue : {}, newValue, extendComplexObject, assignByReference, shouldCopyUndefined) } const isDeepCopyArray = Array.isArray(newValue) && !assignByReference; const hasDifferentNewValue = (shouldCopyUndefined || void 0 !== newValue) && prevValue !== newValue || shouldCopyUndefined && void 0 === prevValue; if (isDeepCopyArray || hasDifferentNewValue) { assignFunc(target, name, newValue, extendComplexObject, assignByReference, shouldCopyUndefined) } } return target }; exports.deepExtendArraySafe = deepExtendArraySafe }, 80125: /*!*********************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/core/utils/m_position.js ***! \*********************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.getDefaultAlignment = exports.getBoundingRect = void 0; var _config = (e = __webpack_require__( /*! ../../../core/config */ 66636), e && e.__esModule ? e : { default: e }); var e; var _type = __webpack_require__( /*! ../../../core/utils/type */ 11528); exports.getDefaultAlignment = isRtlEnabled => { const rtlEnabled = isRtlEnabled ?? (0, _config.default)().rtlEnabled; return rtlEnabled ? "right" : "left" }; exports.getBoundingRect = element => { var _element$getBoundingC; if ((0, _type.isWindow)(element)) { return { width: element.outerWidth, height: element.outerHeight } } return null === (_element$getBoundingC = element.getBoundingClientRect) || void 0 === _element$getBoundingC ? void 0 : _element$getBoundingC.call(element) } }, 871: /*!*****************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/core/utils/m_public_component.js ***! \*****************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.attachInstanceToElement = function($element, componentInstance, disposeFn) { const data = (0, _element_data.data)($element.get(0)); const name = getName(componentInstance.constructor); data[name] = componentInstance; if (disposeFn) { _events_engine.default.one($element, _remove.removeEvent, (function() { disposeFn.call(componentInstance) })) } if (!data[COMPONENT_NAMES_DATA_KEY]) { data[COMPONENT_NAMES_DATA_KEY] = [] } data[COMPONENT_NAMES_DATA_KEY].push(name) }; exports.default = void 0; exports.getInstanceByElement = function($element, componentClass) { const name = getName(componentClass); return (0, _element_data.data)($element.get(0), name) }; exports.name = void 0; var _events_engine = (e = __webpack_require__( /*! ../../../common/core/events/core/events_engine */ 92774), e && e.__esModule ? e : { default: e }); var e; var _remove = __webpack_require__( /*! ../../../common/core/events/remove */ 28630); var _element_data = __webpack_require__( /*! ../../../core/element_data */ 74663); var _type = __webpack_require__( /*! ../../../core/utils/type */ 11528); const COMPONENT_NAMES_DATA_KEY = "dxComponents"; const componentNames = new WeakMap; let nextAnonymousComponent = 0; const getName = function(componentClass, newName) { if ((0, _type.isDefined)(newName)) { componentNames.set(componentClass, newName); return } if (!componentNames.has(componentClass)) { const generatedName = "dxPrivateComponent" + nextAnonymousComponent++; componentNames.set(componentClass, generatedName); return generatedName } return componentNames.get(componentClass) }; exports.name = getName; exports.default = { name: getName } }, 52799: /*!******************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/core/utils/m_queue.js ***! \******************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.create = createQueue; exports.enqueue = void 0; var _errors = (e = __webpack_require__( /*! ../../../core/errors */ 87129), e && e.__esModule ? e : { default: e }); var e; var _deferred = __webpack_require__( /*! ../../../core/utils/deferred */ 87739); function createQueue(discardPendingTasks) { let _tasks = []; let _busy = false; function exec() { while (_tasks.length) { _busy = true; const task = _tasks.shift(); const result = task(); if (void 0 === result) { continue } if (result.then) { (0, _deferred.when)(result).always(exec); return } throw _errors.default.Error("E0015") } _busy = false } return { add: function(task, removeTaskCallback) { if (!discardPendingTasks) { _tasks.push(task) } else { if (_tasks[0] && removeTaskCallback) { removeTaskCallback(_tasks[0]) } _tasks = [task] } if (!_busy) { exec() } }, busy: function() { return _busy } } } exports.enqueue = createQueue().add }, 18344: /*!****************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/core/utils/m_ready_callbacks.js ***! \****************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.readyCallbacksModule = exports.default = void 0; var _dom_adapter = _interopRequireDefault(__webpack_require__( /*! ../../../core/dom_adapter */ 64960)); var _call_once = _interopRequireDefault(__webpack_require__( /*! ../../../core/utils/call_once */ 13630)); var _dependency_injector = _interopRequireDefault(__webpack_require__( /*! ../../../core/utils/dependency_injector */ 89656)); var _window = __webpack_require__( /*! ../../../core/utils/window */ 3104); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } let callbacks = []; const subscribeReady = (0, _call_once.default)((() => { const removeListener = _dom_adapter.default.listen(_dom_adapter.default.getDocument(), "DOMContentLoaded", (() => { readyCallbacks.fire(); removeListener() })) })); const readyCallbacks = { add: callback => { const windowExists = (0, _window.hasWindow)(); if (windowExists && "loading" !== _dom_adapter.default.getReadyState()) { callback() } else { callbacks.push(callback); windowExists && subscribeReady() } }, fire: () => { callbacks.forEach((callback => callback())); callbacks = [] } }; const readyCallbacksModule = exports.readyCallbacksModule = (0, _dependency_injector.default)(readyCallbacks); exports.default = readyCallbacksModule }, 33717: /*!*****************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/core/utils/m_resize_callbacks.js ***! \*****************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.resizeCallbacks = exports.default = void 0; var _dom_adapter = _interopRequireDefault(__webpack_require__( /*! ../../../core/dom_adapter */ 64960)); var _call_once = _interopRequireDefault(__webpack_require__( /*! ../../../core/utils/call_once */ 13630)); var _m_callbacks = _interopRequireDefault(__webpack_require__( /*! ./m_callbacks */ 63172)); var _m_ready_callbacks = _interopRequireDefault(__webpack_require__( /*! ./m_ready_callbacks */ 18344)); var _m_window = _interopRequireDefault(__webpack_require__( /*! ./m_window */ 14470)); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } const resizeCallbacks = exports.resizeCallbacks = function() { let prevSize; const callbacks = (0, _m_callbacks.default)(); const originalCallbacksAdd = callbacks.add; const originalCallbacksRemove = callbacks.remove; if (!_m_window.default.hasWindow()) { return callbacks } const formatSize = function() { const window = _m_window.default.getWindow(); return { width: window.innerWidth, height: window.innerHeight } }; const handleResize = function() { const now = formatSize(); if (now.width === prevSize.width && now.height === prevSize.height) { return } let changedDimension; if (now.width === prevSize.width) { changedDimension = "height" } if (now.height === prevSize.height) { changedDimension = "width" } prevSize = now; callbacks.fire(changedDimension) }; const setPrevSize = (0, _call_once.default)((function() { prevSize = formatSize() })); let removeListener; callbacks.add = function() { const result = originalCallbacksAdd.apply(callbacks, arguments); setPrevSize(); _m_ready_callbacks.default.add((function() { if (!removeListener && callbacks.has()) { removeListener = _dom_adapter.default.listen(_m_window.default.getWindow(), "resize", handleResize) } })); return result }; callbacks.remove = function() { const result = originalCallbacksRemove.apply(callbacks, arguments); if (!callbacks.has() && removeListener) { removeListener(); removeListener = void 0 } return result }; return callbacks }(); exports.default = resizeCallbacks }, 67135: /*!*****************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/core/utils/m_selection_filter.js ***! \*****************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.SelectionFilterCreator = void 0; var _common = __webpack_require__( /*! ../../../core/utils/common */ 17781); var _data = __webpack_require__( /*! ../../../core/utils/data */ 31e3); var _type = __webpack_require__( /*! ../../../core/utils/type */ 11528); exports.SelectionFilterCreator = function(selectedItemKeys, isSelectAll) { this.getLocalFilter = function(keyGetter, equalKeys, equalByReference, keyExpr) { equalKeys = void 0 === equalKeys ? _common.equalByValue : equalKeys; return functionFilter.bind(this, equalKeys, keyGetter, equalByReference, keyExpr) }; this.getExpr = function(keyExpr) { if (!keyExpr) { return } let filterExpr; selectedItemKeys.forEach((function(key, index) { filterExpr = filterExpr || []; let filterExprPart; if (index > 0) { filterExpr.push(isSelectAll ? "and" : "or") } if ((0, _type.isString)(keyExpr) || (0, _type.isFunction)(keyExpr)) { filterExprPart = getFilterForPlainKey(keyExpr, key) } else { filterExprPart = function(keyExpr, itemKeyValue) { const filterExpr = []; for (let i = 0, { length: length } = keyExpr; i < length; i++) { const currentKeyExpr = keyExpr[i]; const keyValueGetter = (0, _data.compileGetter)(currentKeyExpr); const currentKeyValue = itemKeyValue && keyValueGetter(itemKeyValue); const filterExprPart = getFilterForPlainKey(currentKeyExpr, currentKeyValue); if (!filterExprPart) { break } if (i > 0) { filterExpr.push(isSelectAll ? "or" : "and") } filterExpr.push(filterExprPart) } return filterExpr }(keyExpr, key) } filterExpr.push(filterExprPart) })); if (filterExpr && 1 === filterExpr.length) { filterExpr = filterExpr[0] } return filterExpr }; this.getCombinedFilter = function(keyExpr, dataSourceFilter) { let forceCombinedFilter = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : false; const filterExpr = this.getExpr(keyExpr); let combinedFilter = filterExpr; if ((forceCombinedFilter || isSelectAll) && dataSourceFilter) { if (filterExpr) { combinedFilter = []; combinedFilter.push(filterExpr); combinedFilter.push(dataSourceFilter) } else { combinedFilter = dataSourceFilter } } return combinedFilter }; let selectedItemKeyHashesMap; const getSelectedItemKeyHashesMap = function(keyOf, keyExpr) { if (!selectedItemKeyHashesMap) { selectedItemKeyHashesMap = {}; const normalizedKeys = normalizeKeys(selectedItemKeys, keyOf, keyExpr); for (let i = 0; i < normalizedKeys.length; i++) { selectedItemKeyHashesMap[(0, _common.getKeyHash)(normalizedKeys[i])] = true } } return selectedItemKeyHashesMap }; const normalizeKeys = function(keys, keyOf, keyExpr) { return Array.isArray(keyExpr) ? keys.map((key => keyOf(key))) : keys }; function functionFilter(equalKeys, keyOf, equalByReference, keyExpr, item) { const key = keyOf(item); let keyHash; let i; if (!equalByReference) { keyHash = (0, _common.getKeyHash)(key); if (!(0, _type.isObject)(keyHash)) { const selectedKeyHashesMap = getSelectedItemKeyHashesMap(keyOf, keyExpr); if (selectedKeyHashesMap[keyHash]) { return !isSelectAll } return !!isSelectAll } } for (i = 0; i < selectedItemKeys.length; i++) { if (equalKeys(selectedItemKeys[i], key)) { return !isSelectAll } } return !!isSelectAll } function getFilterForPlainKey(keyExpr, keyValue) { if (void 0 === keyValue) { return } return [keyExpr, isSelectAll ? "<>" : "=", keyValue] } } }, 17113: /*!***********************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/core/utils/m_shadow_dom.js ***! \***********************************************************************************/ function(__unused_webpack_module, exports) { Object.defineProperty(exports, "__esModule", { value: true }); exports.addShadowDomStyles = function($element) { var _el$getRootNode; const el = $element.get(0); const root = null === (_el$getRootNode = el.getRootNode) || void 0 === _el$getRootNode ? void 0 : _el$getRootNode.call(el); if (!(null !== root && void 0 !== root && root.host)) { return } if (!ownerDocumentStyleSheet) { ownerDocumentStyleSheet = createConstructedStyleSheet(root); processRules(ownerDocumentStyleSheet, el.ownerDocument.styleSheets, false) } const currentShadowDomStyleSheet = createConstructedStyleSheet(root); processRules(currentShadowDomStyleSheet, root.styleSheets, true); root.adoptedStyleSheets = [ownerDocumentStyleSheet, currentShadowDomStyleSheet] }; exports.getShadowElementsFromPoint = function(x, y, root) { const elementQueue = function() { let shiftIndex = 0; const items = []; return { push(item) { items.push(item); return this }, shift() { shiftIndex++; return items[shiftIndex - 1] }, get length() { return items.length - shiftIndex }, get items() { return items } } }().push(root); while (elementQueue.length) { const el = elementQueue.shift(); for (let i = 0; i < el.childNodes.length; i++) { const childNode = el.childNodes[i]; if (childNode.nodeType === Node.ELEMENT_NODE && isPositionInElementRectangle(childNode, x, y) && "none" !== getComputedStyle(childNode).pointerEvents) { elementQueue.push(childNode) } } } const result = elementQueue.items.reverse(); result.pop(); return result }; const DX_RULE_PREFIX = "dx-"; let ownerDocumentStyleSheet = null; function createConstructedStyleSheet(rootNode) { try { return new CSSStyleSheet } catch (err) { const styleElement = rootNode.ownerDocument.createElement("style"); rootNode.appendChild(styleElement); return styleElement.sheet } } function processRules(targetStyleSheet, styleSheets, needApplyAllStyles) { for (let i = 0; i < styleSheets.length; i++) { const sheet = styleSheets[i]; try { for (let j = 0; j < sheet.cssRules.length; j++) { insertRule(targetStyleSheet, sheet.cssRules[j], needApplyAllStyles) } } catch (err) {} } } function insertRule(targetStyleSheet, rule, needApplyAllStyles) { var _rule$selectorText, _rule$cssRules, _rule$name, _rule$style; const isDxRule = needApplyAllStyles || (null === (_rule$selectorText = rule.selectorText) || void 0 === _rule$selectorText ? void 0 : _rule$selectorText.includes(DX_RULE_PREFIX)) || (null === (_rule$cssRules = rule.cssRules) || void 0 === _rule$cssRules || null === (_rule$cssRules = _rule$cssRules[0]) || void 0 === _rule$cssRules || null === (_rule$cssRules = _rule$cssRules.selectorText) || void 0 === _rule$cssRules ? void 0 : _rule$cssRules.includes(DX_RULE_PREFIX)) || (null === (_rule$name = rule.name) || void 0 === _rule$name ? void 0 : _rule$name.startsWith(DX_RULE_PREFIX)) || "DXIcons" === (null === (_rule$style = rule.style) || void 0 === _rule$style ? void 0 : _rule$style.fontFamily); if (isDxRule) { targetStyleSheet.insertRule(rule.cssText, targetStyleSheet.cssRules.length) } } function isPositionInElementRectangle(element, x, y) { var _element$getBoundingC; const rect = null === (_element$getBoundingC = element.getBoundingClientRect) || void 0 === _element$getBoundingC ? void 0 : _element$getBoundingC.call(element); return rect && x >= rect.left && x < rect.right && y >= rect.top && y < rect.bottom } }, 64587: /*!*****************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/core/utils/m_size.js ***! \*****************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.setWidth = exports.setOuterWidth = exports.setOuterHeight = exports.setInnerWidth = exports.setInnerHeight = exports.setHeight = exports.parseHeight = exports.implementationsMap = exports.getWindowByElement = exports.getWidth = exports.getVisibleHeight = exports.getVerticalOffsets = exports.getSize = exports.getOuterWidth = exports.getOuterHeight = exports.getOffset = exports.getInnerWidth = exports.getInnerHeight = exports.getHeight = exports.getElementBoxParams = exports.addOffsetToMinHeight = exports.addOffsetToMaxHeight = void 0; var _dom_adapter = (e = __webpack_require__( /*! ../../../core/dom_adapter */ 64960), e && e.__esModule ? e : { default: e }); var e; var _type = __webpack_require__( /*! ../../../core/utils/type */ 11528); var _window = __webpack_require__( /*! ../../../core/utils/window */ 3104); const window = (0, _window.getWindow)(); const SPECIAL_HEIGHT_VALUES = ["auto", "none", "inherit", "initial"]; const getSizeByStyles = function(elementStyles, styles) { let result = 0; styles.forEach((function(style) { result += parseFloat(elementStyles[style]) || 0 })); return result }; const getElementBoxParams = function(name, elementStyles) { const beforeName = "width" === name ? "Left" : "Top"; const afterName = "width" === name ? "Right" : "Bottom"; return { padding: getSizeByStyles(elementStyles, [`padding${beforeName}`, `padding${afterName}`]), border: getSizeByStyles(elementStyles, [`border${beforeName}Width`, `border${afterName}Width`]), margin: getSizeByStyles(elementStyles, [`margin${beforeName}`, `margin${afterName}`]) } }; exports.getElementBoxParams = getElementBoxParams; const getElementComputedStyle = function(element) { var _element$ownerDocumen; const view = (null === element || void 0 === element || null === (_element$ownerDocumen = element.ownerDocument) || void 0 === _element$ownerDocumen ? void 0 : _element$ownerDocumen.defaultView) || window; return view.getComputedStyle && view.getComputedStyle(element) }; const getCSSProperty = function(element, styles, name, defaultValue) { var _element$style; return (null === styles || void 0 === styles ? void 0 : styles[name]) || (null === (_element$style = element.style) || void 0 === _element$style ? void 0 : _element$style[name]) || defaultValue }; const boxIndices = { content: 0, padding: 1, border: 2, margin: 3, "content-box": 0, "border-box": 2 }; const dimensionComponents = { width: ["left", "right"], height: ["top", "bottom"] }; function getComponentThickness(elem, dimension, component, styles) { const get = (elem, styles, field) => parseFloat(getCSSProperty(elem, styles, field, "0")) || 0; const suffix = "border" === component ? "-width" : ""; return get(elem, styles, `${component}-${dimensionComponents[dimension][0]}${suffix}`) + get(elem, styles, `${component}-${dimensionComponents[dimension][1]}${suffix}`) } const getSize = function(element, dimension, box) { const offsetFieldName = "width" === dimension ? "offsetWidth" : "offsetHeight"; const styles = getElementComputedStyle(element); let result = getCSSProperty(element, styles, dimension); if ("" === result || "auto" === result) { result = element[offsetFieldName] } result = parseFloat(result) || 0; const currentBox = getCSSProperty(element, styles, "boxSizing", "content-box"); const targetBox = box || currentBox; let targetBoxIndex = boxIndices[targetBox]; let currentBoxIndex = boxIndices[currentBox]; if (void 0 === targetBoxIndex || void 0 === currentBoxIndex) { throw new Error } if (currentBoxIndex === targetBoxIndex) { return result } const coeff = Math.sign(targetBoxIndex - currentBoxIndex); let padding = false; let border = false; let margin = false; let scrollThickness = false; if (1 === coeff) { targetBoxIndex += 1; currentBoxIndex += 1 } for (let boxPart = currentBoxIndex; boxPart !== targetBoxIndex; boxPart += coeff) { switch (boxPart) { case boxIndices.content: break; case boxIndices.padding: padding = coeff * getComponentThickness(element, dimension, "padding", styles); break; case boxIndices.border: border = coeff * getComponentThickness(element, dimension, "border", styles); break; case boxIndices.margin: margin = coeff * getComponentThickness(element, dimension, "margin", styles) } } if (padding || border) { const paddingAndBorder = (false === padding ? coeff * getComponentThickness(element, dimension, "padding", styles) : padding) + (false === border ? coeff * getComponentThickness(element, dimension, "border", styles) : border); scrollThickness = coeff * Math.max(0, Math.floor(element[offsetFieldName] - result - coeff * paddingAndBorder)) || 0 } return result + margin + padding + border + scrollThickness }; exports.getSize = getSize; const parseHeight = function(value, container, element) { if (value.indexOf("px") > 0) { value = parseInt(value.replace("px", "")) } else if (value.indexOf("%") > 0) { value = parseInt(value.replace("%", "")) * function(container) { return (0, _type.isWindow)(container) ? container.innerHeight : container.offsetHeight }(container) / 100 } else if (!isNaN(value)) { value = parseInt(value) } else if (value.indexOf("vh") > 0) { value = window.innerHeight / 100 * parseInt(value.replace("vh", "")) } else if (element && value.indexOf("em") > 0) { value = parseFloat(value.replace("em", "")) * parseFloat(window.getComputedStyle(element).fontSize) } return value }; exports.parseHeight = parseHeight; const getHeightWithOffset = function(value, offset, container) { if (!value) { return null } if (SPECIAL_HEIGHT_VALUES.includes(value)) { return offset ? null : value } if ((0, _type.isString)(value)) { value = parseHeight(value, container) } if ((0, _type.isNumeric)(value)) { return Math.max(0, value + offset) } const operationString = offset < 0 ? " - " : " "; return `calc(${value}${operationString}${Math.abs(offset)}px)` }; exports.addOffsetToMaxHeight = function(value, offset, container) { const maxHeight = getHeightWithOffset(value, offset, container); return null !== maxHeight ? maxHeight : "none" }; exports.addOffsetToMinHeight = function(value, offset, container) { const minHeight = getHeightWithOffset(value, offset, container); return null !== minHeight ? minHeight : 0 }; exports.getVerticalOffsets = function(element, withMargins) { if (!element) { return 0 } const boxParams = getElementBoxParams("height", window.getComputedStyle(element)); return boxParams.padding + boxParams.border + (withMargins ? boxParams.margin : 0) }; exports.getVisibleHeight = function(element) { if (element) { var _element$getBoundingC; const boundingClientRect = null === (_element$getBoundingC = element.getBoundingClientRect) || void 0 === _element$getBoundingC ? void 0 : _element$getBoundingC.call(element); if (null !== boundingClientRect && void 0 !== boundingClientRect && boundingClientRect.height) { return boundingClientRect.height } } return 0 }; const implementationsMap = exports.implementationsMap = { getWidth: function() { for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { args[_key] = arguments[_key] } return elementSizeHelper("width", ...args) }, setWidth: function() { for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) { args[_key2] = arguments[_key2] } return elementSizeHelper("width", ...args) }, getHeight: function() { for (var _len3 = arguments.length, args = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) { args[_key3] = arguments[_key3] } return elementSizeHelper("height", ...args) }, setHeight: function() { for (var _len4 = arguments.length, args = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) { args[_key4] = arguments[_key4] } return elementSizeHelper("height", ...args) }, getOuterWidth: function() { for (var _len5 = arguments.length, args = new Array(_len5), _key5 = 0; _key5 < _len5; _key5++) { args[_key5] = arguments[_key5] } return elementSizeHelper("outerWidth", ...args) }, setOuterWidth: function() { for (var _len6 = arguments.length, args = new Array(_len6), _key6 = 0; _key6 < _len6; _key6++) { args[_key6] = arguments[_key6] } return elementSizeHelper("outerWidth", ...args) }, getOuterHeight: function() { for (var _len7 = arguments.length, args = new Array(_len7), _key7 = 0; _key7 < _len7; _key7++) { args[_key7] = arguments[_key7] } return elementSizeHelper("outerHeight", ...args) }, setOuterHeight: function() { for (var _len8 = arguments.length, args = new Array(_len8), _key8 = 0; _key8 < _len8; _key8++) { args[_key8] = arguments[_key8] } return elementSizeHelper("outerHeight", ...args) }, getInnerWidth: function() { for (var _len9 = arguments.length, args = new Array(_len9), _key9 = 0; _key9 < _len9; _key9++) { args[_key9] = arguments[_key9] } return elementSizeHelper("innerWidth", ...args) }, setInnerWidth: function() { for (var _len10 = arguments.length, args = new Array(_len10), _key10 = 0; _key10 < _len10; _key10++) { args[_key10] = arguments[_key10] } return elementSizeHelper("innerWidth", ...args) }, getInnerHeight: function() { for (var _len11 = arguments.length, args = new Array(_len11), _key11 = 0; _key11 < _len11; _key11++) { args[_key11] = arguments[_key11] } return elementSizeHelper("innerHeight", ...args) }, setInnerHeight: function() { for (var _len12 = arguments.length, args = new Array(_len12), _key12 = 0; _key12 < _len12; _key12++) { args[_key12] = arguments[_key12] } return elementSizeHelper("innerHeight", ...args) } }; function elementSizeHelper(sizeProperty, el, value) { return 2 === arguments.length ? elementSize(el, sizeProperty) : elementSize(el, sizeProperty, value) } exports.getWidth = el => implementationsMap.getWidth(el); exports.setWidth = (el, value) => implementationsMap.setWidth(el, value); exports.getHeight = el => implementationsMap.getHeight(el); exports.setHeight = (el, value) => implementationsMap.setHeight(el, value); exports.getOuterWidth = (el, includeMargin) => implementationsMap.getOuterWidth(el, includeMargin || false); exports.setOuterWidth = (el, value) => implementationsMap.setOuterWidth(el, value); exports.getOuterHeight = (el, includeMargin) => implementationsMap.getOuterHeight(el, includeMargin || false); exports.setOuterHeight = (el, value) => implementationsMap.setOuterHeight(el, value); exports.getInnerWidth = el => implementationsMap.getInnerWidth(el); exports.setInnerWidth = (el, value) => implementationsMap.setInnerWidth(el, value); exports.getInnerHeight = el => implementationsMap.getInnerHeight(el); exports.setInnerHeight = (el, value) => implementationsMap.setInnerHeight(el, value); const elementSize = function(el, sizeProperty, value) { const partialName = sizeProperty.toLowerCase().indexOf("width") >= 0 ? "Width" : "Height"; const propName = partialName.toLowerCase(); const isOuter = 0 === sizeProperty.indexOf("outer"); const isInner = 0 === sizeProperty.indexOf("inner"); const isGetter = 2 === arguments.length || "boolean" === typeof value; if ((0, _type.isRenderer)(el)) { if (el.length > 1 && !isGetter) { for (let i = 0; i < el.length; i++) { elementSize(el[i], sizeProperty, value) } return } el = el[0] } if (!el) { return } if ((0, _type.isWindow)(el)) { return isOuter ? el[`inner${partialName}`] : _dom_adapter.default.getDocumentElement()[`client${partialName}`] } if (_dom_adapter.default.isDocument(el)) { const documentElement = _dom_adapter.default.getDocumentElement(); const body = _dom_adapter.default.getBody(); return Math.max(body[`scroll${partialName}`], body[`offset${partialName}`], documentElement[`scroll${partialName}`], documentElement[`offset${partialName}`], documentElement[`client${partialName}`]) } if (isGetter) { let box = "content"; if (isOuter) { box = value ? "margin" : "border" } if (isInner) { box = "padding" } return getSize(el, propName, box) } if ((0, _type.isNumeric)(value)) { const elementStyles = getElementComputedStyle(el); const sizeAdjustment = getElementBoxParams(propName, elementStyles); const isBorderBox = "border-box" === elementStyles.boxSizing; value = Number(value); if (isOuter) { value -= isBorderBox ? 0 : sizeAdjustment.border + sizeAdjustment.padding } else if (isInner) { value += isBorderBox ? sizeAdjustment.border : -sizeAdjustment.padding } else if (isBorderBox) { value += sizeAdjustment.border + sizeAdjustment.padding } } value += (0, _type.isNumeric)(value) ? "px" : ""; _dom_adapter.default.setStyle(el, propName, value); return null }; const getWindowByElement = el => (0, _type.isWindow)(el) ? el : el.defaultView; exports.getWindowByElement = getWindowByElement; exports.getOffset = el => { if (!el.getClientRects().length) { return { top: 0, left: 0 } } const rect = el.getBoundingClientRect(); const win = getWindowByElement(el.ownerDocument); const docElem = el.ownerDocument.documentElement; return { top: rect.top + win.pageYOffset - docElem.clientTop, left: rect.left + win.pageXOffset - docElem.clientLeft } } }, 47865: /*!********************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/core/utils/m_storage.js ***! \********************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.sessionStorage = void 0; var _window = __webpack_require__( /*! ../../../core/utils/window */ 3104); const window = (0, _window.getWindow)(); exports.sessionStorage = function() { let sessionStorage; try { sessionStorage = window.sessionStorage } catch (e) {} return sessionStorage } }, 32527: /*!*******************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/core/utils/m_string.js ***! \*******************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.encodeHtml = void 0; exports.format = function(template) { for (var _len = arguments.length, values = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { values[_key - 1] = arguments[_key] } if ((0, _type.isFunction)(template)) { return template(...values) } values.forEach(((value, index) => { if ((0, _type.isString)(value)) { value = value.replace(/\$/g, "$$$$") } const placeholderReg = new RegExp(`\\{${index}\\}`, "gm"); template = template.replace(placeholderReg, value) })); return template }; exports.quadToObject = exports.isEmpty = void 0; var _type = __webpack_require__( /*! ../../../core/utils/type */ 11528); exports.encodeHtml = function() { const encodeRegExp = [new RegExp("&", "g"), new RegExp('"', "g"), new RegExp("'", "g"), new RegExp("<", "g"), new RegExp(">", "g")]; return function(str) { return String(str).replace(encodeRegExp[0], "&").replace(encodeRegExp[1], """).replace(encodeRegExp[2], "'").replace(encodeRegExp[3], "<").replace(encodeRegExp[4], ">") } }(); exports.quadToObject = function(raw) { const quad = function(raw) { switch (typeof raw) { case "string": return raw.split(/\s+/, 4); case "object": return [raw.x || raw.h || raw.left, raw.y || raw.v || raw.top, raw.x || raw.h || raw.right, raw.y || raw.v || raw.bottom]; case "number": return [raw]; default: return raw } }(raw); let left = parseInt(quad && quad[0], 10); let top = parseInt(quad && quad[1], 10); let right = parseInt(quad && quad[2], 10); let bottom = parseInt(quad && quad[3], 10); if (!isFinite(left)) { left = 0 } if (!isFinite(top)) { top = left } if (!isFinite(right)) { right = left } if (!isFinite(bottom)) { bottom = top } return { top: top, right: right, bottom: bottom, left: left } }; exports.isEmpty = function() { const SPACE_REGEXP = /\s/g; return function(text) { return !text || !text.replace(SPACE_REGEXP, "") } }() }, 47453: /*!******************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/core/utils/m_stubs.js ***! \******************************************************************************/ function(__unused_webpack_module, exports) { Object.defineProperty(exports, "__esModule", { value: true }); exports.stubComponent = function(componentName) { return class { constructor() { throw new Error(`Module '${componentName}' not found`) } static getInstance() {} } } }, 11953: /*!******************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/core/utils/m_style.js ***! \******************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.stylePropPrefix = exports.styleProp = exports.setWidth = exports.setStyle = exports.setHeight = exports.parsePixelValue = exports.normalizeStyleProp = void 0; var _dom_adapter = _interopRequireDefault(__webpack_require__( /*! ../../../core/dom_adapter */ 64960)); var _call_once = _interopRequireDefault(__webpack_require__( /*! ../../../core/utils/call_once */ 13630)); var _inflector = __webpack_require__( /*! ../../../core/utils/inflector */ 53124); var _type = __webpack_require__( /*! ../../../core/utils/type */ 11528); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } const jsPrefixes = ["", "Webkit", "Moz", "O", "Ms"]; const cssPrefixes = { "": "", Webkit: "-webkit-", Moz: "-moz-", O: "-o-", ms: "-ms-" }; const getStyles = (0, _call_once.default)((function() { return _dom_adapter.default.createElement("dx").style })); exports.styleProp = function(name) { if (name in getStyles()) { return name } const originalName = name; name = name.charAt(0).toUpperCase() + name.substr(1); for (let i = 1; i < jsPrefixes.length; i++) { const prefixedProp = jsPrefixes[i].toLowerCase() + name; if (prefixedProp in getStyles()) { return prefixedProp } } return originalName }; exports.stylePropPrefix = function(prop) { return function(prop, callBack) { prop = (0, _inflector.camelize)(prop, true); let result; for (let i = 0, cssPrefixesCount = jsPrefixes.length; i < cssPrefixesCount; i++) { const jsPrefix = jsPrefixes[i]; const prefixedProp = jsPrefix + prop; const lowerPrefixedProp = (0, _inflector.camelize)(prefixedProp); result = callBack(lowerPrefixedProp, jsPrefix); if (void 0 === result) { result = callBack(prefixedProp, jsPrefix) } if (void 0 !== result) { break } } return result || "" }(prop, (function(specific, jsPrefix) { if (specific in getStyles()) { return cssPrefixes[jsPrefix] } })) }; const pxExceptions = ["fillOpacity", "columnCount", "flexGrow", "flexShrink", "fontWeight", "lineHeight", "opacity", "zIndex", "zoom"]; exports.parsePixelValue = function(value) { if ((0, _type.isNumeric)(value)) { return value } if ((0, _type.isString)(value)) { return Number(value.replace("px", "")) } return NaN }; exports.normalizeStyleProp = function(prop, value) { if ((0, _type.isNumeric)(value) && !pxExceptions.includes(prop)) { value += "px" } return value }; const setDimensionProperty = function(elements, propertyName, value) { if (elements) { value = (0, _type.isNumeric)(value) ? value += "px" : value; for (let i = 0; i < elements.length; ++i) { elements[i].style[propertyName] = value } } }; exports.setWidth = function(elements, value) { setDimensionProperty(elements, "width", value) }; exports.setHeight = function(elements, value) { setDimensionProperty(elements, "height", value) }; exports.setStyle = function(element, styleString) { let resetStyle = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : true; if (resetStyle) { const styleList = [].slice.call(element.style); styleList.forEach((propertyName => { element.style.removeProperty(propertyName) })) } styleString.split(";").forEach((style => { const parts = style.split(":").map((stylePart => stylePart.trim())); if (2 === parts.length) { const [property, value] = parts; element.style[property] = value } })) } }, 85991: /*!********************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/core/utils/m_support.js ***! \********************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.pointerEvents = exports.nativeScrolling = exports.inputType = exports.default = exports.animation = void 0; Object.defineProperty(exports, "styleProp", { enumerable: true, get: function() { return _style.styleProp } }); Object.defineProperty(exports, "stylePropPrefix", { enumerable: true, get: function() { return _style.stylePropPrefix } }); exports.transitionEndEventName = exports.transition = exports.touchEvents = exports.touch = exports.supportProp = void 0; var _devices = _interopRequireDefault(__webpack_require__( /*! ../../../common/core/environment/devices */ 44257)); var _dom_adapter = _interopRequireDefault(__webpack_require__( /*! ../../../core/dom_adapter */ 64960)); var _call_once = _interopRequireDefault(__webpack_require__( /*! ../../../core/utils/call_once */ 13630)); var _style = __webpack_require__( /*! ../../../core/utils/style */ 58515); var _window = __webpack_require__( /*! ../../../core/utils/window */ 3104); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } const { maxTouchPoints: maxTouchPoints } = (0, _window.getNavigator)(); const transitionEndEventNames = { webkitTransition: "webkitTransitionEnd", MozTransition: "transitionend", OTransition: "oTransitionEnd", transition: "transitionend" }; const supportProp = function(prop) { return !!(0, _style.styleProp)(prop) }; exports.supportProp = supportProp; const inputType = function(type) { if ("text" === type) { return true } const input = _dom_adapter.default.createElement("input"); try { input.setAttribute("type", type); input.value = "wrongValue"; return !input.value } catch (e) { return false } }; exports.inputType = inputType; const touchEvents = exports.touchEvents = function(hasWindowProperty, maxTouchPoints) { return (hasWindowProperty("ontouchstart") || !!maxTouchPoints) && !hasWindowProperty("callPhantom") }(_window.hasProperty, maxTouchPoints); const pointerEvents = exports.pointerEvents = (hasWindowProperty = _window.hasProperty, hasWindowProperty("PointerEvent")); var hasWindowProperty; const touchPointersPresent = !!maxTouchPoints; const touch = exports.touch = touchEvents || pointerEvents && touchPointersPresent; const transition = exports.transition = (0, _call_once.default)((function() { return supportProp("transition") })); const transitionEndEventName = exports.transitionEndEventName = (0, _call_once.default)((function() { return transitionEndEventNames[(0, _style.styleProp)("transition")] })); const animation = exports.animation = (0, _call_once.default)((function() { return supportProp("animation") })); const nativeScrolling = exports.nativeScrolling = function() { const { platform: platform, mac: isMac } = _devices.default.real(); const isNativeScrollDevice = "ios" === platform || "android" === platform || isMac; return isNativeScrollDevice }(); exports.default = { animation: animation, inputType: inputType, nativeScrolling: nativeScrolling, pointerEvents: pointerEvents, styleProp: _style.styleProp, stylePropPrefix: _style.stylePropPrefix, supportProp: supportProp, touch: touch, touchEvents: touchEvents, transition: transition, transitionEndEventName: transitionEndEventName } }, 89650: /*!****************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/core/utils/m_svg.js ***! \****************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = exports.HIDDEN_FOR_EXPORT = void 0; exports.getSvgElement = getSvgElement; exports.getSvgMarkup = getSvgMarkup; var _dom_adapter = _interopRequireDefault(__webpack_require__( /*! ../../../core/dom_adapter */ 64960)); var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../../core/renderer */ 64553)); var _type = __webpack_require__( /*! ../../../core/utils/type */ 11528); var _window = __webpack_require__( /*! ../../../core/utils/window */ 3104); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } const window = (0, _window.getWindow)(); const HIDDEN_FOR_EXPORT = exports.HIDDEN_FOR_EXPORT = "hidden-for-export"; function getSvgMarkup(element, backgroundColor) { return function(markup) { if (-1 === markup.indexOf("xmlns:xlink")) { markup = markup.replace(" { const templates = (0, _renderer.default)(element).contents().filter(`[data-options*="${name}"]`); return [].slice.call(templates).map((element => { const optionsString = (0, _renderer.default)(element).attr("data-options") || ""; return { element: element, options: (0, _config.default)().optionsParser(optionsString)[name] } })).filter((template => !!template.options)) }; exports.findTemplates = findTemplates; const suitableTemplatesByName = rawTemplates => { const templatesMap = (0, _array.groupBy)(rawTemplates, (template => template.options.name)); if (templatesMap.undefined) { throw _errors.default.Error("E0023") } const result = {}; Object.keys(templatesMap).forEach((name => { var _findBestMatches$; const suitableTemplate = null === (_findBestMatches$ = (0, _common.findBestMatches)(_devices.default.current(), templatesMap[name], (template => template.options))[0]) || void 0 === _findBestMatches$ ? void 0 : _findBestMatches$.element; if (suitableTemplate) { result[name] = suitableTemplate } })); return result }; exports.suitableTemplatesByName = suitableTemplatesByName; const addOneRenderedCall = template => { const render = template.render.bind(template); return (0, _extend.extend)({}, template, { render(options) { const templateResult = render(options); options && options.onRendered && options.onRendered(); return templateResult } }) }; exports.addOneRenderedCall = addOneRenderedCall; const addPublicElementNormalization = template => { const render = template.render.bind(template); return (0, _extend.extend)({}, template, { render(options) { const $container = (0, _renderer.default)(options.container); return render(_extends({}, options, { container: (0, _element.getPublicElement)($container) })) } }) }; exports.addPublicElementNormalization = addPublicElementNormalization; const getNormalizedTemplateArgs = options => { const args = []; if ("model" in options) { args.push(options.model) } if ("index" in options) { args.push(options.index) } args.push(options.container); return args }; exports.getNormalizedTemplateArgs = getNormalizedTemplateArgs; const validateTemplateSource = templateSource => "string" === typeof templateSource ? _m_dom.default.normalizeTemplateElement(templateSource) : templateSource; exports.validateTemplateSource = validateTemplateSource; const templateKey = templateSource => _m_type.default.isRenderer(templateSource) && templateSource[0] || templateSource; exports.templateKey = templateKey; const defaultCreateElement = element => new _template.Template(element); exports.defaultCreateElement = defaultCreateElement; const acquireIntegrationTemplate = (templateSource, templates, isAsyncTemplate, skipTemplates) => { let integrationTemplate = null; if (!skipTemplates || -1 === skipTemplates.indexOf(templateSource)) { integrationTemplate = templates[templateSource]; if (integrationTemplate && !(integrationTemplate instanceof _template_base.TemplateBase)) { if (_m_type.default.isFunction(integrationTemplate.render)) { integrationTemplate = addPublicElementNormalization(integrationTemplate) } if (!isAsyncTemplate) { integrationTemplate = addOneRenderedCall(integrationTemplate) } } } return integrationTemplate }; exports.acquireIntegrationTemplate = acquireIntegrationTemplate; const acquireTemplate = (templateSource, createTemplate, templates, isAsyncTemplate, skipTemplates, defaultTemplates) => { if (null == templateSource) { return new _empty_template.EmptyTemplate } if (templateSource instanceof _child_default_template.ChildDefaultTemplate) { return defaultTemplates[templateSource.name] } if (templateSource instanceof _template_base.TemplateBase) { return templateSource } if (_m_type.default.isFunction(templateSource.render) && !_m_type.default.isRenderer(templateSource)) { return isAsyncTemplate ? templateSource : addOneRenderedCall(templateSource) } if (templateSource.nodeType || _m_type.default.isRenderer(templateSource)) { return createTemplate((0, _renderer.default)(templateSource)) } return acquireIntegrationTemplate(templateSource, templates, isAsyncTemplate, skipTemplates) || defaultTemplates[templateSource] || createTemplate(templateSource) }; exports.acquireTemplate = acquireTemplate; exports.default = { findTemplates: findTemplates, suitableTemplatesByName: suitableTemplatesByName, addOneRenderedCall: addOneRenderedCall, addPublicElementNormalization: addPublicElementNormalization, getNormalizedTemplateArgs: getNormalizedTemplateArgs, validateTemplateSource: validateTemplateSource, templateKey: templateKey, defaultCreateElement: defaultCreateElement, acquireIntegrationTemplate: acquireIntegrationTemplate, acquireTemplate: acquireTemplate } }, 39918: /*!*****************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/core/utils/m_type.js ***! \*****************************************************************************/ function(__unused_webpack_module, exports) { Object.defineProperty(exports, "__esModule", { value: true }); exports.type = exports.isWindow = exports.isString = exports.isRenderer = exports.isPromise = exports.isPrimitive = exports.isPlainObject = exports.isObject = exports.isNumeric = exports.isFunction = exports.isExponential = exports.isEvent = exports.isEmptyObject = exports.isDefined = exports.isDeferred = exports.isDate = exports.isBoolean = exports.default = void 0; const types = { "[object Array]": "array", "[object Date]": "date", "[object Object]": "object", "[object String]": "string" }; const type = function(object) { if (null === object) { return "null" } const typeOfObject = Object.prototype.toString.call(object); return "object" === typeof object ? types[typeOfObject] || "object" : typeof object }; exports.type = type; const isBoolean = function(object) { return "boolean" === typeof object }; exports.isBoolean = isBoolean; const isExponential = function(value) { return isNumeric(value) && -1 !== value.toString().indexOf("e") }; exports.isExponential = isExponential; const isDate = function(object) { return "date" === type(object) }; exports.isDate = isDate; const isDefined = function(object) { return null !== object && void 0 !== object }; exports.isDefined = isDefined; const isFunction = function(object) { return "function" === typeof object }; exports.isFunction = isFunction; const isString = function(object) { return "string" === typeof object }; exports.isString = isString; const isNumeric = function(object) { return "number" === typeof object && isFinite(object) || !isNaN(object - parseFloat(object)) }; exports.isNumeric = isNumeric; const isObject = function(object) { return "object" === type(object) }; exports.isObject = isObject; const isEmptyObject = function(object) { let property; for (property in object) { return false } return true }; exports.isEmptyObject = isEmptyObject; const isPlainObject = function(object) { if (!object || "object" !== type(object)) { return false } const proto = Object.getPrototypeOf(object); if (!proto) { return true } const ctor = Object.hasOwnProperty.call(proto, "constructor") && proto.constructor; return "function" === typeof ctor && Object.toString.call(ctor) === Object.toString.call(Object) }; exports.isPlainObject = isPlainObject; const isPrimitive = function(value) { return !["object", "array", "function"].includes(type(value)) }; exports.isPrimitive = isPrimitive; const isWindow = function(object) { return null != object && object === object.window }; exports.isWindow = isWindow; const isRenderer = function(object) { return !!object && !!(object.jquery || object.dxRenderer) }; exports.isRenderer = isRenderer; const isPromise = function(object) { return !!object && isFunction(object.then) }; exports.isPromise = isPromise; const isDeferred = function(object) { return !!object && isFunction(object.done) && isFunction(object.fail) }; exports.isDeferred = isDeferred; const isEvent = function(object) { return !!(object && object.preventDefault) }; exports.isEvent = isEvent; exports.default = { isBoolean: isBoolean, isDate: isDate, isDeferred: isDeferred, isDefined: isDefined, isEmptyObject: isEmptyObject, isEvent: isEvent, isExponential: isExponential, isFunction: isFunction, isNumeric: isNumeric, isObject: isObject, isPlainObject: isPlainObject, isPrimitive: isPrimitive, isPromise: isPromise, isRenderer: isRenderer, isString: isString, isWindow: isWindow, type: type } }, 66082: /*!*****************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/core/utils/m_variable_wrapper.js ***! \*****************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.variableWrapper = void 0; var _console = __webpack_require__( /*! ../../../core/utils/console */ 31951); var _dependency_injector = (e = __webpack_require__( /*! ../../../core/utils/dependency_injector */ 89656), e && e.__esModule ? e : { default: e }); var e; exports.variableWrapper = (0, _dependency_injector.default)({ isWrapped: function() { return false }, isWritableWrapped: function() { return false }, wrap: function(value) { return value }, unwrap: function(value) { return value }, assign: function() { _console.logger.error("Method 'assign' should not be used for not wrapped variables. Use 'isWrapped' method for ensuring.") } }) }, 5388: /*!********************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/core/utils/m_version.js ***! \********************************************************************************/ function(__unused_webpack_module, exports) { Object.defineProperty(exports, "__esModule", { value: true }); exports.compare = function(x, y, maxLevel) { function normalizeArg(value) { if ("string" === typeof value) { return value.split(".") } if ("number" === typeof value) { return [value] } return value } x = normalizeArg(x); y = normalizeArg(y); let length = Math.max(x.length, y.length); if (isFinite(maxLevel)) { length = Math.min(length, maxLevel) } for (let i = 0; i < length; i++) { const xItem = parseInt(x[i] || 0, 10); const yItem = parseInt(y[i] || 0, 10); if (xItem < yItem) { return -1 } if (xItem > yItem) { return 1 } } return 0 } }, 65913: /*!**********************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/core/utils/m_view_port.js ***! \**********************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.changeCallback = void 0; exports.originalViewPort = function() { return $originalViewPort }; exports.value = void 0; var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../../core/renderer */ 64553)); var _callbacks = _interopRequireDefault(__webpack_require__( /*! ../../../core/utils/callbacks */ 84718)); var _ready_callbacks = _interopRequireDefault(__webpack_require__( /*! ../../../core/utils/ready_callbacks */ 3122)); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } const ready = _ready_callbacks.default.add; const changeCallback = exports.changeCallback = (0, _callbacks.default)(); let $originalViewPort = (0, _renderer.default)(); const value = exports.value = function() { let $current; return function(element) { if (!arguments.length) { return $current } const $element = (0, _renderer.default)(element); $originalViewPort = $element; const isNewViewportFound = !!$element.length; const prevViewPort = value(); $current = isNewViewportFound ? $element : (0, _renderer.default)("body"); changeCallback.fire(isNewViewportFound ? value() : (0, _renderer.default)(), prevViewPort) } }(); ready((function() { value(".dx-viewport") })) }, 14470: /*!*******************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/core/utils/m_window.js ***! \*******************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.setWindow = exports.hasWindow = exports.hasProperty = exports.getWindow = exports.getNavigator = exports.getCurrentScreenFactor = exports.defaultScreenFactorFunc = exports.default = void 0; var _dom_adapter = (e = __webpack_require__( /*! ../../../core/dom_adapter */ 64960), e && e.__esModule ? e : { default: e }); var e; let hasWindowValue = "undefined" !== typeof window; const hasWindow = () => hasWindowValue; exports.hasWindow = hasWindow; let windowObject = hasWindow() ? window : void 0; if (!windowObject) { windowObject = {}; windowObject.window = windowObject } const getWindow = () => windowObject; exports.getWindow = getWindow; const setWindow = (newWindowObject, hasWindow) => { if (void 0 === hasWindow) { hasWindowValue = "undefined" !== typeof window && window === newWindowObject } else { hasWindowValue = hasWindow } windowObject = newWindowObject }; exports.setWindow = setWindow; const hasProperty = prop => hasWindow() && prop in windowObject; exports.hasProperty = hasProperty; const defaultScreenFactorFunc = width => { if (width < 768) { return "xs" } if (width < 992) { return "sm" } if (width < 1200) { return "md" } return "lg" }; exports.defaultScreenFactorFunc = defaultScreenFactorFunc; const getCurrentScreenFactor = screenFactorCallback => { const screenFactorFunc = screenFactorCallback || defaultScreenFactorFunc; const windowWidth = _dom_adapter.default.getDocumentElement().clientWidth; return screenFactorFunc(windowWidth) }; exports.getCurrentScreenFactor = getCurrentScreenFactor; const getNavigator = () => { var _windowObject; return hasWindow() ? null === (_windowObject = windowObject) || void 0 === _windowObject ? void 0 : _windowObject.navigator : { userAgent: "" } }; exports.getNavigator = getNavigator; exports.default = { defaultScreenFactorFunc: defaultScreenFactorFunc, getCurrentScreenFactor: getCurrentScreenFactor, getNavigator: getNavigator, getWindow: getWindow, hasProperty: hasProperty, hasWindow: hasWindow, setWindow: setWindow } }, 12220: /*!***************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/core/utils/math.js ***! \***************************************************************************/ function(__unused_webpack_module, exports) { Object.defineProperty(exports, "__esModule", { value: true }); exports.shiftIntegerByModule = void 0; exports.shiftIntegerByModule = (integerValue, moduleValue) => { if (!Number.isInteger(integerValue)) { throw Error(`Passed integer value ${integerValue} is not an integer.`) } if (!Number.isInteger(moduleValue)) { throw Error(`Passed module value ${moduleValue} is not an integer.`) } if (moduleValue <= 0) { throw Error(`Passed module value ${moduleValue} must be > 0.`) } const normalizedInteger = integerValue % moduleValue; switch (true) { case 0 === normalizedInteger: return 0; case normalizedInteger > 0: return normalizedInteger; case normalizedInteger < 0: return moduleValue + normalizedInteger; default: throw Error(`Unexpected division (${integerValue} % ${moduleValue}) occurred.`) } } }, 51413: /*!******************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/core/utils/promise.js ***! \******************************************************************************/ function(__unused_webpack_module, exports) { Object.defineProperty(exports, "__esModule", { value: true }); exports.createPromise = function() { let resolve; let reject; const promise = new Promise(((res, rej) => { resolve = res; reject = rej })); return { promise: promise, resolve: resolve, reject: reject } } }, 11371: /*!*****************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/core/utils/scroll.js ***! \*****************************************************************************/ function(__unused_webpack_module, exports) { Object.defineProperty(exports, "__esModule", { value: true }); exports.getMemoizeScrollTo = function(getScrollableInstance) { const instance = getScrollableInstance(); let lastParams = {}; return function(params) { let force = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : false; const normalizedParams = { top: void 0 !== params.top ? Math.ceil(params.top) : void 0, left: void 0 !== params.left ? Math.ceil(params.left) : void 0 }; const isSameParams = normalizedParams.top === lastParams.top && normalizedParams.left === lastParams.left; if (!force && isSameParams) { return } lastParams = normalizedParams; instance.scrollTo(params) } } }, 65020: /*!*********************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/core/widget/component.js ***! \*********************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.Component = void 0; var _action = _interopRequireDefault(__webpack_require__( /*! ../../../core/action */ 88412)); var _class = _interopRequireDefault(__webpack_require__( /*! ../../../core/class */ 55620)); var _config3 = _interopRequireDefault(__webpack_require__( /*! ../../../core/config */ 66636)); var _errors = _interopRequireDefault(__webpack_require__( /*! ../../../core/errors */ 87129)); var _events_strategy = __webpack_require__( /*! ../../../core/events_strategy */ 2607); var _index = __webpack_require__( /*! ../../../core/options/index */ 74453); var _utils = __webpack_require__( /*! ../../../core/options/utils */ 53904); var _postponed_operations = __webpack_require__( /*! ../../../core/postponed_operations */ 21971); var _callbacks = _interopRequireDefault(__webpack_require__( /*! ../../../core/utils/callbacks */ 84718)); var _common = __webpack_require__( /*! ../../../core/utils/common */ 17781); var _data = __webpack_require__( /*! ../../../core/utils/data */ 31e3); var _extend = __webpack_require__( /*! ../../../core/utils/extend */ 52576); var _public_component = __webpack_require__( /*! ../../../core/utils/public_component */ 85521); var _type = __webpack_require__( /*! ../../../core/utils/type */ 11528); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } const getEventName = actionName => actionName.charAt(2).toLowerCase() + actionName.substr(3); class Component extends(_class.default.inherit({})) { _setDeprecatedOptions() { this._deprecatedOptions = {} } _getDeprecatedOptions() { return this._deprecatedOptions } _getDefaultOptions() { return { onInitialized: null, onOptionChanged: null, onDisposing: null, defaultOptionsRules: null } } _defaultOptionsRules() { return [] } _setOptionsByDevice(rules) { this._options.applyRules(rules) } _convertRulesToOptions(rules) { return (0, _utils.convertRulesToOptions)(rules) } _isInitialOptionValue(name) { return this._options.isInitial(name) } _setOptionsByReference() { this._optionsByReference = {} } _getOptionsByReference() { return this._optionsByReference } ctor() { let options = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {}; const { _optionChangedCallbacks: _optionChangedCallbacks, _disposingCallbacks: _disposingCallbacks } = options; this.NAME = (0, _public_component.name)(this.constructor); this._eventsStrategy = _events_strategy.EventsStrategy.create(this, options.eventsStrategy); this._updateLockCount = 0; this._optionChangedCallbacks = _optionChangedCallbacks || (0, _callbacks.default)(); this._disposingCallbacks = _disposingCallbacks || (0, _callbacks.default)(); this.postponedOperations = new _postponed_operations.PostponedOperations; this._createOptions(options) } _createOptions(options) { this.beginUpdate(); try { this._setOptionsByReference(); this._setDeprecatedOptions(); this._options = new _index.Options(this._getDefaultOptions(), this._getDefaultOptions(), this._getOptionsByReference(), this._getDeprecatedOptions()); this._options.onChanging(((name, previousValue, value) => this._initialized && this._optionChanging(name, previousValue, value))); this._options.onDeprecated(((option, info) => this._logDeprecatedOptionWarning(option, info))); this._options.onChanged(((name, value, previousValue) => this._notifyOptionChanged(name, value, previousValue))); this._options.onStartChange((() => this.beginUpdate())); this._options.onEndChange((() => this.endUpdate())); this._options.addRules(this._defaultOptionsRules()); this._options.validateOptions((o => this._validateOptions(o))); if (options && options.onInitializing) { options.onInitializing.apply(this, [options]) } this._setOptionsByDevice(options.defaultOptionsRules); this._initOptions(options) } finally { this.endUpdate() } } _initOptions(options) { this.option(options) } _init() { this._createOptionChangedAction(); this.on("disposing", (args => { this._disposingCallbacks.fireWith(this, [args]) })) } _logDeprecatedOptionWarning(option, info) { const message = info.message || `Use the '${info.alias}' option instead`; _errors.default.log("W0001", this.NAME, option, info.since, message) } _logDeprecatedComponentWarning(since, alias) { _errors.default.log("W0000", this.NAME, since, `Use the '${alias}' widget instead`) } _createOptionChangedAction() { this._optionChangedAction = this._createActionByOption("onOptionChanged", { excludeValidators: ["disabled", "readOnly"] }) } _createDisposingAction() { this._disposingAction = this._createActionByOption("onDisposing", { excludeValidators: ["disabled", "readOnly"] }) } _optionChanged(args) { const { name: name } = args; switch (name) { case "onDisposing": case "onInitialized": case "defaultOptionsRules": default: break; case "onOptionChanged": this._createOptionChangedAction() } } _dispose() { var _this$_disposingActio; this._optionChangedCallbacks.empty(); this._createDisposingAction(); null === (_this$_disposingActio = this._disposingAction) || void 0 === _this$_disposingActio || _this$_disposingActio.call(this); this._eventsStrategy.dispose(); this._options.dispose(); this._disposed = true } _lockUpdate() { this._updateLockCount++ } _unlockUpdate() { this._updateLockCount = Math.max(this._updateLockCount - 1, 0) } _isUpdateAllowed() { return 0 === this._updateLockCount } _isInitializingRequired() { return !this._initializing && !this._initialized } isInitialized() { return this._initialized } _commitUpdate() { this.postponedOperations.callPostponedOperations(); this._isInitializingRequired() && this._initializeComponent() } _initializeComponent() { this._initializing = true; try { this._init() } finally { this._initializing = false; this._lockUpdate(); this._createActionByOption("onInitialized", { excludeValidators: ["disabled", "readOnly"] })(); this._unlockUpdate(); this._initialized = true } } instance() { return this } beginUpdate() { this._lockUpdate() } endUpdate() { this._unlockUpdate(); this._isUpdateAllowed() && this._commitUpdate() } _optionChanging() {} _notifyOptionChanged(option, value, previousValue) { if (this._initialized) { const optionNames = [option].concat(this._options.getAliasesByName(option)); for (let i = 0; i < optionNames.length; i++) { const name = optionNames[i]; const args = { name: (0, _data.getPathParts)(name)[0], fullName: name, value: value, previousValue: previousValue }; if (!(optionName = name, 0 === optionName.indexOf("_", 0))) { var _this$_optionChangedA; this._optionChangedCallbacks.fireWith(this, [(0, _extend.extend)(this._defaultActionArgs(), args)]); null === (_this$_optionChangedA = this._optionChangedAction) || void 0 === _this$_optionChangedA || _this$_optionChangedA.call(this, (0, _extend.extend)({}, args)) } if (!this._disposed && this._cancelOptionChange !== name) { this._optionChanged(args) } } } var optionName } initialOption(name) { return this._options.initial(name) } _defaultActionConfig() { return { context: this, component: this } } _defaultActionArgs() { return { component: this } } _createAction(actionSource, config) { let action; return e => { if (!(0, _type.isDefined)(e)) { e = {} } if (!(0, _type.isPlainObject)(e)) { e = { actionValue: e } } action = action || new _action.default(actionSource, (0, _extend.extend)({}, config, this._defaultActionConfig())); return action.execute.call(action, (0, _extend.extend)(e, this._defaultActionArgs())) } } _createActionByOption(optionName, config) { var _this = this; let action; let eventName; let actionFunc; config = (0, _extend.extend)({}, config); const result = function() { var _config, _config2; if (!eventName) { config = config || {}; if ("string" !== typeof optionName) { throw _errors.default.Error("E0008") } if (optionName.startsWith("on")) { eventName = getEventName(optionName) } actionFunc = _this.option(optionName) } if (!action && !actionFunc && !(null !== (_config = config) && void 0 !== _config && _config.beforeExecute) && !(null !== (_config2 = config) && void 0 !== _config2 && _config2.afterExecute) && !_this._eventsStrategy.hasEvent(eventName)) { return } if (!action) { const { beforeExecute: beforeExecute } = config; config.beforeExecute = function() { for (var _len2 = arguments.length, props = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) { props[_key2] = arguments[_key2] } beforeExecute && beforeExecute.apply(_this, props); _this._eventsStrategy.fireEvent(eventName, props[0].args) }; action = _this._createAction(actionFunc, config) } for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { args[_key] = arguments[_key] } if ((0, _config3.default)().wrapActionsBeforeExecute) { const beforeActionExecute = _this.option("beforeActionExecute") || _common.noop; const wrappedAction = beforeActionExecute(_this, action, config) || action; return wrappedAction.apply(_this, args) } return action.apply(_this, args) }; if ((0, _config3.default)().wrapActionsBeforeExecute) { return result } const onActionCreated = this.option("onActionCreated") || _common.noop; return onActionCreated(this, result, config) || result } on(eventName, eventHandler) { this._eventsStrategy.on(eventName, eventHandler); return this } off(eventName, eventHandler) { this._eventsStrategy.off(eventName, eventHandler); return this } hasActionSubscription(actionName) { return !!this._options.silent(actionName) || this._eventsStrategy.hasEvent(getEventName(actionName)) } isOptionDeprecated(name) { return this._options.isDeprecated(name) } _setOptionWithoutOptionChange(name, value) { this._cancelOptionChange = name; this.option(name, value); this._cancelOptionChange = false } _getOptionValue(name, context) { const value = this.option(name); if ((0, _type.isFunction)(value)) { return value.bind(context)() } return value } option() { return this._options.option(...arguments) } resetOption(name) { this.beginUpdate(); this._options.reset(name); this.endUpdate() } _validateOptions(options) { return options } } exports.Component = Component }, 22331: /*!*************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/core/widget/dom_component.js ***! \*************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _short = __webpack_require__( /*! ../../../common/core/events/short */ 42222); var _config = _interopRequireDefault(__webpack_require__( /*! ../../../core/config */ 66636)); var _element = __webpack_require__( /*! ../../../core/element */ 61404); var _element_data = __webpack_require__( /*! ../../../core/element_data */ 74663); var _errors = _interopRequireDefault(__webpack_require__( /*! ../../../core/errors */ 87129)); var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../../core/renderer */ 64553)); var _common = __webpack_require__( /*! ../../../core/utils/common */ 17781); var _extend = __webpack_require__( /*! ../../../core/utils/extend */ 52576); var _iterator = __webpack_require__( /*! ../../../core/utils/iterator */ 21274); var _public_component = __webpack_require__( /*! ../../../core/utils/public_component */ 85521); var _resize_callbacks = _interopRequireDefault(__webpack_require__( /*! ../../../core/utils/resize_callbacks */ 63283)); var _shadow_dom = __webpack_require__( /*! ../../../core/utils/shadow_dom */ 93631); var _type = __webpack_require__( /*! ../../../core/utils/type */ 11528); var _window = __webpack_require__( /*! ../../../core/utils/window */ 3104); var _license_validation = function(e, r) { if (!r && e && e.__esModule) { return e } if (null === e || "object" != typeof e && "function" != typeof e) { return { default: e } } var t = _getRequireWildcardCache(r); if (t && t.has(e)) { return t.get(e) } var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) { if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u] } } return n.default = e, t && t.set(e, n), n }(__webpack_require__( /*! ../../core/license/license_validation */ 93391)); var _m_template_manager = _interopRequireDefault(__webpack_require__( /*! ../../core/m_template_manager */ 66298)); var _m_common = __webpack_require__( /*! ../../core/utils/m_common */ 39315); var _component = __webpack_require__( /*! ./component */ 65020); function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) { return null } var r = new WeakMap, t = new WeakMap; return (_getRequireWildcardCache = function(e) { return e ? t : r })(e) } function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } class DOMComponent extends _component.Component { static getInstance(element) { return (0, _public_component.getInstanceByElement)((0, _renderer.default)(element), this) } static defaultOptions(rule) { this._classCustomRules = Object.hasOwnProperty.bind(this)("_classCustomRules") && this._classCustomRules ? this._classCustomRules : []; this._classCustomRules.push(rule) } _getDefaultOptions() { return (0, _extend.extend)(super._getDefaultOptions(), { width: void 0, height: void 0, rtlEnabled: (0, _config.default)().rtlEnabled, elementAttr: {}, disabled: false, integrationOptions: {} }, this._useTemplates() ? _m_template_manager.default.TemplateManager.createDefaultOptions() : {}) } ctor(element, options) { this._customClass = null; this._createElement(element); (0, _public_component.attachInstanceToElement)(this._$element, this, this._dispose); super.ctor(options); const validationAlreadyPerformed = (0, _license_validation.peekValidationPerformed)(); _license_validation.default.validateLicense((0, _config.default)().licenseKey); if (!validationAlreadyPerformed && (0, _license_validation.peekValidationPerformed)()) { (0, _config.default)({ licenseKey: "" }) } _m_common.uiLayerInitialized.resolve() } _createElement(element) { this._$element = (0, _renderer.default)(element) } _getSynchronizableOptionsForCreateComponent() { return ["rtlEnabled", "disabled", "templatesRenderAsynchronously"] } _checkFunctionValueDeprecation(optionNames) { if (!this.option("_ignoreFunctionValueDeprecation")) { optionNames.forEach((optionName => { if ((0, _type.isFunction)(this.option(optionName))) { _errors.default.log("W0017", optionName) } })) } } _visibilityChanged(value) {} _dimensionChanged() {} _init() { super._init(); this._checkFunctionValueDeprecation(["width", "height", "maxHeight", "maxWidth", "minHeight", "minWidth", "popupHeight", "popupWidth"]); this._attachWindowResizeCallback(); this._initTemplateManager() } _setOptionsByDevice(instanceCustomRules) { const ctor = this.constructor; const hasOwnCustomRules = Object.prototype.hasOwnProperty.call(ctor, "_classCustomRules"); const hasOwnDefaultOptions = Object.prototype.hasOwnProperty.call(ctor, "defaultOptions"); const ownClassCustomRules = hasOwnCustomRules || hasOwnDefaultOptions ? ctor._classCustomRules : []; super._setOptionsByDevice([].concat(ownClassCustomRules || [], instanceCustomRules || [])) } _isInitialOptionValue(name) { const isCustomOption = this.constructor._classCustomRules && Object.prototype.hasOwnProperty.call(this._convertRulesToOptions(this.constructor._classCustomRules), name); return !isCustomOption && super._isInitialOptionValue(name) } _attachWindowResizeCallback() { if (this._isDimensionChangeSupported()) { const windowResizeCallBack = this._windowResizeCallBack = this._dimensionChanged.bind(this); _resize_callbacks.default.add(windowResizeCallBack) } } _isDimensionChangeSupported() { return this._dimensionChanged !== DOMComponent.prototype._dimensionChanged } _renderComponent() { (0, _shadow_dom.addShadowDomStyles)(this.$element()); this._initMarkup(); (0, _window.hasWindow)() && this._render() } _initMarkup() { const { rtlEnabled: rtlEnabled } = this.option() || {}; this._renderElementAttributes(); this._toggleRTLDirection(rtlEnabled); this._renderVisibilityChange(); this._renderDimensions() } _render() { this._attachVisibilityChangeHandlers() } _renderElementAttributes() { const { elementAttr: elementAttr } = this.option() || {}; const attributes = (0, _extend.extend)({}, elementAttr); const classNames = attributes.class; delete attributes.class; this.$element().attr(attributes).removeClass(this._customClass).addClass(classNames); this._customClass = classNames } _renderVisibilityChange() { if (this._isDimensionChangeSupported()) { this._attachDimensionChangeHandlers() } if (this._isVisibilityChangeSupported()) { const $element = this.$element(); $element.addClass("dx-visibility-change-handler") } } _renderDimensions() { const $element = this.$element(); const element = $element.get(0); const width = this._getOptionValue("width", element); const height = this._getOptionValue("height", element); if (this._isCssUpdateRequired(element, height, width)) { $element.css({ width: null === width ? "" : width, height: null === height ? "" : height }) } } _isCssUpdateRequired(element, height, width) { return !!((0, _type.isDefined)(width) || (0, _type.isDefined)(height) || element.style.width || element.style.height) } _attachDimensionChangeHandlers() { const $el = this.$element(); const namespace = `${this.NAME}VisibilityChange`; _short.resize.off($el, { namespace: namespace }); _short.resize.on($el, (() => this._dimensionChanged()), { namespace: namespace }) } _attachVisibilityChangeHandlers() { if (this._isVisibilityChangeSupported()) { const $el = this.$element(); const namespace = `${this.NAME}VisibilityChange`; this._isHidden = !this._isVisible(); _short.visibility.off($el, { namespace: namespace }); _short.visibility.on($el, (() => this._checkVisibilityChanged("shown")), (() => this._checkVisibilityChanged("hiding")), { namespace: namespace }) } } _isVisible() { const $element = this.$element(); return $element.is(":visible") } _checkVisibilityChanged(action) { const isVisible = this._isVisible(); if (isVisible) { if ("hiding" === action && !this._isHidden) { this._visibilityChanged(false); this._isHidden = true } else if ("shown" === action && this._isHidden) { this._isHidden = false; this._visibilityChanged(true) } } } _isVisibilityChangeSupported() { return this._visibilityChanged !== DOMComponent.prototype._visibilityChanged && (0, _window.hasWindow)() } _clean() {} _modelByElement(element) { const { modelByElement: modelByElement } = this.option(); const $element = this.$element(); return modelByElement ? modelByElement($element) : void 0 } _invalidate() { if (this._isUpdateAllowed()) { throw _errors.default.Error("E0007") } this._requireRefresh = true } _refresh() { this._clean(); this._renderComponent() } _dispose() { this._templateManager && this._templateManager.dispose(); super._dispose(); this._clean(); this._detachWindowResizeCallback() } _detachWindowResizeCallback() { if (this._isDimensionChangeSupported()) { _resize_callbacks.default.remove(this._windowResizeCallBack) } } _toggleRTLDirection(rtl) { const $element = this.$element(); $element.toggleClass("dx-rtl", rtl) } _createComponent(element, component, componentConfiguration) { const configuration = componentConfiguration ?? {}; const synchronizableOptions = (0, _common.grep)(this._getSynchronizableOptionsForCreateComponent(), (value => !(value in configuration))); const { integrationOptions: integrationOptions } = this.option(); let { nestedComponentOptions: nestedComponentOptions } = this.option(); nestedComponentOptions = nestedComponentOptions ?? _common.noop; const nestedComponentConfig = (0, _extend.extend)({ integrationOptions: integrationOptions }, nestedComponentOptions(this)); synchronizableOptions.forEach((optionName => nestedComponentConfig[optionName] = this.option(optionName))); this._extendConfig(configuration, nestedComponentConfig); let instance; if ((0, _type.isString)(component)) { const $element = (0, _renderer.default)(element)[component](configuration); instance = $element[component]("instance") } else if (element) { instance = component.getInstance(element); if (instance) { instance.option(configuration) } else { instance = new component(element, configuration) } } if (instance) { const optionChangedHandler = _ref => { let { name: name, value: value } = _ref; if (synchronizableOptions.includes(name)) { instance.option(name, value) } }; this.on("optionChanged", optionChangedHandler); instance.on("disposing", (() => this.off("optionChanged", optionChangedHandler))) } return instance } _extendConfig(configuration, extendConfig) { (0, _iterator.each)(extendConfig, ((key, value) => { !Object.prototype.hasOwnProperty.call(configuration, key) && (configuration[key] = value) })) } _defaultActionConfig() { const $element = this.$element(); const context = this._modelByElement($element); return (0, _extend.extend)(super._defaultActionConfig(), { context: context }) } _defaultActionArgs() { const $element = this.$element(); const model = this._modelByElement($element); const element = this.element(); return (0, _extend.extend)(super._defaultActionArgs(), { element: element, model: model }) } _optionChanged(args) { const { name: name } = args; switch (name) { case "width": case "height": this._renderDimensions(); break; case "rtlEnabled": this._invalidate(); break; case "elementAttr": this._renderElementAttributes(); break; case "disabled": case "integrationOptions": break; default: super._optionChanged(args) } } _removeAttributes(element) { const attrs = element.attributes; for (let i = attrs.length - 1; i >= 0; i--) { const attr = attrs[i]; if (attr) { const { name: name } = attr; if (!name.indexOf("aria-") || -1 !== name.indexOf("dx-") || "role" === name || "style" === name || "tabindex" === name) { element.removeAttribute(name) } } } } _removeClasses(element) { element.className = element.className.split(" ").filter((cssClass => 0 !== cssClass.lastIndexOf("dx-", 0))).join(" ") } _updateDOMComponent(renderRequired) { if (renderRequired) { this._renderComponent() } else if (this._requireRefresh) { this._requireRefresh = false; this._refresh() } } endUpdate() { const renderRequired = this._isInitializingRequired(); super.endUpdate(); this._isUpdateAllowed() && this._updateDOMComponent(renderRequired) } $element() { return this._$element } element() { const $element = this.$element(); return (0, _element.getPublicElement)($element) } dispose() { const element = this.$element().get(0); (0, _element_data.cleanDataRecursive)(element, true); element.textContent = ""; this._removeAttributes(element); this._removeClasses(element) } resetOption(optionName) { super.resetOption(optionName); if ("width" === optionName || "height" === optionName) { const initialOption = this.initialOption(optionName); !(0, _type.isDefined)(initialOption) && this.$element().css(optionName, "") } } _getAnonymousTemplateName() { return } _initTemplateManager() { if (this._templateManager || !this._useTemplates()) { return } const { integrationOptions: integrationOptions = {} } = this.option(); const { createTemplate: createTemplate } = integrationOptions; this._templateManager = new _m_template_manager.default.TemplateManager(createTemplate, this._getAnonymousTemplateName()); this._initTemplates(); return } _initTemplates() { const { templates: templates, anonymousTemplateMeta: anonymousTemplateMeta } = this._templateManager.extractTemplates(this.$element()); const anonymousTemplate = this.option(`integrationOptions.templates.${anonymousTemplateMeta.name}`); templates.forEach((_ref2 => { let { name: name, template: template } = _ref2; this._options.silent(`integrationOptions.templates.${name}`, template) })); if (anonymousTemplateMeta.name && !anonymousTemplate) { this._options.silent(`integrationOptions.templates.${anonymousTemplateMeta.name}`, anonymousTemplateMeta.template); this._options.silent("_hasAnonymousTemplateContent", true) } } _getTemplateByOption(optionName) { return this._getTemplate(this.option(optionName)) } _getTemplate(templateSource) { const templates = this.option("integrationOptions.templates"); const isAsyncTemplate = this.option("templatesRenderAsynchronously"); const skipTemplates = this.option("integrationOptions.skipTemplates"); return this._templateManager.getTemplate(templateSource, templates, { isAsyncTemplate: isAsyncTemplate, skipTemplates: skipTemplates }, this) } _saveTemplate(name, template) { this._setOptionWithoutOptionChange(`integrationOptions.templates.${name}`, this._templateManager._createTemplate(template)) } _useTemplates() { return true } } exports.default = DOMComponent }, 89275: /*!******************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/core/widget/widget.js ***! \******************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = exports.WIDGET_CLASS = exports.HOVER_STATE_CLASS = exports.FOCUSED_STATE_CLASS = void 0; __webpack_require__( /*! ../../../common/core/events/click */ 64044); __webpack_require__( /*! ../../../common/core/events/core/emitter.feedback */ 69331); __webpack_require__( /*! ../../../common/core/events/hover */ 638); var _short = __webpack_require__( /*! ../../../common/core/events/short */ 42222); var _action = _interopRequireDefault(__webpack_require__( /*! ../../../core/action */ 88412)); var _devices = _interopRequireDefault(__webpack_require__( /*! ../../../core/devices */ 65951)); var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../../core/renderer */ 64553)); var _common = __webpack_require__( /*! ../../../core/utils/common */ 17781); var _extend = __webpack_require__( /*! ../../../core/utils/extend */ 52576); var _iterator = __webpack_require__( /*! ../../../core/utils/iterator */ 21274); var _type = __webpack_require__( /*! ../../../core/utils/type */ 11528); var _version = __webpack_require__( /*! ../../../core/utils/version */ 20142); var _selectors = __webpack_require__( /*! ../../../ui/widget/selectors */ 35944); var _dom_component = _interopRequireDefault(__webpack_require__( /*! ./dom_component */ 22331)); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } const WIDGET_CLASS = exports.WIDGET_CLASS = "dx-widget"; const FOCUSED_STATE_CLASS = exports.FOCUSED_STATE_CLASS = "dx-state-focused"; const HOVER_STATE_CLASS = exports.HOVER_STATE_CLASS = "dx-state-hover"; function setAttribute(name, value, target) { name = "role" === name || "id" === name ? name : `aria-${name}`; value = (0, _type.isDefined)(value) ? value.toString() : null; target.attr(name, value) } class Widget extends _dom_component.default { constructor() { super(...arguments); this._feedbackHideTimeout = 400; this._feedbackShowTimeout = 30 } static getOptionsFromContainer(_ref) { let { name: name, fullName: fullName, value: value } = _ref; let options = {}; if (name === fullName) { options = value } else { const option = fullName.split(".").pop(); options[option] = value } return options } _supportedKeys() { return {} } _getDefaultOptions() { return (0, _extend.extend)(super._getDefaultOptions(), { hoveredElement: null, isActive: false, disabled: false, visible: true, hint: void 0, activeStateEnabled: false, onContentReady: null, hoverStateEnabled: false, focusStateEnabled: false, tabIndex: 0, accessKey: void 0, onFocusIn: null, onFocusOut: null, onKeyboardHandled: null, ignoreParentReadOnly: false, useResizeObserver: true }) } _defaultOptionsRules() { return super._defaultOptionsRules().concat([{ device() { const device = _devices.default.real(); const { platform: platform } = device; const { version: version } = device; return "ios" === platform && (0, _version.compare)(version, "13.3") <= 0 }, options: { useResizeObserver: false } }]) } _init() { super._init(); this._initContentReadyAction() } _innerWidgetOptionChanged(innerWidget, args) { const options = Widget.getOptionsFromContainer(args); innerWidget && innerWidget.option(options); this._options.cache(args.name, options) } _bindInnerWidgetOptions(innerWidget, optionsContainer) { const syncOptions = () => this._options.silent(optionsContainer, (0, _extend.extend)({}, innerWidget.option())); syncOptions(); innerWidget.on("optionChanged", syncOptions) } _getAriaTarget() { return this._focusTarget() } _initContentReadyAction() { this._contentReadyAction = this._createActionByOption("onContentReady", { excludeValidators: ["disabled", "readOnly"] }) } _initMarkup() { const { disabled: disabled, visible: visible } = this.option(); this.$element().addClass(WIDGET_CLASS); this._toggleDisabledState(disabled); this._toggleVisibility(visible); this._renderHint(); this._isFocusable() && this._renderFocusTarget(); super._initMarkup() } _render() { super._render(); this._renderContent(); this._renderFocusState(); this._attachFeedbackEvents(); this._attachHoverEvents(); this._toggleIndependentState() } _renderHint() { const { hint: hint } = this.option(); this.$element().attr("title", hint || null) } _renderContent() { (0, _common.deferRender)((() => !this._disposed ? this._renderContentImpl() : void 0)).done((() => !this._disposed ? this._fireContentReadyAction() : void 0)) } _renderContentImpl() {} _fireContentReadyAction() { return (0, _common.deferRender)((() => { var _this$_contentReadyAc; return null === (_this$_contentReadyAc = this._contentReadyAction) || void 0 === _this$_contentReadyAc ? void 0 : _this$_contentReadyAc.call(this) })) } _dispose() { this._contentReadyAction = null; this._detachKeyboardEvents(); super._dispose() } _resetActiveState() { this._toggleActiveState(this._eventBindingTarget(), false) } _clean() { this._cleanFocusState(); this._resetActiveState(); super._clean(); this.$element().empty() } _toggleVisibility(visible) { this.$element().toggleClass("dx-state-invisible", !visible) } _renderFocusState() { this._attachKeyboardEvents(); if (this._isFocusable()) { this._renderFocusTarget(); this._attachFocusEvents(); this._renderAccessKey() } } _renderAccessKey() { const $el = this._focusTarget(); const { accessKey: accessKey } = this.option(); $el.attr("accesskey", accessKey) } _isFocusable() { const { focusStateEnabled: focusStateEnabled, disabled: disabled } = this.option(); return focusStateEnabled && !disabled } _eventBindingTarget() { return this.$element() } _focusTarget() { return this._getActiveElement() } _isFocusTarget(element) { const focusTargets = (0, _renderer.default)(this._focusTarget()).toArray(); return focusTargets.includes(element) } _findActiveTarget($element) { return $element.find(this._activeStateUnit).not(".dx-state-disabled") } _getActiveElement() { const activeElement = this._eventBindingTarget(); if (this._activeStateUnit) { return this._findActiveTarget(activeElement) } return activeElement } _renderFocusTarget() { const { tabIndex: tabIndex } = this.option(); this._focusTarget().attr("tabIndex", tabIndex) } _keyboardEventBindingTarget() { return this._eventBindingTarget() } _refreshFocusEvent() { this._detachFocusEvents(); this._attachFocusEvents() } _focusEventTarget() { return this._focusTarget() } _focusInHandler(event) { if (!event.isDefaultPrevented()) { this._createActionByOption("onFocusIn", { beforeExecute: () => this._updateFocusState(event, true), excludeValidators: ["readOnly"] })({ event: event }) } } _focusOutHandler(event) { if (!event.isDefaultPrevented()) { this._createActionByOption("onFocusOut", { beforeExecute: () => this._updateFocusState(event, false), excludeValidators: ["readOnly", "disabled"] })({ event: event }) } } _updateFocusState(_ref2, isFocused) { let { target: target } = _ref2; if (this._isFocusTarget(target)) { this._toggleFocusClass(isFocused, (0, _renderer.default)(target)) } } _toggleFocusClass(isFocused, $element) { const $focusTarget = $element && $element.length ? $element : this._focusTarget(); $focusTarget.toggleClass(FOCUSED_STATE_CLASS, isFocused) } _hasFocusClass(element) { const $focusTarget = (0, _renderer.default)(element ?? this._focusTarget()); return $focusTarget.hasClass(FOCUSED_STATE_CLASS) } _isFocused() { return this._hasFocusClass() } _getKeyboardListeners() { return [] } _attachKeyboardEvents() { this._detachKeyboardEvents(); const { focusStateEnabled: focusStateEnabled, onKeyboardHandled: onKeyboardHandled } = this.option(); const hasChildListeners = this._getKeyboardListeners().length; const hasKeyboardEventHandler = !!onKeyboardHandled; const shouldAttach = focusStateEnabled || hasChildListeners || hasKeyboardEventHandler; if (shouldAttach) { this._keyboardListenerId = _short.keyboard.on(this._keyboardEventBindingTarget(), this._focusTarget(), (opts => this._keyboardHandler(opts))) } } _keyboardHandler(options, onlyChildProcessing) { if (!onlyChildProcessing) { const { originalEvent: originalEvent, keyName: keyName, which: which } = options; const keys = this._supportedKeys(originalEvent); const func = keys[keyName] || keys[which]; if (void 0 !== func) { const handler = func.bind(this); const result = handler(originalEvent, options); if (!result) { return false } } } const keyboardListeners = this._getKeyboardListeners(); const { onKeyboardHandled: onKeyboardHandled } = this.option(); keyboardListeners.forEach((listener => listener && listener._keyboardHandler(options))); onKeyboardHandled && onKeyboardHandled(options); return true } _refreshFocusState() { this._cleanFocusState(); this._renderFocusState() } _cleanFocusState() { const $element = this._focusTarget(); $element.removeAttr("tabIndex"); this._toggleFocusClass(false); this._detachFocusEvents(); this._detachKeyboardEvents() } _detachKeyboardEvents() { _short.keyboard.off(this._keyboardListenerId); this._keyboardListenerId = null } _attachHoverEvents() { const { hoverStateEnabled: hoverStateEnabled } = this.option(); const selector = this._activeStateUnit; const $el = this._eventBindingTarget(); _short.hover.off($el, { selector: selector, namespace: "UIFeedback" }); if (hoverStateEnabled) { _short.hover.on($el, new _action.default((_ref3 => { let { event: event, element: element } = _ref3; this._hoverStartHandler(event); this.option("hoveredElement", (0, _renderer.default)(element)) }), { excludeValidators: ["readOnly"] }), (event => { this.option("hoveredElement", null); this._hoverEndHandler(event) }), { selector: selector, namespace: "UIFeedback" }) } } _attachFeedbackEvents() { const { activeStateEnabled: activeStateEnabled } = this.option(); const selector = this._activeStateUnit; const $el = this._eventBindingTarget(); _short.active.off($el, { namespace: "UIFeedback", selector: selector }); if (activeStateEnabled) { _short.active.on($el, new _action.default((_ref4 => { let { event: event, element: element } = _ref4; return this._toggleActiveState((0, _renderer.default)(element), true, event) })), new _action.default((_ref5 => { let { event: event, element: element } = _ref5; return this._toggleActiveState((0, _renderer.default)(element), false, event) }), { excludeValidators: ["disabled", "readOnly"] }), { showTimeout: this._feedbackShowTimeout, hideTimeout: this._feedbackHideTimeout, selector: selector, namespace: "UIFeedback" }) } } _detachFocusEvents() { const $el = this._focusEventTarget(); _short.focus.off($el, { namespace: `${this.NAME}Focus` }) } _attachFocusEvents() { const $el = this._focusEventTarget(); _short.focus.on($el, (e => this._focusInHandler(e)), (e => this._focusOutHandler(e)), { namespace: `${this.NAME}Focus`, isFocusable: (index, el) => (0, _renderer.default)(el).is(_selectors.focusable) }) } _hoverStartHandler(event) {} _hoverEndHandler(event) {} _toggleActiveState($element, value, event) { this.option("isActive", value); $element.toggleClass("dx-state-active", value) } _updatedHover() { const hoveredElement = this._options.silent("hoveredElement"); this._hover(hoveredElement, hoveredElement) } _findHoverTarget($el) { return $el && $el.closest(this._activeStateUnit || this._eventBindingTarget()) } _hover($el, $previous) { const { hoverStateEnabled: hoverStateEnabled, disabled: disabled, isActive: isActive } = this.option(); $previous = this._findHoverTarget($previous); $previous && $previous.toggleClass(HOVER_STATE_CLASS, false); if ($el && hoverStateEnabled && !disabled && !isActive) { const newHoveredElement = this._findHoverTarget($el); newHoveredElement && newHoveredElement.toggleClass(HOVER_STATE_CLASS, true) } } _toggleDisabledState(value) { this.$element().toggleClass("dx-state-disabled", Boolean(value)); this.setAria("disabled", value || void 0) } _toggleIndependentState() { const { ignoreParentReadOnly: ignoreParentReadOnly } = this.option(); this.$element().toggleClass("dx-state-independent", ignoreParentReadOnly) } _setWidgetOption(widgetName, args) { if (!this[widgetName]) { return } if ((0, _type.isPlainObject)(args[0])) { (0, _iterator.each)(args[0], ((option, value) => this._setWidgetOption(widgetName, [option, value]))); return } const optionName = args[0]; let value = args[1]; if (1 === args.length) { value = this.option(optionName) } const widgetOptionMap = this[`${widgetName}OptionMap`]; this[widgetName].option(widgetOptionMap ? widgetOptionMap(optionName) : optionName, value) } _optionChanged(args) { const { name: name, value: value, previousValue: previousValue } = args; switch (name) { case "disabled": this._toggleDisabledState(value); this._updatedHover(); this._refreshFocusState(); break; case "hint": this._renderHint(); break; case "ignoreParentReadOnly": this._toggleIndependentState(); break; case "activeStateEnabled": this._attachFeedbackEvents(); break; case "hoverStateEnabled": this._attachHoverEvents(); this._updatedHover(); break; case "tabIndex": case "focusStateEnabled": this._refreshFocusState(); break; case "onFocusIn": case "onFocusOut": case "useResizeObserver": break; case "accessKey": this._renderAccessKey(); break; case "hoveredElement": this._hover(value, previousValue); break; case "isActive": this._updatedHover(); break; case "visible": this._toggleVisibility(value); if (this._isVisibilityChangeSupported()) { this._checkVisibilityChanged(value ? "shown" : "hiding") } break; case "onKeyboardHandled": this._attachKeyboardEvents(); break; case "onContentReady": this._initContentReadyAction(); break; default: super._optionChanged(args) } } _isVisible() { const { visible: visible } = this.option(); return super._isVisible() && visible } beginUpdate() { this._ready(false); super.beginUpdate() } endUpdate() { super.endUpdate(); if (this._initialized) { this._ready(true) } } _ready(value) { if (0 === arguments.length) { return !!this._isReady } this._isReady = !!value; return this._isReady } setAria() { if (!(0, _type.isPlainObject)(arguments.length <= 0 ? void 0 : arguments[0])) { setAttribute(arguments.length <= 0 ? void 0 : arguments[0], arguments.length <= 1 ? void 0 : arguments[1], (arguments.length <= 2 ? void 0 : arguments[2]) || this._getAriaTarget()) } else { const target = (arguments.length <= 1 ? void 0 : arguments[1]) || this._getAriaTarget(); (0, _iterator.each)(arguments.length <= 0 ? void 0 : arguments[0], ((name, value) => setAttribute(name, value, target))) } } isReady() { return this._ready() } repaint() { this._refresh() } focus() { _short.focus.trigger(this._focusTarget()) } registerKeyHandler(key, handler) { const currentKeys = this._supportedKeys(); this._supportedKeys = () => (0, _extend.extend)(currentKeys, { [key]: handler }) } } exports.default = Widget }, 11774: /*!************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/data/data_controller/data_controller.js ***! \************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _deferred = __webpack_require__( /*! ../../../core/utils/deferred */ 87739); var _array_store = (e = __webpack_require__( /*! ../../../common/data/array_store */ 80556), e && e.__esModule ? e : { default: e }); var e; var _data_source = __webpack_require__( /*! ../../../common/data/data_source/data_source */ 68216); var _utils = __webpack_require__( /*! ../../../common/data/data_source/utils */ 97169); var _extend = __webpack_require__( /*! ../../../core/utils/extend */ 52576); var _type = __webpack_require__( /*! ../../../core/utils/type */ 11528); exports.default = class { constructor(dataSourceOptions, _ref) { let { key: key } = _ref; this._isSharedDataSource = false; this._keyExpr = key; this.updateDataSource(dataSourceOptions) } _updateDataSource(dataSourceOptions) { if (!dataSourceOptions) { return } if (dataSourceOptions instanceof _data_source.DataSource) { this._isSharedDataSource = true; this._dataSource = dataSourceOptions } else { const normalizedDataSourceOptions = (0, _utils.normalizeDataSourceOptions)(dataSourceOptions); this._dataSource = new _data_source.DataSource((0, _extend.extend)(true, {}, {}, normalizedDataSourceOptions)) } } _updateDataSourceByItems(items) { this._dataSource = new _data_source.DataSource({ store: new _array_store.default({ key: this.key(), data: items }), pageSize: 0 }) } _disposeDataSource() { if (this._dataSource) { if (this._isSharedDataSource) { this._isSharedDataSource = false } else { this._dataSource.dispose() } delete this._dataSource } } load() { return this._dataSource.load() } loadSingle(propName, propValue) { if (!this._dataSource) { return (new _deferred.Deferred).reject() } let pName = propName; let pValue = propValue; if (arguments.length < 2) { pValue = propName; pName = this.key() } return this._dataSource.loadSingle(pName, pValue) } loadFromStore(loadOptions) { return this.store().load(loadOptions) } loadNextPage() { this.pageIndex(1 + this.pageIndex()); return this.load() } loadOptions() { return this._dataSource.loadOptions() } userData() { return this._dataSource._userData } cancel(operationId) { this._dataSource.cancel(operationId) } cancelAll() { this._dataSource.cancelAll() } filter(filter) { return this._dataSource.filter(filter) } addSearchFilter(storeLoadOptions) { this._dataSource._addSearchFilter(storeLoadOptions) } group(group) { return this._dataSource.group(group) } paginate() { return this._dataSource.paginate() } pageSize() { return this._dataSource._pageSize } pageIndex(pageIndex) { if (void 0 === pageIndex) { return this._dataSource.pageIndex(void 0) } return this._dataSource.pageIndex(pageIndex) } resetDataSource() { this._disposeDataSource() } resetDataSourcePageIndex() { if (this.pageIndex()) { this.pageIndex(0); this.load() } } updateDataSource(items, key) { const dataSourceOptions = items ?? this.items(); if (key) { this._keyExpr = key } this._disposeDataSource(); if (Array.isArray(dataSourceOptions)) { this._updateDataSourceByItems(dataSourceOptions) } else { this._updateDataSource(dataSourceOptions) } } totalCount() { return this._dataSource.totalCount() } isLastPage() { return this._dataSource.isLastPage() || !this._dataSource._pageSize } isLoading() { return this._dataSource.isLoading() } isLoaded() { return this._dataSource.isLoaded() } searchValue(value) { return this._dataSource.searchValue(value) } searchOperation(operation) { return this._dataSource.searchOperation(operation) } searchExpr(expr) { return this._dataSource.searchExpr(expr) } select() { for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { args[_key] = arguments[_key] } return this._dataSource.select(args) } key() { var _this$_dataSource; const storeKey = null === (_this$_dataSource = this._dataSource) || void 0 === _this$_dataSource ? void 0 : _this$_dataSource.key(); return (0, _type.isDefined)(storeKey) && "this" === this._keyExpr ? storeKey : this._keyExpr } keyOf(item) { return this.store().keyOf(item) } store() { return this._dataSource.store() } items() { var _this$_dataSource2; return null === (_this$_dataSource2 = this._dataSource) || void 0 === _this$_dataSource2 ? void 0 : _this$_dataSource2.items() } applyMapFunction(data) { return this._dataSource._applyMapFunction(data) } getDataSource() { return this._dataSource ?? null } reload() { return this._dataSource.reload() } on(event, handler) { this._dataSource.on(event, handler) } off(event, handler) { this._dataSource.off(event, handler) } } }, 79562: /*!******************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/data/data_source/m_data_source.js ***! \******************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.DataSource = void 0; var _array_utils = __webpack_require__( /*! ../../../common/data/array_utils */ 43792); var _custom_store = __webpack_require__( /*! ../../../common/data/custom_store */ 63326); var _operation_manager = _interopRequireDefault(__webpack_require__( /*! ../../../common/data/data_source/operation_manager */ 95853)); var _utils = __webpack_require__( /*! ../../../common/data/data_source/utils */ 97169); var _errors = __webpack_require__( /*! ../../../common/data/errors */ 82812); var _utils2 = __webpack_require__( /*! ../../../common/data/utils */ 89358); var _class = _interopRequireDefault(__webpack_require__( /*! ../../../core/class */ 55620)); var _events_strategy = __webpack_require__( /*! ../../../core/events_strategy */ 2607); var _deferred = __webpack_require__( /*! ../../../core/utils/deferred */ 87739); var _extend = __webpack_require__( /*! ../../../core/utils/extend */ 52576); var _iterator = __webpack_require__( /*! ../../../core/utils/iterator */ 21274); var _queue = __webpack_require__( /*! ../../../core/utils/queue */ 65221); var _type = __webpack_require__( /*! ../../../core/utils/type */ 11528); var _m_common = _interopRequireDefault(__webpack_require__( /*! ../../core/utils/m_common */ 39315)); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } function _extends() { return _extends = Object.assign ? Object.assign.bind() : function(n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) { ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]) } } return n }, _extends.apply(null, arguments) } exports.DataSource = _class.default.inherit({ ctor(options) { options = (0, _utils.normalizeDataSourceOptions)(options); this._eventsStrategy = new _events_strategy.EventsStrategy(this, { syncStrategy: true }); this._store = options.store; this._changedTime = 0; const needThrottling = 0 !== options.pushAggregationTimeout; if (needThrottling) { const throttlingTimeout = void 0 === options.pushAggregationTimeout ? () => 5 * this._changedTime : options.pushAggregationTimeout; let pushDeferred; let lastPushWaiters; const throttlingPushHandler = (0, _utils2.throttleChanges)((changes => { pushDeferred.resolve(); const storePushPending = (0, _deferred.when)(...lastPushWaiters); storePushPending.done((() => this._onPush(changes))); lastPushWaiters = void 0; pushDeferred = void 0 }), throttlingTimeout); this._onPushHandler = args => { this._aggregationTimeoutId = throttlingPushHandler(args.changes); if (!pushDeferred) { pushDeferred = new _deferred.Deferred } lastPushWaiters = args.waitFor; args.waitFor.push(pushDeferred.promise()) }; this._store.on("beforePushAggregation", this._onPushHandler) } else { this._onPushHandler = changes => this._onPush(changes); this._store.on("push", this._onPushHandler) } this._storeLoadOptions = this._extractLoadOptions(options); this._mapFunc = options.map; this._postProcessFunc = options.postProcess; this._pageIndex = void 0 !== options.pageIndex ? options.pageIndex : 0; this._pageSize = void 0 !== options.pageSize ? options.pageSize : 20; this._loadingCount = 0; this._loadQueue = this._createLoadQueue(); this._searchValue = "searchValue" in options ? options.searchValue : null; this._searchOperation = options.searchOperation || "contains"; this._searchExpr = options.searchExpr; this._paginate = options.paginate; this._reshapeOnPush = options.reshapeOnPush ?? false; (0, _iterator.each)(["onChanged", "onLoadError", "onLoadingChanged", "onCustomizeLoadResult", "onCustomizeStoreLoadOptions"], ((_, optionName) => { if (optionName in options) { this.on(optionName.substr(2, 1).toLowerCase() + optionName.substr(3), options[optionName]) } })); this._operationManager = new _operation_manager.default; this._init() }, _init() { this._items = []; this._userData = {}; this._totalCount = -1; this._isLoaded = false; if (!(0, _type.isDefined)(this._paginate)) { this._paginate = !this.group() } this._isLastPage = !this._paginate }, dispose() { var _this$_delayedLoadTas; this._store.off("beforePushAggregation", this._onPushHandler); this._store.off("push", this._onPushHandler); this._eventsStrategy.dispose(); clearTimeout(this._aggregationTimeoutId); null === (_this$_delayedLoadTas = this._delayedLoadTask) || void 0 === _this$_delayedLoadTas || _this$_delayedLoadTas.abort(); this._operationManager.cancelAll(); delete this._store; delete this._items; delete this._delayedLoadTask; this._disposed = true }, _extractLoadOptions(options) { const result = {}; let names = ["sort", "filter", "langParams", "select", "group", "requireTotalCount"]; const customNames = this._store._customLoadOptions(); if (customNames) { names = names.concat(customNames) }(0, _iterator.each)(names, (function() { result[this] = options[this] })); return result }, loadOptions() { return this._storeLoadOptions }, items() { return this._items }, pageIndex(newIndex) { if (!(0, _type.isNumeric)(newIndex)) { return this._pageIndex } this._pageIndex = newIndex; this._isLastPage = !this._paginate }, paginate(value) { if (!(0, _type.isBoolean)(value)) { return this._paginate } if (this._paginate !== value) { this._paginate = value; this.pageIndex(0) } }, pageSize(value) { if (!(0, _type.isNumeric)(value)) { return this._pageSize } this._pageSize = value }, isLastPage() { return this._isLastPage }, generateStoreLoadOptionAccessor(optionName) { return args => { const normalizedArgs = (0, _utils.normalizeStoreLoadOptionAccessorArguments)(args); if (void 0 === normalizedArgs) { return this._storeLoadOptions[optionName] } this._storeLoadOptions[optionName] = normalizedArgs } }, sort() { for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { args[_key] = arguments[_key] } return this.generateStoreLoadOptionAccessor("sort")(args) }, filter() { const newFilter = (0, _utils.normalizeStoreLoadOptionAccessorArguments)(arguments); if (void 0 === newFilter) { return this._storeLoadOptions.filter } this._storeLoadOptions.filter = newFilter; this.pageIndex(0) }, group() { for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) { args[_key2] = arguments[_key2] } return this.generateStoreLoadOptionAccessor("group")(args) }, select() { for (var _len3 = arguments.length, args = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) { args[_key3] = arguments[_key3] } return this.generateStoreLoadOptionAccessor("select")(args) }, requireTotalCount(value) { if (!(0, _type.isBoolean)(value)) { return this._storeLoadOptions.requireTotalCount } this._storeLoadOptions.requireTotalCount = value }, searchValue(value) { if (arguments.length < 1) { return this._searchValue } this._searchValue = value; this.pageIndex(0) }, searchOperation(op) { if (!(0, _type.isString)(op)) { return this._searchOperation } this._searchOperation = op; this.pageIndex(0) }, searchExpr(expr) { const argc = arguments.length; if (0 === argc) { return this._searchExpr } if (argc > 1) { expr = [].slice.call(arguments) } this._searchExpr = expr; this.pageIndex(0) }, store() { return this._store }, key() { var _this$_store; return null === (_this$_store = this._store) || void 0 === _this$_store ? void 0 : _this$_store.key() }, totalCount() { return this._totalCount }, isLoaded() { return this._isLoaded }, isLoading() { return this._loadingCount > 0 }, beginLoading() { this._changeLoadingCount(1) }, endLoading() { this._changeLoadingCount(-1) }, _createLoadQueue: () => (0, _queue.create)(), _changeLoadingCount(increment) { const oldLoading = this.isLoading(); this._loadingCount += increment; const newLoading = this.isLoading(); if (oldLoading ^ newLoading) { this._eventsStrategy.fireEvent("loadingChanged", [newLoading]) } }, _scheduleLoadCallbacks(deferred) { this.beginLoading(); deferred.always((() => { this.endLoading() })) }, _scheduleFailCallbacks(deferred) { var _this = this; deferred.fail((function() { for (var _len4 = arguments.length, args = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) { args[_key4] = arguments[_key4] } if (args[0] === _utils.CANCELED_TOKEN) { return } _this._eventsStrategy.fireEvent("loadError", args) })) }, _fireChanged(args) { const date = new Date; this._eventsStrategy.fireEvent("changed", args); this._changedTime = new Date - date }, _scheduleChangedCallbacks(deferred) { deferred.done((() => this._fireChanged())) }, loadSingle(propName, propValue) { const d = new _deferred.Deferred; const key = this.key(); const store = this._store; const options = this._createStoreLoadOptions(); this._scheduleFailCallbacks(d); if (arguments.length < 2) { propValue = propName; propName = key } delete options.skip; delete options.group; delete options.refresh; delete options.pageIndex; delete options.searchString; (() => { if (propName === key || store instanceof _custom_store.CustomStore && !store._byKeyViaLoad()) { return store.byKey(propValue, options) } options.take = 1; options.filter = options.filter ? [options.filter, [propName, propValue]] : [propName, propValue]; return store.load(options) })().fail(d.reject).done((data => { const isEmptyArray = Array.isArray(data) && !data.length; if (!(0, _type.isDefined)(data) || isEmptyArray) { d.reject(_errors.errors.Error("E4009")) } else { if (!Array.isArray(data)) { data = [data] } d.resolve(this._applyMapFunction(data)[0]) } })); return d.promise() }, load() { const d = new _deferred.Deferred; const loadTask = () => { if (this._disposed) { return } if (!(0, _utils.isPending)(d)) { return } return this._loadFromStore(loadOperation, d) }; this._scheduleLoadCallbacks(d); this._scheduleFailCallbacks(d); this._scheduleChangedCallbacks(d); const loadOperation = this._createLoadOperation(d); this._eventsStrategy.fireEvent("customizeStoreLoadOptions", [loadOperation]); this._loadQueue.add((() => { if ("number" === typeof loadOperation.delay) { this._delayedLoadTask = _m_common.default.executeAsync(loadTask, loadOperation.delay) } else { loadTask() } return d.promise() })); return d.promise({ operationId: loadOperation.operationId }) }, _onPush(changes) { if (this._reshapeOnPush) { this.load() } else { const changingArgs = { changes: changes }; this._eventsStrategy.fireEvent("changing", [changingArgs]); const group = this.group(); const items = this.items(); let groupLevel = 0; let dataSourceChanges = this.paginate() || group ? changes.filter((item => "update" === item.type)) : changes; if (group) { groupLevel = Array.isArray(group) ? group.length : 1 } if (this._mapFunc) { dataSourceChanges.forEach((item => { if ("insert" === item.type) { item.data = this._mapFunc(item.data) } })) } if (changingArgs.postProcessChanges) { dataSourceChanges = changingArgs.postProcessChanges(dataSourceChanges) }(0, _array_utils.applyBatch)({ keyInfo: this.store(), data: items, changes: dataSourceChanges, groupCount: groupLevel, useInsertIndex: true }); this._fireChanged([{ changes: changes }]) } }, _createLoadOperation(deferred) { const operationId = this._operationManager.add(deferred); const storeLoadOptions = this._createStoreLoadOptions(); if (this._store && !(0, _type.isEmptyObject)(null === storeLoadOptions || void 0 === storeLoadOptions ? void 0 : storeLoadOptions.langParams)) { this._store._langParams = _extends({}, this._store._langParams, storeLoadOptions.langParams) } deferred.always((() => this._operationManager.remove(operationId))); return { operationId: operationId, storeLoadOptions: storeLoadOptions } }, reload() { const store = this.store(); store._clearCache(); this._init(); return this.load() }, cancel(operationId) { return this._operationManager.cancel(operationId) }, cancelAll() { return this._operationManager.cancelAll() }, _addSearchOptions(storeLoadOptions) { if (this._disposed) { return } if (this.store()._useDefaultSearch) { this._addSearchFilter(storeLoadOptions) } else { storeLoadOptions.searchOperation = this._searchOperation; storeLoadOptions.searchValue = this._searchValue; storeLoadOptions.searchExpr = this._searchExpr } }, _createStoreLoadOptions() { const result = (0, _extend.extend)({}, this._storeLoadOptions); this._addSearchOptions(result); if (this._paginate) { if (this._pageSize) { result.skip = this._pageIndex * this._pageSize; result.take = this._pageSize } } result.userData = this._userData; return result }, _addSearchFilter(storeLoadOptions) { const value = this._searchValue; const op = this._searchOperation; let selector = this._searchExpr; const searchFilter = []; if (!value) { return } if (!selector) { selector = "this" } if (!Array.isArray(selector)) { selector = [selector] }(0, _iterator.each)(selector, ((i, item) => { if (searchFilter.length) { searchFilter.push("or") } searchFilter.push([item, op, value]) })); if (storeLoadOptions.filter) { storeLoadOptions.filter = [searchFilter, storeLoadOptions.filter] } else { storeLoadOptions.filter = searchFilter } }, _loadFromStore(loadOptions, pendingDeferred) { const handleSuccess = (data, extra) => { if (this._disposed) { return } if (!(0, _utils.isPending)(pendingDeferred)) { return } const loadResult = (0, _extend.extend)((0, _utils.normalizeLoadResult)(data, extra), loadOptions); this._eventsStrategy.fireEvent("customizeLoadResult", [loadResult]); (0, _deferred.when)(loadResult.data).done((data => { loadResult.data = data; this._processStoreLoadResult(loadResult, pendingDeferred) })).fail(pendingDeferred.reject) }; if (loadOptions.data) { return (new _deferred.Deferred).resolve(loadOptions.data).done(handleSuccess) } return this.store().load(loadOptions.storeLoadOptions).done(handleSuccess).fail(pendingDeferred.reject) }, _processStoreLoadResult(loadResult, pendingDeferred) { let { data: data } = loadResult; let { extra: extra } = loadResult; const { storeLoadOptions: storeLoadOptions } = loadResult; const resolvePendingDeferred = () => { this._isLoaded = true; this._totalCount = isFinite(extra.totalCount) ? extra.totalCount : -1; return pendingDeferred.resolve(data, extra) }; const proceedLoadingTotalCount = () => { this.store().totalCount(storeLoadOptions).done((count => { extra.totalCount = count; resolvePendingDeferred() })).fail(pendingDeferred.reject) }; if (this._disposed) { return } data = this._applyPostProcessFunction(this._applyMapFunction(data)); if (!(0, _type.isObject)(extra)) { extra = {} } this._items = data; if (!data.length || !this._paginate || this._pageSize && data.length < this._pageSize) { this._isLastPage = true } if (storeLoadOptions.requireTotalCount && !isFinite(extra.totalCount)) { proceedLoadingTotalCount() } else { resolvePendingDeferred() } }, _applyMapFunction(data) { if (this._mapFunc) { return (0, _utils.mapDataRespectingGrouping)(data, this._mapFunc, this.group()) } return data }, _applyPostProcessFunction(data) { if (this._postProcessFunc) { return this._postProcessFunc(data) } return data }, on(eventName, eventHandler) { this._eventsStrategy.on(eventName, eventHandler); return this }, off(eventName, eventHandler) { this._eventsStrategy.off(eventName, eventHandler); return this } }) }, 9427: /*!************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/data/data_source/m_operation_manager.js ***! \************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _utils = __webpack_require__( /*! ../../../common/data/data_source/utils */ 97169); exports.default = class { constructor() { this._counter = -1; this._deferreds = {} } add(deferred) { this._counter++; this._deferreds[this._counter] = deferred; return this._counter } remove(operationId) { return delete this._deferreds[operationId] } cancel(operationId) { if (operationId in this._deferreds) { this._deferreds[operationId].reject(_utils.CANCELED_TOKEN); return true } return false } cancelAll() { while (this._counter > -1) { this.cancel(this._counter); this._counter-- } } } }, 23923: /*!************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/data/data_source/m_utils.js ***! \************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.normalizeStoreLoadOptionAccessorArguments = exports.normalizeLoadResult = exports.normalizeDataSourceOptions = exports.mapDataRespectingGrouping = exports.isPending = exports.CANCELED_TOKEN = void 0; var _array_store = _interopRequireDefault(__webpack_require__( /*! ../../../common/data/array_store */ 80556)); var _custom_store = __webpack_require__( /*! ../../../common/data/custom_store */ 63326); var _utils = __webpack_require__( /*! ../../../common/data/utils */ 89358); var _ajax = _interopRequireDefault(__webpack_require__( /*! ../../../core/utils/ajax */ 78670)); var _extend = __webpack_require__( /*! ../../../core/utils/extend */ 52576); var _iterator = __webpack_require__( /*! ../../../core/utils/iterator */ 21274); var _type = __webpack_require__( /*! ../../../core/utils/type */ 11528); var _abstract_store = _interopRequireDefault(__webpack_require__( /*! ../../../data/abstract_store */ 77735)); const _excluded = ["items"]; function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } function _extends() { return _extends = Object.assign ? Object.assign.bind() : function(n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) { ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]) } } return n }, _extends.apply(null, arguments) } exports.CANCELED_TOKEN = "canceled"; exports.isPending = deferred => "pending" === deferred.state(); exports.normalizeStoreLoadOptionAccessorArguments = originalArguments => { switch (originalArguments.length) { case 0: return; case 1: return originalArguments[0] } return [].slice.call(originalArguments) }; const mapRecursive = (items, level, mapper) => { if (!Array.isArray(items)) { return items } return level ? ((group, level, mapper) => (0, _iterator.map)(group, (item => { const restItem = function(r, e) { if (null == r) { return {} } var t = {}; for (var n in r) { if ({}.hasOwnProperty.call(r, n)) { if (e.includes(n)) { continue } t[n] = r[n] } } return t }(item, _excluded); return _extends({}, restItem, { items: mapRecursive(item.items, level - 1, mapper) }) })))(items, level, mapper) : (0, _iterator.map)(items, mapper) }; exports.mapDataRespectingGrouping = (items, mapper, groupInfo) => { const level = groupInfo ? (0, _utils.normalizeSortingInfo)(groupInfo).length : 0; return mapRecursive(items, level, mapper) }; exports.normalizeLoadResult = (data, extra) => { var _data; if (null !== (_data = data) && void 0 !== _data && _data.data) { extra = data; data = data.data } if (!Array.isArray(data)) { data = [data] } return { data: data, extra: extra } }; const createCustomStoreFromLoadFunc = options => { const storeConfig = {}; (0, _iterator.each)(["useDefaultSearch", "key", "load", "loadMode", "cacheRawData", "byKey", "lookup", "totalCount", "insert", "update", "remove"], (function() { storeConfig[this] = options[this]; delete options[this] })); return new _custom_store.CustomStore(storeConfig) }; const createCustomStoreFromUrl = (url, normalizationOptions) => new _custom_store.CustomStore({ load: () => _ajax.default.sendRequest({ url: url, dataType: "json" }), loadMode: null === normalizationOptions || void 0 === normalizationOptions ? void 0 : normalizationOptions.fromUrlLoadMode }); exports.normalizeDataSourceOptions = (options, normalizationOptions) => { let store; if ("string" === typeof options) { options = { paginate: false, store: createCustomStoreFromUrl(options, normalizationOptions) } } if (void 0 === options) { options = [] } if (Array.isArray(options) || options instanceof _abstract_store.default) { options = { store: options } } else { options = (0, _extend.extend)({}, options) } if (void 0 === options.store) { options.store = [] } store = options.store; if ("load" in options) { store = createCustomStoreFromLoadFunc(options) } else if (Array.isArray(store)) { store = new _array_store.default(store) } else if ((0, _type.isPlainObject)(store)) { store = (storeConfig => { const alias = storeConfig.type; delete storeConfig.type; return _abstract_store.default.create(alias, storeConfig) })((0, _extend.extend)({}, store)) } options.store = store; return options } }, 1773: /*!*********************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/data/m_abstract_store.js ***! \*********************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _errors = __webpack_require__( /*! ../../common/data/errors */ 82812); var _store_helper = _interopRequireDefault(__webpack_require__( /*! ../../common/data/store_helper */ 66177)); var _utils = __webpack_require__( /*! ../../common/data/utils */ 89358); var _class = _interopRequireDefault(__webpack_require__( /*! ../../core/class */ 55620)); var _events_strategy = __webpack_require__( /*! ../../core/events_strategy */ 2607); var _common = __webpack_require__( /*! ../../core/utils/common */ 17781); var _data = __webpack_require__( /*! ../../core/utils/data */ 31e3); var _deferred = __webpack_require__( /*! ../../core/utils/deferred */ 87739); var _iterator = __webpack_require__( /*! ../../core/utils/iterator */ 21274); var _type = __webpack_require__( /*! ../../core/utils/type */ 11528); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } function _extends() { return _extends = Object.assign ? Object.assign.bind() : function(n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) { ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]) } } return n }, _extends.apply(null, arguments) } const { abstract: abstract } = _class.default; const { queryByOptions: queryByOptions } = _store_helper.default; const storeImpl = {}; const Store = _class.default.inherit({ _langParams: {}, ctor(options) { const that = this; options = options || {}; this._eventsStrategy = new _events_strategy.EventsStrategy(this); (0, _iterator.each)(["onLoaded", "onLoading", "onInserted", "onInserting", "onUpdated", "onUpdating", "onPush", "onRemoved", "onRemoving", "onModified", "onModifying"], ((_, optionName) => { if (optionName in options) { that.on(optionName.slice(2).toLowerCase(), options[optionName]) } })); this._key = options.key; this._errorHandler = options.errorHandler; this._useDefaultSearch = true }, _clearCache: _common.noop, _customLoadOptions: () => null, key() { return this._key }, keyOf(obj) { if (!this._keyGetter) { this._keyGetter = (0, _data.compileGetter)(this.key()) } return this._keyGetter(obj) }, _requireKey() { if (!this.key()) { throw _errors.errors.Error("E4005") } }, load(options) { const that = this; options = options || {}; this._eventsStrategy.fireEvent("loading", [options]); return this._withLock(this._loadImpl(options)).done((result => { that._eventsStrategy.fireEvent("loaded", [result, options]) })) }, _loadImpl(options) { if (!(0, _type.isEmptyObject)(this._langParams)) { options = options || {}; options._langParams = _extends({}, this._langParams, options._langParams) } return queryByOptions(this.createQuery(options), options).enumerate() }, _withLock(task) { const result = new _deferred.Deferred; task.done((function() { const that = this; const args = arguments; _utils.processRequestResultLock.promise().done((() => { result.resolveWith(that, args) })) })).fail((function() { result.rejectWith(this, arguments) })); return result }, createQuery: abstract, totalCount(options) { return this._totalCountImpl(options) }, _totalCountImpl(options) { return queryByOptions(this.createQuery(options), options, true).count() }, byKey(key, extraOptions) { return this._addFailHandlers(this._withLock(this._byKeyImpl(key, extraOptions))) }, _byKeyImpl: abstract, insert(values) { const that = this; that._eventsStrategy.fireEvent("modifying"); that._eventsStrategy.fireEvent("inserting", [values]); return that._addFailHandlers(that._insertImpl(values).done(((callbackValues, callbackKey) => { that._eventsStrategy.fireEvent("inserted", [callbackValues, callbackKey]); that._eventsStrategy.fireEvent("modified") }))) }, _insertImpl: abstract, update(key, values) { const that = this; that._eventsStrategy.fireEvent("modifying"); that._eventsStrategy.fireEvent("updating", [key, values]); return that._addFailHandlers(that._updateImpl(key, values).done((() => { that._eventsStrategy.fireEvent("updated", [key, values]); that._eventsStrategy.fireEvent("modified") }))) }, _updateImpl: abstract, push(changes) { const beforePushArgs = { changes: changes, waitFor: [] }; this._eventsStrategy.fireEvent("beforePushAggregation", [beforePushArgs]); (0, _deferred.when)(...beforePushArgs.waitFor).done((() => { this._pushImpl(changes); this._eventsStrategy.fireEvent("beforePush", [{ changes: changes }]); this._eventsStrategy.fireEvent("push", [changes]) })) }, _pushImpl: _common.noop, remove(key) { const that = this; that._eventsStrategy.fireEvent("modifying"); that._eventsStrategy.fireEvent("removing", [key]); return that._addFailHandlers(that._removeImpl(key).done((callbackKey => { that._eventsStrategy.fireEvent("removed", [callbackKey]); that._eventsStrategy.fireEvent("modified") }))) }, _removeImpl: abstract, _addFailHandlers(deferred) { return deferred.fail(this._errorHandler).fail(_errors.handleError) }, on(eventName, eventHandler) { this._eventsStrategy.on(eventName, eventHandler); return this }, off(eventName, eventHandler) { this._eventsStrategy.off(eventName, eventHandler); return this } }); Store.create = function(alias, options) { if (!(alias in storeImpl)) { throw _errors.errors.Error("E4020", alias) } return new storeImpl[alias](options) }; Store.registerClass = function(type, alias) { if (alias) { storeImpl[alias] = type } return type }; Store.inherit = (inheritor = Store.inherit, function(members, alias) { const type = inheritor.apply(this, [members]); Store.registerClass(type, alias); return type }); var inheritor; exports.default = Store }, 79587: /*!******************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/data/m_array_query.js ***! \******************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _errors = __webpack_require__( /*! ../../common/data/errors */ 82812); var _utils = __webpack_require__( /*! ../../common/data/utils */ 89358); var _class = (e = __webpack_require__( /*! ../../core/class */ 55620), e && e.__esModule ? e : { default: e }); var e; var _data = __webpack_require__( /*! ../../core/utils/data */ 31e3); var _deferred = __webpack_require__( /*! ../../core/utils/deferred */ 87739); var _iterator = __webpack_require__( /*! ../../core/utils/iterator */ 21274); var _type = __webpack_require__( /*! ../../core/utils/type */ 11528); const Iterator = _class.default.inherit({ toArray() { const result = []; this.reset(); while (this.next()) { result.push(this.current()) } return result }, countable: () => false }); const ArrayIterator = Iterator.inherit({ ctor(array) { this.array = array; this.index = -1 }, next() { if (this.index + 1 < this.array.length) { this.index++; return true } return false }, current() { return this.array[this.index] }, reset() { this.index = -1 }, toArray() { return this.array.slice(0) }, countable: () => true, count() { return this.array.length } }); const WrappedIterator = Iterator.inherit({ ctor(iter) { this.iter = iter }, next() { return this.iter.next() }, current() { return this.iter.current() }, reset() { return this.iter.reset() } }); const MapIterator = WrappedIterator.inherit({ ctor(iter, mapper) { this.callBase(iter); this.index = -1; this.mapper = mapper }, current() { return this.mapper(this.callBase(), this.index) }, next() { const hasNext = this.callBase(); if (hasNext) { this.index++ } return hasNext } }); const SortIterator = Iterator.inherit({ ctor(iter, getter, desc, compare) { this.langParams = iter.langParams; if (!(iter instanceof MapIterator)) { iter = new MapIterator(iter, this._wrap); iter.langParams = this.langParams } this.iter = iter; this.rules = [{ getter: getter, desc: desc, compare: compare, langParams: this.langParams }] }, thenBy(getter, desc, compare) { const result = new SortIterator(this.sortedIter || this.iter, getter, desc, compare); if (!this.sortedIter) { result.rules = this.rules.concat(result.rules) } return result }, next() { this._ensureSorted(); return this.sortedIter.next() }, current() { this._ensureSorted(); return this.sortedIter.current() }, reset() { delete this.sortedIter }, countable() { return this.sortedIter || this.iter.countable() }, count() { if (this.sortedIter) { return this.sortedIter.count() } return this.iter.count() }, _ensureSorted() { const that = this; if (that.sortedIter) { return }(0, _iterator.each)(that.rules, (function() { this.getter = (0, _data.compileGetter)(this.getter) })); that.sortedIter = new MapIterator(new ArrayIterator(this.iter.toArray().sort(((x, y) => that._compare(x, y)))), that._unwrap) }, _wrap: (record, index) => ({ index: index, value: record }), _unwrap: wrappedItem => wrappedItem.value, _getDefaultCompare: langParams => (xValue, yValue) => function(xValue, yValue, options) { if ((0, _type.isString)(xValue) && (0, _type.isString)(yValue) && (null !== options && void 0 !== options && options.locale || null !== options && void 0 !== options && options.collatorOptions)) { return new Intl.Collator((null === options || void 0 === options ? void 0 : options.locale) || void 0, (null === options || void 0 === options ? void 0 : options.collatorOptions) || void 0).compare(xValue, yValue) } xValue = (0, _data.toComparable)(xValue, false, options); yValue = (0, _data.toComparable)(yValue, false, options); if (null === xValue && null !== yValue) { return -1 } if (null !== xValue && null === yValue) { return 1 } if (void 0 === xValue && void 0 !== yValue) { return 1 } if (void 0 !== xValue && void 0 === yValue) { return -1 } if (xValue < yValue) { return -1 } if (xValue > yValue) { return 1 } return 0 }(xValue, yValue, langParams), _compare(x, y) { const xIndex = x.index; const yIndex = y.index; x = x.value; y = y.value; if (x === y) { return xIndex - yIndex } for (let i = 0, rulesCount = this.rules.length; i < rulesCount; i++) { const rule = this.rules[i]; const xValue = rule.getter(x); const yValue = rule.getter(y); const compare = rule.compare || this._getDefaultCompare(rule.langParams); const compareResult = compare(xValue, yValue); if (compareResult) { return rule.desc ? -compareResult : compareResult } } return xIndex - yIndex } }); const compileCriteria = function() { let langParams = {}; const _toComparable = value => (0, _data.toComparable)(value, false, langParams); const compileGroup = function(crit) { if ((0, _utils.isUniformEqualsByOr)(crit)) { return (crit => { const getter = (0, _data.compileGetter)(crit[0][0]); const filterValues = crit.reduce(((acc, item, i) => { if (i % 2 === 0) { acc.push(_toComparable(item[2])) } return acc }), []); return obj => { const value = _toComparable(getter(obj)); return filterValues.some((filterValue => useStrictComparison(filterValue) ? value === filterValue : value == filterValue)) } })(crit) } const ops = []; let isConjunctiveOperator = false; let isConjunctiveNextOperator = false; (0, _iterator.each)(crit, (function() { if (Array.isArray(this) || (0, _type.isFunction)(this)) { if (ops.length > 1 && isConjunctiveOperator !== isConjunctiveNextOperator) { throw _errors.errors.Error("E4019") } ops.push(compileCriteria(this, langParams)); isConjunctiveOperator = isConjunctiveNextOperator; isConjunctiveNextOperator = true } else { isConjunctiveNextOperator = (0, _utils.isConjunctiveOperator)(this) } })); return function(d) { let result = isConjunctiveOperator; for (let i = 0; i < ops.length; i++) { if (ops[i](d) !== isConjunctiveOperator) { result = !isConjunctiveOperator; break } } return result } }; const toString = function(value) { var _langParams; return (0, _type.isDefined)(value) ? null !== (_langParams = langParams) && void 0 !== _langParams && _langParams.locale ? value.toLocaleString(langParams.locale) : value.toString() : "" }; function compileEquals(getter, value, negate) { return function(obj) { obj = _toComparable(getter(obj)); let result = useStrictComparison(value) ? obj === value : obj == value; if (negate) { result = !result } return result } } function useStrictComparison(value) { return "" === value || 0 === value || false === value } return function(crit, options) { langParams = options || {}; if ((0, _type.isFunction)(crit)) { return crit } if ((0, _utils.isGroupCriterion)(crit)) { return compileGroup(crit) } if ((0, _utils.isUnaryOperation)(crit)) { return function(crit) { const op = crit[0]; const criteria = compileCriteria(crit[1], langParams); if ("!" === op) { return function(obj) { return !criteria(obj) } } throw _errors.errors.Error("E4003", op) }(crit) } return function(crit) { crit = (0, _utils.normalizeBinaryCriterion)(crit); const getter = (0, _data.compileGetter)(crit[0]); const op = crit[1]; let value = crit[2]; value = _toComparable(value); const compare = (obj, operatorFn) => { obj = _toComparable(getter(obj)); return (null == value || null == obj) && value !== obj ? false : operatorFn(obj, value) }; switch (op.toLowerCase()) { case "=": return compileEquals(getter, value); case "<>": return compileEquals(getter, value, true); case ">": return obj => compare(obj, ((a, b) => a > b)); case "<": return obj => compare(obj, ((a, b) => a < b)); case ">=": return obj => compare(obj, ((a, b) => a >= b)); case "<=": return obj => compare(obj, ((a, b) => a <= b)); case "startswith": return obj => _toComparable(toString(getter(obj))).startsWith(value); case "endswith": return obj => _toComparable(toString(getter(obj))).endsWith(value); case "contains": return obj => _toComparable(toString(getter(obj))).includes(value); case "notcontains": return obj => !_toComparable(toString(getter(obj))).includes(value) } throw _errors.errors.Error("E4003", op) }(crit) } }(); const FilterIterator = WrappedIterator.inherit({ ctor(iter, criteria) { this.callBase(iter); this.langParams = iter.langParams; this.criteria = compileCriteria(criteria, this.langParams) }, next() { while (this.iter.next()) { if (this.criteria(this.current())) { return true } } return false } }); const GroupIterator = Iterator.inherit({ ctor(iter, getter) { this.iter = iter; this.getter = getter }, next() { this._ensureGrouped(); return this.groupedIter.next() }, current() { this._ensureGrouped(); return this.groupedIter.current() }, reset() { delete this.groupedIter }, countable() { return !!this.groupedIter }, count() { return this.groupedIter.count() }, _ensureGrouped() { if (this.groupedIter) { return } const hash = {}; const keys = []; const { iter: iter } = this; const getter = (0, _data.compileGetter)(this.getter); iter.reset(); while (iter.next()) { const current = iter.current(); const key = getter(current); if (key in hash) { hash[key].push(current) } else { hash[key] = [current]; keys.push(key) } } this.groupedIter = new ArrayIterator((0, _iterator.map)(keys, (key => ({ key: key, items: hash[key] })))) } }); const SelectIterator = WrappedIterator.inherit({ ctor(iter, getter) { this.callBase(iter); this.getter = (0, _data.compileGetter)(getter) }, current() { return this.getter(this.callBase()) }, countable() { return this.iter.countable() }, count() { return this.iter.count() } }); const SliceIterator = WrappedIterator.inherit({ ctor(iter, skip, take) { this.callBase(iter); this.skip = Math.max(0, skip); this.take = Math.max(0, take); this.pos = 0 }, next() { if (this.pos >= this.skip + this.take) { return false } while (this.pos < this.skip && this.iter.next()) { this.pos++ } this.pos++; return this.iter.next() }, reset() { this.callBase(); this.pos = 0 }, countable() { return this.iter.countable() }, count() { return Math.min(this.iter.count() - this.skip, this.take) } }); const arrayQueryImpl = function(iter, queryOptions) { queryOptions = queryOptions || {}; if (!(iter instanceof Iterator)) { iter = new ArrayIterator(iter) } if (queryOptions.langParams) { iter.langParams = queryOptions.langParams } const handleError = function(error) { const handler = queryOptions.errorHandler; if (handler) { handler(error) }(0, _errors.handleError)(error) }; const aggregateCore = function(aggregator) { const d = (new _deferred.Deferred).fail(handleError); let seed; const { step: step } = aggregator; const { finalize: finalize } = aggregator; try { iter.reset(); if ("seed" in aggregator) { seed = aggregator.seed } else { seed = iter.next() ? iter.current() : NaN } let accumulator = seed; while (iter.next()) { accumulator = step(accumulator, iter.current()) } d.resolve(finalize ? finalize(accumulator) : accumulator) } catch (x) { d.reject(x) } return d.promise() }; const standardAggregate = function(name) { return aggregateCore(_utils.aggregators[name]) }; const select = function(getter) { if (!(0, _type.isFunction)(getter) && !Array.isArray(getter)) { getter = [].slice.call(arguments) } return chainQuery(new SelectIterator(iter, getter)) }; const selectProp = function(name) { return select((0, _data.compileGetter)(name)) }; function chainQuery(iter) { return arrayQueryImpl(iter, queryOptions) } return { toArray: () => iter.toArray(), enumerate() { const d = (new _deferred.Deferred).fail(handleError); try { d.resolve(iter.toArray()) } catch (x) { d.reject(x) } return d.promise() }, setLangParams(options) { iter.langParams = options }, sortBy: (getter, desc, compare) => chainQuery(new SortIterator(iter, getter, desc, compare)), thenBy(getter, desc, compare) { if (iter instanceof SortIterator) { return chainQuery(iter.thenBy(getter, desc, compare)) } throw _errors.errors.Error("E4004") }, filter(criteria) { if (!Array.isArray(criteria)) { criteria = [].slice.call(arguments) } return chainQuery(new FilterIterator(iter, criteria)) }, slice(skip, take) { if (void 0 === take) { take = Number.MAX_VALUE } return chainQuery(new SliceIterator(iter, skip, take)) }, select: select, groupBy: getter => chainQuery(new GroupIterator(iter, getter)), aggregate: function(seed, step, finalize) { if (arguments.length < 2) { return aggregateCore({ step: arguments[0] }) } return aggregateCore({ seed: seed, step: step, finalize: finalize }) }, count() { if (iter.countable()) { const d = (new _deferred.Deferred).fail(handleError); try { d.resolve(iter.count()) } catch (x) { d.reject(x) } return d.promise() } return standardAggregate("count") }, sum(getter) { if (getter) { return selectProp(getter).sum() } return standardAggregate("sum") }, min(getter) { if (getter) { return selectProp(getter).min() } return standardAggregate("min") }, max(getter) { if (getter) { return selectProp(getter).max() } return standardAggregate("max") }, avg(getter) { if (getter) { return selectProp(getter).avg() } return standardAggregate("avg") } } }; exports.default = arrayQueryImpl }, 11338: /*!******************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/data/m_array_store.js ***! \******************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _array_utils = __webpack_require__( /*! ../../common/data/array_utils */ 43792); var _errors = __webpack_require__( /*! ../../common/data/errors */ 82812); var _query = _interopRequireDefault(__webpack_require__( /*! ../../common/data/query */ 30771)); var _utils = __webpack_require__( /*! ../../common/data/utils */ 89358); var _abstract_store = _interopRequireDefault(__webpack_require__( /*! ../../data/abstract_store */ 77735)); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } const ArrayStore = _abstract_store.default.inherit({ ctor(options) { if (Array.isArray(options)) { options = { data: options } } else { options = options || {} } this.callBase(options); const initialArray = options.data; if (initialArray && !Array.isArray(initialArray)) { throw _errors.errors.Error("E4006") } this._array = initialArray || [] }, createQuery() { return (0, _query.default)(this._array, { errorHandler: this._errorHandler }) }, _byKeyImpl(key) { const index = (0, _array_utils.indexByKey)(this, this._array, key); if (-1 === index) { return (0, _utils.rejectedPromise)(_errors.errors.Error("E4009")) } return (0, _utils.trivialPromise)(this._array[index]) }, _insertImpl(values) { return (0, _array_utils.insert)(this, this._array, values) }, _pushImpl(changes) { (0, _array_utils.applyBatch)({ keyInfo: this, data: this._array, changes: changes }) }, _updateImpl(key, values) { return (0, _array_utils.update)(this, this._array, key, values) }, _removeImpl(key) { return (0, _array_utils.remove)(this, this._array, key) }, clear() { this._eventsStrategy.fireEvent("modifying"); this._array = []; this._eventsStrategy.fireEvent("modified") } }, "array"); exports.default = ArrayStore }, 3198: /*!******************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/data/m_array_utils.js ***! \******************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.applyBatch = applyBatch; exports.applyChanges = function(data, changes) { let options = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : {}; const { keyExpr: keyExpr = "id", immutable: immutable = true } = options; const keyGetter = (0, _data.compileGetter)(keyExpr); const keyInfo = { key: () => keyExpr, keyOf: obj => keyGetter(obj) }; return applyBatch({ keyInfo: keyInfo, data: data, changes: changes, immutable: immutable, disableCache: true, logError: true }) }; exports.createObjectWithChanges = createObjectWithChanges; exports.indexByKey = indexByKey; exports.insert = insert; exports.remove = remove; exports.update = update; var _errors = __webpack_require__( /*! ../../common/data/errors */ 82812); var _utils = __webpack_require__( /*! ../../common/data/utils */ 89358); var _config = _interopRequireDefault(__webpack_require__( /*! ../../core/config */ 66636)); var _guid = _interopRequireDefault(__webpack_require__( /*! ../../core/guid */ 19427)); var _data = __webpack_require__( /*! ../../core/utils/data */ 31e3); var _extend = __webpack_require__( /*! ../../core/utils/extend */ 52576); var _object = __webpack_require__( /*! ../../core/utils/object */ 22263); var _type = __webpack_require__( /*! ../../core/utils/type */ 11528); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } function _extends() { return _extends = Object.assign ? Object.assign.bind() : function(n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) { ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]) } } return n }, _extends.apply(null, arguments) } function findItems(keyInfo, items, key, groupCount) { let childItems; let result; if (groupCount) { for (let i = 0; i < items.length; i++) { childItems = items[i].items || items[i].collapsedItems || []; result = findItems(keyInfo, childItems || [], key, groupCount - 1); if (result) { return result } } } else if (indexByKey(keyInfo, items, key) >= 0) { return items } } function getItems(keyInfo, items, key, groupCount) { if (groupCount) { return findItems(keyInfo, items, key, groupCount) || [] } return items } function setDataByKeyMapValue(array, key, data) { if (array._dataByKeyMap) { array._dataByKeyMap[JSON.stringify(key)] = data; array._dataByKeyMapLength += data ? 1 : -1 } } function cloneInstanceWithChangedPaths(instance, changes, clonedInstances) { clonedInstances = clonedInstances || new WeakMap; const result = instance ? Object.create(Object.getPrototypeOf(instance)) : {}; if (instance) { clonedInstances.set(instance, result) } const instanceWithoutPrototype = _extends({}, instance); (0, _object.deepExtendArraySafe)(result, instanceWithoutPrototype, true, true, true); for (const name in instanceWithoutPrototype) { const value = instanceWithoutPrototype[name]; const change = null === changes || void 0 === changes ? void 0 : changes[name]; if ((0, _type.isObject)(value) && !(0, _type.isPlainObject)(value) && (0, _type.isObject)(change) && !clonedInstances.has(value)) { result[name] = cloneInstanceWithChangedPaths(value, change, clonedInstances) } } for (const name in result) { const prop = result[name]; if ((0, _type.isObject)(prop) && clonedInstances.has(prop)) { result[name] = clonedInstances.get(prop) } } return result } function createObjectWithChanges(target, changes) { const result = cloneInstanceWithChangedPaths(target, changes); return (0, _object.deepExtendArraySafe)(result, changes, true, true, true) } function applyBatch(_ref) { let { keyInfo: keyInfo, data: data, changes: changes, groupCount: groupCount, useInsertIndex: useInsertIndex, immutable: immutable, disableCache: disableCache, logError: logError, skipCopying: skipCopying } = _ref; const resultItems = true === immutable ? [...data] : data; changes.forEach((item => { const items = "insert" === item.type ? resultItems : getItems(keyInfo, resultItems, item.key, groupCount); !disableCache && function(keyInfo, array) { if (keyInfo.key() && (!array._dataByKeyMap || array._dataByKeyMapLength !== array.length)) { const dataByKeyMap = {}; const arrayLength = array.length; for (let i = 0; i < arrayLength; i++) { dataByKeyMap[JSON.stringify(keyInfo.keyOf(array[i]))] = array[i] } array._dataByKeyMap = dataByKeyMap; array._dataByKeyMapLength = arrayLength } }(keyInfo, items); switch (item.type) { case "update": update(keyInfo, items, item.key, item.data, true, immutable, logError); break; case "insert": insert(keyInfo, items, item.data, useInsertIndex && (0, _type.isDefined)(item.index) ? item.index : -1, true, logError, skipCopying); break; case "remove": remove(keyInfo, items, item.key, true, logError) } })); return resultItems } function getErrorResult(isBatch, logError, errorCode) { return !isBatch ? (0, _utils.rejectedPromise)(_errors.errors.Error(errorCode)) : logError && _errors.errors.log(errorCode) } function update(keyInfo, array, key, data, isBatch, immutable, logError) { let target; const keyExpr = keyInfo.key(); if (keyExpr) { if (function(target, keyOrKeys) { let key; const keys = "string" === typeof keyOrKeys ? keyOrKeys.split() : keyOrKeys.slice(); while (keys.length) { key = keys.shift(); if (key in target) { return true } } return false }(data, keyExpr) && !(0, _utils.keysEqual)(keyExpr, key, keyInfo.keyOf(data))) { return getErrorResult(isBatch, logError, "E4017") } target = function(array, key) { if (array._dataByKeyMap) { return array._dataByKeyMap[JSON.stringify(key)] } }(array, key); if (!target) { const index = indexByKey(keyInfo, array, key); if (index < 0) { return getErrorResult(isBatch, logError, "E4009") } target = array[index]; if (true === immutable && (0, _type.isDefined)(target)) { const newTarget = createObjectWithChanges(target, data); array[index] = newTarget; return !isBatch && (0, _utils.trivialPromise)(newTarget, key) } } } else { target = key }(0, _object.deepExtendArraySafe)(target, data, true, false, true, true); if (!isBatch) { if ((0, _config.default)().useLegacyStoreResult) { return (0, _utils.trivialPromise)(key, data) } return (0, _utils.trivialPromise)(target, key) } } function insert(keyInfo, array, data, index, isBatch, logError, skipCopying) { let keyValue; const keyExpr = keyInfo.key(); const obj = (0, _type.isPlainObject)(data) && !skipCopying ? (0, _extend.extend)({}, data) : data; if (keyExpr) { keyValue = keyInfo.keyOf(obj); if (void 0 === keyValue || "object" === typeof keyValue && (0, _type.isEmptyObject)(keyValue)) { if (Array.isArray(keyExpr)) { throw _errors.errors.Error("E4007") } keyValue = obj[keyExpr] = String(new _guid.default) } else if (void 0 !== array[indexByKey(keyInfo, array, keyValue)]) { return getErrorResult(isBatch, logError, "E4008") } } else { keyValue = obj } if (index >= 0) { array.splice(index, 0, obj) } else { array.push(obj) } setDataByKeyMapValue(array, keyValue, obj); if (!isBatch) { return (0, _utils.trivialPromise)((0, _config.default)().useLegacyStoreResult ? data : obj, keyValue) } } function remove(keyInfo, array, key, isBatch, logError) { const index = indexByKey(keyInfo, array, key); if (index > -1) { array.splice(index, 1); setDataByKeyMapValue(array, key, null) } if (!isBatch) { return (0, _utils.trivialPromise)(key) } if (index < 0) { return getErrorResult(isBatch, logError, "E4009") } } function indexByKey(keyInfo, array, key) { const keyExpr = keyInfo.key(); if (! function(array, key) { if (array._dataByKeyMap) { return array._dataByKeyMap[JSON.stringify(key)] } return true }(array, key)) { return -1 } for (let i = 0, arrayLength = array.length; i < arrayLength; i++) { if ((0, _utils.keysEqual)(keyExpr, keyInfo.keyOf(array[i]), key)) { return i } } return -1 } }, 12764: /*!*******************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/data/m_custom_store.js ***! \*******************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _array_query = _interopRequireDefault(__webpack_require__( /*! ../../common/data/array_query */ 65517)); var _array_utils = __webpack_require__( /*! ../../common/data/array_utils */ 43792); var _errors = __webpack_require__( /*! ../../common/data/errors */ 82812); var _store_helper = _interopRequireDefault(__webpack_require__( /*! ../../common/data/store_helper */ 66177)); var _utils = __webpack_require__( /*! ../../common/data/utils */ 89358); var _config = _interopRequireDefault(__webpack_require__( /*! ../../core/config */ 66636)); var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../core/renderer */ 64553)); var _deferred = __webpack_require__( /*! ../../core/utils/deferred */ 87739); var _type = __webpack_require__( /*! ../../core/utils/type */ 11528); var _abstract_store = _interopRequireDefault(__webpack_require__( /*! ../../data/abstract_store */ 77735)); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } function isPromise(obj) { return obj && (0, _type.isFunction)(obj.then) } function trivialPromise(value) { return (new _deferred.Deferred).resolve(value).promise() } function ensureRequiredFuncOption(name, obj) { if (!(0, _type.isFunction)(obj)) { throw _errors.errors.Error("E4011", name) } } function throwInvalidUserFuncResult(name) { throw _errors.errors.Error("E4012", name) } function createUserFuncFailureHandler(pendingDeferred) { return function(arg) { let error; if (arg instanceof Error) { error = arg } else { error = new Error(function(promiseArguments) { const xhr = promiseArguments[0]; const textStatus = promiseArguments[1]; if (!xhr || !xhr.getResponseHeader) { return null } return (0, _utils.errorMessageFromXhr)(xhr, textStatus) }(arguments) || arg && String(arg) || "Unknown error") } if (error.message !== _utils.XHR_ERROR_UNLOAD) { pendingDeferred.reject(error) } } } function invokeUserLoad(store, options) { const userFunc = store._loadFunc; let userResult; ensureRequiredFuncOption("load", userFunc); userResult = userFunc.apply(store, [options]); if (Array.isArray(userResult)) { userResult = trivialPromise(userResult) } else if (null === userResult || void 0 === userResult) { userResult = trivialPromise([]) } else if (!isPromise(userResult)) { throwInvalidUserFuncResult("load") } return (0, _deferred.fromPromise)(userResult) } function runRawLoad(pendingDeferred, store, userFuncOptions, continuation) { if (store.__rawData) { continuation(store.__rawData) } else { const loadPromise = store.__rawDataPromise || invokeUserLoad(store, userFuncOptions); if (store._cacheRawData) { store.__rawDataPromise = loadPromise } loadPromise.always((() => { delete store.__rawDataPromise })).done((rawData => { if (store._cacheRawData) { store.__rawData = rawData } continuation(rawData) })).fail((error => { var _store$_errorHandler; const userFuncFailureHandler = createUserFuncFailureHandler(pendingDeferred); null === (_store$_errorHandler = store._errorHandler) || void 0 === _store$_errorHandler || _store$_errorHandler.call(store, error); userFuncFailureHandler(error) })) } } function runRawLoadWithQuery(pendingDeferred, store, options, countOnly) { options = options || {}; const userFuncOptions = {}; if ("userData" in options) { userFuncOptions.userData = options.userData } runRawLoad(pendingDeferred, store, userFuncOptions, (rawData => { const rawDataQuery = (0, _array_query.default)(rawData, { errorHandler: store._errorHandler }); let itemsQuery; let totalCountQuery; const waitList = []; let items; let totalCount; if (!countOnly) { itemsQuery = _store_helper.default.queryByOptions(rawDataQuery, options); if (itemsQuery === rawDataQuery) { items = rawData.slice(0) } else { waitList.push(itemsQuery.enumerate().done((asyncResult => { items = asyncResult }))) } } if (options.requireTotalCount || countOnly) { totalCountQuery = _store_helper.default.queryByOptions(rawDataQuery, options, true); if (totalCountQuery === rawDataQuery) { totalCount = rawData.length } else { waitList.push(totalCountQuery.count().done((asyncResult => { totalCount = asyncResult }))) } } _deferred.when.apply(_renderer.default, waitList).done((() => { if (countOnly) { pendingDeferred.resolve(totalCount) } else if (options.requireTotalCount) { pendingDeferred.resolve(items, { totalCount: totalCount }) } else { pendingDeferred.resolve(items) } })).fail((x => { pendingDeferred.reject(x) })) })) } const CustomStore = _abstract_store.default.inherit({ ctor(options) { options = options || {}; this.callBase(options); this._useDefaultSearch = !!options.useDefaultSearch || "raw" === options.loadMode; this._loadMode = options.loadMode; this._cacheRawData = false !== options.cacheRawData; this._loadFunc = options.load; this._totalCountFunc = options.totalCount; this._byKeyFunc = options.byKey; this._insertFunc = options.insert; this._updateFunc = options.update; this._removeFunc = options.remove }, _clearCache() { delete this.__rawData }, createQuery() { throw _errors.errors.Error("E4010") }, clearRawDataCache() { this._clearCache() }, _totalCountImpl(options) { let d = new _deferred.Deferred; if ("raw" === this._loadMode && !this._totalCountFunc) { runRawLoadWithQuery(d, this, options, true) } else { (function(store, options) { const userFunc = store._totalCountFunc; let userResult; if (!(0, _type.isFunction)(userFunc)) { throw _errors.errors.Error("E4021") } userResult = userFunc.apply(store, [options]); if (!isPromise(userResult)) { userResult = Number(userResult); if (!isFinite(userResult)) { throwInvalidUserFuncResult("totalCount") } userResult = trivialPromise(userResult) } return (0, _deferred.fromPromise)(userResult) })(this, options).done((count => { d.resolve(Number(count)) })).fail(createUserFuncFailureHandler(d)); d = this._addFailHandlers(d) } return d.promise() }, _pushImpl(changes) { if (this.__rawData) { (0, _array_utils.applyBatch)({ keyInfo: this, data: this.__rawData, changes: changes }) } }, _loadImpl(options) { let d = new _deferred.Deferred; if ("raw" === this._loadMode) { runRawLoadWithQuery(d, this, options, false) } else { invokeUserLoad(this, options).done(((data, extra) => { d.resolve(data, extra) })).fail(createUserFuncFailureHandler(d)); d = this._addFailHandlers(d) } return d.promise() }, _byKeyImpl(key, extraOptions) { const d = new _deferred.Deferred; if (this._byKeyViaLoad()) { this._requireKey(); ! function(pendingDeferred, store, key) { runRawLoad(pendingDeferred, store, {}, (rawData => { const keyExpr = store.key(); let item; for (let i = 0, len = rawData.length; i < len; i++) { item = rawData[i]; if ((0, _utils.keysEqual)(keyExpr, store.keyOf(rawData[i]), key)) { pendingDeferred.resolve(item); return } } pendingDeferred.reject(_errors.errors.Error("E4009")) })) }(d, this, key) } else { (function(store, key, extraOptions) { const userFunc = store._byKeyFunc; let userResult; ensureRequiredFuncOption("byKey", userFunc); userResult = userFunc.apply(store, [key, extraOptions]); if (!isPromise(userResult)) { userResult = trivialPromise(userResult) } return (0, _deferred.fromPromise)(userResult) })(this, key, extraOptions).done((obj => { d.resolve(obj) })).fail(createUserFuncFailureHandler(d)) } return d.promise() }, _byKeyViaLoad() { return "raw" === this._loadMode && !this._byKeyFunc }, _insertImpl(values) { const that = this; const userFunc = that._insertFunc; let userResult; const d = new _deferred.Deferred; ensureRequiredFuncOption("insert", userFunc); userResult = userFunc.apply(that, [values]); if (!isPromise(userResult)) { userResult = trivialPromise(userResult) }(0, _deferred.fromPromise)(userResult).done((serverResponse => { if ((0, _config.default)().useLegacyStoreResult) { d.resolve(values, serverResponse) } else { d.resolve(serverResponse || values, that.keyOf(serverResponse)) } })).fail(createUserFuncFailureHandler(d)); return d.promise() }, _updateImpl(key, values) { const userFunc = this._updateFunc; let userResult; const d = new _deferred.Deferred; ensureRequiredFuncOption("update", userFunc); userResult = userFunc.apply(this, [key, values]); if (!isPromise(userResult)) { userResult = trivialPromise(userResult) }(0, _deferred.fromPromise)(userResult).done((serverResponse => { if ((0, _config.default)().useLegacyStoreResult) { d.resolve(key, values) } else { d.resolve(serverResponse || values, key) } })).fail(createUserFuncFailureHandler(d)); return d.promise() }, _removeImpl(key) { const userFunc = this._removeFunc; let userResult; const d = new _deferred.Deferred; ensureRequiredFuncOption("remove", userFunc); userResult = userFunc.apply(this, [key]); if (!isPromise(userResult)) { userResult = trivialPromise() }(0, _deferred.fromPromise)(userResult).done((() => { d.resolve(key) })).fail(createUserFuncFailureHandler(d)); return d.promise() } }); exports.default = CustomStore }, 16780: /*!******************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/data/m_data_helper.js ***! \******************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = exports.DataHelperMixin = void 0; var _data_source = __webpack_require__( /*! ../../common/data/data_source/data_source */ 68216); var _utils = __webpack_require__( /*! ../../common/data/data_source/utils */ 97169); var _extend = __webpack_require__( /*! ../../core/utils/extend */ 52576); var _m_data_controller = (e = __webpack_require__( /*! ../ui/collection/m_data_controller */ 5285), e && e.__esModule ? e : { default: e }); var e; const DataHelperMixin = exports.DataHelperMixin = { postCtor() { this.on("disposing", (() => { this._disposeDataSource() })) }, _refreshDataSource() { this._initDataSource(); this._loadDataSource() }, _initDataSource() { let dataSourceOptions = "_getSpecificDataSourceOption" in this ? this._getSpecificDataSourceOption() : this.option("dataSource"); let widgetDataSourceOptions; let dataSourceType; this._disposeDataSource(); if (dataSourceOptions) { if (dataSourceOptions instanceof _data_source.DataSource) { this._isSharedDataSource = true; this._dataSource = dataSourceOptions } else { widgetDataSourceOptions = "_dataSourceOptions" in this ? this._dataSourceOptions() : {}; dataSourceType = this._dataSourceType ? this._dataSourceType() : _data_source.DataSource; dataSourceOptions = (0, _utils.normalizeDataSourceOptions)(dataSourceOptions, { fromUrlLoadMode: "_dataSourceFromUrlLoadMode" in this && this._dataSourceFromUrlLoadMode() }); this._dataSource = new dataSourceType((0, _extend.extend)(true, {}, widgetDataSourceOptions, dataSourceOptions)) } if ("_normalizeDataSource" in this) { this._dataSource = this._normalizeDataSource(this._dataSource) } this._addDataSourceHandlers(); this._initDataController() } }, _initDataController() { var _this$option; const dataController = null === (_this$option = this.option) || void 0 === _this$option ? void 0 : _this$option.call(this, "_dataController"); const dataSource = this._dataSource; if (dataController) { this._dataController = dataController } else { this._dataController = new _m_data_controller.default(dataSource) } }, _addDataSourceHandlers() { if ("_dataSourceChangedHandler" in this) { this._addDataSourceChangeHandler() } if ("_dataSourceLoadErrorHandler" in this) { this._addDataSourceLoadErrorHandler() } if ("_dataSourceLoadingChangedHandler" in this) { this._addDataSourceLoadingChangedHandler() } this._addReadyWatcher() }, _addReadyWatcher() { this.readyWatcher = function(isLoading) { this._ready && this._ready(!isLoading) }.bind(this); this._dataSource.on("loadingChanged", this.readyWatcher) }, _addDataSourceChangeHandler() { const dataSource = this._dataSource; this._proxiedDataSourceChangedHandler = function(e) { this._dataSourceChangedHandler(dataSource.items(), e) }.bind(this); dataSource.on("changed", this._proxiedDataSourceChangedHandler) }, _addDataSourceLoadErrorHandler() { this._proxiedDataSourceLoadErrorHandler = this._dataSourceLoadErrorHandler.bind(this); this._dataSource.on("loadError", this._proxiedDataSourceLoadErrorHandler) }, _addDataSourceLoadingChangedHandler() { this._proxiedDataSourceLoadingChangedHandler = this._dataSourceLoadingChangedHandler.bind(this); this._dataSource.on("loadingChanged", this._proxiedDataSourceLoadingChangedHandler) }, _loadDataSource() { const dataSource = this._dataSource; if (dataSource) { if (dataSource.isLoaded()) { this._proxiedDataSourceChangedHandler && this._proxiedDataSourceChangedHandler() } else { dataSource.load() } } }, _loadSingle(key, value) { key = "this" === key ? this._dataSource.key() || "this" : key; return this._dataSource.loadSingle(key, value) }, _isLastPage() { return !this._dataSource || this._dataSource.isLastPage() || !this._dataSource._pageSize }, _isDataSourceLoading() { return this._dataSource && this._dataSource.isLoading() }, _disposeDataSource() { if (this._dataSource) { if (this._isSharedDataSource) { delete this._isSharedDataSource; this._proxiedDataSourceChangedHandler && this._dataSource.off("changed", this._proxiedDataSourceChangedHandler); this._proxiedDataSourceLoadErrorHandler && this._dataSource.off("loadError", this._proxiedDataSourceLoadErrorHandler); this._proxiedDataSourceLoadingChangedHandler && this._dataSource.off("loadingChanged", this._proxiedDataSourceLoadingChangedHandler); if (this._dataSource._eventsStrategy) { this._dataSource._eventsStrategy.off("loadingChanged", this.readyWatcher) } } else { this._dataSource.dispose() } delete this._dataSource; delete this._proxiedDataSourceChangedHandler; delete this._proxiedDataSourceLoadErrorHandler; delete this._proxiedDataSourceLoadingChangedHandler } }, getDataSource() { return this._dataSource || null } }; exports.default = DataHelperMixin }, 17410: /*!************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/data/m_endpoint_selector.js ***! \************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _errors = (e = __webpack_require__( /*! ../../core/errors */ 87129), e && e.__esModule ? e : { default: e }); var e; var _window = __webpack_require__( /*! ../../core/utils/window */ 3104); const window = (0, _window.getWindow)(); let IS_WINJS_ORIGIN; let IS_LOCAL_ORIGIN; const EndpointSelector = function(config) { this.config = config; IS_WINJS_ORIGIN = "ms-appx:" === window.location.protocol; IS_LOCAL_ORIGIN = (url = window.location.hostname, /^(localhost$|127\.)/i.test(url)); var url }; EndpointSelector.prototype = { urlFor(key) { const bag = this.config[key]; if (!bag) { throw _errors.default.Error("E0006") } if (bag.production) { if (IS_WINJS_ORIGIN && !Debug.debuggerEnabled || !IS_WINJS_ORIGIN && !IS_LOCAL_ORIGIN) { return bag.production } } return bag.local } }; exports.default = EndpointSelector }, 5930: /*!*************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/data/m_errors.js ***! \*************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.setErrorHandler = exports.handleError = exports.errors = exports.errorHandler = void 0; var _errors = _interopRequireDefault(__webpack_require__( /*! ../../core/errors */ 87129)); var _error = _interopRequireDefault(__webpack_require__( /*! ../../core/utils/error */ 67264)); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } exports.errors = (0, _error.default)(_errors.default.ERROR_MESSAGES, { E4000: "[DevExpress.data]: {0}", E4001: "Unknown aggregating function is detected: '{0}'", E4002: "Unsupported OData protocol version is used", E4003: "Unknown filter operation is used: {0}", E4004: "The thenby() method is called before the sortby() method", E4005: "Store requires a key expression for this operation", E4006: "ArrayStore 'data' option must be an array", E4007: "Compound keys cannot be auto-generated", E4008: "Attempt to insert an item with a duplicated key", E4009: "Data item cannot be found", E4010: "CustomStore does not support creating queries", E4011: "Custom Store method is not implemented or is not a function: {0}", E4012: "Custom Store method returns an invalid value: {0}", E4013: "Local Store requires the 'name' configuration option is specified", E4014: "Unknown data type is specified for ODataStore: {0}", E4015: "Unknown entity name or alias is used: {0}", E4016: "The compileSetter(expr) method is called with 'self' passed as a parameter", E4017: "Keys cannot be modified", E4018: "The server has returned a non-numeric value in a response to an item count request", E4019: "Mixing of group operators inside a single group of filter expression is not allowed", E4020: "Unknown store type is detected: {0}", E4021: "The server response does not provide the totalCount value", E4022: "The server response does not provide the groupCount value", E4023: "Could not parse the following XML: {0}", E4024: "String function {0} cannot be used with the data field {1} of type {2}.", W4000: "Data returned from the server has an incorrect structure", W4001: 'The {0} field is listed in both "keyType" and "fieldTypes". The value of "fieldTypes" is used.', W4002: "Data loading has failed for some cells due to the following error: {0}" }); let errorHandler = exports.errorHandler = null; exports.handleError = function(error) { var _errorHandler; null === (_errorHandler = errorHandler) || void 0 === _errorHandler || _errorHandler(error) }; exports.setErrorHandler = handler => exports.errorHandler = errorHandler = handler }, 33260: /*!******************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/data/m_local_store.js ***! \******************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _events_engine = _interopRequireDefault(__webpack_require__( /*! ../../common/core/events/core/events_engine */ 92774)); var _array_store = _interopRequireDefault(__webpack_require__( /*! ../../common/data/array_store */ 80556)); var _errors = __webpack_require__( /*! ../../common/data/errors */ 82812); var _class = _interopRequireDefault(__webpack_require__( /*! ../../core/class */ 55620)); var _dom_adapter = _interopRequireDefault(__webpack_require__( /*! ../../core/dom_adapter */ 64960)); var _window = __webpack_require__( /*! ../../core/utils/window */ 3104); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } const window = (0, _window.getWindow)(); const { abstract: abstract } = _class.default; const LocalStoreBackend = _class.default.inherit({ ctor(store, storeOptions) { this._store = store; this._dirty = !!storeOptions.data; this.save(); const immediate = this._immediate = storeOptions.immediate; const flushInterval = Math.max(100, storeOptions.flushInterval || 1e4); if (!immediate) { const saveProxy = this.save.bind(this); setInterval(saveProxy, flushInterval); _events_engine.default.on(window, "beforeunload", saveProxy); if (window.cordova) { _dom_adapter.default.listen(_dom_adapter.default.getDocument(), "pause", saveProxy, false) } } }, notifyChanged() { this._dirty = true; if (this._immediate) { this.save() } }, load() { this._store._array = this._loadImpl(); this._dirty = false }, save() { if (!this._dirty) { return } this._saveImpl(this._store._array); this._dirty = false }, _loadImpl: abstract, _saveImpl: abstract }); const DomLocalStoreBackend = LocalStoreBackend.inherit({ ctor(store, storeOptions) { const { name: name } = storeOptions; if (!name) { throw _errors.errors.Error("E4013") } this._key = `dx-data-localStore-${name}`; this.callBase(store, storeOptions) }, _loadImpl() { const raw = window.localStorage.getItem(this._key); if (raw) { return JSON.parse(raw) } return [] }, _saveImpl(array) { if (!array.length) { window.localStorage.removeItem(this._key) } else { window.localStorage.setItem(this._key, JSON.stringify(array)) } } }); const localStoreBackends = { dom: DomLocalStoreBackend }; const LocalStore = _array_store.default.inherit({ ctor(options) { if ("string" === typeof options) { options = { name: options } } else { options = options || {} } this.callBase(options); this._backend = new localStoreBackends[options.backend || "dom"](this, options); this._backend.load() }, _clearCache() { this._backend.load() }, clear() { this.callBase(); this._backend.notifyChanged() }, _insertImpl(values) { const b = this._backend; return this.callBase(values).done(b.notifyChanged.bind(b)) }, _updateImpl(key, values) { const b = this._backend; return this.callBase(key, values).done(b.notifyChanged.bind(b)) }, _removeImpl(key) { const b = this._backend; return this.callBase(key).done(b.notifyChanged.bind(b)) } }, "local"); exports.default = LocalStore }, 45149: /*!************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/data/m_query.js ***! \************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _query_implementation = __webpack_require__( /*! ../../common/data/query_implementation */ 84816); exports.default = function() { const impl = Array.isArray(arguments[0]) ? "array" : "remote"; return _query_implementation.queryImpl[impl].apply(this, arguments) } }, 51324: /*!*******************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/data/m_remote_query.js ***! \*******************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _array_query = _interopRequireDefault(__webpack_require__( /*! ../../common/data/array_query */ 65517)); var _errors = __webpack_require__( /*! ../../common/data/errors */ 82812); var _query_adapters = _interopRequireDefault(__webpack_require__( /*! ../../common/data/query_adapters */ 5842)); var _deferred = __webpack_require__( /*! ../../core/utils/deferred */ 87739); var _iterator = __webpack_require__( /*! ../../core/utils/iterator */ 21274); var _type = __webpack_require__( /*! ../../core/utils/type */ 11528); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } const remoteQueryImpl = function(url, queryOptions, tasks) { tasks = tasks || []; queryOptions = queryOptions || {}; const createTask = function(name, args) { return { name: name, args: args } }; const exec = function(executorTask) { const d = new _deferred.Deferred; let _adapterFactory; let _adapter; let _taskQueue; let _currentTask; let _mergedSortArgs; const rejectWithNotify = function(error) { const handler = queryOptions.errorHandler; if (handler) { handler(error) }(0, _errors.handleError)(error); d.reject(error) }; function mergeSortTask(task) { switch (task.name) { case "sortBy": _mergedSortArgs = [task.args]; return true; case "thenBy": if (!_mergedSortArgs) { throw _errors.errors.Error("E4004") } _mergedSortArgs.push(task.args); return true } return false } try { _adapterFactory = queryOptions.adapter; if (!(0, _type.isFunction)(_adapterFactory)) { _adapterFactory = _query_adapters.default[_adapterFactory] } _adapter = _adapterFactory(queryOptions); _taskQueue = [].concat(tasks).concat(executorTask); const { optimize: optimize } = _adapter; if (optimize) { optimize(_taskQueue) } while (_taskQueue.length) { _currentTask = _taskQueue[0]; if (!mergeSortTask(_currentTask)) { if (_mergedSortArgs) { _taskQueue.unshift(createTask("multiSort", [_mergedSortArgs])); _mergedSortArgs = null; continue } if ("enumerate" !== String(_currentTask.name)) { if (!_adapter[_currentTask.name] || false === _adapter[_currentTask.name].apply(_adapter, _currentTask.args)) { break } } } _taskQueue.shift() }! function() { const head = _taskQueue[0]; const unmergedTasks = []; if (head && "multiSort" === head.name) { _taskQueue.shift(); (0, _iterator.each)(head.args[0], (function() { unmergedTasks.push(createTask(unmergedTasks.length ? "thenBy" : "sortBy", this)) })) } _taskQueue = unmergedTasks.concat(_taskQueue) }(); _adapter.exec(url).done(((result, extra) => { if (!_taskQueue.length) { d.resolve(result, extra) } else { let clientChain = (0, _array_query.default)(result, { errorHandler: queryOptions.errorHandler }); (0, _iterator.each)(_taskQueue, (function() { clientChain = clientChain[this.name].apply(clientChain, this.args) })); clientChain.done(d.resolve).fail(d.reject) } })).fail(rejectWithNotify) } catch (x) { rejectWithNotify(x) } return d.promise() }; const query = {}; (0, _iterator.each)(["sortBy", "thenBy", "filter", "slice", "select", "groupBy"], (function() { const name = String(this); query[name] = function() { return remoteQueryImpl(url, queryOptions, tasks.concat(createTask(name, arguments))) } })); (0, _iterator.each)(["count", "min", "max", "sum", "avg", "aggregate", "enumerate"], (function() { const name = String(this); query[name] = function() { return exec.call(this, createTask(name, arguments)) } })); return query }; exports.default = remoteQueryImpl }, 41943: /*!*******************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/data/m_store_helper.js ***! \*******************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _array_query = (e = __webpack_require__( /*! ../../common/data/array_query */ 65517), e && e.__esModule ? e : { default: e }); var e; var _utils = __webpack_require__( /*! ../../common/data/utils */ 89358); var _common = __webpack_require__( /*! ../../core/utils/common */ 17781); var _extend = __webpack_require__( /*! ../../core/utils/extend */ 52576); var _iterator = __webpack_require__( /*! ../../core/utils/iterator */ 21274); function multiLevelGroup(query, groupInfo) { query = query.groupBy(groupInfo[0].selector); if (groupInfo.length > 1) { query = query.select((g => (0, _extend.extend)({}, g, { items: multiLevelGroup((0, _array_query.default)(g.items), groupInfo.slice(1)).toArray() }))) } return query } function arrangeSortingInfo(groupInfo, sortInfo) { const filteredGroup = []; (0, _iterator.each)(groupInfo, ((_, group) => { const collision = (0, _common.grep)(sortInfo, (sort => group.selector === sort.selector)); if (collision.length < 1) { filteredGroup.push(group) } })); return filteredGroup.concat(sortInfo) } exports.default = { multiLevelGroup: multiLevelGroup, arrangeSortingInfo: arrangeSortingInfo, queryByOptions: function(query, options, isCountQuery) { var _options; options = options || {}; const { filter: filter } = options; if (null !== (_options = options) && void 0 !== _options && _options.langParams) { var _query$setLangParams, _query; null === (_query$setLangParams = (_query = query).setLangParams) || void 0 === _query$setLangParams || _query$setLangParams.call(_query, options.langParams) } if (filter) { query = query.filter(filter) } if (isCountQuery) { return query } let { sort: sort } = options; const { select: select } = options; let { group: group } = options; const { skip: skip } = options; const { take: take } = options; if (group) { group = (0, _utils.normalizeSortingInfo)(group); group.keepInitialKeyOrder = !!options.group.keepInitialKeyOrder } if (sort || group) { sort = (0, _utils.normalizeSortingInfo)(sort || []); if (group && !group.keepInitialKeyOrder) { sort = arrangeSortingInfo(group, sort) }(0, _iterator.each)(sort, (function(index) { query = query[index ? "thenBy" : "sortBy"](this.selector, this.desc, this.compare) })) } if (select) { query = query.select(select) } if (group) { query = multiLevelGroup(query, group) } if (take || skip) { query = query.slice(skip || 0, take) } return query } } }, 30912: /*!************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/data/m_utils.js ***! \************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.errorMessageFromXhr = exports.base64_encode = exports.aggregators = exports.XHR_ERROR_UNLOAD = void 0; exports.isConjunctiveOperator = function(condition) { return /^(and|&&|&)$/i.test(condition) }; exports.isDisjunctiveOperator = function(condition) { return /^(or|\|\||\|)$/i.test(condition) }; exports.rejectedPromise = exports.processRequestResultLock = exports.normalizeSortingInfo = exports.normalizeBinaryCriterion = exports.keysEqual = exports.isUniformEqualsByOr = exports.isUnaryOperation = exports.isGroupCriterion = void 0; exports.throttleChanges = function(func, timeout) { let cache = []; const throttled = function(func, timeout) { let timeoutId; return function() { if (!timeoutId) { timeoutId = setTimeout((() => { timeoutId = void 0; func.call(this) }), (0, _type.isFunction)(timeout) ? timeout() : timeout) } return timeoutId } }((function() { func.call(this, cache); cache = [] }), timeout); return function(changes) { if (Array.isArray(changes)) { cache.push(...changes) } return throttled.call(this, cache) } }; exports.trivialPromise = void 0; var _dom_adapter = _interopRequireDefault(__webpack_require__( /*! ../../core/dom_adapter */ 64960)); var _common = __webpack_require__( /*! ../../core/utils/common */ 17781); var _deferred = __webpack_require__( /*! ../../core/utils/deferred */ 87739); var _iterator = __webpack_require__( /*! ../../core/utils/iterator */ 21274); var _ready_callbacks = _interopRequireDefault(__webpack_require__( /*! ../../core/utils/ready_callbacks */ 3122)); var _type = __webpack_require__( /*! ../../core/utils/type */ 11528); var _window = __webpack_require__( /*! ../../core/utils/window */ 3104); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } const ready = _ready_callbacks.default.add; const XHR_ERROR_UNLOAD = exports.XHR_ERROR_UNLOAD = "DEVEXTREME_XHR_ERROR_UNLOAD"; exports.normalizeBinaryCriterion = function(crit) { return [crit[0], crit.length < 3 ? "=" : String(crit[1]).toLowerCase(), crit.length < 2 ? true : crit[crit.length - 1]] }; exports.normalizeSortingInfo = function(info) { if (!Array.isArray(info)) { info = [info] } return (0, _iterator.map)(info, (i => { const result = { selector: (0, _type.isFunction)(i) || "string" === typeof i ? i : i.getter || i.field || i.selector, desc: !!(i.desc || "d" === String(i.dir).charAt(0).toLowerCase()) }; if (i.compare) { result.compare = i.compare } return result })) }; exports.errorMessageFromXhr = function() { const textStatusMessages = { timeout: "Network connection timeout", error: "Unspecified network error", parsererror: "Unexpected server response" }; let unloading; ready((() => { const window = (0, _window.getWindow)(); _dom_adapter.default.listen(window, "beforeunload", (() => { unloading = true })) })); return function(xhr, textStatus) { if (unloading) { return XHR_ERROR_UNLOAD } if (xhr.status < 400) { return function(textStatus) { let result = textStatusMessages[textStatus]; if (!result) { return textStatus } return result }(textStatus) } return xhr.statusText } }(); exports.aggregators = { count: { seed: 0, step: count => 1 + count }, sum: { seed: 0, step: (sum, item) => sum + item }, min: { step: (min, item) => item < min ? item : min }, max: { step: (max, item) => item > max ? item : max }, avg: { seed: [0, 0], step: (pair, value) => [pair[0] + value, pair[1] + 1], finalize: pair => pair[1] ? pair[0] / pair[1] : NaN } }; exports.processRequestResultLock = function() { let lockCount = 0; let lockDeferred; return { obtain: function() { if (0 === lockCount) { lockDeferred = new _deferred.Deferred } lockCount++ }, release: function() { lockCount--; if (lockCount < 1) { lockDeferred.resolve() } }, promise: function() { const deferred = 0 === lockCount ? (new _deferred.Deferred).resolve() : lockDeferred; return deferred.promise() }, reset: function() { lockCount = 0; if (lockDeferred) { lockDeferred.resolve() } } } }(); exports.keysEqual = function(keyExpr, key1, key2) { if (Array.isArray(keyExpr)) { const names = (0, _iterator.map)(key1, ((v, k) => k)); let name; for (let i = 0; i < names.length; i++) { name = names[i]; if (!(0, _common.equalByValue)(key1[name], key2[name], { strict: false })) { return false } } return true } return (0, _common.equalByValue)(key1, key2, { strict: false }) }; exports.base64_encode = function(input) { if (!Array.isArray(input)) { input = function(str) { const bytes = []; let code; let i; for (i = 0; i < str.length; i++) { code = str.charCodeAt(i); if (code < 128) { bytes.push(code) } else if (code < 2048) { bytes.push(192 + (code >> 6), 128 + (63 & code)) } else if (code < 65536) { bytes.push(224 + (code >> 12), 128 + (code >> 6 & 63), 128 + (63 & code)) } else if (code < 2097152) { bytes.push(240 + (code >> 18), 128 + (code >> 12 & 63), 128 + (code >> 6 & 63), 128 + (63 & code)) } } return bytes }(String(input)) } let result = ""; function getBase64Char(index) { return "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".charAt(index) } for (let i = 0; i < input.length; i += 3) { const octet1 = input[i]; const octet2 = input[i + 1]; const octet3 = input[i + 2]; result += (0, _iterator.map)([octet1 >> 2, (3 & octet1) << 4 | octet2 >> 4, isNaN(octet2) ? 64 : (15 & octet2) << 2 | octet3 >> 6, isNaN(octet3) ? 64 : 63 & octet3], getBase64Char).join("") } return result }; exports.isUnaryOperation = function(crit) { return "!" === crit[0] && Array.isArray(crit[1]) }; exports.isUniformEqualsByOr = function(crit) { if (crit.length > 2 && Array.isArray(crit[0]) && "or" === crit[1] && "string" === typeof crit[0][0] && "=" === crit[0][1]) { const [prop] = crit[0]; return !crit.find(((el, i) => i % 2 !== 0 ? "or" !== el : !Array.isArray(el) || 3 !== el.length || el[0] !== prop || "=" !== el[1])) } return false }; exports.isGroupCriterion = function(crit) { const first = crit[0]; const second = crit[1]; if (Array.isArray(first)) { return true } if ((0, _type.isFunction)(first)) { if (Array.isArray(second) || (0, _type.isFunction)(second) || (value = second, "and" === value || "or" === value)) { return true } } var value; return false }; exports.trivialPromise = function() { const d = new _deferred.Deferred; return d.resolve.apply(d, arguments).promise() }; exports.rejectedPromise = function() { const d = new _deferred.Deferred; return d.reject.apply(d, arguments).promise() } }, 58824: /*!********************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/data/odata/m_context.js ***! \********************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; __webpack_require__( /*! ../../../common/data/odata/query_adapter */ 65001); var _request_dispatcher = _interopRequireDefault(__webpack_require__( /*! ../../../common/data/odata/request_dispatcher */ 26098)); var _store = _interopRequireDefault(__webpack_require__( /*! ../../../common/data/odata/store */ 29284)); var _class = _interopRequireDefault(__webpack_require__( /*! ../../../core/class */ 55620)); var _deferred = __webpack_require__( /*! ../../../core/utils/deferred */ 87739); var _extend = __webpack_require__( /*! ../../../core/utils/extend */ 52576); var _iterator = __webpack_require__( /*! ../../../core/utils/iterator */ 21274); var _type = __webpack_require__( /*! ../../../core/utils/type */ 11528); var _m_errors = __webpack_require__( /*! ../m_errors */ 5930); var _m_utils = __webpack_require__( /*! ./m_utils */ 14606); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } const ODataContext = _class.default.inherit({ ctor(options) { this._requestDispatcher = new _request_dispatcher.default(options); this._errorHandler = options.errorHandler; (0, _iterator.each)(options.entities || [], ((entityAlias, entityOptions) => { this[entityAlias] = new _store.default((0, _extend.extend)({}, options, { url: `${this._requestDispatcher.url}/${encodeURIComponent(entityOptions.name||entityAlias)}` }, entityOptions)) })) }, get(operationName, params) { return this.invoke(operationName, params, "GET") }, invoke(operationName) { let params = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {}; let httpMethod = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : "POST"; httpMethod = httpMethod.toLowerCase(); const d = new _deferred.Deferred; let url = `${this._requestDispatcher.url}/${encodeURIComponent(operationName)}`; let payload; if (4 === this.version()) { if ("get" === httpMethod) { url = (0, _m_utils.formatFunctionInvocationUrl)(url, (0, _m_utils.escapeServiceOperationParams)(params, this.version())); params = null } else if ("post" === httpMethod) { payload = params; params = null } }(0, _deferred.when)(this._requestDispatcher.sendRequest(url, httpMethod, (0, _m_utils.escapeServiceOperationParams)(params, this.version()), payload)).done((r => { if ((0, _type.isPlainObject)(r) && operationName in r) { r = r[operationName] } d.resolve(r) })).fail(this._errorHandler).fail(_m_errors.handleError).fail(d.reject); return d.promise() }, objectLink(entityAlias, key) { const store = this[entityAlias]; if (!store) { throw _m_errors.errors.Error("E4015", entityAlias) } if (!(0, _type.isDefined)(key)) { return null } return { __metadata: { uri: store._byKeyUrl(key) } } }, version() { return this._requestDispatcher.version } }); exports.default = ODataContext }, 61575: /*!**************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/data/odata/m_query_adapter.js ***! \**************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.odata = void 0; var _query_adapters = _interopRequireDefault(__webpack_require__( /*! ../../../common/data/query_adapters */ 5842)); var _config = _interopRequireDefault(__webpack_require__( /*! ../../../core/config */ 66636)); var _extend = __webpack_require__( /*! ../../../core/utils/extend */ 52576); var _iterator = __webpack_require__( /*! ../../../core/utils/iterator */ 21274); var _type = __webpack_require__( /*! ../../../core/utils/type */ 11528); var _m_errors = __webpack_require__( /*! ../m_errors */ 5930); var _m_utils = __webpack_require__( /*! ../m_utils */ 30912); var _m_utils2 = __webpack_require__( /*! ./m_utils */ 14606); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } const STRING_FUNCTIONS = ["contains", "notcontains", "startswith", "endswith"]; const compileCriteria = (() => { let protocolVersion; let forceLowerCase; let fieldTypes; const createBinaryOperationFormatter = op => (prop, val) => `${prop} ${op} ${val}`; const createStringFuncFormatter = (op, reverse) => (prop, val) => { const bag = [op, "("]; if (forceLowerCase) { prop = -1 === prop.indexOf("tolower(") ? `tolower(${prop})` : prop; val = val.toLowerCase() } if (reverse) { bag.push(val, ",", prop) } else { bag.push(prop, ",", val) } bag.push(")"); return bag.join("") }; const formatters = { "=": createBinaryOperationFormatter("eq"), "<>": createBinaryOperationFormatter("ne"), ">": createBinaryOperationFormatter("gt"), ">=": createBinaryOperationFormatter("ge"), "<": createBinaryOperationFormatter("lt"), "<=": createBinaryOperationFormatter("le"), startswith: createStringFuncFormatter("startswith"), endswith: createStringFuncFormatter("endswith") }; const formattersV2 = (0, _extend.extend)({}, formatters, { contains: createStringFuncFormatter("substringof", true), notcontains: createStringFuncFormatter("not substringof", true) }); const formattersV4 = (0, _extend.extend)({}, formatters, { contains: createStringFuncFormatter("contains"), notcontains: createStringFuncFormatter("not contains") }); const compileBinary = criteria => { var _fieldTypes; criteria = (0, _m_utils.normalizeBinaryCriterion)(criteria); const op = criteria[1]; const fieldName = criteria[0]; const fieldType = fieldTypes && fieldTypes[fieldName]; if (fieldType && (name = op, STRING_FUNCTIONS.some((funcName => funcName === name))) && "String" !== fieldType) { throw new _m_errors.errors.Error("E4024", op, fieldName, fieldType) } var name; const formatters = 4 === protocolVersion ? formattersV4 : formattersV2; const formatter = formatters[op.toLowerCase()]; if (!formatter) { throw _m_errors.errors.Error("E4003", op) } let value = criteria[2]; if (null !== (_fieldTypes = fieldTypes) && void 0 !== _fieldTypes && _fieldTypes[fieldName]) { value = (0, _m_utils2.convertPrimitiveValue)(fieldTypes[fieldName], value) } return formatter((0, _m_utils2.serializePropName)(fieldName), (0, _m_utils2.serializeValue)(value, protocolVersion)) }; const compileGroup = criteria => { const bag = []; let groupOperator; let nextGroupOperator; (0, _iterator.each)(criteria, (function(index, criterion) { if (Array.isArray(criterion)) { if (bag.length > 1 && groupOperator !== nextGroupOperator) { throw new _m_errors.errors.Error("E4019") } bag.push(`(${compileCore(criterion)})`); groupOperator = nextGroupOperator; nextGroupOperator = "and" } else { nextGroupOperator = (0, _m_utils.isConjunctiveOperator)(this) ? "and" : "or" } })); return bag.join(` ${groupOperator} `) }; const compileCore = criteria => { if (Array.isArray(criteria[0])) { return compileGroup(criteria) } if ((0, _m_utils.isUnaryOperation)(criteria)) { return (criteria => { const op = criteria[0]; const crit = compileCore(criteria[1]); if ("!" === op) { return `not (${crit})` } throw _m_errors.errors.Error("E4003", op) })(criteria) } return compileBinary(criteria) }; return (criteria, version, types, filterToLower) => { fieldTypes = types; forceLowerCase = filterToLower ?? (0, _config.default)().oDataFilterToLower; protocolVersion = version; return compileCore(criteria) } })(); const createODataQueryAdapter = queryOptions => { let _sorting = []; const _criteria = []; const _expand = queryOptions.expand; let _select; let _skip; let _take; let _countQuery; const _oDataVersion = queryOptions.version || 4; const hasSlice = () => _skip || void 0 !== _take; const hasFunction = criterion => { for (let i = 0; i < criterion.length; i++) { if ((0, _type.isFunction)(criterion[i])) { return true } if (Array.isArray(criterion[i]) && hasFunction(criterion[i])) { return true } } return false }; const requestData = () => { const result = {}; if (!_countQuery) { if (_sorting.length) { result.$orderby = _sorting.join(",") } if (_skip) { result.$skip = _skip } if (void 0 !== _take) { result.$top = _take } result.$select = (0, _m_utils2.generateSelect)(_oDataVersion, _select) || void 0; result.$expand = (0, _m_utils2.generateExpand)(_oDataVersion, _expand, _select) || void 0 } if (_criteria.length) { const criteria = _criteria.length < 2 ? _criteria[0] : _criteria; const fieldTypes = null === queryOptions || void 0 === queryOptions ? void 0 : queryOptions.fieldTypes; const filterToLower = null === queryOptions || void 0 === queryOptions ? void 0 : queryOptions.filterToLower; result.$filter = compileCriteria(criteria, _oDataVersion, fieldTypes, filterToLower) } if (_countQuery) { result.$top = 0 } if (queryOptions.requireTotalCount || _countQuery) { if (4 !== _oDataVersion) { result.$inlinecount = "allpages" } else { result.$count = "true" } } return result }; return { optimize: tasks => { let selectIndex = -1; for (let i = 0; i < tasks.length; i++) { if ("select" === tasks[i].name) { selectIndex = i; break } } if (selectIndex < 0 || !(0, _type.isFunction)(tasks[selectIndex].args[0])) { return } const nextTask = tasks[1 + selectIndex]; if (!nextTask || "slice" !== nextTask.name) { return } tasks[1 + selectIndex] = tasks[selectIndex]; tasks[selectIndex] = nextTask }, exec: url => (0, _m_utils2.sendRequest)(_oDataVersion, { url: url, params: (0, _extend.extend)(requestData(), null === queryOptions || void 0 === queryOptions ? void 0 : queryOptions.params) }, { beforeSend: queryOptions.beforeSend, jsonp: queryOptions.jsonp, withCredentials: queryOptions.withCredentials, countOnly: _countQuery, deserializeDates: queryOptions.deserializeDates, fieldTypes: queryOptions.fieldTypes, isPaged: isFinite(_take) }), multiSort(args) { let rules; if (hasSlice()) { return false } for (let i = 0; i < args.length; i++) { const getter = args[i][0]; const desc = !!args[i][1]; let rule; if ("string" !== typeof getter) { return false } rule = (0, _m_utils2.serializePropName)(getter); if (desc) { rule += " desc" } rules = rules || []; rules.push(rule) } _sorting = rules }, slice(skipCount, takeCount) { if (hasSlice()) { return false } _skip = skipCount; _take = takeCount }, filter(criterion) { if (hasSlice()) { return false } if (!Array.isArray(criterion)) { criterion = [].slice.call(arguments) } if (hasFunction(criterion)) { return false } if (_criteria.length) { _criteria.push("and") } _criteria.push(criterion) }, select(expr) { if (_select || (0, _type.isFunction)(expr)) { return false } if (!Array.isArray(expr)) { expr = [].slice.call(arguments) } _select = expr }, count: () => _countQuery = true } }; _query_adapters.default.odata = createODataQueryAdapter; exports.odata = createODataQueryAdapter }, 8920: /*!*******************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/data/odata/m_request_dispatcher.js ***! \*******************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; __webpack_require__( /*! ../../../common/data/odata/query_adapter */ 65001); var _utils = __webpack_require__( /*! ../../../common/data/odata/utils */ 8056); exports.default = class { constructor(options) { options = options || {}; this._url = String(options.url).replace(/\/+$/, ""); this._beforeSend = options.beforeSend; this._jsonp = options.jsonp; this._version = options.version || 4; this._withCredentials = options.withCredentials; this._deserializeDates = options.deserializeDates; this._filterToLower = options.filterToLower } sendRequest(url, method, params, payload) { return (0, _utils.sendRequest)(this.version, { url: url, method: method, params: params || {}, payload: payload }, { beforeSend: this._beforeSend, jsonp: this._jsonp, withCredentials: this._withCredentials, deserializeDates: this._deserializeDates }) } get version() { return this._version } get beforeSend() { return this._beforeSend } get url() { return this._url } get jsonp() { return this._jsonp } get filterToLower() { return this._filterToLower } } }, 17594: /*!******************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/data/odata/m_store.js ***! \******************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; __webpack_require__( /*! ../../../common/data/odata/query_adapter */ 65001); var _errors = __webpack_require__( /*! ../../../common/data/errors */ 82812); var _request_dispatcher = _interopRequireDefault(__webpack_require__( /*! ../../../common/data/odata/request_dispatcher */ 26098)); var _query = _interopRequireDefault(__webpack_require__( /*! ../../../common/data/query */ 30771)); var _config = _interopRequireDefault(__webpack_require__( /*! ../../../core/config */ 66636)); var _deferred = __webpack_require__( /*! ../../../core/utils/deferred */ 87739); var _type = __webpack_require__( /*! ../../../core/utils/type */ 11528); var _abstract_store = _interopRequireDefault(__webpack_require__( /*! ../../../data/abstract_store */ 77735)); var _m_utils = __webpack_require__( /*! ./m_utils */ 14606); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } const ODataStore = _abstract_store.default.inherit({ ctor(options) { this.callBase(options); this._requestDispatcher = new _request_dispatcher.default(options); let key = this.key(); let { fieldTypes: fieldTypes } = options; let { keyType: keyType } = options; if (keyType) { const keyTypeIsString = "string" === typeof keyType; if (!key) { key = keyTypeIsString ? "5d46402c-7899-4ea9-bd81-8b73c47c7683" : Object.keys(keyType); this._legacyAnonymousKey = key } if (keyTypeIsString) { keyType = ((key, keyType) => ({ [key]: keyType }))(key, keyType) } fieldTypes = ((fieldTypes, keyType) => { const result = {}; for (const field in fieldTypes) { result[field] = fieldTypes[field] } for (const keyName in keyType) { if (keyName in result) { if (result[keyName] !== keyType[keyName]) { _errors.errors.log("W4001", keyName) } } else { result[keyName] = keyType[keyName] } } return result })(fieldTypes, keyType) } this._fieldTypes = fieldTypes || {}; if (2 === this.version()) { this._updateMethod = "MERGE" } else { this._updateMethod = "PATCH" } }, _customLoadOptions: () => ["expand", "customQueryParams"], _byKeyImpl(key, extraOptions) { const params = {}; if (extraOptions) { params.$expand = (0, _m_utils.generateExpand)(this.version(), extraOptions.expand, extraOptions.select) || void 0; params.$select = (0, _m_utils.generateSelect)(this.version(), extraOptions.select) || void 0 } return this._requestDispatcher.sendRequest(this._byKeyUrl(key), "GET", params) }, createQuery(loadOptions) { let url; const queryOptions = { adapter: "odata", beforeSend: this._requestDispatcher.beforeSend, errorHandler: this._errorHandler, jsonp: this._requestDispatcher.jsonp, version: this._requestDispatcher.version, withCredentials: this._requestDispatcher._withCredentials, expand: null === loadOptions || void 0 === loadOptions ? void 0 : loadOptions.expand, requireTotalCount: null === loadOptions || void 0 === loadOptions ? void 0 : loadOptions.requireTotalCount, deserializeDates: this._requestDispatcher._deserializeDates, fieldTypes: this._fieldTypes }; url = (null === loadOptions || void 0 === loadOptions ? void 0 : loadOptions.urlOverride) ?? this._requestDispatcher.url; if ((0, _type.isDefined)(this._requestDispatcher.filterToLower)) { queryOptions.filterToLower = this._requestDispatcher.filterToLower } if (null !== loadOptions && void 0 !== loadOptions && loadOptions.customQueryParams) { const params = (0, _m_utils.escapeServiceOperationParams)(null === loadOptions || void 0 === loadOptions ? void 0 : loadOptions.customQueryParams, this.version()); if (4 === this.version()) { url = (0, _m_utils.formatFunctionInvocationUrl)(url, params) } else { queryOptions.params = params } } return (0, _query.default)(url, queryOptions) }, _insertImpl(values) { this._requireKey(); const d = new _deferred.Deferred; (0, _deferred.when)(this._requestDispatcher.sendRequest(this._requestDispatcher.url, "POST", null, values)).done((serverResponse => d.resolve(serverResponse && !(0, _config.default)().useLegacyStoreResult ? serverResponse : values, this.keyOf(serverResponse)))).fail(d.reject); return d.promise() }, _updateImpl(key, values) { const d = new _deferred.Deferred; (0, _deferred.when)(this._requestDispatcher.sendRequest(this._byKeyUrl(key), this._updateMethod, null, values)).done((serverResponse => (0, _config.default)().useLegacyStoreResult ? d.resolve(key, values) : d.resolve(serverResponse || values, key))).fail(d.reject); return d.promise() }, _removeImpl(key) { const d = new _deferred.Deferred; (0, _deferred.when)(this._requestDispatcher.sendRequest(this._byKeyUrl(key), "DELETE")).done((() => d.resolve(key))).fail(d.reject); return d.promise() }, _convertKey(value) { let result = value; const fieldTypes = this._fieldTypes; const key = this.key() || this._legacyAnonymousKey; if (Array.isArray(key)) { result = {}; for (let i = 0; i < key.length; i++) { const keyName = key[i]; result[keyName] = (0, _m_utils.convertPrimitiveValue)(fieldTypes[keyName], value[keyName]) } } else if (fieldTypes[key]) { result = (0, _m_utils.convertPrimitiveValue)(fieldTypes[key], value) } return result }, _byKeyUrl(value) { const baseUrl = this._requestDispatcher.url; const convertedKey = this._convertKey(value); return `${baseUrl}(${encodeURIComponent((0,_m_utils.serializeKey)(convertedKey,this.version()))})` }, version() { return this._requestDispatcher.version } }, "odata"); exports.default = ODataStore }, 14606: /*!******************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/data/odata/m_utils.js ***! \******************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.serializeValue = exports.serializePropName = exports.serializeKey = exports.sendRequest = exports.keyConverters = exports.generateSelect = exports.generateExpand = exports.formatFunctionInvocationUrl = exports.escapeServiceOperationParams = exports.convertPrimitiveValue = exports.EdmLiteral = void 0; var _errors = __webpack_require__( /*! ../../../common/data/errors */ 82812); var _utils = __webpack_require__( /*! ../../../common/data/utils */ 89358); var _class = _interopRequireDefault(__webpack_require__( /*! ../../../core/class */ 55620)); var _guid = _interopRequireDefault(__webpack_require__( /*! ../../../core/guid */ 19427)); var _ajax = _interopRequireDefault(__webpack_require__( /*! ../../../core/utils/ajax */ 78670)); var _common = __webpack_require__( /*! ../../../core/utils/common */ 17781); var _deferred = __webpack_require__( /*! ../../../core/utils/deferred */ 87739); var _extend = __webpack_require__( /*! ../../../core/utils/extend */ 52576); var _iterator = __webpack_require__( /*! ../../../core/utils/iterator */ 21274); var _string = __webpack_require__( /*! ../../../core/utils/string */ 54497); var _type = __webpack_require__( /*! ../../../core/utils/type */ 11528); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } const GUID_REGEX = /^(\{{0,1}([0-9a-fA-F]){8}-([0-9a-fA-F]){4}-([0-9a-fA-F]){4}-([0-9a-fA-F]){4}-([0-9a-fA-F]){12}\}{0,1})$/; const VERBOSE_DATE_REGEX = /^\/Date\((-?\d+)((\+|-)?(\d+)?)\)\/$/; const ISO8601_DATE_REGEX = /^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(\.\d+)?(Z|[-+]{1}\d{2}(:?)(\d{2})?)?$/; const JSON_VERBOSE_MIME_TYPE = "application/json;odata=verbose"; const makeArray = value => "string" === (0, _type.type)(value) ? value.split() : value; const hasDot = x => /\./.test(x); const pad = (text, length, right) => { text = String(text); while (text.length < length) { text = right ? `${text}0` : `0${text}` } return text }; const formatISO8601 = (date, skipZeroTime, skipTimezone) => { const bag = []; const padLeft2 = text => pad(text, 2); bag.push(date.getFullYear()); bag.push("-"); bag.push(padLeft2(date.getMonth() + 1)); bag.push("-"); bag.push(padLeft2(date.getDate())); if (!(skipZeroTime && date.getHours() + date.getMinutes() + date.getSeconds() + date.getMilliseconds() < 1)) { bag.push("T"); bag.push(padLeft2(date.getHours())); bag.push(":"); bag.push(padLeft2(date.getMinutes())); bag.push(":"); bag.push(padLeft2(date.getSeconds())); if (date.getMilliseconds()) { bag.push("."); bag.push(pad(date.getMilliseconds(), 3)) } if (!skipTimezone) { bag.push("Z") } } return bag.join("") }; const sendRequest = (protocolVersion, request, options) => { const { deserializeDates: deserializeDates, fieldTypes: fieldTypes, countOnly: countOnly, isPaged: isPaged } = options; const d = new _deferred.Deferred; const ajaxOptions = function(protocolVersion, request) { var _options$beforeSend; let options = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : {}; request = (0, _extend.extend)({ async: true, method: "get", url: "", params: {}, payload: null, headers: {}, timeout: 3e4 }, request); null === (_options$beforeSend = options.beforeSend) || void 0 === _options$beforeSend || _options$beforeSend.call(options, request); const { async: async, timeout: timeout, headers: headers } = request; let { url: url, method: method } = request; const { jsonp: jsonp, withCredentials: withCredentials } = options; method = (method || "get").toLowerCase(); const isGet = "get" === method; const useJsonp = isGet && jsonp; const params = (0, _extend.extend)({}, request.params); const ajaxData = isGet ? params : (payload = request.payload, JSON.stringify(payload, (function(key, value) { if (!(this[key] instanceof Date)) { return value } value = formatISO8601(this[key]); switch (protocolVersion) { case 2: return value.substr(0, value.length - 1); case 3: case 4: return value; default: throw _errors.errors.Error("E4002") } }))); var payload; const qs = !isGet && (params => { const result = []; for (const name in params) { result.push(`${name}=${params[name]}`) } return result.join("&") })(params); const contentType = !isGet && JSON_VERBOSE_MIME_TYPE; if (qs) { url += (url.indexOf("?") > -1 ? "&" : "?") + qs } if (useJsonp) { ajaxData.$format = "json" } return { url: url, data: ajaxData, dataType: useJsonp ? "jsonp" : "json", jsonp: useJsonp && "$callback", method: method, async: async, timeout: timeout, headers: headers, contentType: contentType, accepts: { json: [JSON_VERBOSE_MIME_TYPE, "text/plain"].join() }, xhrFields: { withCredentials: withCredentials } } }(protocolVersion, request, options); _ajax.default.sendRequest(ajaxOptions).always(((obj, textStatus) => { const transformOptions = { deserializeDates: deserializeDates, fieldTypes: fieldTypes }; const tuple = interpretJsonFormat(obj, textStatus, transformOptions, ajaxOptions); const { error: error, data: data, count: count } = tuple; let { nextUrl: nextUrl } = tuple; if (error) { if (error.message !== _utils.XHR_ERROR_UNLOAD) { d.reject(error) } } else if (countOnly) { if (isFinite(count)) { d.resolve(count) } else { d.reject(_errors.errors.Error("E4018")) } } else if (nextUrl && !isPaged) { if (!(url = nextUrl, /^(?:[a-z]+:)?\/{2,2}/i.test(url))) { nextUrl = ((basePath, relativePath) => { let part; const baseParts = (url => { const index = url.indexOf("?"); if (index > -1) { return url.substr(0, index) } return url })(basePath).split("/"); const relativeParts = relativePath.split("/"); baseParts.pop(); while (relativeParts.length) { part = relativeParts.shift(); if (".." === part) { baseParts.pop() } else { baseParts.push(part) } } return baseParts.join("/") })(ajaxOptions.url, nextUrl) } sendRequest(protocolVersion, { url: nextUrl }, options).fail(d.reject).done((nextData => d.resolve(data.concat(nextData)))) } else { const extra = isFinite(count) ? { totalCount: count } : void 0; d.resolve(data, extra) } var url })); return d.promise() }; exports.sendRequest = sendRequest; const interpretJsonFormat = (obj, textStatus, transformOptions, ajaxOptions) => { const error = ((obj, textStatus, ajaxOptions) => { var _response, _response2, _response3, _response4; if ("nocontent" === textStatus) { return null } let message = "Unknown error"; let response = obj; let httpStatus = 200; const errorData = { requestOptions: ajaxOptions }; if ("success" !== textStatus) { const { status: status, responseText: responseText } = obj; httpStatus = status; message = (0, _utils.errorMessageFromXhr)(obj, textStatus); try { response = JSON.parse(responseText) } catch (x) {} } const errorObj = (null === (_response = response) || void 0 === _response ? void 0 : _response.then) || (null === (_response2 = response) || void 0 === _response2 ? void 0 : _response2.error) || (null === (_response3 = response) || void 0 === _response3 ? void 0 : _response3["odata.error"]) || (null === (_response4 = response) || void 0 === _response4 ? void 0 : _response4["@odata.error"]); if (errorObj) { message = (errorObj => { let message; let currentMessage; let currentError = errorObj; if ("message" in errorObj) { var _errorObj$message; message = (null === (_errorObj$message = errorObj.message) || void 0 === _errorObj$message ? void 0 : _errorObj$message.value) || errorObj.message } while (currentError = currentError.innererror || currentError.internalexception) { currentMessage = currentError.message; message = currentMessage ?? message; if (currentError.internalexception && -1 === message.indexOf("inner exception")) { break } } return message })(errorObj) || message; errorData.errorDetails = errorObj; if (200 === httpStatus) { httpStatus = 500 } const customCode = Number(errorObj.code); if (isFinite(customCode) && customCode >= 400) { httpStatus = customCode } } if (httpStatus >= 400 || 0 === httpStatus) { errorData.httpStatus = httpStatus; return (0, _extend.extend)(Error(message), errorData) } return null })(obj, textStatus, ajaxOptions); if (error) { return { error: error } } if (!(0, _type.isPlainObject)(obj)) { return { data: obj } } const value = "d" in obj && (Array.isArray(obj.d) || (0, _type.isObject)(obj.d)) ? interpretVerboseJsonFormat(obj) : interpretLightJsonFormat(obj); transformTypes(value, transformOptions); return value }; const interpretVerboseJsonFormat = _ref => { let { d: data } = _ref; if (!(0, _type.isDefined)(data)) { return { error: Error("Malformed or unsupported JSON response received") } } return { data: data.results ?? data, nextUrl: data.__next, count: parseInt(data.__count, 10) } }; const interpretLightJsonFormat = obj => ({ data: obj.value ?? obj, nextUrl: obj["@odata.nextLink"], count: parseInt(obj["@odata.count"], 10) }); const EdmLiteral = exports.EdmLiteral = _class.default.inherit({ ctor(value) { this._value = value }, valueOf() { return this._value } }); const transformTypes = function(obj) { let options = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {}; (0, _iterator.each)(obj, ((key, value) => { if (null !== value && "object" === typeof value) { if ("results" in value) { obj[key] = value.results } transformTypes(obj[key], options) } else if ("string" === typeof value) { const { fieldTypes: fieldTypes, deserializeDates: deserializeDates } = options; const canBeGuid = !fieldTypes || "String" !== fieldTypes[key]; if (canBeGuid && GUID_REGEX.test(value)) { obj[key] = new _guid.default(value) } if (false !== deserializeDates) { if (VERBOSE_DATE_REGEX.exec(value)) { const date = new Date(Number(RegExp.$1) + 60 * RegExp.$2 * 1e3); obj[key] = new Date(date.valueOf() + 60 * date.getTimezoneOffset() * 1e3) } else if (ISO8601_DATE_REGEX.test(value)) { obj[key] = new Date((isoString => { const result = new Date(60 * new Date(0).getTimezoneOffset() * 1e3); const chunks = isoString.replace("Z", "").split("T"); const date = /(\d{4})-(\d{2})-(\d{2})/.exec(chunks[0]); const time = /(\d{2}):(\d{2}):(\d{2})\.?(\d{0,7})?/.exec(chunks[1]); result.setFullYear(Number(date[1])); result.setMonth(Number(date[2]) - 1); result.setDate(Number(date[3])); if (Array.isArray(time) && time.length) { result.setHours(Number(time[1])); result.setMinutes(Number(time[2])); result.setSeconds(Number(time[3])); let fractional = (time[4] || "").slice(0, 3); fractional = pad(fractional, 3, true); result.setMilliseconds(Number(fractional)) } return result })(obj[key]).valueOf()) } } } })) }; const serializePropName = propName => propName instanceof EdmLiteral ? propName.valueOf() : propName.replace(/\./g, "/"); exports.serializePropName = serializePropName; const serializeValueV4 = value => { if (value instanceof Date) { return formatISO8601(value, false, false) } if (value instanceof _guid.default) { return value.valueOf() } if (Array.isArray(value)) { return `[${value.map((item=>serializeValueV4(item))).join(",")}]` } return serializeValueV2(value) }; const serializeValueV2 = value => { if (value instanceof Date) { return date = value, `datetime'${formatISO8601(date,true,true)}'` } var date; if (value instanceof _guid.default) { return `guid'${value}'` } if (value instanceof EdmLiteral) { return value.valueOf() } if ("string" === typeof value) { return (value => `'${value.replace(/'/g,"''")}'`)(value) } return String(value) }; const serializeValue = (value, protocolVersion) => { switch (protocolVersion) { case 2: case 3: return serializeValueV2(value); case 4: return serializeValueV4(value); default: throw _errors.errors.Error("E4002") } }; exports.serializeValue = serializeValue; exports.serializeKey = (key, protocolVersion) => { if ((0, _type.isPlainObject)(key)) { const parts = []; (0, _iterator.each)(key, ((k, v) => parts.push(`${serializePropName(k)}=${serializeValue(v,protocolVersion)}`))); return parts.join() } return serializeValue(key, protocolVersion) }; const keyConverters = exports.keyConverters = { String: value => `${value}`, Int32: value => Math.floor(value), Int64: value => value instanceof EdmLiteral ? value : new EdmLiteral(`${value}L`), Guid: value => value instanceof _guid.default ? value : new _guid.default(value), Boolean: value => !!value, Single: value => value instanceof EdmLiteral ? value : new EdmLiteral(`${value}f`), Decimal: value => value instanceof EdmLiteral ? value : new EdmLiteral(`${value}m`) }; exports.convertPrimitiveValue = (type, value) => { if (null === value) { return null } const converter = keyConverters[type]; if (!converter) { throw _errors.errors.Error("E4014", type) } return converter(value) }; exports.generateSelect = (oDataVersion, select) => { if (!select) { return } return oDataVersion < 4 ? serializePropName(select.join()) : (0, _common.grep)(select, hasDot, true).join() }; const formatCore = hash => { let result = ""; const selectValue = []; const expandValue = []; (0, _iterator.each)(hash, ((key, value) => { if (Array.isArray(value)) { [].push.apply(selectValue, value) } if ((0, _type.isPlainObject)(value)) { expandValue.push(`${key}${formatCore(value)}`) } })); if (selectValue.length || expandValue.length) { result += "("; if (selectValue.length) { result += `$select=${(0,_iterator.map)(selectValue,serializePropName).join()}` } if (expandValue.length) { if (selectValue.length) { result += ";" } result += `$expand=${(0,_iterator.map)(expandValue,serializePropName).join()}` } result += ")" } return result }; const parseCore = (exprParts, root, stepper) => { const result = stepper(root, exprParts.shift(), exprParts); if (false === result) { return } parseCore(exprParts, result, stepper) }; const parseTree = (exprs, root, stepper) => (0, _iterator.each)(exprs, ((_, x) => parseCore(x.split("."), root, stepper))); const generatorV2 = (expand, select) => { const hash = {}; if (expand) { (0, _iterator.each)(makeArray(expand), (function() { hash[serializePropName(this)] = 1 })) } if (select) { (0, _iterator.each)(makeArray(select), (function() { const path = this.split("."); if (path.length < 2) { return } path.pop(); hash[serializePropName(path.join("."))] = 1 })) } return (0, _iterator.map)(hash, ((_, v) => v)).join() }; const generatorV4 = (expand, select) => { const hash = {}; if (expand || select) { if (expand) { parseTree(makeArray(expand), hash, ((node, key, path) => { node[key] = node[key] || {}; return !path.length ? false : node[key] })) } if (select) { parseTree((0, _common.grep)(makeArray(select), hasDot), hash, ((node, key, path) => { if (!path.length) { node[key] = node[key] || []; node[key].push(key); return false } return node[key] = node[key] || {} })) } return (hash => { const result = []; (0, _iterator.each)(hash, ((key, value) => result.push(`${key}${formatCore(value)}`))); return result.join() })(hash) } }; exports.generateExpand = (oDataVersion, expand, select) => oDataVersion < 4 ? generatorV2(expand, select) : generatorV4(expand, select); exports.formatFunctionInvocationUrl = (baseUrl, args) => (0, _string.format)("{0}({1})", baseUrl, (0, _iterator.map)(args || {}, ((value, key) => (0, _string.format)("{0}={1}", key, value))).join(",")); exports.escapeServiceOperationParams = (params, version) => { if (!params) { return params } const result = {}; (0, _iterator.each)(params, ((k, v) => { result[k] = serializeValue(v, version) })); return result } }, 14911: /*!******************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/events/core/m_emitter.feedback.js ***! \******************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.lock = exports.inactive = exports.active = void 0; var _emitter = _interopRequireDefault(__webpack_require__( /*! ../../../common/core/events/core/emitter */ 59e3)); var _emitter_registrator = _interopRequireDefault(__webpack_require__( /*! ../../../common/core/events/core/emitter_registrator */ 81411)); var _pointer = _interopRequireDefault(__webpack_require__( /*! ../../../common/core/events/pointer */ 89797)); var _index = __webpack_require__( /*! ../../../common/core/events/utils/index */ 98834); var _class = _interopRequireDefault(__webpack_require__( /*! ../../../core/class */ 55620)); var _common = __webpack_require__( /*! ../../../core/utils/common */ 17781); var _dom = __webpack_require__( /*! ../../../core/utils/dom */ 86858); var _m_devices = _interopRequireDefault(__webpack_require__( /*! ../../core/m_devices */ 98905)); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } const ACTIVE_EVENT_NAME = exports.active = "dxactive"; const INACTIVE_EVENT_NAME = exports.inactive = "dxinactive"; const FeedbackEvent = _class.default.inherit({ ctor(timeout, fire) { this._timeout = timeout; this._fire = fire }, start() { const that = this; this._schedule((() => { that.force() })) }, _schedule(fn) { this.stop(); this._timer = setTimeout(fn, this._timeout) }, stop() { clearTimeout(this._timer) }, force() { if (this._fired) { return } this.stop(); this._fire(); this._fired = true }, fired() { return this._fired } }); let activeFeedback; const FeedbackEmitter = _emitter.default.inherit({ ctor() { this.callBase.apply(this, arguments); this._active = new FeedbackEvent(0, _common.noop); this._inactive = new FeedbackEvent(0, _common.noop) }, configure(data, eventName) { switch (eventName) { case ACTIVE_EVENT_NAME: data.activeTimeout = data.timeout; break; case INACTIVE_EVENT_NAME: data.inactiveTimeout = data.timeout } this.callBase(data) }, start(e) { if (activeFeedback) { const activeChildExists = (0, _dom.contains)(this.getElement().get(0), activeFeedback.getElement().get(0)); const childJustActivated = !activeFeedback._active.fired(); if (activeChildExists && childJustActivated) { this._cancel(); return } activeFeedback._inactive.force() } activeFeedback = this; this._initEvents(e); this._active.start() }, _initEvents(e) { const that = this; const eventTarget = this._getEmitterTarget(e); const mouseEvent = (0, _index.isMouseEvent)(e); const isSimulator = _m_devices.default.isSimulator(); const deferFeedback = isSimulator || !mouseEvent; const activeTimeout = (0, _common.ensureDefined)(this.activeTimeout, 30); const inactiveTimeout = (0, _common.ensureDefined)(this.inactiveTimeout, 400); this._active = new FeedbackEvent(deferFeedback ? activeTimeout : 0, (() => { that._fireEvent(ACTIVE_EVENT_NAME, e, { target: eventTarget }) })); this._inactive = new FeedbackEvent(deferFeedback ? inactiveTimeout : 0, (() => { that._fireEvent(INACTIVE_EVENT_NAME, e, { target: eventTarget }); activeFeedback = null })) }, cancel(e) { this.end(e) }, end(e) { const skipTimers = e.type !== _pointer.default.up; if (skipTimers) { this._active.stop() } else { this._active.force() } this._inactive.start(); if (skipTimers) { this._inactive.force() } }, dispose() { this._active.stop(); this._inactive.stop(); if (activeFeedback === this) { activeFeedback = null } this.callBase() }, lockInactive() { this._active.force(); this._inactive.stop(); activeFeedback = null; this._cancel(); return this._inactive.force.bind(this._inactive) } }); FeedbackEmitter.lock = function(deferred) { const lockInactive = activeFeedback ? activeFeedback.lockInactive() : _common.noop; deferred.done(lockInactive) }; (0, _emitter_registrator.default)({ emitter: FeedbackEmitter, events: [ACTIVE_EVENT_NAME, INACTIVE_EVENT_NAME] }); const { lock: lock } = FeedbackEmitter; exports.lock = lock }, 96292: /*!*********************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/events/core/m_emitter.js ***! \*********************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _index = __webpack_require__( /*! ../../../common/core/events/utils/index */ 98834); var _class = _interopRequireDefault(__webpack_require__( /*! ../../../core/class */ 55620)); var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../../core/renderer */ 64553)); var _callbacks = _interopRequireDefault(__webpack_require__( /*! ../../../core/utils/callbacks */ 84718)); var _common = __webpack_require__( /*! ../../../core/utils/common */ 17781); var _extend = __webpack_require__( /*! ../../../core/utils/extend */ 52576); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } const Emitter = _class.default.inherit({ ctor(element) { this._$element = (0, _renderer.default)(element); this._cancelCallback = (0, _callbacks.default)(); this._acceptCallback = (0, _callbacks.default)() }, getElement() { return this._$element }, validate: e => !(0, _index.isDxMouseWheelEvent)(e), validatePointers: e => 1 === (0, _index.hasTouches)(e), allowInterruptionByMouseWheel: () => true, configure(data) { (0, _extend.extend)(this, data) }, addCancelCallback(callback) { this._cancelCallback.add(callback) }, removeCancelCallback() { this._cancelCallback.empty() }, _cancel(e) { this._cancelCallback.fire(this, e) }, addAcceptCallback(callback) { this._acceptCallback.add(callback) }, removeAcceptCallback() { this._acceptCallback.empty() }, _accept(e) { this._acceptCallback.fire(this, e) }, _requestAccept(e) { this._acceptRequestEvent = e }, _forgetAccept() { this._accept(this._acceptRequestEvent); this._acceptRequestEvent = null }, start: _common.noop, move: _common.noop, end: _common.noop, cancel: _common.noop, reset() { if (this._acceptRequestEvent) { this._accept(this._acceptRequestEvent) } }, _fireEvent(eventName, e, params) { const eventData = (0, _extend.extend)({ type: eventName, originalEvent: e, target: this._getEmitterTarget(e), delegateTarget: this.getElement().get(0) }, params); e = (0, _index.fireEvent)(eventData); if (e.cancel) { this._cancel(e) } return e }, _getEmitterTarget(e) { return (this.delegateSelector ? (0, _renderer.default)(e.target).closest(this.delegateSelector) : this.getElement()).get(0) }, dispose: _common.noop }); exports.default = Emitter }, 58063: /*!*********************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/events/core/m_emitter_registrator.js ***! \*********************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _event_registrator = _interopRequireDefault(__webpack_require__( /*! ../../../common/core/events/core/event_registrator */ 15273)); var _events_engine = _interopRequireDefault(__webpack_require__( /*! ../../../common/core/events/core/events_engine */ 92774)); var _wheel = __webpack_require__( /*! ../../../common/core/events/core/wheel */ 37373); var _pointer = _interopRequireDefault(__webpack_require__( /*! ../../../common/core/events/pointer */ 89797)); var _index = __webpack_require__( /*! ../../../common/core/events/utils/index */ 98834); var _class = _interopRequireDefault(__webpack_require__( /*! ../../../core/class */ 55620)); var _dom_adapter = _interopRequireDefault(__webpack_require__( /*! ../../../core/dom_adapter */ 64960)); var _element_data = __webpack_require__( /*! ../../../core/element_data */ 74663); var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../../core/renderer */ 64553)); var _extend = __webpack_require__( /*! ../../../core/utils/extend */ 52576); var _iterator = __webpack_require__( /*! ../../../core/utils/iterator */ 21274); var _ready_callbacks = _interopRequireDefault(__webpack_require__( /*! ../../../core/utils/ready_callbacks */ 3122)); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } const EventManager = _class.default.inherit({ ctor() { this._attachHandlers(); this.reset(); this._proxiedCancelHandler = this._cancelHandler.bind(this); this._proxiedAcceptHandler = this._acceptHandler.bind(this) }, _attachHandlers() { _ready_callbacks.default.add((() => { const document = _dom_adapter.default.getDocument(); _events_engine.default.subscribeGlobal(document, (0, _index.addNamespace)(_pointer.default.down, "dxEventManager"), this._pointerDownHandler.bind(this)); _events_engine.default.subscribeGlobal(document, (0, _index.addNamespace)(_pointer.default.move, "dxEventManager"), this._pointerMoveHandler.bind(this)); _events_engine.default.subscribeGlobal(document, (0, _index.addNamespace)([_pointer.default.up, _pointer.default.cancel].join(" "), "dxEventManager"), this._pointerUpHandler.bind(this)); _events_engine.default.subscribeGlobal(document, (0, _index.addNamespace)(_wheel.name, "dxEventManager"), this._mouseWheelHandler.bind(this)) })) }, _eachEmitter(callback) { const activeEmitters = this._activeEmitters || []; let i = 0; while (activeEmitters.length > i) { const emitter = activeEmitters[i]; if (false === callback(emitter)) { break } if (activeEmitters[i] === emitter) { i++ } } }, _applyToEmitters(method, arg) { this._eachEmitter((emitter => { emitter[method].call(emitter, arg) })) }, reset() { this._eachEmitter(this._proxiedCancelHandler); this._activeEmitters = [] }, resetEmitter(emitter) { this._proxiedCancelHandler(emitter) }, _pointerDownHandler(e) { if ((0, _index.isMouseEvent)(e) && e.which > 1) { return } this._updateEmitters(e) }, _updateEmitters(e) { if (!this._isSetChanged(e)) { return } this._cleanEmitters(e); this._fetchEmitters(e) }, _isSetChanged(e) { const currentSet = this._closestEmitter(e); const previousSet = this._emittersSet || []; let setChanged = currentSet.length !== previousSet.length; (0, _iterator.each)(currentSet, ((index, emitter) => { setChanged = setChanged || previousSet[index] !== emitter; return !setChanged })); this._emittersSet = currentSet; return setChanged }, _closestEmitter(e) { const that = this; const result = []; let $element = (0, _renderer.default)(e.target); function handleEmitter(_, emitter) { if (!!emitter && emitter.validatePointers(e) && emitter.validate(e)) { emitter.addCancelCallback(that._proxiedCancelHandler); emitter.addAcceptCallback(that._proxiedAcceptHandler); result.push(emitter) } } while ($element.length) { const emitters = (0, _element_data.data)($element.get(0), "dxEmitter") || []; (0, _iterator.each)(emitters, handleEmitter); $element = $element.parent() } return result }, _acceptHandler(acceptedEmitter, e) { this._eachEmitter((emitter => { if (emitter !== acceptedEmitter) { this._cancelEmitter(emitter, e) } })) }, _cancelHandler(canceledEmitter, e) { this._cancelEmitter(canceledEmitter, e) }, _cancelEmitter(emitter, e) { const activeEmitters = this._activeEmitters; if (e) { emitter.cancel(e) } else { emitter.reset() } emitter.removeCancelCallback(); emitter.removeAcceptCallback(); const emitterIndex = activeEmitters.indexOf(emitter); if (emitterIndex > -1) { activeEmitters.splice(emitterIndex, 1) } }, _cleanEmitters(e) { this._applyToEmitters("end", e); this.reset(e) }, _fetchEmitters(e) { this._activeEmitters = this._emittersSet.slice(); this._applyToEmitters("start", e) }, _pointerMoveHandler(e) { this._applyToEmitters("move", e) }, _pointerUpHandler(e) { this._updateEmitters(e) }, _mouseWheelHandler(e) { if (!this._allowInterruptionByMouseWheel()) { return } e.pointers = [null]; this._pointerDownHandler(e); this._adjustWheelEvent(e); this._pointerMoveHandler(e); e.pointers = []; this._pointerUpHandler(e) }, _allowInterruptionByMouseWheel() { let allowInterruption = true; this._eachEmitter((emitter => { allowInterruption = emitter.allowInterruptionByMouseWheel() && allowInterruption; return allowInterruption })); return allowInterruption }, _adjustWheelEvent(e) { let closestGestureEmitter = null; this._eachEmitter((emitter => { if (!emitter.gesture) { return } const direction = emitter.getDirection(e); if ("horizontal" !== direction && !e.shiftKey || "vertical" !== direction && e.shiftKey) { closestGestureEmitter = emitter; return false } })); if (!closestGestureEmitter) { return } const direction = closestGestureEmitter.getDirection(e); const verticalGestureDirection = "both" === direction && !e.shiftKey || "vertical" === direction; const prop = verticalGestureDirection ? "pageY" : "pageX"; e[prop] += e.delta }, isActive(element) { let result = false; this._eachEmitter((emitter => { result = result || emitter.getElement().is(element) })); return result } }); const eventManager = new EventManager; exports.default = function(emitterConfig) { const EmitterClass = emitterConfig.emitter; const emitterName = emitterConfig.events[0]; const emitterEvents = emitterConfig.events; (0, _iterator.each)(emitterEvents, ((_, eventName) => { (0, _event_registrator.default)(eventName, { noBubble: !emitterConfig.bubble, setup(element) { const subscriptions = (0, _element_data.data)(element, "dxEmitterSubscription") || {}; const emitters = (0, _element_data.data)(element, "dxEmitter") || {}; const emitter = emitters[emitterName] || new EmitterClass(element); subscriptions[eventName] = true; emitters[emitterName] = emitter; (0, _element_data.data)(element, "dxEmitter", emitters); (0, _element_data.data)(element, "dxEmitterSubscription", subscriptions) }, add(element, handleObj) { const emitters = (0, _element_data.data)(element, "dxEmitter"); const emitter = emitters[emitterName]; emitter.configure((0, _extend.extend)({ delegateSelector: handleObj.selector }, handleObj.data), handleObj.type) }, teardown(element) { const subscriptions = (0, _element_data.data)(element, "dxEmitterSubscription"); const emitters = (0, _element_data.data)(element, "dxEmitter"); const emitter = emitters[emitterName]; delete subscriptions[eventName]; let disposeEmitter = true; (0, _iterator.each)(emitterEvents, ((_, eventName) => { disposeEmitter = disposeEmitter && !subscriptions[eventName]; return disposeEmitter })); if (disposeEmitter) { if (eventManager.isActive(element)) { eventManager.resetEmitter(emitter) } emitter && emitter.dispose(); delete emitters[emitterName] } } }) })) } }, 65381: /*!*******************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/events/core/m_event_registrator.js ***! \*******************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _event_registrator_callbacks = (e = __webpack_require__( /*! ../../../common/core/events/core/event_registrator_callbacks */ 85030), e && e.__esModule ? e : { default: e }); var e; var _iterator = __webpack_require__( /*! ../../../core/utils/iterator */ 21274); const registerEvent = function(name, eventObject) { const strategy = {}; if ("noBubble" in eventObject) { strategy.noBubble = eventObject.noBubble } if ("bindType" in eventObject) { strategy.bindType = eventObject.bindType } if ("delegateType" in eventObject) { strategy.delegateType = eventObject.delegateType }(0, _iterator.each)(["setup", "teardown", "add", "remove", "trigger", "handle", "_default", "dispose"], ((_, methodName) => { if (!eventObject[methodName]) { return } strategy[methodName] = function() { const args = [].slice.call(arguments); args.unshift(this); return eventObject[methodName].apply(eventObject, args) } })); _event_registrator_callbacks.default.fire(name, strategy) }; registerEvent.callbacks = _event_registrator_callbacks.default; exports.default = registerEvent }, 36306: /*!***************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/events/core/m_events_engine.js ***! \***************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _event_registrator_callbacks = _interopRequireDefault(__webpack_require__( /*! ../../../common/core/events/core/event_registrator_callbacks */ 85030)); var _hook_touch_props = _interopRequireDefault(__webpack_require__( /*! ../../../common/core/events/core/hook_touch_props */ 65462)); var _event_target = __webpack_require__( /*! ../../../common/core/events/utils/event_target */ 45280); var _dom_adapter = _interopRequireDefault(__webpack_require__( /*! ../../../core/dom_adapter */ 64960)); var _errors = _interopRequireDefault(__webpack_require__( /*! ../../../core/errors */ 87129)); var _call_once = _interopRequireDefault(__webpack_require__( /*! ../../../core/utils/call_once */ 13630)); var _callbacks = _interopRequireDefault(__webpack_require__( /*! ../../../core/utils/callbacks */ 84718)); var _dependency_injector = _interopRequireDefault(__webpack_require__( /*! ../../../core/utils/dependency_injector */ 89656)); var _extend = __webpack_require__( /*! ../../../core/utils/extend */ 52576); var _type = __webpack_require__( /*! ../../../core/utils/type */ 11528); var _window = __webpack_require__( /*! ../../../core/utils/window */ 3104); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } const window = (0, _window.getWindow)(); const NATIVE_EVENTS_TO_SUBSCRIBE = { mouseenter: "mouseover", mouseleave: "mouseout", pointerenter: "pointerover", pointerleave: "pointerout" }; const NATIVE_EVENTS_TO_TRIGGER = { focusin: "focus", focusout: "blur" }; const NO_BUBBLE_EVENTS = ["blur", "focus", "load"]; const forcePassiveFalseEventNames = ["touchmove", "wheel", "mousewheel", "touchstart"]; function matchesSafe(target, selector) { return !(0, _type.isWindow)(target) && "#document" !== target.nodeName && _dom_adapter.default.elementMatches(target, selector) } const elementDataMap = new WeakMap; let guid = 0; let skipEvent; const special = function() { const specialData = {}; _event_registrator_callbacks.default.add(((eventName, eventObject) => { specialData[eventName] = eventObject })); return { getField: (eventName, field) => specialData[eventName] && specialData[eventName][field], callMethod: (eventName, methodName, context, args) => specialData[eventName] && specialData[eventName][methodName] && specialData[eventName][methodName].apply(context, args) } }(); const eventsEngine = (0, _dependency_injector.default)({ on: getHandler(normalizeOnArguments(iterate(((element, eventName, selector, data, handler) => { const handlersController = getHandlersController(element, eventName); handlersController.addHandler(handler, selector, data) })))), one: getHandler(normalizeOnArguments(((element, eventName, selector, data, handler) => { const oneTimeHandler = function() { eventsEngine.off(element, eventName, selector, oneTimeHandler); handler.apply(this, arguments) }; eventsEngine.on(element, eventName, selector, data, oneTimeHandler) }))), off: getHandler((callback = iterate(((element, eventName, selector, handler) => { const handlersController = getHandlersController(element, eventName); handlersController.removeHandler(handler, selector) })), function(element, eventName, selector, handler) { if ("function" === typeof selector) { handler = selector; selector = void 0 } callback(element, eventName, selector, handler) })), trigger: getHandler(normalizeTriggerArguments(((element, event, extraParameters) => { const eventName = event.type; const handlersController = getHandlersController(element, event.type); special.callMethod(eventName, "trigger", element, [event, extraParameters]); handlersController.callHandlers(event, extraParameters); const noBubble = special.getField(eventName, "noBubble") || event.isPropagationStopped() || NO_BUBBLE_EVENTS.includes(eventName); if (!noBubble) { const parents = []; const getParents = function(element) { const parent = element.parentNode ?? ((0, _type.isObject)(element.host) ? element.host : null); if (parent) { parents.push(parent); getParents(parent) } }; getParents(element); parents.push(window); let i = 0; while (parents[i] && !event.isPropagationStopped()) { const parentDataByEvent = getHandlersController(parents[i], event.type); parentDataByEvent.callHandlers((0, _extend.extend)(event, { currentTarget: parents[i] }), extraParameters); i++ } } if (element.nodeType || (0, _type.isWindow)(element)) { special.callMethod(eventName, "_default", element, [event, extraParameters]); ! function(eventName, element) { const nativeMethodName = NATIVE_EVENTS_TO_TRIGGER[eventName] || eventName; const isLinkClickEvent = function(eventName, element) { return "click" === eventName && "a" === element.localName }; if (isLinkClickEvent(eventName, element)) { return } if ((0, _type.isFunction)(element[nativeMethodName])) { skipEvent = eventName; element[nativeMethodName](); skipEvent = void 0 } }(eventName, element) } }))), triggerHandler: getHandler(normalizeTriggerArguments(((element, event, extraParameters) => { const handlersController = getHandlersController(element, event.type); handlersController.callHandlers(event, extraParameters) }))) }); var callback; function applyForEach(args, method) { const element = args[0]; if (!element) { return } if (_dom_adapter.default.isNode(element) || (0, _type.isWindow)(element)) { method.apply(eventsEngine, args) } else if (!(0, _type.isString)(element) && "length" in element) { const itemArgs = Array.prototype.slice.call(args, 0); Array.prototype.forEach.call(element, (itemElement => { itemArgs[0] = itemElement; applyForEach(itemArgs, method) })) } else { throw _errors.default.Error("E0025") } } function getHandler(method) { return function() { applyForEach(arguments, method) } } const passiveEventHandlersSupported = (0, _call_once.default)((function() { let isSupported = false; try { const options = Object.defineProperty({}, "passive", { get() { isSupported = true; return true } }); window.addEventListener("test", null, options) } catch (e) {} return isSupported })); const contains = (container, element) => { if ((0, _type.isWindow)(container)) { return contains(container.document, element) } return container.contains ? container.contains(element) : !!(element.compareDocumentPosition(container) & element.DOCUMENT_POSITION_CONTAINS) }; function getHandlersController(element, eventName) { let elementData = elementDataMap.get(element); eventName = eventName || ""; const eventNameParts = eventName.split("."); const namespaces = eventNameParts.slice(1); const eventNameIsDefined = !!eventNameParts[0]; eventName = eventNameParts[0] || "dxEmptyEventType"; if (!elementData) { elementData = {}; elementDataMap.set(element, elementData) } if (!elementData[eventName]) { elementData[eventName] = { handleObjects: [], nativeHandler: null } } const eventData = elementData[eventName]; return { addHandler(handler, selector, data) { const callHandler = function(e, extraParameters) { const handlerArgs = [e]; const target = e.currentTarget; const { relatedTarget: relatedTarget } = e; let secondaryTargetIsInside; let result; if (eventName in NATIVE_EVENTS_TO_SUBSCRIBE) { secondaryTargetIsInside = relatedTarget && target && (relatedTarget === target || contains(target, relatedTarget)) } if (void 0 !== extraParameters) { handlerArgs.push(extraParameters) } special.callMethod(eventName, "handle", element, [e, data]); if (!secondaryTargetIsInside) { result = handler.apply(target, handlerArgs) } if (false === result) { e.preventDefault(); e.stopPropagation() } }; const handleObject = { handler: handler, wrappedHandler: function(e, extraParameters) { if (skipEvent && e.type === skipEvent) { return } e.data = data; e.delegateTarget = element; if (selector) { let currentTarget = e.target; while (currentTarget && currentTarget !== element) { if (matchesSafe(currentTarget, selector)) { e.currentTarget = currentTarget; callHandler(e, extraParameters) } currentTarget = currentTarget.parentNode } } else { var _e$target; e.currentTarget = e.delegateTarget || e.target; const isTargetInShadowDOM = Boolean(null === (_e$target = e.target) || void 0 === _e$target ? void 0 : _e$target.shadowRoot); if (isTargetInShadowDOM) { const target = (0, _event_target.getEventTarget)(e); e.target = target } callHandler(e, extraParameters) } }, selector: selector, type: eventName, data: data, namespace: namespaces.join("."), namespaces: namespaces, guid: ++guid }; eventData.handleObjects.push(handleObject); const firstHandlerForTheType = 1 === eventData.handleObjects.length; let shouldAddNativeListener = firstHandlerForTheType && eventNameIsDefined; let nativeListenerOptions; if (shouldAddNativeListener) { shouldAddNativeListener = !special.callMethod(eventName, "setup", element, [data, namespaces, handler]) } if (shouldAddNativeListener) { eventData.nativeHandler = (subscribeName = eventName, function(event, extraParameters) { const handlersController = getHandlersController(this, subscribeName); event = eventsEngine.Event(event); handlersController.callHandlers(event, extraParameters) }); if (passiveEventHandlersSupported() && forcePassiveFalseEventNames.includes(eventName)) { nativeListenerOptions = { passive: false } } eventData.removeListener = _dom_adapter.default.listen(element, NATIVE_EVENTS_TO_SUBSCRIBE[eventName] || eventName, eventData.nativeHandler, nativeListenerOptions) } var subscribeName; special.callMethod(eventName, "add", element, [handleObject]) }, removeHandler(handler, selector) { const removeByEventName = function(eventName) { const eventData = elementData[eventName]; if (!eventData.handleObjects.length) { delete elementData[eventName]; return } let removedHandler; eventData.handleObjects = eventData.handleObjects.filter((handleObject => { const skip = namespaces.length && !isSubset(handleObject.namespaces, namespaces) || handler && handleObject.handler !== handler || selector && handleObject.selector !== selector; if (!skip) { removedHandler = handleObject.handler; special.callMethod(eventName, "remove", element, [handleObject]) } return skip })); const lastHandlerForTheType = !eventData.handleObjects.length; const shouldRemoveNativeListener = lastHandlerForTheType && "dxEmptyEventType" !== eventName; if (shouldRemoveNativeListener) { special.callMethod(eventName, "teardown", element, [namespaces, removedHandler]); if (eventData.nativeHandler) { eventData.removeListener() } delete elementData[eventName] } }; if (eventNameIsDefined) { removeByEventName(eventName) } else { for (const name in elementData) { removeByEventName(name) } } const elementDataIsEmpty = 0 === Object.keys(elementData).length; if (elementDataIsEmpty) { elementDataMap.delete(element) } }, callHandlers(event, extraParameters) { let forceStop = false; const handleCallback = function(handleObject) { if (forceStop) { return } if (!namespaces.length || isSubset(handleObject.namespaces, namespaces)) { handleObject.wrappedHandler(event, extraParameters); forceStop = event.isImmediatePropagationStopped() } }; eventData.handleObjects.forEach(handleCallback); if (namespaces.length && elementData.dxEmptyEventType) { elementData.dxEmptyEventType.handleObjects.forEach(handleCallback) } } } } function isSubset(original, checked) { for (let i = 0; i < checked.length; i++) { if (original.indexOf(checked[i]) < 0) { return false } } return true } function normalizeOnArguments(callback) { return function(element, eventName, selector, data, handler) { if (!handler) { handler = data; data = void 0 } if ("string" !== typeof selector) { data = selector; selector = void 0 } if (!handler && "string" === typeof eventName) { handler = data || selector; selector = void 0; data = void 0 } callback(element, eventName, selector, data, handler) } } function normalizeTriggerArguments(callback) { return function(element, src, extraParameters) { if ("string" === typeof src) { src = { type: src } } if (!src.target) { src.target = element } src.currentTarget = element; if (!src.delegateTarget) { src.delegateTarget = element } if (!src.type && src.originalEvent) { src.type = src.originalEvent.type } callback(element, src instanceof eventsEngine.Event ? src : eventsEngine.Event(src), extraParameters) } } function iterate(callback) { const iterateEventNames = function(element, eventName) { if (eventName && eventName.indexOf(" ") > -1) { const args = Array.prototype.slice.call(arguments, 0); eventName.split(" ").forEach((function(eventName) { args[1] = eventName; callback.apply(this, args) })) } else { callback.apply(this, arguments) } }; return function(element, eventName) { if ("object" === typeof eventName) { const args = Array.prototype.slice.call(arguments, 0); for (const name in eventName) { args[1] = name; args[args.length - 1] = eventName[name]; iterateEventNames.apply(this, args) } } else { iterateEventNames.apply(this, arguments) } } } function calculateWhich(event) { if (function(event) { return null == event.which && 0 === event.type.indexOf("key") }(event)) { return null != event.charCode ? event.charCode : event.keyCode } if (function(event) { return !event.which && void 0 !== event.button && /^(?:mouse|pointer|contextmenu|drag|drop)|click/.test(event.type) }(event)) { const whichByButton = { 1: 1, 2: 3, 3: 1, 4: 2 }; return whichByButton[event.button] } return event.which } function initEvent(EventClass) { if (EventClass) { eventsEngine.Event = EventClass; eventsEngine.Event.prototype = EventClass.prototype } } initEvent(function(callback) { eventsEngine.Event = function(src, config) { if (!(this instanceof eventsEngine.Event)) { return new eventsEngine.Event(src, config) } if (!src) { src = {} } if ("string" === typeof src) { src = { type: src } } if (!config) { config = {} } callback.call(this, src, config) }; Object.assign(eventsEngine.Event.prototype, { _propagationStopped: false, _immediatePropagationStopped: false, _defaultPrevented: false, isPropagationStopped() { return !!(this._propagationStopped || this.originalEvent && this.originalEvent.propagationStopped) }, stopPropagation() { this._propagationStopped = true; this.originalEvent && this.originalEvent.stopPropagation() }, isImmediatePropagationStopped() { return this._immediatePropagationStopped }, stopImmediatePropagation() { this.stopPropagation(); this._immediatePropagationStopped = true; this.originalEvent && this.originalEvent.stopImmediatePropagation() }, isDefaultPrevented() { return !!(this._defaultPrevented || this.originalEvent && this.originalEvent.defaultPrevented) }, preventDefault() { this._defaultPrevented = true; this.originalEvent && this.originalEvent.preventDefault() } }); return eventsEngine.Event }((function(src, config) { var _src$view; const srcIsEvent = src instanceof eventsEngine.Event || (0, _window.hasWindow)() && src instanceof window.Event || (null === (_src$view = src.view) || void 0 === _src$view ? void 0 : _src$view.Event) && src instanceof src.view.Event; if (srcIsEvent) { this.originalEvent = src; this.type = src.type; this.currentTarget = void 0; if (Object.prototype.hasOwnProperty.call(src, "isTrusted")) { this.isTrusted = src.isTrusted } this.timeStamp = src.timeStamp || Date.now() } else { Object.assign(this, src) } addProperty("which", calculateWhich, this); if (0 === src.type.indexOf("touch")) { delete config.pageX; delete config.pageY } Object.assign(this, config); this.guid = ++guid }))); function addProperty(propName, hook, eventInstance) { Object.defineProperty(eventInstance || eventsEngine.Event.prototype, propName, { enumerable: true, configurable: true, get() { return this.originalEvent && hook(this.originalEvent) }, set(value) { Object.defineProperty(this, propName, { enumerable: true, configurable: true, writable: true, value: value }) } }) } ["target", "relatedTarget", "delegateTarget", "altKey", "bubbles", "cancelable", "changedTouches", "ctrlKey", "detail", "eventPhase", "metaKey", "shiftKey", "view", "char", "code", "charCode", "key", "keyCode", "button", "buttons", "offsetX", "offsetY", "pointerId", "pointerType", "targetTouches", "toElement", "touches"].forEach((prop => addProperty(prop, (event => event[prop])))); (0, _hook_touch_props.default)(addProperty); const beforeSetStrategy = (0, _callbacks.default)(); const afterSetStrategy = (0, _callbacks.default)(); eventsEngine.set = function(engine) { beforeSetStrategy.fire(); eventsEngine.inject(engine); initEvent(engine.Event); afterSetStrategy.fire() }; eventsEngine.subscribeGlobal = function() { applyForEach(arguments, normalizeOnArguments((function() { const args = arguments; eventsEngine.on.apply(this, args); beforeSetStrategy.add((function() { const offArgs = Array.prototype.slice.call(args, 0); offArgs.splice(3, 1); eventsEngine.off.apply(this, offArgs) })); afterSetStrategy.add((function() { eventsEngine.on.apply(this, args) })) }))) }; eventsEngine.forcePassiveFalseEventNames = forcePassiveFalseEventNames; eventsEngine.passiveEventHandlersSupported = passiveEventHandlersSupported; exports.default = eventsEngine }, 40866: /*!******************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/events/core/m_hook_touch_props.js ***! \******************************************************************************************/ function(__unused_webpack_module, exports) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = function(callback) { touchPropsToHook.forEach((name => { callback(name, (event => touchPropHook(name, event))) }), this) }; const touchPropsToHook = ["pageX", "pageY", "screenX", "screenY", "clientX", "clientY"]; const touchPropHook = function(name, event) { if (event[name] && !event.touches || !event.touches) { return event[name] } const touches = event.touches.length ? event.touches : event.changedTouches; if (!touches.length) { return } return touches[0][name] } }, 34422: /*!********************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/events/core/m_keyboard_processor.js ***! \********************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _events_engine = _interopRequireDefault(__webpack_require__( /*! ../../../common/core/events/core/events_engine */ 92774)); var _index = __webpack_require__( /*! ../../../common/core/events/utils/index */ 98834); var _class = _interopRequireDefault(__webpack_require__( /*! ../../../core/class */ 55620)); var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../../core/renderer */ 64553)); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } const createKeyDownOptions = e => ({ keyName: (0, _index.normalizeKeyName)(e), key: e.key, code: e.code, ctrl: e.ctrlKey, location: e.location, metaKey: e.metaKey, shift: e.shiftKey, alt: e.altKey, which: e.which, originalEvent: e }); const KeyboardProcessor = _class.default.inherit({ _keydown: (0, _index.addNamespace)("keydown", "KeyboardProcessor"), _compositionStart: (0, _index.addNamespace)("compositionstart", "KeyboardProcessor"), _compositionEnd: (0, _index.addNamespace)("compositionend", "KeyboardProcessor"), ctor(options) { options = options || {}; if (options.element) { this._element = (0, _renderer.default)(options.element) } if (options.focusTarget) { this._focusTarget = options.focusTarget } this._handler = options.handler; if (this._element) { this._processFunction = e => { const focusTargets = (0, _renderer.default)(this._focusTarget).toArray(); const isNotFocusTarget = this._focusTarget && this._focusTarget !== e.target && !focusTargets.includes(e.target); const shouldSkipProcessing = this._isComposingJustFinished && 229 === e.which || this._isComposing || isNotFocusTarget; this._isComposingJustFinished = false; if (!shouldSkipProcessing) { this.process(e) } }; this._toggleProcessingWithContext = this.toggleProcessing.bind(this); _events_engine.default.on(this._element, this._keydown, this._processFunction); _events_engine.default.on(this._element, this._compositionStart, this._toggleProcessingWithContext); _events_engine.default.on(this._element, this._compositionEnd, this._toggleProcessingWithContext) } }, dispose() { if (this._element) { _events_engine.default.off(this._element, this._keydown, this._processFunction); _events_engine.default.off(this._element, this._compositionStart, this._toggleProcessingWithContext); _events_engine.default.off(this._element, this._compositionEnd, this._toggleProcessingWithContext) } this._element = void 0; this._handler = void 0 }, process(e) { this._handler(createKeyDownOptions(e)) }, toggleProcessing(_ref) { let { type: type } = _ref; this._isComposing = "compositionstart" === type; this._isComposingJustFinished = !this._isComposing } }); KeyboardProcessor.createKeyDownOptions = createKeyDownOptions; exports.default = KeyboardProcessor }, 58065: /*!*******************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/events/core/m_wheel.js ***! \*******************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.name = void 0; var _event_registrator = _interopRequireDefault(__webpack_require__( /*! ../../../common/core/events/core/event_registrator */ 15273)); var _events_engine = _interopRequireDefault(__webpack_require__( /*! ../../../common/core/events/core/events_engine */ 92774)); var _index = __webpack_require__( /*! ../../../common/core/events/utils/index */ 98834); var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../../core/renderer */ 64553)); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } const EVENT_NAME = exports.name = "dxmousewheel"; const wheel = { setup(element) { const $element = (0, _renderer.default)(element); _events_engine.default.on($element, (0, _index.addNamespace)("wheel", "dxWheel"), wheel._wheelHandler.bind(wheel)) }, teardown(element) { _events_engine.default.off(element, ".dxWheel") }, _wheelHandler(e) { const { deltaMode: deltaMode, deltaY: deltaY, deltaX: deltaX, deltaZ: deltaZ } = e.originalEvent; (0, _index.fireEvent)({ type: EVENT_NAME, originalEvent: e, delta: this._normalizeDelta(deltaY, deltaMode), deltaX: deltaX, deltaY: deltaY, deltaZ: deltaZ, deltaMode: deltaMode, pointerType: "mouse" }); e.stopPropagation() }, _normalizeDelta(delta) { let deltaMode = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : 0; if (0 === deltaMode) { return -delta } return -30 * delta } }; (0, _event_registrator.default)(EVENT_NAME, wheel) }, 77859: /*!********************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/events/gesture/m_emitter.gesture.js ***! \********************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _emitter = _interopRequireDefault(__webpack_require__( /*! ../../../common/core/events/core/emitter */ 59e3)); var _events_engine = _interopRequireDefault(__webpack_require__( /*! ../../../common/core/events/core/events_engine */ 92774)); var _index = __webpack_require__( /*! ../../../common/core/events/utils/index */ 98834); var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../../core/renderer */ 64553)); var _call_once = _interopRequireDefault(__webpack_require__( /*! ../../../core/utils/call_once */ 13630)); var _common = __webpack_require__( /*! ../../../core/utils/common */ 17781); var _math = __webpack_require__( /*! ../../../core/utils/math */ 50254); var _ready_callbacks = _interopRequireDefault(__webpack_require__( /*! ../../../core/utils/ready_callbacks */ 3122)); var _style = __webpack_require__( /*! ../../../core/utils/style */ 58515); var _type = __webpack_require__( /*! ../../../core/utils/type */ 11528); var _m_devices = _interopRequireDefault(__webpack_require__( /*! ../../core/m_devices */ 98905)); var _m_dom = _interopRequireDefault(__webpack_require__( /*! ../../core/utils/m_dom */ 76400)); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } const ready = _ready_callbacks.default.add; const { abs: abs } = Math; let TOUCH_BOUNDARY = 10; const setGestureCover = (0, _call_once.default)((() => { const isDesktop = "desktop" === _m_devices.default.real().deviceType; if (!(0, _style.styleProp)("pointer-events") || !isDesktop) { return _common.noop } const $cover = (0, _renderer.default)("
").addClass("dx-gesture-cover").css("pointerEvents", "none"); _events_engine.default.subscribeGlobal($cover, "dxmousewheel", (e => { e.preventDefault() })); ready((() => { $cover.appendTo("body") })); return function(toggle, cursor) { $cover.css("pointerEvents", toggle ? "all" : "none"); toggle && $cover.css("cursor", cursor) } })); const GestureEmitter = _emitter.default.inherit({ gesture: true, configure(data) { this.getElement().css("msTouchAction", data.immediate ? "pinch-zoom" : ""); this.callBase(data) }, allowInterruptionByMouseWheel() { return 2 !== this._stage }, getDirection() { return this.direction }, _cancel() { this.callBase.apply(this, arguments); this._toggleGestureCover(false); this._stage = 0 }, start(e) { if (e._needSkipEvent || (0, _index.needSkipEvent)(e)) { this._cancel(e); return } this._startEvent = (0, _index.createEvent)(e); this._startEventData = (0, _index.eventData)(e); this._stage = 1; this._init(e); this._setupImmediateTimer() }, _setupImmediateTimer() { clearTimeout(this._immediateTimer); this._immediateAccepted = false; if (!this.immediate) { return } if (0 === this.immediateTimeout) { this._immediateAccepted = true; return } this._immediateTimer = setTimeout((() => { this._immediateAccepted = true }), this.immediateTimeout ?? 180) }, move(e) { if (1 === this._stage && this._directionConfirmed(e)) { this._stage = 2; this._resetActiveElement(); this._toggleGestureCover(true); this._clearSelection(e); this._adjustStartEvent(e); this._start(this._startEvent); if (0 === this._stage) { return } this._requestAccept(e); this._move(e); this._forgetAccept() } else if (2 === this._stage) { this._clearSelection(e); this._move(e) } }, _directionConfirmed(e) { const touchBoundary = this._getTouchBoundary(e); const delta = (0, _index.eventDelta)(this._startEventData, (0, _index.eventData)(e)); const deltaX = abs(delta.x); const deltaY = abs(delta.y); const horizontalMove = this._validateMove(touchBoundary, deltaX, deltaY); const verticalMove = this._validateMove(touchBoundary, deltaY, deltaX); const direction = this.getDirection(e); const bothAccepted = "both" === direction && (horizontalMove || verticalMove); const horizontalAccepted = "horizontal" === direction && horizontalMove; const verticalAccepted = "vertical" === direction && verticalMove; return bothAccepted || horizontalAccepted || verticalAccepted || this._immediateAccepted }, _validateMove(touchBoundary, mainAxis, crossAxis) { return mainAxis && mainAxis >= touchBoundary && (this.immediate ? mainAxis >= crossAxis : true) }, _getTouchBoundary(e) { return this.immediate || (0, _index.isDxMouseWheelEvent)(e) ? 0 : TOUCH_BOUNDARY }, _adjustStartEvent(e) { const touchBoundary = this._getTouchBoundary(e); const delta = (0, _index.eventDelta)(this._startEventData, (0, _index.eventData)(e)); this._startEvent.pageX += (0, _math.sign)(delta.x) * touchBoundary; this._startEvent.pageY += (0, _math.sign)(delta.y) * touchBoundary }, _resetActiveElement() { if ("ios" === _m_devices.default.real().platform && this.getElement().find(":focus").length) { _m_dom.default.resetActiveElement() } }, _toggleGestureCover(toggle) { this._toggleGestureCoverImpl(toggle) }, _toggleGestureCoverImpl(toggle) { const isStarted = 2 === this._stage; if (isStarted) { ! function(toggle, cursor) { const gestureCoverStrategy = setGestureCover(); gestureCoverStrategy(toggle, cursor) }(toggle, this.getElement().css("cursor")) } }, _clearSelection(e) { if ((0, _index.isDxMouseWheelEvent)(e) || (0, _index.isTouchEvent)(e)) { return } _m_dom.default.clearSelection() }, end(e) { this._toggleGestureCover(false); if (2 === this._stage) { this._end(e) } else if (1 === this._stage) { this._stop(e) } this._stage = 0 }, dispose() { clearTimeout(this._immediateTimer); this.callBase.apply(this, arguments); this._toggleGestureCover(false) }, _init: _common.noop, _start: _common.noop, _move: _common.noop, _stop: _common.noop, _end: _common.noop }); GestureEmitter.initialTouchBoundary = TOUCH_BOUNDARY; GestureEmitter.touchBoundary = function(newBoundary) { if ((0, _type.isDefined)(newBoundary)) { TOUCH_BOUNDARY = newBoundary; return } return TOUCH_BOUNDARY }; exports.default = GestureEmitter }, 18572: /*!***************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/events/gesture/m_emitter.gesture.scroll.js ***! \***************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _frame = __webpack_require__( /*! ../../../common/core/animation/frame */ 84096); var _emitter_registrator = _interopRequireDefault(__webpack_require__( /*! ../../../common/core/events/core/emitter_registrator */ 81411)); var _events_engine = _interopRequireDefault(__webpack_require__( /*! ../../../common/core/events/core/events_engine */ 92774)); var _emitter = _interopRequireDefault(__webpack_require__( /*! ../../../common/core/events/gesture/emitter.gesture */ 85915)); var _index = __webpack_require__( /*! ../../../common/core/events/utils/index */ 98834); var _class = _interopRequireDefault(__webpack_require__( /*! ../../../core/class */ 55620)); var _m_devices = _interopRequireDefault(__webpack_require__( /*! ../../core/m_devices */ 98905)); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } const { abstract: abstract } = _class.default; const realDevice = _m_devices.default.real(); const Locker = _class.default.inherit(function() { const NAMESPACED_SCROLL_EVENT = (0, _index.addNamespace)("scroll", "dxScrollEmitter"); return { ctor(element) { this._element = element; this._locked = false; this._proxiedScroll = e => { if (!this._disposed) { this._scroll(e) } }; _events_engine.default.on(this._element, NAMESPACED_SCROLL_EVENT, this._proxiedScroll) }, _scroll: abstract, check(e, callback) { if (this._locked) { callback() } }, dispose() { this._disposed = true; _events_engine.default.off(this._element, NAMESPACED_SCROLL_EVENT, this._proxiedScroll) } } }()); const TimeoutLocker = Locker.inherit({ ctor(element, timeout) { this.callBase(element); this._timeout = timeout }, _scroll() { this._prepare(); this._forget() }, _prepare() { if (this._timer) { this._clearTimer() } this._locked = true }, _clearTimer() { clearTimeout(this._timer); this._locked = false; this._timer = null }, _forget() { const that = this; this._timer = setTimeout((() => { that._clearTimer() }), this._timeout) }, dispose() { this.callBase(); this._clearTimer() } }); const WheelLocker = TimeoutLocker.inherit({ ctor(element) { this.callBase(element, 400); this._lastWheelDirection = null }, check(e, callback) { this._checkDirectionChanged(e); this.callBase(e, callback) }, _checkDirectionChanged(e) { if (!(0, _index.isDxMouseWheelEvent)(e)) { this._lastWheelDirection = null; return } const direction = e.shiftKey || false; const directionChange = null !== this._lastWheelDirection && direction !== this._lastWheelDirection; this._lastWheelDirection = direction; this._locked = this._locked && !directionChange } }); let PointerLocker = TimeoutLocker.inherit({ ctor(element) { this.callBase(element, 400) } }); ! function() { const { ios: isIos, android: isAndroid } = realDevice; if (!(isIos || isAndroid)) { return } PointerLocker = Locker.inherit({ _scroll() { this._locked = true; const that = this; (0, _frame.cancelAnimationFrame)(this._scrollFrame); this._scrollFrame = (0, _frame.requestAnimationFrame)((() => { that._locked = false })) }, check(e, callback) { (0, _frame.cancelAnimationFrame)(this._scrollFrame); (0, _frame.cancelAnimationFrame)(this._checkFrame); const that = this; const { callBase: callBase } = this; this._checkFrame = (0, _frame.requestAnimationFrame)((() => { callBase.call(that, e, callback); that._locked = false })) }, dispose() { this.callBase(); (0, _frame.cancelAnimationFrame)(this._scrollFrame); (0, _frame.cancelAnimationFrame)(this._checkFrame) } }) }(); const ScrollEmitter = _emitter.default.inherit(function() { const FRAME_DURATION = Math.round(1e3 / 60); return { ctor(element) { this.callBase.apply(this, arguments); this.direction = "both"; this._pointerLocker = new PointerLocker(element); this._wheelLocker = new WheelLocker(element) }, validate: () => true, configure(data) { if (data.scrollTarget) { this._pointerLocker.dispose(); this._wheelLocker.dispose(); this._pointerLocker = new PointerLocker(data.scrollTarget); this._wheelLocker = new WheelLocker(data.scrollTarget) } this.callBase(data) }, _init(e) { this._wheelLocker.check(e, (() => { if ((0, _index.isDxMouseWheelEvent)(e)) { this._accept(e) } })); this._pointerLocker.check(e, (() => { const skipCheck = this.isNative && (0, _index.isMouseEvent)(e); if (!(0, _index.isDxMouseWheelEvent)(e) && !skipCheck) { this._accept(e) } })); this._fireEvent("dxscrollinit", e); this._prevEventData = (0, _index.eventData)(e) }, move(e) { this.callBase.apply(this, arguments); e.isScrollingEvent = this.isNative || e.isScrollingEvent }, _start(e) { this._savedEventData = (0, _index.eventData)(e); this._fireEvent("dxscrollstart", e); this._prevEventData = (0, _index.eventData)(e) }, _move(e) { const currentEventData = (0, _index.eventData)(e); this._fireEvent("dxscroll", e, { delta: (0, _index.eventDelta)(this._prevEventData, currentEventData) }); const delta = (0, _index.eventDelta)(this._savedEventData, currentEventData); if (delta.time > 200) { this._savedEventData = this._prevEventData } this._prevEventData = (0, _index.eventData)(e) }, _end(e) { const endEventDelta = (0, _index.eventDelta)(this._prevEventData, (0, _index.eventData)(e)); let velocity = { x: 0, y: 0 }; if (!(0, _index.isDxMouseWheelEvent)(e) && endEventDelta.time < 100) { const delta = (0, _index.eventDelta)(this._savedEventData, this._prevEventData); const velocityMultiplier = FRAME_DURATION / delta.time; velocity = { x: delta.x * velocityMultiplier, y: delta.y * velocityMultiplier } } this._fireEvent("dxscrollend", e, { velocity: velocity }) }, _stop(e) { this._fireEvent("dxscrollstop", e) }, cancel(e) { this.callBase.apply(this, arguments); this._fireEvent("dxscrollcancel", e) }, dispose() { this.callBase.apply(this, arguments); this._pointerLocker.dispose(); this._wheelLocker.dispose() }, _clearSelection() { if (this.isNative) { return } return this.callBase.apply(this, arguments) }, _toggleGestureCover() { if (this.isNative) { return } return this.callBase.apply(this, arguments) } } }()); (0, _emitter_registrator.default)({ emitter: ScrollEmitter, events: ["dxscrollinit", "dxscrollstart", "dxscroll", "dxscrollend", "dxscrollstop", "dxscrollcancel"] }); exports.default = { init: "dxscrollinit", start: "dxscrollstart", move: "dxscroll", end: "dxscrollend", stop: "dxscrollstop", cancel: "dxscrollcancel", scroll: "scroll" } }, 54078: /*!**************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/events/gesture/m_swipeable.js ***! \**************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _events_engine = _interopRequireDefault(__webpack_require__( /*! ../../../common/core/events/core/events_engine */ 92774)); var _swipe = __webpack_require__( /*! ../../../common/core/events/swipe */ 80250); var _index = __webpack_require__( /*! ../../../common/core/events/utils/index */ 98834); var _iterator = __webpack_require__( /*! ../../../core/utils/iterator */ 21274); var _public_component = __webpack_require__( /*! ../../../core/utils/public_component */ 85521); var _dom_component = _interopRequireDefault(__webpack_require__( /*! ../../core/widget/dom_component */ 22331)); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } function _extends() { return _extends = Object.assign ? Object.assign.bind() : function(n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) { ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]) } } return n }, _extends.apply(null, arguments) } const ACTION_TO_EVENT_MAP = { onStart: _swipe.start, onUpdated: _swipe.swipe, onEnd: _swipe.end, onCancel: "dxswipecancel" }; class Swipeable extends _dom_component.default { _getDefaultOptions() { return _extends({}, super._getDefaultOptions(), { elastic: true, immediate: false, immediateTimeout: 180, direction: "horizontal", itemSizeFunc: null, onStart: null, onUpdated: null, onEnd: null, onCancel: null }) } _render() { super._render(); this.$element().addClass("dx-swipeable"); this._attachEventHandlers() } _attachEventHandlers() { this._detachEventHandlers(); if (this.option("disabled")) { return } const { NAME: NAME } = this; this._createEventData(); (0, _iterator.each)(ACTION_TO_EVENT_MAP, ((actionName, eventName) => { const action = this._createActionByOption(actionName, { context: this }); eventName = (0, _index.addNamespace)(eventName, NAME); _events_engine.default.on(this.$element(), eventName, this._eventData, (e => action({ event: e }))) })) } _createEventData() { this._eventData = { elastic: this.option("elastic"), itemSizeFunc: this.option("itemSizeFunc"), direction: this.option("direction"), immediate: this.option("immediate"), immediateTimeout: this.option("immediateTimeout") } } _detachEventHandlers() { _events_engine.default.off(this.$element(), ".dxSwipeable") } _optionChanged(args) { switch (args.name) { case "disabled": case "onStart": case "onUpdated": case "onEnd": case "onCancel": case "elastic": case "immediate": case "itemSizeFunc": case "direction": this._detachEventHandlers(); this._attachEventHandlers(); break; case "rtlEnabled": break; default: super._optionChanged(args) } } _useTemplates() { return false } }(0, _public_component.name)(Swipeable, "dxSwipeable"); exports.default = Swipeable }, 28356: /*!**************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/events/m_click.js ***! \**************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.name = void 0; var _frame = __webpack_require__( /*! ../../animation/frame */ 81578); var _emitter = _interopRequireDefault(__webpack_require__( /*! ../../common/core/events/core/emitter */ 59e3)); var _emitter_registrator = _interopRequireDefault(__webpack_require__( /*! ../../common/core/events/core/emitter_registrator */ 81411)); var _events_engine = _interopRequireDefault(__webpack_require__( /*! ../../common/core/events/core/events_engine */ 92774)); var _pointer = _interopRequireDefault(__webpack_require__( /*! ../../common/core/events/pointer */ 89797)); var _event_nodes_disposing = __webpack_require__( /*! ../../common/core/events/utils/event_nodes_disposing */ 47413); var _event_target = __webpack_require__( /*! ../../common/core/events/utils/event_target */ 45280); var _index = __webpack_require__( /*! ../../common/core/events/utils/index */ 98834); var _dom_adapter = _interopRequireDefault(__webpack_require__( /*! ../../core/dom_adapter */ 64960)); var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../core/renderer */ 64553)); var _m_devices = _interopRequireDefault(__webpack_require__( /*! ../core/m_devices */ 98905)); var _m_dom = _interopRequireDefault(__webpack_require__( /*! ../core/utils/m_dom */ 76400)); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } const CLICK_EVENT_NAME = exports.name = "dxclick"; _frame.requestAnimationFrame, _frame.cancelAnimationFrame; let prevented = null; let lastFiredEvent = null; const onNodeRemove = () => { lastFiredEvent = null }; const clickHandler = function(e) { const { originalEvent: originalEvent } = e; const eventAlreadyFired = lastFiredEvent === originalEvent || originalEvent && originalEvent.DXCLICK_FIRED; const leftButton = !e.which || 1 === e.which; if (leftButton && !prevented && !eventAlreadyFired) { if (originalEvent) { originalEvent.DXCLICK_FIRED = true }(0, _event_nodes_disposing.unsubscribeNodesDisposing)(lastFiredEvent, onNodeRemove); lastFiredEvent = originalEvent; (0, _event_nodes_disposing.subscribeNodesDisposing)(lastFiredEvent, onNodeRemove); (0, _index.fireEvent)({ type: CLICK_EVENT_NAME, originalEvent: e }) } }; const ClickEmitter = _emitter.default.inherit({ ctor(element) { this.callBase(element); _events_engine.default.on(this.getElement(), "click", clickHandler) }, start() { prevented = null }, cancel() { prevented = true }, dispose() { _events_engine.default.off(this.getElement(), "click", clickHandler) } }); ! function() { const desktopDevice = _m_devices.default.real().generic; if (!desktopDevice) { let startTarget = null; let blurPrevented = false; const isInput = function(element) { return (0, _renderer.default)(element).is("input, textarea, select, button ,:focus, :focus *") }; const pointerDownHandler = function(e) { startTarget = e.target; blurPrevented = e.isDefaultPrevented() }; const getTarget = function(e) { const target = (0, _event_target.getEventTarget)(e); return (0, _renderer.default)(target) }; const clickHandler = function(e) { const $target = getTarget(e); if (!blurPrevented && startTarget && !$target.is(startTarget) && !(0, _renderer.default)(startTarget).is("label") && isInput($target)) { _m_dom.default.resetActiveElement() } startTarget = null; blurPrevented = false }; const NATIVE_CLICK_FIXER_NAMESPACE = "NATIVE_CLICK_FIXER"; const document = _dom_adapter.default.getDocument(); _events_engine.default.subscribeGlobal(document, (0, _index.addNamespace)(_pointer.default.down, NATIVE_CLICK_FIXER_NAMESPACE), pointerDownHandler); _events_engine.default.subscribeGlobal(document, (0, _index.addNamespace)("click", NATIVE_CLICK_FIXER_NAMESPACE), clickHandler) } }(); (0, _emitter_registrator.default)({ emitter: ClickEmitter, bubble: true, events: [CLICK_EVENT_NAME] }) }, 90096: /*!********************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/events/m_contextmenu.js ***! \********************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.name = void 0; var _event_registrator = _interopRequireDefault(__webpack_require__( /*! ../../common/core/events/core/event_registrator */ 15273)); var _events_engine = _interopRequireDefault(__webpack_require__( /*! ../../common/core/events/core/events_engine */ 92774)); var _hold = _interopRequireDefault(__webpack_require__( /*! ../../common/core/events/hold */ 68095)); var _index = __webpack_require__( /*! ../../common/core/events/utils/index */ 98834); var _class = _interopRequireDefault(__webpack_require__( /*! ../../core/class */ 55620)); var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../core/renderer */ 64553)); var _m_devices = _interopRequireDefault(__webpack_require__( /*! ../core/m_devices */ 98905)); var _m_support = _interopRequireDefault(__webpack_require__( /*! ../core/utils/m_support */ 85991)); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } const CONTEXTMENU_NAMESPACED_EVENT_NAME = (0, _index.addNamespace)("contextmenu", "dxContexMenu"); const HOLD_NAMESPACED_EVENT_NAME = (0, _index.addNamespace)(_hold.default.name, "dxContexMenu"); const ContextMenu = _class.default.inherit({ setup(element) { const $element = (0, _renderer.default)(element); _events_engine.default.on($element, CONTEXTMENU_NAMESPACED_EVENT_NAME, this._contextMenuHandler.bind(this)); if (_m_support.default.touch || _m_devices.default.isSimulator()) { _events_engine.default.on($element, HOLD_NAMESPACED_EVENT_NAME, this._holdHandler.bind(this)) } }, _holdHandler(e) { if ((0, _index.isMouseEvent)(e) && !_m_devices.default.isSimulator()) { return } this._fireContextMenu(e) }, _contextMenuHandler(e) { this._fireContextMenu(e) }, _fireContextMenu: e => (0, _index.fireEvent)({ type: "dxcontextmenu", originalEvent: e }), teardown(element) { _events_engine.default.off(element, ".dxContexMenu") } }); (0, _event_registrator.default)("dxcontextmenu", new ContextMenu); exports.name = "dxcontextmenu" }, 36212: /*!*****************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/events/m_dblclick.js ***! \*****************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.name = exports.dblClick = void 0; var _click = __webpack_require__( /*! ../../common/core/events/click */ 64044); var _events_engine = _interopRequireDefault(__webpack_require__( /*! ../../common/core/events/core/events_engine */ 92774)); var _index = __webpack_require__( /*! ../../common/core/events/utils/index */ 98834); var _class = _interopRequireDefault(__webpack_require__( /*! ../../core/class */ 55620)); var _dom_adapter = _interopRequireDefault(__webpack_require__( /*! ../../core/dom_adapter */ 64960)); var _dom = __webpack_require__( /*! ../../core/utils/dom */ 86858); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } const DBLCLICK_EVENT_NAME = exports.name = "dxdblclick"; const NAMESPACED_CLICK_EVENT = (0, _index.addNamespace)(_click.name, "dxDblClick"); const DblClick = _class.default.inherit({ ctor() { this._handlerCount = 0; this._forgetLastClick() }, _forgetLastClick() { this._firstClickTarget = null; this._lastClickTimeStamp = -300 }, add() { if (this._handlerCount <= 0) { _events_engine.default.on(_dom_adapter.default.getDocument(), NAMESPACED_CLICK_EVENT, this._clickHandler.bind(this)) } this._handlerCount += 1 }, _clickHandler(e) { const timeStamp = e.timeStamp || Date.now(); const timeBetweenClicks = timeStamp - this._lastClickTimeStamp; const isSimulated = timeBetweenClicks < 0; const isDouble = !isSimulated && timeBetweenClicks < 300; if (isDouble) { (0, _index.fireEvent)({ type: DBLCLICK_EVENT_NAME, target: (0, _dom.closestCommonParent)(this._firstClickTarget, e.target), originalEvent: e }); this._forgetLastClick() } else { this._firstClickTarget = e.target; this._lastClickTimeStamp = timeStamp; clearTimeout(this._lastClickClearTimeout); this._lastClickClearTimeout = setTimeout((() => { this._forgetLastClick() }), 600) } }, remove() { this._handlerCount -= 1; if (this._handlerCount <= 0) { this._forgetLastClick(); _events_engine.default.off(_dom_adapter.default.getDocument(), NAMESPACED_CLICK_EVENT, void 0); clearTimeout(this._lastClickClearTimeout); this._handlerCount = 0 } } }); exports.dblClick = new DblClick }, 88480: /*!*************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/events/m_drag.js ***! \*************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.start = exports.move = exports.leave = exports.enter = exports.end = exports.drop = void 0; var _emitter_registrator = _interopRequireDefault(__webpack_require__( /*! ../../common/core/events/core/emitter_registrator */ 81411)); var _event_registrator = _interopRequireDefault(__webpack_require__( /*! ../../common/core/events/core/event_registrator */ 15273)); var _emitter = _interopRequireDefault(__webpack_require__( /*! ../../common/core/events/gesture/emitter.gesture */ 85915)); var _index = __webpack_require__( /*! ../../common/core/events/utils/index */ 98834); var _element_data = __webpack_require__( /*! ../../core/element_data */ 74663); var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../core/renderer */ 64553)); var _array = __webpack_require__( /*! ../../core/utils/array */ 94487); var _dom = __webpack_require__( /*! ../../core/utils/dom */ 86858); var iteratorUtils = function(e, r) { if (!r && e && e.__esModule) { return e } if (null === e || "object" != typeof e && "function" != typeof e) { return { default: e } } var t = _getRequireWildcardCache(r); if (t && t.has(e)) { return t.get(e) } var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) { if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u] } } return n.default = e, t && t.set(e, n), n }(__webpack_require__( /*! ../../core/utils/iterator */ 21274)); function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) { return null } var r = new WeakMap, t = new WeakMap; return (_getRequireWildcardCache = function(e) { return e ? t : r })(e) } function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } const DRAG_START_EVENT = exports.start = "dxdragstart"; const DRAG_EVENT = exports.move = "dxdrag"; const DRAG_END_EVENT = exports.end = "dxdragend"; const DRAG_ENTER_EVENT = exports.enter = "dxdragenter"; const DRAG_LEAVE_EVENT = exports.leave = "dxdragleave"; const DROP_EVENT = exports.drop = "dxdrop"; const knownDropTargets = []; const knownDropTargetSelectors = []; const knownDropTargetConfigs = []; const dropTargetRegistration = { setup(element, data) { const knownDropTarget = knownDropTargets.includes(element); if (!knownDropTarget) { knownDropTargets.push(element); knownDropTargetSelectors.push([]); knownDropTargetConfigs.push(data || {}) } }, add(element, handleObj) { const index = knownDropTargets.indexOf(element); this.updateEventsCounter(element, handleObj.type, 1); const { selector: selector } = handleObj; if (!knownDropTargetSelectors[index].includes(selector)) { knownDropTargetSelectors[index].push(selector) } }, updateEventsCounter(element, event, value) { if ([DRAG_ENTER_EVENT, DRAG_LEAVE_EVENT, DROP_EVENT].includes(event)) { const eventsCount = (0, _element_data.data)(element, "dxDragEventsCount") || 0; (0, _element_data.data)(element, "dxDragEventsCount", Math.max(0, eventsCount + value)) } }, remove(element, handleObj) { this.updateEventsCounter(element, handleObj.type, -1) }, teardown(element) { const handlersCount = (0, _element_data.data)(element, "dxDragEventsCount"); if (!handlersCount) { const index = knownDropTargets.indexOf(element); knownDropTargets.splice(index, 1); knownDropTargetSelectors.splice(index, 1); knownDropTargetConfigs.splice(index, 1); (0, _element_data.removeData)(element, "dxDragEventsCount") } } }; (0, _event_registrator.default)(DRAG_ENTER_EVENT, dropTargetRegistration); (0, _event_registrator.default)(DRAG_LEAVE_EVENT, dropTargetRegistration); (0, _event_registrator.default)(DROP_EVENT, dropTargetRegistration); const DragEmitter = _emitter.default.inherit({ ctor(element) { this.callBase(element); this.direction = "both" }, _init(e) { this._initEvent = e }, _start(e) { e = this._fireEvent(DRAG_START_EVENT, this._initEvent); this._maxLeftOffset = e.maxLeftOffset; this._maxRightOffset = e.maxRightOffset; this._maxTopOffset = e.maxTopOffset; this._maxBottomOffset = e.maxBottomOffset; if (e.targetElements || null === e.targetElements) { const dropTargets = (0, _array.wrapToArray)(e.targetElements || []); this._dropTargets = iteratorUtils.map(dropTargets, (element => (0, _renderer.default)(element).get(0))) } else { this._dropTargets = knownDropTargets } }, _move(e) { const eventData = (0, _index.eventData)(e); const dragOffset = this._calculateOffset(eventData); e = this._fireEvent(DRAG_EVENT, e, { offset: dragOffset }); this._processDropTargets(e); if (!e._cancelPreventDefault) { e.preventDefault() } }, _calculateOffset(eventData) { return { x: this._calculateXOffset(eventData), y: this._calculateYOffset(eventData) } }, _calculateXOffset(eventData) { if ("vertical" !== this.direction) { const offset = eventData.x - this._startEventData.x; return this._fitOffset(offset, this._maxLeftOffset, this._maxRightOffset) } return 0 }, _calculateYOffset(eventData) { if ("horizontal" !== this.direction) { const offset = eventData.y - this._startEventData.y; return this._fitOffset(offset, this._maxTopOffset, this._maxBottomOffset) } return 0 }, _fitOffset(offset, minOffset, maxOffset) { if (null != minOffset) { offset = Math.max(offset, -minOffset) } if (null != maxOffset) { offset = Math.min(offset, maxOffset) } return offset }, _processDropTargets(e) { const target = this._findDropTarget(e); const sameTarget = target === this._currentDropTarget; if (!sameTarget) { this._fireDropTargetEvent(e, DRAG_LEAVE_EVENT); this._currentDropTarget = target; this._fireDropTargetEvent(e, DRAG_ENTER_EVENT) } }, _fireDropTargetEvent(event, eventName) { if (!this._currentDropTarget) { return } const eventData = { type: eventName, originalEvent: event, draggingElement: this._$element.get(0), target: this._currentDropTarget }; (0, _index.fireEvent)(eventData) }, _findDropTarget(e) { const that = this; let result; iteratorUtils.each(knownDropTargets, ((_, target) => { if (!that._checkDropTargetActive(target)) { return } const $target = (0, _renderer.default)(target); iteratorUtils.each(function($element) { const dropTargetIndex = knownDropTargets.indexOf($element.get(0)); const dropTargetSelectors = knownDropTargetSelectors[dropTargetIndex].filter((selector => selector)); let $delegatedTargets = $element.find(dropTargetSelectors.join(", ")); if (knownDropTargetSelectors[dropTargetIndex].includes(void 0)) { $delegatedTargets = $delegatedTargets.add($element) } return $delegatedTargets }($target), ((_, delegatedTarget) => { const $delegatedTarget = (0, _renderer.default)(delegatedTarget); if (that._checkDropTarget(function($element) { const dropTargetIndex = knownDropTargets.indexOf($element.get(0)); return knownDropTargetConfigs[dropTargetIndex] }($target), $delegatedTarget, (0, _renderer.default)(result), e)) { result = delegatedTarget } })) })); return result }, _checkDropTargetActive(target) { let active = false; iteratorUtils.each(this._dropTargets, ((_, activeTarget) => { active = active || activeTarget === target || (0, _dom.contains)(activeTarget, target); return !active })); return active }, _checkDropTarget(config, $target, $prevTarget, e) { const isDraggingElement = $target.get(0) === (0, _renderer.default)(e.target).get(0); if (isDraggingElement) { return false } const targetPosition = function(dropTargetConfig, $element) { if (dropTargetConfig.itemPositionFunc) { return dropTargetConfig.itemPositionFunc($element) } return $element.offset() }(config, $target); if (e.pageX < targetPosition.left) { return false } if (e.pageY < targetPosition.top) { return false } const targetSize = function(dropTargetConfig, $element) { if (dropTargetConfig.itemSizeFunc) { return dropTargetConfig.itemSizeFunc($element) } return { width: $element.get(0).getBoundingClientRect().width, height: $element.get(0).getBoundingClientRect().height } }(config, $target); if (e.pageX > targetPosition.left + targetSize.width) { return false } if (e.pageY > targetPosition.top + targetSize.height) { return false } if ($prevTarget.length && $prevTarget.closest($target).length) { return false } if (config.checkDropTarget && !config.checkDropTarget($target, e)) { return false } return $target }, _end(e) { const eventData = (0, _index.eventData)(e); this._fireEvent(DRAG_END_EVENT, e, { offset: this._calculateOffset(eventData) }); this._fireDropTargetEvent(e, DROP_EVENT); delete this._currentDropTarget } }); (0, _emitter_registrator.default)({ emitter: DragEmitter, events: [DRAG_START_EVENT, DRAG_EVENT, DRAG_END_EVENT] }) }, 3111: /*!*************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/events/m_hold.js ***! \*************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _emitter = _interopRequireDefault(__webpack_require__( /*! ../../common/core/events/core/emitter */ 59e3)); var _emitter_registrator = _interopRequireDefault(__webpack_require__( /*! ../../common/core/events/core/emitter_registrator */ 81411)); var _index = __webpack_require__( /*! ../../common/core/events/utils/index */ 98834); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } const { abs: abs } = Math; const HoldEmitter = _emitter.default.inherit({ start(e) { this._startEventData = (0, _index.eventData)(e); this._startTimer(e) }, _startTimer(e) { const holdTimeout = "timeout" in this ? this.timeout : 750; this._holdTimer = setTimeout((() => { this._requestAccept(e); this._fireEvent("dxhold", e, { target: e.target }); this._forgetAccept() }), holdTimeout) }, move(e) { if (this._touchWasMoved(e)) { this._cancel(e) } }, _touchWasMoved(e) { const delta = (0, _index.eventDelta)(this._startEventData, (0, _index.eventData)(e)); return abs(delta.x) > 5 || abs(delta.y) > 5 }, end() { this._stopTimer() }, _stopTimer() { clearTimeout(this._holdTimer) }, cancel() { this._stopTimer() }, dispose() { this._stopTimer() } }); (0, _emitter_registrator.default)({ emitter: HoldEmitter, bubble: true, events: ["dxhold"] }); exports.default = { name: "dxhold" } }, 57798: /*!**************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/events/m_hover.js ***! \**************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.start = exports.end = void 0; var _event_registrator = _interopRequireDefault(__webpack_require__( /*! ../../common/core/events/core/event_registrator */ 15273)); var _events_engine = _interopRequireDefault(__webpack_require__( /*! ../../common/core/events/core/events_engine */ 92774)); var _pointer = _interopRequireDefault(__webpack_require__( /*! ../../common/core/events/pointer */ 89797)); var _index = __webpack_require__( /*! ../../common/core/events/utils/index */ 98834); var _class = _interopRequireDefault(__webpack_require__( /*! ../../core/class */ 55620)); var _element_data = __webpack_require__( /*! ../../core/element_data */ 74663); var _m_devices = _interopRequireDefault(__webpack_require__( /*! ../core/m_devices */ 98905)); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } const HOVERSTART = exports.start = "dxhoverstart"; const POINTERENTER_NAMESPACED_EVENT_NAME = (0, _index.addNamespace)(_pointer.default.enter, "dxHoverStart"); const HOVEREND = exports.end = "dxhoverend"; const POINTERLEAVE_NAMESPACED_EVENT_NAME = (0, _index.addNamespace)(_pointer.default.leave, "dxHoverEnd"); const Hover = _class.default.inherit({ noBubble: true, ctor() { this._handlerArrayKeyPath = `${this._eventNamespace}_HandlerStore` }, setup(element) { (0, _element_data.data)(element, this._handlerArrayKeyPath, {}) }, add(element, handleObj) { const that = this; const handler = function(e) { that._handler(e) }; _events_engine.default.on(element, this._originalEventName, handleObj.selector, handler); (0, _element_data.data)(element, this._handlerArrayKeyPath)[handleObj.guid] = handler }, _handler(e) { if ((0, _index.isTouchEvent)(e) || _m_devices.default.isSimulator()) { return }(0, _index.fireEvent)({ type: this._eventName, originalEvent: e, delegateTarget: e.delegateTarget }) }, remove(element, handleObj) { const handler = (0, _element_data.data)(element, this._handlerArrayKeyPath)[handleObj.guid]; _events_engine.default.off(element, this._originalEventName, handleObj.selector, handler) }, teardown(element) { (0, _element_data.removeData)(element, this._handlerArrayKeyPath) } }); const HoverStart = Hover.inherit({ ctor() { this._eventNamespace = "dxHoverStart"; this._eventName = HOVERSTART; this._originalEventName = POINTERENTER_NAMESPACED_EVENT_NAME; this.callBase() }, _handler(e) { const pointers = e.pointers || []; if (!pointers.length) { this.callBase(e) } } }); const HoverEnd = Hover.inherit({ ctor() { this._eventNamespace = "dxHoverEnd"; this._eventName = HOVEREND; this._originalEventName = POINTERLEAVE_NAMESPACED_EVENT_NAME; this.callBase() } }); (0, _event_registrator.default)(HOVERSTART, new HoverStart); (0, _event_registrator.default)(HOVEREND, new HoverEnd) }, 24381: /*!****************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/events/m_pointer.js ***! \****************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _event_registrator = _interopRequireDefault(__webpack_require__( /*! ../../common/core/events/core/event_registrator */ 15273)); var _mouse = _interopRequireDefault(__webpack_require__( /*! ../../common/core/events/pointer/mouse */ 5949)); var _mouse_and_touch = _interopRequireDefault(__webpack_require__( /*! ../../common/core/events/pointer/mouse_and_touch */ 71887)); var _touch = _interopRequireDefault(__webpack_require__( /*! ../../common/core/events/pointer/touch */ 71017)); var _config = _interopRequireDefault(__webpack_require__( /*! ../../core/config */ 66636)); var _iterator = __webpack_require__( /*! ../../core/utils/iterator */ 21274); var _m_devices = _interopRequireDefault(__webpack_require__( /*! ../core/m_devices */ 98905)); var _m_support = _interopRequireDefault(__webpack_require__( /*! ../core/utils/m_support */ 85991)); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } const EventStrategy = ((support, _ref) => { let { tablet: tablet, phone: phone } = _ref; const pointerEventStrategy = function() { const eventStrategyName = (0, _config.default)().pointerEventStrategy; return { "mouse-and-touch": _mouse_and_touch.default, touch: _touch.default, mouse: _mouse.default } [eventStrategyName] }(); if (pointerEventStrategy) { return pointerEventStrategy } if (support.touch && !(tablet || phone)) { return _mouse_and_touch.default } if (support.touch) { return _touch.default } return _mouse.default })(_m_support.default, _m_devices.default.real()); (0, _iterator.each)(EventStrategy.map, ((pointerEvent, originalEvents) => { (0, _event_registrator.default)(pointerEvent, new EventStrategy(pointerEvent, originalEvents)) })); exports.default = { down: "dxpointerdown", up: "dxpointerup", move: "dxpointermove", cancel: "dxpointercancel", enter: "dxpointerenter", leave: "dxpointerleave", over: "dxpointerover", out: "dxpointerout" } }, 92686: /*!***************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/events/m_remove.js ***! \***************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.removeEvent = void 0; var _event_registrator = _interopRequireDefault(__webpack_require__( /*! ../../common/core/events/core/event_registrator */ 15273)); var _events_engine = _interopRequireDefault(__webpack_require__( /*! ../../common/core/events/core/events_engine */ 92774)); var _element_data = __webpack_require__( /*! ../../core/element_data */ 74663); var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../core/renderer */ 64553)); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } const removeEvent = exports.removeEvent = "dxremove"; (0, _element_data.beforeCleanData)((elements => { elements = [].slice.call(elements); for (let i = 0; i < elements.length; i++) { const $element = (0, _renderer.default)(elements[i]); if ($element.prop("dxRemoveEvent")) { $element[0].dxRemoveEvent = null; _events_engine.default.triggerHandler($element, removeEvent) } } })); (0, _event_registrator.default)(removeEvent, { noBubble: true, setup(element) { (0, _renderer.default)(element).prop("dxRemoveEvent", true) } }) }, 43926: /*!**************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/events/m_short.js ***! \**************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.visibility = exports.resize = exports.keyboard = exports.hover = exports.focus = exports.dxClick = exports.click = exports.active = void 0; var _events_engine = _interopRequireDefault(__webpack_require__( /*! ../../common/core/events/core/events_engine */ 92774)); var _keyboard_processor = _interopRequireDefault(__webpack_require__( /*! ../../common/core/events/core/keyboard_processor */ 52818)); var _index = __webpack_require__( /*! ../../common/core/events/utils/index */ 98834); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } function addNamespace(event, namespace) { return namespace ? (0, _index.addNamespace)(event, namespace) : event } function executeAction(action, args) { return "function" === typeof action ? action(args) : action.execute(args) } exports.active = { on: ($el, active, inactive, opts) => { const { selector: selector, showTimeout: showTimeout, hideTimeout: hideTimeout, namespace: namespace } = opts; _events_engine.default.on($el, addNamespace("dxactive", namespace), selector, { timeout: showTimeout }, (event => executeAction(active, { event: event, element: event.currentTarget }))); _events_engine.default.on($el, addNamespace("dxinactive", namespace), selector, { timeout: hideTimeout }, (event => executeAction(inactive, { event: event, element: event.currentTarget }))) }, off: ($el, _ref) => { let { namespace: namespace, selector: selector } = _ref; _events_engine.default.off($el, addNamespace("dxactive", namespace), selector); _events_engine.default.off($el, addNamespace("dxinactive", namespace), selector) } }; exports.resize = { on: function($el, resize) { let { namespace: namespace } = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : {}; _events_engine.default.on($el, addNamespace("dxresize", namespace), resize) }, off: function($el) { let { namespace: namespace } = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {}; _events_engine.default.off($el, addNamespace("dxresize", namespace)) } }; exports.hover = { on: ($el, start, end, _ref2) => { let { selector: selector, namespace: namespace } = _ref2; _events_engine.default.on($el, addNamespace("dxhoverend", namespace), selector, (event => end(event))); _events_engine.default.on($el, addNamespace("dxhoverstart", namespace), selector, (event => executeAction(start, { element: event.target, event: event }))) }, off: ($el, _ref3) => { let { selector: selector, namespace: namespace } = _ref3; _events_engine.default.off($el, addNamespace("dxhoverstart", namespace), selector); _events_engine.default.off($el, addNamespace("dxhoverend", namespace), selector) } }; exports.visibility = { on: ($el, shown, hiding, _ref4) => { let { namespace: namespace } = _ref4; _events_engine.default.on($el, addNamespace("dxhiding", namespace), hiding); _events_engine.default.on($el, addNamespace("dxshown", namespace), shown) }, off: ($el, _ref5) => { let { namespace: namespace } = _ref5; _events_engine.default.off($el, addNamespace("dxhiding", namespace)); _events_engine.default.off($el, addNamespace("dxshown", namespace)) } }; exports.focus = { on: ($el, focusIn, focusOut, _ref6) => { let { namespace: namespace } = _ref6; _events_engine.default.on($el, addNamespace("focusin", namespace), focusIn); _events_engine.default.on($el, addNamespace("focusout", namespace), focusOut) }, off: ($el, _ref7) => { let { namespace: namespace } = _ref7; _events_engine.default.off($el, addNamespace("focusin", namespace)); _events_engine.default.off($el, addNamespace("focusout", namespace)) }, trigger: $el => _events_engine.default.trigger($el, "focus") }; exports.dxClick = { on: function($el, click) { let { namespace: namespace } = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : {}; _events_engine.default.on($el, addNamespace("dxclick", namespace), click) }, off: function($el) { let { namespace: namespace } = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {}; _events_engine.default.off($el, addNamespace("dxclick", namespace)) } }; exports.click = { on: function($el, click) { let { namespace: namespace } = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : {}; _events_engine.default.on($el, addNamespace("click", namespace), click) }, off: function($el) { let { namespace: namespace } = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {}; _events_engine.default.off($el, addNamespace("click", namespace)) } }; let index = 0; const keyboardProcessors = {}; exports.keyboard = { on: (element, focusTarget, handler) => { const listenerId = "keyboardProcessorId" + index++; keyboardProcessors[listenerId] = new _keyboard_processor.default({ element: element, focusTarget: focusTarget, handler: handler }); return listenerId }, off: listenerId => { if (listenerId && keyboardProcessors[listenerId]) { keyboardProcessors[listenerId].dispose(); delete keyboardProcessors[listenerId] } }, _getProcessor: listenerId => keyboardProcessors[listenerId] } }, 6066: /*!**************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/events/m_swipe.js ***! \**************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.swipe = exports.start = exports.end = void 0; var _emitter_registrator = _interopRequireDefault(__webpack_require__( /*! ../../common/core/events/core/emitter_registrator */ 81411)); var _emitter = _interopRequireDefault(__webpack_require__( /*! ../../common/core/events/gesture/emitter.gesture */ 85915)); var _index = __webpack_require__( /*! ../../common/core/events/utils/index */ 98834); var _size = __webpack_require__( /*! ../../core/utils/size */ 57653); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } const SWIPE_START_EVENT = exports.start = "dxswipestart"; const SWIPE_EVENT = exports.swipe = "dxswipe"; const SWIPE_END_EVENT = exports.end = "dxswipeend"; const HorizontalStrategy = { defaultItemSizeFunc() { return (0, _size.getWidth)(this.getElement()) }, getBounds() { return [this._maxLeftOffset, this._maxRightOffset] }, calcOffsetRatio(e) { const endEventData = (0, _index.eventData)(e); return (endEventData.x - (this._savedEventData && this._savedEventData.x || 0)) / this._itemSizeFunc().call(this, e) }, isFastSwipe(e) { const endEventData = (0, _index.eventData)(e); return this.FAST_SWIPE_SPEED_LIMIT * Math.abs(endEventData.x - this._tickData.x) >= endEventData.time - this._tickData.time } }; const VerticalStrategy = { defaultItemSizeFunc() { return (0, _size.getHeight)(this.getElement()) }, getBounds() { return [this._maxTopOffset, this._maxBottomOffset] }, calcOffsetRatio(e) { const endEventData = (0, _index.eventData)(e); return (endEventData.y - (this._savedEventData && this._savedEventData.y || 0)) / this._itemSizeFunc().call(this, e) }, isFastSwipe(e) { const endEventData = (0, _index.eventData)(e); return this.FAST_SWIPE_SPEED_LIMIT * Math.abs(endEventData.y - this._tickData.y) >= endEventData.time - this._tickData.time } }; const STRATEGIES = { horizontal: HorizontalStrategy, vertical: VerticalStrategy }; const SwipeEmitter = _emitter.default.inherit({ TICK_INTERVAL: 300, FAST_SWIPE_SPEED_LIMIT: 10, ctor(element) { this.callBase(element); this.direction = "horizontal"; this.elastic = true }, _getStrategy() { return STRATEGIES[this.direction] }, _defaultItemSizeFunc() { return this._getStrategy().defaultItemSizeFunc.call(this) }, _itemSizeFunc() { return this.itemSizeFunc || this._defaultItemSizeFunc }, _init(e) { this._tickData = (0, _index.eventData)(e) }, _start(e) { this._savedEventData = (0, _index.eventData)(e); e = this._fireEvent(SWIPE_START_EVENT, e); if (!e.cancel) { this._maxLeftOffset = e.maxLeftOffset; this._maxRightOffset = e.maxRightOffset; this._maxTopOffset = e.maxTopOffset; this._maxBottomOffset = e.maxBottomOffset } }, _move(e) { const strategy = this._getStrategy(); const moveEventData = (0, _index.eventData)(e); let offset = strategy.calcOffsetRatio.call(this, e); offset = this._fitOffset(offset, this.elastic); if (moveEventData.time - this._tickData.time > this.TICK_INTERVAL) { this._tickData = moveEventData } this._fireEvent(SWIPE_EVENT, e, { offset: offset }); if (false !== e.cancelable) { e.preventDefault() } }, _end(e) { const strategy = this._getStrategy(); const offsetRatio = strategy.calcOffsetRatio.call(this, e); const isFast = strategy.isFastSwipe.call(this, e); let startOffset = offsetRatio; let targetOffset = this._calcTargetOffset(offsetRatio, isFast); startOffset = this._fitOffset(startOffset, this.elastic); targetOffset = this._fitOffset(targetOffset, false); this._fireEvent(SWIPE_END_EVENT, e, { offset: startOffset, targetOffset: targetOffset }) }, _fitOffset(offset, elastic) { const strategy = this._getStrategy(); const bounds = strategy.getBounds.call(this); if (offset < -bounds[0]) { return elastic ? (-2 * bounds[0] + offset) / 3 : -bounds[0] } if (offset > bounds[1]) { return elastic ? (2 * bounds[1] + offset) / 3 : bounds[1] } return offset }, _calcTargetOffset(offsetRatio, isFast) { let result; if (isFast) { result = Math.ceil(Math.abs(offsetRatio)); if (offsetRatio < 0) { result = -result } } else { result = Math.round(offsetRatio) } return result } }); (0, _emitter_registrator.default)({ emitter: SwipeEmitter, events: [SWIPE_START_EVENT, SWIPE_EVENT, SWIPE_END_EVENT] }) }, 68264: /*!******************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/events/m_transform.js ***! \******************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.exportNames = void 0; var _emitter = _interopRequireDefault(__webpack_require__( /*! ../../common/core/events/core/emitter */ 59e3)); var _emitter_registrator = _interopRequireDefault(__webpack_require__( /*! ../../common/core/events/core/emitter_registrator */ 81411)); var _index = __webpack_require__( /*! ../../common/core/events/utils/index */ 98834); var iteratorUtils = function(e, r) { if (!r && e && e.__esModule) { return e } if (null === e || "object" != typeof e && "function" != typeof e) { return { default: e } } var t = _getRequireWildcardCache(r); if (t && t.has(e)) { return t.get(e) } var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) { if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u] } } return n.default = e, t && t.set(e, n), n }(__webpack_require__( /*! ../../core/utils/iterator */ 21274)); var _math = __webpack_require__( /*! ../../core/utils/math */ 50254); function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) { return null } var r = new WeakMap, t = new WeakMap; return (_getRequireWildcardCache = function(e) { return e ? t : r })(e) } function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } const START_POSTFIX = "start"; const UPDATE_POSTFIX = ""; const END_POSTFIX = "end"; const eventAliases = []; const addAlias = function(eventName, eventArgs) { eventAliases.push({ name: eventName, args: eventArgs }) }; addAlias("transform", { scale: true, deltaScale: true, rotation: true, deltaRotation: true, translation: true, deltaTranslation: true }); addAlias("translate", { translation: true, deltaTranslation: true }); addAlias("pinch", { scale: true, deltaScale: true }); addAlias("rotate", { rotation: true, deltaRotation: true }); const getEventVector = function(e) { const { pointers: pointers } = e; return first = pointers[0], second = pointers[1], { x: second.pageX - first.pageX, y: -second.pageY + first.pageY, centerX: .5 * (second.pageX + first.pageX), centerY: .5 * (second.pageY + first.pageY) }; var first, second }; const getDistance = function(vector) { return Math.sqrt(vector.x * vector.x + vector.y * vector.y) }; const getScale = function(firstVector, secondVector) { return getDistance(firstVector) / getDistance(secondVector) }; const getRotation = function(firstVector, secondVector) { const scalarProduct = firstVector.x * secondVector.x + firstVector.y * secondVector.y; const distanceProduct = getDistance(firstVector) * getDistance(secondVector); if (0 === distanceProduct) { return 0 } const sign = (0, _math.sign)(firstVector.x * secondVector.y - secondVector.x * firstVector.y); const angle = Math.acos((0, _math.fitIntoRange)(scalarProduct / distanceProduct, -1, 1)); return sign * angle }; const getTranslation = function(firstVector, secondVector) { return { x: firstVector.centerX - secondVector.centerX, y: firstVector.centerY - secondVector.centerY } }; const TransformEmitter = _emitter.default.inherit({ validatePointers: e => (0, _index.hasTouches)(e) > 1, start(e) { this._accept(e); const startVector = getEventVector(e); this._startVector = startVector; this._prevVector = startVector; this._fireEventAliases(START_POSTFIX, e) }, move(e) { const currentVector = getEventVector(e); const eventArgs = this._getEventArgs(currentVector); this._fireEventAliases(UPDATE_POSTFIX, e, eventArgs); this._prevVector = currentVector }, end(e) { const eventArgs = this._getEventArgs(this._prevVector); this._fireEventAliases(END_POSTFIX, e, eventArgs) }, _getEventArgs(vector) { return { scale: getScale(vector, this._startVector), deltaScale: getScale(vector, this._prevVector), rotation: getRotation(vector, this._startVector), deltaRotation: getRotation(vector, this._prevVector), translation: getTranslation(vector, this._startVector), deltaTranslation: getTranslation(vector, this._prevVector) } }, _fireEventAliases(eventPostfix, originalEvent, eventArgs) { eventArgs = eventArgs || {}; iteratorUtils.each(eventAliases, ((_, eventAlias) => { const args = {}; iteratorUtils.each(eventAlias.args, (name => { if (name in eventArgs) { args[name] = eventArgs[name] } })); this._fireEvent("dx" + eventAlias.name + eventPostfix, originalEvent, args) })) } }); const eventNames = eventAliases.reduce(((result, eventAlias) => { [START_POSTFIX, UPDATE_POSTFIX, END_POSTFIX].forEach((eventPostfix => { result.push("dx" + eventAlias.name + eventPostfix) })); return result }), []); (0, _emitter_registrator.default)({ emitter: TransformEmitter, events: eventNames }); const exportNames = exports.exportNames = {}; iteratorUtils.each(eventNames, ((_, eventName) => { exportNames[eventName.substring(2)] = eventName })) }, 52997: /*!**************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/events/m_visibility_change.js ***! \**************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.triggerShownEvent = exports.triggerResizeEvent = exports.triggerHidingEvent = exports.default = void 0; var _events_engine = _interopRequireDefault(__webpack_require__( /*! ../../common/core/events/core/events_engine */ 92774)); var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../core/renderer */ 64553)); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } const triggerVisibilityChangeEvent = function(eventName) { return function(element) { const $element = (0, _renderer.default)(element || "body"); const changeHandlers = $element.filter(".dx-visibility-change-handler").add($element.find(".dx-visibility-change-handler")); for (let i = 0; i < changeHandlers.length; i++) { _events_engine.default.triggerHandler(changeHandlers[i], eventName) } } }; const triggerShownEvent = exports.triggerShownEvent = triggerVisibilityChangeEvent("dxshown"); const triggerHidingEvent = exports.triggerHidingEvent = triggerVisibilityChangeEvent("dxhiding"); const triggerResizeEvent = exports.triggerResizeEvent = triggerVisibilityChangeEvent("dxresize"); exports.default = { triggerHidingEvent: triggerHidingEvent, triggerResizeEvent: triggerResizeEvent, triggerShownEvent: triggerShownEvent } }, 37321: /*!*********************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/events/pointer/m_base.js ***! \*********************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _events_engine = _interopRequireDefault(__webpack_require__( /*! ../../../common/core/events/core/events_engine */ 92774)); var _event_target = __webpack_require__( /*! ../../../common/core/events/utils/event_target */ 45280); var _index = __webpack_require__( /*! ../../../common/core/events/utils/index */ 98834); var _class = _interopRequireDefault(__webpack_require__( /*! ../../../core/class */ 55620)); var _dom_adapter = _interopRequireDefault(__webpack_require__( /*! ../../../core/dom_adapter */ 64960)); var _browser = _interopRequireDefault(__webpack_require__( /*! ../../../core/utils/browser */ 48314)); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } const BaseStrategy = _class.default.inherit({ ctor(eventName, originalEvents) { this._eventName = eventName; this._originalEvents = (0, _index.addNamespace)(originalEvents, "dxPointerEvents"); this._handlerCount = 0; this.noBubble = this._isNoBubble() }, _isNoBubble() { const eventName = this._eventName; return "dxpointerenter" === eventName || "dxpointerleave" === eventName }, _handler(e) { const delegateTarget = this._getDelegateTarget(e); const event = { type: this._eventName, pointerType: e.pointerType || (0, _index.eventSource)(e), originalEvent: e, delegateTarget: delegateTarget, timeStamp: _browser.default.mozilla ? (new Date).getTime() : e.timeStamp }; const target = (0, _event_target.getEventTarget)(e); event.target = target; return this._fireEvent(event) }, _getDelegateTarget(e) { let delegateTarget; if (this.noBubble) { delegateTarget = e.delegateTarget } return delegateTarget }, _fireEvent: args => (0, _index.fireEvent)(args), _setSelector(handleObj) { this._selector = this.noBubble && handleObj ? handleObj.selector : null }, _getSelector() { return this._selector }, setup: () => true, add(element, handleObj) { if (this._handlerCount <= 0 || this.noBubble) { element = this.noBubble ? element : _dom_adapter.default.getDocument(); this._setSelector(handleObj); const that = this; _events_engine.default.on(element, this._originalEvents, this._getSelector(), (e => { that._handler(e) })) } if (!this.noBubble) { this._handlerCount++ } }, remove(handleObj) { this._setSelector(handleObj); if (!this.noBubble) { this._handlerCount-- } }, teardown(element) { if (this._handlerCount && !this.noBubble) { return } element = this.noBubble ? element : _dom_adapter.default.getDocument(); if (".dxPointerEvents" !== this._originalEvents) { _events_engine.default.off(element, this._originalEvents, this._getSelector()) } }, dispose(element) { element = this.noBubble ? element : _dom_adapter.default.getDocument(); _events_engine.default.off(element, this._originalEvents) } }); exports.default = BaseStrategy }, 45841: /*!**********************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/events/pointer/m_mouse.js ***! \**********************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _base = _interopRequireDefault(__webpack_require__( /*! ../../../common/core/events/pointer/base */ 725)); var _observer = _interopRequireDefault(__webpack_require__( /*! ../../../common/core/events/pointer/observer */ 38242)); var _browser = _interopRequireDefault(__webpack_require__( /*! ../../../core/utils/browser */ 48314)); var _extend = __webpack_require__( /*! ../../../core/utils/extend */ 52576); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } const eventMap = { dxpointerdown: "mousedown", dxpointermove: "mousemove", dxpointerup: "mouseup", dxpointercancel: "pointercancel", dxpointerover: "mouseover", dxpointerout: "mouseout", dxpointerenter: "mouseenter", dxpointerleave: "mouseleave" }; if (_browser.default.safari) { eventMap.dxpointercancel += " dragstart" } const normalizeMouseEvent = function(e) { e.pointerId = 1; return { pointers: observer.pointers(), pointerId: 1 } }; let observer; let activated = false; const activateStrategy = function() { if (activated) { return } observer = new _observer.default(eventMap, (() => true)); activated = true }; const MouseStrategy = _base.default.inherit({ ctor() { this.callBase.apply(this, arguments); activateStrategy() }, _fireEvent(args) { return this.callBase((0, _extend.extend)(normalizeMouseEvent(args.originalEvent), args)) } }); MouseStrategy.map = eventMap; MouseStrategy.normalize = normalizeMouseEvent; MouseStrategy.activate = activateStrategy; MouseStrategy.resetObserver = function() { observer.reset() }; exports.default = MouseStrategy }, 60699: /*!********************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/events/pointer/m_mouse_and_touch.js ***! \********************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _base = _interopRequireDefault(__webpack_require__( /*! ../../../common/core/events/pointer/base */ 725)); var _mouse = _interopRequireDefault(__webpack_require__( /*! ../../../common/core/events/pointer/mouse */ 5949)); var _touch = _interopRequireDefault(__webpack_require__( /*! ../../../common/core/events/pointer/touch */ 71017)); var _index = __webpack_require__( /*! ../../../common/core/events/utils/index */ 98834); var _extend = __webpack_require__( /*! ../../../core/utils/extend */ 52576); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } let activated = false; const MouseAndTouchStrategy = _base.default.inherit({ EVENT_LOCK_TIMEOUT: 100, ctor() { this.callBase.apply(this, arguments); ! function() { if (activated) { return } _mouse.default.activate(); activated = true }() }, _handler(e) { const isMouse = (0, _index.isMouseEvent)(e); if (!isMouse) { this._skipNextEvents = true } if (isMouse && this._mouseLocked) { return } if (isMouse && this._skipNextEvents) { this._skipNextEvents = false; this._mouseLocked = true; clearTimeout(this._unlockMouseTimer); const that = this; this._unlockMouseTimer = setTimeout((() => { that._mouseLocked = false }), this.EVENT_LOCK_TIMEOUT); return } return this.callBase(e) }, _fireEvent(args) { const normalizer = (0, _index.isMouseEvent)(args.originalEvent) ? _mouse.default.normalize : _touch.default.normalize; return this.callBase((0, _extend.extend)(normalizer(args.originalEvent), args)) }, dispose() { this.callBase(); this._skipNextEvents = false; this._mouseLocked = false; clearTimeout(this._unlockMouseTimer) } }); MouseAndTouchStrategy.map = { dxpointerdown: "touchstart mousedown", dxpointermove: "touchmove mousemove", dxpointerup: "touchend mouseup", dxpointercancel: "touchcancel", dxpointerover: "mouseover", dxpointerout: "mouseout", dxpointerenter: "mouseenter", dxpointerleave: "mouseleave" }; MouseAndTouchStrategy.resetObserver = _mouse.default.resetObserver; exports.default = MouseAndTouchStrategy }, 62814: /*!*************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/events/pointer/m_observer.js ***! \*************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _dom_adapter = _interopRequireDefault(__webpack_require__( /*! ../../../core/dom_adapter */ 64960)); var _iterator = __webpack_require__( /*! ../../../core/utils/iterator */ 21274); var _ready_callbacks = _interopRequireDefault(__webpack_require__( /*! ../../../core/utils/ready_callbacks */ 3122)); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } const addEventsListener = function(events, handler) { _ready_callbacks.default.add((() => { events.split(" ").forEach((event => { _dom_adapter.default.listen(_dom_adapter.default.getDocument(), event, handler, true) })) })) }; exports.default = function(eventMap, pointerEquals, onPointerAdding) { onPointerAdding = onPointerAdding || function() {}; let pointers = []; const getPointerIndex = function(e) { let index = -1; (0, _iterator.each)(pointers, ((i, pointer) => { if (!pointerEquals(e, pointer)) { return true } index = i; return false })); return index }; const removePointer = function(e) { const index = getPointerIndex(e); if (index > -1) { pointers.splice(index, 1) } }; addEventsListener(eventMap.dxpointerdown, (function(e) { if (-1 === getPointerIndex(e)) { onPointerAdding(e); pointers.push(e) } })); addEventsListener(eventMap.dxpointermove, (function(e) { pointers[getPointerIndex(e)] = e })); addEventsListener(eventMap.dxpointerup, removePointer); addEventsListener(eventMap.dxpointercancel, removePointer); this.pointers = function() { return pointers }; this.reset = function() { pointers = [] } } }, 95253: /*!**********************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/events/pointer/m_touch.js ***! \**********************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _base = _interopRequireDefault(__webpack_require__( /*! ../../../common/core/events/pointer/base */ 725)); var _extend = __webpack_require__( /*! ../../../core/utils/extend */ 52576); var _iterator = __webpack_require__( /*! ../../../core/utils/iterator */ 21274); var _m_devices = _interopRequireDefault(__webpack_require__( /*! ../../core/m_devices */ 98905)); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } const normalizeTouchEvent = function(e) { const pointers = []; (0, _iterator.each)(e.touches, ((_, touch) => { pointers.push((0, _extend.extend)({ pointerId: touch.identifier }, touch)) })); return { pointers: pointers, pointerId: e.changedTouches[0].identifier } }; const TouchStrategy = _base.default.inherit({ ctor() { this.callBase.apply(this, arguments); this._pointerId = 0 }, _handler(e) { if (pointerEvent = this._eventName, "ios" === _m_devices.default.real().platform && ("dxpointerdown" === pointerEvent || "dxpointerup" === pointerEvent)) { const touch = e.changedTouches[0]; if (this._pointerId === touch.identifier && 0 !== this._pointerId) { return } this._pointerId = touch.identifier } var pointerEvent; return this.callBase.apply(this, arguments) }, _fireEvent(args) { return this.callBase((0, _extend.extend)(normalizeTouchEvent(args.originalEvent), args)) } }); TouchStrategy.map = { dxpointerdown: "touchstart", dxpointermove: "touchmove", dxpointerup: "touchend", dxpointercancel: "touchcancel", dxpointerover: "", dxpointerout: "", dxpointerenter: "", dxpointerleave: "" }; TouchStrategy.normalize = normalizeTouchEvent; exports.default = TouchStrategy }, 61210: /*!******************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/events/utils/index.js ***! \******************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.stopEventsSkipping = exports.setEventFixMethod = exports.normalizeKeyName = exports.needSkipEvent = exports.isTouchEvent = exports.isPointerEvent = exports.isMouseEvent = exports.isKeyboardEvent = exports.isFakeClickEvent = exports.isDxMouseWheelEvent = exports.isCommandKeyPressed = exports.hasTouches = exports.getChar = exports.forceSkipEvents = exports.fireEvent = exports.eventSource = exports.eventDelta = exports.eventData = exports.createEvent = exports.addNamespace = void 0; var _events_engine = _interopRequireDefault(__webpack_require__( /*! ../../../common/core/events/core/events_engine */ 92774)); var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../../core/renderer */ 64553)); var _extend = __webpack_require__( /*! ../../../core/utils/extend */ 52576); var _iterator = __webpack_require__( /*! ../../../core/utils/iterator */ 21274); var _selectors = __webpack_require__( /*! ../../../ui/widget/selectors */ 35944); var _m_add_namespace = _interopRequireDefault(__webpack_require__( /*! ./m_add_namespace */ 91293)); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } const KEY_MAP = { backspace: "backspace", tab: "tab", enter: "enter", escape: "escape", pageup: "pageUp", pagedown: "pageDown", end: "end", home: "home", arrowleft: "leftArrow", arrowup: "upArrow", arrowright: "rightArrow", arrowdown: "downArrow", delete: "del", " ": "space", f: "F", a: "A", "*": "asterisk", "-": "minus", alt: "alt", control: "control", shift: "shift" }; const LEGACY_KEY_CODES = { 8: "backspace", 9: "tab", 13: "enter", 27: "escape", 33: "pageUp", 34: "pageDown", 35: "end", 36: "home", 37: "leftArrow", 38: "upArrow", 39: "rightArrow", 40: "downArrow", 46: "del", 32: "space", 70: "F", 65: "A", 106: "asterisk", 109: "minus", 189: "minus", 173: "minus", 16: "shift", 17: "control", 18: "alt" }; const EVENT_SOURCES_REGEX = { dx: /^dx/i, mouse: /(mouse|wheel)/i, touch: /^touch/i, keyboard: /^key/i, pointer: /^(ms)?pointer/i }; const eventSource = _ref => { let { type: type } = _ref; let result = "other"; (0, _iterator.each)(EVENT_SOURCES_REGEX, (function(key) { if (this.test(type)) { result = key; return false } })); return result }; exports.eventSource = eventSource; let fixMethod = e => e; const copyEvent = originalEvent => fixMethod((originalEvent => _events_engine.default.Event(originalEvent, originalEvent))(originalEvent), originalEvent); const isDxEvent = e => "dx" === eventSource(e); const isNativeTouchEvent = e => "touch" === eventSource(e); const isPointerEvent = e => "pointer" === eventSource(e); exports.isPointerEvent = isPointerEvent; const isMouseEvent = e => (e => "mouse" === eventSource(e))(e) || (isPointerEvent(e) || isDxEvent(e)) && "mouse" === e.pointerType; exports.isMouseEvent = isMouseEvent; const isDxMouseWheelEvent = e => e && "dxmousewheel" === e.type; exports.isDxMouseWheelEvent = isDxMouseWheelEvent; const isTouchEvent = e => isNativeTouchEvent(e) || (isPointerEvent(e) || isDxEvent(e)) && "touch" === e.pointerType; exports.isTouchEvent = isTouchEvent; exports.isKeyboardEvent = e => "keyboard" === eventSource(e); exports.isFakeClickEvent = _ref2 => { let { screenX: screenX, offsetX: offsetX, pageX: pageX } = _ref2; return 0 === screenX && !offsetX && 0 === pageX }; exports.eventData = _ref3 => { let { pageX: pageX, pageY: pageY, timeStamp: timeStamp } = _ref3; return { x: pageX, y: pageY, time: timeStamp } }; exports.eventDelta = (from, to) => ({ x: to.x - from.x, y: to.y - from.y, time: to.time - from.time || 1 }); exports.hasTouches = e => { const { originalEvent: originalEvent, pointers: pointers } = e; if (isNativeTouchEvent(e)) { return (originalEvent.touches || []).length } if (isDxEvent(e)) { return (pointers || []).length } return 0 }; let skipEvents = false; exports.forceSkipEvents = () => { skipEvents = true }; exports.stopEventsSkipping = () => { skipEvents = false }; exports.needSkipEvent = e => { if (skipEvents) { return true } const { target: target } = e; const $target = (0, _renderer.default)(target); const isContentEditable = (null === target || void 0 === target ? void 0 : target.isContentEditable) || (null === target || void 0 === target ? void 0 : target.hasAttribute("contenteditable")); const touchInEditable = $target.is("input, textarea, select") || isContentEditable; if (isDxMouseWheelEvent(e)) { const isTextArea = $target.is("textarea") && $target.hasClass("dx-texteditor-input"); if (isTextArea || isContentEditable) { return false } const isInputFocused = $target.is("input[type='number'], textarea, select") && $target.is(":focus"); return isInputFocused } if (isMouseEvent(e)) { return touchInEditable || e.which > 1 } if (isTouchEvent(e)) { return touchInEditable && (0, _selectors.focused)($target) } }; exports.setEventFixMethod = func => { fixMethod = func }; const createEvent = (originalEvent, args) => { const event = copyEvent(originalEvent); if (args) { (0, _extend.extend)(event, args) } return event }; exports.createEvent = createEvent; exports.fireEvent = props => { const { originalEvent: originalEvent, delegateTarget: delegateTarget } = props; const event = createEvent(originalEvent, props); _events_engine.default.trigger(delegateTarget || event.target, event); return event }; exports.normalizeKeyName = _ref4 => { let { key: key, which: which } = _ref4; const normalizedKey = KEY_MAP[null === key || void 0 === key ? void 0 : key.toLowerCase()] || key; const normalizedKeyFromWhich = LEGACY_KEY_CODES[which]; if (normalizedKeyFromWhich && normalizedKey === key) { return normalizedKeyFromWhich } if (!normalizedKey && which) { return String.fromCharCode(which) } return normalizedKey }; exports.getChar = _ref5 => { let { key: key, which: which } = _ref5; return key || String.fromCharCode(which) }; exports.addNamespace = _m_add_namespace.default; exports.isCommandKeyPressed = _ref6 => { let { ctrlKey: ctrlKey, metaKey: metaKey } = _ref6; return ctrlKey || metaKey } }, 91293: /*!****************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/events/utils/m_add_namespace.js ***! \****************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _errors = (e = __webpack_require__( /*! ../../../core/errors */ 87129), e && e.__esModule ? e : { default: e }); var e; const addNamespace = (eventNames, namespace) => { if (!namespace) { throw _errors.default.Error("E0017") } if (Array.isArray(eventNames)) { return eventNames.map((eventName => addNamespace(eventName, namespace))).join(" ") } if (-1 !== eventNames.indexOf(" ")) { return addNamespace(eventNames.split(/\s+/g), namespace) } return `${eventNames}.${namespace}` }; exports.default = addNamespace }, 68337: /*!************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/events/utils/m_event_nodes_disposing.js ***! \************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.unsubscribeNodesDisposing = exports.subscribeNodesDisposing = void 0; var _events_engine = (e = __webpack_require__( /*! ../../../common/core/events/core/events_engine */ 92774), e && e.__esModule ? e : { default: e }); var e; var _remove = __webpack_require__( /*! ../../../common/core/events/remove */ 28630); function nodesByEvent(event) { return event && [event.target, event.delegateTarget, event.relatedTarget, event.currentTarget].filter((node => !!node)) } exports.subscribeNodesDisposing = (event, callback) => { _events_engine.default.one(nodesByEvent(event), _remove.removeEvent, callback) }; exports.unsubscribeNodesDisposing = (event, callback) => { _events_engine.default.off(nodesByEvent(event), _remove.removeEvent, callback) } }, 86940: /*!***************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/events/utils/m_event_target.js ***! \***************************************************************************************/ function(__unused_webpack_module, exports) { Object.defineProperty(exports, "__esModule", { value: true }); exports.getEventTarget = void 0; exports.getEventTarget = event => { var _originalEvent$target, _originalEvent$compos; const { originalEvent: originalEvent } = event; if (!originalEvent) { return event.target } const isShadowDOMUsed = Boolean(null === (_originalEvent$target = originalEvent.target) || void 0 === _originalEvent$target ? void 0 : _originalEvent$target.shadowRoot); if (!isShadowDOMUsed) { return originalEvent.target } const path = originalEvent.path ?? (null === (_originalEvent$compos = originalEvent.composedPath) || void 0 === _originalEvent$compos ? void 0 : _originalEvent$compos.call(originalEvent)); const target = (null === path || void 0 === path ? void 0 : path[0]) ?? event.target; return target } }, 46827: /*!************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/filter_builder/m_between.js ***! \************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.getConfig = function(caption, context) { return { name: "between", caption: caption, icon: "range", valueSeparator: SEPARATOR, dataTypes: ["number", "date", "datetime"], editorTemplate: editorTemplate.bind(context), notForLookup: true } }; var _renderer = (e = __webpack_require__( /*! ../../core/renderer */ 64553), e && e.__esModule ? e : { default: e }); var e; var _extend = __webpack_require__( /*! ../../core/utils/extend */ 52576); const FILTER_BUILDER_RANGE_CLASS = "dx-filterbuilder-range"; const FILTER_BUILDER_RANGE_START_CLASS = `${FILTER_BUILDER_RANGE_CLASS}-start`; const FILTER_BUILDER_RANGE_END_CLASS = `${FILTER_BUILDER_RANGE_CLASS}-end`; const FILTER_BUILDER_RANGE_SEPARATOR_CLASS = `${FILTER_BUILDER_RANGE_CLASS}-separator`; const SEPARATOR = "\u2013"; function editorTemplate(conditionInfo, container) { const $editorStart = (0, _renderer.default)("
").addClass(FILTER_BUILDER_RANGE_START_CLASS); const $editorEnd = (0, _renderer.default)("
").addClass(FILTER_BUILDER_RANGE_END_CLASS); let values = conditionInfo.value || []; const getStartValue = function(values) { return values && values.length > 0 ? values[0] : null }; const getEndValue = function(values) { return values && 2 === values.length ? values[1] : null }; container.append($editorStart); container.append((0, _renderer.default)("").addClass(FILTER_BUILDER_RANGE_SEPARATOR_CLASS).text(SEPARATOR)); container.append($editorEnd); container.addClass(FILTER_BUILDER_RANGE_CLASS); this._editorFactory.createEditor.call(this, $editorStart, (0, _extend.extend)({}, conditionInfo.field, conditionInfo, { value: getStartValue(values), parentType: "filterBuilder", setValue(value) { values = [value, getEndValue(values)]; conditionInfo.setValue(values) } })); this._editorFactory.createEditor.call(this, $editorEnd, (0, _extend.extend)({}, conditionInfo.field, conditionInfo, { value: getEndValue(values), parentType: "filterBuilder", setValue(value) { values = [getStartValue(values), value]; conditionInfo.setValue(values) } })) } }, 26005: /*!*******************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/filter_builder/m_filter_builder.js ***! \*******************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _events_engine = _interopRequireDefault(__webpack_require__( /*! ../../common/core/events/core/events_engine */ 92774)); var _index = __webpack_require__( /*! ../../common/core/events/utils/index */ 98834); var _message = _interopRequireDefault(__webpack_require__( /*! ../../common/core/localization/message */ 4671)); var _component_registrator = _interopRequireDefault(__webpack_require__( /*! ../../core/component_registrator */ 92848)); var _dom_adapter = _interopRequireDefault(__webpack_require__( /*! ../../core/dom_adapter */ 64960)); var _guid = _interopRequireDefault(__webpack_require__( /*! ../../core/guid */ 19427)); var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../core/renderer */ 64553)); var _deferred = __webpack_require__( /*! ../../core/utils/deferred */ 87739); var _extend = __webpack_require__( /*! ../../core/utils/extend */ 52576); var _type = __webpack_require__( /*! ../../core/utils/type */ 11528); var _ui = _interopRequireDefault(__webpack_require__( /*! ../../ui/popup/ui.popup */ 10720)); var _ui2 = _interopRequireDefault(__webpack_require__( /*! ../../ui/shared/ui.editor_factory_mixin */ 87093)); var _tree_view = _interopRequireDefault(__webpack_require__( /*! ../../ui/tree_view */ 4313)); var _ui3 = _interopRequireDefault(__webpack_require__( /*! ../../ui/widget/ui.widget */ 11118)); var _m_utils = __webpack_require__( /*! ../ui/overlay/m_utils */ 67169); var _m_utils2 = __webpack_require__( /*! ./m_utils */ 29498); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } const ACTIONS = [{ name: "onEditorPreparing", config: { excludeValidators: ["disabled", "readOnly"], category: "rendering" } }, { name: "onEditorPrepared", config: { excludeValidators: ["disabled", "readOnly"], category: "rendering" } }, { name: "onValueChanged", config: { excludeValidators: ["disabled", "readOnly"] } }]; const OPERATORS = { and: "and", or: "or", notAnd: "!and", notOr: "!or" }; const EditorFactory = (0, _ui2.default)(class {}); class FilterBuilder extends _ui3.default { _getDefaultOptions() { return (0, _extend.extend)(super._getDefaultOptions(), { onEditorPreparing: null, onEditorPrepared: null, onValueChanged: null, fields: [], groupOperations: ["and", "or", "notAnd", "notOr"], maxGroupLevel: void 0, value: null, allowHierarchicalFields: false, groupOperationDescriptions: { and: _message.default.format("dxFilterBuilder-and"), or: _message.default.format("dxFilterBuilder-or"), notAnd: _message.default.format("dxFilterBuilder-notAnd"), notOr: _message.default.format("dxFilterBuilder-notOr") }, customOperations: [], closePopupOnTargetScroll: true, filterOperationDescriptions: { between: _message.default.format("dxFilterBuilder-filterOperationBetween"), equal: _message.default.format("dxFilterBuilder-filterOperationEquals"), notEqual: _message.default.format("dxFilterBuilder-filterOperationNotEquals"), lessThan: _message.default.format("dxFilterBuilder-filterOperationLess"), lessThanOrEqual: _message.default.format("dxFilterBuilder-filterOperationLessOrEquals"), greaterThan: _message.default.format("dxFilterBuilder-filterOperationGreater"), greaterThanOrEqual: _message.default.format("dxFilterBuilder-filterOperationGreaterOrEquals"), startsWith: _message.default.format("dxFilterBuilder-filterOperationStartsWith"), contains: _message.default.format("dxFilterBuilder-filterOperationContains"), notContains: _message.default.format("dxFilterBuilder-filterOperationNotContains"), endsWith: _message.default.format("dxFilterBuilder-filterOperationEndsWith"), isBlank: _message.default.format("dxFilterBuilder-filterOperationIsBlank"), isNotBlank: _message.default.format("dxFilterBuilder-filterOperationIsNotBlank") } }) } _optionChanged(args) { switch (args.name) { case "closePopupOnTargetScroll": break; case "onEditorPreparing": case "onEditorPrepared": case "onValueChanged": this._initActions(); break; case "customOperations": this._initCustomOperations(); this._invalidate(); break; case "fields": case "maxGroupLevel": case "groupOperations": case "allowHierarchicalFields": case "groupOperationDescriptions": case "filterOperationDescriptions": this._invalidate(); break; case "value": if (args.value !== args.previousValue) { const disableInvalidateForValue = this._disableInvalidateForValue; if (!disableInvalidateForValue) { this._initModel(); this._invalidate() } this._disableInvalidateForValue = false; this.executeAction("onValueChanged", { value: args.value, previousValue: args.previousValue }); this._disableInvalidateForValue = disableInvalidateForValue } break; default: super._optionChanged(args) } } getFilterExpression() { const fields = this._getNormalizedFields(); const value = (0, _extend.extend)(true, [], this._model); return (0, _m_utils2.getFilterExpression)((0, _m_utils2.getNormalizedFilter)(value), fields, this._customOperations, "filterBuilder") } _getNormalizedFields() { return (0, _m_utils2.getNormalizedFields)(this.option("fields")) } _updateFilter() { this._disableInvalidateForValue = true; const value = (0, _extend.extend)(true, [], this._model); const normalizedValue = (0, _m_utils2.getNormalizedFilter)(value); const oldValue = (0, _m_utils2.getNormalizedFilter)(this._getModel(this.option("value"))); if (JSON.stringify(oldValue) !== JSON.stringify(normalizedValue)) { this.option("value", normalizedValue) } this._disableInvalidateForValue = false; this._fireContentReadyAction() } _init() { this._initCustomOperations(); this._initModel(); this._initEditorFactory(); this._initActions(); super._init() } _initEditorFactory() { this._editorFactory = new EditorFactory } _initCustomOperations() { this._customOperations = (0, _m_utils2.getMergedOperations)(this.option("customOperations"), this.option("filterOperationDescriptions.between"), this) } _getDefaultGroupOperation() { var _this$option; return (null === (_this$option = this.option("groupOperations")) || void 0 === _this$option ? void 0 : _this$option[0]) ?? OPERATORS.and } _getModel(value) { return (0, _m_utils2.convertToInnerStructure)(value, this._customOperations, this._getDefaultGroupOperation()) } _initModel() { this._model = this._getModel(this.option("value")) } _initActions() { const that = this; that._actions = {}; ACTIONS.forEach((action => { const actionConfig = (0, _extend.extend)({}, action.config); that._actions[action.name] = that._createActionByOption(action.name, actionConfig) })) } executeAction(actionName, options) { const action = this._actions[actionName]; return action && action(options) } _initMarkup() { this.$element().addClass("dx-filterbuilder"); super._initMarkup(); this._addAriaAttributes(this.$element(), _message.default.format("dxFilterBuilder-filterAriaRootElement"), "group"); this._createGroupElementByCriteria(this._model).appendTo(this.$element()) } _addAriaAttributes($element, ariaLabel, role, hasPopup, hasExpanded, ariaLevel) { if (!$element || !$element.length) { return } const attributes = { role: role }; if (ariaLabel) { if ($element.text().length > 0) { attributes.title = ariaLabel } else { attributes["aria-label"] = ariaLabel } } if ((0, _type.isDefined)(hasPopup)) { attributes["aria-haspopup"] = `${hasPopup}` } if ((0, _type.isDefined)(hasExpanded)) { attributes["aria-expanded"] = `${hasExpanded}` } if ((0, _type.isDefined)(ariaLevel)) { attributes["aria-level"] = `${ariaLevel}` } $element.attr(attributes) } _createConditionElement(condition, parent, groupLevel) { return (0, _renderer.default)("
").addClass("dx-filterbuilder-group").append(this._createConditionItem(condition, parent, groupLevel)).attr("role", "group") } _createGroupElementByCriteria(criteria, parent) { let groupLevel = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : 0; const $group = this._createGroupElement(criteria, parent, groupLevel); const $groupContent = $group.find(".dx-filterbuilder-group-content"); const groupCriteria = (0, _m_utils2.getGroupCriteria)(criteria); for (let i = 0; i < groupCriteria.length; i++) { const innerCriteria = groupCriteria[i]; if ((0, _m_utils2.isGroup)(innerCriteria)) { this._createGroupElementByCriteria(innerCriteria, criteria, groupLevel + 1).appendTo($groupContent) } else if ((0, _m_utils2.isCondition)(innerCriteria)) { this._createConditionElement(innerCriteria, criteria, `${groupLevel+1}`).appendTo($groupContent) } } return $group } _createGroupElement(criteria, parent, groupLevel) { const $guid = new _guid.default; const $groupItem = (0, _renderer.default)("
").addClass("dx-filterbuilder-group-item"); const $groupContent = (0, _renderer.default)("
").addClass("dx-filterbuilder-group-content").attr("id", `${$guid}`); const $group = (0, _renderer.default)("
").addClass("dx-filterbuilder-group").append($groupItem).append($groupContent); if (null != parent) { this._createRemoveButton((() => { (0, _m_utils2.removeItem)(parent, criteria); $group.remove(); this._updateFilter() }), "group").appendTo($groupItem) } let groupItemLevel = groupLevel; if (0 === groupLevel) { this._addAriaAttributes($group, "", "tree"); groupItemLevel += 1 } this._addAriaAttributes($groupItem, _message.default.format("dxFilterBuilder-filterAriaGroupItem"), "treeitem", null, null, groupItemLevel); $groupItem.attr("aria-owns", `${$guid}`); this._createGroupOperationButton(criteria).appendTo($groupItem); this._createAddButton((() => { const newGroup = (0, _m_utils2.createEmptyGroup)(this._getDefaultGroupOperation()); (0, _m_utils2.addItem)(newGroup, criteria); this._createGroupElement(newGroup, criteria, groupLevel + 1).appendTo($groupContent); this._updateFilter() }), (() => { const field = this.option("fields")[0]; const newCondition = (0, _m_utils2.createCondition)(field, this._customOperations); (0, _m_utils2.addItem)(newCondition, criteria); this._createConditionElement(newCondition, criteria, groupLevel + 1).appendTo($groupContent); this._updateFilter() }), groupLevel).appendTo($groupItem); return $group } _createButton(caption) { return (0, _renderer.default)("
").text(caption) } _createGroupOperationButton(criteria) { const groupOperations = this._getGroupOperations(criteria); let groupMenuItem = (0, _m_utils2.getGroupMenuItem)(criteria, groupOperations); const caption = groupMenuItem.text; const $operationButton = groupOperations && groupOperations.length < 2 ? this._createButton(caption).addClass("dx-state-disabled") : this._createButtonWithMenu({ caption: caption, menu: { items: groupOperations, displayExpr: "text", keyExpr: "value", onItemClick: e => { if (groupMenuItem !== e.itemData) { (0, _m_utils2.setGroupValue)(criteria, e.itemData.value); $operationButton.text(e.itemData.text); groupMenuItem = e.itemData; this._updateFilter() } }, onContentReady(e) { e.component.selectItem(groupMenuItem) }, cssClass: "dx-filterbuilder-group-operations" } }); this._addAriaAttributes($operationButton, _message.default.format("dxFilterBuilder-filterAriaOperationButton"), "combobox", true, false); return $operationButton.addClass("dx-filterbuilder-text").addClass("dx-filterbuilder-group-operation").attr("tabindex", 0) } _createButtonWithMenu(options) { const that = this; const removeMenu = function() { that.$element().find(".dx-state-active").removeClass("dx-state-active").attr("aria-expanded", "false"); that.$element().find(".dx-overlay .dx-treeview").remove(); that.$element().find(".dx-overlay").remove() }; const rtlEnabled = this.option("rtlEnabled"); const position = rtlEnabled ? "right" : "left"; const $button = this._createButton(options.caption); const $guid = new _guid.default; $button.attr("aria-controls", `${$guid}`); (0, _extend.extend)(options.menu, { id: $guid, focusStateEnabled: true, selectionMode: "single", onItemClick: (handler = options.menu.onItemClick, function(e) { handler(e); if ("dxclick" === e.event.type) { removeMenu() } }), onHiding() { $button.removeClass("dx-state-active").attr("aria-expanded", "false") }, position: { my: `${position} top`, at: `${position} bottom`, offset: "0 1", of: $button, collision: "flip" }, animation: null, onHidden() { removeMenu() }, cssClass: `dx-filterbuilder-overlay ${options.menu.cssClass}`, rtlEnabled: rtlEnabled }); var handler; options.popup = { onShown(info) { const treeViewContentElement = (0, _renderer.default)(info.component.content()); const treeViewElement = treeViewContentElement.find(".dx-treeview"); if (treeViewElement.length) { that._applyAccessibilityAttributes(treeViewElement) } _events_engine.default.on(treeViewElement, "keyup keydown", (e => { const keyName = (0, _index.normalizeKeyName)(e); if ("keydown" === e.type && "tab" === keyName || "keyup" === e.type && ("escape" === keyName || "enter" === keyName)) { info.component.hide(); _events_engine.default.trigger(options.menu.position.of, "focus") } })); const treeView = treeViewElement.dxTreeView("instance"); treeView.focus(); treeView.option("focusedElement", null) } }; this._subscribeOnClickAndEnterKey($button, (() => { removeMenu(); that._createPopupWithTreeView(options, that.$element()); $button.addClass("dx-state-active").attr("aria-expanded", "true") })); return $button } _hasValueButton(condition) { const customOperation = (0, _m_utils2.getCustomOperation)(this._customOperations, condition[1]); return customOperation ? false !== customOperation.hasValue : null !== condition[2] } _createOperationButtonWithMenu(condition, field) { const that = this; const availableOperations = (0, _m_utils2.getAvailableOperations)(field, this.option("filterOperationDescriptions"), this._customOperations); let currentOperation = (0, _m_utils2.getOperationFromAvailable)((0, _m_utils2.getOperationValue)(condition), availableOperations); const $operationButton = this._createButtonWithMenu({ caption: currentOperation.text, menu: { items: availableOperations, displayExpr: "text", onItemRendered(e) { e.itemData.isCustom && (0, _renderer.default)(e.itemElement).addClass("dx-filterbuilder-menu-custom-operation") }, onContentReady(e) { e.component.selectItem(currentOperation) }, onItemClick: e => { if (currentOperation !== e.itemData) { currentOperation = e.itemData; (0, _m_utils2.updateConditionByOperation)(condition, currentOperation.value, that._customOperations); const $valueButton = $operationButton.siblings().filter(".dx-filterbuilder-item-value"); if (that._hasValueButton(condition)) { if (0 !== $valueButton.length) { $valueButton.remove() } that._createValueButton(condition, field).appendTo($operationButton.parent()) } else { $valueButton.remove() } $operationButton.text(currentOperation.text); this._updateFilter() } }, cssClass: "dx-filterbuilder-operations" } }).addClass("dx-filterbuilder-text").addClass("dx-filterbuilder-item-operation").attr("tabindex", 0); this._addAriaAttributes($operationButton, _message.default.format("dxFilterBuilder-filterAriaItemOperation"), "combobox", true, false); return $operationButton } _createOperationAndValueButtons(condition, field, $item) { this._createOperationButtonWithMenu(condition, field).appendTo($item); if (this._hasValueButton(condition)) { this._createValueButton(condition, field).appendTo($item) } } _createFieldButtonWithMenu(fields, condition, field) { const that = this; const allowHierarchicalFields = this.option("allowHierarchicalFields"); const items = (0, _m_utils2.getItems)(fields, allowHierarchicalFields); let item = (0, _m_utils2.getField)(field.name || field.dataField, items); const getFullCaption = function(item, items) { return allowHierarchicalFields ? (0, _m_utils2.getCaptionWithParents)(item, items) : item.caption }; condition[0] = item.name || item.dataField; const $fieldButton = this._createButtonWithMenu({ caption: getFullCaption(item, items), menu: { items: items, dataStructure: "plain", keyExpr: "id", parentId: "parentId", displayExpr: "caption", onItemClick: e => { if (item !== e.itemData) { item = e.itemData; condition[0] = item.name || item.dataField; condition[2] = "object" === item.dataType ? null : ""; (0, _m_utils2.updateConditionByOperation)(condition, (0, _m_utils2.getDefaultOperation)(item), that._customOperations); $fieldButton.siblings().filter(".dx-filterbuilder-text").remove(); that._createOperationAndValueButtons(condition, item, $fieldButton.parent()); const caption = getFullCaption(item, e.component.option("items")); $fieldButton.text(caption); this._updateFilter() } }, onContentReady(e) { e.component.selectItem(item) }, cssClass: "dx-filterbuilder-fields" } }).addClass("dx-filterbuilder-text").addClass("dx-filterbuilder-item-field").attr("tabindex", 0); this._addAriaAttributes($fieldButton, _message.default.format("dxFilterBuilder-filterAriaItemField"), "combobox", true, false); return $fieldButton } _createConditionItem(condition, parent, groupLevel) { const $item = (0, _renderer.default)("
").addClass("dx-filterbuilder-group-item"); const fields = this._getNormalizedFields(); const field = (0, _m_utils2.getField)(condition[0], fields); this._addAriaAttributes($item, "", "treeitem", null, null, groupLevel); this._createRemoveButton((() => { (0, _m_utils2.removeItem)(parent, condition); const isSingleChild = 1 === $item.parent().children().length; if (isSingleChild) { $item.parent().remove() } else { $item.remove() } this._updateFilter() }), "condition").appendTo($item); this._createFieldButtonWithMenu(fields, condition, field).appendTo($item); this._createOperationAndValueButtons(condition, field, $item); return $item } _getGroupOperations(criteria) { let groupOperations = this.option("groupOperations"); const groupOperationDescriptions = this.option("groupOperationDescriptions"); if (!groupOperations || !groupOperations.length) { groupOperations = [(0, _m_utils2.getGroupValue)(criteria).replace("!", "not")] } return groupOperations.map((operation => ({ text: groupOperationDescriptions[operation], value: OPERATORS[operation] }))) } _createRemoveButton(handler, type) { const $removeButton = (0, _renderer.default)("
").addClass("dx-filterbuilder-action-icon").addClass("dx-icon-remove").addClass("dx-filterbuilder-action").attr("tabindex", 0); if (type) { const removeMessage = _message.default.format("dxFilterBuilder-filterAriaRemoveButton", type); this._addAriaAttributes($removeButton, removeMessage, "button") } this._subscribeOnClickAndEnterKey($removeButton, handler); return $removeButton } _createAddButton(addGroupHandler, addConditionHandler, groupLevel) { let $button; const maxGroupLevel = this.option("maxGroupLevel"); if ((0, _type.isDefined)(maxGroupLevel) && groupLevel >= maxGroupLevel) { $button = this._createButton(); this._subscribeOnClickAndEnterKey($button, addConditionHandler) } else { $button = this._createButtonWithMenu({ menu: { items: [{ caption: _message.default.format("dxFilterBuilder-addCondition"), click: addConditionHandler }, { caption: _message.default.format("dxFilterBuilder-addGroup"), click: addGroupHandler }], displayExpr: "caption", onItemClick(e) { e.itemData.click() }, cssClass: "dx-filterbuilder-add-condition" } }) } this._addAriaAttributes($button, _message.default.format("dxFilterBuilder-filterAriaAddButton"), "combobox", true, false); return $button.addClass("dx-filterbuilder-action-icon").addClass("dx-icon-plus").addClass("dx-filterbuilder-action").attr("tabindex", 0) } _createValueText(item, field, $container) { const that = this; const $text = (0, _renderer.default)("
").html(" ").addClass("dx-filterbuilder-item-value-text").attr("tabindex", 0).appendTo($container); this._addAriaAttributes($text, _message.default.format("dxFilterBuilder-filterAriaItemValue"), "button", true); const value = item[2]; const customOperation = (0, _m_utils2.getCustomOperation)(that._customOperations, item[1]); if (!customOperation && field.lookup) { (0, _m_utils2.getCurrentLookupValueText)(field, value, (result => { (0, _m_utils2.renderValueText)($text, result) })) } else { (0, _deferred.when)((0, _m_utils2.getCurrentValueText)(field, value, customOperation)).done((result => { (0, _m_utils2.renderValueText)($text, result, customOperation) })) } that._subscribeOnClickAndEnterKey($text, (e => { if ("keyup" === e.type) { e.stopPropagation() } that._createValueEditorWithEvents(item, field, $container) })); return $text } _updateConditionValue(item, value, callback) { const areValuesDifferent = item[2] !== value; if (areValuesDifferent) { item[2] = value } callback(); this._updateFilter() } _addDocumentKeyUp($editor, handler) { let isComposing = false; let hasCompositionJustEnded = false; const document = _dom_adapter.default.getDocument(); const documentKeyUpHandler = e => { if (isComposing || hasCompositionJustEnded) { hasCompositionJustEnded = false; return } handler(e) }; _events_engine.default.on(document, "keyup", documentKeyUpHandler); const input = $editor.find("input"); _events_engine.default.on(input, "compositionstart", (() => { isComposing = true })); _events_engine.default.on(input, "compositionend", (() => { isComposing = false; hasCompositionJustEnded = true })); _events_engine.default.on(input, "keydown", (event => { if (229 !== event.which) { hasCompositionJustEnded = false } })); this._documentKeyUpHandler = documentKeyUpHandler } _addDocumentClick($editor, closeEditorFunc) { const document = _dom_adapter.default.getDocument(); const documentClickHandler = e => { if (!this._isFocusOnEditorParts($editor, e.target)) { _events_engine.default.trigger($editor.find("input"), "change"); closeEditorFunc() } }; _events_engine.default.on(document, "dxpointerdown", documentClickHandler); this._documentClickHandler = documentClickHandler } _isFocusOnEditorParts($editor, target) { const activeElement = target || _dom_adapter.default.getActiveElement(); return (0, _renderer.default)(activeElement).closest($editor.children()).length || (0, _renderer.default)(activeElement).closest(".dx-dropdowneditor-overlay").length } _removeEvents() { const document = _dom_adapter.default.getDocument(); (0, _type.isDefined)(this._documentKeyUpHandler) && _events_engine.default.off(document, "keyup", this._documentKeyUpHandler); (0, _type.isDefined)(this._documentClickHandler) && _events_engine.default.off(document, "dxpointerdown", this._documentClickHandler) } _dispose() { this._removeEvents(); super._dispose() } _createValueEditorWithEvents(item, field, $container) { let value = item[2]; const createValueText = () => { $container.empty(); this._removeEvents(); return this._createValueText(item, field, $container) }; const closeEditor = () => { this._updateConditionValue(item, value, (() => { createValueText() })) }; const options = { value: "" === value ? null : value, filterOperation: (0, _m_utils2.getOperationValue)(item), setValue(data) { value = null === data ? "" : data }, closeEditor: closeEditor, text: $container.text() }; $container.empty(); const $editor = this._createValueEditor($container, field, options); _events_engine.default.trigger($editor.find("input").not(":hidden").eq(0), "focus"); this._removeEvents(); this._addDocumentClick($editor, closeEditor); this._addDocumentKeyUp($editor, (e => { const keyName = (0, _index.normalizeKeyName)(e); if ("tab" === keyName) { if (this._isFocusOnEditorParts($editor)) { return } this._updateConditionValue(item, value, (() => { createValueText(); if (e.shiftKey) { _events_engine.default.trigger($container.prev(), "focus") } })) } if ("escape" === keyName) { _events_engine.default.trigger(createValueText(), "focus") } if ("enter" === keyName) { this._updateConditionValue(item, value, (() => { _events_engine.default.trigger(createValueText(), "focus") })) } })); this._fireContentReadyAction() } _createValueButton(item, field) { const $valueButton = (0, _renderer.default)("
").addClass("dx-filterbuilder-text").addClass("dx-filterbuilder-item-value"); this._createValueText(item, field, $valueButton); return $valueButton } _createValueEditor($container, field, options) { const $editor = (0, _renderer.default)("
").attr("tabindex", 0).appendTo($container); const customOperation = (0, _m_utils2.getCustomOperation)(this._customOperations, options.filterOperation); const editorTemplate = customOperation && customOperation.editorTemplate ? customOperation.editorTemplate : field.editorTemplate; if (editorTemplate) { const template = this._getTemplate(editorTemplate); template.render({ model: (0, _extend.extend)({ field: field }, options), container: $editor }) } else { this._editorFactory.createEditor.call(this, $editor, (0, _extend.extend)({}, field, options, { parentType: "filterBuilder" })) } return $editor } _createPopupWithTreeView(options, $container) { const that = this; const $popup = (0, _renderer.default)("
").addClass(options.menu.cssClass).appendTo($container); this._createComponent($popup, _ui.default, { onHiding: options.menu.onHiding, onHidden: options.menu.onHidden, rtlEnabled: options.menu.rtlEnabled, position: options.menu.position, animation: options.menu.animation, contentTemplate(contentElement) { const $menuContainer = (0, _renderer.default)("
").appendTo(contentElement); that._createComponent($menuContainer, _tree_view.default, options.menu); $menuContainer.attr("id", `${options.menu.id}`); this.repaint() }, _ignoreFunctionValueDeprecation: true, maxHeight: () => (0, _m_utils.getElementMaxHeightByWindow)(options.menu.position.of), visible: true, focusStateEnabled: false, preventScrollEvents: false, container: $popup, hideOnOutsideClick: true, onShown: options.popup.onShown, shading: false, width: "auto", height: "auto", showTitle: false, _wrapperClassExternal: options.menu.cssClass, _ignorePreventScrollEventsDeprecation: true }) } _subscribeOnClickAndEnterKey($button, handler) { _events_engine.default.on($button, "dxclick", handler); _events_engine.default.on($button, "keyup", (e => { if ("enter" === (0, _index.normalizeKeyName)(e)) { handler(e) } })) } _applyAccessibilityAttributes($element) { var _treeViewPopup$find; const treeViewPopup = $element.closest(".dx-overlay-content"); null === treeViewPopup || void 0 === treeViewPopup || treeViewPopup.removeAttr("role"); const treeViewNode = null === treeViewPopup || void 0 === treeViewPopup || null === (_treeViewPopup$find = treeViewPopup.find) || void 0 === _treeViewPopup$find ? void 0 : _treeViewPopup$find.call(treeViewPopup, ".dx-treeview-node-container"); null === treeViewNode || void 0 === treeViewNode || treeViewNode.attr("role", "presentation") } }(0, _component_registrator.default)("dxFilterBuilder", FilterBuilder); exports.default = FilterBuilder }, 86193: /*!*********************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/filter_builder/m_filter_operations_dictionary.js ***! \*********************************************************************************************************/ function(__unused_webpack_module, exports) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; const OPERATION_ICONS = { "=": "equal", "<>": "notequal", "<": "less", "<=": "lessorequal", ">": "greater", ">=": "greaterorequal", notcontains: "doesnotcontain", contains: "contains", startswith: "startswith", endswith: "endswith", isblank: "isblank", isnotblank: "isnotblank" }; const OPERATION_NAME = { "=": "equal", "<>": "notEqual", "<": "lessThan", "<=": "lessThanOrEqual", ">": "greaterThan", ">=": "greaterThanOrEqual", startswith: "startsWith", contains: "contains", notcontains: "notContains", endswith: "endsWith", isblank: "isBlank", isnotblank: "isNotBlank", between: "between" }; exports.default = { getIconByFilterOperation: filterOperation => OPERATION_ICONS[filterOperation], getNameByFilterOperation: filterOperation => OPERATION_NAME[filterOperation] } }, 29498: /*!**********************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/filter_builder/m_utils.js ***! \**********************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.addItem = function(item, group) { const criteria = getGroupCriteria(group); const groupValue = getGroupValue(criteria); 1 === criteria.length ? criteria.unshift(item) : criteria.push(item, groupValue); return group }; exports.convertToInnerStructure = convertToInnerStructure; exports.createCondition = function(field, customOperations) { const condition = [field.dataField, "", ""]; const filterOperation = getDefaultOperation(field); updateConditionByOperation(condition, filterOperation, customOperations); return condition }; exports.createEmptyGroup = createEmptyGroup; exports.filterHasField = function filterHasField(filter, dataField) { if (null === filter || 0 === filter.length) { return false } if (isCondition(filter)) { return filter[0] === dataField } return filter.some((item => (isCondition(item) || isGroup(item)) && filterHasField(item, dataField))) }; exports.getAvailableOperations = function(field, filterOperationDescriptions, customOperations) { const filterOperations = getFilterOperations(field); const isLookupField = !!field.lookup; customOperations.forEach((customOperation => { if (!field.filterOperations && -1 === filterOperations.indexOf(customOperation.name)) { const dataTypes = customOperation && customOperation.dataTypes; const isOperationForbidden = isLookupField ? !!customOperation.notForLookup : false; if (!isOperationForbidden && dataTypes && dataTypes.indexOf(field.dataType || DEFAULT_DATA_TYPE) >= 0) { filterOperations.push(customOperation.name) } } })); return filterOperations.map((operation => { const customOperation = getCustomOperation(customOperations, operation); if (customOperation) { return { icon: customOperation.icon || EMPTY_MENU_ICON, text: customOperation.caption || (0, _inflector.captionize)(customOperation.name), value: customOperation.name, isCustom: true } } return { icon: _m_filter_operations_dictionary.default.getIconByFilterOperation(operation) || EMPTY_MENU_ICON, text: getCaptionByOperation(operation, filterOperationDescriptions), value: operation } })) }; exports.getCaptionByOperation = getCaptionByOperation; exports.getCaptionWithParents = function getCaptionWithParents(item, plainItems) { if (hasParent(item.dataField)) { const parentId = getParentIdFromItemDataField(item.dataField); for (let i = 0; i < plainItems.length; i++) { if (plainItems[i].dataField === parentId) { return `${getCaptionWithParents(plainItems[i],plainItems)}.${item.caption}` } } } return item.caption }; exports.getCurrentLookupValueText = function(field, value, handler) { if ("" === value) { handler(""); return } const { lookup: lookup } = field; if (lookup.items) { handler(lookup.calculateCellValue(value) || "") } else { const lookupDataSource = (0, _type.isFunction)(lookup.dataSource) ? lookup.dataSource({}) : lookup.dataSource; const dataSource = new _data_source.DataSource(lookupDataSource); dataSource.loadSingle(lookup.valueExpr, value).done((result => { let valueText = ""; if (result) { valueText = lookup.displayExpr ? (0, _data.compileGetter)(lookup.displayExpr)(result) : result } if (field.customizeText) { valueText = field.customizeText({ value: value, valueText: valueText }) } handler(valueText) })).fail((() => { handler("") })) } }; exports.getCurrentValueText = function(field, value, customOperation) { let target = arguments.length > 3 && void 0 !== arguments[3] ? arguments[3] : "filterBuilder"; if (checkDefaultValue(value)) { return "" } if (Array.isArray(value)) { const result = new _deferred.Deferred; _deferred.when.apply(this, function(field, value, customOperation, target) { const options = { values: value }; return value.map((v => getPrimitiveValueText(field, v, customOperation, target, options))) }(field, value, customOperation, target)).done((function() { for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { args[_key] = arguments[_key] } const text = args.some((item => !checkDefaultValue(item))) ? args.map((item => !checkDefaultValue(item) ? item : "?")) : ""; result.resolve(text) })); return result } return getPrimitiveValueText(field, value, customOperation, target) }; exports.getCustomOperation = getCustomOperation; exports.getDefaultOperation = getDefaultOperation; exports.getField = getField; exports.getFilterExpression = function getFilterExpression(value, fields, customOperations, target) { if (!(0, _type.isDefined)(value)) { return null } if (isNegationGroup(value)) { const filterExpression = getFilterExpression(value[1], fields, customOperations, target); return ["!", filterExpression] } const criteria = getGroupCriteria(value); if (isCondition(criteria)) { return getConditionFilterExpression(criteria, fields, customOperations, target) || null } let result = []; let filterExpression; const groupValue = getGroupValue(criteria); for (let i = 0; i < criteria.length; i++) { if (isGroup(criteria[i])) { filterExpression = getFilterExpression(criteria[i], fields, customOperations, target); if (filterExpression) { i && result.push(groupValue); result.push(filterExpression) } } else if (isCondition(criteria[i])) { filterExpression = getConditionFilterExpression(criteria[i], fields, customOperations, target); if (filterExpression) { result.length && result.push(groupValue); result.push(filterExpression) } } } if (1 === result.length) { result = result[0] } return result.length ? result : null }; exports.getFilterOperations = getFilterOperations; exports.getGroupCriteria = getGroupCriteria; exports.getGroupMenuItem = function(group, availableGroups) { const groupValue = getGroupValue(group); return availableGroups.filter((item => item.value === groupValue))[0] }; exports.getGroupValue = getGroupValue; exports.getItems = getItems; exports.getMatchedConditions = function(filter, dataField) { if (null === filter || 0 === filter.length) { return [] } if (isCondition(filter)) { if (isMatchedCondition(filter, dataField)) { return [filter] } return [] } const groupValue = getGroupValue(filter); if (groupValue !== AND_GROUP_OPERATION) { return [] } const result = filter.filter((item => isCondition(item) && isMatchedCondition(item, dataField))); return result }; exports.getMergedOperations = function(customOperations, betweenCaption, context) { const result = (0, _extend.extend)(true, [], customOperations); let betweenIndex = -1; result.some(((customOperation, index) => { if ("between" === customOperation.name) { betweenIndex = index; return true } return })); if (-1 !== betweenIndex) { result[betweenIndex] = (0, _extend.extend)((0, _m_between.getConfig)(betweenCaption, context), result[betweenIndex]) } else { result.unshift((0, _m_between.getConfig)(betweenCaption, context)) } return result }; exports.getNormalizedFields = function(fields) { return fields.reduce(((result, field) => { if ((0, _type.isDefined)(field.dataField)) { const normalizedField = {}; for (const key in field) { if (field[key] && AVAILABLE_FIELD_PROPERTIES.includes(key)) { normalizedField[key] = field[key] } } normalizedField.defaultCalculateFilterExpression = _filtering.default.defaultCalculateFilterExpression; if (!(0, _type.isDefined)(normalizedField.dataType)) { normalizedField.dataType = DEFAULT_DATA_TYPE } if (!(0, _type.isDefined)(normalizedField.trueText)) { normalizedField.trueText = _message.default.format("dxDataGrid-trueText") } if (!(0, _type.isDefined)(normalizedField.falseText)) { normalizedField.falseText = _message.default.format("dxDataGrid-falseText") } result.push(normalizedField) } return result }), []) }; exports.getNormalizedFilter = function getNormalizedFilter(group) { const criteria = getGroupCriteria(group); let i; if (0 === criteria.length) { return null } const itemsForRemove = []; for (i = 0; i < criteria.length; i++) { if (isGroup(criteria[i])) { const normalizedGroupValue = getNormalizedFilter(criteria[i]); if (normalizedGroupValue) { criteria[i] = normalizedGroupValue } else { itemsForRemove.push(criteria[i]) } } else if (isCondition(criteria[i])) { if (!isValidCondition(criteria[i])) { itemsForRemove.push(criteria[i]) } } } for (i = 0; i < itemsForRemove.length; i++) { removeItem(criteria, itemsForRemove[i]) } if (1 === criteria.length) { return null } criteria.splice(criteria.length - 1, 1); if (1 === criteria.length) { group = function(group, criteria) { if (isNegationGroup(group)) { group[1] = criteria } else { group = criteria } return group }(group, criteria[0]) } if (0 === group.length) { return null } return group }; exports.getOperationFromAvailable = function(operation, availableOperations) { for (let i = 0; i < availableOperations.length; i++) { if (availableOperations[i].value === operation) { return availableOperations[i] } } throw new _ui.default.Error("E1048", operation) }; exports.getOperationValue = function(condition) { let caption; if (null === condition[2]) { if (condition[1] === EQUAL_OPERATION) { caption = "isblank" } else { caption = "isnotblank" } } else { caption = condition[1] } return caption }; exports.isCondition = isCondition; exports.isEmptyGroup = function(group) { const criteria = getGroupCriteria(group); if (isCondition(criteria)) { return false } const hasConditions = criteria.some((item => isCondition(item))); return !hasConditions }; exports.isGroup = isGroup; exports.isValidCondition = isValidCondition; exports.removeFieldConditionsFromFilter = function(filter, dataField) { if (!filter || 0 === filter.length) { return null } if (isCondition(filter)) { const hasMatchedCondition = isMatchedCondition(filter, dataField); return !hasMatchedCondition ? filter : null } return syncConditionIntoGroup(filter, [dataField], false) }; exports.removeItem = removeItem; exports.renderValueText = void 0; exports.setGroupValue = function(group, value) { ! function(group, value) { const isNegationValue = function(value) { return -1 !== value.indexOf("!") }; const convertGroupToNegationGroup = function(group) { const criteria = group.slice(0); group.length = 0; group.push("!", criteria) }; const convertNegationGroupToGroup = function(group) { const criteria = getGroupCriteria(group); group.length = 0; [].push.apply(group, criteria) }; if (isNegationValue(value)) { if (!isNegationGroup(group)) { convertGroupToNegationGroup(group) } } else if (isNegationGroup(group)) { convertNegationGroupToGroup(group) } }(group, value); const criteria = getGroupCriteria(group); let i; value = function(value) { return -1 === value.indexOf("!") ? value : value.substring(1) }(value); ! function(criteria, value) { for (i = 0; i < criteria.length; i++) { if (!Array.isArray(criteria[i])) { criteria[i] = value } } }(criteria, value); return group }; exports.syncFilters = function(filter, addedFilter) { if (null === filter || 0 === filter.length) { return addedFilter } if (isCondition(filter)) { if (isMatchedCondition(filter, addedFilter[0])) { return addedFilter } return [filter, AND_GROUP_OPERATION, addedFilter] } const groupValue = getGroupValue(filter); if (groupValue !== AND_GROUP_OPERATION) { return [addedFilter, "and", filter] } return syncConditionIntoGroup(filter, addedFilter, true) }; exports.updateConditionByOperation = updateConditionByOperation; var _message = _interopRequireDefault(__webpack_require__( /*! ../../common/core/localization/message */ 4671)); var _data_source = __webpack_require__( /*! ../../common/data/data_source/data_source */ 68216); var _errors = __webpack_require__( /*! ../../common/data/errors */ 82812); var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../core/renderer */ 64553)); var _data = __webpack_require__( /*! ../../core/utils/data */ 31e3); var _deferred = __webpack_require__( /*! ../../core/utils/deferred */ 87739); var _extend = __webpack_require__( /*! ../../core/utils/extend */ 52576); var _inflector = __webpack_require__( /*! ../../core/utils/inflector */ 53124); var _type = __webpack_require__( /*! ../../core/utils/type */ 11528); var _format_helper = _interopRequireDefault(__webpack_require__( /*! ../../format_helper */ 2082)); var _filtering = _interopRequireDefault(__webpack_require__( /*! ../../ui/shared/filtering */ 56417)); var _ui = _interopRequireDefault(__webpack_require__( /*! ../../ui/widget/ui.errors */ 35185)); var _m_between = __webpack_require__( /*! ./m_between */ 46827); var _m_filter_operations_dictionary = _interopRequireDefault(__webpack_require__( /*! ./m_filter_operations_dictionary */ 86193)); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } const DEFAULT_DATA_TYPE = "string"; const EMPTY_MENU_ICON = "icon-none"; const AND_GROUP_OPERATION = "and"; const EQUAL_OPERATION = "="; const NOT_EQUAL_OPERATION = "<>"; const DATATYPE_OPERATIONS = { number: ["=", "<>", "<", ">", "<=", ">=", "isblank", "isnotblank"], string: ["contains", "notcontains", "startswith", "endswith", "=", "<>", "isblank", "isnotblank"], date: ["=", "<>", "<", ">", "<=", ">=", "isblank", "isnotblank"], datetime: ["=", "<>", "<", ">", "<=", ">=", "isblank", "isnotblank"], boolean: ["=", "<>", "isblank", "isnotblank"], object: ["isblank", "isnotblank"] }; const DEFAULT_FORMAT = { date: "shortDate", datetime: "shortDateShortTime" }; const LOOKUP_OPERATIONS = ["=", "<>", "isblank", "isnotblank"]; const AVAILABLE_FIELD_PROPERTIES = ["caption", "customizeText", "dataField", "dataType", "editorTemplate", "falseText", "editorOptions", "filterOperations", "format", "lookup", "trueText", "calculateFilterExpression", "name"]; function isNegationGroup(group) { return group && group.length > 1 && "!" === group[0] && !isCondition(group) } function getGroupCriteria(group) { return isNegationGroup(group) ? group[1] : group } function getCriteriaOperation(criteria) { if (isCondition(criteria)) { return AND_GROUP_OPERATION } let value = ""; for (let i = 0; i < criteria.length; i++) { const item = criteria[i]; if (!Array.isArray(item)) { if (value && value !== item) { throw _errors.errors.Error("E4019") } if ("!" !== item) { value = item } } } return value } function getGroupValue(group) { const criteria = getGroupCriteria(group); let value = getCriteriaOperation(criteria); if (!value) { value = AND_GROUP_OPERATION } if (criteria !== group) { value = `!${value}` } return value } function getFilterOperations(field) { const result = (entity = field.filterOperations, Array.isArray(entity) && entity.length) ? field.filterOperations : function(field) { return field.lookup && LOOKUP_OPERATIONS || DATATYPE_OPERATIONS[field.dataType || DEFAULT_DATA_TYPE] }(field); var entity; return (0, _extend.extend)([], result) } function getCaptionByOperation(operation, filterOperationDescriptions) { const operationName = _m_filter_operations_dictionary.default.getNameByFilterOperation(operation); return filterOperationDescriptions && filterOperationDescriptions[operationName] ? filterOperationDescriptions[operationName] : operationName } function getCustomOperation(customOperations, name) { const filteredOperations = customOperations.filter((item => item.name === name)); return filteredOperations.length ? filteredOperations[0] : null } function getDefaultOperation(field) { return field.defaultFilterOperation || getFilterOperations(field)[0] } function removeItem(group, item) { const criteria = getGroupCriteria(group); const index = criteria.indexOf(item); criteria.splice(index, 1); if (1 !== criteria.length) { criteria.splice(index, 1) } return group } function createEmptyGroup(value) { const isNegation = isNegationGroupOperation(value); const groupOperation = isNegation ? getGroupOperationFromNegationOperation(value) : value; return isNegation ? ["!", [groupOperation]] : [groupOperation] } function getField(dataField, fields) { for (let i = 0; i < fields.length; i++) { if (fields[i].name === dataField) { return fields[i] } if (fields[i].dataField.toLowerCase() === dataField.toLowerCase()) { return fields[i] } } const extendedFields = getItems(fields, true).filter((item => item.dataField.toLowerCase() === dataField.toLowerCase())); if (extendedFields.length > 0) { return extendedFields[0] } throw new _ui.default.Error("E1047", dataField) } function isGroup(criteria) { if (!Array.isArray(criteria)) { return false } return criteria.length < 2 || Array.isArray(criteria[0]) || Array.isArray(criteria[1]) } function isCondition(criteria) { if (!Array.isArray(criteria)) { return false } return criteria.length > 1 && !Array.isArray(criteria[0]) && !Array.isArray(criteria[1]) } function convertToInnerGroup(group, customOperations, defaultGroupOperation) { defaultGroupOperation = defaultGroupOperation || AND_GROUP_OPERATION; const groupOperation = getCriteriaOperation(group).toLowerCase() || defaultGroupOperation; let innerGroup = []; for (let i = 0; i < group.length; i++) { if (isGroup(group[i])) { innerGroup.push(convertToInnerStructure(group[i], customOperations, defaultGroupOperation)); innerGroup = appendGroupOperationToGroup(innerGroup, groupOperation) } else if (isCondition(group[i])) { innerGroup.push(convertToInnerCondition(group[i], customOperations)); innerGroup = appendGroupOperationToGroup(innerGroup, groupOperation) } } if (0 === innerGroup.length) { innerGroup = appendGroupOperationToGroup(innerGroup, groupOperation) } return innerGroup } function convertToInnerCondition(condition, customOperations) { if (function(condition, customOperations) { const customOperation = getCustomOperation(customOperations, condition[1]); return customOperation && customOperation.name === condition[1] }(condition, customOperations)) { return condition } if (condition.length < 3) { condition[2] = condition[1]; condition[1] = EQUAL_OPERATION } return condition } function isNegationGroupOperation(operation) { return -1 !== operation.indexOf("not") } function getGroupOperationFromNegationOperation(operation) { return operation.substring(3).toLowerCase() } function appendGroupOperationToCriteria(criteria, groupOperation) { const isNegation = isNegationGroupOperation(groupOperation); groupOperation = isNegation ? getGroupOperationFromNegationOperation(groupOperation) : groupOperation; return isNegation ? ["!", criteria, groupOperation] : [criteria, groupOperation] } function appendGroupOperationToGroup(group, groupOperation) { const isNegation = isNegationGroupOperation(groupOperation); groupOperation = isNegation ? getGroupOperationFromNegationOperation(groupOperation) : groupOperation; group.push(groupOperation); let result = group; if (isNegation) { result = ["!", result] } return result } function convertToInnerStructure(value, customOperations, defaultGroupOperation) { defaultGroupOperation = defaultGroupOperation || AND_GROUP_OPERATION; if (!value) { return createEmptyGroup(defaultGroupOperation) } value = (0, _extend.extend)(true, [], value); if (isCondition(value)) { return appendGroupOperationToCriteria(convertToInnerCondition(value, customOperations), defaultGroupOperation) } if (isNegationGroup(value)) { return ["!", isCondition(value[1]) ? appendGroupOperationToCriteria(convertToInnerCondition(value[1], customOperations), defaultGroupOperation) : isNegationGroup(value[1]) ? appendGroupOperationToCriteria(convertToInnerStructure(value[1], customOperations), defaultGroupOperation) : convertToInnerGroup(value[1], customOperations, defaultGroupOperation)] } return convertToInnerGroup(value, customOperations, defaultGroupOperation) } function getConditionFilterExpression(condition, fields, customOperations, target) { const field = getField(condition[0], fields); const filterExpression = convertToInnerCondition(condition, customOperations); const customOperation = customOperations.length && getCustomOperation(customOperations, filterExpression[1]); if (customOperation && customOperation.calculateFilterExpression) { return customOperation.calculateFilterExpression.apply(customOperation, [filterExpression[2], field, fields]) } if (field.createFilterExpression) { return field.createFilterExpression.apply(field, [filterExpression[2], filterExpression[1], target]) } if (field.calculateFilterExpression) { return field.calculateFilterExpression.apply(field, [filterExpression[2], filterExpression[1], target]) } return field.defaultCalculateFilterExpression.apply(field, [filterExpression[2], filterExpression[1], target]) } function getPrimitiveValueText(field, value, customOperation, target, options) { let valueText; if (true === value) { valueText = field.trueText || _message.default.format("dxDataGrid-trueText") } else if (false === value) { valueText = field.falseText || _message.default.format("dxDataGrid-falseText") } else { valueText = function(field, value) { const fieldFormat = field.format || DEFAULT_FORMAT[field.dataType]; return _format_helper.default.format(value, fieldFormat) }(field, value) } if (field.customizeText) { valueText = field.customizeText.call(field, { value: value, valueText: valueText, target: target }) } if (customOperation && customOperation.customizeText) { valueText = customOperation.customizeText.call(customOperation, { value: value, valueText: valueText, field: field, target: target }, options) } return valueText } function checkDefaultValue(value) { return "" === value || null === value } function itemExists(plainItems, parentId) { return plainItems.some((item => item.dataField === parentId)) } function pushItemAndCheckParent(originalItems, plainItems, item) { const { dataField: dataField } = item; if (hasParent(dataField)) { item.parentId = getParentIdFromItemDataField(dataField); if (!itemExists(plainItems, item.parentId) && !itemExists(originalItems, item.parentId)) { pushItemAndCheckParent(originalItems, plainItems, { id: item.parentId, dataType: "object", dataField: item.parentId, caption: generateCaptionByDataField(item.parentId, true), filterOperations: ["isblank", "isnotblank"], defaultCalculateFilterExpression: _filtering.default.defaultCalculateFilterExpression }) } } plainItems.push(item) } function generateCaptionByDataField(dataField, allowHierarchicalFields) { let caption = ""; if (allowHierarchicalFields) { dataField = dataField.substring(dataField.lastIndexOf(".") + 1) } else if (hasParent(dataField)) { dataField.split(".").forEach(((field, index, arr) => { caption += (0, _inflector.captionize)(field); if (index !== arr.length - 1) { caption += "." } })); return caption } return (0, _inflector.captionize)(dataField) } function getItems(fields, allowHierarchicalFields) { const items = []; for (let i = 0; i < fields.length; i++) { const item = (0, _extend.extend)(true, { caption: generateCaptionByDataField(fields[i].dataField, allowHierarchicalFields) }, fields[i]); item.id = item.name || item.dataField; if (allowHierarchicalFields) { pushItemAndCheckParent(fields, items, item) } else { items.push(item) } } return items } function hasParent(dataField) { return -1 !== dataField.lastIndexOf(".") } function getParentIdFromItemDataField(dataField) { return dataField.substring(0, dataField.lastIndexOf(".")) } function updateConditionByOperation(condition, operation, customOperations) { let customOperation = getCustomOperation(customOperations, operation); if (customOperation) { if (false === customOperation.hasValue) { condition[1] = operation; condition.length = 2 } else { condition[1] = operation; condition[2] = "" } return condition } if ("isblank" === operation) { condition[1] = EQUAL_OPERATION; condition[2] = null } else if ("isnotblank" === operation) { condition[1] = NOT_EQUAL_OPERATION; condition[2] = null } else { customOperation = getCustomOperation(customOperations, condition[1]); if (customOperation || 2 === condition.length || null === condition[2]) { condition[2] = "" } condition[1] = operation } return condition } function isValidCondition(condition) { return "" !== condition[2] } function isMatchedCondition(filter, addedFilterDataField) { return filter[0] === addedFilterDataField } function syncConditionIntoGroup(filter, addedFilter, canPush) { const result = []; const isNegation = isNegationGroup(filter); filter.forEach((item => { if (isCondition(item)) { if (isMatchedCondition(item, addedFilter[0])) { if (canPush) { result.push(addedFilter); canPush = false } else { result.splice(result.length - 1, 1) } } else { result.push(item) } } else { (result.length || isGroup(item)) && result.push(item) } })); if (0 === result.length) { return null } if (canPush) { result.push(AND_GROUP_OPERATION); result.push(addedFilter) } if (isNegation) { return ["!", 1 === result.length ? result[0] : result] } return 1 === result.length ? result[0] : result } exports.renderValueText = function($container, value, customOperation) { if (Array.isArray(value)) { const lastItemIndex = value.length - 1; $container.empty(); value.forEach(((t, i) => { (0, _renderer.default)("").addClass("dx-filterbuilder-text-part").text(t).appendTo($container); if (i !== lastItemIndex) { (0, _renderer.default)("").addClass("dx-filterbuilder-text-separator").text(customOperation && customOperation.valueSeparator ? customOperation.valueSeparator : "|").addClass("dx-filterbuilder-text-separator-empty").appendTo($container) } })) } else if (value) { $container.text(value) } else { $container.text(_message.default.format("dxFilterBuilder-enterValueText")) } } }, 83189: /*!*******************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/data_grid/export/m_export.js ***! \*******************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.ExportController = exports.DataProvider = void 0; __webpack_require__( /*! ../../../../ui/button */ 64973); __webpack_require__( /*! ../../../../ui/drop_down_button */ 56582); var _message = _interopRequireDefault(__webpack_require__( /*! ../../../../common/core/localization/message */ 4671)); var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../../../core/renderer */ 64553)); var _deferred = __webpack_require__( /*! ../../../../core/utils/deferred */ 87739); var _extend = __webpack_require__( /*! ../../../../core/utils/extend */ 52576); var _position = __webpack_require__( /*! ../../../../core/utils/position */ 41639); var _string = __webpack_require__( /*! ../../../../core/utils/string */ 54497); var _type = __webpack_require__( /*! ../../../../core/utils/type */ 11528); var _list_light = _interopRequireDefault(__webpack_require__( /*! ../../../../ui/list_light */ 80070)); var _ui = _interopRequireDefault(__webpack_require__( /*! ../../../../ui/widget/ui.errors */ 35185)); var _m_export = __webpack_require__( /*! ../../../grids/grid_core/m_export */ 47197); var _m_core = _interopRequireDefault(__webpack_require__( /*! ../m_core */ 54353)); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } function _extends() { return _extends = Object.assign ? Object.assign.bind() : function(n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) { ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]) } } return n }, _extends.apply(null, arguments) } class DataProvider { constructor(exportController, initialColumnWidthsByColumnIndex, selectedRowsOnly) { this._exportController = exportController; this._initialColumnWidthsByColumnIndex = initialColumnWidthsByColumnIndex; this._selectedRowsOnly = selectedRowsOnly } _getGroupValue(item) { const { key: key, data: data, rowType: rowType, groupIndex: groupIndex, summaryCells: summaryCells } = item; const groupColumn = this._options.groupColumns[groupIndex]; const value = _m_core.default.getDisplayValue(groupColumn, groupColumn.deserializeValue ? groupColumn.deserializeValue(key[groupIndex]) : key[groupIndex], data, rowType); let result = `${groupColumn.caption}: ${_m_core.default.formatValue(value,groupColumn)}`; if (summaryCells && summaryCells[0] && summaryCells[0].length) { result += ` ${_m_core.default.getGroupRowSummaryText(summaryCells[0],this._options.summaryTexts)}` } return result } _correctCellIndex(cellIndex) { return cellIndex } _initOptions() { const exportController = this._exportController; const groupColumns = exportController._columnsController.getGroupColumns(); this._options = { columns: exportController._getColumns(this._initialColumnWidthsByColumnIndex), groupColumns: groupColumns, items: this._selectedRowsOnly || exportController._selectionOnly ? exportController._getSelectedItems() : exportController._getAllItems(), isHeadersVisible: exportController.option("showColumnHeaders"), summaryTexts: exportController.option("summary.texts"), rtlEnabled: exportController.option("rtlEnabled") } } getHeaderStyles() { return [{ bold: true, alignment: "center" }, { bold: true, alignment: "left" }, { bold: true, alignment: "right" }] } getGroupRowStyle() { return { bold: true, alignment: (0, _position.getDefaultAlignment)(this._options.rtlEnabled) } } getColumnStyles() { const columnStyles = []; this.getColumns().forEach((column => { columnStyles.push({ alignment: column.alignment || "left", format: column.format, dataType: column.dataType }) })); return columnStyles } getStyles() { return [...this.getHeaderStyles(), ...this.getColumnStyles(), this.getGroupRowStyle()] } _getTotalCellStyleId(cellIndex) { var _this$getColumns$cell; const alignment = (null === (_this$getColumns$cell = this.getColumns()[cellIndex]) || void 0 === _this$getColumns$cell ? void 0 : _this$getColumns$cell.alignment) || "right"; return this.getHeaderStyles().map((style => style.alignment)).indexOf(alignment) } getStyleId(rowIndex, cellIndex) { if (rowIndex < this.getHeaderRowCount()) { return 0 } if (this.isTotalCell(rowIndex - this.getHeaderRowCount(), cellIndex)) { return this._getTotalCellStyleId(cellIndex) } if (this.isGroupRow(rowIndex - this.getHeaderRowCount())) { return this.getHeaderStyles().length + this.getColumns().length } return cellIndex + this.getHeaderStyles().length } getColumns(getColumnsByAllRows) { const { columns: columns } = this._options; return getColumnsByAllRows ? columns : columns[columns.length - 1] } getColumnsWidths() { const columns = this.getColumns(); return (0, _type.isDefined)(columns) ? columns.map((c => c.width)) : void 0 } getRowsCount() { return this._options.items.length + this.getHeaderRowCount() } getHeaderRowCount() { if (this.isHeadersVisible()) { return this._options.columns.length - 1 } return 0 } isGroupRow(rowIndex) { return rowIndex < this._options.items.length && "group" === this._options.items[rowIndex].rowType } getGroupLevel(rowIndex) { const item = this._options.items[rowIndex - this.getHeaderRowCount()]; const groupIndex = item && item.groupIndex; if (item && "totalFooter" === item.rowType) { return 0 } return (0, _type.isDefined)(groupIndex) ? groupIndex : this._options.groupColumns.length } getCellType(rowIndex, cellIndex) { const columns = this.getColumns(); if (rowIndex < this.getHeaderRowCount()) { return "string" } rowIndex -= this.getHeaderRowCount(); if (cellIndex < columns.length) { const item = this._options.items.length && this._options.items[rowIndex]; const column = columns[cellIndex]; if (item && "data" === item.rowType) { if (isFinite(item.values[this._correctCellIndex(cellIndex)]) && !(0, _type.isDefined)(column.customizeText)) { return (0, _type.isDefined)(column.lookup) ? column.lookup.dataType : column.dataType } } return "string" } } ready() { this._initOptions(); const options = this._options; return (0, _deferred.when)(options.items).done((items => { options.items = items })).fail((() => { options.items = [] })) } _convertFromGridGroupSummaryItems(gridGroupSummaryItems) { if ((0, _type.isDefined)(gridGroupSummaryItems) && gridGroupSummaryItems.length > 0) { return gridGroupSummaryItems.map((item => ({ value: item.value, name: item.name }))) } } getCellData(rowIndex, cellIndex, isExcelJS) { let value; let column; const result = { cellSourceData: {}, value: value }; const columns = this.getColumns(); const correctedCellIndex = this._correctCellIndex(cellIndex); if (rowIndex < this.getHeaderRowCount()) { const columnsRow = this.getColumns(true)[rowIndex]; column = columnsRow[cellIndex]; result.cellSourceData.rowType = "header"; result.cellSourceData.column = column && column.gridColumn; result.value = column && column.caption } else { rowIndex -= this.getHeaderRowCount(); const item = this._options.items.length && this._options.items[rowIndex]; if (item) { const itemValues = item.values; result.cellSourceData.rowType = item.rowType; result.cellSourceData.column = columns[cellIndex] && columns[cellIndex].gridColumn; switch (item.rowType) { case "groupFooter": case "totalFooter": if (correctedCellIndex < itemValues.length) { value = itemValues[correctedCellIndex]; if ((0, _type.isDefined)(value)) { result.cellSourceData.value = value.value; result.cellSourceData.totalSummaryItemName = value.name; result.value = _m_core.default.getSummaryText(value, this._options.summaryTexts) } else { result.cellSourceData.value = void 0 } } break; case "group": result.cellSourceData.groupIndex = item.groupIndex; if (cellIndex < 1) { result.cellSourceData.column = this._options.groupColumns[item.groupIndex]; result.cellSourceData.value = item.key[item.groupIndex]; result.cellSourceData.groupSummaryItems = this._convertFromGridGroupSummaryItems(item.summaryCells[0]); result.value = this._getGroupValue(item) } else { const summaryItems = item.values[correctedCellIndex]; if (Array.isArray(summaryItems)) { result.cellSourceData.groupSummaryItems = this._convertFromGridGroupSummaryItems(summaryItems); value = ""; for (let i = 0; i < summaryItems.length; i++) { value += (i > 0 ? isExcelJS ? "\n" : " \n " : "") + _m_core.default.getSummaryText(summaryItems[i], this._options.summaryTexts) } result.value = value } else { result.cellSourceData.value = void 0 } } break; default: column = columns[cellIndex]; if (column) { const value = itemValues[correctedCellIndex]; const displayValue = _m_core.default.getDisplayValue(column, value, item.data, item.rowType); if (!isFinite(displayValue) || (0, _type.isDefined)(column.customizeText)) { if (isExcelJS && (0, _type.isDefined)(column.customizeText) && column.customizeText === this._exportController._columnsController.getCustomizeTextByDataType("boolean")) { result.value = displayValue } else { result.value = _m_core.default.formatValue(displayValue, column) } } else { result.value = displayValue } result.cellSourceData.value = value } result.cellSourceData.data = item.data } } } return result } isHeadersVisible() { return this._options.isHeadersVisible } isTotalCell(rowIndex, cellIndex) { const { items: items } = this._options; const item = items[rowIndex]; const correctCellIndex = this._correctCellIndex(cellIndex); const isSummaryAlignByColumn = item.summaryCells && item.summaryCells[correctCellIndex] && item.summaryCells[correctCellIndex].length > 0 && item.summaryCells[correctCellIndex][0].alignByColumn; return item && "groupFooter" === item.rowType || "totalFooter" === item.rowType || isSummaryAlignByColumn } getCellMerging(rowIndex, cellIndex) { const { columns: columns } = this._options; const column = columns[rowIndex] && columns[rowIndex][cellIndex]; return column ? { colspan: (column.exportColspan || 1) - 1, rowspan: (column.rowspan || 1) - 1 } : { colspan: 0, rowspan: 0 } } getFrozenArea() { return { x: 0, y: this.getHeaderRowCount() } } } exports.DataProvider = DataProvider; class ExportController extends _m_core.default.ViewController { init() { this.throwWarningIfNoOnExportingEvent(); this._columnsController = this.getController("columns"); this._dataController = this.getController("data"); this._selectionController = this.getController("selection"); this._rowsView = this.getView("rowsView"); this._headersView = this.getView("columnHeadersView"); this.createAction("onExporting", { excludeValidators: ["disabled", "readOnly"] }) } _getEmptyCell() { return { caption: "", colspan: 1, rowspan: 1 } } _updateColumnWidth(column, width) { column.width = width } _getColumns(initialColumnWidthsByColumnIndex) { let result = []; let i; let columns; const columnsController = this._columnsController; const rowCount = columnsController.getRowCount(); for (i = 0; i <= rowCount; i++) { const currentHeaderRow = []; columns = columnsController.getVisibleColumns(i, true); let columnWidthsByColumnIndex; if (i === rowCount) { if (this._updateLockCount) { columnWidthsByColumnIndex = initialColumnWidthsByColumnIndex } else { const columnWidths = this._getColumnWidths(this._headersView, this._rowsView); if (columnWidths && columnWidths.length) { columnWidthsByColumnIndex = {}; for (let i = 0; i < columns.length; i++) { columnWidthsByColumnIndex[columns[i].index] = columnWidths[i] } } } } for (let j = 0; j < columns.length; j++) { const column = (0, _extend.extend)({}, columns[j], { dataType: "datetime" === columns[j].dataType ? "date" : columns[j].dataType, gridColumn: columns[j] }); if (this._needColumnExporting(column)) { const currentColspan = this._calculateExportColspan(column); if ((0, _type.isDefined)(currentColspan)) { column.exportColspan = currentColspan } if (columnWidthsByColumnIndex) { this._updateColumnWidth(column, columnWidthsByColumnIndex[column.index]) } currentHeaderRow.push(column) } } result.push(currentHeaderRow) } columns = result[rowCount]; result = (0, _m_export.prepareItems)(result.slice(0, -1), this._getEmptyCell()); result.push(columns); return result } _calculateExportColspan(column) { if (!column.isBand) { return } const childColumns = this._columnsController.getChildrenByBandColumn(column.index, true); if (!(0, _type.isDefined)(childColumns)) { return } return childColumns.reduce(((result, childColumn) => { if (this._needColumnExporting(childColumn)) { return result + (this._calculateExportColspan(childColumn) || 1) } return result }), 0) } _needColumnExporting(column) { return !column.command && (column.allowExporting || void 0 === column.allowExporting) } _getFooterSummaryItems(summaryCells, isTotal) { const result = []; let estimatedItemsCount = 1; let i = 0; do { const values = []; for (let j = 0; j < summaryCells.length; j++) { const summaryCell = summaryCells[j]; const itemsLength = summaryCell.length; if (estimatedItemsCount < itemsLength) { estimatedItemsCount = itemsLength } values.push(summaryCell[i]) } result.push({ values: values, rowType: isTotal ? "totalFooter" : "groupFooter" }) } while (i++ < estimatedItemsCount - 1); return result } _hasSummaryGroupFooters() { const groupItems = this.option("summary.groupItems"); if ((0, _type.isDefined)(groupItems)) { for (let i = 0; i < groupItems.length; i++) { if (groupItems[i].showInGroupFooter) { return true } } } return false } _getItemsWithSummaryGroupFooters(sourceItems) { let result = []; let beforeGroupFooterItems = []; let groupFooterItems = []; for (let i = 0; i < sourceItems.length; i++) { const item = sourceItems[i]; if ("groupFooter" === item.rowType) { groupFooterItems = this._getFooterSummaryItems(item.summaryCells); result = result.concat(beforeGroupFooterItems, groupFooterItems); beforeGroupFooterItems = [] } else { beforeGroupFooterItems.push(item) } } return result.length ? result : beforeGroupFooterItems } _updateGroupValuesWithSummaryByColumn(sourceItems) { let summaryValues = []; for (let i = 0; i < sourceItems.length; i++) { const item = sourceItems[i]; const { summaryCells: summaryCells } = item; if ("group" === item.rowType && summaryCells && summaryCells.length > 1) { const groupColumnCount = item.values.length; for (let j = 1; j < summaryCells.length; j++) { for (let k = 0; k < summaryCells[j].length; k++) { const summaryItem = summaryCells[j][k]; if (summaryItem && summaryItem.alignByColumn) { if (!Array.isArray(summaryValues[j - groupColumnCount])) { summaryValues[j - groupColumnCount] = [] } summaryValues[j - groupColumnCount].push(summaryItem) } } } if (summaryValues.length > 0) { item.values.push(...summaryValues); summaryValues = [] } } } } _processUnExportedItems(items) { const columns = this._columnsController.getVisibleColumns(null, true); const groupColumns = this._columnsController.getGroupColumns(); let values; let summaryCells; for (let i = 0; i < items.length; i++) { const item = items[i]; let isCommand = false; values = []; summaryCells = []; for (let j = 0; j < columns.length; j++) { const column = columns[j]; isCommand || (isCommand = ["detailExpand", "buttons"].includes(column.type)); if (this._needColumnExporting(column)) { if (item.values) { if ("group" === item.rowType && !values.length) { values.push(item.key[item.groupIndex]) } else { values.push(item.values[j]) } } if (item.summaryCells) { if ("group" === item.rowType && !summaryCells.length) { const index = j - groupColumns.length + item.groupIndex; summaryCells.push(item.summaryCells[isCommand ? index : index + 1]) } else { summaryCells.push(item.summaryCells[j]) } } } } if (values.length) { item.values = values } if (summaryCells.length) { item.summaryCells = summaryCells } } } _getAllItems(data) { let skipFilter = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : false; const that = this; const d = new _deferred.Deferred; const footerItems = this._dataController.footerItems(); const totalItem = footerItems.length && footerItems[0]; const summaryTotalItems = that.option("summary.totalItems"); let summaryCells; (0, _deferred.when)(data).done((data => { this._dataController.loadAll(data, skipFilter).done(((sourceItems, totalAggregates) => { that._updateGroupValuesWithSummaryByColumn(sourceItems); if (that._hasSummaryGroupFooters()) { sourceItems = that._getItemsWithSummaryGroupFooters(sourceItems) } summaryCells = totalItem && totalItem.summaryCells; if ((0, _type.isDefined)(totalAggregates) && summaryTotalItems) { summaryCells = that._getSummaryCells(summaryTotalItems, totalAggregates) } const summaryItems = totalItem && that._getFooterSummaryItems(summaryCells, true); if (summaryItems) { sourceItems = sourceItems.concat(summaryItems) } that._processUnExportedItems(sourceItems); d.resolve(sourceItems) })).fail(d.reject) })).fail(d.reject); return d } _getSummaryCells(summaryTotalItems, totalAggregates) { return this._dataController._calculateSummaryCells(summaryTotalItems, totalAggregates, this._columnsController.getVisibleColumns(null, true), ((summaryItem, column) => this._dataController._isDataColumn(column) ? column.index : -1)) } _getSelectedItems() { if (this.needLoadItemsOnExportingSelectedItems()) { return this._getAllItems(this._selectionController.loadSelectedItemsWithFilter(), true) } return this._getAllItems(this._selectionController.getSelectedRowsData()) } _getColumnWidths(headersView, rowsView) { return headersView && headersView.isVisible() ? headersView.getColumnWidths() : rowsView.getColumnWidths() } throwWarningIfNoOnExportingEvent() { var _this$component$hasAc, _this$component; const hasOnExporting = null === (_this$component$hasAc = (_this$component = this.component).hasActionSubscription) || void 0 === _this$component$hasAc ? void 0 : _this$component$hasAc.call(_this$component, "onExporting"); if (this.option("export.enabled") && !hasOnExporting) { _ui.default.log("W1024") } } callbackNames() { return ["selectionOnlyChanged"] } getDataProvider(selectedRowsOnly) { const columnWidths = this._getColumnWidths(this._headersView, this._rowsView); let initialColumnWidthsByColumnIndex; if (columnWidths && columnWidths.length) { initialColumnWidthsByColumnIndex = {}; const columnsLastRowVisibleColumns = this._columnsController.getVisibleColumns(this._columnsController.getRowCount(), true); for (let i = 0; i < columnsLastRowVisibleColumns.length; i++) { initialColumnWidthsByColumnIndex[columnsLastRowVisibleColumns[i].index] = columnWidths[i] } } return new DataProvider(this, initialColumnWidthsByColumnIndex, selectedRowsOnly) } exportTo(selectedRowsOnly, format) { this._selectionOnly = selectedRowsOnly; const onExporting = this.getAction("onExporting"); const eventArgs = { rtlEnabled: this.option("rtlEnabled"), selectedRowsOnly: !!selectedRowsOnly, format: format, fileName: "DataGrid", cancel: false }; (0, _type.isFunction)(onExporting) && onExporting(eventArgs) } publicMethods() { return ["getDataProvider"] } selectionOnly(value) { if ((0, _type.isDefined)(value)) { this._isSelectedRows = value; this.selectionOnlyChanged.fire() } else { return this._isSelectedRows } } optionChanged(args) { super.optionChanged(args); if ("export" === args.name) { this.throwWarningIfNoOnExportingEvent() } } needLoadItemsOnExportingSelectedItems() { return this.option("loadItemsOnExportingSelectedItems") ?? this._dataController._dataSource.remoteOperations().filtering } } exports.ExportController = ExportController; _m_core.default.registerModule("export", { defaultOptions: () => ({ export: { enabled: false, fileName: "DataGrid", formats: ["xlsx"], allowExportSelectedData: false, texts: { exportTo: _message.default.format("dxDataGrid-exportTo"), exportAll: _message.default.format("dxDataGrid-exportAll"), exportSelectedRows: _message.default.format("dxDataGrid-exportSelectedRows") } } }), controllers: { export: ExportController }, extenders: { controllers: { editing: Base => class extends Base { callbackNames() { const callbackList = super.callbackNames(); return (0, _type.isDefined)(callbackList) ? callbackList.push("editingButtonsUpdated") : ["editingButtonsUpdated"] } _updateEditButtons() { super._updateEditButtons(); this.editingButtonsUpdated.fire() } } }, views: { headerPanel: Base => class extends Base { _getToolbarItems() { const items = super._getToolbarItems(); const exportButton = this._getExportToolbarButton(); if (exportButton) { items.push(exportButton); this._correctItemsPosition(items) } return items } _getExportToolbarButton() { const items = this._getExportToolbarItems(); if (0 === items.length) { return null } const disabled = this._needDisableExportButton(); const toolbarButtonOptions = { name: "exportButton", location: "after", locateInMenu: "auto", sortIndex: 30, options: { items: items }, disabled: disabled }; if (1 === items.length) { const widgetOptions = _extends({}, items[0], { hint: items[0].text, elementAttr: { class: "dx-datagrid-export-button" } }); toolbarButtonOptions.widget = "dxButton"; toolbarButtonOptions.showText = "inMenu"; toolbarButtonOptions.options = widgetOptions } else { const widgetOptions = { icon: "export", displayExpr: "text", items: items, hint: this.option("export.texts.exportTo"), elementAttr: { class: "dx-datagrid-export-button" }, dropDownOptions: { width: "auto", _wrapperClassExternal: "dx-datagrid-export-menu" } }; toolbarButtonOptions.options = widgetOptions; toolbarButtonOptions.widget = "dxDropDownButton"; toolbarButtonOptions.menuItemTemplate = (_data, _index, container) => { this._createComponent((0, _renderer.default)(container), _list_light.default, { items: items }) } } return toolbarButtonOptions } _getExportToolbarItems() { const exportOptions = this.option("export"); const texts = this.option("export.texts"); const formats = this.option("export.formats") ?? []; if (!exportOptions.enabled) { return [] } const items = []; formats.forEach((formatType => { let formatName = formatType.toUpperCase(); let exportAllIcon = "export"; if ("xlsx" === formatType) { formatName = "Excel"; exportAllIcon = "xlsxfile" } if ("pdf" === formatType) { exportAllIcon = "pdffile" } items.push({ text: (0, _string.format)(texts.exportAll, formatName), icon: exportAllIcon, onClick: () => { this._exportController.exportTo(false, formatType) } }); if (exportOptions.allowExportSelectedData) { items.push({ text: (0, _string.format)(texts.exportSelectedRows, formatName), icon: "exportselected", onClick: () => { this._exportController.exportTo(true, formatType) } }) } })); return items } _correctItemsPosition(items) { items.sort(((itemA, itemB) => itemA.sortIndex - itemB.sortIndex)) } _isExportButtonVisible() { return this.option("export.enabled") } optionChanged(args) { super.optionChanged(args); if ("export" === args.name) { args.handled = true; this._invalidate() } } _needDisableExportButton() { const isDataColumnsInvisible = !this._columnsController.hasVisibleDataColumns(); const hasUnsavedChanges = this._editingController.hasChanges(); return isDataColumnsInvisible || hasUnsavedChanges } _columnOptionChanged(e) { super._columnOptionChanged(e); const isColumnLocationChanged = _m_core.default.checkChanges(e.optionNames, ["groupIndex", "visible", "all"]); if (isColumnLocationChanged) { const disabled = this._needDisableExportButton(); this.setToolbarItemDisabled("exportButton", disabled) } } init() { super.init(); this._exportController = this.getController("export"); this._editingController.editingButtonsUpdated.add((() => { const disabled = this._needDisableExportButton(); this.setToolbarItemDisabled("exportButton", disabled) })) } } } } }) }, 30131: /*!*****************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/data_grid/focus/m_focus.js ***! \*****************************************************************************************/ function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { var _common = __webpack_require__( /*! ../../../../core/utils/common */ 17781); var _data = __webpack_require__( /*! ../../../../core/utils/data */ 31e3); var _deferred = __webpack_require__( /*! ../../../../core/utils/deferred */ 87739); var _type = __webpack_require__( /*! ../../../../core/utils/type */ 11528); var _m_focus = __webpack_require__( /*! ../../../grids/grid_core/focus/m_focus */ 51628); var _m_core = (e = __webpack_require__( /*! ../m_core */ 54353), e && e.__esModule ? e : { default: e }); var e; var _m_utils = __webpack_require__( /*! ../m_utils */ 73057); function _extends() { return _extends = Object.assign ? Object.assign.bind() : function(n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) { ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]) } } return n }, _extends.apply(null, arguments) } const MAX_SAFE_INTEGER = Number.MAX_SAFE_INTEGER || 9007199254740991; _m_core.default.registerModule("focus", _extends({}, _m_focus.focusModule, { extenders: _extends({}, _m_focus.focusModule.extenders, { controllers: _extends({}, _m_focus.focusModule.extenders.controllers, { data: Base => class extends(_m_focus.focusModule.extenders.controllers.data(Base)) { changeRowExpand(path, isRowClick) { if (this.option("focusedRowEnabled") && Array.isArray(path) && this.isRowExpanded(path)) { if ((!isRowClick || !this._keyboardNavigationController.isKeyboardEnabled()) && this._isFocusedRowInsideGroup(path)) { this.option("focusedRowKey", path) } } return super.changeRowExpand(path, isRowClick) } _isFocusedRowInsideGroup(path) { const focusedRowKey = this.option("focusedRowKey"); const rowIndex = this.getRowIndexByKey(focusedRowKey); const focusedRow = rowIndex >= 0 && this.getVisibleRows()[rowIndex]; const groups = this._columnsController.getGroupDataSourceParameters(true); if (focusedRow) { for (let i = 0; i < path.length; ++i) { const getter = (0, _data.compileGetter)(groups[i] && groups[i].selector); if (getter(focusedRow.data) !== path[i]) { return false } } } return true } _getGroupPath(groupItem, groupCount) { const groupPath = []; let items = [groupItem]; while (items && items[0] && groupCount) { const item = items[0]; if (void 0 !== item.key) { groupPath.push(item.key) } items = item.items; groupCount-- } return groupPath } _expandGroupByPath(that, groupPath, level) { const d = new _deferred.Deferred; level++; that.expandRow(groupPath.slice(0, level)).done((() => { if (level === groupPath.length) { d.resolve() } else { that._expandGroupByPath(that, groupPath, level).done(d.resolve).fail(d.reject) } })).fail(d.reject); return d.promise() } _calculateGlobalRowIndexByGroupedData(key) { const that = this; const dataSource = that._dataSource; const filter = that._generateFilterByKey(key); const deferred = new _deferred.Deferred; const isGroupKey = Array.isArray(key); const group = dataSource.group(); if (isGroupKey) { return deferred.resolve(-1).promise() } if (!dataSource._grouping._updatePagingOptions) { that._calculateGlobalRowIndexByFlatData(key, null, true).done(deferred.resolve).fail(deferred.reject); return deferred } dataSource.load({ filter: that._concatWithCombinedFilter(filter), group: group }).done((data => { if (!data || 0 === data.length || !(0, _type.isDefined)(data[0].key) || -1 === data[0].key) { return deferred.resolve(-1).promise() } const groupPath = that._getGroupPath(data[0], group.length); that._expandGroupByPath(that, groupPath, 0).done((() => { that._calculateExpandedRowGlobalIndex(deferred, key, groupPath, group) })).fail(deferred.reject) })).fail(deferred.reject); return deferred.promise() } _calculateExpandedRowGlobalIndex(deferred, key, groupPath, group) { const groupFilter = (0, _m_utils.createGroupFilter)(groupPath, { group: group }); const dataSource = this._dataSource; const scrollingMode = this.option("scrolling.mode"); const isVirtualScrolling = "virtual" === scrollingMode || "infinite" === scrollingMode; const pageSize = dataSource.pageSize(); let groupOffset; dataSource._grouping._updatePagingOptions({ skip: 0, take: MAX_SAFE_INTEGER }, ((groupInfo, totalOffset) => { if ((0, _common.equalByValue)(groupInfo.path, groupPath)) { groupOffset = totalOffset } })); this._calculateGlobalRowIndexByFlatData(key, groupFilter).done((dataOffset => { let count; let groupContinuationCount; if (dataOffset < 0) { deferred.resolve(-1); return } const currentPageOffset = groupOffset % pageSize || pageSize; count = currentPageOffset + dataOffset - groupPath.length; if (isVirtualScrolling) { groupContinuationCount = 0 } else { groupContinuationCount = Math.floor(count / (pageSize - groupPath.length)) * groupPath.length } count = groupOffset + dataOffset + groupContinuationCount; deferred.resolve(count) })).fail(deferred.reject) } } }) }) })) }, 35479: /*!******************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/data_grid/grouping/const.js ***! \******************************************************************************************/ function(__unused_webpack_module, exports) { Object.defineProperty(exports, "__esModule", { value: true }); exports.CONTEXT_MENU_UNGROUP_COLUMN_ICON_NAME = exports.CONTEXT_MENU_UNGROUP_ALL_COLUMNS_ICON_NAME = exports.CONTEXT_MENU_GROUP_BY_COLUMN_ICON_NAME = exports.CLASSES = void 0; exports.CLASSES = { groupPanel: "dx-datagrid-group-panel", groupPanelMessage: "dx-group-panel-message", groupPanelItem: "dx-group-panel-item", groupPanelLabel: "dx-toolbar-label", groupPanelContainer: "dx-toolbar-item" }; exports.CONTEXT_MENU_GROUP_BY_COLUMN_ICON_NAME = "groupbycolumn"; exports.CONTEXT_MENU_UNGROUP_COLUMN_ICON_NAME = "ungroupcolumn"; exports.CONTEXT_MENU_UNGROUP_ALL_COLUMNS_ICON_NAME = "ungroupallcolumns" }, 43983: /*!***********************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/data_grid/grouping/m_grouping.js ***! \***********************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.GroupingHeaderPanelExtender = void 0; var _message = _interopRequireDefault(__webpack_require__( /*! ../../../../common/core/localization/message */ 4671)); var _devices = _interopRequireDefault(__webpack_require__( /*! ../../../../core/devices */ 65951)); var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../../../core/renderer */ 64553)); var _deferred = __webpack_require__( /*! ../../../../core/utils/deferred */ 87739); var _iterator = __webpack_require__( /*! ../../../../core/utils/iterator */ 21274); var _size = __webpack_require__( /*! ../../../../core/utils/size */ 57653); var _type = __webpack_require__( /*! ../../../../core/utils/type */ 11528); var _accessibility = __webpack_require__( /*! ../../../../ui/shared/accessibility */ 16191); var _m_column_context_menu_mixin = __webpack_require__( /*! ../../../grids/grid_core/context_menu/m_column_context_menu_mixin */ 16217); var _m_accessibility = __webpack_require__( /*! ../../../grids/grid_core/m_accessibility */ 68491); var _m_core = _interopRequireDefault(__webpack_require__( /*! ../m_core */ 54353)); var _m_data_source_adapter = _interopRequireDefault(__webpack_require__( /*! ../m_data_source_adapter */ 72208)); var _const = __webpack_require__( /*! ./const */ 35479); var _m_grouping_collapsed = __webpack_require__( /*! ./m_grouping_collapsed */ 13729); var _m_grouping_expanded = __webpack_require__( /*! ./m_grouping_expanded */ 27191); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } _m_data_source_adapter.default.extend((Base => class extends Base { init() { super.init.apply(this, arguments); this._initGroupingHelper() } _initGroupingHelper(options) { const grouping = this._grouping; const isAutoExpandAll = this.option("grouping.autoExpandAll"); const isFocusedRowEnabled = this.option("focusedRowEnabled"); const remoteOperations = options ? options.remoteOperations : this.remoteOperations(); const isODataRemoteOperations = remoteOperations.filtering && remoteOperations.sorting && remoteOperations.paging; if (isODataRemoteOperations && !remoteOperations.grouping && (isAutoExpandAll || !isFocusedRowEnabled)) { if (!grouping || grouping instanceof _m_grouping_collapsed.GroupingHelper) { this._grouping = new _m_grouping_expanded.GroupingHelper(this) } } else if (!grouping || grouping instanceof _m_grouping_expanded.GroupingHelper) { this._grouping = new _m_grouping_collapsed.GroupingHelper(this) } } totalItemsCount() { const totalCount = super.totalItemsCount(); return totalCount > 0 && this._dataSource.group() && this._dataSource.requireTotalCount() ? totalCount + this._grouping.totalCountCorrection() : totalCount } itemsCount() { return this._dataSource.group() ? this._grouping.itemsCount() || 0 : super.itemsCount.apply(this, arguments) } allowCollapseAll() { return this._grouping.allowCollapseAll() } isGroupItemCountable(item) { return this._grouping.isGroupItemCountable(item) } isRowExpanded(key) { const groupInfo = this._grouping.findGroupInfo(key); return groupInfo ? groupInfo.isExpanded : !this._grouping.allowCollapseAll() } collapseAll(groupIndex) { return this._collapseExpandAll(groupIndex, false) } expandAll(groupIndex) { return this._collapseExpandAll(groupIndex, true) } _collapseExpandAll(groupIndex, isExpand) { const that = this; const dataSource = that._dataSource; const group = dataSource.group(); const groups = _m_core.default.normalizeSortingInfo(group || []); if (groups.length) { for (let i = 0; i < groups.length; i++) { if (void 0 === groupIndex || groupIndex === i) { groups[i].isExpanded = isExpand } else if (null !== group && void 0 !== group && group[i]) { groups[i].isExpanded = group[i].isExpanded } } dataSource.group(groups); that._grouping.foreachGroups(((groupInfo, parents) => { if (void 0 === groupIndex || groupIndex === parents.length - 1) { groupInfo.isExpanded = isExpand } }), false, true); that.resetPagesCache() } return true } refresh() { super.refresh.apply(this, arguments); return this._grouping.refresh.apply(this._grouping, arguments) } changeRowExpand(path) { const that = this; const dataSource = that._dataSource; if (dataSource.group()) { dataSource.beginLoading(); if (that._lastLoadOptions) { that._lastLoadOptions.groupExpand = true } return that._changeRowExpandCore(path).always((() => { dataSource.endLoading() })) } } _changeRowExpandCore(path) { return this._grouping.changeRowExpand(path) } _hasGroupLevelsExpandState(group, isExpanded) { if (group && Array.isArray(group)) { for (let i = 0; i < group.length; i++) { if (group[i].isExpanded === isExpanded) { return true } } } } _customizeRemoteOperations(options, operationTypes) { const { remoteOperations: remoteOperations } = options; if (options.storeLoadOptions.group) { if (remoteOperations.grouping && !options.isCustomLoading) { if (!remoteOperations.groupPaging || this._hasGroupLevelsExpandState(options.storeLoadOptions.group, true)) { remoteOperations.paging = false } } if (!remoteOperations.grouping && (!remoteOperations.sorting || !remoteOperations.filtering || options.isCustomLoading || this._hasGroupLevelsExpandState(options.storeLoadOptions.group, false))) { remoteOperations.paging = false } } else if (!options.isCustomLoading && remoteOperations.paging && operationTypes.grouping) { this.resetCache() } super._customizeRemoteOperations.apply(this, arguments) } _handleDataLoading(options) { super._handleDataLoading(options); this._initGroupingHelper(options); return this._grouping.handleDataLoading(options) } _handleDataLoaded(options) { return this._grouping.handleDataLoaded(options, super._handleDataLoaded.bind(this)) } _handleDataLoadedCore(options) { return this._grouping.handleDataLoadedCore(options, super._handleDataLoadedCore.bind(this)) } })); const onGroupingMenuItemClick = function(column, rowIndex, params) { var _this$getKeyboardNavi, _keyboardNavigationCo2; const keyboardNavigationController = null === (_this$getKeyboardNavi = this.getKeyboardNavigationController) || void 0 === _this$getKeyboardNavi ? void 0 : _this$getKeyboardNavi.call(this); switch (params.itemData.value) { case "group": var _keyboardNavigationCo; this.isNeedToFocusColumn = true; null === keyboardNavigationController || void 0 === keyboardNavigationController || null === (_keyboardNavigationCo = keyboardNavigationController.groupColumn) || void 0 === _keyboardNavigationCo || _keyboardNavigationCo.call(keyboardNavigationController, column, rowIndex); break; case "ungroup": this.isNeedToFocusColumn = true; null === keyboardNavigationController || void 0 === keyboardNavigationController || null === (_keyboardNavigationCo2 = keyboardNavigationController.ungroupColumn) || void 0 === _keyboardNavigationCo2 || _keyboardNavigationCo2.call(keyboardNavigationController, column, rowIndex); break; case "ungroupAll": this.isNeedToFocusColumn = true; null === keyboardNavigationController || void 0 === keyboardNavigationController || keyboardNavigationController.ungroupAllColumns() } }; const isGroupPanelVisible = groupPanelOptions => { const visible = null === groupPanelOptions || void 0 === groupPanelOptions ? void 0 : groupPanelOptions.visible; return "auto" === visible ? "desktop" === _devices.default.current().deviceType : !!visible }; const allowDragging = (groupPanelOptions, column) => { const isVisible = isGroupPanelVisible(groupPanelOptions); const canDrag = (null === groupPanelOptions || void 0 === groupPanelOptions ? void 0 : groupPanelOptions.allowColumnDragging) && (null === column || void 0 === column ? void 0 : column.allowGrouping); return isVisible && !!canDrag }; const GroupingHeaderPanelExtender = Base => class extends((0, _m_column_context_menu_mixin.ColumnContextMenuMixin)(Base)) { _getToolbarItems() { const items = super._getToolbarItems(); return this._appendGroupingItem(items) } _appendGroupingItem(items) { if (this._isGroupPanelVisible()) { let isRendered = false; const toolbarItem = { template: () => { const $groupPanel = (0, _renderer.default)("
").addClass(_const.CLASSES.groupPanel); this._updateGroupPanelContent($groupPanel); (0, _m_accessibility.registerKeyboardAction)("groupPanel", this, $groupPanel, void 0, this._handleActionKeyDown.bind(this)); return $groupPanel }, name: "groupPanel", onItemRendered: () => { isRendered && this.renderCompleted.fire(); isRendered = true }, location: "before", locateInMenu: "never", sortIndex: 1 }; items.push(toolbarItem); this.updateToolbarDimensions() } return items } _handleActionKeyDown(args) { const { event: event } = args; const $target = (0, _renderer.default)(event.target); const groupColumnIndex = $target.closest(`.${_const.CLASSES.groupPanelItem}`).index(); const column = this._columnsController.getGroupColumns()[groupColumnIndex]; const columnIndex = column && column.index; if ($target.is(".dx-header-filter")) { this._headerFilterController.showHeaderFilterMenu(columnIndex, true) } else { this._processGroupItemAction(columnIndex) } event.preventDefault() } _isGroupPanelVisible() { return isGroupPanelVisible(this.option("groupPanel")) } _renderGroupPanelItems($groupPanel, groupColumns) { const that = this; $groupPanel.empty(); (0, _iterator.each)(groupColumns, ((index, groupColumn) => { that._createGroupPanelItem($groupPanel, groupColumn) })); (0, _accessibility.restoreFocus)(this) } _createGroupPanelItem($rootElement, groupColumn) { const $groupPanelItem = (0, _renderer.default)("
").addClass(groupColumn.cssClass).addClass(_const.CLASSES.groupPanelItem).data("columnData", groupColumn).appendTo($rootElement).text(groupColumn.caption); (0, _accessibility.setTabIndex)(this, $groupPanelItem); return $groupPanelItem } getGroupAndUngroupItems(options) { const { column: column } = options; const contextMenuEnabled = this.option("grouping.contextMenuEnabled"); if (contextMenuEnabled && column) { const isGroupingAllowed = (0, _type.isDefined)(column.allowGrouping) ? column.allowGrouping : true; if (isGroupingAllowed) { const isColumnGrouped = (0, _type.isDefined)(column.groupIndex) && column.groupIndex > -1; const groupingTexts = this.option("grouping.texts"); const onItemClick = onGroupingMenuItemClick.bind(this, column, 0); return [{ text: groupingTexts.ungroup, value: "ungroup", disabled: !isColumnGrouped, onItemClick: onItemClick, icon: _const.CONTEXT_MENU_UNGROUP_COLUMN_ICON_NAME }, { text: groupingTexts.ungroupAll, value: "ungroupAll", onItemClick: onItemClick, icon: _const.CONTEXT_MENU_UNGROUP_ALL_COLUMNS_ICON_NAME }] } } return [] } _columnOptionChanged(e) { if (!this._requireReady && !_m_core.default.checkChanges(e.optionNames, ["width", "visibleWidth"])) { const $toolbarElement = this.element(); const $groupPanel = null === $toolbarElement || void 0 === $toolbarElement ? void 0 : $toolbarElement.find(`.${_const.CLASSES.groupPanel}`); if ($groupPanel && $groupPanel.length) { this._updateGroupPanelContent($groupPanel); this.updateToolbarDimensions(); this.renderCompleted.fire() } } super._columnOptionChanged() } _updateGroupPanelContent($groupPanel) { const groupColumns = this.getColumns(); const groupPanelOptions = this.option("groupPanel"); this._renderGroupPanelItems($groupPanel, groupColumns); if (groupPanelOptions.allowColumnDragging && !groupColumns.length) { (0, _renderer.default)("
").addClass(_const.CLASSES.groupPanelMessage).text(groupPanelOptions.emptyPanelText).appendTo($groupPanel); $groupPanel.closest(`.${_const.CLASSES.groupPanelContainer}`).addClass(_const.CLASSES.groupPanelLabel); $groupPanel.closest(`.${_const.CLASSES.groupPanelLabel}`).css("maxWidth", "none") } } allowDragging(column) { const groupPanelOptions = this.option("groupPanel"); return allowDragging(groupPanelOptions, column) } getColumnElements() { const $element = this.element(); return null === $element || void 0 === $element ? void 0 : $element.find(`.${_const.CLASSES.groupPanelItem}`) } getColumns() { return this._columnsController.getGroupColumns() } getBoundingRect() { const $element = this.element(); if (null !== $element && void 0 !== $element && $element.find(`.${_const.CLASSES.groupPanel}`).length) { const offset = $element.offset(); return { top: offset.top, bottom: offset.top + (0, _size.getHeight)($element) } } return null } getName() { return "group" } hasGroupedColumns() { return this._isGroupPanelVisible() && !!this.getColumns().length } optionChanged(args) { if ("groupPanel" === args.name) { this._invalidate(); args.handled = true } else { super.optionChanged(args) } } getKeyboardNavigationController() { return this.getController("groupPanelKeyboardNavigation") } isColumnReorderingEnabled(column) { return this.allowDragging(column) } getContextMenuItems(options) { let items = super.getContextMenuItems(options); const $groupedColumnElement = (0, _renderer.default)(options.targetElement).closest(`.${_const.CLASSES.groupPanelItem}`); if (!$groupedColumnElement.length) { return } options.column = this._columnsController.columnOption(`groupIndex:${$groupedColumnElement.index()}`); const groupAndUngroupItems = this.getGroupAndUngroupItems(options); if (null !== groupAndUngroupItems && void 0 !== groupAndUngroupItems && groupAndUngroupItems.length) { items = items ?? []; items.push(...groupAndUngroupItems) } const moveColumnItems = this.getMoveColumnContextMenuItems(options); if (null !== moveColumnItems && void 0 !== moveColumnItems && moveColumnItems.length) { items = items ?? []; items.push(...moveColumnItems) } return items } }; exports.GroupingHeaderPanelExtender = GroupingHeaderPanelExtender; _m_core.default.registerModule("grouping", { defaultOptions: () => ({ grouping: { autoExpandAll: true, allowCollapsing: true, contextMenuEnabled: true, expandMode: "buttonClick", texts: { groupContinuesMessage: _message.default.format("dxDataGrid-groupContinuesMessage"), groupContinuedMessage: _message.default.format("dxDataGrid-groupContinuedMessage"), groupByThisColumn: _message.default.format("dxDataGrid-groupHeaderText"), ungroup: _message.default.format("dxDataGrid-ungroupHeaderText"), ungroupAll: _message.default.format("dxDataGrid-ungroupAllText") } }, groupPanel: { visible: false, emptyPanelText: _message.default.format("dxDataGrid-groupPanelEmptyText"), allowColumnDragging: true } }), extenders: { controllers: { data: Base => class extends Base { init() { super.init(); this.createAction("onRowExpanding"); this.createAction("onRowExpanded"); this.createAction("onRowCollapsing"); this.createAction("onRowCollapsed") } _beforeProcessItems(items) { const groupColumns = this._columnsController.getGroupColumns(); items = super._beforeProcessItems(items); if (items.length && groupColumns.length) { items = this._processGroupItems(items, groupColumns.length) } return items } _processItem(item, options) { if ((0, _type.isDefined)(item.groupIndex) && (0, _type.isString)(item.rowType) && 0 === item.rowType.indexOf("group")) { item = this._processGroupItem(item, options); options.dataIndex = 0 } else { item = super._processItem.apply(this, arguments) } return item } _processGroupItem(item, options) { return item } _processGroupItems(items, groupsCount, options) { const that = this; const groupedColumns = that._columnsController.getGroupColumns(); const column = groupedColumns[groupedColumns.length - groupsCount]; if (!options) { const scrollingMode = that.option("scrolling.mode"); options = { collectContinuationItems: "virtual" !== scrollingMode && "infinite" !== scrollingMode, resultItems: [], path: [], values: [] } } const { resultItems: resultItems } = options; if (options.data) { if (options.collectContinuationItems || !options.data.isContinuation) { resultItems.push({ rowType: "group", data: options.data, groupIndex: options.path.length - 1, isExpanded: !!options.data.items, key: options.path.slice(0), values: options.values.slice(0) }) } } if (items) { if (0 === groupsCount) { resultItems.push.apply(resultItems, items) } else { for (let i = 0; i < items.length; i++) { const item = items[i]; if (item && "items" in item) { options.data = item; options.path.push(item.key); options.values.push(column && column.deserializeValue && !column.calculateDisplayValue ? column.deserializeValue(item.key) : item.key); that._processGroupItems(item.items, groupsCount - 1, options); options.data = void 0; options.path.pop(); options.values.pop() } else { resultItems.push(item) } } } } return resultItems } publicMethods() { return super.publicMethods().concat(["collapseAll", "expandAll", "isRowExpanded", "expandRow", "collapseRow"]) } collapseAll(groupIndex) { const dataSource = this._dataSource; if (dataSource && dataSource.collapseAll(groupIndex)) { dataSource.pageIndex(0); dataSource.reload() } } expandAll(groupIndex) { const dataSource = this._dataSource; if (dataSource && dataSource.expandAll(groupIndex)) { dataSource.pageIndex(0); dataSource.reload() } } changeRowExpand(key) { const that = this; const expanded = that.isRowExpanded(key); const args = { key: key, expanded: expanded }; that.executeAction(expanded ? "onRowCollapsing" : "onRowExpanding", args); if (!args.cancel) { return (0, _deferred.when)(that._changeRowExpandCore(key)).done((() => { args.expanded = !expanded; that.executeAction(expanded ? "onRowCollapsed" : "onRowExpanded", args) })) } return (new _deferred.Deferred).resolve() } _changeRowExpandCore(key) { const that = this; const dataSource = this._dataSource; const d = new _deferred.Deferred; if (!dataSource) { d.resolve() } else { (0, _deferred.when)(dataSource.changeRowExpand(key)).done((() => { that.load().done(d.resolve).fail(d.reject) })).fail(d.reject) } return d } isRowExpanded(key) { const dataSource = this._dataSource; return dataSource && dataSource.isRowExpanded(key) } expandRow(key) { if (!this.isRowExpanded(key)) { return this.changeRowExpand(key) } return (new _deferred.Deferred).resolve() } collapseRow(key) { if (this.isRowExpanded(key)) { return this.changeRowExpand(key) } return (new _deferred.Deferred).resolve() } optionChanged(args) { if ("grouping" === args.name) { args.name = "dataSource" } super.optionChanged(args) } }, columns: Base => class extends Base { _getExpandColumnOptions() { const options = super._getExpandColumnOptions.apply(this, arguments); options.cellTemplate = _m_core.default.getExpandCellTemplate(); return options } }, editing: Base => class extends Base { _isProcessedItem(item) { return (0, _type.isDefined)(item.groupIndex) && (0, _type.isString)(item.rowType) && 0 === item.rowType.indexOf("group") } } }, views: { headerPanel: GroupingHeaderPanelExtender, rowsView: Base => class extends Base { getContextMenuItems(options) { const that = this; const contextMenuEnabled = that.option("grouping.contextMenuEnabled"); let items; if (contextMenuEnabled && options.row && "group" === options.row.rowType) { const columnsController = that._columnsController; const column = columnsController.columnOption(`groupIndex:${options.row.groupIndex}`); if (column && column.allowGrouping) { const groupingTexts = that.option("grouping.texts"); const onItemClick = e => { var _e$itemData, _e$itemData2; if ("ungroup" === (null === (_e$itemData = e.itemData) || void 0 === _e$itemData ? void 0 : _e$itemData.value)) { columnsController.columnOption(column.dataField, "groupIndex", -1) } else if ("ungroupAll" === (null === (_e$itemData2 = e.itemData) || void 0 === _e$itemData2 ? void 0 : _e$itemData2.value)) { columnsController.clearGrouping() } }; items = []; items.push({ text: groupingTexts.ungroup, value: "ungroup", onItemClick: onItemClick, icon: _const.CONTEXT_MENU_UNGROUP_COLUMN_ICON_NAME }, { text: groupingTexts.ungroupAll, value: "ungroupAll", onItemClick: onItemClick, icon: _const.CONTEXT_MENU_UNGROUP_ALL_COLUMNS_ICON_NAME }) } } return items } _rowClick(e) { const that = this; const expandMode = that.option("grouping.expandMode"); const scrollingMode = that.option("scrolling.mode"); const isGroupRowStateChanged = "infinite" !== scrollingMode && "rowClick" === expandMode && (0, _renderer.default)(e.event.target).closest(".dx-group-row").length; const isExpandButtonClicked = (0, _renderer.default)(e.event.target).closest(".dx-datagrid-expand").length; if (isGroupRowStateChanged || isExpandButtonClicked) { that._changeGroupRowState(e) } super._rowClick(e) } _changeGroupRowState(e) { const row = this._dataController.items()[e.rowIndex]; const allowCollapsing = this._columnsController.columnOption(`groupIndex:${row.groupIndex}`, "allowCollapsing"); if ("data" === row.rowType || "group" === row.rowType && false !== allowCollapsing) { this._dataController.changeRowExpand(row.key, true); e.event.preventDefault(); e.handled = true } } }, columnHeadersView: Base => class extends Base { getContextMenuItems(options) { const that = this; const groupItems = []; const contextMenuEnabled = that.option("grouping.contextMenuEnabled"); let items = super.getContextMenuItems(options); if (contextMenuEnabled && options.row && ("header" === options.row.rowType || "detailAdaptive" === options.row.rowType)) { const { column: column, rowIndex: rowIndex } = options; if (!column.command && (!(0, _type.isDefined)(column.allowGrouping) || column.allowGrouping)) { const groupingTexts = that.option("grouping.texts"); const isColumnGrouped = (0, _type.isDefined)(column.groupIndex) && column.groupIndex > -1; const onItemClick = onGroupingMenuItemClick.bind(that, column, rowIndex); groupItems.push({ text: groupingTexts.groupByThisColumn, value: "group", beginGroup: true, disabled: isColumnGrouped, onItemClick: onItemClick, icon: _const.CONTEXT_MENU_GROUP_BY_COLUMN_ICON_NAME }); if (column.showWhenGrouped) { groupItems.push({ text: groupingTexts.ungroup, value: "ungroup", disabled: !isColumnGrouped, onItemClick: onItemClick, icon: _const.CONTEXT_MENU_UNGROUP_COLUMN_ICON_NAME }) } groupItems.push({ text: groupingTexts.ungroupAll, value: "ungroupAll", onItemClick: onItemClick, icon: _const.CONTEXT_MENU_UNGROUP_ALL_COLUMNS_ICON_NAME }) } } if (groupItems.length) { items = items ?? []; const clearSortingItemIndex = items.findIndex((item => "clearSorting" === item.name)) + 1; items.splice(clearSortingItemIndex, 0, ...groupItems) } return items } allowDragging(column) { const groupPanelOptions = this.option("groupPanel"); return allowDragging(groupPanelOptions, column) || super.allowDragging(column) } } } } }) }, 13729: /*!*********************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/data_grid/grouping/m_grouping_collapsed.js ***! \*********************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.GroupingHelper = void 0; var _errors = __webpack_require__( /*! ../../../../common/data/errors */ 82812); var _deferred = __webpack_require__( /*! ../../../../core/utils/deferred */ 87739); var _extend = __webpack_require__( /*! ../../../../core/utils/extend */ 52576); var _iterator = __webpack_require__( /*! ../../../../core/utils/iterator */ 21274); var _ui = _interopRequireDefault(__webpack_require__( /*! ../../../../ui/widget/ui.errors */ 35185)); var _m_core = _interopRequireDefault(__webpack_require__( /*! ../m_core */ 54353)); var _m_utils = __webpack_require__( /*! ../m_utils */ 73057); var _m_grouping_core = __webpack_require__( /*! ./m_grouping_core */ 14385); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } function getContinuationGroupCount(groupOffset, pageSize, groupSize, groupIndex) { groupIndex = groupIndex || 0; if (pageSize > 1 && groupSize > 0) { let pageOffset = groupOffset - Math.floor(groupOffset / pageSize) * pageSize || pageSize; pageOffset += groupSize - groupIndex - 2; if (pageOffset < 0) { pageOffset += pageSize } return Math.floor(pageOffset / (pageSize - groupIndex - 1)) } return 0 } const foreachExpandedGroups = function(that, callback, updateGroups) { return that.foreachGroups(((groupInfo, parents) => { if (groupInfo.isExpanded) { return callback(groupInfo, parents) } }), true, false, updateGroups, updateGroups) }; const processGroupItems = function(that, items, groupsCount, expandedInfo, path, isCustomLoading, isLastGroupExpanded) { let isExpanded; expandedInfo.items = expandedInfo.items || []; expandedInfo.paths = expandedInfo.paths || []; expandedInfo.count = expandedInfo.count || 0; expandedInfo.lastCount = expandedInfo.lastCount || 0; if (!groupsCount) { return } for (let i = 0; i < items.length; i++) { const item = items[i]; if (void 0 !== item.items) { path.push(item.key); if (isCustomLoading) { isExpanded = true } else { const groupInfo = that.findGroupInfo(path); isExpanded = groupInfo && groupInfo.isExpanded } if (!isExpanded) { item.collapsedItems = item.items; item.items = null } else if (item.items) { processGroupItems(that, item.items, groupsCount - 1, expandedInfo, path, isCustomLoading, isLastGroupExpanded) } else if (1 === groupsCount && item.count && (!isCustomLoading || isLastGroupExpanded)) { expandedInfo.items.push(item); expandedInfo.paths.push(path.slice(0)); expandedInfo.count += expandedInfo.lastCount; expandedInfo.lastCount = item.count } path.pop() } } }; const updateGroupInfoItem = function(that, item, isLastGroupLevel, path, offset) { const groupInfo = that.findGroupInfo(path); let count; if (!groupInfo) { if (isLastGroupLevel) { count = item.count > 0 ? item.count : item.items.length } that.addGroupInfo({ isExpanded: that._isGroupExpanded(path.length - 1), path: path.slice(0), offset: offset, count: count || 0 }) } else { if (isLastGroupLevel) { groupInfo.count = item.count > 0 ? item.count : item.items && item.items.length || 0 } else { item.count = groupInfo.count || item.count } groupInfo.offset = offset } }; const updateGroupInfos = function(that, options, items, loadedGroupCount, groupIndex, path, parentIndex) { const groupCount = options.group ? options.group.length : 0; const isLastGroupLevel = groupCount === loadedGroupCount; const remotePaging = options.remoteOperations.paging; let offset = 0; let totalCount = 0; let count; groupIndex = groupIndex || 0; path = path || []; if (remotePaging && !parentIndex) { offset = 0 === groupIndex ? options.skip || 0 : options.skips[groupIndex - 1] || 0 } if (groupIndex >= loadedGroupCount) { return items.length } for (let i = 0; i < items.length; i++) { const item = items[i]; if (item) { path.push(item.key); if (!item.count && !item.items || void 0 === item.items) { return -1 } updateGroupInfoItem(that, item, isLastGroupLevel, path, offset + i); count = item.items ? updateGroupInfos(that, options, item.items, loadedGroupCount, groupIndex + 1, path, i) : item.count || -1; if (count < 0) { return -1 } totalCount += count; path.pop() } } return totalCount }; const isGroupExpanded = function(groups, groupIndex) { return groups && groups.length && groups[groupIndex] && !!groups[groupIndex].isExpanded }; const getTotalOffset = function(groupInfos, pageSize, offset) { let groupSize; let totalOffset = offset; for (let groupIndex = 0; groupIndex < groupInfos.length; groupIndex++) { groupSize = groupInfos[groupIndex].offset + 1; if (groupIndex > 0) { groupSize += groupInfos[groupIndex - 1].childrenTotalCount; if (pageSize) { groupSize += getContinuationGroupCount(totalOffset, pageSize, groupSize, groupIndex - 1) * groupIndex } } totalOffset += groupSize } return totalOffset }; function applyContinuationToGroupItem(options, expandedInfo, groupLevel, expandedItemIndex) { const item = expandedInfo.items[expandedItemIndex]; const skip = options.skips && options.skips[groupLevel]; const take = options.takes && options.takes[groupLevel]; const isLastExpandedItem = expandedItemIndex === expandedInfo.items.length - 1; const isFirstExpandedItem = 0 === expandedItemIndex; const lastExpandedItemSkip = isFirstExpandedItem && skip || 0; const isItemsTruncatedByTake = item.count > take + lastExpandedItemSkip; if (isFirstExpandedItem && void 0 !== skip) { item.isContinuation = true } if (isLastExpandedItem && void 0 !== take && isItemsTruncatedByTake) { item.isContinuationOnNextPage = true } } function isDataDeferred(data) { return !Array.isArray(data) } function makeDataDeferred(options) { if (!isDataDeferred(options.data)) { options.data = new _deferred.Deferred } } function loadGroupItems(that, options, loadedGroupCount, expandedInfo, groupLevel, data) { if (!options.isCustomLoading) { expandedInfo = {}; processGroupItems(that, data, loadedGroupCount, expandedInfo, []); ! function(options, expandedInfo, currentGroupCount) { const currentGroupIndex = currentGroupCount - 1; const groupCount = options.group ? options.group.length : 0; expandedInfo.skip = options.skips && options.skips[currentGroupIndex]; if (options.takes && void 0 !== options.takes[currentGroupIndex]) { if (groupCount === currentGroupCount) { expandedInfo.take = expandedInfo.count ? expandedInfo.count - (expandedInfo.skip || 0) : 0 } else { expandedInfo.take = 0 } expandedInfo.take += options.takes[currentGroupIndex] } }(options, expandedInfo, loadedGroupCount) } const groupCount = options.group ? options.group.length : 0; if (expandedInfo.paths.length && groupCount - loadedGroupCount > 0) { makeDataDeferred(options); ! function(that, options, expandedInfo, loadedGroupCount, groupLevel, data) { const groups = options.group || []; const currentGroup = groups[groupLevel + 1]; const deferreds = []; (0, _iterator.each)(expandedInfo.paths, (expandedItemIndex => { var _options$storeLoadOpt; const loadOptions = { requireTotalCount: false, requireGroupCount: true, group: [currentGroup], groupSummary: options.storeLoadOptions.groupSummary, filter: (0, _m_utils.createGroupFilter)(expandedInfo.paths[expandedItemIndex], { filter: options.storeLoadOptions.filter, group: groups }), select: options.storeLoadOptions.select, langParams: null === (_options$storeLoadOpt = options.storeLoadOptions) || void 0 === _options$storeLoadOpt ? void 0 : _options$storeLoadOpt.langParams }; if (0 === expandedItemIndex) { loadOptions.skip = expandedInfo.skip || 0 } if (expandedItemIndex === expandedInfo.paths.length - 1) { loadOptions.take = expandedInfo.take } const loadResult = 0 === loadOptions.take ? [] : that._dataSource.loadFromStore(loadOptions); (0, _deferred.when)(loadResult).done((data => { const item = expandedInfo.items[expandedItemIndex]; applyContinuationToGroupItem(options, expandedInfo, groupLevel, expandedItemIndex); item.items = data })); deferreds.push(loadResult) })); _deferred.when.apply(null, deferreds).done((() => { updateGroupInfos(that, options, data, loadedGroupCount + 1); loadGroupItems(that, options, loadedGroupCount + 1, expandedInfo, groupLevel + 1, data) })) }(that, options, expandedInfo, loadedGroupCount, groupLevel, data) } else if (expandedInfo.paths.length && options.storeLoadOptions.group) { makeDataDeferred(options); ! function(that, options, expandedInfo, data) { const expandedFilters = []; const groups = options.group || []; (0, _iterator.each)(expandedInfo.paths, ((_, expandedPath) => { expandedFilters.push((0, _m_utils.createGroupFilter)(expandedPath, { group: options.isCustomLoading ? options.storeLoadOptions.group : groups })) })); let { filter: filter } = options.storeLoadOptions; if (!options.storeLoadOptions.isLoadingAll) { filter = _m_core.default.combineFilters([filter, _m_core.default.combineFilters(expandedFilters, "or")]) } const loadOptions = (0, _extend.extend)({}, options.storeLoadOptions, { requireTotalCount: false, requireGroupCount: false, group: null, sort: groups.concat(_m_core.default.normalizeSortingInfo(options.storeLoadOptions.sort || [])), filter: filter }); const isPagingLocal = that._dataSource.isLastLevelGroupItemsPagingLocal(); if (!isPagingLocal) { loadOptions.skip = expandedInfo.skip; loadOptions.take = expandedInfo.take }(0, _deferred.when)(0 === expandedInfo.take ? [] : that._dataSource.loadFromStore(loadOptions)).done((items => { if (isPagingLocal) { items = that._dataSource.sortLastLevelGroupItems(items, groups, expandedInfo.paths); items = expandedInfo.skip ? items.slice(expandedInfo.skip) : items; items = expandedInfo.take ? items.slice(0, expandedInfo.take) : items }(0, _iterator.each)(expandedInfo.items, ((index, item) => { const itemCount = item.count - (0 === index && expandedInfo.skip || 0); const expandedItems = items.splice(0, itemCount); applyContinuationToGroupItem(options, expandedInfo, groups.length - 1, index); item.items = expandedItems })); options.data.resolve(data) })).fail(options.data.reject) }(that, options, expandedInfo, data) } else if (isDataDeferred(options.data)) { options.data.resolve(data) } } const loadGroupTotalCount = function(dataSource, options) { const d = new _deferred.Deferred; const isGrouping = !!(options.group && options.group.length); const loadOptions = (0, _extend.extend)({ skip: 0, take: 1, requireGroupCount: isGrouping, requireTotalCount: !isGrouping }, options, { group: isGrouping ? options.group : null }); dataSource.load(loadOptions).done(((data, extra) => { const count = extra && (isGrouping ? extra.groupCount : extra.totalCount); if (!isFinite(count)) { d.reject(_errors.errors.Error(isGrouping ? "E4022" : "E4021")); return } d.resolve(count) })).fail(d.reject.bind(d)); return d }; class GroupingHelper extends _m_grouping_core.GroupingHelper { updateTotalItemsCount(options) { let totalItemsCount = 0; const totalCount = options.extra && options.extra.totalCount || 0; const groupCount = options.extra && options.extra.groupCount || 0; const pageSize = this._dataSource.pageSize(); const isVirtualPaging = this._isVirtualPaging(); foreachExpandedGroups(this, (groupInfo => { groupInfo.childrenTotalCount = 0 })); foreachExpandedGroups(this, ((groupInfo, parents) => { const totalOffset = getTotalOffset(parents, isVirtualPaging ? 0 : pageSize, totalItemsCount); let count = groupInfo.count + groupInfo.childrenTotalCount; if (!isVirtualPaging) { count += getContinuationGroupCount(totalOffset, pageSize, count, parents.length - 1) } if (parents[parents.length - 2]) { parents[parents.length - 2].childrenTotalCount += count } else { totalItemsCount += count } })); super.updateTotalItemsCount(totalItemsCount - totalCount + groupCount) } _isGroupExpanded(groupIndex) { const groups = this._dataSource.group(); return isGroupExpanded(groups, groupIndex) } _updatePagingOptions(options, callback) { const that = this; const isVirtualPaging = that._isVirtualPaging(); const pageSize = that._dataSource.pageSize(); const skips = []; const takes = []; let skipChildrenTotalCount = 0; let childrenTotalCount = 0; if (options.take) { foreachExpandedGroups(this, (groupInfo => { groupInfo.childrenTotalCount = 0; groupInfo.skipChildrenTotalCount = 0 })); foreachExpandedGroups(that, ((groupInfo, parents) => { let take; let takeCorrection = 0; let parentTakeCorrection = 0; const totalOffset = getTotalOffset(parents, isVirtualPaging ? 0 : pageSize, childrenTotalCount); let continuationGroupCount = 0; let skipContinuationGroupCount = 0; let groupInfoCount = groupInfo.count + groupInfo.childrenTotalCount; let childrenGroupInfoCount = groupInfoCount; callback && callback(groupInfo, totalOffset); const skip = options.skip - totalOffset; if (totalOffset <= options.skip + options.take && groupInfoCount) { take = options.take; if (!isVirtualPaging) { continuationGroupCount = getContinuationGroupCount(totalOffset, pageSize, groupInfoCount, parents.length - 1); groupInfoCount += continuationGroupCount * parents.length; childrenGroupInfoCount += continuationGroupCount; if (pageSize && skip >= 0) { takeCorrection = parents.length; parentTakeCorrection = parents.length - 1; skipContinuationGroupCount = Math.floor(skip / pageSize) } } if (skip >= 0) { if (totalOffset + groupInfoCount > options.skip) { skips.unshift(skip - skipContinuationGroupCount * takeCorrection - groupInfo.skipChildrenTotalCount) } if (totalOffset + groupInfoCount >= options.skip + take) { takes.unshift(take - takeCorrection - groupInfo.childrenTotalCount + groupInfo.skipChildrenTotalCount) } } else if (totalOffset + groupInfoCount >= options.skip + take) { takes.unshift(take + skip - groupInfo.childrenTotalCount) } } if (totalOffset <= options.skip) { if (parents[parents.length - 2]) { parents[parents.length - 2].skipChildrenTotalCount += Math.min(childrenGroupInfoCount, skip + 1 - skipContinuationGroupCount * parentTakeCorrection) } else { skipChildrenTotalCount += Math.min(childrenGroupInfoCount, skip + 1) } } if (totalOffset <= options.skip + take) { groupInfoCount = Math.min(childrenGroupInfoCount, skip + take - (skipContinuationGroupCount + 1) * parentTakeCorrection); if (parents[parents.length - 2]) { parents[parents.length - 2].childrenTotalCount += groupInfoCount } else { childrenTotalCount += groupInfoCount } } })); options.skip -= skipChildrenTotalCount; options.take -= childrenTotalCount - skipChildrenTotalCount } options.skips = skips; options.takes = takes } changeRowExpand(path) { const groupInfo = this.findGroupInfo(path); const dataSource = this._dataSource; const remoteGroupPaging = dataSource.remoteOperations().groupPaging; const groups = _m_core.default.normalizeSortingInfo(dataSource.group()); if (groupInfo) { groupInfo.isExpanded = !groupInfo.isExpanded; if (remoteGroupPaging && groupInfo.isExpanded && path.length < groups.length) { return loadGroupTotalCount(dataSource, { filter: (0, _m_utils.createGroupFilter)(path, { filter: dataSource.lastLoadOptions().filter, group: dataSource.group() }), group: [groups[path.length]], select: dataSource.select() }).done((groupCount => { groupInfo.count = groupCount })) } return (new _deferred.Deferred).resolve() } return (new _deferred.Deferred).reject() } handleDataLoading(options) { const that = this; const { storeLoadOptions: storeLoadOptions } = options; const groups = _m_core.default.normalizeSortingInfo(storeLoadOptions.group || options.loadOptions.group); if (options.isCustomLoading || !groups.length) { return } if (options.remoteOperations.grouping) { const remotePaging = that._dataSource.remoteOperations().paging; storeLoadOptions.group = _m_core.default.normalizeSortingInfo(storeLoadOptions.group); storeLoadOptions.group.forEach(((group, index) => { const isLastGroup = index === storeLoadOptions.group.length - 1; group.isExpanded = !remotePaging || !isLastGroup })) } options.group = options.group || groups; if (options.remoteOperations.paging) { options.skip = storeLoadOptions.skip; options.take = storeLoadOptions.take; storeLoadOptions.requireGroupCount = true; storeLoadOptions.group = groups.slice(0, 1); that._updatePagingOptions(options); storeLoadOptions.skip = options.skip; storeLoadOptions.take = options.take } else { options.skip = options.loadOptions.skip; options.take = options.loadOptions.take; that._updatePagingOptions(options) } } handleDataLoadedCore(options, callBase) { const that = this; const loadedGroupCount = _m_core.default.normalizeSortingInfo(options.storeLoadOptions.group || options.loadOptions.group).length; const groupCount = options.group ? options.group.length : 0; let totalCount; const expandedInfo = {}; if (options.isCustomLoading) { callBase(options); processGroupItems(that, options.data, loadedGroupCount, expandedInfo, [], options.isCustomLoading, options.storeLoadOptions.isLoadingAll) } else { if (!options.remoteOperations.paging) { that.foreachGroups((groupInfo => { groupInfo.count = 0 })) } totalCount = updateGroupInfos(that, options, options.data, loadedGroupCount); if (totalCount < 0) { options.data = (new _deferred.Deferred).reject(_ui.default.Error("E1037")); return } if (!options.remoteOperations.paging) { if (loadedGroupCount && options.extra && options.loadOptions.requireTotalCount) { options.extra.totalCount = totalCount; options.extra.groupCount = options.data.length } } if (groupCount && options.storeLoadOptions.requireGroupCount && !isFinite(options.extra.groupCount)) { options.data = (new _deferred.Deferred).reject(_errors.errors.Error("E4022")); return } that.updateTotalItemsCount(options); if (!options.remoteOperations.paging) { that._updatePagingOptions(options); options.lastLoadOptions.skips = options.skips; options.lastLoadOptions.takes = options.takes } callBase(options); if (!options.remoteOperations.paging) { that._processPaging(options, loadedGroupCount) } } loadGroupItems(that, options, loadedGroupCount, expandedInfo, 0, options.data) } _processSkips(items, skips, groupCount) { if (!groupCount) { return } const firstItem = items[0]; const skip = skips[0]; const children = firstItem && firstItem.items; if (void 0 !== skip) { firstItem.isContinuation = true; if (children) { firstItem.items = children.slice(skip); this._processSkips(firstItem.items, skips.slice(1), groupCount - 1) } } } _processTakes(items, skips, takes, groupCount, parents) { if (!groupCount || !items) { return } parents = parents || []; const lastItem = items[items.length - 1]; let children = lastItem && lastItem.items; const take = takes[0]; const skip = skips[0]; if (lastItem) { const maxTakeCount = lastItem.count - (lastItem.isContinuation && skip || 0) || children.length; if (void 0 !== take && maxTakeCount > take) { lastItem.isContinuationOnNextPage = true; parents.forEach((parent => { parent.isContinuationOnNextPage = true })); if (children) { children = children.slice(0, take); lastItem.items = children } } parents.push(lastItem); this._processTakes(children, skips.slice(1), takes.slice(1), groupCount - 1, parents) } } _processPaging(options, groupCount) { this._processSkips(options.data, options.skips, groupCount); this._processTakes(options.data, options.skips, options.takes, groupCount) } isLastLevelGroupItemsPagingLocal() { return false } sortLastLevelGroupItems(items) { return items } refresh(options, operationTypes) { const that = this; const dataSource = that._dataSource; const { storeLoadOptions: storeLoadOptions } = options; const group = options.group || options.storeLoadOptions.group; const oldGroups = _m_core.default.normalizeSortingInfo(that._group); let isExpanded; let groupIndex; function handleGroup(groupInfo, parents) { if (parents.length === groupIndex + 1) { groupInfo.isExpanded = isExpanded } } for (groupIndex = 0; groupIndex < oldGroups.length; groupIndex++) { isExpanded = isGroupExpanded(group, groupIndex); if (isGroupExpanded(that._group, groupIndex) !== isExpanded) { that.foreachGroups(handleGroup) } } super.refresh.apply(this, arguments); if (group && options.remoteOperations.paging && operationTypes.reload) { return foreachExpandedGroups(that, (groupInfo => { const groupCountQuery = loadGroupTotalCount(dataSource, { filter: (0, _m_utils.createGroupFilter)(groupInfo.path, { filter: storeLoadOptions.filter, group: group }), group: group.slice(groupInfo.path.length), select: storeLoadOptions.select }); const groupOffsetQuery = loadGroupTotalCount(dataSource, { filter: (0, _m_grouping_core.createOffsetFilter)(groupInfo.path, { filter: storeLoadOptions.filter, group: group }, true), group: group.slice(groupInfo.path.length - 1, groupInfo.path.length), select: storeLoadOptions.select }); return (0, _deferred.when)(groupOffsetQuery, groupCountQuery).done(((offset, count) => { offset = parseInt(offset.length ? offset[0] : offset); count = parseInt(count.length ? count[0] : count); groupInfo.offset = offset; if (groupInfo.count !== count) { groupInfo.count = count; that.updateTotalItemsCount(options) } })) }), true) } } } exports.GroupingHelper = GroupingHelper }, 14385: /*!****************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/data_grid/grouping/m_grouping_core.js ***! \****************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.GroupingHelper = void 0; exports.createOffsetFilter = function(path, storeLoadOptions, lastLevelOnly) { const groups = (0, _utils.normalizeSortingInfo)(storeLoadOptions.group); let filter = []; for (let i = lastLevelOnly ? path.length - 1 : 0; i < path.length; i++) { const filterElement = []; for (let j = 0; j <= i; j++) { const { selector: selector } = groups[j]; if (i === j && (null === path[j] || false === path[j] || true === path[j])) { if (false === path[j]) { filterElement.push([selector, "=", groups[j].desc ? true : null]) } else if (path[j] ? !groups[j].desc : groups[j].desc) { filterElement.push([selector, "<>", path[j]]) } else { filterElement.push([selector, "<>", null]); filterElement.push([selector, "=", null]) } } else { const currentFilter = [selector, i === j ? groups[j].desc ? ">" : "<" : "=", path[j]]; if ("<" === currentFilter[1]) { filterElement.push([currentFilter, "or", [selector, "=", null]]) } else { filterElement.push(currentFilter) } } } filter.push(_m_core.default.combineFilters(filterElement)) } filter = _m_core.default.combineFilters(filter, "or"); return _m_core.default.combineFilters([filter, storeLoadOptions.filter]) }; var _utils = __webpack_require__( /*! ../../../../common/data/utils */ 89358); var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../../../core/renderer */ 64553)); var _deferred = __webpack_require__( /*! ../../../../core/utils/deferred */ 87739); var _m_core = _interopRequireDefault(__webpack_require__( /*! ../m_core */ 54353)); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } const findGroupInfoByKey = function(groupsInfo, key) { const { hash: hash } = groupsInfo; return hash && hash[JSON.stringify(key)] }; const getGroupInfoIndexByOffset = function(groupsInfo, offset) { let leftIndex = 0; let rightIndex = groupsInfo.length - 1; if (!groupsInfo.length) { return 0 } do { const middleIndex = rightIndex + leftIndex >> 1; if (groupsInfo[middleIndex].offset > offset) { rightIndex = middleIndex } else { leftIndex = middleIndex } } while (rightIndex - leftIndex > 1); let index; for (index = leftIndex; index <= rightIndex; index++) { if (groupsInfo[index].offset > offset) { break } } return index }; const cleanGroupsInfo = function(groupsInfo, groupIndex, groupsCount) { for (let i = 0; i < groupsInfo.length; i++) { if (groupIndex + 1 >= groupsCount) { groupsInfo[i].children = [] } else { cleanGroupsInfo(groupsInfo[i].children, groupIndex + 1, groupsCount) } } }; const calculateItemsCount = function(that, items, groupsCount) { let result = 0; if (items) { if (!groupsCount) { result = items.length } else { for (let i = 0; i < items.length; i++) { if (that.isGroupItemCountable(items[i])) { result++ } result += calculateItemsCount(that, items[i].items, groupsCount - 1) } } } return result }; exports.GroupingHelper = class { constructor(dataSourceAdapter) { this._dataSource = dataSourceAdapter; this.reset() } reset() { this._groupsInfo = []; this._totalCountCorrection = 0 } totalCountCorrection() { return this._totalCountCorrection } updateTotalItemsCount(totalCountCorrection) { this._totalCountCorrection = totalCountCorrection || 0 } isGroupItemCountable(item) { return !this._isVirtualPaging() || !item.isContinuation } _isVirtualPaging() { const scrollingMode = this._dataSource.option("scrolling.mode"); return "virtual" === scrollingMode || "infinite" === scrollingMode } itemsCount() { const dataSourceAdapter = this._dataSource; const dataSource = dataSourceAdapter._dataSource; const groupCount = _m_core.default.normalizeSortingInfo(dataSource.group() || []).length; const itemsCount = calculateItemsCount(this, dataSource.items(), groupCount); return itemsCount } foreachGroups(callback, childrenAtFirst, foreachCollapsedGroups, updateOffsets, updateParentOffsets) { const that = this; return function foreachGroupsCore(groupsInfo, callback, childrenAtFirst, parents) { const callbackResults = []; function executeCallback(callback, data, parents, callbackResults) { const callbackResult = data && callback(data, parents); callbackResult && callbackResults.push(callbackResult); return callbackResult } for (let i = 0; i < groupsInfo.length; i++) { parents.push(groupsInfo[i].data); if (!childrenAtFirst && false === executeCallback(callback, groupsInfo[i].data, parents, callbackResults)) { return false } if (!groupsInfo[i].data || groupsInfo[i].data.isExpanded || foreachCollapsedGroups) { const { children: children } = groupsInfo[i]; const callbackResult = children.length && foreachGroupsCore(children, callback, childrenAtFirst, parents); callbackResult && callbackResults.push(callbackResult); if (false === callbackResult) { return false } } if (childrenAtFirst && false === executeCallback(callback, groupsInfo[i].data, parents, callbackResults)) { return false } if (!groupsInfo[i].data || groupsInfo[i].data.offset !== groupsInfo[i].offset) { updateOffsets = true } parents.pop() } const currentParents = updateParentOffsets && parents.slice(0); return updateOffsets && _deferred.when.apply(_renderer.default, callbackResults).always((() => { that._updateGroupInfoOffsets(groupsInfo, currentParents) })) }(that._groupsInfo, callback, childrenAtFirst, []) } _updateGroupInfoOffsets(groupsInfo, parents) { parents = parents || []; for (let index = 0; index < groupsInfo.length; index++) { const groupInfo = groupsInfo[index]; if (groupInfo.data && groupInfo.data.offset !== groupInfo.offset) { groupInfo.offset = groupInfo.data.offset; for (let parentIndex = 0; parentIndex < parents.length; parentIndex++) { parents[parentIndex].offset = groupInfo.offset } } } groupsInfo.sort(((a, b) => a.offset - b.offset)) } findGroupInfo(path) { let groupInfo; let groupsInfo = this._groupsInfo; for (let pathIndex = 0; groupsInfo && pathIndex < path.length; pathIndex++) { groupInfo = findGroupInfoByKey(groupsInfo, path[pathIndex]); groupsInfo = groupInfo && groupInfo.children } return groupInfo && groupInfo.data } addGroupInfo(groupInfoData) { const that = this; let groupInfo; const { path: path } = groupInfoData; let groupsInfo = that._groupsInfo; for (let pathIndex = 0; pathIndex < path.length; pathIndex++) { groupInfo = findGroupInfoByKey(groupsInfo, path[pathIndex]); if (!groupInfo) { groupInfo = { key: path[pathIndex], offset: groupInfoData.offset, data: { offset: groupInfoData.offset, isExpanded: true, path: path.slice(0, pathIndex + 1) }, children: [] }; const index = getGroupInfoIndexByOffset(groupsInfo, groupInfoData.offset); groupsInfo.splice(index, 0, groupInfo); groupsInfo.hash = groupsInfo.hash || {}; groupsInfo.hash[JSON.stringify(groupInfo.key)] = groupInfo } if (pathIndex === path.length - 1) { groupInfo.data = groupInfoData; if (groupInfo.offset !== groupInfoData.offset) { that._updateGroupInfoOffsets(groupsInfo) } } groupsInfo = groupInfo.children } } allowCollapseAll() { return true } refresh(options) { const that = this; const { storeLoadOptions: storeLoadOptions } = options; const groups = (0, _utils.normalizeSortingInfo)(storeLoadOptions.group || []); const oldGroups = "_group" in that ? (0, _utils.normalizeSortingInfo)(that._group || []) : groups; let groupsCount = Math.min(oldGroups.length, groups.length); that._group = storeLoadOptions.group; for (let groupIndex = 0; groupIndex < groupsCount; groupIndex++) { if (oldGroups[groupIndex].selector !== groups[groupIndex].selector) { groupsCount = groupIndex; break } } if (!groupsCount) { that.reset() } else { cleanGroupsInfo(that._groupsInfo, 0, groupsCount) } } handleDataLoading() {} handleDataLoaded(options, callBase) { callBase(options) } handleDataLoadedCore(options, callBase) { callBase(options) } } }, 27191: /*!********************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/data_grid/grouping/m_grouping_expanded.js ***! \********************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.GroupingHelper = void 0; var _query = _interopRequireDefault(__webpack_require__( /*! ../../../../common/data/query */ 30771)); var _store_helper = _interopRequireDefault(__webpack_require__( /*! ../../../../common/data/store_helper */ 66177)); var _utils = __webpack_require__( /*! ../../../../common/data/utils */ 89358); var _data = __webpack_require__( /*! ../../../../core/utils/data */ 31e3); var _deferred = __webpack_require__( /*! ../../../../core/utils/deferred */ 87739); var _extend = __webpack_require__( /*! ../../../../core/utils/extend */ 52576); var _iterator = __webpack_require__( /*! ../../../../core/utils/iterator */ 21274); var _m_core = _interopRequireDefault(__webpack_require__( /*! ../m_core */ 54353)); var _m_utils = __webpack_require__( /*! ../m_utils */ 73057); var _m_grouping_core = __webpack_require__( /*! ./m_grouping_core */ 14385); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } const loadTotalCount = function(dataSource, options) { const d = new _deferred.Deferred; const loadOptions = (0, _extend.extend)({ skip: 0, take: 1, requireTotalCount: true }, options); dataSource.load(loadOptions).done(((data, extra) => { d.resolve(extra && extra.totalCount) })).fail(d.reject.bind(d)); return d }; const foreachCollapsedGroups = function(that, callback, updateOffsets) { return that.foreachGroups((groupInfo => { if (!groupInfo.isExpanded) { return callback(groupInfo) } }), false, false, updateOffsets, true) }; const correctSkipLoadOption = function(that, skip) { let skipCorrection = 0; let resultSkip = skip || 0; if (skip) { foreachCollapsedGroups(that, (groupInfo => { if (groupInfo.offset - skipCorrection >= skip) { return false } skipCorrection += groupInfo.count - 1 })); resultSkip += skipCorrection } return resultSkip }; const processGroupItems = function(that, items, path, offset, skipFirstItem, take) { let removeLastItemsCount = 0; let needRemoveFirstItem = false; for (let i = 0; i < items.length; i++) { const item = items[i]; if (void 0 !== item.items) { path.push(item.key); const groupInfo = that.findGroupInfo(path); if (groupInfo && !groupInfo.isExpanded) { item.collapsedItems = item.items; item.items = null; offset += groupInfo.count; take--; if (take < 0) { removeLastItemsCount++ } if (skipFirstItem) { needRemoveFirstItem = true } } else if (item.items) { const offsetInfo = processGroupItems(that, item.items, path, offset, skipFirstItem, take); if (skipFirstItem) { if (offsetInfo.offset - offset > 1) { item.isContinuation = true } else { needRemoveFirstItem = true } } offset = offsetInfo.offset; take = offsetInfo.take; if (take < 0) { if (item.items.length) { item.isContinuationOnNextPage = true } else { removeLastItemsCount++ } } } path.pop() } else { if (skipFirstItem) { needRemoveFirstItem = true } offset++; take--; if (take < 0) { removeLastItemsCount++ } } skipFirstItem = false } if (needRemoveFirstItem) { items.splice(0, 1) } if (removeLastItemsCount) { items.splice(-removeLastItemsCount, removeLastItemsCount) } return { offset: offset, take: take } }; const pathEquals = function(path1, path2) { if (path1.length !== path2.length) { return false } for (let i = 0; i < path1.length; i++) { if (!(0, _utils.keysEqual)(null, path1[i], path2[i])) { return false } } return true }; const updateGroupOffsets = function(that, items, path, offset, additionalGroupInfo) { if (!items) { return } for (let i = 0; i < items.length; i++) { const item = items[i]; if ("key" in item && void 0 !== item.items) { path.push(item.key); if (additionalGroupInfo && pathEquals(additionalGroupInfo.path, path) && !item.isContinuation) { additionalGroupInfo.offset = offset } const groupInfo = that.findGroupInfo(path); if (groupInfo && !item.isContinuation) { groupInfo.offset = offset } if (groupInfo && !groupInfo.isExpanded) { offset += groupInfo.count } else { offset = updateGroupOffsets(that, item.items, path, offset, additionalGroupInfo) } path.pop() } else { offset++ } } return offset }; const getGroupCount = function(item, groupCount) { let count = item.count || item.items.length; if (!item.count && groupCount > 1) { count = 0; for (let i = 0; i < item.items.length; i++) { count += getGroupCount(item.items[i], groupCount - 1) } } return count }; class GroupingHelper extends _m_grouping_core.GroupingHelper { handleDataLoading(options) { const { storeLoadOptions: storeLoadOptions } = options; const collapsedGroups = []; let collapsedItemsCount = 0; let skipFirstItem = false; let take; const { group: group } = options.loadOptions; let skipCorrection = 0; ! function(storeLoadOptions, loadOptions) { if (loadOptions.group) { const groups = _m_core.default.normalizeSortingInfo(loadOptions.group); const sorts = _m_core.default.normalizeSortingInfo(storeLoadOptions.sort); storeLoadOptions.sort = _store_helper.default.arrangeSortingInfo(groups, sorts); delete loadOptions.group } }(storeLoadOptions, options.loadOptions); options.group = options.group || group; if (options.isCustomLoading) { return } const loadOptions = (0, _extend.extend)({}, storeLoadOptions); loadOptions.skip = correctSkipLoadOption(this, storeLoadOptions.skip); if (loadOptions.skip && loadOptions.take && group) { loadOptions.skip--; loadOptions.take++; skipFirstItem = true } if (loadOptions.take && group) { take = loadOptions.take; loadOptions.take++ } foreachCollapsedGroups(this, (groupInfo => { if (groupInfo.offset >= loadOptions.skip + loadOptions.take + skipCorrection) { return false } if (groupInfo.offset >= loadOptions.skip + skipCorrection && groupInfo.count) { skipCorrection += groupInfo.count - 1; collapsedGroups.push(groupInfo); collapsedItemsCount += groupInfo.count } })); (0, _iterator.each)(collapsedGroups, (function() { loadOptions.filter = function(path, storeLoadOptions, group) { const groups = _m_core.default.normalizeSortingInfo(group || storeLoadOptions.group); let filter = []; for (let i = 0; i < path.length; i++) { const filterElement = []; for (let j = 0; j <= i; j++) { filterElement.push([groups[j].selector, i === j ? "<>" : "=", path[j]]) } filter.push(_m_core.default.combineFilters(filterElement)) } filter = _m_core.default.combineFilters(filter, "or"); return _m_core.default.combineFilters([filter, storeLoadOptions.filter]) }(this.path, loadOptions, group) })); options.storeLoadOptions = loadOptions; options.collapsedGroups = collapsedGroups; options.collapsedItemsCount = collapsedItemsCount; options.skip = loadOptions.skip || 0; options.skipFirstItem = skipFirstItem; options.take = take } handleDataLoaded(options, callBase) { const that = this; const { collapsedGroups: collapsedGroups } = options; const groups = _m_core.default.normalizeSortingInfo(options.group); const groupCount = groups.length; function appendCollapsedPath(data, path, groups, collapsedGroup, offset) { if (!data || !path.length || !groups.length) { return } let keyValue; let i; const pathValue = (0, _data.toComparable)(path[0], true); for (i = 0; i < data.length; i++) { keyValue = (0, _data.toComparable)(data[i].key, true); if (offset >= collapsedGroup.offset || pathValue === keyValue) { break } else { offset += getGroupCount(data[i], groups.length) } } if (!data.length || pathValue !== keyValue) { data.splice(i, 0, { key: path[0], items: [], count: 1 === path.length ? collapsedGroup.count : void 0 }) } appendCollapsedPath(data[i].items, path.slice(1), groups.slice(1), collapsedGroup, offset) } if (options.collapsedItemsCount && options.extra && options.extra.totalCount >= 0) { if (!options.extra._totalCountWasIncreasedByCollapsedItems) { options.extra.totalCount += options.collapsedItemsCount; options.extra._totalCountWasIncreasedByCollapsedItems = true } } callBase(options); if (groupCount) { let { data: data } = options; const query = (0, _query.default)(data); _store_helper.default.multiLevelGroup(query, groups).enumerate().done((groupedData => { data = groupedData })); if (collapsedGroups) { for (let pathIndex = 0; pathIndex < collapsedGroups.length; pathIndex++) { appendCollapsedPath(data, collapsedGroups[pathIndex].path, groups, collapsedGroups[pathIndex], options.skip) } } if (!options.isCustomLoading) { processGroupItems(that, data, [], options.skip, options.skipFirstItem, options.take) } options.data = data } } isGroupItemCountable(item) { return null === item.items } updateTotalItemsCount() { let itemsCountCorrection = 0; foreachCollapsedGroups(this, (groupInfo => { if (groupInfo.count) { itemsCountCorrection -= groupInfo.count - 1 } })); super.updateTotalItemsCount(itemsCountCorrection) } changeRowExpand(path) { const that = this; const dataSource = that._dataSource; const beginPageIndex = dataSource.beginPageIndex ? dataSource.beginPageIndex() : dataSource.pageIndex(); const dataSourceItems = dataSource.items(); const offset = correctSkipLoadOption(that, beginPageIndex * dataSource.pageSize()); let groupInfo = that.findGroupInfo(path); let groupCountQuery; if (groupInfo && !groupInfo.isExpanded) { groupCountQuery = (new _deferred.Deferred).resolve(groupInfo.count) } else { groupCountQuery = loadTotalCount(dataSource, { filter: (0, _m_utils.createGroupFilter)(path, { filter: dataSource.filter(), group: dataSource.group() }) }) } return (0, _deferred.when)(groupCountQuery).done((count => { count = parseInt(count.length ? count[0] : count); if (groupInfo) { updateGroupOffsets(that, dataSourceItems, [], offset); groupInfo.isExpanded = !groupInfo.isExpanded; groupInfo.count = count } else { groupInfo = { offset: -1, count: count, path: path, isExpanded: false }; updateGroupOffsets(that, dataSourceItems, [], offset, groupInfo); if (groupInfo.offset >= 0) { that.addGroupInfo(groupInfo) } } that.updateTotalItemsCount() })).fail((function() { dataSource._eventsStrategy.fireEvent("loadError", arguments) })) } allowCollapseAll() { return false } refresh(options, operationTypes) { const that = this; const { storeLoadOptions: storeLoadOptions } = options; const dataSource = that._dataSource; super.refresh.apply(this, arguments); if (operationTypes.reload) { return foreachCollapsedGroups(that, (groupInfo => { const groupCountQuery = loadTotalCount(dataSource, { filter: (0, _m_utils.createGroupFilter)(groupInfo.path, storeLoadOptions) }); const groupOffsetQuery = loadTotalCount(dataSource, { filter: (0, _m_grouping_core.createOffsetFilter)(groupInfo.path, storeLoadOptions) }); return (0, _deferred.when)(groupOffsetQuery, groupCountQuery).done(((offset, count) => { offset = parseInt(offset.length ? offset[0] : offset); count = parseInt(count.length ? count[0] : count); groupInfo.offset = offset; if (groupInfo.count !== count) { groupInfo.count = count; that.updateTotalItemsCount() } })) }), true) } } } exports.GroupingHelper = GroupingHelper }, 3716: /*!**********************************************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/data_grid/keyboard_navigation/m_column_keyboard_navigation_mixin.js ***! \**********************************************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.ColumnKeyboardNavigationMixin = void 0; var _utils = __webpack_require__( /*! ../../../../common/core/events/utils */ 98834); var _type = __webpack_require__( /*! ../../../../core/utils/type */ 11528); var _const = __webpack_require__( /*! ../../../grids/grid_core/keyboard_navigation/const */ 24171); exports.ColumnKeyboardNavigationMixin = Base => class extends Base { ungroupColumnByPressingKey(e) { var _e$originalEvent; const column = this.getColumnFromEvent(e); const rowIndex = this.getRowIndexFromEvent(e); this.ungroupColumn(column, rowIndex); null === (_e$originalEvent = e.originalEvent) || void 0 === _e$originalEvent || _e$originalEvent.preventDefault() } getFocusedCellPositionByColumn(column) { if (!column) { return } const newRowIndex = this._columnsController.getRowIndex(column.index, true); return { rowIndex: newRowIndex, columnIndex: this.getVisibleIndex(column, newRowIndex) } } getRowIndexFromEvent(e) { return 0 } getColumnFromEvent(e) {} getNewFocusedColumnBeforeUngrouping(column, rowIndex) { return column } keyDownHandler(e) { let isHandled = super.keyDownHandler(e); if (isHandled) { return true } if (this.canUngroupColumnByPressingKey(e)) { this.ungroupColumnByPressingKey(e); isHandled = true } else if (this.canUngroupAllColumnByPressingKey(e)) { this.ungroupAllColumns(); isHandled = true } return isHandled } changeGroupColumnIndex(groupIndex, column, newFocusedColumn) { this._columnsController.beginUpdate(); this._columnsController.columnOption(column.dataField, "groupIndex", groupIndex); const newFocusedCellPosition = this.getFocusedCellPositionByColumn(newFocusedColumn); this.updateViewFocusPosition(newFocusedCellPosition); this._columnsController.endUpdate() } canUngroupColumnByPressingKey(e) { return e.which === _const.KEY_CODES.G && e.shift && (0, _utils.isCommandKeyPressed)(e.originalEvent) } canUngroupAllColumnByPressingKey(e) { return e.which === _const.KEY_CODES.G && e.shift && e.alt } ungroupColumn(column) { let rowIndex = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : 0; if ((0, _type.isDefined)(null === column || void 0 === column ? void 0 : column.groupIndex)) { const newFocusedColumn = this.getNewFocusedColumnBeforeUngrouping(column, rowIndex); this.changeGroupColumnIndex(-1, column, newFocusedColumn) } } ungroupAllColumns() { this._columnsController.clearGrouping() } } }, 45422: /*!*********************************************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/data_grid/keyboard_navigation/m_group_panel_keyboard_navigation.js ***! \*********************************************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.GroupPanelKeyboardNavigationController = void 0; var _click = __webpack_require__( /*! ../../../../common/core/events/click */ 64044); var _events_engine = _interopRequireDefault(__webpack_require__( /*! ../../../../common/core/events/core/events_engine */ 92774)); var _index = __webpack_require__( /*! ../../../../common/core/events/utils/index */ 98834); var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../../../core/renderer */ 64553)); var _accessibility = __webpack_require__( /*! ../../../../ui/shared/accessibility */ 16191); var _const = __webpack_require__( /*! ../../../grids/grid_core/keyboard_navigation/const */ 24171); var _m_column_keyboard_navigation_core = __webpack_require__( /*! ../../../grids/grid_core/keyboard_navigation/m_column_keyboard_navigation_core */ 37565); var _const2 = __webpack_require__( /*! ../grouping/const */ 35479); var _m_core = _interopRequireDefault(__webpack_require__( /*! ../m_core */ 54353)); var _m_column_keyboard_navigation_mixin = __webpack_require__( /*! ./m_column_keyboard_navigation_mixin */ 3716); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } class GroupPanelKeyboardNavigationController extends((0, _m_column_keyboard_navigation_mixin.ColumnKeyboardNavigationMixin)(_m_column_keyboard_navigation_core.ColumnKeyboardNavigationController)) { constructor() { super(...arguments); this.isNeedToHiddenFocusAfterClick = false } groupItemClickHandler(e) { var _this$_columnsControl; const $groupedColumnElement = (0, _renderer.default)(e.originalEvent.target); const groupColumn = this._columnsController.columnOption(`groupIndex:${$groupedColumnElement.index()}`); this.isNeedToHiddenFocusAfterClick = null === (_this$_columnsControl = this._columnsController) || void 0 === _this$_columnsControl ? void 0 : _this$_columnsControl.allowColumnSorting(groupColumn) } unsubscribeFromGroupItemClick() { const $focusedView = this.getFocusedViewElement(); if ($focusedView) { _events_engine.default.off($focusedView, _click.name, this.groupItemClickHandlerContext) } } subscribeToGroupItemClick() { const $focusedView = this.getFocusedViewElement(); if ($focusedView) { _events_engine.default.on($focusedView, _click.name, `.${_const2.CLASSES.groupPanelItem}`, this.groupItemClickHandlerContext) } } leftRightKeysHandler(e) { const { originalEvent: originalEvent } = e; if ((0, _index.isCommandKeyPressed)(originalEvent)) { const $groupedColumnElement = (0, _renderer.default)(originalEvent.target); const column = this._columnsController.columnOption(`groupIndex:${$groupedColumnElement.index()}`); const direction = this.getDirectionByKeyName(e.keyName); if (this.canReorderColumn(column, direction)) { this.moveColumn(column, direction) } null === originalEvent || void 0 === originalEvent || originalEvent.preventDefault() } } getVisibleIndex(column) { return column.groupIndex } getColumnFromEvent(e) { const $groupedColumnElement = (0, _renderer.default)(e.originalEvent.target); return this._columnsController.columnOption(`groupIndex:${$groupedColumnElement.index()}`) } getNewFocusedColumnBeforeUngrouping(column) { const visibleColumnIndex = column.groupIndex; const groupColumns = this._columnsController.getGroupColumns(); return visibleColumnIndex === groupColumns.length - 1 ? groupColumns[visibleColumnIndex - 1] : groupColumns[visibleColumnIndex + 1] } _getCell(cellPosition) { var _this$headerPanel; const $groupColumnElements = null === (_this$headerPanel = this.headerPanel) || void 0 === _this$headerPanel ? void 0 : _this$headerPanel.getColumnElements(); return null === $groupColumnElements || void 0 === $groupColumnElements ? void 0 : $groupColumnElements.eq(cellPosition.columnIndex) } getFocusedView() { return this.getView("headerPanel") } getFocusedViewElement() { var _this$headerPanel2; return null === (_this$headerPanel2 = this.headerPanel) || void 0 === _this$headerPanel2 || null === (_this$headerPanel2 = _this$headerPanel2.element()) || void 0 === _this$headerPanel2 ? void 0 : _this$headerPanel2.find(`.${_const2.CLASSES.groupPanel}`) } getFocusinSelector() { return `.${_const2.CLASSES.groupPanelItem}` } focusinHandler(e) { this.setFocusedCellPosition(0, (0, _renderer.default)(e.target).index()) } keyDownHandler(e) { let isHandled = super.keyDownHandler(e); if (isHandled) { return true } if ("leftArrow" === e.keyName || "rightArrow" === e.keyName) { this.leftRightKeysHandler(e); isHandled = true } return isHandled } renderCompleted(e) { const { needToRestoreFocus: needToRestoreFocus } = this; super.renderCompleted(e); this.unsubscribeFromGroupItemClick(); this.subscribeToGroupItemClick(); if (!needToRestoreFocus && this.isNeedToHiddenFocusAfterClick) { const $focusElement = this._getFocusedCell(); if (null !== $focusElement && void 0 !== $focusElement && $focusElement.length) { (0, _accessibility.hiddenFocus)($focusElement.get(0)) } this.isNeedToHiddenFocusAfterClick = false } } canUngroupColumnByPressingKey(e) { return super.canUngroupColumnByPressingKey(e) || "backspace" === e.keyName || "del" === e.keyName } getFirstFocusableVisibleIndex() { var _this$headerPanel3; const columns = null === (_this$headerPanel3 = this.headerPanel) || void 0 === _this$headerPanel3 ? void 0 : _this$headerPanel3.getColumns(); return null !== columns && void 0 !== columns && columns.length ? 0 : -1 } init() { this.headerPanel = this.getView("headerPanel"); this.groupItemClickHandlerContext = this.groupItemClickHandlerContext ?? this.groupItemClickHandler.bind(this); super.init() } canReorderColumn(groupColumn, direction) { const allowDragging = this.headerPanel.allowDragging(groupColumn); if (!allowDragging) { return false } const groupedColumns = this._columnsController.getGroupColumns(); return direction === _const.Direction.Next ? groupColumn.groupIndex !== groupedColumns.length - 1 : 0 !== groupColumn.groupIndex } ungroupAllColumns() { this.updateViewFocusPosition(); super.ungroupAllColumns() } } exports.GroupPanelKeyboardNavigationController = GroupPanelKeyboardNavigationController; _m_core.default.registerModule("groupPanelKeyboardNavigation", { controllers: { groupPanelKeyboardNavigation: GroupPanelKeyboardNavigationController } }) }, 85518: /*!*****************************************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/data_grid/keyboard_navigation/m_headers_keyboard_navigation.js ***! \*****************************************************************************************************************************/ function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { var _utils = __webpack_require__( /*! ../../../../common/core/events/utils */ 98834); var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../../../core/renderer */ 64553)); var _type = __webpack_require__( /*! ../../../../core/utils/type */ 11528); var _const = __webpack_require__( /*! ../../../grids/grid_core/keyboard_navigation/const */ 24171); var _m_headers_keyboard_navigation = __webpack_require__( /*! ../../../grids/grid_core/keyboard_navigation/m_headers_keyboard_navigation */ 86421); var _m_core = _interopRequireDefault(__webpack_require__( /*! ../m_core */ 54353)); var _m_column_keyboard_navigation_mixin = __webpack_require__( /*! ./m_column_keyboard_navigation_mixin */ 3716); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } function _extends() { return _extends = Object.assign ? Object.assign.bind() : function(n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) { ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]) } } return n }, _extends.apply(null, arguments) } _m_core.default.registerModule("headersKeyboardNavigation", _extends({}, _m_headers_keyboard_navigation.headersKeyboardNavigationModule, { extenders: { controllers: { headersKeyboardNavigation: Base => class extends((0, _m_column_keyboard_navigation_mixin.ColumnKeyboardNavigationMixin)(Base)) { getNewFocusedColumnBeforeGrouping(column, rowIndex) { if (column.showWhenGrouped) { return column } const focusableColumns = this.getFocusableColumns(rowIndex, column.ownerBand); if (1 === focusableColumns.length && (0, _type.isDefined)(column.ownerBand)) { return this._columnsController.getParentColumn(column, true) } if (1 === focusableColumns.length) { return } const visibleColumnIndex = focusableColumns.findIndex((col => col.index === column.index)); return visibleColumnIndex === focusableColumns.length - 1 ? focusableColumns[visibleColumnIndex - 1] : focusableColumns[visibleColumnIndex + 1] } groupColumnByPressingKey(e) { var _e$originalEvent; const $cell = (0, _renderer.default)(e.originalEvent.target).closest("td"); const rowIndex = this._getRowIndex($cell.parent()); const column = this._getColumnByCellElement($cell, rowIndex); this.groupColumn(column, rowIndex); null === (_e$originalEvent = e.originalEvent) || void 0 === _e$originalEvent || _e$originalEvent.preventDefault() } canGroupColumnByPressingKey(e) { return e.which === _const.KEY_CODES.G && (0, _utils.isCommandKeyPressed)(e.originalEvent) } getRowIndexFromEvent(e) { const $cell = (0, _renderer.default)(e.originalEvent.target).closest("td"); return this._getRowIndex($cell.parent()) } getColumnFromEvent(e) { const $cell = (0, _renderer.default)(e.originalEvent.target).closest("td"); const rowIndex = this._getRowIndex($cell.parent()); return this._getColumnByCellElement($cell, rowIndex) } keyDownHandler(e) { let isHandled = super.keyDownHandler(e); if (isHandled) { return true } if (this.canGroupColumnByPressingKey(e)) { this.groupColumnByPressingKey(e); isHandled = true } return isHandled } groupColumn(column) { let rowIndex = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : 0; if (!(0, _type.isDefined)(column.groupIndex) && null !== column && void 0 !== column && column.allowGrouping) { var _this$_columnsControl; const newGroupIndex = (null === (_this$_columnsControl = this._columnsController.getGroupColumns()) || void 0 === _this$_columnsControl ? void 0 : _this$_columnsControl.length) ?? 0; const newFocusedColumn = this.getNewFocusedColumnBeforeGrouping(column, rowIndex); this.changeGroupColumnIndex(newGroupIndex, column, newFocusedColumn) } } ungroupAllColumns() { const $focusedCell = this._getFocusedCell(); const focusedColumn = this._getColumnByCellElement($focusedCell); this._columnsController.beginUpdate(); super.ungroupAllColumns(); const rowIndex = this._columnsController.getRowIndex(focusedColumn.index, true); const newVisibleIndex = this.getVisibleIndex(focusedColumn); this.updateFocusPosition({ rowIndex: rowIndex, columnIndex: newVisibleIndex }); this._columnsController.endUpdate() } } }, views: _extends({}, _m_headers_keyboard_navigation.headersKeyboardNavigationModule.extenders.views) } })) }, 89430: /*!**************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/data_grid/m_aggregate_calculator.js ***! \**************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _errors = __webpack_require__( /*! ../../../common/data/errors */ 82812); var _utils = __webpack_require__( /*! ../../../common/data/utils */ 89358); var _data = __webpack_require__( /*! ../../../core/utils/data */ 31e3); var _type = __webpack_require__( /*! ../../../core/utils/type */ 11528); function depthFirstSearch(i, depth, root, callback) { let j = 0; if (i < depth) { for (; j < root.items.length; j++) { depthFirstSearch(i + 1, depth, root.items[j], callback) } } if (i === depth) { callback(root) } } function map(array, callback) { let i; if ("map" in array) { return array.map(callback) } const result = new Array(array.length); for (i in array) { result[i] = callback(array[i], i) } return result } function normalizeAggregate(aggregate) { const selector = (0, _data.compileGetter)(aggregate.selector); const skipEmptyValues = "skipEmptyValues" in aggregate ? aggregate.skipEmptyValues : true; let { aggregator: aggregator } = aggregate; if ("string" === typeof aggregator) { aggregator = _utils.aggregators[aggregator]; if (!aggregator) { throw _errors.errors.Error("E4001", aggregate.aggregator) } } return { selector: selector, aggregator: aggregator, skipEmptyValues: skipEmptyValues } } exports.default = class { constructor(options) { this._data = options.data; this._groupLevel = options.groupLevel || 0; this._totalAggregates = map(options.totalAggregates || [], normalizeAggregate); this._groupAggregates = map(options.groupAggregates || [], normalizeAggregate); this._totals = [] } calculate() { if (this._totalAggregates.length) { this._calculateTotals(0, { items: this._data }) } if (this._groupAggregates.length && this._groupLevel > 0) { this._calculateGroups({ items: this._data }) } } totalAggregates() { return this._totals } _aggregate(aggregates, data, container) { const length = data.items ? data.items.length : 0; for (let i = 0; i < aggregates.length; i++) { if (aggregator = aggregates[i].aggregator, aggregator === _utils.aggregators.count) { container[i] = (container[i] || 0) + length; continue } for (let j = 0; j < length; j++) { this._accumulate(i, aggregates[i], container, data.items[j]) } } var aggregator } _calculateTotals(level, data) { if (0 === level) { this._totals = this._seed(this._totalAggregates) } if (level === this._groupLevel) { this._aggregate(this._totalAggregates, data, this._totals) } else { for (let i = 0; i < data.items.length; i++) { this._calculateTotals(level + 1, data.items[i]) } } if (0 === level) { this._totals = this._finalize(this._totalAggregates, this._totals) } } _calculateGroups(root) { const maxLevel = this._groupLevel; let currentLevel = maxLevel + 1; const seedFn = this._seed.bind(this, this._groupAggregates); const stepFn = this._aggregate.bind(this, this._groupAggregates); const finalizeFn = this._finalize.bind(this, this._groupAggregates); function aggregator(node) { node.aggregates = seedFn(currentLevel - 1); if (currentLevel === maxLevel) { stepFn(node, node.aggregates) } else { depthFirstSearch(currentLevel, maxLevel, node, (innerNode => { stepFn(innerNode, node.aggregates) })) } node.aggregates = finalizeFn(node.aggregates) } while (--currentLevel > 0) { depthFirstSearch(0, currentLevel, root, aggregator) } } _seed(aggregates, groupIndex) { return map(aggregates, (aggregate => { const { aggregator: aggregator } = aggregate; const seed = "seed" in aggregator ? (0, _type.isFunction)(aggregator.seed) ? aggregator.seed(groupIndex) : aggregator.seed : NaN; return seed })) } _accumulate(aggregateIndex, aggregate, results, item) { const value = aggregate.selector(item); const { aggregator: aggregator } = aggregate; const { skipEmptyValues: skipEmptyValues } = aggregate; if (skipEmptyValues && (x = value, x !== x || "" === x || null === x || void 0 === x)) { return } var x; if (results[aggregateIndex] !== results[aggregateIndex]) { results[aggregateIndex] = value } else { results[aggregateIndex] = aggregator.step(results[aggregateIndex], value) } } _finalize(aggregates, results) { return map(aggregates, ((aggregate, index) => { const fin = aggregate.aggregator.finalize; return fin ? fin(results[index]) : results[index] })) } } }, 34894: /*!************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/data_grid/m_columns_controller.js ***! \************************************************************************************************/ function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { var _extend = __webpack_require__( /*! ../../../core/utils/extend */ 52576); var _m_columns_controller = __webpack_require__( /*! ../../grids/grid_core/columns_controller/m_columns_controller */ 17798); var _m_core = (e = __webpack_require__( /*! ./m_core */ 54353), e && e.__esModule ? e : { default: e }); var e; _m_core.default.registerModule("columns", { defaultOptions: () => (0, _extend.extend)(true, {}, _m_columns_controller.columnsControllerModule.defaultOptions(), { commonColumnSettings: { allowExporting: true } }), controllers: _m_columns_controller.columnsControllerModule.controllers }) }, 54353: /*!**********************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/data_grid/m_core.js ***! \**********************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _m_modules = _interopRequireDefault(__webpack_require__( /*! ../../grids/grid_core/m_modules */ 74854)); var _m_utils = _interopRequireDefault(__webpack_require__( /*! ../../grids/grid_core/m_utils */ 53226)); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } function _extends() { return _extends = Object.assign ? Object.assign.bind() : function(n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) { ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]) } } return n }, _extends.apply(null, arguments) } exports.default = _extends({}, _m_modules.default, _m_utils.default, { modules: [] }) }, 12937: /*!*********************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/data_grid/m_data_controller.js ***! \*********************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.DataController = void 0; var _ui = _interopRequireDefault(__webpack_require__( /*! ../../../ui/widget/ui.errors */ 35185)); var _m_data_controller = __webpack_require__( /*! ../../grids/grid_core/data_controller/m_data_controller */ 32688); var _m_core = _interopRequireDefault(__webpack_require__( /*! ./m_core */ 54353)); var _m_data_source_adapter = _interopRequireDefault(__webpack_require__( /*! ./m_data_source_adapter */ 72208)); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } class DataGridDataController extends _m_data_controller.DataController { _getDataSourceAdapter() { return _m_data_source_adapter.default } _getSpecificDataSourceOption() { const dataSource = this.option("dataSource"); if (dataSource && !Array.isArray(dataSource) && this.option("keyExpr")) { _ui.default.log("W1011") } return super._getSpecificDataSourceOption() } } exports.DataController = DataGridDataController; _m_core.default.registerModule("data", { defaultOptions: _m_data_controller.dataControllerModule.defaultOptions, controllers: { data: DataGridDataController } }) }, 72208: /*!*************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/data_grid/m_data_source_adapter.js ***! \*************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _m_data_source_adapter = (e = __webpack_require__( /*! ../../grids/grid_core/data_source_adapter/m_data_source_adapter */ 3120), e && e.__esModule ? e : { default: e }); var e; let DataSourceAdapterType = _m_data_source_adapter.default; exports.default = { extend(extender) { DataSourceAdapterType = extender(DataSourceAdapterType) }, create: component => new DataSourceAdapterType(component) } }, 41636: /*!*************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/data_grid/m_editing.js ***! \*************************************************************************************/ function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { __webpack_require__( /*! ./module_not_extended/editor_factory */ 9521); var _m_editing = __webpack_require__( /*! ../../grids/grid_core/editing/m_editing */ 13876); var _m_core = (e = __webpack_require__( /*! ./m_core */ 54353), e && e.__esModule ? e : { default: e }); var e; function _extends() { return _extends = Object.assign ? Object.assign.bind() : function(n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) { ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]) } } return n }, _extends.apply(null, arguments) } _m_core.default.registerModule("editing", _extends({}, _m_editing.editingModule, { extenders: _extends({}, _m_editing.editingModule.extenders, { controllers: _extends({}, _m_editing.editingModule.extenders.controllers, { data: Base => class extends((0, _m_editing.dataControllerEditingExtenderMixin)(Base)) { _changeRowExpandCore(key) { const editingController = this._editingController; if (Array.isArray(key)) { editingController && editingController.refresh() } return super._changeRowExpandCore.apply(this, arguments) } } }) }) })) }, 73057: /*!***********************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/data_grid/m_utils.js ***! \***********************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.createGroupFilter = function(path, storeLoadOptions) { const groups = (0, _utils.normalizeSortingInfo)(storeLoadOptions.group); const filter = []; for (let i = 0; i < path.length; i++) { filter.push([groups[i].selector, "=", path[i]]) } if (storeLoadOptions.filter) { filter.push(storeLoadOptions.filter) } return _m_utils.default.combineFilters(filter) }; var _utils = __webpack_require__( /*! ../../../common/data/utils */ 89358); var _m_utils = (e = __webpack_require__( /*! ../../grids/grid_core/m_utils */ 53226), e && e.__esModule ? e : { default: e }); var e }, 89398: /*!************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/data_grid/m_widget.js ***! \************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _m_widget_base = (e = __webpack_require__( /*! ./m_widget_base */ 77456), e && e.__esModule ? e : { default: e }); var e; __webpack_require__( /*! ./module_not_extended/state_storing */ 15241); __webpack_require__( /*! ./module_not_extended/selection */ 79495); __webpack_require__( /*! ./module_not_extended/column_chooser */ 45573); __webpack_require__( /*! ./grouping/m_grouping */ 43983); __webpack_require__( /*! ./module_not_extended/master_detail */ 50255); __webpack_require__( /*! ./m_editing */ 41636); __webpack_require__( /*! ./module_not_extended/editing_row_based */ 93426); __webpack_require__( /*! ./module_not_extended/editing_form_based */ 23002); __webpack_require__( /*! ./module_not_extended/editing_cell_based */ 36224); __webpack_require__( /*! ./module_not_extended/validating */ 59352); __webpack_require__( /*! ./module_not_extended/virtual_scrolling */ 1978); __webpack_require__( /*! ./module_not_extended/filter_row */ 23808); __webpack_require__( /*! ./module_not_extended/header_filter */ 39525); __webpack_require__( /*! ./module_not_extended/filter_sync */ 15277); __webpack_require__( /*! ./module_not_extended/filter_builder */ 11215); __webpack_require__( /*! ./module_not_extended/filter_panel */ 8030); __webpack_require__( /*! ./module_not_extended/search */ 1881); __webpack_require__( /*! ./module_not_extended/pager */ 10150); __webpack_require__( /*! ./module_not_extended/columns_resizing_reordering */ 65040); __webpack_require__( /*! ./module_not_extended/keyboard_navigation */ 97209); __webpack_require__( /*! ./keyboard_navigation/m_headers_keyboard_navigation */ 85518); __webpack_require__( /*! ./keyboard_navigation/m_group_panel_keyboard_navigation */ 45422); __webpack_require__( /*! ./summary/m_summary */ 8691); __webpack_require__( /*! ./module_not_extended/sticky_columns */ 22382); __webpack_require__( /*! ./module_not_extended/column_fixing */ 94851); __webpack_require__( /*! ./module_not_extended/adaptivity */ 32048); __webpack_require__( /*! ./module_not_extended/virtual_columns */ 85646); __webpack_require__( /*! ./export/m_export */ 83189); __webpack_require__( /*! ./focus/m_focus */ 30131); __webpack_require__( /*! ./module_not_extended/row_dragging */ 22949); exports.default = _m_widget_base.default }, 77456: /*!*****************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/data_grid/m_widget_base.js ***! \*****************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; __webpack_require__( /*! ./module_not_extended/column_headers */ 774); __webpack_require__( /*! ./m_columns_controller */ 34894); __webpack_require__( /*! ./m_data_controller */ 12937); __webpack_require__( /*! ./module_not_extended/sorting */ 58261); __webpack_require__( /*! ./module_not_extended/rows */ 57008); __webpack_require__( /*! ./module_not_extended/context_menu */ 98094); __webpack_require__( /*! ./module_not_extended/error_handling */ 99763); __webpack_require__( /*! ./module_not_extended/grid_view */ 47513); __webpack_require__( /*! ./module_not_extended/header_panel */ 47641); var _component_registrator = _interopRequireDefault(__webpack_require__( /*! ../../../core/component_registrator */ 92848)); var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../../core/renderer */ 64553)); var _browser = _interopRequireDefault(__webpack_require__( /*! ../../../core/utils/browser */ 48314)); var _console = __webpack_require__( /*! ../../../core/utils/console */ 31951); var _extend = __webpack_require__( /*! ../../../core/utils/extend */ 52576); var _type = __webpack_require__( /*! ../../../core/utils/type */ 11528); var _themes = __webpack_require__( /*! ../../../ui/themes */ 52071); var _m_utils = _interopRequireDefault(__webpack_require__( /*! ../../grids/grid_core/m_utils */ 53226)); var _m_widget_base = _interopRequireDefault(__webpack_require__( /*! ../../grids/grid_core/m_widget_base */ 99335)); var _m_core = _interopRequireDefault(__webpack_require__( /*! ./m_core */ 54353)); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } _m_core.default.registerModulesOrder(["stateStoring", "columns", "selection", "editorFactory", "columnChooser", "grouping", "editing", "editingRowBased", "editingFormBased", "editingCellBased", "masterDetail", "validating", "adaptivity", "data", "virtualScrolling", "columnHeaders", "filterRow", "headerPanel", "headerFilter", "sorting", "search", "rows", "pager", "columnsResizingReordering", "contextMenu", "keyboardNavigation", "headersKeyboardNavigation", "groupPanelKeyboardNavigation", "errorHandling", "summary", "columnFixing", "export", "gridView"]); class DataGrid extends _m_widget_base.default { _defaultOptionsRules() { return super._defaultOptionsRules().concat([{ device: { platform: "ios" }, options: { showRowLines: true } }, { device: () => (0, _themes.isMaterialBased)(), options: { showRowLines: true, showColumnLines: false, headerFilter: { height: 315 }, editing: { useIcons: true }, selection: { showCheckBoxesMode: "always" } } }, { device: () => _browser.default.webkit, options: { loadingTimeout: 30, loadPanel: { animation: { show: { easing: "cubic-bezier(1, 0, 1, 0)", duration: 500, from: { opacity: 0 }, to: { opacity: 1 } } } } } }, { device: device => "desktop" !== device.deviceType, options: { grouping: { expandMode: "rowClick" } } }]) } _init() { super._init(); _m_utils.default.logHeaderFilterDeprecatedWarningIfNeed(this); _m_core.default.processModules(this, _m_core.default); _m_core.default.callModuleItemsMethod(this, "init") } _initMarkup() { super._initMarkup.apply(this, arguments); this.getView("gridView").render(this.$element()) } _setDeprecatedOptions() { super._setDeprecatedOptions(); (0, _extend.extend)(this._deprecatedOptions, { useKeyboard: { since: "19.2", alias: "keyboardNavigation.enabled" }, rowTemplate: { since: "21.2", message: 'Use the "dataRowTemplate" option instead' } }) } static registerModule(name, module) { _m_core.default.registerModule(name, module) } getGridCoreHelper() { return _m_core.default } _getTemplate(templateName) { let template = templateName; if ((0, _type.isString)(template) && template.startsWith("#")) { template = (0, _renderer.default)(templateName); _console.logger.warn("Specifying grid templates with the jQuery selector name is now deprecated. Use the DOM Node or the jQuery object that references this selector instead.") } return super._getTemplate(template) } focus(element) { this.getController("keyboardNavigation").focus(element) } }(0, _component_registrator.default)("dxDataGrid", DataGrid); exports.default = DataGrid }, 32048: /*!**********************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/data_grid/module_not_extended/adaptivity.js ***! \**********************************************************************************************************/ function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { var _m_adaptivity = __webpack_require__( /*! ../../../grids/grid_core/adaptivity/m_adaptivity */ 8468); var _m_core = (e = __webpack_require__( /*! ../m_core */ 54353), e && e.__esModule ? e : { default: e }); var e; _m_core.default.registerModule("adaptivity", _m_adaptivity.adaptivityModule) }, 45573: /*!**************************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/data_grid/module_not_extended/column_chooser.js ***! \**************************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.ColumnChooserView = exports.ColumnChooserController = void 0; var _m_column_chooser = __webpack_require__( /*! ../../../grids/grid_core/column_chooser/m_column_chooser */ 69862); var _m_core = (e = __webpack_require__( /*! ../m_core */ 54353), e && e.__esModule ? e : { default: e }); var e; exports.ColumnChooserController = _m_column_chooser.columnChooserModule.controllers.columnChooser; exports.ColumnChooserView = _m_column_chooser.columnChooserModule.views.columnChooserView; _m_core.default.registerModule("columnChooser", _m_column_chooser.columnChooserModule) }, 94851: /*!*************************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/data_grid/module_not_extended/column_fixing.js ***! \*************************************************************************************************************/ function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { var _m_column_fixing = __webpack_require__( /*! ../../../grids/grid_core/column_fixing/m_column_fixing */ 54704); var _m_core = (e = __webpack_require__( /*! ../m_core */ 54353), e && e.__esModule ? e : { default: e }); var e; _m_core.default.registerModule("columnFixing", _m_column_fixing.columnFixingModule) }, 774: /*!**************************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/data_grid/module_not_extended/column_headers.js ***! \**************************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.ColumnHeadersView = void 0; var _m_column_headers = __webpack_require__( /*! ../../../grids/grid_core/column_headers/m_column_headers */ 88568); var _m_core = (e = __webpack_require__( /*! ../m_core */ 54353), e && e.__esModule ? e : { default: e }); var e; exports.ColumnHeadersView = _m_column_headers.columnHeadersModule.views.columnHeadersView; _m_core.default.registerModule("columnHeaders", _m_column_headers.columnHeadersModule) }, 65040: /*!***************************************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/data_grid/module_not_extended/columns_resizing_reordering.js ***! \***************************************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = exports.TrackerView = exports.TablePositionViewController = exports.DraggingHeaderViewController = exports.DraggingHeaderView = exports.ColumnsSeparatorView = exports.ColumnsResizerViewController = void 0; var _m_columns_resizing_reordering = __webpack_require__( /*! ../../../grids/grid_core/columns_resizing_reordering/m_columns_resizing_reordering */ 19448); var _m_core = (e = __webpack_require__( /*! ../m_core */ 54353), e && e.__esModule ? e : { default: e }); var e; const DraggingHeaderView = exports.DraggingHeaderView = _m_columns_resizing_reordering.columnsResizingReorderingModule.views.draggingHeaderView; const DraggingHeaderViewController = exports.DraggingHeaderViewController = _m_columns_resizing_reordering.columnsResizingReorderingModule.controllers.draggingHeader; const ColumnsSeparatorView = exports.ColumnsSeparatorView = _m_columns_resizing_reordering.columnsResizingReorderingModule.views.columnsSeparatorView; const TablePositionViewController = exports.TablePositionViewController = _m_columns_resizing_reordering.columnsResizingReorderingModule.controllers.tablePosition; const ColumnsResizerViewController = exports.ColumnsResizerViewController = _m_columns_resizing_reordering.columnsResizingReorderingModule.controllers.columnsResizer; const TrackerView = exports.TrackerView = _m_columns_resizing_reordering.columnsResizingReorderingModule.views.trackerView; _m_core.default.registerModule("columnsResizingReordering", _m_columns_resizing_reordering.columnsResizingReorderingModule); exports.default = { DraggingHeaderView: DraggingHeaderView, DraggingHeaderViewController: DraggingHeaderViewController, ColumnsSeparatorView: ColumnsSeparatorView, TablePositionViewController: TablePositionViewController, ColumnsResizerViewController: ColumnsResizerViewController, TrackerView: TrackerView } }, 98094: /*!************************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/data_grid/module_not_extended/context_menu.js ***! \************************************************************************************************************/ function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { var _m_context_menu = __webpack_require__( /*! ../../../grids/grid_core/context_menu/m_context_menu */ 73680); var _m_core = (e = __webpack_require__( /*! ../m_core */ 54353), e && e.__esModule ? e : { default: e }); var e; _m_core.default.registerModule("contextMenu", _m_context_menu.contextMenuModule) }, 36224: /*!******************************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/data_grid/module_not_extended/editing_cell_based.js ***! \******************************************************************************************************************/ function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { var _m_editing_cell_based = __webpack_require__( /*! ../../../grids/grid_core/editing/m_editing_cell_based */ 48295); var _m_core = (e = __webpack_require__( /*! ../m_core */ 54353), e && e.__esModule ? e : { default: e }); var e; _m_core.default.registerModule("editingCellBased", _m_editing_cell_based.editingCellBasedModule) }, 23002: /*!******************************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/data_grid/module_not_extended/editing_form_based.js ***! \******************************************************************************************************************/ function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { var _m_editing_form_based = __webpack_require__( /*! ../../../grids/grid_core/editing/m_editing_form_based */ 29657); var _m_core = (e = __webpack_require__( /*! ../m_core */ 54353), e && e.__esModule ? e : { default: e }); var e; _m_core.default.registerModule("editingFormBased", _m_editing_form_based.editingFormBasedModule) }, 93426: /*!*****************************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/data_grid/module_not_extended/editing_row_based.js ***! \*****************************************************************************************************************/ function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { var _m_editing_row_based = __webpack_require__( /*! ../../../grids/grid_core/editing/m_editing_row_based */ 56671); var _m_core = (e = __webpack_require__( /*! ../m_core */ 54353), e && e.__esModule ? e : { default: e }); var e; _m_core.default.registerModule("editingRowBased", _m_editing_row_based.editingRowBasedModule) }, 9521: /*!**************************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/data_grid/module_not_extended/editor_factory.js ***! \**************************************************************************************************************/ function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { var _m_editor_factory = __webpack_require__( /*! ../../../grids/grid_core/editor_factory/m_editor_factory */ 77862); var _m_core = (e = __webpack_require__( /*! ../m_core */ 54353), e && e.__esModule ? e : { default: e }); var e; _m_core.default.registerModule("editorFactory", _m_editor_factory.editorFactoryModule) }, 99763: /*!**************************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/data_grid/module_not_extended/error_handling.js ***! \**************************************************************************************************************/ function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { var _m_error_handling = __webpack_require__( /*! ../../../grids/grid_core/error_handling/m_error_handling */ 82358); var _m_core = (e = __webpack_require__( /*! ../m_core */ 54353), e && e.__esModule ? e : { default: e }); var e; _m_core.default.registerModule("errorHandling", _m_error_handling.errorHandlingModule) }, 11215: /*!**************************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/data_grid/module_not_extended/filter_builder.js ***! \**************************************************************************************************************/ function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { var _m_filter_builder = __webpack_require__( /*! ../../../grids/grid_core/filter/m_filter_builder */ 65382); var _m_core = (e = __webpack_require__( /*! ../m_core */ 54353), e && e.__esModule ? e : { default: e }); var e; _m_core.default.registerModule("filterBuilder", _m_filter_builder.filterBuilderModule) }, 8030: /*!************************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/data_grid/module_not_extended/filter_panel.js ***! \************************************************************************************************************/ function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { var _m_filter_panel = __webpack_require__( /*! ../../../grids/grid_core/filter/m_filter_panel */ 17887); var _m_core = (e = __webpack_require__( /*! ../m_core */ 54353), e && e.__esModule ? e : { default: e }); var e; _m_core.default.registerModule("filterPanel", _m_filter_panel.filterPanelModule) }, 23808: /*!**********************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/data_grid/module_not_extended/filter_row.js ***! \**********************************************************************************************************/ function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { var _m_filter_row = __webpack_require__( /*! ../../../grids/grid_core/filter/m_filter_row */ 62289); var _m_core = (e = __webpack_require__( /*! ../m_core */ 54353), e && e.__esModule ? e : { default: e }); var e; _m_core.default.registerModule("filterRow", _m_filter_row.filterRowModule) }, 15277: /*!***********************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/data_grid/module_not_extended/filter_sync.js ***! \***********************************************************************************************************/ function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { var _m_filter_sync = __webpack_require__( /*! ../../../grids/grid_core/filter/m_filter_sync */ 78746); var _m_core = (e = __webpack_require__( /*! ../m_core */ 54353), e && e.__esModule ? e : { default: e }); var e; _m_core.default.registerModule("filterSync", _m_filter_sync.filterSyncModule) }, 47513: /*!*********************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/data_grid/module_not_extended/grid_view.js ***! \*********************************************************************************************************/ function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { var _m_grid_view = __webpack_require__( /*! ../../../grids/grid_core/views/m_grid_view */ 33706); var _m_core = (e = __webpack_require__( /*! ../m_core */ 54353), e && e.__esModule ? e : { default: e }); var e; _m_core.default.registerModule("gridView", _m_grid_view.gridViewModule) }, 39525: /*!*************************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/data_grid/module_not_extended/header_filter.js ***! \*************************************************************************************************************/ function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { var _m_header_filter = __webpack_require__( /*! ../../../grids/grid_core/header_filter/m_header_filter */ 69952); var _m_core = (e = __webpack_require__( /*! ../m_core */ 54353), e && e.__esModule ? e : { default: e }); var e; _m_core.default.registerModule("headerFilter", _m_header_filter.headerFilterModule) }, 47641: /*!************************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/data_grid/module_not_extended/header_panel.js ***! \************************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.HeaderPanel = void 0; var _m_header_panel = __webpack_require__( /*! ../../../grids/grid_core/header_panel/m_header_panel */ 5542); var _m_core = (e = __webpack_require__( /*! ../m_core */ 54353), e && e.__esModule ? e : { default: e }); var e; exports.HeaderPanel = _m_header_panel.headerPanelModule.views.headerPanel; _m_core.default.registerModule("headerPanel", _m_header_panel.headerPanelModule) }, 97209: /*!*******************************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/data_grid/module_not_extended/keyboard_navigation.js ***! \*******************************************************************************************************************/ function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { var _m_keyboard_navigation = __webpack_require__( /*! ../../../grids/grid_core/keyboard_navigation/m_keyboard_navigation */ 4628); var _m_core = (e = __webpack_require__( /*! ../m_core */ 54353), e && e.__esModule ? e : { default: e }); var e; _m_core.default.registerModule("keyboardNavigation", _m_keyboard_navigation.keyboardNavigationModule) }, 50255: /*!*************************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/data_grid/module_not_extended/master_detail.js ***! \*************************************************************************************************************/ function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { var _m_master_detail = __webpack_require__( /*! ../../../grids/grid_core/master_detail/m_master_detail */ 11052); var _m_core = (e = __webpack_require__( /*! ../m_core */ 54353), e && e.__esModule ? e : { default: e }); var e; _m_core.default.registerModule("masterDetail", _m_master_detail.masterDetailModule) }, 10150: /*!*****************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/data_grid/module_not_extended/pager.js ***! \*****************************************************************************************************/ function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { var _m_pager = __webpack_require__( /*! ../../../grids/grid_core/pager/m_pager */ 66040); var _m_core = (e = __webpack_require__( /*! ../m_core */ 54353), e && e.__esModule ? e : { default: e }); var e; _m_core.default.registerModule("pager", _m_pager.pagerModule) }, 22949: /*!************************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/data_grid/module_not_extended/row_dragging.js ***! \************************************************************************************************************/ function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { var _m_row_dragging = __webpack_require__( /*! ../../../grids/grid_core/row_dragging/m_row_dragging */ 52714); var _m_core = (e = __webpack_require__( /*! ../m_core */ 54353), e && e.__esModule ? e : { default: e }); var e; _m_core.default.registerModule("rowDragging", _m_row_dragging.rowDraggingModule) }, 57008: /*!****************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/data_grid/module_not_extended/rows.js ***! \****************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.RowsView = void 0; var _m_rows_view = __webpack_require__( /*! ../../../grids/grid_core/views/m_rows_view */ 77081); var _m_core = (e = __webpack_require__( /*! ../m_core */ 54353), e && e.__esModule ? e : { default: e }); var e; exports.RowsView = _m_rows_view.rowsModule.views.rowsView; _m_core.default.registerModule("rows", _m_rows_view.rowsModule) }, 1881: /*!******************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/data_grid/module_not_extended/search.js ***! \******************************************************************************************************/ function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { var _m_search = __webpack_require__( /*! ../../../grids/grid_core/search/m_search */ 7370); var _m_core = (e = __webpack_require__( /*! ../m_core */ 54353), e && e.__esModule ? e : { default: e }); var e; _m_core.default.registerModule("search", _m_search.searchModule) }, 79495: /*!*********************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/data_grid/module_not_extended/selection.js ***! \*********************************************************************************************************/ function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { var _m_selection = __webpack_require__( /*! ../../../grids/grid_core/selection/m_selection */ 1620); var _m_core = (e = __webpack_require__( /*! ../m_core */ 54353), e && e.__esModule ? e : { default: e }); var e; _m_core.default.registerModule("selection", _m_selection.selectionModule) }, 58261: /*!*******************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/data_grid/module_not_extended/sorting.js ***! \*******************************************************************************************************/ function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { var _m_sorting = __webpack_require__( /*! ../../../grids/grid_core/sorting/m_sorting */ 8036); var _m_core = (e = __webpack_require__( /*! ../m_core */ 54353), e && e.__esModule ? e : { default: e }); var e; _m_core.default.registerModule("sorting", _m_sorting.sortingModule) }, 15241: /*!*************************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/data_grid/module_not_extended/state_storing.js ***! \*************************************************************************************************************/ function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { var _m_state_storing = __webpack_require__( /*! ../../../grids/grid_core/state_storing/m_state_storing */ 87960); var _m_core = (e = __webpack_require__( /*! ../m_core */ 54353), e && e.__esModule ? e : { default: e }); var e; _m_core.default.registerModule("stateStoring", _m_state_storing.stateStoringModule) }, 22382: /*!**************************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/data_grid/module_not_extended/sticky_columns.js ***! \**************************************************************************************************************/ function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { var _m_sticky_columns = __webpack_require__( /*! ../../../grids/grid_core/sticky_columns/m_sticky_columns */ 67624); var _m_core = (e = __webpack_require__( /*! ../m_core */ 54353), e && e.__esModule ? e : { default: e }); var e; _m_core.default.registerModule("stickyColumns", _m_sticky_columns.stickyColumnsModule) }, 59352: /*!**********************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/data_grid/module_not_extended/validating.js ***! \**********************************************************************************************************/ function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { var _m_validating = __webpack_require__( /*! ../../../grids/grid_core/validating/m_validating */ 52932); var _m_core = (e = __webpack_require__( /*! ../m_core */ 54353), e && e.__esModule ? e : { default: e }); var e; _m_core.default.registerModule("validating", _m_validating.validatingModule) }, 85646: /*!***************************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/data_grid/module_not_extended/virtual_columns.js ***! \***************************************************************************************************************/ function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { var _m_virtual_columns = __webpack_require__( /*! ../../../grids/grid_core/virtual_columns/m_virtual_columns */ 74280); var _m_core = (e = __webpack_require__( /*! ../m_core */ 54353), e && e.__esModule ? e : { default: e }); var e; _m_core.default.registerModule("virtualColumns", _m_virtual_columns.virtualColumnsModule) }, 1978: /*!*****************************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/data_grid/module_not_extended/virtual_scrolling.js ***! \*****************************************************************************************************************/ function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { var _m_virtual_scrolling = __webpack_require__( /*! ../../../grids/grid_core/virtual_scrolling/m_virtual_scrolling */ 21640); var _m_core = _interopRequireDefault(__webpack_require__( /*! ../m_core */ 54353)); var _m_data_source_adapter = _interopRequireDefault(__webpack_require__( /*! ../m_data_source_adapter */ 72208)); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } _m_core.default.registerModule("virtualScrolling", _m_virtual_scrolling.virtualScrollingModule); _m_data_source_adapter.default.extend(_m_virtual_scrolling.dataSourceAdapterExtender) }, 8691: /*!*********************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/data_grid/summary/m_summary.js ***! \*********************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.renderSummaryCell = exports.FooterView = void 0; var _message = _interopRequireDefault(__webpack_require__( /*! ../../../../common/core/localization/message */ 4671)); var _query = _interopRequireDefault(__webpack_require__( /*! ../../../../common/data/query */ 30771)); var _store_helper = _interopRequireDefault(__webpack_require__( /*! ../../../../common/data/store_helper */ 66177)); var _utils = __webpack_require__( /*! ../../../../common/data/utils */ 89358); var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../../../core/renderer */ 64553)); var _common = __webpack_require__( /*! ../../../../core/utils/common */ 17781); var _data = __webpack_require__( /*! ../../../../core/utils/data */ 31e3); var _extend = __webpack_require__( /*! ../../../../core/utils/extend */ 52576); var _iterator = __webpack_require__( /*! ../../../../core/utils/iterator */ 21274); var _type = __webpack_require__( /*! ../../../../core/utils/type */ 11528); var _ui = _interopRequireDefault(__webpack_require__( /*! ../../../../ui/widget/ui.errors */ 35185)); var _m_columns_view = __webpack_require__( /*! ../../../grids/grid_core/views/m_columns_view */ 48921); var _m_aggregate_calculator = _interopRequireDefault(__webpack_require__( /*! ../m_aggregate_calculator */ 89430)); var _m_core = _interopRequireDefault(__webpack_require__( /*! ../m_core */ 54353)); var _m_data_source_adapter = _interopRequireDefault(__webpack_require__( /*! ../m_data_source_adapter */ 72208)); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } const renderSummaryCell = function(cell, options) { const $cell = (0, _renderer.default)(cell); const { column: column } = options; const { summaryItems: summaryItems } = options; const $summaryItems = []; if (!column.command && summaryItems) { for (let i = 0; i < summaryItems.length; i++) { const summaryItem = summaryItems[i]; const text = _m_core.default.getSummaryText(summaryItem, options.summaryTexts); $summaryItems.push((0, _renderer.default)("
").css("textAlign", summaryItem.alignment || column.alignment).addClass("dx-datagrid-summary-item").addClass("dx-datagrid-text-content").addClass(summaryItem.cssClass).toggleClass("dx-datagrid-group-text-content", "group" === options.rowType).text(text).attr("aria-label", `${column.caption} ${text}`)) } $cell.append($summaryItems) } }; exports.renderSummaryCell = renderSummaryCell; const getSummaryCellOptions = function(that, options) { const summaryTexts = that.option("summary.texts") || {}; return { totalItem: options.row, summaryItems: options.row.summaryCells[options.columnIndex], summaryTexts: summaryTexts } }; const getGroupAggregates = function(data) { return data.summary || data.aggregates || [] }; const recalculateWhileEditing = function(that) { return that.option("summary.recalculateWhileEditing") }; const forEachGroup = function(groups, groupCount, callback, path) { path = path || []; for (let i = 0; i < groups.length; i++) { path.push(groups[i].key); if (1 === groupCount) { callback(path, groups[i].items) } else { forEachGroup(groups[i].items, groupCount - 1, callback, path) } path.pop() } }; const applyAddedData = function(data, insertedData, groupLevel) { if (groupLevel) { return applyAddedData(data, insertedData.map((item => ({ items: [item] })), groupLevel - 1)) } return data.concat(insertedData) }; const applyRemovedData = function(data, removedData, groupLevel) { if (groupLevel) { return data.map((data => { const updatedData = {}; const updatedItems = applyRemovedData(data.items || [], removedData, groupLevel - 1); Object.defineProperty(updatedData, "aggregates", { get: () => data.aggregates, set: value => { data.aggregates = value } }); return (0, _extend.extend)(updatedData, data, { items: updatedItems }) })) } return data.filter((data => removedData.indexOf(data) < 0)) }; const sortGroupsBySummaryCore = function(items, groups, sortByGroups) { if (!items || !groups.length) { return items } const group = groups[0]; const sorts = sortByGroups[0]; let query; if (group && sorts && sorts.length) { query = (0, _query.default)(items); (0, _iterator.each)(sorts, (function(index) { if (0 === index) { query = query.sortBy(this.selector, this.desc) } else { query = query.thenBy(this.selector, this.desc) } })); query.enumerate().done((sortedItems => { items = sortedItems })) } groups = groups.slice(1); sortByGroups = sortByGroups.slice(1); if (groups.length && sortByGroups.length) { (0, _iterator.each)(items, (function() { this.items = sortGroupsBySummaryCore(this.items, groups, sortByGroups) })) } return items }; const sortGroupsBySummary = function(data, group, summary) { const sortByGroups = summary && summary.sortByGroups && summary.sortByGroups(); if (sortByGroups && sortByGroups.length) { return sortGroupsBySummaryCore(data, group, sortByGroups) } return data }; const calculateAggregates = function(that, summary, data, groupLevel) { let calculator; if (recalculateWhileEditing(that)) { const editingController = that._editingController; if (editingController) { const insertedData = editingController.getInsertedData(); if (insertedData.length) { data = applyAddedData(data, insertedData, groupLevel) } const removedData = editingController.getRemovedData(); if (removedData.length) { data = applyRemovedData(data, removedData, groupLevel) } } } if (summary) { calculator = new _m_aggregate_calculator.default({ totalAggregates: summary.totalAggregates, groupAggregates: summary.groupAggregates, data: data, groupLevel: groupLevel }); calculator.calculate() } return calculator ? calculator.totalAggregates() : [] }; class FooterView extends _m_columns_view.ColumnsView { _getRows() { return this._dataController.footerItems() } _getCellOptions(options) { return (0, _extend.extend)(super._getCellOptions(options), getSummaryCellOptions(this, options)) } _renderCellContent($cell, options) { renderSummaryCell($cell, options); super._renderCellContent.apply(this, arguments) } _renderCore(change) { let needUpdateScrollLeft = false; const totalItem = this._dataController.footerItems()[0]; if (!change || !change.columnIndices) { this.element().empty().addClass("dx-datagrid-total-footer").toggleClass("dx-datagrid-nowrap", !this.option("wordWrapEnabled")); needUpdateScrollLeft = true } if (totalItem && totalItem.summaryCells && totalItem.summaryCells.length) { this._updateContent(this._renderTable({ change: change }), change); needUpdateScrollLeft && this._updateScrollLeftPosition() } return super._renderCore(change) } _updateContent($newTable, change) { if (change && "update" === change.changeType && change.columnIndices) { return this.waitAsyncTemplates().done((() => { const $row = this.getTableElement().find(".dx-row"); const $newRow = $newTable.find(".dx-row"); this._updateCells($row, $newRow, change.columnIndices[0]) })) } return super._updateContent.apply(this, arguments) } _rowClick(e) { const item = this._dataController.footerItems()[e.rowIndex] || {}; this.executeAction("onRowClick", (0, _extend.extend)({}, e, item)) } _columnOptionChanged(e) { const { optionNames: optionNames } = e; if (e.changeTypes.grouping) { return } if (optionNames.width || optionNames.visibleWidth) { super._columnOptionChanged(e) } } _handleDataChanged(e) { const { changeType: changeType } = e; if ("update" === e.changeType && e.repaintChangesOnly) { if (!e.totalColumnIndices) { this.render() } else if (e.totalColumnIndices.length) { this.render(null, { changeType: "update", columnIndices: [e.totalColumnIndices] }) } } else if ("refresh" === changeType || "append" === changeType || "prepend" === changeType) { this.render() } } _createRow(row) { const $row = super._createRow.apply(this, arguments); if ("totalFooter" === row.rowType) { $row.addClass("dx-footer-row"); $row.addClass("dx-cell-focus-disabled"); $row.attr("tabindex", 0) } return $row } getHeight() { return this.getElementHeight() } isVisible() { return !!this._dataController.footerItems().length } } exports.FooterView = FooterView; _m_data_source_adapter.default.extend((Base => class extends Base { init() { super.init.apply(this, arguments); this._editingController = this.getController("editing"); this._totalAggregates = []; this._summaryGetter = _common.noop } summaryGetter(summaryGetter) { if (!arguments.length) { return this._summaryGetter } if ((0, _type.isFunction)(summaryGetter)) { this._summaryGetter = summaryGetter } } summary(summary) { if (!arguments.length) { return this._summaryGetter() } this._summaryGetter = function() { return summary } } totalAggregates() { return this._totalAggregates } isLastLevelGroupItemsPagingLocal() { const summary = this.summary(); const sortByGroupsInfo = null === summary || void 0 === summary ? void 0 : summary.sortByGroups(); return null === sortByGroupsInfo || void 0 === sortByGroupsInfo ? void 0 : sortByGroupsInfo.length } sortLastLevelGroupItems(items, groups, paths) { const groupedItems = _store_helper.default.multiLevelGroup((0, _query.default)(items), groups).toArray(); let result = []; paths.forEach((path => { forEachGroup(groupedItems, groups.length, ((itemsPath, items) => { if (path.toString() === itemsPath.toString()) { result = result.concat(items) } })) })); return result } _customizeRemoteOperations(options) { const summary = this.summary(); if (summary) { if (options.remoteOperations.summary) { if (!options.isCustomLoading || options.storeLoadOptions.isLoadingAll) { if (options.storeLoadOptions.group) { if (options.remoteOperations.grouping) { options.storeLoadOptions.groupSummary = summary.groupAggregates } else if (summary.groupAggregates.length) { options.remoteOperations.paging = false } } options.storeLoadOptions.totalSummary = summary.totalAggregates } } else if (summary.totalAggregates.length || summary.groupAggregates.length && options.storeLoadOptions.group) { options.remoteOperations.paging = false } } super._customizeRemoteOperations.apply(this, arguments); const cachedExtra = options.cachedData.extra; if (null !== cachedExtra && void 0 !== cachedExtra && cachedExtra.summary && !options.isCustomLoading) { options.storeLoadOptions.totalSummary = void 0 } } _handleDataLoadedCore(options) { const groups = (0, _utils.normalizeSortingInfo)(options.storeLoadOptions.group || options.loadOptions.group || []); const remoteOperations = options.remoteOperations || {}; const summary = this.summaryGetter()(remoteOperations); if (!options.isCustomLoading || options.storeLoadOptions.isLoadingAll) { if (remoteOperations.summary) { if (!remoteOperations.paging && groups.length && summary) { if (!remoteOperations.grouping) { calculateAggregates(this, { groupAggregates: summary.groupAggregates }, options.data, groups.length) } options.data = sortGroupsBySummary(options.data, groups, summary) } } else if (!remoteOperations.paging && summary) { var _options$cachedData; const operationTypes = options.operationTypes || {}; const hasOperations = Object.keys(operationTypes).some((type => operationTypes[type])); if (!hasOperations || !(null !== (_options$cachedData = options.cachedData) && void 0 !== _options$cachedData && null !== (_options$cachedData = _options$cachedData.extra) && void 0 !== _options$cachedData && _options$cachedData.summary) || groups.length && summary.groupAggregates.length) { const totalAggregates = calculateAggregates(this, summary, options.data, groups.length); options.extra = (0, _type.isPlainObject)(options.extra) ? options.extra : {}; options.extra.summary = totalAggregates; if (options.cachedData) { options.cachedData.extra = options.extra } } options.data = sortGroupsBySummary(options.data, groups, summary) } } if (!options.isCustomLoading) { this._totalAggregates = options.extra && options.extra.summary || this._totalAggregates } super._handleDataLoadedCore(options) } })); _m_core.default.registerModule("summary", { defaultOptions: () => ({ summary: { groupItems: void 0, totalItems: void 0, calculateCustomSummary: void 0, skipEmptyValues: true, recalculateWhileEditing: false, texts: { sum: _message.default.format("dxDataGrid-summarySum"), sumOtherColumn: _message.default.format("dxDataGrid-summarySumOtherColumn"), min: _message.default.format("dxDataGrid-summaryMin"), minOtherColumn: _message.default.format("dxDataGrid-summaryMinOtherColumn"), max: _message.default.format("dxDataGrid-summaryMax"), maxOtherColumn: _message.default.format("dxDataGrid-summaryMaxOtherColumn"), avg: _message.default.format("dxDataGrid-summaryAvg"), avgOtherColumn: _message.default.format("dxDataGrid-summaryAvgOtherColumn"), count: _message.default.format("dxDataGrid-summaryCount") } }, sortByGroupSummaryInfo: void 0 }), views: { footerView: FooterView }, extenders: { controllers: { data: Base => class extends Base { _isDataColumn(column) { return column && (!(0, _type.isDefined)(column.groupIndex) || column.showWhenGrouped) } _isGroupFooterVisible() { const groupItems = this.option("summary.groupItems") || []; for (let i = 0; i < groupItems.length; i++) { const groupItem = groupItems[i]; const column = this._columnsController.columnOption(groupItem.showInColumn || groupItem.column); if (groupItem.showInGroupFooter && this._isDataColumn(column)) { return true } } return false } _processGroupItems(items, groupCount, options) { const data = options && options.data; const result = super._processGroupItems.apply(this, arguments); if (options) { if (void 0 === options.isGroupFooterVisible) { options.isGroupFooterVisible = this._isGroupFooterVisible() } if (data && data.items && options.isGroupFooterVisible && (options.collectContinuationItems || !data.isContinuationOnNextPage)) { result.push({ rowType: "groupFooter", key: options.path.slice(), data: data, groupIndex: options.path.length - 1, values: [] }) } } return result } _processGroupItem(groupItem, options) { const that = this; if (!options.summaryGroupItems) { options.summaryGroupItems = that.option("summary.groupItems") || [] } if ("group" === groupItem.rowType) { let groupColumnIndex = -1; let afterGroupColumnIndex = -1; (0, _iterator.each)(options.visibleColumns, (function(visibleIndex) { const prevColumn = options.visibleColumns[visibleIndex - 1]; if (groupItem.groupIndex === this.groupIndex) { groupColumnIndex = this.index } if (visibleIndex > 0 && "expand" === prevColumn.command && "expand" !== this.command) { afterGroupColumnIndex = this.index } })); groupItem.summaryCells = this._calculateSummaryCells(options.summaryGroupItems, getGroupAggregates(groupItem.data), options.visibleColumns, ((summaryItem, column) => { if (summaryItem.showInGroupFooter) { return -1 } if (summaryItem.alignByColumn && column && !(0, _type.isDefined)(column.groupIndex) && column.index !== afterGroupColumnIndex) { return column.index } return groupColumnIndex }), true) } if ("groupFooter" === groupItem.rowType) { groupItem.summaryCells = this._calculateSummaryCells(options.summaryGroupItems, getGroupAggregates(groupItem.data), options.visibleColumns, ((summaryItem, column) => summaryItem.showInGroupFooter && that._isDataColumn(column) ? column.index : -1)) } return groupItem } _calculateSummaryCells(summaryItems, aggregates, visibleColumns, calculateTargetColumnIndex, isGroupRow) { const that = this; const summaryCells = []; const summaryCellsByColumns = {}; (0, _iterator.each)(summaryItems, ((summaryIndex, summaryItem) => { const column = that._columnsController.columnOption(summaryItem.column); const showInColumn = summaryItem.showInColumn && that._columnsController.columnOption(summaryItem.showInColumn) || column; const columnIndex = calculateTargetColumnIndex(summaryItem, showInColumn); if (columnIndex >= 0) { if (!summaryCellsByColumns[columnIndex]) { summaryCellsByColumns[columnIndex] = [] } const aggregate = aggregates[summaryIndex]; if (aggregate === aggregate) { let valueFormat; if ((0, _type.isDefined)(summaryItem.valueFormat)) { valueFormat = summaryItem.valueFormat } else if ("count" !== summaryItem.summaryType) { valueFormat = _m_core.default.getFormatByDataType(column && column.dataType) } summaryCellsByColumns[columnIndex].push((0, _extend.extend)({}, summaryItem, { value: (0, _type.isString)(aggregate) && column && column.deserializeValue ? column.deserializeValue(aggregate) : aggregate, valueFormat: valueFormat, columnCaption: column && column.index !== columnIndex ? column.caption : void 0 })) } } })); if (!(0, _type.isEmptyObject)(summaryCellsByColumns)) { visibleColumns.forEach(((column, visibleIndex) => { const prevColumn = visibleColumns[visibleIndex - 1]; const columnIndex = isGroupRow && ("expand" === (null === prevColumn || void 0 === prevColumn ? void 0 : prevColumn.command) || "expand" === column.command) ? null === prevColumn || void 0 === prevColumn ? void 0 : prevColumn.index : column.index; summaryCells.push(summaryCellsByColumns[columnIndex] || []) })) } return summaryCells } _getSummaryCells(summaryTotalItems, totalAggregates) { const that = this; const columnsController = that._columnsController; return that._calculateSummaryCells(summaryTotalItems, totalAggregates, columnsController.getVisibleColumns(), ((summaryItem, column) => that._isDataColumn(column) ? column.index : -1)) } _updateItemsCore(change) { const that = this; let summaryCells; const dataSource = that._dataSource; const footerItems = that._footerItems; const oldSummaryCells = footerItems && footerItems[0] && footerItems[0].summaryCells; const summaryTotalItems = that.option("summary.totalItems"); that._footerItems = []; if (dataSource && summaryTotalItems && summaryTotalItems.length) { const totalAggregates = dataSource.totalAggregates(); summaryCells = that._getSummaryCells(summaryTotalItems, totalAggregates); if (change && change.repaintChangesOnly && oldSummaryCells) { change.totalColumnIndices = summaryCells.map(((summaryCell, index) => { if (JSON.stringify(summaryCell) !== JSON.stringify(oldSummaryCells[index])) { return index } return -1 })).filter((index => index >= 0)) } if (summaryCells.length) { that._footerItems.push({ rowType: "totalFooter", summaryCells: summaryCells }) } } super._updateItemsCore(change) } _prepareUnsavedDataSelector(selector) { if (recalculateWhileEditing(this)) { const editingController = this._editingController; if (editingController) { return function(data) { data = editingController.getUpdatedData(data); return selector(data) } } } return selector } _prepareAggregateSelector(selector, aggregator) { selector = this._prepareUnsavedDataSelector(selector); if ("avg" === aggregator || "sum" === aggregator) { return function(data) { const value = selector(data); return (0, _type.isDefined)(value) ? Number(value) : value } } return selector } _getAggregates(summaryItems, remoteOperations) { const that = this; let calculateCustomSummary = that.option("summary.calculateCustomSummary"); const commonSkipEmptyValues = that.option("summary.skipEmptyValues"); return (0, _iterator.map)(summaryItems || [], (summaryItem => { const column = this._columnsController.columnOption(summaryItem.column); const calculateCellValue = column && column.calculateCellValue ? column.calculateCellValue.bind(column) : (0, _data.compileGetter)(column ? column.dataField : summaryItem.column); let aggregator = summaryItem.summaryType || "count"; const skipEmptyValues = (0, _type.isDefined)(summaryItem.skipEmptyValues) ? summaryItem.skipEmptyValues : commonSkipEmptyValues; if (remoteOperations) { return { selector: summaryItem.column, summaryType: aggregator } } const selector = that._prepareAggregateSelector(calculateCellValue, aggregator); if ("custom" === aggregator) { if (!calculateCustomSummary) { _ui.default.log("E1026"); calculateCustomSummary = function() {} } const options = { component: that.component, name: summaryItem.name }; calculateCustomSummary(options); options.summaryProcess = "calculate"; aggregator = { seed(groupIndex) { options.summaryProcess = "start"; options.totalValue = void 0; options.groupIndex = groupIndex; delete options.value; calculateCustomSummary(options); return options.totalValue }, step(totalValue, value) { options.summaryProcess = "calculate"; options.totalValue = totalValue; options.value = value; calculateCustomSummary(options); return options.totalValue }, finalize(totalValue) { options.summaryProcess = "finalize"; options.totalValue = totalValue; delete options.value; calculateCustomSummary(options); return options.totalValue } } } return { selector: selector, aggregator: aggregator, skipEmptyValues: skipEmptyValues } })) } _addSortInfo(sortByGroups, groupColumn, selector, sortOrder) { if (groupColumn) { const { groupIndex: groupIndex } = groupColumn; sortOrder = sortOrder || groupColumn.sortOrder; if ((0, _type.isDefined)(groupIndex)) { sortByGroups[groupIndex] = sortByGroups[groupIndex] || []; sortByGroups[groupIndex].push({ selector: selector, desc: "desc" === sortOrder }) } } } _findSummaryItem(summaryItems, name) { let summaryItemIndex = -1; if ((0, _type.isDefined)(name)) { (0, _iterator.each)(summaryItems || [], (function(index) { if (this.name === name || index === name || this.summaryType === name || this.column === name || function(summaryItem) { const { summaryType: summaryType } = summaryItem; const { column: column } = summaryItem; return summaryType && column && `${summaryType}_${column}` }(this) === name) { summaryItemIndex = index; return false } })) } return summaryItemIndex } _getSummarySortByGroups(sortByGroupSummaryInfo, groupSummaryItems) { const that = this; const columnsController = that._columnsController; const groupColumns = columnsController.getGroupColumns(); const sortByGroups = []; if (!groupSummaryItems || !groupSummaryItems.length) { return }(0, _iterator.each)(sortByGroupSummaryInfo || [], (function() { const { sortOrder: sortOrder } = this; let { groupColumn: groupColumn } = this; const summaryItemIndex = that._findSummaryItem(groupSummaryItems, this.summaryItem); if (summaryItemIndex < 0) { return } const selector = function(data) { return getGroupAggregates(data)[summaryItemIndex] }; if ((0, _type.isDefined)(groupColumn)) { groupColumn = columnsController.columnOption(groupColumn); that._addSortInfo(sortByGroups, groupColumn, selector, sortOrder) } else { (0, _iterator.each)(groupColumns, ((groupIndex, groupColumn) => { that._addSortInfo(sortByGroups, groupColumn, selector, sortOrder) })) } })); return sortByGroups } _createDataSourceAdapterCore(dataSource, remoteOperations) { const that = this; const dataSourceAdapter = super._createDataSourceAdapterCore(dataSource, remoteOperations); dataSourceAdapter.summaryGetter((currentRemoteOperations => that._getSummaryOptions(currentRemoteOperations || remoteOperations))); return dataSourceAdapter } _getSummaryOptions(remoteOperations) { const that = this; const groupSummaryItems = that.option("summary.groupItems"); const totalSummaryItems = that.option("summary.totalItems"); const sortByGroupSummaryInfo = that.option("sortByGroupSummaryInfo"); const groupAggregates = that._getAggregates(groupSummaryItems, remoteOperations && remoteOperations.grouping && remoteOperations.summary); const totalAggregates = that._getAggregates(totalSummaryItems, remoteOperations && remoteOperations.summary); const sortByGroups = function() { return that._getSummarySortByGroups(sortByGroupSummaryInfo, groupSummaryItems) }; if (groupAggregates.length || totalAggregates.length) { return { groupAggregates: groupAggregates, totalAggregates: totalAggregates, sortByGroups: sortByGroups } } return } publicMethods() { const methods = super.publicMethods(); methods.push("getTotalSummaryValue"); return methods } getTotalSummaryValue(summaryItemName) { const summaryItemIndex = this._findSummaryItem(this.option("summary.totalItems"), summaryItemName); const aggregates = this._dataSource.totalAggregates(); if (aggregates.length && summaryItemIndex > -1) { return aggregates[summaryItemIndex] } } optionChanged(args) { if ("summary" === args.name || "sortByGroupSummaryInfo" === args.name) { args.name = "dataSource" } super.optionChanged(args) } init() { this._footerItems = []; super.init() } footerItems() { return this._footerItems } }, editing: Base => class extends Base { _refreshSummary() { if (recalculateWhileEditing(this) && !this.isSaving()) { this._dataController.refresh({ load: true, changesOnly: true }) } } _addChange(params) { const result = super._addChange.apply(this, arguments); if (params.type) { this._refreshSummary() } return result } _removeChange() { const result = super._removeChange.apply(this, arguments); this._refreshSummary(); return result } cancelEditData() { const result = super.cancelEditData.apply(this, arguments); this._refreshSummary(); return result } } }, views: { rowsView: Base => class extends Base { _createRow(row) { const $row = super._createRow.apply(this, arguments); row && $row.addClass("groupFooter" === row.rowType ? "dx-datagrid-group-footer" : ""); return $row } _renderCells($row, options) { super._renderCells.apply(this, arguments); if ("group" === options.row.rowType && options.row.summaryCells && options.row.summaryCells.length) { this._renderGroupSummaryCells($row, options) } } _hasAlignByColumnSummaryItems(columnIndex, options) { return !(0, _type.isDefined)(options.columns[columnIndex].groupIndex) && options.row.summaryCells[columnIndex].length } _getAlignByColumnCellCount(groupCellColSpan, options) { let alignByColumnCellCount = 0; for (let i = 1; i < groupCellColSpan; i++) { const columnIndex = options.row.summaryCells.length - i; alignByColumnCellCount = this._hasAlignByColumnSummaryItems(columnIndex, options) ? i : alignByColumnCellCount } return alignByColumnCellCount } _renderGroupSummaryCells($row, options) { const $groupCell = $row.children().last(); const groupCellColSpan = Number($groupCell.attr("colSpan")) || 1; const alignByColumnCellCount = this._getAlignByColumnCellCount(groupCellColSpan, options); this._renderGroupSummaryCellsCore($groupCell, options, groupCellColSpan, alignByColumnCellCount) } _renderGroupSummaryCellsCore($groupCell, options, groupCellColSpan, alignByColumnCellCount) { if (alignByColumnCellCount > 0) { $groupCell.attr("colSpan", groupCellColSpan - alignByColumnCellCount); for (let i = 0; i < alignByColumnCellCount; i++) { const columnIndex = options.columns.length - alignByColumnCellCount + i; this._renderCell($groupCell.parent(), (0, _extend.extend)({ column: options.columns[columnIndex], columnIndex: this._getSummaryCellIndex(columnIndex, options.columns) }, options)) } } } _getSummaryCellIndex(columnIndex, columns) { return columnIndex } _getCellTemplate(options) { if (!options.column.command && !(0, _type.isDefined)(options.column.groupIndex) && options.summaryItems && options.summaryItems.length) { return renderSummaryCell } return super._getCellTemplate(options) } _getCellOptions(options) { const that = this; const parameters = super._getCellOptions(options); if (options.row.summaryCells) { return (0, _extend.extend)(parameters, getSummaryCellOptions(that, options)) } return parameters } } } } }) }, 26854: /*!********************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/grid_core/adaptivity/const.js ***! \********************************************************************************************/ function(__unused_webpack_module, exports) { Object.defineProperty(exports, "__esModule", { value: true }); exports.HIDDEN_COLUMNS_WIDTH = void 0; exports.HIDDEN_COLUMNS_WIDTH = "adaptiveHidden" }, 8468: /*!***************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/grid_core/adaptivity/m_adaptivity.js ***! \***************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.adaptivityModule = exports.AdaptiveColumnsController = void 0; var _click = __webpack_require__( /*! ../../../../common/core/events/click */ 64044); var _events_engine = _interopRequireDefault(__webpack_require__( /*! ../../../../common/core/events/core/events_engine */ 92774)); var _remove = __webpack_require__( /*! ../../../../common/core/events/remove */ 28630); var _index = __webpack_require__( /*! ../../../../common/core/events/utils/index */ 98834); var _message = _interopRequireDefault(__webpack_require__( /*! ../../../../common/core/localization/message */ 4671)); var _guid = _interopRequireDefault(__webpack_require__( /*! ../../../../core/guid */ 19427)); var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../../../core/renderer */ 64553)); var _common = __webpack_require__( /*! ../../../../core/utils/common */ 17781); var _deferred = __webpack_require__( /*! ../../../../core/utils/deferred */ 87739); var _dom = __webpack_require__( /*! ../../../../core/utils/dom */ 86858); var _extend = __webpack_require__( /*! ../../../../core/utils/extend */ 52576); var _iterator = __webpack_require__( /*! ../../../../core/utils/iterator */ 21274); var _size = __webpack_require__( /*! ../../../../core/utils/size */ 57653); var _type = __webpack_require__( /*! ../../../../core/utils/type */ 11528); var _form = _interopRequireDefault(__webpack_require__( /*! ../../../../ui/form */ 74075)); var _themes = __webpack_require__( /*! ../../../../ui/themes */ 52071); var _m_modules = _interopRequireDefault(__webpack_require__( /*! ../m_modules */ 74854)); var _m_utils = _interopRequireDefault(__webpack_require__( /*! ../m_utils */ 53226)); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } const COLUMN_VIEWS = ["columnHeadersView", "rowsView", "footerView"]; function getColumnId(that, column) { return that._columnsController.getColumnId(column) } function adaptiveCellTemplate(container, options) { let $adaptiveColumnButton; const $container = (0, _renderer.default)(container); const adaptiveColumnsController = options.component.getController("adaptiveColumns"); if ("data" === options.rowType) { $adaptiveColumnButton = (0, _renderer.default)("").addClass(adaptiveColumnsController.addWidgetPrefix("adaptive-more")); _events_engine.default.on($adaptiveColumnButton, (0, _index.addNamespace)(_click.name, "dxDataGridAdaptivity"), adaptiveColumnsController.createAction((() => { adaptiveColumnsController.toggleExpandAdaptiveDetailRow(options.key) }))); $adaptiveColumnButton.appendTo($container) } else { _m_utils.default.setEmptyText($container) } } function focusCellHandler(e) { var _e$data; const $nextCell = null === (_e$data = e.data) || void 0 === _e$data ? void 0 : _e$data.$nextCell; _events_engine.default.off($nextCell, "focus", focusCellHandler); _events_engine.default.trigger($nextCell, "dxclick") } class AdaptiveColumnsController extends _m_modules.default.ViewController { init() { this._columnsController = this.getController("columns"); this._dataController = this.getController("data"); this._editingController = this.getController("editing"); this._keyboardNavigationController = this.getController("keyboardNavigation"); this._rowsView = this.getView("rowsView"); this._columnsController.addCommandColumn({ type: "adaptive", command: "adaptive", visible: true, adaptiveHidden: true, cssClass: "dx-command-adaptive", alignment: "center", width: "auto", cellTemplate: adaptiveCellTemplate, fixedPosition: "right" }); this._columnsController.columnsChanged.add((() => { const isAdaptiveVisible = !!this.updateHidingQueue(this._columnsController.getColumns()).length; this._columnsController.columnOption("command:adaptive", "adaptiveHidden", !isAdaptiveVisible, true) })); this._hidingColumnsQueue = []; this._hiddenColumns = []; this.createAction("onAdaptiveDetailRowPreparing"); super.init() } optionChanged(args) { if ("columnHidingEnabled" === args.name) { this._columnsController.columnOption("command:adaptive", "adaptiveHidden", !args.value) } super.optionChanged(args) } publicMethods() { return ["isAdaptiveDetailRowExpanded", "expandAdaptiveDetailRow", "collapseAdaptiveDetailRow"] } _isRowEditMode() { const editMode = this._getEditMode(); return "row" === editMode } _isItemModified(item, cellOptions) { const columnIndex = this._columnsController.getVisibleIndex(item.column.index); const rowIndex = this._dataController.getRowIndexByKey(cellOptions.key); const row = this._dataController.items()[rowIndex + 1]; return row && row.modifiedValues && (0, _type.isDefined)(row.modifiedValues[columnIndex]) } _renderFormViewTemplate(item, cellOptions, $container) { const that = this; const { column: column } = item; const focusAction = that.createAction((() => { if (that._editingController.isEditing()) { _events_engine.default.trigger($container, _click.name) } })); const rowData = cellOptions.row.data; const value = column.calculateCellValue(rowData); const displayValue = _m_utils.default.getDisplayValue(column, value, rowData, cellOptions.rowType); const text = _m_utils.default.formatValue(displayValue, column); const isCellOrBatchEditMode = this._editingController.isCellOrBatchEditMode(); const rowsView = that._rowsView; if (column.allowEditing && this._keyboardNavigationController.isKeyboardEnabled()) { $container.attr("tabIndex", that.option("tabIndex")); if (isCellOrBatchEditMode) { _events_engine.default.off($container, "focus", focusAction); _events_engine.default.on($container, "focus", focusAction) } } if (column.cellTemplate) { const templateOptions = (0, _extend.extend)({}, cellOptions, { value: value, displayValue: displayValue, text: text, column: column }); rowsView.renderTemplate($container, column.cellTemplate, templateOptions, (0, _dom.isElementInDom)($container)).done((() => { rowsView._cellPrepared($container, cellOptions) })) } else { const container = $container.get(0); if (column.encodeHtml) { container.textContent = text } else { container.innerHTML = text } $container.addClass("dx-adaptive-item-text"); if (!(0, _type.isDefined)(text) || "" === text) { $container.html(" ") } if (!that._isRowEditMode()) { if (that._isItemModified(item, cellOptions)) { $container.addClass("dx-item-modified") } } rowsView._cellPrepared($container, cellOptions) } } _getTemplate(item, cellOptions, updateForm) { const that = this; const { column: column } = item; const editingController = this._editingController; return function(options, container) { const $container = (0, _renderer.default)(container); const columnIndex = that._columnsController.getVisibleIndex(column.index); const templateOptions = (0, _extend.extend)({}, cellOptions); const renderFormTemplate = function() { const isItemEdited = that._isItemEdited(item); templateOptions.value = cellOptions.row.values[columnIndex]; if (isItemEdited || column.showEditorAlways) { editingController.renderFormEditorTemplate(templateOptions, item, options, $container, !isItemEdited) } else { templateOptions.column = column; templateOptions.columnIndex = columnIndex; that._renderFormViewTemplate(item, templateOptions, $container) } }; renderFormTemplate(); if (templateOptions.watch) { const dispose = templateOptions.watch((() => ({ isItemEdited: that._isItemEdited(item), value: cellOptions.row.values[columnIndex] })), (() => { $container.contents().remove(); $container.removeClass("dx-adaptive-item-text"); renderFormTemplate() })); _events_engine.default.on($container, _remove.removeEvent, dispose) } } } _isVisibleColumnsValid(visibleColumns) { if (visibleColumns < 2) { return false } if (visibleColumns.length - function() { let result = 0; for (let j = 0; j < visibleColumns.length; j++) { const visibleColumn = visibleColumns[j]; if (visibleColumn.command) { result++ } } return result }() <= 1) { return false } return true } _calculatePercentWidths(widths, visibleColumns) { const that = this; let percentWidths = 0; visibleColumns.forEach(((item, index) => { if ("adaptiveHidden" !== widths[index]) { percentWidths += that._getItemPercentWidth(item) } })); return percentWidths } _isPercentWidth(width) { return (0, _type.isString)(width) && width.endsWith("%") } _isColumnHidden(column) { return this._hiddenColumns.filter((hiddenColumn => hiddenColumn.index === column.index)).length > 0 } _getAverageColumnsWidth(containerWidth, columns, columnsCanFit) { const that = this; let fixedColumnsWidth = 0; let columnsWithoutFixedWidthCount = 0; columns.forEach((column => { if (!that._isColumnHidden(column)) { const { width: width } = column; if ((0, _type.isDefined)(width) && !isNaN(parseFloat(width))) { fixedColumnsWidth += that._isPercentWidth(width) ? that._calculatePercentWidth({ visibleIndex: column.visibleIndex, columnsCount: columns.length, columnsCanFit: columnsCanFit, bestFitWidth: column.bestFitWidth, columnWidth: width, containerWidth: containerWidth }) : parseFloat(width) } else { columnsWithoutFixedWidthCount++ } } })); return (containerWidth - fixedColumnsWidth) / columnsWithoutFixedWidthCount } _calculateColumnWidth(column, containerWidth, contentColumns, columnsCanFit) { const columnId = getColumnId(this, column); const widthOption = this._columnsController.columnOption(columnId, "width"); const bestFitWidth = this._columnsController.columnOption(columnId, "bestFitWidth"); const columnsCount = contentColumns.length; let colWidth; if (widthOption && "auto" !== widthOption) { if (this._isPercentWidth(widthOption)) { colWidth = this._calculatePercentWidth({ visibleIndex: column.visibleIndex, columnsCount: columnsCount, columnsCanFit: columnsCanFit, bestFitWidth: bestFitWidth, columnWidth: widthOption, containerWidth: containerWidth }) } else { return parseFloat(widthOption) } } else { const columnAutoWidth = this.option("columnAutoWidth"); colWidth = columnAutoWidth || !!column.command ? bestFitWidth : this._getAverageColumnsWidth(containerWidth, contentColumns, columnsCanFit) } return colWidth } _calculatePercentWidth(options) { const columnFitted = options.visibleIndex < options.columnsCount - 1 && options.columnsCanFit; const partialWidth = options.containerWidth * parseFloat(options.columnWidth) / 100; const resultWidth = options.columnsCanFit && partialWidth < options.bestFitWidth ? options.bestFitWidth : partialWidth; return columnFitted ? options.containerWidth * parseFloat(options.columnWidth) / 100 : resultWidth } _getNotTruncatedColumnWidth(column, containerWidth, contentColumns, columnsCanFit) { const columnId = getColumnId(this, column); const widthOption = this._columnsController.columnOption(columnId, "width"); const bestFitWidth = this._columnsController.columnOption(columnId, "bestFitWidth"); if (widthOption && "auto" !== widthOption && !this._isPercentWidth(widthOption)) { return parseFloat(widthOption) } const colWidth = this._calculateColumnWidth(column, containerWidth, contentColumns, columnsCanFit); return colWidth < bestFitWidth ? null : colWidth } _getItemPercentWidth(item) { let result = 0; if (item.width && this._isPercentWidth(item.width)) { result = parseFloat(item.width) } return result } _getCommandColumnsWidth() { const that = this; const columns = that._columnsController.getVisibleColumns(); let colWidth = 0; (0, _iterator.each)(columns, ((index, column) => { if (column.index < 0 || column.command) { colWidth += that._columnsController.columnOption(getColumnId(that, column), "bestFitWidth") || 0 } })); return colWidth } _isItemEdited(item) { if (this.isFormOrPopupEditMode()) { return false } if (this._isRowEditMode()) { const editRowKey = this.option("editing.editRowKey"); if ((0, _common.equalByValue)(editRowKey, this._dataController.adaptiveExpandedKey())) { return true } } else { const rowIndex = this._dataController.getRowIndexByKey(this._dataController.adaptiveExpandedKey()) + 1; const columnIndex = this._columnsController.getVisibleIndex(item.column.index); return this._editingController.isEditCell(rowIndex, columnIndex) } return } _getFormItemsByHiddenColumns(hiddenColumns) { const items = []; (0, _iterator.each)(hiddenColumns, ((_, column) => { items.push({ column: column, name: column.name, dataField: column.dataField, visibleIndex: column.visibleIndex }) })); return items } _getAdaptiveColumnVisibleIndex(visibleColumns) { for (let i = 0; i < visibleColumns.length; i++) { const column = visibleColumns[i]; if ("adaptive" === column.command) { return i } } return } _hideAdaptiveColumn(resultWidths, visibleColumns) { const visibleIndex = this._getAdaptiveColumnVisibleIndex(visibleColumns); if ((0, _type.isDefined)(visibleIndex)) { resultWidths[visibleIndex] = "adaptiveHidden"; this._hideVisibleColumn({ isCommandColumn: true, visibleIndex: visibleIndex }) } } _showHiddenCellsInView(_ref) { let { $cells: $cells, isCommandColumn: isCommandColumn } = _ref; let cssClassNameToRemove = this.addWidgetPrefix("hidden-column"); if (isCommandColumn) { cssClassNameToRemove = "dx-command-adaptive-hidden"; $cells.attr({ tabIndex: 0, "aria-hidden": null }).removeClass(cssClassNameToRemove) } else { $cells.removeClass(cssClassNameToRemove) } } _showHiddenColumns() { for (let i = 0; i < COLUMN_VIEWS.length; i++) { const view = this.getView(COLUMN_VIEWS[i]); if (view && view.isVisible() && view.element()) { const viewName = view.name; const $hiddenCommandCells = view.element().find(".dx-command-adaptive-hidden"); this._showHiddenCellsInView({ viewName: viewName, $cells: $hiddenCommandCells, isCommandColumn: true }); const $hiddenCells = view.element().find(`.${this.addWidgetPrefix("hidden-column")}`); this._showHiddenCellsInView({ viewName: viewName, $cells: $hiddenCells }) } } } _isCellValid($cell) { return $cell && $cell.length && !$cell.hasClass("dx-master-detail-cell") && !$cell.hasClass("dx-group-cell") } _hideVisibleColumn(_ref2) { let { isCommandColumn: isCommandColumn, visibleIndex: visibleIndex } = _ref2; const that = this; COLUMN_VIEWS.forEach((viewName => { const view = that.getView(viewName); view && that._hideVisibleColumnInView({ view: view, isCommandColumn: isCommandColumn, visibleIndex: visibleIndex }) })) } _hideVisibleColumnInView(_ref3) { let { view: view, isCommandColumn: isCommandColumn, visibleIndex: visibleIndex } = _ref3; const viewName = view.name; let $cellElement; const column = this._columnsController.getVisibleColumns()[visibleIndex]; const editFormRowIndex = this._editingController && this._editingController.getEditFormRowIndex(); if (view && view.isVisible() && column) { const rowsCount = view.getRowsCount(); const $rowElements = view._getRowElements(); for (let rowIndex = 0; rowIndex < rowsCount; rowIndex++) { const cancelClassAdding = rowIndex === editFormRowIndex && "rowsView" === viewName && "popup" !== this.option("editing.mode"); if (!cancelClassAdding) { const currentVisibleIndex = "columnHeadersView" === viewName ? this._columnsController.getVisibleIndex(column.index, rowIndex) : visibleIndex; if (currentVisibleIndex >= 0) { const $rowElement = $rowElements.eq(rowIndex); $cellElement = this._findCellElementInRow($rowElement, currentVisibleIndex); this._isCellValid($cellElement) && this._hideVisibleCellInView({ viewName: viewName, isCommandColumn: isCommandColumn, $cell: $cellElement }) } } } } } _findCellElementInRow($rowElement, visibleColumnIndex) { const $rowCells = $rowElement.children(); let visibleIndex = visibleColumnIndex; let cellIsInsideGroup = false; if ($rowElement.hasClass("dx-group-row")) { const $groupCell = $rowElement.find(".dx-group-cell"); const colSpan = $groupCell.attr("colspan"); if ($groupCell.length && (0, _type.isDefined)(colSpan)) { const groupCellLength = parseInt(colSpan); const endGroupIndex = $groupCell.index() + groupCellLength - 1; if (visibleColumnIndex > endGroupIndex) { visibleIndex = visibleColumnIndex - groupCellLength + 1 } else { cellIsInsideGroup = true } } } const $cellElement = !cellIsInsideGroup ? $rowCells.eq(visibleIndex) : void 0; return $cellElement } _hideVisibleCellInView(_ref4) { let { $cell: $cell, isCommandColumn: isCommandColumn } = _ref4; const cssClassNameToAdd = isCommandColumn ? "dx-command-adaptive-hidden" : this.addWidgetPrefix("hidden-column"); $cell.attr({ tabIndex: -1, "aria-hidden": true }).addClass(cssClassNameToAdd) } _getEditMode() { return this._editingController.getEditMode() } isFormOrPopupEditMode() { const editMode = this._getEditMode(); return "form" === editMode || "popup" === editMode } hideRedundantColumns(resultWidths, visibleColumns, hiddenQueue) { const that = this; this._hiddenColumns = []; if (that._isVisibleColumnsValid(visibleColumns) && hiddenQueue.length) { let totalWidth = 0; const $rootElement = that.component.$element(); let rootElementWidth = (0, _size.getWidth)($rootElement) - that._getCommandColumnsWidth(); const getVisibleContentColumns = function() { return visibleColumns.filter((item => !item.command && 0 === this._hiddenColumns.filter((i => i.index === item.index)).length)) }.bind(this); let visibleContentColumns = getVisibleContentColumns(); const contentColumnsCount = visibleContentColumns.length; let i; let hasHiddenColumns; let needHideColumn; do { needHideColumn = false; totalWidth = 0; const percentWidths = that._calculatePercentWidths(resultWidths, visibleColumns); const columnsCanFit = percentWidths < 100 && 0 !== percentWidths; for (i = 0; i < visibleColumns.length; i++) { const visibleColumn = visibleColumns[i]; let columnWidth = that._getNotTruncatedColumnWidth(visibleColumn, rootElementWidth, visibleContentColumns, columnsCanFit); const columnId = getColumnId(that, visibleColumn); const widthOption = that._columnsController.columnOption(columnId, "width"); const minWidth = that._columnsController.columnOption(columnId, "minWidth"); const columnBestFitWidth = that._columnsController.columnOption(columnId, "bestFitWidth"); if ("adaptiveHidden" === resultWidths[i]) { hasHiddenColumns = true; continue } if (!columnWidth && !visibleColumn.command && !visibleColumn.fixed) { needHideColumn = true; break } if (!widthOption || "auto" === widthOption) { columnWidth = Math.max(columnBestFitWidth || 0, minWidth || 0) } if ("adaptive" !== visibleColumn.command || hasHiddenColumns) { totalWidth += columnWidth } } needHideColumn = needHideColumn || totalWidth > (0, _size.getWidth)($rootElement); if (needHideColumn) { const column = hiddenQueue.pop(); const visibleIndex = that._columnsController.getVisibleIndex(column.index); rootElementWidth += that._calculateColumnWidth(column, rootElementWidth, visibleContentColumns, columnsCanFit); that._hideVisibleColumn({ visibleIndex: visibleIndex }); resultWidths[visibleIndex] = "adaptiveHidden"; this._hiddenColumns.push(column); visibleContentColumns = getVisibleContentColumns() } } while (needHideColumn && visibleContentColumns.length > 1 && hiddenQueue.length); if (contentColumnsCount === visibleContentColumns.length) { that._hideAdaptiveColumn(resultWidths, visibleColumns) } } else { that._hideAdaptiveColumn(resultWidths, visibleColumns) } } getAdaptiveDetailItems() { return this._$itemContents } getItemContentByColumnIndex(visibleColumnIndex) { let $itemContent; for (let i = 0; i < this._$itemContents.length; i++) { $itemContent = this._$itemContents.eq(i); const item = $itemContent.data("dx-form-item"); if (item && item.column && this._columnsController.getVisibleIndex(item.column.index) === visibleColumnIndex) { return $itemContent } } } toggleExpandAdaptiveDetailRow(key, alwaysExpanded) { if (!(this.isFormOrPopupEditMode() && this._editingController.isEditing())) { this._dataController.toggleExpandAdaptiveDetailRow(key, alwaysExpanded) } } createFormByHiddenColumns(container, options) { const that = this; const $container = (0, _renderer.default)(container); const userFormOptions = { items: that._getFormItemsByHiddenColumns(that._hiddenColumns), formID: `dx-${new _guid.default}` }; const defaultFormOptions = (0, _themes.isMaterial)() ? { colCount: 2 } : {}; this.executeAction("onAdaptiveDetailRowPreparing", { formOptions: userFormOptions }); that._$itemContents = null; that._form = that._createComponent((0, _renderer.default)("
").appendTo($container), _form.default, (0, _extend.extend)(defaultFormOptions, userFormOptions, { customizeItem(item) { const column = item.column || that._columnsController.columnOption(item.name || item.dataField); if (column) { item.label = item.label || {}; item.label.text = item.label.text || column.caption; item.column = column; item.template = that._getTemplate(item, options, that.updateForm.bind(that)) } userFormOptions.customizeItem && userFormOptions.customizeItem.call(this, item) }, onContentReady(e) { userFormOptions.onContentReady && userFormOptions.onContentReady.call(this, e); that._$itemContents = $container.find(".dx-field-item-content") } })) } hasAdaptiveDetailRowExpanded() { return (0, _type.isDefined)(this._dataController.adaptiveExpandedKey()) } updateForm(hiddenColumns) { if (this.hasAdaptiveDetailRowExpanded()) { if (this._form && (0, _type.isDefined)(this._form._contentReadyAction)) { if (hiddenColumns && hiddenColumns.length) { this._form.option("items", this._getFormItemsByHiddenColumns(hiddenColumns)) } else { this._form.repaint() } } } } updateHidingQueue(columns) { const that = this; const hideableColumns = columns.filter((column => column.visible && !column.type && !column.fixed && !((0, _type.isDefined)(column.groupIndex) && column.groupIndex >= 0))); let columnsHasHidingPriority; let i; that._hidingColumnsQueue = []; if (that.option("allowColumnResizing") && "widget" === that.option("columnResizingMode")) { return that._hidingColumnsQueue } for (i = 0; i < hideableColumns.length; i++) { if ((0, _type.isDefined)(hideableColumns[i].hidingPriority) && hideableColumns[i].hidingPriority >= 0) { columnsHasHidingPriority = true; that._hidingColumnsQueue[hideableColumns[i].hidingPriority] = hideableColumns[i] } } if (columnsHasHidingPriority) { that._hidingColumnsQueue.reverse() } else if (that.option("columnHidingEnabled")) { for (i = 0; i < hideableColumns.length; i++) { const visibleIndex = that._columnsController.getVisibleIndex(hideableColumns[i].index); that._hidingColumnsQueue[visibleIndex] = hideableColumns[i] } } that._hidingColumnsQueue = that._hidingColumnsQueue.filter(Object); return that._hidingColumnsQueue } getHiddenColumns() { return this._hiddenColumns } hasHiddenColumns() { return this._hiddenColumns.length > 0 } getHidingColumnsQueue() { return this._hidingColumnsQueue } isAdaptiveDetailRowExpanded(key) { const dataController = this._dataController; return dataController.adaptiveExpandedKey() && (0, _common.equalByValue)(dataController.adaptiveExpandedKey(), key) } expandAdaptiveDetailRow(key) { if (!this.hasAdaptiveDetailRowExpanded()) { this.toggleExpandAdaptiveDetailRow(key) } } collapseAdaptiveDetailRow() { if (this.hasAdaptiveDetailRowExpanded()) { this.toggleExpandAdaptiveDetailRow() } } updateCommandAdaptiveAriaLabel(key, label) { const rowIndex = this._dataController.getRowIndexByKey(key); if (-1 === rowIndex) { return } const $row = (0, _renderer.default)(this.component.getRowElement(rowIndex)); this.setCommandAdaptiveAriaLabel($row, label) } setCommandAdaptiveAriaLabel($row, labelName) { const $adaptiveCommand = $row.find(".dx-command-adaptive"); $adaptiveCommand.attr("aria-label", _message.default.format(labelName)) } } exports.AdaptiveColumnsController = AdaptiveColumnsController; exports.adaptivityModule = { defaultOptions: () => ({ columnHidingEnabled: false, onAdaptiveDetailRowPreparing: null }), controllers: { adaptiveColumns: AdaptiveColumnsController }, extenders: { views: { rowsView: Base => class extends Base { _getCellTemplate(options) { const that = this; const { column: column } = options; if ("detailAdaptive" === options.rowType && "detail" === column.command) { return function(container, options) { that._adaptiveColumnsController.createFormByHiddenColumns((0, _renderer.default)(container), options) } } return super._getCellTemplate(options) } _createRow(row) { const $row = super._createRow.apply(this, arguments); if (row && "detailAdaptive" === row.rowType && row.key === this._dataController.adaptiveExpandedKey()) { $row.addClass("dx-adaptive-detail-row") } return $row } _renderCells($row, options) { super._renderCells($row, options); const adaptiveColumnsController = this._adaptiveColumnsController; const hidingColumnsQueueLength = adaptiveColumnsController.getHidingColumnsQueue().length; const hiddenColumnsLength = adaptiveColumnsController.getHiddenColumns().length; if (hidingColumnsQueueLength && !hiddenColumnsLength) { (function($row) { return $row.find("td:not(.dx-datagrid-hidden-column):not([class*='dx-command-'])") })($row).last().addClass("dx-last-data-cell") } if ("data" === options.row.rowType) { adaptiveColumnsController.setCommandAdaptiveAriaLabel($row, "dxDataGrid-ariaAdaptiveExpand") } } _getColumnIndexByElementCore($element) { const $itemContent = $element.closest(".dx-field-item-content"); if ($itemContent.length && $itemContent.closest(this.component.$element()).length) { const formItem = $itemContent.length ? $itemContent.first().data("dx-form-item") : null; return formItem && formItem.column && this._columnsController.getVisibleIndex(formItem.column.index) } return super._getColumnIndexByElementCore($element) } _cellPrepared($cell, options) { super._cellPrepared.apply(this, arguments); if ("detailAdaptive" !== options.row.rowType && "adaptiveHidden" === options.column.visibleWidth) { $cell.addClass(this.addWidgetPrefix("hidden-column")) } } getCell(cellPosition, rows) { const item = this._dataController.items()[null === cellPosition || void 0 === cellPosition ? void 0 : cellPosition.rowIndex]; if ("detailAdaptive" === (null === item || void 0 === item ? void 0 : item.rowType)) { const $adaptiveDetailItems = this._adaptiveColumnsController.getAdaptiveDetailItems(); return super.getCell(cellPosition, rows, $adaptiveDetailItems) } return super.getCell.apply(this, arguments) } _getCellElement(rowIndex, columnIdentifier) { const item = this._dataController.items()[rowIndex]; if (item && "detailAdaptive" === item.rowType) { return this._adaptiveColumnsController.getItemContentByColumnIndex(columnIdentifier) } return super._getCellElement.apply(this, arguments) } getContextMenuItems(options) { var _super$getContextMenu; if (options.row && "detailAdaptive" === options.row.rowType) { const view = this._columnHeadersView; const formItem = (0, _renderer.default)(options.targetElement).closest(".dx-field-item-label").next().data("dx-form-item"); options.column = formItem ? formItem.column : options.column; return view.getContextMenuItems && view.getContextMenuItems(options) } return null === (_super$getContextMenu = super.getContextMenuItems) || void 0 === _super$getContextMenu ? void 0 : _super$getContextMenu.call(this, options) } isClickableElement($target) { var _super$isClickableEle; const isClickable = (null === (_super$isClickableEle = super.isClickableElement) || void 0 === _super$isClickableEle ? void 0 : _super$isClickableEle.call(this, $target)) ?? false; return isClickable || !!$target.closest(".dx-command-adaptive").length } } }, controllers: { export: Base => class extends Base { _updateColumnWidth(column, width) { super._updateColumnWidth(column, "adaptiveHidden" === column.visibleWidth ? column.bestFitWidth : width) } }, columnsResizer: Base => class extends Base { _pointCreated(point, cellsLength, columns) { const result = super._pointCreated(point, cellsLength, columns); const currentColumn = columns[point.columnIndex] || {}; const nextColumnIndex = this._getNextColumnIndex(point.columnIndex); const nextColumn = columns[nextColumnIndex] || {}; const hasHiddenColumnsOnly = nextColumnIndex !== point.columnIndex + 1 && nextColumn.command; const hasAdaptiveHiddenWidth = "adaptiveHidden" === currentColumn.visibleWidth || hasHiddenColumnsOnly; return result || hasAdaptiveHiddenWidth } _getNextColumnIndex(currentColumnIndex) { const visibleColumns = this._columnsController.getVisibleColumns(); let index = super._getNextColumnIndex(currentColumnIndex); while (visibleColumns[index] && "adaptiveHidden" === visibleColumns[index].visibleWidth) { index++ } return index } }, draggingHeader: Base => class extends Base { _pointCreated(point, columns, location, sourceColumn) { const result = super._pointCreated(point, columns, location, sourceColumn); const column = columns[point.columnIndex - 1] || {}; const hasAdaptiveHiddenWidth = "adaptiveHidden" === column.visibleWidth; return result || hasAdaptiveHiddenWidth } }, editing: Base => class extends Base { _isRowEditMode() { return "row" === this.getEditMode() } _getFormEditItemTemplate(cellOptions, column) { if ("row" !== this.getEditMode() && "detailAdaptive" === cellOptions.rowType) { cellOptions.columnIndex = this._columnsController.getVisibleIndex(column.index); return this.getColumnTemplate(cellOptions) } return super._getFormEditItemTemplate(cellOptions, column) } _closeEditItem($targetElement) { const $itemContents = $targetElement.closest(".dx-field-item-content"); const rowIndex = this._dataController.getRowIndexByKey(this._dataController.adaptiveExpandedKey()) + 1; const formItem = $itemContents.length ? $itemContents.first().data("dx-form-item") : null; const columnIndex = formItem && formItem.column && this._columnsController.getVisibleIndex(formItem.column.index); if (!this.isEditCell(rowIndex, columnIndex)) { super._closeEditItem($targetElement) } } _beforeUpdateItems(rowIndices, rowIndex) { if (!this._adaptiveColumnsController.isFormOrPopupEditMode() && this._adaptiveColumnsController.hasHiddenColumns()) { const items = this._dataController.items(); const item = items[rowIndex]; const oldExpandRowIndex = _m_utils.default.getIndexByKey(this._dataController.adaptiveExpandedKey(), items); this._isForceRowAdaptiveExpand = !this._adaptiveColumnsController.hasAdaptiveDetailRowExpanded(); if (oldExpandRowIndex >= 0) { rowIndices.push(oldExpandRowIndex + 1) } rowIndices.push(rowIndex + 1); this._dataController.adaptiveExpandedKey(item.key) } } _afterInsertRow(key) { super._afterInsertRow.apply(this, arguments); if (this._adaptiveColumnsController.hasHiddenColumns()) { this._adaptiveColumnsController.toggleExpandAdaptiveDetailRow(key, this.isRowEditMode()); this._isForceRowAdaptiveExpand = true } } _collapseAdaptiveDetailRow() { if (this._isRowEditMode() && this._isForceRowAdaptiveExpand) { this._adaptiveColumnsController.collapseAdaptiveDetailRow(); this._isForceRowAdaptiveExpand = false } } _cancelEditAdaptiveDetailRow() { if (this._adaptiveColumnsController.hasHiddenColumns()) { this._collapseAdaptiveDetailRow() } } _afterSaveEditData() { super._afterSaveEditData.apply(this, arguments); const deferred = new _deferred.Deferred; if (this._isRowEditMode() && this._adaptiveColumnsController.hasHiddenColumns()) { (0, _deferred.when)(this._validatingController.validate(true)).done((isValid => { if (isValid) { this._cancelEditAdaptiveDetailRow() } deferred.resolve() })) } else { deferred.resolve() } return deferred.promise() } _beforeCancelEditData() { super._beforeCancelEditData(); this._cancelEditAdaptiveDetailRow() } _getRowIndicesForCascadeUpdating(row) { const rowIndices = super._getRowIndicesForCascadeUpdating.apply(this, arguments); if (this._adaptiveColumnsController.isAdaptiveDetailRowExpanded(row.key)) { rowIndices.push("detailAdaptive" === row.rowType ? row.rowIndex - 1 : row.rowIndex + 1) } return rowIndices } _beforeCloseEditCellInBatchMode(rowIndices) { const expandedKey = this._dataController._adaptiveExpandedKey; if (expandedKey) { const rowIndex = _m_utils.default.getIndexByKey(expandedKey, this._dataController.items()); if (rowIndex > -1) { rowIndices.unshift(rowIndex) } } } editRow(rowIndex) { if (this._adaptiveColumnsController.isFormOrPopupEditMode()) { this._adaptiveColumnsController.collapseAdaptiveDetailRow() } return super.editRow(rowIndex) } deleteRow(rowIndex) { const rowKey = this._dataController.getKeyByRowIndex(rowIndex); if ("batch" === this.getEditMode() && this._adaptiveColumnsController.isAdaptiveDetailRowExpanded(rowKey)) { this._adaptiveColumnsController.collapseAdaptiveDetailRow() } super.deleteRow(rowIndex) } }, resizing: Base => class extends Base { dispose() { super.dispose.apply(this, arguments); clearTimeout(this._updateScrollableTimeoutID) } _needBestFit() { return super._needBestFit() || !!this._adaptiveColumnsController.getHidingColumnsQueue().length } _correctColumnWidths(resultWidths, visibleColumns) { const adaptiveController = this._adaptiveColumnsController; const oldHiddenColumns = adaptiveController.getHiddenColumns(); const hidingColumnsQueue = adaptiveController.updateHidingQueue(this._columnsController.getColumns()); adaptiveController.hideRedundantColumns(resultWidths, visibleColumns, hidingColumnsQueue); const hiddenColumns = adaptiveController.getHiddenColumns(); if (adaptiveController.hasAdaptiveDetailRowExpanded()) { if (oldHiddenColumns.length !== hiddenColumns.length) { adaptiveController.updateForm(hiddenColumns) } }!hiddenColumns.length && adaptiveController.collapseAdaptiveDetailRow(); return super._correctColumnWidths.apply(this, arguments) } _toggleBestFitMode(isBestFit) { isBestFit && this._adaptiveColumnsController._showHiddenColumns(); super._toggleBestFitMode(isBestFit) } _needStretch() { const adaptiveColumnsController = this._adaptiveColumnsController; return super._needStretch.apply(this, arguments) || adaptiveColumnsController.getHidingColumnsQueue().length || adaptiveColumnsController.hasHiddenColumns() } }, data: Base => class extends Base { init() { super.init(); this._adaptiveExpandedKey = void 0 } _processItems(items, change) { const { changeType: changeType } = change; items = super._processItems.apply(this, arguments); if ("loadingAll" === changeType || !(0, _type.isDefined)(this._adaptiveExpandedKey)) { return items } const expandRowIndex = _m_utils.default.getIndexByKey(this._adaptiveExpandedKey, items); const newMode = false === this.option("scrolling.legacyMode"); if (expandRowIndex >= 0) { const item = items[expandRowIndex]; items.splice(expandRowIndex + 1, 0, { visible: true, rowType: "detailAdaptive", key: item.key, data: item.data, node: item.node, modifiedValues: item.modifiedValues, isNewRow: item.isNewRow, values: item.values }) } else if ("refresh" === changeType && !(newMode && change.repaintChangesOnly)) { this._adaptiveExpandedKey = void 0 } return items } _getRowIndicesForExpand(key) { const rowIndices = super._getRowIndicesForExpand.apply(this, arguments); if (this._adaptiveColumnsController.isAdaptiveDetailRowExpanded(key)) { const lastRowIndex = rowIndices[rowIndices.length - 1]; rowIndices.push(lastRowIndex + 1) } return rowIndices } adaptiveExpandedKey(value) { if ((0, _type.isDefined)(value)) { this._adaptiveExpandedKey = value } else { return this._adaptiveExpandedKey } } toggleExpandAdaptiveDetailRow(key, alwaysExpanded) { let oldExpandLoadedRowIndex = _m_utils.default.getIndexByKey(this._adaptiveExpandedKey, this._items); let newExpandLoadedRowIndex = _m_utils.default.getIndexByKey(key, this._items); if (oldExpandLoadedRowIndex >= 0 && oldExpandLoadedRowIndex === newExpandLoadedRowIndex && !alwaysExpanded) { key = void 0; newExpandLoadedRowIndex = -1 } const oldKey = this._adaptiveExpandedKey; this._adaptiveExpandedKey = key; if (oldExpandLoadedRowIndex >= 0) { oldExpandLoadedRowIndex++ } if (newExpandLoadedRowIndex >= 0) { newExpandLoadedRowIndex++ } const rowIndexDelta = this.getRowIndexDelta(); this.updateItems({ allowInvisibleRowIndices: true, changeType: "update", rowIndices: [oldExpandLoadedRowIndex - rowIndexDelta, newExpandLoadedRowIndex - rowIndexDelta] }); this._adaptiveColumnsController.updateCommandAdaptiveAriaLabel(key, "dxDataGrid-ariaAdaptiveCollapse"); this._adaptiveColumnsController.updateCommandAdaptiveAriaLabel(oldKey, "dxDataGrid-ariaAdaptiveExpand") } }, editorFactory: Base => class extends Base { _needHideBorder($element) { return super._needHideBorder($element) || (null === $element || void 0 === $element ? void 0 : $element.hasClass("dx-field-item-content")) && (null === $element || void 0 === $element ? void 0 : $element.find(".dx-checkbox").length) } _getFocusCellSelector() { return `${super._getFocusCellSelector()}, .dx-adaptive-detail-row .dx-field-item > .dx-field-item-content` } _getRevertTooltipsSelector() { return `${super._getRevertTooltipsSelector()}, .dx-field-item-content .${this.addWidgetPrefix("revert-tooltip")}` } }, columns: Base => class extends Base { _isColumnVisible(column) { return super._isColumnVisible(column) && !column.adaptiveHidden } getVisibleDataColumnsByBandColumn(bandColumnIndex) { return super.getVisibleDataColumnsByBandColumn(bandColumnIndex).filter((column => "adaptiveHidden" !== column.visibleWidth)) } }, keyboardNavigation: Base => class extends Base { _isCellValid($cell, isClick) { return super._isCellValid($cell, isClick) && !$cell.hasClass(this.addWidgetPrefix("hidden-column")) && !$cell.hasClass("dx-command-adaptive-hidden") } _processNextCellInMasterDetail($nextCell, $cell) { super._processNextCellInMasterDetail($nextCell, $cell); const isCellOrBatchMode = this._editingController.isCellOrBatchEditMode(); const isEditing = this._editingController.isEditing(); if (isEditing && $nextCell && isCellOrBatchMode && !this._isInsideEditForm($nextCell)) { _events_engine.default.off($nextCell, "focus", focusCellHandler); _events_engine.default.on($nextCell, "focus", { $nextCell: $nextCell }, focusCellHandler); _events_engine.default.trigger($cell, "focus") } } isFocusableColumn(column) { return super.isFocusableColumn(column) && "adaptiveHidden" !== column.visibleWidth } _isCellElement($cell) { return super._isCellElement($cell) || $cell.hasClass("dx-adaptive-item-text") } }, headersKeyboardNavigation: Base => class extends Base { getColumnVisibleIndexCorrection(visibleIndex, rowIndex, direction) { let indexCorrection = super.getColumnVisibleIndexCorrection(visibleIndex, rowIndex, direction); let visibleColumns = this._columnsController.getVisibleColumns(rowIndex); visibleColumns = "next" === direction ? visibleColumns.slice(visibleIndex + 1) : visibleColumns.slice(0, visibleIndex).reverse(); while ("adaptiveHidden" === (null === (_visibleColumns = visibleColumns) || void 0 === _visibleColumns || null === (_visibleColumns = _visibleColumns.shift()) || void 0 === _visibleColumns ? void 0 : _visibleColumns.visibleWidth)) { var _visibleColumns; indexCorrection += "next" === direction ? 1 : -1 } return indexCorrection } getFocusableColumns(rowIndex, bandColumnId) { return super.getFocusableColumns(rowIndex, bandColumnId).filter((col => "adaptiveHidden" !== col.visibleWidth)) } getDraggableColumns(column, rowIndex) { return super.getDraggableColumns(column, rowIndex).filter((col => "adaptiveHidden" !== col.visibleWidth)) } } } } } }, 71263: /*!************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/grid_core/column_chooser/const.js ***! \************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.defaultOptions = void 0; var _message = (e = __webpack_require__( /*! ../../../../common/core/localization/message */ 4671), e && e.__esModule ? e : { default: e }); var e; exports.defaultOptions = { columnChooser: { enabled: false, search: { enabled: false, timeout: 500, editorOptions: {} }, selection: { allowSelectAll: false, selectByClick: false, recursive: false }, position: void 0, sortOrder: void 0, mode: "dragAndDrop", width: 250, height: 260, title: _message.default.format("dxDataGrid-columnChooserTitle"), emptyPanelText: _message.default.format("dxDataGrid-columnChooserEmptyText"), container: void 0 } } }, 69862: /*!***********************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/grid_core/column_chooser/m_column_chooser.js ***! \***********************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.columnChooserModule = exports.ColumnChooserView = exports.ColumnChooserController = void 0; var _message = _interopRequireDefault(__webpack_require__( /*! ../../../../common/core/localization/message */ 4671)); var _devices = _interopRequireDefault(__webpack_require__( /*! ../../../../core/devices */ 65951)); var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../../../core/renderer */ 64553)); var _common = __webpack_require__( /*! ../../../../core/utils/common */ 17781); var _extend = __webpack_require__( /*! ../../../../core/utils/extend */ 52576); var _iterator = __webpack_require__( /*! ../../../../core/utils/iterator */ 21274); var _size = __webpack_require__( /*! ../../../../core/utils/size */ 57653); var _type = __webpack_require__( /*! ../../../../core/utils/type */ 11528); var _button = _interopRequireDefault(__webpack_require__( /*! ../../../../ui/button */ 64973)); var _ui = _interopRequireDefault(__webpack_require__( /*! ../../../../ui/popup/ui.popup */ 10720)); var _tree_view = _interopRequireDefault(__webpack_require__( /*! ../../../../ui/tree_view */ 4313)); var _m_modules = _interopRequireDefault(__webpack_require__( /*! ../m_modules */ 74854)); var _m_columns_view = __webpack_require__( /*! ../views/m_columns_view */ 48921); var _const = __webpack_require__( /*! ./const */ 71263); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } const COLUMN_OPTIONS_USED_IN_ITEMS = ["showInColumnChooser", "caption", "allowHiding", "visible", "cssClass", "ownerBand"]; class ColumnChooserController extends _m_modules.default.ViewController { init() { super.init(); this._rowsView = this.getView("rowsView") } renderShowColumnChooserButton($element) { const that = this; const columnChooserButtonClass = that.addWidgetPrefix("column-chooser-button"); const columnChooserEnabled = that.option("columnChooser.enabled"); const $showColumnChooserButton = $element.find(`.${columnChooserButtonClass}`); let $columnChooserButton; if (columnChooserEnabled) { if (!$showColumnChooserButton.length) { $columnChooserButton = (0, _renderer.default)("
").addClass(columnChooserButtonClass).appendTo($element); that._createComponent($columnChooserButton, _button.default, { icon: "column-chooser", onClick() { that.getView("columnChooserView").showColumnChooser() }, hint: that.option("columnChooser.title"), integrationOptions: {} }) } else { $showColumnChooserButton.show() } } else { $showColumnChooserButton.hide() } } getPosition() { var _this$_rowsView; const position = this.option("columnChooser.position"); return (0, _type.isDefined)(position) ? position : { my: "right bottom", at: "right bottom", of: null === (_this$_rowsView = this._rowsView) || void 0 === _this$_rowsView ? void 0 : _this$_rowsView.element(), collision: "fit", offset: "-2 -2", boundaryOffset: "2 2" } } } exports.ColumnChooserController = ColumnChooserController; class ColumnChooserView extends _m_columns_view.ColumnsView { optionChanged(args) { if ("columnChooser" === args.name) { this._initializePopupContainer(); this.render(null, "full") } else { super.optionChanged(args) } } publicMethods() { return ["showColumnChooser", "hideColumnChooser"] } _resizeCore() {} _isWinDevice() { return !!_devices.default.real().win } _initializePopupContainer() { const that = this; const columnChooserClass = that.addWidgetPrefix("column-chooser"); const $element = that.element().addClass(columnChooserClass); const columnChooserOptions = that.option("columnChooser"); const popupPosition = this._columnChooserController.getPosition(); const dxPopupOptions = { visible: false, shading: false, showCloseButton: true, dragEnabled: true, resizeEnabled: true, wrapperAttr: { class: columnChooserClass }, toolbarItems: [{ text: columnChooserOptions.title, toolbar: "top", location: "before" }], position: popupPosition, width: columnChooserOptions.width, height: columnChooserOptions.height, rtlEnabled: that.option("rtlEnabled"), onHidden() { if (that._isWinDevice()) { (0, _renderer.default)("body").removeClass(that.addWidgetPrefix("notouch-action")) } }, container: columnChooserOptions.container, _loopFocus: true }; if (!(0, _type.isDefined)(this._popupContainer)) { that._popupContainer = that._createComponent($element, _ui.default, dxPopupOptions); that._popupContainer.on("optionChanged", (args => { if ("visible" === args.name) { that.renderCompleted.fire() } })) } else { this._popupContainer.option(dxPopupOptions) } this.setPopupAttributes() } setPopupAttributes() { const isSelectMode = this.isSelectMode(); const isBandColumnsUsed = this._columnsController.isBandColumnsUsed(); this._popupContainer.setAria({ role: "dialog", label: _message.default.format("dxDataGrid-columnChooserTitle") }); this._popupContainer.$wrapper().toggleClass(this.addWidgetPrefix("column-chooser-mode-drag"), !isSelectMode).toggleClass(this.addWidgetPrefix("column-chooser-mode-select"), isSelectMode); this._popupContainer.$content().addClass(this.addWidgetPrefix("column-chooser-list")); if (isSelectMode && !isBandColumnsUsed) { this._popupContainer.$content().addClass(this.addWidgetPrefix("column-chooser-plain")) } } _renderCore(change) { if (this._popupContainer) { const isDragMode = !this.isSelectMode(); if (!this._columnChooserList || "full" === change) { this._renderTreeView() } else if (isDragMode) { this._updateItems() } } } _renderTreeView() { var _columnChooser$search, _columnChooser$search2, _columnChooser$search3; const that = this; const $container = this._popupContainer.$content(); const columnChooser = this.option("columnChooser"); const isSelectMode = this.isSelectMode(); const searchEnabled = (0, _type.isDefined)(columnChooser.allowSearch) ? columnChooser.allowSearch : null === (_columnChooser$search = columnChooser.search) || void 0 === _columnChooser$search ? void 0 : _columnChooser$search.enabled; const searchTimeout = (0, _type.isDefined)(columnChooser.searchTimeout) ? columnChooser.searchTimeout : null === (_columnChooser$search2 = columnChooser.search) || void 0 === _columnChooser$search2 ? void 0 : _columnChooser$search2.timeout; const treeViewConfig = { dataStructure: "plain", activeStateEnabled: true, focusStateEnabled: true, hoverStateEnabled: true, itemTemplate: "item", showCheckBoxesMode: "none", rootValue: null, searchEnabled: searchEnabled, searchTimeout: searchTimeout, searchEditorOptions: null === (_columnChooser$search3 = columnChooser.search) || void 0 === _columnChooser$search3 ? void 0 : _columnChooser$search3.editorOptions }; if (this._isWinDevice()) { treeViewConfig.useNativeScrolling = false }(0, _extend.extend)(treeViewConfig, isSelectMode ? this._prepareSelectModeConfig() : this._prepareDragModeConfig()); if (this._columnChooserList) { if (!treeViewConfig.searchEnabled) { treeViewConfig.searchValue = "" } this._columnChooserList.option(treeViewConfig); this._updateItems() } else { this._columnChooserList = this._createComponent($container, _tree_view.default, treeViewConfig); this._updateItems(); let scrollTop = 0; this._columnChooserList.on("optionChanged", (e => { const scrollable = e.component.getScrollable(); scrollTop = scrollable.scrollTop() })); this._columnChooserList.on("contentReady", (e => { (0, _common.deferUpdate)((() => { const scrollable = e.component.getScrollable(); scrollable.scrollTo({ y: scrollTop }); that.renderCompleted.fire() })) })) } } _prepareDragModeConfig() { const columnChooserOptions = this.option("columnChooser"); return { noDataText: columnChooserOptions.emptyPanelText, activeStateEnabled: false, hoverStateEnabled: false, itemTemplate(data, index, item) { (0, _renderer.default)(item).text(data.text).parent().addClass(data.cssClass).addClass("dx-column-chooser-item") } } } _prepareSelectModeConfig() { const that = this; const selectionOptions = this.option("columnChooser.selection") ?? {}; let isUpdatingSelection = false; return { selectByClick: selectionOptions.selectByClick, selectNodesRecursive: selectionOptions.recursive, showCheckBoxesMode: selectionOptions.allowSelectAll ? "selectAll" : "normal", onSelectionChanged: e => { if (isUpdatingSelection) { return } const nodes = (nodes => { const addNodesToArray = (nodes, flatNodesArray) => nodes.reduce(((result, node) => { result.push(node); if (node.children.length) { addNodesToArray(node.children, result) } return result }), flatNodesArray); return addNodesToArray(nodes, []) })(e.component.getNodes()); e.component.beginUpdate(); isUpdatingSelection = true; ((e, nodes) => { nodes.filter((node => false === node.itemData.allowHiding)).forEach((node => e.component.selectItem(node.key))) })(e, nodes); e.component.endUpdate(); isUpdatingSelection = false; that.component.beginUpdate(); this._isUpdatingColumnVisibility = true; (nodes => { nodes.forEach((node => { const columnIndex = node.itemData.id; const isVisible = false !== node.selected; that._columnsController.columnOption(columnIndex, "visible", isVisible) })) })(nodes); that.component.endUpdate(); this._isUpdatingColumnVisibility = false } } } _updateItems() { const isSelectMode = this.isSelectMode(); const chooserColumns = this._columnsController.getChooserColumns(isSelectMode); const items = function(that, chooserColumns) { const items = []; const isSelectMode = that.isSelectMode(); const isRecursive = that.option("columnChooser.selection.recursive"); if (chooserColumns.length) { (0, _iterator.each)(chooserColumns, ((index, column) => { const item = { text: column.caption, cssClass: column.cssClass, allowHiding: column.allowHiding, expanded: true, id: column.index, disabled: false === column.allowHiding, parentId: (0, _type.isDefined)(column.ownerBand) ? column.ownerBand : null }; const isRecursiveWithColumns = isRecursive && column.hasColumns; if (isSelectMode && !isRecursiveWithColumns) { item.selected = column.visible } items.push(item) })) } return items }(this, chooserColumns); this._columnChooserList.option("items", items) } _updateItemsSelection(columnIndices) { const changedColumns = null === columnIndices || void 0 === columnIndices ? void 0 : columnIndices.map((columnIndex => this._columnsController.columnOption(columnIndex))); this._columnChooserList.beginUpdate(); null === changedColumns || void 0 === changedColumns || changedColumns.forEach((_ref => { let { visible: visible, index: index } = _ref; if (visible) { this._columnChooserList.selectItem(index) } else { this._columnChooserList.unselectItem(index) } })); this._columnChooserList.endUpdate() } _columnOptionChanged(e) { super._columnOptionChanged(e); const isSelectMode = this.isSelectMode(); if (isSelectMode && this._columnChooserList && !this._isUpdatingColumnVisibility) { const { optionNames: optionNames } = e; const onlyVisibleChanged = optionNames.visible && 1 === optionNames.length; const columnIndices = (0, _type.isDefined)(e.columnIndex) ? [e.columnIndex] : e.columnIndices; const needUpdate = COLUMN_OPTIONS_USED_IN_ITEMS.some((optionName => optionNames[optionName])) || e.changeTypes.columns && optionNames.all; if (needUpdate) { this._updateItemsSelection(columnIndices); if (!onlyVisibleChanged) { this._updateItems() } } } } getColumnElements() { var _this$_popupContainer; const result = []; const isSelectMode = this.isSelectMode(); const chooserColumns = this._columnsController.getChooserColumns(isSelectMode); const $content = null === (_this$_popupContainer = this._popupContainer) || void 0 === _this$_popupContainer ? void 0 : _this$_popupContainer.$content(); const $nodes = null === $content || void 0 === $content ? void 0 : $content.find(".dx-treeview-node"); if ($nodes) { chooserColumns.forEach((column => { const $node = $nodes.filter(`[data-item-id = '${column.index}']`); const item = $node.length ? $node.children(".dx-column-chooser-item").get(0) : null; result.push(item) })) } return (0, _renderer.default)(result) } getName() { return "columnChooser" } getColumns() { return this._columnsController.getChooserColumns() } allowDragging(column) { const isParentColumnVisible = this._columnsController.isParentColumnVisible(column.index); const isColumnHidden = !column.visible && column.allowHiding; return this.isColumnChooserVisible() && isParentColumnVisible && isColumnHidden } allowColumnHeaderDragging(column) { const isDragMode = !this.isSelectMode(); return isDragMode && this.isColumnChooserVisible() && column.allowHiding } getBoundingRect() { var _that$_popupContainer; const container = null === (_that$_popupContainer = this._popupContainer) || void 0 === _that$_popupContainer ? void 0 : _that$_popupContainer.$overlayContent(); if (null !== container && void 0 !== container && container.is(":visible")) { const offset = container.offset(); return { left: offset.left, top: offset.top, right: offset.left + (0, _size.getOuterWidth)(container), bottom: offset.top + (0, _size.getOuterHeight)(container) } } return null } showColumnChooser() { if (!this._popupContainer) { this._initializePopupContainer(); this.render() } this._popupContainer.show(); if (this._isWinDevice()) { (0, _renderer.default)("body").addClass(this.addWidgetPrefix("notouch-action")) } } hideColumnChooser() { if (this._popupContainer) { this._popupContainer.hide() } } isColumnChooserVisible() { const popupContainer = this._popupContainer; return null === popupContainer || void 0 === popupContainer ? void 0 : popupContainer.option("visible") } isSelectMode() { return "select" === this.option("columnChooser.mode") } hasHiddenColumns() { const isEnabled = this.option("columnChooser.enabled"); const hiddenColumns = this.getColumns().filter((column => !column.visible)); return isEnabled && hiddenColumns.length } } exports.ColumnChooserView = ColumnChooserView; exports.columnChooserModule = { defaultOptions: () => _const.defaultOptions, controllers: { columnChooser: ColumnChooserController }, views: { columnChooserView: ColumnChooserView }, extenders: { views: { headerPanel: Base => class extends Base { _getToolbarItems() { const items = super._getToolbarItems(); return this._appendColumnChooserItem(items) } _appendColumnChooserItem(items) { const that = this; const columnChooserEnabled = that.option("columnChooser.enabled"); if (columnChooserEnabled) { const onClickHandler = function() { that.component.getView("columnChooserView").showColumnChooser() }; const onInitialized = function(e) { (0, _renderer.default)(e.element).addClass(that._getToolbarButtonClass(that.addWidgetPrefix("column-chooser-button"))) }; const hintText = that.option("columnChooser.title"); const toolbarItem = { widget: "dxButton", options: { icon: "column-chooser", onClick: onClickHandler, hint: hintText, text: hintText, onInitialized: onInitialized, elementAttr: { "aria-haspopup": "dialog" } }, showText: "inMenu", location: "after", name: "columnChooserButton", locateInMenu: "auto", sortIndex: 40 }; items.push(toolbarItem) } return items } optionChanged(args) { if ("columnChooser" === args.name) { this._invalidate(); args.handled = true } else { super.optionChanged(args) } } }, columnHeadersView: Base => class extends Base { allowDragging(column) { const isDragMode = !this._columnChooserView.isSelectMode(); const isColumnChooserVisible = this._columnChooserView.isColumnChooserVisible(); return isDragMode && isColumnChooserVisible && column.allowHiding || super.allowDragging(column) } } }, controllers: { columns: Base => class extends Base { allowMoveColumn(fromVisibleIndex, toVisibleIndex, sourceLocation, targetLocation) { const isSelectMode = "select" === this.option("columnChooser.mode"); const isMoveColumnDisallowed = isSelectMode && "columnChooser" === targetLocation; return isMoveColumnDisallowed ? false : super.allowMoveColumn(fromVisibleIndex, toVisibleIndex, sourceLocation, targetLocation) } } } } } }, 54704: /*!*********************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/grid_core/column_fixing/m_column_fixing.js ***! \*********************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.columnFixingModule = void 0; var _translator = __webpack_require__( /*! ../../../../common/core/animation/translator */ 88603); var _events_engine = _interopRequireDefault(__webpack_require__( /*! ../../../../common/core/events/core/events_engine */ 92774)); var _wheel = __webpack_require__( /*! ../../../../common/core/events/core/wheel */ 37373); var _message = _interopRequireDefault(__webpack_require__( /*! ../../../../common/core/localization/message */ 4671)); var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../../../core/renderer */ 64553)); var _browser = _interopRequireDefault(__webpack_require__( /*! ../../../../core/utils/browser */ 48314)); var _extend = __webpack_require__( /*! ../../../../core/utils/extend */ 52576); var _iterator = __webpack_require__( /*! ../../../../core/utils/iterator */ 21274); var _position = __webpack_require__( /*! ../../../../core/utils/position */ 41639); var _size = __webpack_require__( /*! ../../../../core/utils/size */ 57653); var _style = __webpack_require__( /*! ../../../../core/utils/style */ 58515); var _type = __webpack_require__( /*! ../../../../core/utils/type */ 11528); var _ui = _interopRequireDefault(__webpack_require__( /*! ../../../../ui/scroll_view/ui.scrollable */ 20876)); var _m_utils = _interopRequireDefault(__webpack_require__( /*! ../m_utils */ 53226)); var _m_columns_view = __webpack_require__( /*! ../views/m_columns_view */ 48921); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } const getTransparentColumnIndex = function(fixedColumns) { let transparentColumnIndex = -1; (0, _iterator.each)(fixedColumns, ((index, column) => { if ("transparent" === column.command) { transparentColumnIndex = index; return false } return })); return transparentColumnIndex }; const normalizeColumnWidths = function(fixedColumns, widths, fixedWidths) { let fixedColumnIndex = 0; if (fixedColumns && widths && fixedWidths) { for (let i = 0; i < fixedColumns.length; i++) { if ("transparent" === fixedColumns[i].command) { fixedColumnIndex += fixedColumns[i].colspan } else { if (widths[fixedColumnIndex] < fixedWidths[i]) { widths[fixedColumnIndex] = fixedWidths[i] } fixedColumnIndex++ } } } return widths }; const baseFixedColumns = Base => class extends Base { init() { super.init(); this._isFixedTableRendering = false; this._isFixedColumns = false } _createCol(column) { return super._createCol(column).toggleClass("dx-col-fixed", !!(this._isFixedTableRendering && (column.fixed || column.command && "transparent" !== column.command))) } isIndicesArray(arr) { return Array.isArray(arr) && arr.length > 0 } _correctColumnIndicesForFixedColumns(fixedColumns, change) { var _change$items; const columnIndicesArray = null === change || void 0 === change ? void 0 : change.columnIndices; if (!this.isIndicesArray(columnIndicesArray)) { return } const transparentColumnIndex = getTransparentColumnIndex(fixedColumns); const transparentColspan = fixedColumns[transparentColumnIndex].colspan; const transparentOffset = transparentColumnIndex + transparentColspan; const rowTypes = null === change || void 0 === change || null === (_change$items = change.items) || void 0 === _change$items ? void 0 : _change$items.map((_ref => { let { rowType: rowType } = _ref; return rowType })); change.columnIndices = columnIndicesArray.map(((columnIndices, idx) => { if (!this.isIndicesArray(columnIndices)) { return columnIndices } const isGroupRow = rowTypes && "group" === rowTypes[idx]; if (isGroupRow) { return [...columnIndices] } return columnIndices.reduce(((result, colIdx) => { switch (true) { case colIdx < transparentColumnIndex: result.push(colIdx); break; case colIdx >= transparentOffset: result.push(colIdx - transparentColspan + 1) } return result }), []) })) } _partialUpdateFixedTable(fixedColumns, rows) { const fixedTableElement = this._fixedTableElement; const $rows = this._getRowElementsCore(fixedTableElement); const $colgroup = fixedTableElement.children("colgroup"); $colgroup.replaceWith(this._createColGroup(fixedColumns)); for (let i = 0; i < rows.length; i++) { this._partialUpdateFixedRow((0, _renderer.default)($rows[i]), fixedColumns, rows[i]) } } _partialUpdateFixedRow($row, fixedColumns, row) { const cellElements = $row.get(0).childNodes; const transparentColumnIndex = getTransparentColumnIndex(fixedColumns); const transparentColumn = fixedColumns[transparentColumnIndex]; const columnIndexOffset = this._columnsController.getColumnIndexOffset(); let groupCellOptions; let colIndex = columnIndexOffset + 1; let { colspan: colspan } = transparentColumn; if ($row.hasClass("dx-master-detail-row")) { var _this$_columnsControl; cellElements[0].setAttribute("colspan", null === (_this$_columnsControl = this._columnsController.getVisibleColumns()) || void 0 === _this$_columnsControl ? void 0 : _this$_columnsControl.length); return } if ($row.hasClass("dx-group-row")) { groupCellOptions = this._getGroupCellOptions({ row: row, columns: this._columnsController.getVisibleColumns() }); const hasSummary = row.summaryCells.length > 0; if (hasSummary) { const alignByColumnCellCount = this._getAlignByColumnCellCount(groupCellOptions.colspan, { columns: this._columnsController.getVisibleColumns(), row: row, isFixed: true }); colspan = groupCellOptions.colspan - alignByColumnCellCount } else { colspan = groupCellOptions.colspan - Math.max(0, cellElements.length - (groupCellOptions.columnIndex + 2)) } } for (let j = 0; j < cellElements.length; j++) { const needUpdateColspan = groupCellOptions ? j === groupCellOptions.columnIndex + 1 : j === transparentColumnIndex; cellElements[j].setAttribute("aria-colindex", colIndex); if (needUpdateColspan) { cellElements[j].setAttribute("colspan", colspan); colIndex += colspan } else { colIndex++ } } } _renderTable(options) { let $fixedTable; const fixedColumns = this.getFixedColumns(); this._isFixedColumns = this.isFixedColumns(); const $table = super._renderTable(options); if (this._isFixedColumns) { var _change$items2; const change = null === options || void 0 === options ? void 0 : options.change; const $fixedDataRows = this._getRowElements(this._fixedTableElement); const needPartialUpdate = (null === change || void 0 === change ? void 0 : change.virtualColumnsScrolling) && $fixedDataRows.length === (null === change || void 0 === change || null === (_change$items2 = change.items) || void 0 === _change$items2 ? void 0 : _change$items2.length); this._isFixedTableRendering = true; if (needPartialUpdate && true !== this.option("scrolling.legacyMode")) { var _options$change; this._partialUpdateFixedTable(fixedColumns, null === options || void 0 === options || null === (_options$change = options.change) || void 0 === _options$change ? void 0 : _options$change.items); this._isFixedTableRendering = false } else { const columnIndices = null === change || void 0 === change ? void 0 : change.columnIndices; this._correctColumnIndicesForFixedColumns(fixedColumns, change); $fixedTable = this._createTable(fixedColumns); this._renderRows($fixedTable, (0, _extend.extend)({}, options, { columns: fixedColumns })); this._updateContent($fixedTable, change, true); if (columnIndices) { change.columnIndices = columnIndices } this._isFixedTableRendering = false } } else { this._fixedTableElement && this._fixedTableElement.parent().remove(); this._fixedTableElement = null } return $table } _renderRow($table, options) { let fixedCorrection; let { cells: cells } = options.row; super._renderRow.apply(this, arguments); if (this._isFixedTableRendering && cells && cells.length) { fixedCorrection = 0; const fixedCells = options.row.cells || []; cells = cells.slice(); options.row.cells = cells; for (let i = 0; i < fixedCells.length; i++) { if (fixedCells[i].column && "transparent" === fixedCells[i].column.command) { fixedCorrection = (fixedCells[i].column.colspan || 1) - 1; continue } cells[i + fixedCorrection] = fixedCells[i] } } } _createCell(options) { const that = this; const { column: column } = options; const columnCommand = column && column.command; const { rowType: rowType } = options; const $cell = super._createCell.apply(that, arguments); let fixedColumns; let prevFixedColumn; let transparentColumnIndex; if (that._isFixedTableRendering || "filter" === rowType) { fixedColumns = that.getFixedColumns(); transparentColumnIndex = getTransparentColumnIndex(fixedColumns); prevFixedColumn = fixedColumns[transparentColumnIndex - 1] } if (that._isFixedTableRendering) { if ("transparent" === columnCommand) { $cell.addClass("dx-pointer-events-none").toggleClass("dx-first-cell", 0 === transparentColumnIndex || prevFixedColumn && "expand" === prevFixedColumn.command).toggleClass("dx-last-cell", fixedColumns.length && transparentColumnIndex === fixedColumns.length - 1); if ("freeSpace" !== rowType) { _m_utils.default.setEmptyText($cell) } } } else if ("filter" === rowType) { $cell.toggleClass("dx-first-cell", options.columnIndex === transparentColumnIndex) } const isRowAltStyle = that.option("rowAlternationEnabled") && options.isAltRow; const isSelectAllCell = "multiple" === that.option("selection.mode") && 0 === options.columnIndex && "header" === options.rowType; if (_browser.default.mozilla && options.column.fixed && "group" !== options.rowType && !isRowAltStyle && !isSelectAllCell) { $cell.addClass("dx-col-fixed") } return $cell } _wrapTableInScrollContainer($table, isFixedTableRendering) { const $scrollContainer = super._wrapTableInScrollContainer.apply(this, arguments); if (this._isFixedTableRendering || isFixedTableRendering) { $scrollContainer.addClass(this.addWidgetPrefix("content-fixed")) } return $scrollContainer } _renderCellContent($cell, options) { let isEmptyCell; const { column: column } = options; const isFixedTableRendering = this._isFixedTableRendering; const isGroupCell = "group" === options.rowType && (0, _type.isDefined)(column.groupIndex); if (isFixedTableRendering && isGroupCell && !column.command && !column.groupCellTemplate) { $cell.css("pointerEvents", "none") } if (!isFixedTableRendering && this._isFixedColumns) { isEmptyCell = column.fixed || column.command && false !== column.fixed; if (isGroupCell) { isEmptyCell = false; if (options.row.summaryCells && options.row.summaryCells.length) { var _this$_getAlignByColu; const columns = this._columnsController.getVisibleColumns(); const alignByFixedColumnCellCount = (null === (_this$_getAlignByColu = this._getAlignByColumnCellCount) || void 0 === _this$_getAlignByColu ? void 0 : _this$_getAlignByColu.call(this, column.colspan, { columns: columns, row: options.row, isFixed: true })) ?? 0; if (alignByFixedColumnCellCount > 0) { const transparentColumnIndex = getTransparentColumnIndex(this._columnsController.getFixedColumns()); isEmptyCell = columns.length - alignByFixedColumnCellCount < transparentColumnIndex } } } if (isEmptyCell) { if (column.command && "buttons" !== column.type || "group" === options.rowType) { $cell.html(" ").addClass(column.cssClass); return } $cell.addClass("dx-hidden-cell") } } if ("transparent" !== column.command) { super._renderCellContent.apply(this, arguments) } } getContent(isFixedTableRendering) { var _this$_fixedTableElem; return isFixedTableRendering ? null === (_this$_fixedTableElem = this._fixedTableElement) || void 0 === _this$_fixedTableElem ? void 0 : _this$_fixedTableElem.parent() : super.getContent.apply(this, arguments) } _getCellElementsCore(rowIndex) { const cellElements = super._getCellElementsCore.apply(this, arguments); const isGroupRow = null === cellElements || void 0 === cellElements ? void 0 : cellElements.parent().hasClass("dx-group-row"); const headerRowIndex = "columnHeadersView" === this.name ? rowIndex : void 0; if (this._fixedTableElement && cellElements) { const fixedColumns = this.getFixedColumns(headerRowIndex); const fixedCellElements = this._getRowElements(this._fixedTableElement).eq(rowIndex).children("td"); (0, _iterator.each)(fixedCellElements, ((columnIndex, cell) => { if (isGroupRow) { if (cellElements[columnIndex] && "hidden" !== cell.style.visibility) { cellElements[columnIndex] = cell } } else { const fixedColumn = fixedColumns[columnIndex]; if (fixedColumn) { if ("transparent" === fixedColumn.command) { if (fixedCellElements.eq(columnIndex).hasClass("dx-master-detail-cell")) { cellElements[columnIndex] = cell || cellElements[columnIndex] } } else { const fixedColumnIndex = this._columnsController.getVisibleIndexByColumn(fixedColumn, headerRowIndex); cellElements[fixedColumnIndex] = cell || cellElements[fixedColumnIndex] } } } })) } return cellElements } getColumnWidths(fixedTableElement, rowIndex) { const result = super.getColumnWidths(fixedTableElement, rowIndex); const fixedColumns = this.getFixedColumns(); const fixedWidths = this._fixedTableElement && result.length ? super.getColumnWidths(this._fixedTableElement) : void 0; return normalizeColumnWidths(fixedColumns, result, fixedWidths) } getTableElement(isFixedTableRendering) { isFixedTableRendering = this._isFixedTableRendering || isFixedTableRendering; const tableElement = isFixedTableRendering ? this._fixedTableElement : super.getTableElement(); return tableElement } setTableElement(tableElement, isFixedTableRendering) { if (this._isFixedTableRendering || isFixedTableRendering) { this._fixedTableElement = tableElement.addClass("dx-pointer-events-none") } else { super.setTableElement(tableElement) } } getColumns(rowIndex) { const $tableElement = this.getTableElement(); if (this._isFixedTableRendering) { return this.getFixedColumns(rowIndex) } return super.getColumns(rowIndex, $tableElement) } getRowIndex($row) { const $fixedTable = this._fixedTableElement; if ($fixedTable && $fixedTable.find($row).length) { return this._getRowElements($fixedTable).index($row) } return super.getRowIndex($row) } getTableElements() { let result = super.getTableElements.apply(this, arguments); if (this._fixedTableElement) { result = (0, _renderer.default)([result.get(0), this._fixedTableElement.get(0)]) } return result } getFixedColumns(rowIndex) { return this._columnsController.getFixedColumns(rowIndex) } getFixedColumnsOffset() { let offset = { left: 0, right: 0 }; let $transparentColumn; if (this._fixedTableElement) { $transparentColumn = this.getTransparentColumnElement(); const positionTransparentColumn = $transparentColumn.position(); offset = { left: positionTransparentColumn.left, right: (0, _size.getOuterWidth)(this.element(), true) - ((0, _size.getOuterWidth)($transparentColumn, true) + positionTransparentColumn.left) } } return offset } getTransparentColumnElement() { return this._fixedTableElement && this._fixedTableElement.find(".dx-pointer-events-none").first() } getFixedTableElement() { return this._fixedTableElement } _resizeCore() { super._resizeCore(); this.synchronizeRows() } setColumnWidths(options) { var _options$optionNames; const { widths: widths } = options; const visibleColumns = this._columnsController.getVisibleColumns(); const isColumnWidthsSynced = (null === widths || void 0 === widths ? void 0 : widths.length) && visibleColumns.some((column => (0, _type.isDefined)(column.visibleWidth))); const isColumnWidthChanged = null === (_options$optionNames = options.optionNames) || void 0 === _options$optionNames ? void 0 : _options$optionNames.width; super.setColumnWidths(options); if (this._fixedTableElement) { const hasAutoWidth = null === widths || void 0 === widths ? void 0 : widths.some((width => "auto" === width || !(0, _type.isDefined)(width))); const needVisibleColumns = hasAutoWidth && (!isColumnWidthsSynced || !this.isScrollbarVisible(true)); const columns = needVisibleColumns ? visibleColumns : this.getFixedColumns(); this.setFixedTableColumnWidths(columns, widths) } const wordWrapEnabled = this.option("wordWrapEnabled"); const needSynchronizeRows = isColumnWidthsSynced || isColumnWidthChanged && wordWrapEnabled; if (needSynchronizeRows) { this.synchronizeRows() } } setFixedTableColumnWidths(columns, widths) { if (!this._fixedTableElement || !widths) { return } const $cols = this._fixedTableElement.children("colgroup").children("col"); $cols.toArray().forEach((col => col.removeAttribute("style"))); let columnIndex = 0; columns.forEach((column => { if (column.colspan) { columnIndex += column.colspan; return } const colWidth = (0, _m_columns_view.normalizeWidth)(widths[columnIndex]); if ((0, _type.isDefined)(colWidth)) { (0, _style.setWidth)($cols.eq(columnIndex), colWidth) } columnIndex += 1 })) } _getClientHeight(element) { const boundingClientRectElement = element.getBoundingClientRect && (0, _position.getBoundingRect)(element); return boundingClientRectElement && boundingClientRectElement.height ? boundingClientRectElement.height : element.clientHeight } synchronizeRows() { const rowHeights = []; const fixedRowHeights = []; let rowIndex; let $rowElements; let $fixedRowElements; let $contentElement; this.waitAsyncTemplates(true).done((() => { if (this._isFixedColumns && this._tableElement && this._fixedTableElement) { const heightTable = this._getClientHeight(this._tableElement.get(0)); const heightFixedTable = this._getClientHeight(this._fixedTableElement.get(0)); $rowElements = this._getRowElements(this._tableElement); $fixedRowElements = this._getRowElements(this._fixedTableElement); $contentElement = this._findContentElement(); if (heightTable !== heightFixedTable) { $contentElement && $contentElement.css("height", heightTable); $rowElements.css("height", ""); $fixedRowElements.css("height", ""); for (rowIndex = 0; rowIndex < $rowElements.length; rowIndex++) { rowHeights.push(this._getClientHeight($rowElements.get(rowIndex))); fixedRowHeights.push(this._getClientHeight($fixedRowElements.get(rowIndex))) } for (rowIndex = 0; rowIndex < $rowElements.length; rowIndex++) { const rowHeight = rowHeights[rowIndex]; const fixedRowHeight = fixedRowHeights[rowIndex]; if (rowHeight > fixedRowHeight) { $fixedRowElements.eq(rowIndex).css("height", rowHeight) } else if (rowHeight < fixedRowHeight) { $rowElements.eq(rowIndex).css("height", fixedRowHeight) } } $contentElement && $contentElement.css("height", "") } } })) } setScrollerSpacing(width, hWidth) { const rtlEnabled = this.option("rtlEnabled"); super.setScrollerSpacing(width); this.element().children(`.${this.addWidgetPrefix("content-fixed")}`).css({ paddingLeft: rtlEnabled ? width : "", paddingRight: !rtlEnabled ? width : "" }) } isFixedColumns() { const fixedColumns = this.getFixedColumns(); const legacyMode = this.option("columnFixing.legacyMode"); return true === legacyMode && !!fixedColumns.length } }; exports.columnFixingModule = { defaultOptions: () => ({ columnFixing: { enabled: false, legacyMode: false, texts: { fix: _message.default.format("dxDataGrid-columnFixingFix"), unfix: _message.default.format("dxDataGrid-columnFixingUnfix"), leftPosition: _message.default.format("dxDataGrid-columnFixingLeftPosition"), rightPosition: _message.default.format("dxDataGrid-columnFixingRightPosition"), stickyPosition: _message.default.format("dxDataGrid-columnFixingStickyPosition") }, icons: { fix: "fix-column", unfix: "unfix-column", leftPosition: "fix-column-left", rightPosition: "fix-column-right", stickyPosition: "stick-column" } } }), extenders: { views: { columnHeadersView: Base => class extends(baseFixedColumns(Base)) { _getRowVisibleColumns(rowIndex) { if (this._isFixedTableRendering) { return this.getFixedColumns(rowIndex) } return super._getRowVisibleColumns(rowIndex) } getFixedColumnElements(rowIndex) { const that = this; if (!this._isFixedColumns) { return } if ((0, _type.isDefined)(rowIndex)) { return this._fixedTableElement && this._getRowElements(this._fixedTableElement).eq(rowIndex).children() } const columnElements = that.getColumnElements(); const $transparentColumnElement = that.getTransparentColumnElement(); if (columnElements && $transparentColumnElement && $transparentColumnElement.length) { var _$transparentColumnEl; const transparentColumnIndex = getTransparentColumnIndex(that.getFixedColumns()); [].splice.apply(columnElements, [transparentColumnIndex, null === (_$transparentColumnEl = $transparentColumnElement.get(0)) || void 0 === _$transparentColumnEl ? void 0 : _$transparentColumnEl.colSpan, $transparentColumnElement.get(0)]) } return columnElements } getColumnWidths(fixedTableElement, rowIndex) { const that = this; let fixedWidths; const result = super.getColumnWidths(fixedTableElement, rowIndex); const $fixedColumnElements = that.getFixedColumnElements(); const fixedColumns = that.getFixedColumns(); if (that._fixedTableElement) { if ($fixedColumnElements && $fixedColumnElements.length) { fixedWidths = that._getWidths($fixedColumnElements) } else { fixedWidths = super.getColumnWidths(that._fixedTableElement) } } return normalizeColumnWidths(fixedColumns, result, fixedWidths) } }, rowsView: Base => class extends(baseFixedColumns(Base)) { dispose() { super.dispose.apply(this, arguments); clearTimeout(this._fixedScrollTimeout) } optionChanged(args) { super.optionChanged(args); if ("hoverStateEnabled" === args.name && this._isFixedColumns) { args.value ? this._attachHoverEvents() : this._detachHoverEvents() } } _detachHoverEvents() { const element = this.element(); if (this._fixedTableElement && this._tableElement) { _events_engine.default.off(element, "mouseover mouseout", ".dx-data-row") } } _attachHoverEvents() { if (this._fixedTableElement && this._tableElement) { _events_engine.default.on(this.element(), "mouseover mouseout", ".dx-data-row", this.createAction((args => { const { event: event } = args; const rowIndex = this.getRowIndex((0, _renderer.default)(event.target).closest(".dx-row")); const isHover = "mouseover" === event.type; if (rowIndex >= 0) { this._tableElement && this._getRowElements(this._tableElement).eq(rowIndex).toggleClass("dx-state-hover", isHover); this._fixedTableElement && this._getRowElements(this._fixedTableElement).eq(rowIndex).toggleClass("dx-state-hover", isHover) } }))) } } _getScrollDelay() { var _this$_resizingContro; const hasResizeTimeout = null === (_this$_resizingContro = this._resizingController) || void 0 === _this$_resizingContro ? void 0 : _this$_resizingContro.hasResizeTimeout(); if (hasResizeTimeout) { return this.option("scrolling.updateTimeout") } return _browser.default.mozilla ? 60 : 0 } _findContentElement(isFixedTableRendering) { let $content; let scrollTop; const contentClass = this.addWidgetPrefix("content"); const element = this.element(); isFixedTableRendering = this._isFixedTableRendering || isFixedTableRendering; if (element && isFixedTableRendering) { $content = element.children(`.${contentClass}`); const scrollable = this.getScrollable(); if (!$content.length && scrollable) { $content = (0, _renderer.default)("
").addClass(contentClass); _events_engine.default.on($content, "scroll", (e => { const { target: target } = e; const scrollDelay = this._getScrollDelay(); clearTimeout(this._fixedScrollTimeout); this._fixedScrollTimeout = setTimeout((() => { scrollTop = (0, _renderer.default)(target).scrollTop(); scrollable.scrollTo({ y: scrollTop }) }), scrollDelay) })); _events_engine.default.on($content, _wheel.name, (e => { const $nearestScrollable = (0, _renderer.default)(e.target).closest(".dx-scrollable"); let shouldScroll = false; if (scrollable && scrollable.$element().is($nearestScrollable)) { shouldScroll = true } else { const nearestScrollableInstance = $nearestScrollable.length && _ui.default.getInstance($nearestScrollable.get(0)); const nearestScrollableHasVerticalScrollbar = nearestScrollableInstance && nearestScrollableInstance.scrollHeight() - nearestScrollableInstance.clientHeight() > 0; shouldScroll = nearestScrollableInstance && !nearestScrollableHasVerticalScrollbar } if (shouldScroll) { scrollTop = scrollable.scrollTop(); scrollable.scrollTo({ y: scrollTop - e.delta }); const scrollableTop = scrollable.scrollTop() + scrollable.clientHeight(); const scrollableHeight = scrollable.scrollHeight() + this.getScrollbarWidth(); const isPreventDefault = scrollable.scrollTop() > 0 && scrollableTop < scrollableHeight; if (isPreventDefault) { return false } } return })); $content.appendTo(element) } return $content } return super._findContentElement() } _updateScrollable() { super._updateScrollable(); const scrollable = this.getScrollable(); if (null !== scrollable && void 0 !== scrollable && scrollable._disposed) { return } const scrollTop = scrollable && scrollable.scrollOffset().top; this._updateFixedTablePosition(scrollTop) } _renderContent(contentElement, tableElement, isFixedTableRendering) { if (this._isFixedTableRendering || isFixedTableRendering) { return contentElement.empty().addClass(`${this.addWidgetPrefix("content")} ${this.addWidgetPrefix("content-fixed")}`).append(tableElement) } return super._renderContent(contentElement, tableElement) } _getGroupCellOptions(options) { if (this._isFixedTableRendering) { return super._getGroupCellOptions((0, _extend.extend)({}, options, { columns: this._columnsController.getVisibleColumns() })) } return super._getGroupCellOptions(options) } _renderGroupedCells($row, options) { return super._renderGroupedCells($row, (0, _extend.extend)({}, options, { columns: this._columnsController.getVisibleColumns() })) } _renderGroupSummaryCells($row, options) { if (this._isFixedTableRendering) { super._renderGroupSummaryCells($row, (0, _extend.extend)({}, options, { columns: this._columnsController.getVisibleColumns() })) } else { super._renderGroupSummaryCells($row, options) } } _hasAlignByColumnSummaryItems(columnIndex, options) { const result = super._hasAlignByColumnSummaryItems.apply(this, arguments); const column = options.columns[columnIndex]; if (options.isFixed) { return column.fixed && (result || "right" === column.fixedPosition) } return result && (!this._isFixedColumns || !column.fixed) } _renderGroupSummaryCellsCore($groupCell, options, groupCellColSpan, alignByColumnCellCount) { let alignByFixedColumnCellCount; if (this._isFixedTableRendering) { options.isFixed = true; alignByFixedColumnCellCount = this._getAlignByColumnCellCount(groupCellColSpan, options); options.isFixed = false; const startColumnIndex = options.columns.length - alignByFixedColumnCellCount; options = (0, _extend.extend)({}, options, { columns: this.getFixedColumns() }); const transparentColumnIndex = getTransparentColumnIndex(options.columns); if (startColumnIndex < transparentColumnIndex) { alignByFixedColumnCellCount -= options.columns[transparentColumnIndex].colspan - 1 || 0; groupCellColSpan -= options.columns[transparentColumnIndex].colspan - 1 || 0 } else if (alignByColumnCellCount > 0) { $groupCell.css("visibility", "hidden") } alignByColumnCellCount = alignByFixedColumnCellCount } super._renderGroupSummaryCellsCore($groupCell, options, groupCellColSpan, alignByColumnCellCount) } _getSummaryCellIndex(columnIndex, columns) { if (this._isFixedTableRendering) { const transparentColumnIndex = getTransparentColumnIndex(columns); if (columnIndex > transparentColumnIndex) { columnIndex += columns[transparentColumnIndex].colspan - 1 } return columnIndex } return super._getSummaryCellIndex.apply(this, arguments) } _renderCore(change) { this._detachHoverEvents(); const deferred = super._renderCore(change); const isFixedColumns = this._isFixedColumns; this.element().toggleClass("dx-fixed-columns", isFixedColumns); if (this.option("hoverStateEnabled") && isFixedColumns) { this._attachHoverEvents() } return deferred } setAriaOwns(headerTableId, footerTableId, isFixed) { if (isFixed) { var _this$element; const contentFixedClass = this.addWidgetPrefix("content-fixed"); const $contentFixedElement = null === (_this$element = this.element()) || void 0 === _this$element ? void 0 : _this$element.children(`.${contentFixedClass}`); const $fixedTableElement = this.getFixedTableElement(); if ($contentFixedElement.length && null !== $fixedTableElement && void 0 !== $fixedTableElement && $fixedTableElement.length) { this.setAria("owns", `${headerTableId??""} ${$fixedTableElement.attr("id")??""} ${footerTableId??""}`.trim(), $contentFixedElement) } } else { super.setAriaOwns.apply(this, arguments) } } toggleDraggableColumnClass(columnIndex, value) { super.toggleDraggableColumnClass(columnIndex, value); if (this.isFixedColumns()) { const $rows = this._getRowElements(this._fixedTableElement); this._toggleDraggableSourceColumnClass($rows, this.getFixedColumns(), columnIndex, value) } } getCellIndex($cell) { const $fixedTable = this._fixedTableElement; let cellIndex = 0; if ($fixedTable && $cell.is("td") && $cell.closest($fixedTable).length) { const columns = this.getFixedColumns(); (0, _iterator.each)(columns, ((index, column) => { if (index === $cell[0].cellIndex) { return false } if (column.colspan) { cellIndex += column.colspan; return } cellIndex++; return })); return cellIndex } return super.getCellIndex.apply(this, arguments) } _updateFixedTablePosition(scrollTop, needFocus) { if (this._fixedTableElement && this._tableElement) { let $focusedElement; this._fixedTableElement.parent().scrollTop(scrollTop); if (needFocus && this._editorFactoryController) { $focusedElement = this._editorFactoryController.focus(); $focusedElement && this._editorFactoryController.focus($focusedElement) } } } setScrollerSpacing(vWidth, hWidth) { const that = this; const styles = { marginBottom: 0 }; const $fixedContent = that.element().children(`.${this.addWidgetPrefix("content-fixed")}`); if ($fixedContent.length && that._fixedTableElement) { $fixedContent.css(styles); that._fixedTableElement.css(styles); styles[that.option("rtlEnabled") ? "marginLeft" : "marginRight"] = vWidth; styles.marginBottom = hWidth; const useNativeScrolling = that._scrollable && that._scrollable.option("useNative"); (useNativeScrolling ? $fixedContent : that._fixedTableElement).css(styles) } } _getElasticScrollTop(e) { let elasticScrollTop = 0; if (e.scrollOffset.top < 0) { elasticScrollTop = -e.scrollOffset.top } else if (e.reachedBottom) { const $scrollableContent = (0, _renderer.default)(e.component.content()); const $scrollableContainer = (0, _renderer.default)(e.component.container()); const maxScrollTop = Math.max($scrollableContent.get(0).clientHeight - $scrollableContainer.get(0).clientHeight, 0); elasticScrollTop = Math.min(maxScrollTop - e.scrollOffset.top, 0) } return Math.floor(elasticScrollTop) } _applyElasticScrolling(e) { if (this._fixedTableElement) { const elasticScrollTop = this._getElasticScrollTop(e); if (0 !== Math.ceil(elasticScrollTop)) { (0, _translator.move)(this._fixedTableElement, { top: elasticScrollTop }) } else { this._fixedTableElement.css("transform", "") } } } _handleScroll(e) { this._updateFixedTablePosition(e.scrollOffset.top, true); this._applyElasticScrolling(e); super._handleScroll(e) } _updateContentPosition(isRender) { super._updateContentPosition.apply(this, arguments); if (!isRender) { this._updateFixedTablePosition(this._scrollTop) } } _afterRowPrepared(e) { if (this._isFixedTableRendering) { return } super._afterRowPrepared(e) } _scrollToElement($element, offset) { const scrollOffset = this.isFixedColumns() ? this.getFixedColumnsOffset() : offset; super._scrollToElement($element, scrollOffset) } }, footerView: Base => class extends(baseFixedColumns(Base)) {} }, controllers: { draggingHeader: Base => class extends Base { _generatePointsByColumns(options, needToCheckPrevPoint) { const visibleColumns = options.columns; const { targetDraggingPanel: targetDraggingPanel } = options; if (targetDraggingPanel && "headers" === targetDraggingPanel.getName() && targetDraggingPanel.isFixedColumns()) { if (options.sourceColumn.fixed) { if (!options.rowIndex) { options.columnElements = targetDraggingPanel.getFixedColumnElements(0) } options.columns = targetDraggingPanel.getFixedColumns(options.rowIndex); const pointsByColumns = super._generatePointsByColumns(options, needToCheckPrevPoint); ! function(columns, fixedColumns, pointsByColumns) { const transparentColumnIndex = getTransparentColumnIndex(fixedColumns); const correctIndex = columns.length - fixedColumns.length; (0, _iterator.each)(pointsByColumns, ((_, point) => { if (point.index > transparentColumnIndex) { point.columnIndex += correctIndex; point.index += correctIndex } })); return pointsByColumns }(visibleColumns, options.columns, pointsByColumns); return pointsByColumns } } return super._generatePointsByColumns(options, needToCheckPrevPoint) } _pointCreated(point, columns, location, sourceColumn) { const result = super._pointCreated.apply(this, arguments); const targetColumn = columns[point.columnIndex]; const $transparentColumn = this._columnHeadersView.getTransparentColumnElement(); if (!result && "headers" === location && $transparentColumn && $transparentColumn.length) { const boundingRect = (0, _position.getBoundingRect)($transparentColumn.get(0)); if (sourceColumn && sourceColumn.fixed) { return "right" === sourceColumn.fixedPosition ? point.x < boundingRect.right : point.x > boundingRect.left } if (targetColumn && targetColumn.fixed && "right" !== targetColumn.fixedPosition) { return true } return point.x < boundingRect.left || point.x > boundingRect.right } return result } }, columnsResizer: Base => class extends Base { _generatePointsByColumns(needToCheckPrevPoint) { const that = this; const columnsController = that._columnsController; const columns = columnsController && that._columnsController.getVisibleColumns(); const fixedColumns = columnsController && that._columnsController.getFixedColumns(); const transparentColumnIndex = getTransparentColumnIndex(fixedColumns); const correctIndex = columns.length - fixedColumns.length; const cells = that._columnHeadersView.getFixedColumnElements(); super._generatePointsByColumns(needToCheckPrevPoint); if (cells && cells.length > 0) { that._pointsByFixedColumns = _m_utils.default.getPointsByColumns(cells, (point => { if (point.index > transparentColumnIndex) { point.columnIndex += correctIndex; point.index += correctIndex } return that._pointCreated(point, columns.length, columns) })) } } _getTargetPoint(pointsByColumns, currentX, deltaX) { const $transparentColumn = this._columnHeadersView.getTransparentColumnElement(); if ($transparentColumn && $transparentColumn.length) { const boundingRect = (0, _position.getBoundingRect)($transparentColumn.get(0)); if (currentX <= boundingRect.left || currentX >= boundingRect.right) { return super._getTargetPoint(this._pointsByFixedColumns, currentX, deltaX) } } return super._getTargetPoint(pointsByColumns, currentX, deltaX) } }, resizing: Base => class extends Base { _setAriaOwns() { var _this$_columnHeadersV, _this$_footerView, _this$_rowsView; super._setAriaOwns.apply(this, arguments); const headerFixedTable = null === (_this$_columnHeadersV = this._columnHeadersView) || void 0 === _this$_columnHeadersV ? void 0 : _this$_columnHeadersV.getFixedTableElement(); const footerFixedTable = null === (_this$_footerView = this._footerView) || void 0 === _this$_footerView ? void 0 : _this$_footerView.getFixedTableElement(); null === (_this$_rowsView = this._rowsView) || void 0 === _this$_rowsView || _this$_rowsView.setAriaOwns(null === headerFixedTable || void 0 === headerFixedTable ? void 0 : headerFixedTable.attr("id"), null === footerFixedTable || void 0 === footerFixedTable ? void 0 : footerFixedTable.attr("id"), true) } }, keyboardNavigation: Base => class extends Base { _toggleInertAttr(value) { var _this$_rowsView2; const $fixedContent = null === (_this$_rowsView2 = this._rowsView) || void 0 === _this$_rowsView2 ? void 0 : _this$_rowsView2.getFixedContentElement(); if (value) { null === $fixedContent || void 0 === $fixedContent || $fixedContent.attr("inert", true) } else { null === $fixedContent || void 0 === $fixedContent || $fixedContent.removeAttr("inert") } } }, editorFactory: Base => class extends Base { getValidationMessageContainer($cell) { const isFixedColumns = this._rowsView.isFixedColumns(); if (isFixedColumns) { return this._rowsView.element() } return super.getValidationMessageContainer($cell) } } } } } }, 88568: /*!***********************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/grid_core/column_headers/m_column_headers.js ***! \***********************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.columnHeadersModule = exports.ColumnHeadersView = void 0; var _events_engine = _interopRequireDefault(__webpack_require__( /*! ../../../../common/core/events/core/events_engine */ 92774)); var _message = _interopRequireDefault(__webpack_require__( /*! ../../../../common/core/localization/message */ 4671)); var _dom_adapter = _interopRequireDefault(__webpack_require__( /*! ../../../../core/dom_adapter */ 64960)); var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../../../core/renderer */ 64553)); var _deferred = __webpack_require__( /*! ../../../../core/utils/deferred */ 87739); var _extend = __webpack_require__( /*! ../../../../core/utils/extend */ 52576); var _iterator = __webpack_require__( /*! ../../../../core/utils/iterator */ 21274); var _size = __webpack_require__( /*! ../../../../core/utils/size */ 57653); var _type = __webpack_require__( /*! ../../../../core/utils/type */ 11528); var _m_column_context_menu_mixin = __webpack_require__( /*! ../../../grids/grid_core/context_menu/m_column_context_menu_mixin */ 16217); var _const = __webpack_require__( /*! ../columns_resizing_reordering/const */ 91066); var _m_accessibility = __webpack_require__( /*! ../m_accessibility */ 68491); var _m_columns_view = __webpack_require__( /*! ../views/m_columns_view */ 48921); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } const createCellContent = function(that, $cell, options) { const $cellContent = (0, _renderer.default)("
").addClass(that.addWidgetPrefix("text-content")); that.setAria("role", "presentation", $cellContent); addCssClassesToCellContent(that, $cell, options.column, $cellContent); const showColumnLines = that.option("showColumnLines"); const contentAlignment = that.getController("columns").getHeaderContentAlignment(options.column.alignment); return $cellContent[showColumnLines || "right" === contentAlignment ? "appendTo" : "prependTo"]($cell) }; function addCssClassesToCellContent(that, $cell, column, $cellContent) { const $indicatorElements = that._getIndicatorElements($cell, true); const $visibleIndicatorElements = that._getIndicatorElements($cell); const indicatorCount = null === $indicatorElements || void 0 === $indicatorElements ? void 0 : $indicatorElements.length; const columnAlignment = that._getColumnAlignment(column.alignment); const sortIndicatorClassName = `.${that._getIndicatorClassName("sort")}`; const sortIndexIndicatorClassName = `.${that._getIndicatorClassName("sortIndex")}`; const $sortIndicator = $visibleIndicatorElements.filter(sortIndicatorClassName); const $sortIndexIndicator = $visibleIndicatorElements.children().filter(sortIndexIndicatorClassName); $cellContent = $cellContent || $cell.children(`.${that.addWidgetPrefix("text-content")}`); $cellContent.toggleClass("dx-text-content-alignment-" + columnAlignment, indicatorCount > 0).toggleClass("dx-text-content-alignment-" + ("left" === columnAlignment ? "right" : "left"), indicatorCount > 0 && "center" === column.alignment).toggleClass("dx-sort-indicator", !!$sortIndicator.length).toggleClass("dx-sort-index-indicator", !!$sortIndexIndicator.length).toggleClass("dx-header-filter-indicator", !!$visibleIndicatorElements.filter(`.${that._getIndicatorClassName("headerFilter")}`).length) } class ColumnHeadersView extends((0, _m_column_context_menu_mixin.ColumnContextMenuMixin)(_m_columns_view.ColumnsView)) { init() { super.init(); this._headerPanelView = this.getView("headerPanel"); this._headerFilterController = this.getController("headerFilter"); this._dataController = this.getController("data"); this._headersKeyboardNavigation = this.getController("headersKeyboardNavigation") } _createTable() { const $table = super._createTable.apply(this, arguments); _events_engine.default.on($table, "mousedown selectstart", this.createAction((e => { const { event: event } = e; if (event.shiftKey) { event.preventDefault() } }))); return $table } _isLegacyKeyboardNavigation() { return this.option("useLegacyKeyboardNavigation") } _getDefaultTemplate(column) { const that = this; return function($container, options) { const { caption: caption } = column; const needCellContent = !column.command || caption && "expand" !== column.command; if ("empty" === column.command) { that._renderEmptyMessage($container, options) } else if (needCellContent) { const $content = createCellContent(that, $container, options); $content.text(caption) } else if (column.command) { $container.html(" ") } } } _renderEmptyMessage($container, options) { const textEmpty = this._getEmptyHeaderText(); if (!textEmpty) { $container.html(" "); return } const $cellContent = createCellContent(this, $container, options); const needSplit = textEmpty.includes("{0}"); if (needSplit) { const [leftPart, rightPart] = textEmpty.split("{0}"); const columnChooserTitle = _message.default.format("dxDataGrid-emptyHeaderColumnChooserText"); const columnChooserView = this._columnChooserView; const $link = (0, _renderer.default)("").text(columnChooserTitle).addClass("dx-link"); _events_engine.default.on($link, "click", this.createAction((() => columnChooserView.showColumnChooser()))); $cellContent.append(_dom_adapter.default.createTextNode(leftPart)).append($link).append(_dom_adapter.default.createTextNode(rightPart)) } else { $cellContent.text(textEmpty) } } _getEmptyHeaderText() { const hasHiddenColumns = !!this._columnChooserView.hasHiddenColumns(); const hasGroupedColumns = !!this._headerPanelView.hasGroupedColumns(); switch (true) { case hasHiddenColumns && hasGroupedColumns: return _message.default.format("dxDataGrid-emptyHeaderWithColumnChooserAndGroupPanelText"); case hasGroupedColumns: return _message.default.format("dxDataGrid-emptyHeaderWithGroupPanelText"); case hasHiddenColumns: return _message.default.format("dxDataGrid-emptyHeaderWithColumnChooserText"); default: return "" } } _getHeaderTemplate(column) { return column.headerCellTemplate || { allowRenderToDetachedContainer: true, render: this._getDefaultTemplate(column) } } _processTemplate(template, options) { const that = this; let resultTemplate; const { column: column } = options; const renderingTemplate = super._processTemplate(template); if ("header" === options.rowType && renderingTemplate && column.headerCellTemplate && !column.command) { resultTemplate = { render(options) { const $content = createCellContent(that, options.container, options.model); renderingTemplate.render((0, _extend.extend)({}, options, { container: $content })) } } } else { resultTemplate = renderingTemplate } return resultTemplate } _handleDataChanged(e) { if ("refresh" !== e.changeType) { return } if (this._isGroupingChanged || this._requireReady) { this._isGroupingChanged = false; this.render() } } _renderCell($row, options) { const $cell = super._renderCell($row, options); if ("header" === options.row.rowType) { $cell.addClass("dx-cell-focus-disabled"); if (!this._isLegacyKeyboardNavigation()) { const { column: column } = options; const isCustomCommandColumn = this._columnsController.isCustomCommandColumn(column); if (column && (!column.type || isCustomCommandColumn)) { $cell.attr("tabindex", this.option("tabindex") || 0) } } } return $cell } _setCellAriaAttributes($cell, cellOptions, options) { super._setCellAriaAttributes($cell, cellOptions, options); if ("header" === cellOptions.rowType) { if (!cellOptions.column.type) { this.setAria("role", "columnheader", $cell) } if (cellOptions.column && !cellOptions.column.command && !cellOptions.column.isBand) { $cell.attr("id", cellOptions.column.headerId); this.setAria("label", `${_message.default.format("dxDataGrid-ariaColumn")} ${cellOptions.column.caption}`, $cell) } } } _createRow(row) { const $row = super._createRow.apply(this, arguments); $row.toggleClass("dx-column-lines", this.option("showColumnLines")); if ("header" === row.rowType) { $row.addClass("dx-header-row"); if (!this._isLegacyKeyboardNavigation()) { (0, _m_accessibility.registerKeyboardAction)("columnHeaders", this, $row, "td", this._handleActionKeyDown.bind(this)) } } return $row } _processHeaderAction(event, $row) {} _handleActionKeyDown(args) { const { event: event } = args; const $target = (0, _renderer.default)(event.target); this._lastActionElement = event.target; if ($target.is(".dx-header-filter")) { const headerFilterController = this._headerFilterController; const $column = $target.closest("td"); const columnIndex = this.getColumnIndexByElement($column); if (columnIndex >= 0) { headerFilterController.showHeaderFilterMenu(columnIndex, false) } } else { const $row = $target.closest(".dx-row"); this._processHeaderAction(event, $row) } event.preventDefault() } _renderCore() { const $container = this.element(); const change = {}; if (this._tableElement && !this._dataController.isLoaded() && !this._hasRowElements) { return (new _deferred.Deferred).resolve() } $container.addClass(this.addWidgetPrefix("headers")).toggleClass(this.addWidgetPrefix("nowrap"), !this.option("wordWrapEnabled")); this.setAria("role", "presentation", $container); const deferred = this._updateContent(this._renderTable({ change: change }), change); $container.toggleClass("dx-header-multi-row", this.getRowCount() > 1); super._renderCore.apply(this, arguments); return deferred } _renderRows() { const that = this; if (that._dataController.isLoaded() || that._hasRowElements) { super._renderRows.apply(that, arguments); that._hasRowElements = true } } _renderRow($table, options) { const rowIndex = 1 === this.getRowCount() ? null : options.row.rowIndex; options.columns = this.getColumns(rowIndex); super._renderRow($table, options) } _createCell(options) { const { column: column } = options; const $cellElement = super._createCell.apply(this, arguments); column.rowspan > 1 && "header" === options.rowType && $cellElement.attr("rowSpan", column.rowspan); return $cellElement } _getRows() { const result = []; const rowCount = this.getRowCount(); if (this.option("showColumnHeaders")) { for (let i = 0; i < rowCount; i++) { result.push({ rowType: "header", rowIndex: i }) } } return result } _getCellTemplate(options) { if ("header" === options.rowType) { return this._getHeaderTemplate(options.column) } } _columnOptionChanged(e) { const { changeTypes: changeTypes } = e; const { optionNames: optionNames } = e; if (changeTypes.grouping || changeTypes.groupExpanding) { if (changeTypes.grouping) { this._isGroupingChanged = true } return } super._columnOptionChanged(e); if (optionNames.width || optionNames.visible) { this.resizeCompleted.fire() } } _isElementVisible(elementOptions) { return null === elementOptions || void 0 === elementOptions ? void 0 : elementOptions.visible } _alignCaptionByCenter($cell) { var _$indicatorsContainer; let $indicatorsContainer = this._getIndicatorContainer($cell, true); if (null !== (_$indicatorsContainer = $indicatorsContainer) && void 0 !== _$indicatorsContainer && _$indicatorsContainer.length) { $indicatorsContainer.filter(".dx-visibility-hidden").remove(); $indicatorsContainer = this._getIndicatorContainer($cell); $indicatorsContainer.clone().addClass("dx-visibility-hidden").css("float", "").insertBefore($cell.children(`.${this.addWidgetPrefix("text-content")}`)) } } _updateCell($cell, options) { if ("header" === options.rowType && "center" === options.column.alignment) { this._alignCaptionByCenter($cell) } super._updateCell.apply(this, arguments) } _updateIndicator($cell, column, indicatorName) { const $indicatorElement = super._updateIndicator.apply(this, arguments); if ("center" === column.alignment) { this._alignCaptionByCenter($cell) } addCssClassesToCellContent(this, $cell, column); return $indicatorElement } _getIndicatorContainer($cell, returnAll) { const $indicatorsContainer = super._getIndicatorContainer($cell); return returnAll ? $indicatorsContainer : $indicatorsContainer.filter(":not(.dx-visibility-hidden)") } _isSortableElement($target) { return true } getHeadersRowHeight() { const $tableElement = this.getTableElement(); const $headerRows = null === $tableElement || void 0 === $tableElement ? void 0 : $tableElement.find(".dx-header-row"); return (null === $headerRows || void 0 === $headerRows ? void 0 : $headerRows.toArray().reduce(((sum, headerRow) => sum + (0, _size.getHeight)(headerRow)), 0)) || 0 } getHeaderElement(index) { const $columnElements = this.getColumnElements(); return (null === $columnElements || void 0 === $columnElements ? void 0 : $columnElements.eq(index)) ?? (0, _renderer.default)("") } getColumnElements(index, bandColumnIndex) { const that = this; let $cellElement; const columnsController = that._columnsController; const rowCount = that.getRowCount(); if (that.option("showColumnHeaders")) { if (rowCount > 1 && (!(0, _type.isDefined)(index) || (0, _type.isDefined)(bandColumnIndex))) { const result = []; const visibleColumns = (0, _type.isDefined)(bandColumnIndex) ? columnsController.getChildrenByBandColumn(bandColumnIndex, true) : columnsController.getVisibleColumns(); (0, _iterator.each)(visibleColumns, ((_, column) => { const rowIndex = (0, _type.isDefined)(index) ? index : columnsController.getRowIndex(column.index); $cellElement = that._getCellElement(rowIndex, columnsController.getVisibleIndex(column.index, rowIndex)); $cellElement && result.push($cellElement.get(0)) })); return (0, _renderer.default)(result) } if (!index || index < rowCount) { return that.getCellElements(index || 0) } } return } getColumnIndexByElement($cell) { const cellIndex = this.getCellIndex($cell); const $row = $cell.closest(".dx-row"); const { rowIndex: rowIndex } = $row[0]; const column = this.getColumns(rowIndex)[cellIndex]; return column ? column.index : -1 } getVisibleColumnIndex(columnIndex, rowIndex) { const column = this.getColumns()[columnIndex]; return column ? this._columnsController.getVisibleIndex(column.index, rowIndex) : -1 } getColumnWidths($tableElement, rowIndex) { const $columnElements = this.getColumnElements(rowIndex); if (null !== $columnElements && void 0 !== $columnElements && $columnElements.length) { return this._getWidths($columnElements) } return super.getColumnWidths.apply(this, arguments) } isColumnReorderingEnabled(column) { return column.allowReordering && (this.option("allowColumnReordering") ?? this._columnsController.isColumnOptionUsed("allowReordering")) } allowDragging(column) { const rowIndex = column && this._columnsController.getRowIndex(column.index); const columns = this.getColumns(rowIndex); return this.isColumnReorderingEnabled(column) && columns.length > 1 } getBoundingRect() { const that = this; const $columnElements = that.getColumnElements(); if (null !== $columnElements && void 0 !== $columnElements && $columnElements.length) { const offset = that.getTableElement().offset(); return { top: offset.top } } return null } getName() { return "headers" } getColumnCount() { const $columnElements = this.getColumnElements(); return $columnElements ? $columnElements.length : 0 } isVisible() { return this.option("showColumnHeaders") } optionChanged(args) { const that = this; switch (args.name) { case "showColumnHeaders": case "wordWrapEnabled": case "showColumnLines": that._invalidate(true, true); args.handled = true; break; default: super.optionChanged(args) } } getHeight() { return this.getElementHeight() } getContextMenuItems(options) { let items; const { column: column } = options; if (options.row && ("header" === options.row.rowType || "detailAdaptive" === options.row.rowType)) { const sortingOptions = this.option("sorting"); if (sortingOptions && "none" !== sortingOptions.mode && null !== column && void 0 !== column && column.allowSorting) { const onItemClick = params => { setTimeout((() => { this._columnsController.changeSortOrder(column.index, params.itemData.value) })) }; items = [{ text: sortingOptions.ascendingText, value: "asc", disabled: "asc" === column.sortOrder, icon: "context-menu-sort-asc", onItemClick: onItemClick }, { text: sortingOptions.descendingText, value: "desc", disabled: "desc" === column.sortOrder, icon: "context-menu-sort-desc", onItemClick: onItemClick }, { name: "clearSorting", text: sortingOptions.clearText, value: "none", disabled: !column.sortOrder, icon: "context-menu-sort-none", onItemClick: onItemClick }] } if ("header" === options.row.rowType) { const moveColumnItems = this.getMoveColumnContextMenuItems(options); if (null !== moveColumnItems && void 0 !== moveColumnItems && moveColumnItems.length) { items = items ?? []; items.push(...moveColumnItems) } } } return items } getRowCount() { var _this$_columnsControl; return null === (_this$_columnsControl = this._columnsController) || void 0 === _this$_columnsControl ? void 0 : _this$_columnsControl.getRowCount() } toggleDraggableColumnClass(columnIndex, value, rowIndex) { let i; let columnElements; const rowCount = this.getRowCount(); const columns = this._columnsController.getColumns(); const column = null === columns || void 0 === columns ? void 0 : columns[columnIndex]; const columnID = (null === column || void 0 === column ? void 0 : column.isBand) && column.index; const setColumnClass = (column, index) => { if (column.ownerBand === columnID) { columnElements.eq(index).toggleClass(this.addWidgetPrefix(_const.CLASSES.draggableColumn), value); if (column.isBand) { this.toggleDraggableColumnClass(column.index, value, i + 1) } } }; if ((0, _type.isDefined)(columnID)) { rowIndex = rowIndex || 0; for (i = rowIndex; i < rowCount; i++) { columnElements = this.getCellElements(i); if (columnElements) { const rowColumns = this.getColumns(i); rowColumns.forEach(setColumnClass) } } } } isFilterRowCell($cell) { return false } getKeyboardNavigationController() { return this._headersKeyboardNavigation } } exports.ColumnHeadersView = ColumnHeadersView; exports.columnHeadersModule = { defaultOptions: () => ({ showColumnHeaders: true, cellHintEnabled: true }), views: { columnHeadersView: ColumnHeadersView } } }, 96790: /*!*******************************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/grid_core/column_state_mixin/m_column_state_mixin.js ***! \*******************************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = exports.ColumnStateMixin = void 0; var _renderer = (e = __webpack_require__( /*! ../../../../core/renderer */ 64553), e && e.__esModule ? e : { default: e }); var e; var _extend = __webpack_require__( /*! ../../../../core/utils/extend */ 52576); var _position = __webpack_require__( /*! ../../../../core/utils/position */ 41639); const ColumnStateMixin = Base => class extends Base { _applyColumnState(options) { var _that$component; const rtlEnabled = this.option("rtlEnabled"); const columnAlignment = this._getColumnAlignment(options.column.alignment, rtlEnabled); const parameters = (0, _extend.extend)(true, { columnAlignment: columnAlignment }, options); const isGroupPanelItem = parameters.rootElement.hasClass("dx-group-panel-item"); const $indicatorsContainer = this._createIndicatorContainer(parameters, isGroupPanelItem); const $span = (0, _renderer.default)("").addClass(this._getIndicatorClassName(options.name)); const columnsController = null === (_that$component = this.component) || void 0 === _that$component ? void 0 : _that$component.getController("columns"); const indicatorAlignment = (null === columnsController || void 0 === columnsController ? void 0 : columnsController.getHeaderContentAlignment(columnAlignment)) || columnAlignment; parameters.container = $indicatorsContainer; parameters.indicator = $span; this._renderIndicator(parameters); $indicatorsContainer[(isGroupPanelItem || !options.showColumnLines) && "left" === indicatorAlignment ? "appendTo" : "prependTo"](options.rootElement); return $span } _getIndicatorClassName(name) {} _getColumnAlignment(alignment, rtlEnabled) { rtlEnabled = rtlEnabled || this.option("rtlEnabled"); return alignment && "center" !== alignment ? alignment : (0, _position.getDefaultAlignment)(rtlEnabled) } _createIndicatorContainer(options, ignoreIndicatorAlignment) { let $indicatorsContainer = this._getIndicatorContainer(options.rootElement); const indicatorAlignment = "left" === options.columnAlignment ? "right" : "left"; if (!$indicatorsContainer.length) { $indicatorsContainer = (0, _renderer.default)("
").addClass("dx-column-indicators") } this.setAria("role", "presentation", $indicatorsContainer); return $indicatorsContainer.css("float", options.showColumnLines && !ignoreIndicatorAlignment ? indicatorAlignment : null) } _getIndicatorContainer($cell) { return $cell && $cell.find(".dx-column-indicators") } _getIndicatorElements($cell) { const $indicatorContainer = this._getIndicatorContainer($cell); return $indicatorContainer && $indicatorContainer.children() } _renderIndicator(options) { const $container = options.container; const $indicator = options.indicator; $container && $indicator && $container.append($indicator) } _updateIndicators(indicatorName) { const that = this; const columns = that.getColumns(); const $cells = that.getColumnElements(); let $cell; if (!$cells || columns.length !== $cells.length) { return } for (let i = 0; i < columns.length; i++) { $cell = $cells.eq(i); that._updateIndicator($cell, columns[i], indicatorName); const rowOptions = $cell.parent().data("options"); if (rowOptions && rowOptions.cells) { rowOptions.cells[$cell.index()].column = columns[i] } } } _updateIndicator($cell, column, indicatorName) { if (!column.command) { return this._applyColumnState({ name: indicatorName, rootElement: $cell, column: column, showColumnLines: this.option("showColumnLines") }) } return } }; exports.ColumnStateMixin = ColumnStateMixin; exports.default = ColumnStateMixin }, 48795: /*!****************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/grid_core/columns_controller/const.js ***! \****************************************************************************************************/ function(__unused_webpack_module, exports) { Object.defineProperty(exports, "__esModule", { value: true }); exports.USER_STATE_FIELD_NAMES_15_1 = exports.USER_STATE_FIELD_NAMES = exports.MAX_SAFE_INTEGER = exports.IGNORE_COLUMN_OPTION_NAMES = exports.GROUP_LOCATION = exports.GROUP_COMMAND_COLUMN_NAME = exports.DETAIL_COMMAND_COLUMN_NAME = exports.DEFAULT_COLUMN_OPTIONS = exports.DATATYPE_OPERATIONS = exports.COMMAND_EXPAND_CLASS = exports.COLUMN_OPTION_REGEXP = exports.COLUMN_INDEX_OPTIONS = exports.COLUMN_CHOOSER_LOCATION = void 0; const USER_STATE_FIELD_NAMES_15_1 = exports.USER_STATE_FIELD_NAMES_15_1 = ["filterValues", "filterType", "fixed", "fixedPosition"]; exports.USER_STATE_FIELD_NAMES = ["visibleIndex", "dataField", "name", "dataType", "width", "visible", "sortOrder", "lastSortOrder", "sortIndex", "groupIndex", "filterValue", "bufferedFilterValue", "selectedFilterOperation", "bufferedSelectedFilterOperation", "added"].concat(USER_STATE_FIELD_NAMES_15_1); exports.IGNORE_COLUMN_OPTION_NAMES = { visibleWidth: true, bestFitWidth: true, bufferedFilterValue: true }; exports.COMMAND_EXPAND_CLASS = "dx-command-expand"; exports.MAX_SAFE_INTEGER = Number.MAX_SAFE_INTEGER || 9007199254740991; exports.GROUP_COMMAND_COLUMN_NAME = "groupExpand"; exports.DETAIL_COMMAND_COLUMN_NAME = "detailExpand"; exports.COLUMN_OPTION_REGEXP = /columns\[(\d+)\]\.?/gi; exports.DEFAULT_COLUMN_OPTIONS = { visible: true, showInColumnChooser: true }; exports.DATATYPE_OPERATIONS = { number: ["=", "<>", "<", ">", "<=", ">=", "between"], string: ["contains", "notcontains", "startswith", "endswith", "=", "<>"], date: ["=", "<>", "<", ">", "<=", ">=", "between"], datetime: ["=", "<>", "<", ">", "<=", ">=", "between"] }; exports.COLUMN_INDEX_OPTIONS = { visibleIndex: true, groupIndex: true, grouped: true, sortIndex: true, sortOrder: true }; exports.GROUP_LOCATION = "group"; exports.COLUMN_CHOOSER_LOCATION = "columnChooser" }, 17798: /*!*******************************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/grid_core/columns_controller/m_columns_controller.js ***! \*******************************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.columnsControllerModule = exports.ColumnsController = void 0; var _date = _interopRequireDefault(__webpack_require__( /*! ../../../../common/core/localization/date */ 38662)); var _message = _interopRequireDefault(__webpack_require__( /*! ../../../../common/core/localization/message */ 4671)); var _data_source = __webpack_require__( /*! ../../../../common/data/data_source/data_source */ 68216); var _utils = __webpack_require__( /*! ../../../../common/data/data_source/utils */ 97169); var _config = _interopRequireDefault(__webpack_require__( /*! ../../../../core/config */ 66636)); var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../../../core/renderer */ 64553)); var _callbacks = _interopRequireDefault(__webpack_require__( /*! ../../../../core/utils/callbacks */ 84718)); var _data = __webpack_require__( /*! ../../../../core/utils/data */ 31e3); var _deferred = __webpack_require__( /*! ../../../../core/utils/deferred */ 87739); var _extend = __webpack_require__( /*! ../../../../core/utils/extend */ 52576); var _iterator = __webpack_require__( /*! ../../../../core/utils/iterator */ 21274); var _object = __webpack_require__( /*! ../../../../core/utils/object */ 22263); var _type = __webpack_require__( /*! ../../../../core/utils/type */ 11528); var _variable_wrapper = _interopRequireDefault(__webpack_require__( /*! ../../../../core/utils/variable_wrapper */ 40216)); var _abstract_store = _interopRequireDefault(__webpack_require__( /*! ../../../../data/abstract_store */ 77735)); var _filtering = _interopRequireDefault(__webpack_require__( /*! ../../../../ui/shared/filtering */ 56417)); var _ui = _interopRequireDefault(__webpack_require__( /*! ../../../../ui/widget/ui.errors */ 35185)); var _m_inflector = _interopRequireDefault(__webpack_require__( /*! ../../../core/utils/m_inflector */ 66122)); var _m_modules = _interopRequireDefault(__webpack_require__( /*! ../m_modules */ 74854)); var _m_utils = _interopRequireDefault(__webpack_require__( /*! ../m_utils */ 53226)); var _const = __webpack_require__( /*! ../sticky_columns/const */ 87396); var _const2 = __webpack_require__( /*! ./const */ 48795); var _m_columns_controller_utils = __webpack_require__( /*! ./m_columns_controller_utils */ 63904); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } function _extends() { return _extends = Object.assign ? Object.assign.bind() : function(n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) { ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]) } } return n }, _extends.apply(null, arguments) } class ColumnsController extends _m_modules.default.Controller { init(isApplyingUserState) { this._dataController = this.getController("data"); this._focusController = this.getController("focus"); this._stateStoringController = this.getController("stateStoring"); const columns = this.option("columns"); this._commandColumns = this._commandColumns || []; this._columns = this._columns || []; this._isColumnsFromOptions = !!columns; if (this._isColumnsFromOptions) { (0, _m_columns_controller_utils.assignColumns)(this, columns ? (0, _m_columns_controller_utils.createColumnsFromOptions)(this, columns) : []); (0, _m_columns_controller_utils.applyUserState)(this) } else { (0, _m_columns_controller_utils.assignColumns)(this, this._columnsUserState ? (0, _m_columns_controller_utils.createColumnsFromOptions)(this, this._columnsUserState) : this._columns) }(0, _m_columns_controller_utils.addExpandColumn)(this); if (this._dataSourceApplied) { this.applyDataSource(this._dataSource, true, isApplyingUserState) } else { (0, _m_columns_controller_utils.updateIndexes)(this) } this._checkColumns() } _getExpandColumnOptions() { return { type: "expand", command: "expand", width: "auto", cssClass: _const2.COMMAND_EXPAND_CLASS, allowEditing: false, allowGrouping: false, allowSorting: false, allowResizing: false, allowReordering: false, allowHiding: false } } _getFirstItems(dataSource) { let groupsCount; let items = []; const getFirstItemsCore = function(items, groupsCount) { if (!items || !groupsCount) { return items } for (let i = 0; i < items.length; i++) { const childItems = getFirstItemsCore(items[i].items || items[i].collapsedItems, groupsCount - 1); if (childItems && childItems.length) { return childItems } } }; if (dataSource && dataSource.items().length > 0) { groupsCount = _m_utils.default.normalizeSortingInfo(dataSource.group()).length; items = getFirstItemsCore(dataSource.items(), groupsCount) || [] } return items } _endUpdateCore() { !this._skipProcessingColumnsChange && (0, _m_columns_controller_utils.fireColumnsChanged)(this) } callbackNames() { return ["columnsChanged"] } getColumnByPath(path, columns) { const that = this; let column; const columnIndexes = []; path.replace(_const2.COLUMN_OPTION_REGEXP, ((_, columnIndex) => { columnIndexes.push(parseInt(columnIndex)); return "" })); if (columnIndexes.length) { if (columns) { column = columnIndexes.reduce(((column, index) => column && column.columns && column.columns[index]), { columns: columns }) } else { column = (0, _m_columns_controller_utils.getColumnByIndexes)(that, columnIndexes) } } return column } optionChanged(args) { let needUpdateRequireResize; switch (args.name) { case "adaptColumnWidthByRatio": args.handled = true; break; case "dataSource": if (args.value !== args.previousValue && !this.option("columns") && (!Array.isArray(args.value) || !Array.isArray(args.previousValue))) { this._columns = [] } break; case "columns": needUpdateRequireResize = this._skipProcessingColumnsChange; args.handled = true; if (!this._skipProcessingColumnsChange) { if (args.name === args.fullName) { this._columnsUserState = null; this._ignoreColumnOptionNames = null; this.init() } else { this._columnOptionChanged(args); needUpdateRequireResize = true } } if (needUpdateRequireResize) { this._updateRequireResize(args) } break; case "commonColumnSettings": case "columnAutoWidth": case "allowColumnResizing": case "allowColumnReordering": case "columnFixing": case "grouping": case "groupPanel": case "regenerateColumnsByVisibleItems": case "customizeColumns": case "columnHidingEnabled": case "dateSerializationFormat": case "columnResizingMode": case "columnMinWidth": case "columnWidth": { args.handled = true; const ignoreColumnOptionNames = "columnWidth" === args.fullName && ["width"]; this.reinit(ignoreColumnOptionNames); break } case "rtlEnabled": this.reinit(); break; default: super.optionChanged(args) } } _columnOptionChanged(args) { let columnOptionValue = {}; const column = this.getColumnByPath(args.fullName); const columnOptionName = args.fullName.replace(_const2.COLUMN_OPTION_REGEXP, ""); if (column) { if (columnOptionName) { columnOptionValue[columnOptionName] = args.value } else { columnOptionValue = args.value } this._skipProcessingColumnsChange = args.fullName; this.columnOption(column.index, columnOptionValue); this._skipProcessingColumnsChange = false } } _updateRequireResize(args) { const { component: component } = this; if ("width" === args.fullName.replace(_const2.COLUMN_OPTION_REGEXP, "") && component._updateLockCount) { component._requireResize = true } } publicMethods() { return ["addColumn", "deleteColumn", "columnOption", "columnCount", "clearSorting", "clearGrouping", "getVisibleColumns", "getVisibleColumnIndex", "getColumns"] } applyDataSource(dataSource, forceApplying, isApplyingUserState) { const that = this; const isDataSourceLoaded = dataSource && dataSource.isLoaded(); that._dataSource = dataSource; if (!that._dataSourceApplied || 0 === that._dataSourceColumnsCount || forceApplying || that.option("regenerateColumnsByVisibleItems")) { if (isDataSourceLoaded) { if (!that._isColumnsFromOptions) { const columnsFromDataSource = (0, _m_columns_controller_utils.createColumnsFromDataSource)(that, dataSource); if (columnsFromDataSource.length) { (0, _m_columns_controller_utils.assignColumns)(that, columnsFromDataSource); that._dataSourceColumnsCount = that._columns.length; (0, _m_columns_controller_utils.applyUserState)(that) } } return that.updateColumns(dataSource, forceApplying, isApplyingUserState) } that._dataSourceApplied = false; (0, _m_columns_controller_utils.updateIndexes)(that) } else if (isDataSourceLoaded && !that.isAllDataTypesDefined(true) && that.updateColumnDataTypes(dataSource)) { (0, _m_columns_controller_utils.updateColumnChanges)(that, "columns"); (0, _m_columns_controller_utils.fireColumnsChanged)(that); return (new _deferred.Deferred).reject().promise() } } reset() { this._dataSource = null; this._dataSourceApplied = false; this._dataSourceColumnsCount = void 0; this.reinit() } resetColumnsCache() { this._visibleColumns = void 0; this._fixedColumns = void 0; this._rowCount = void 0; (0, _m_columns_controller_utils.resetBandColumnsCache)(this) } reinit(ignoreColumnOptionNames) { this._columnsUserState = this.getUserState(); this._ignoreColumnOptionNames = ignoreColumnOptionNames || null; this.init(); if (ignoreColumnOptionNames) { this._ignoreColumnOptionNames = null } } isInitialized() { return !!this._columns.length || !!this.option("columns") } isDataSourceApplied() { return this._dataSourceApplied } getCommonSettings(column) { const commonColumnSettings = (!column || !column.type) && this.option("commonColumnSettings") || {}; const groupingOptions = this.option("grouping") ?? {}; const groupPanelOptions = this.option("groupPanel") ?? {}; return (0, _extend.extend)({ allowFixing: this.option("columnFixing.enabled"), allowResizing: this.option("allowColumnResizing") || void 0, allowReordering: this.option("allowColumnReordering"), minWidth: this.option("columnMinWidth"), width: this.option("columnWidth"), autoExpandGroup: groupingOptions.autoExpandAll, allowCollapsing: groupingOptions.allowCollapsing, allowGrouping: groupPanelOptions.allowColumnDragging && groupPanelOptions.visible || groupingOptions.contextMenuEnabled }, commonColumnSettings) } isColumnOptionUsed(optionName) { for (let i = 0; i < this._columns.length; i++) { if (this._columns[i][optionName]) { return true } } } isAllDataTypesDefined(checkSerializers) { const columns = this._columns; if (!columns.length) { return false } for (let i = 0; i < columns.length; i++) { if (!columns[i].dataField && columns[i].calculateCellValue === columns[i].defaultCalculateCellValue) { continue } if (!columns[i].dataType || checkSerializers && columns[i].deserializeValue && void 0 === columns[i].serializationFormat) { return false } } return true } getColumns() { return this._columns } isBandColumnsUsed() { return this.getColumns().some((column => column.isBand)) } getGroupColumns() { const result = []; (0, _iterator.each)(this._columns, (function() { const column = this; if ((0, _type.isDefined)(column.groupIndex)) { result[column.groupIndex] = column } })); return result } _shouldReturnVisibleColumns() { return true } _compileVisibleColumns(rowIndex) { this._visibleColumns = this._visibleColumns || this._compileVisibleColumnsCore(); rowIndex = (0, _type.isDefined)(rowIndex) ? rowIndex : this._visibleColumns.length - 1; return this._visibleColumns[rowIndex] || [] } getVisibleColumns(rowIndex, isBase) { if (!this._shouldReturnVisibleColumns()) { return [] } return this._compileVisibleColumns.apply(this, arguments) } getFixedColumns(rowIndex) { this._fixedColumns = this._fixedColumns || this._getFixedColumnsCore(); rowIndex = (0, _type.isDefined)(rowIndex) ? rowIndex : this._fixedColumns.length - 1; return this._fixedColumns[rowIndex] || [] } getFilteringColumns() { return this.getColumns().filter((item => (item.dataField || item.name) && (item.allowFiltering || item.allowHeaderFiltering))).map((item => { const field = (0, _extend.extend)(true, {}, item); if (!(0, _type.isDefined)(field.dataField)) { field.dataField = field.name } field.filterOperations = item.filterOperations !== item.defaultFilterOperations ? field.filterOperations : null; return field })) } getColumnIndexOffset() { return 0 } getStickyColumns(rowIndex) { const visibleColumns = this.getVisibleColumns(rowIndex, true); return visibleColumns.filter((column => column.fixed)) } _getFixedColumnsCore() { const that = this; const result = []; const rowCount = that.getRowCount(); const isColumnFixing = that._isColumnFixing(); const transparentColumn = { command: "transparent" }; let transparentColspan = 0; let notFixedColumnCount; let transparentColumnIndex; let lastFixedPosition; if (isColumnFixing) { for (let i = 0; i <= rowCount; i++) { notFixedColumnCount = 0; lastFixedPosition = null; transparentColumnIndex = null; const visibleColumns = that.getVisibleColumns(i, true); for (let j = 0; j < visibleColumns.length; j++) { const prevColumn = visibleColumns[j - 1]; const column = visibleColumns[j]; if (!column.fixed || column.fixedPosition === _const.StickyPosition.Sticky) { if (0 === i) { if (column.isBand && column.colspan) { transparentColspan += column.colspan } else { transparentColspan++ } } notFixedColumnCount++; if (!(0, _type.isDefined)(transparentColumnIndex)) { transparentColumnIndex = j } } else if (prevColumn && prevColumn.fixed && (0, _m_columns_controller_utils.getFixedPosition)(that, prevColumn) !== (0, _m_columns_controller_utils.getFixedPosition)(that, column)) { if (!(0, _type.isDefined)(transparentColumnIndex)) { transparentColumnIndex = j } } else { lastFixedPosition = column.fixedPosition } } if (0 === i && (0 === notFixedColumnCount || notFixedColumnCount >= visibleColumns.length)) { return [] } if (!(0, _type.isDefined)(transparentColumnIndex)) { transparentColumnIndex = "right" === lastFixedPosition ? 0 : visibleColumns.length } result[i] = visibleColumns.slice(0); if (!transparentColumn.colspan) { transparentColumn.colspan = transparentColspan } result[i].splice(transparentColumnIndex, notFixedColumnCount, transparentColumn) } } return result.map((columns => columns.map((column => { const newColumn = _extends({}, column); if (newColumn.headerId) { newColumn.headerId += "-fixed" } return newColumn })))) } _isColumnFixing() { let isColumnFixing = this.option("columnFixing.enabled"); !isColumnFixing && (0, _iterator.each)(this._columns, ((_, column) => { if (column.fixed) { isColumnFixing = true; return false } })); return isColumnFixing } _getExpandColumnsCore() { return this.getGroupColumns() } getExpandColumns() { let expandColumns = this._getExpandColumnsCore(); let expandColumn; const firstGroupColumn = expandColumns.filter((column => 0 === column.groupIndex))[0]; const isFixedFirstGroupColumn = firstGroupColumn && firstGroupColumn.fixed; const isColumnFixing = this._isColumnFixing(); const rtlEnabled = this.option("rtlEnabled"); if (expandColumns.length) { expandColumn = this.columnOption("command:expand") } expandColumns = (0, _iterator.map)(expandColumns, (column => (0, _extend.extend)({}, column, { visibleWidth: null, minWidth: null, cellTemplate: !(0, _type.isDefined)(column.groupIndex) ? column.cellTemplate : null, headerCellTemplate: null, fixed: !(0, _type.isDefined)(column.groupIndex) || !isFixedFirstGroupColumn ? isColumnFixing : true, fixedPosition: rtlEnabled ? "right" : "left" }, expandColumn, { index: column.index, type: column.type || _const2.GROUP_COMMAND_COLUMN_NAME }))); return expandColumns } getBandColumnsCache() { if (!this._bandColumnsCache) { const columns = this._columns; const columnChildrenByIndex = {}; const columnParentByIndex = {}; let isPlain = true; columns.forEach((column => { const { ownerBand: ownerBand } = column; let parentIndex = (0, _type.isObject)(ownerBand) ? ownerBand.index : ownerBand; const parent = columns[parentIndex]; if (column.hasColumns) { isPlain = false } if (column.colspan) { column.colspan = void 0 } if (column.rowspan) { column.rowspan = void 0 } if (parent) { columnParentByIndex[column.index] = parent } else { parentIndex = -1 } columnChildrenByIndex[parentIndex] = columnChildrenByIndex[parentIndex] || []; columnChildrenByIndex[parentIndex].push(column) })); this._bandColumnsCache = { isPlain: isPlain, columnChildrenByIndex: columnChildrenByIndex, columnParentByIndex: columnParentByIndex } } return this._bandColumnsCache } _isColumnVisible(column) { return column.visible && this.isParentColumnVisible(column.index) } _isColumnInGroupPanel(column) { return (0, _type.isDefined)(column.groupIndex) && !column.showWhenGrouped } hasVisibleDataColumns() { const columns = this._columns; return columns.some((column => { const isVisible = this._isColumnVisible(column); const isInGroupPanel = this._isColumnInGroupPanel(column); const isCommand = !!column.command; return isVisible && !isInGroupPanel && !isCommand })) } _compileVisibleColumnsCore() { const bandColumnsCache = this.getBandColumnsCache(); const columns = (0, _m_columns_controller_utils.mergeColumns)(this, this._columns, this._commandColumns, true); (0, _m_columns_controller_utils.processBandColumns)(this, columns, bandColumnsCache); const indexedColumns = this._getIndexedColumns(columns); const visibleColumns = this._getVisibleColumnsFromIndexed(indexedColumns); const isDataColumnsInvisible = !this.hasVisibleDataColumns(); if (isDataColumnsInvisible && this._columns.length) { visibleColumns[visibleColumns.length - 1].push({ command: "empty", type: "empty" }) } return visibleColumns } _getIndexedColumns(columns) { const rtlEnabled = this.option("rtlEnabled"); const rowCount = this.getRowCount(); const columnDigitsCount = (0, _m_columns_controller_utils.digitsCount)(columns.length); const bandColumnsCache = this.getBandColumnsCache(); const positiveIndexedColumns = []; const negativeIndexedColumns = []; for (let i = 0; i < rowCount; i += 1) { negativeIndexedColumns[i] = [{}]; positiveIndexedColumns[i] = [{}, {}, {}] } columns.forEach((column => { let { visibleIndex: visibleIndex } = column; let indexedColumns; const parentBandColumns = (0, _m_columns_controller_utils.getParentBandColumns)(column.index, bandColumnsCache.columnParentByIndex); const isVisible = this._isColumnVisible(column); const isInGroupPanel = this._isColumnInGroupPanel(column); if (isVisible && !isInGroupPanel) { const rowIndex = parentBandColumns.length; if (visibleIndex < 0) { visibleIndex = -visibleIndex; indexedColumns = negativeIndexedColumns[rowIndex] } else { var _parentBandColumns$, _parentBandColumns$2; column.fixed = (null === (_parentBandColumns$ = parentBandColumns[0]) || void 0 === _parentBandColumns$ ? void 0 : _parentBandColumns$.fixed) ?? column.fixed; column.fixedPosition = (null === (_parentBandColumns$2 = parentBandColumns[0]) || void 0 === _parentBandColumns$2 ? void 0 : _parentBandColumns$2.fixedPosition) ?? column.fixedPosition; if (column.fixed && column.fixedPosition !== _const.StickyPosition.Sticky) { const isDefaultCommandColumn = !!column.command && !_m_utils.default.isCustomCommandColumn(this._columns, column); let isFixedToEnd = "right" === column.fixedPosition; if (rtlEnabled && !isDefaultCommandColumn) { isFixedToEnd = !isFixedToEnd } indexedColumns = isFixedToEnd ? positiveIndexedColumns[rowIndex][2] : positiveIndexedColumns[rowIndex][0] } else { indexedColumns = positiveIndexedColumns[rowIndex][1] } } if (parentBandColumns.length) { visibleIndex = (0, _m_columns_controller_utils.numberToString)(visibleIndex, columnDigitsCount); for (let i = parentBandColumns.length - 1; i >= 0; i -= 1) { visibleIndex = (0, _m_columns_controller_utils.numberToString)(parentBandColumns[i].visibleIndex, columnDigitsCount) + visibleIndex } } indexedColumns[visibleIndex] = indexedColumns[visibleIndex] || []; indexedColumns[visibleIndex].push(column) } })); return { positiveIndexedColumns: positiveIndexedColumns, negativeIndexedColumns: negativeIndexedColumns } } _getVisibleColumnsFromIndexed(_ref) { let { positiveIndexedColumns: positiveIndexedColumns, negativeIndexedColumns: negativeIndexedColumns } = _ref; const result = []; const rowCount = this.getRowCount(); const expandColumns = (0, _m_columns_controller_utils.mergeColumns)(this, this.getExpandColumns(), this._columns); let rowspanGroupColumns = 0; let rowspanExpandColumns = 0; for (let rowIndex = 0; rowIndex < rowCount; rowIndex += 1) { result.push([]); (0, _object.orderEach)(negativeIndexedColumns[rowIndex], ((_, columns) => { result[rowIndex].unshift.apply(result[rowIndex], columns) })); const firstPositiveIndexColumn = result[rowIndex].length; const positiveIndexedRowColumns = positiveIndexedColumns[rowIndex]; positiveIndexedRowColumns.forEach((columnsByFixing => { (0, _object.orderEach)(columnsByFixing, ((_, columnsByVisibleIndex) => { result[rowIndex].push.apply(result[rowIndex], columnsByVisibleIndex) })) })); if (rowspanExpandColumns <= rowIndex) { rowspanExpandColumns += _m_columns_controller_utils.processExpandColumns.call(this, result[rowIndex], expandColumns, _const2.DETAIL_COMMAND_COLUMN_NAME, firstPositiveIndexColumn) } if (rowspanGroupColumns <= rowIndex) { rowspanGroupColumns += _m_columns_controller_utils.processExpandColumns.call(this, result[rowIndex], expandColumns, _const2.GROUP_COMMAND_COLUMN_NAME, firstPositiveIndexColumn) } } result.push((0, _m_columns_controller_utils.getDataColumns)(result)); return result } getInvisibleColumns(columns, bandColumnIndex) { const that = this; let result = []; let hiddenColumnsByBand; columns = columns || that._columns; (0, _iterator.each)(columns, ((_, column) => { if (column.ownerBand !== bandColumnIndex) { return } if (column.isBand) { if (!column.visible) { hiddenColumnsByBand = that.getChildrenByBandColumn(column.index) } else { hiddenColumnsByBand = that.getInvisibleColumns(that.getChildrenByBandColumn(column.index), column.index) } if (hiddenColumnsByBand.length) { result.push(column); result = result.concat(hiddenColumnsByBand) } return } if (!column.visible) { result.push(column) } })); return result } getChooserColumns(getAllColumns) { const columns = getAllColumns ? this.getColumns() : this.getInvisibleColumns(); const columnChooserColumns = columns.filter((column => column.showInColumnChooser)); const sortOrder = this.option("columnChooser.sortOrder"); return (0, _m_columns_controller_utils.sortColumns)(columnChooserColumns, sortOrder) } allowMoveColumn(fromVisibleIndex, toVisibleIndex, sourceLocation, targetLocation) { const columnIndex = (0, _m_columns_controller_utils.getColumnIndexByVisibleIndex)(this, fromVisibleIndex, sourceLocation); const sourceColumn = this._columns[columnIndex]; if (sourceColumn && (sourceColumn.allowReordering || sourceColumn.allowGrouping || sourceColumn.allowHiding)) { if (sourceLocation === targetLocation) { if (sourceLocation === _const2.COLUMN_CHOOSER_LOCATION) { return false } fromVisibleIndex = (0, _type.isObject)(fromVisibleIndex) ? fromVisibleIndex.columnIndex : fromVisibleIndex; toVisibleIndex = (0, _type.isObject)(toVisibleIndex) ? toVisibleIndex.columnIndex : toVisibleIndex; return fromVisibleIndex !== toVisibleIndex && fromVisibleIndex + 1 !== toVisibleIndex } if (sourceLocation === _const2.GROUP_LOCATION && targetLocation !== _const2.COLUMN_CHOOSER_LOCATION || targetLocation === _const2.GROUP_LOCATION) { return sourceColumn && sourceColumn.allowGrouping } if (sourceLocation === _const2.COLUMN_CHOOSER_LOCATION || targetLocation === _const2.COLUMN_CHOOSER_LOCATION) { return sourceColumn && sourceColumn.allowHiding } return true } return false } moveColumn(fromVisibleIndex, toVisibleIndex, sourceLocation, targetLocation) { const that = this; const options = {}; let prevGroupIndex; const fromIndex = (0, _m_columns_controller_utils.getColumnIndexByVisibleIndex)(that, fromVisibleIndex, sourceLocation); const toIndex = (0, _m_columns_controller_utils.getColumnIndexByVisibleIndex)(that, toVisibleIndex, targetLocation); let targetGroupIndex; if (fromIndex >= 0) { const column = that._columns[fromIndex]; toVisibleIndex = (0, _type.isObject)(toVisibleIndex) ? toVisibleIndex.columnIndex : toVisibleIndex; targetGroupIndex = toIndex >= 0 ? that._columns[toIndex].groupIndex : -1; if ((0, _type.isDefined)(column.groupIndex) && sourceLocation === _const2.GROUP_LOCATION) { if (targetGroupIndex > column.groupIndex) { targetGroupIndex-- } if (targetLocation !== _const2.GROUP_LOCATION) { options.groupIndex = void 0 } else { prevGroupIndex = column.groupIndex; delete column.groupIndex; (0, _m_columns_controller_utils.updateColumnGroupIndexes)(that) } } if (targetLocation === _const2.GROUP_LOCATION) { options.groupIndex = (0, _m_columns_controller_utils.moveColumnToGroup)(that, column, targetGroupIndex); column.groupIndex = prevGroupIndex } else if (toVisibleIndex >= 0) { const targetColumn = that._columns[toIndex]; if (!targetColumn || column.ownerBand !== targetColumn.ownerBand) { options.visibleIndex = _const2.MAX_SAFE_INTEGER } else if ((0, _m_columns_controller_utils.isColumnFixed)(that, column) ^ (0, _m_columns_controller_utils.isColumnFixed)(that, targetColumn)) { options.visibleIndex = _const2.MAX_SAFE_INTEGER } else { options.visibleIndex = targetColumn.visibleIndex } } const isVisible = targetLocation !== _const2.COLUMN_CHOOSER_LOCATION; if (column.visible !== isVisible) { options.visible = isVisible } that.columnOption(column.index, options) } } allowColumnSorting(column) { const sortingOptions = this.option("sorting"); const allowSorting = "single" === (null === sortingOptions || void 0 === sortingOptions ? void 0 : sortingOptions.mode) || "multiple" === (null === sortingOptions || void 0 === sortingOptions ? void 0 : sortingOptions.mode); return allowSorting && (null === column || void 0 === column ? void 0 : column.allowSorting) } changeSortOrder(columnIndex, sortOrder) { const that = this; const options = {}; const sortingOptions = that.option("sorting"); const sortingMode = null === sortingOptions || void 0 === sortingOptions ? void 0 : sortingOptions.mode; const needResetSorting = "single" === sortingMode || !sortOrder; const column = that._columns[columnIndex]; if (this.allowColumnSorting(column)) { if (needResetSorting && !(0, _type.isDefined)(column.groupIndex)) { (0, _iterator.each)(that._columns, (function(index) { if (index !== columnIndex && this.sortOrder) { if (!(0, _type.isDefined)(this.groupIndex)) { delete this.sortOrder } delete this.sortIndex } })) } if ((0, _m_columns_controller_utils.isSortOrderValid)(sortOrder)) { if (column.sortOrder !== sortOrder) { options.sortOrder = sortOrder } } else if ("none" === sortOrder) { if (column.sortOrder) { options.sortIndex = void 0; options.sortOrder = void 0 } } else { ! function(column) { if ("ctrl" === sortOrder) { if (!("sortOrder" in column && "sortIndex" in column)) { return false } options.sortOrder = void 0; options.sortIndex = void 0 } else if ((0, _type.isDefined)(column.groupIndex) || (0, _type.isDefined)(column.sortIndex)) { options.sortOrder = "desc" === column.sortOrder ? "asc" : "desc" } else { options.sortOrder = "asc" } return true }(column) } } that.columnOption(column.index, options) } getSortDataSourceParameters(useLocalSelector) { const sortColumns = []; const sort = []; (0, _iterator.each)(this._columns, (function() { if ((this.dataField || this.selector || this.calculateCellValue) && (0, _type.isDefined)(this.sortIndex) && !(0, _type.isDefined)(this.groupIndex)) { sortColumns[this.sortIndex] = this } })); (0, _iterator.each)(sortColumns, (function() { const sortOrder = this && this.sortOrder; if ((0, _m_columns_controller_utils.isSortOrderValid)(sortOrder)) { const sortItem = { selector: this.calculateSortValue || this.displayField || this.calculateDisplayValue || useLocalSelector && this.selector || this.dataField || this.calculateCellValue, desc: "desc" === this.sortOrder }; if (this.sortingMethod) { sortItem.compare = this.sortingMethod.bind(this) } sort.push(sortItem) } })); return sort.length > 0 ? sort : null } getGroupDataSourceParameters(useLocalSelector) { const group = []; (0, _iterator.each)(this.getGroupColumns(), (function() { const selector = this.calculateGroupValue || this.displayField || this.calculateDisplayValue || useLocalSelector && this.selector || this.dataField || this.calculateCellValue; if (selector) { const groupItem = { selector: selector, desc: "desc" === this.sortOrder, isExpanded: !!this.autoExpandGroup }; if (this.sortingMethod) { groupItem.compare = this.sortingMethod.bind(this) } group.push(groupItem) } })); return group.length > 0 ? group : null } refresh(updateNewLookupsOnly) { const deferreds = []; (0, _iterator.each)(this._columns, (function() { const { lookup: lookup } = this; if (lookup && !this.calculateDisplayValue) { if (updateNewLookupsOnly && lookup.valueMap) { return } if (lookup.update) { deferreds.push(lookup.update()) } } })); return _deferred.when.apply(_renderer.default, deferreds).done(_m_columns_controller_utils.resetColumnsCache.bind(null, this)) } _updateColumnOptions(column, columnIndex) { var _this$_previousColumn, _this$_previousColumn2; const shouldTakeOriginalCallbackFromPrevious = this._reinitAfterLookupChanges && (null === (_this$_previousColumn = this._previousColumns) || void 0 === _this$_previousColumn ? void 0 : _this$_previousColumn[columnIndex]); column.selector = column.selector ?? (data => column.calculateCellValue(data)); column.selector.columnIndex = columnIndex; column.selector.originalCallback = shouldTakeOriginalCallbackFromPrevious ? (null === (_this$_previousColumn2 = this._previousColumns[columnIndex].selector) || void 0 === _this$_previousColumn2 ? void 0 : _this$_previousColumn2.originalCallback) ?? column.selector : column.selector; (0, _iterator.each)(["calculateSortValue", "calculateGroupValue", "calculateDisplayValue"], ((_, calculateCallbackName) => { const calculateCallback = column[calculateCallbackName]; if ((0, _type.isFunction)(calculateCallback)) { if (!calculateCallback.originalCallback) { const context = { column: column }; column[calculateCallbackName] = function(data) { return calculateCallback.call(context.column, data) }; column[calculateCallbackName].originalCallback = calculateCallback; column[calculateCallbackName].columnIndex = columnIndex; column[calculateCallbackName].context = context } else { column[calculateCallbackName].context.column = column } } })); if ((0, _type.isString)(column.calculateDisplayValue)) { column.displayField = column.calculateDisplayValue; column.calculateDisplayValue = (0, _data.compileGetter)(column.displayField) } if (column.calculateDisplayValue) { column.displayValueMap = column.displayValueMap || {} }(0, _m_columns_controller_utils.updateSerializers)(column, column.dataType); const { lookup: lookup } = column; if (lookup) { (0, _m_columns_controller_utils.updateSerializers)(lookup, lookup.dataType) } const dataType = lookup ? lookup.dataType : column.dataType; if (dataType) { column.alignment = column.alignment || (0, _m_columns_controller_utils.getAlignmentByDataType)(dataType, this.option("rtlEnabled")); column.format = column.format || _m_utils.default.getFormatByDataType(dataType); column.customizeText = column.customizeText || (0, _m_columns_controller_utils.getCustomizeTextByDataType)(dataType); column.defaultFilterOperations = column.defaultFilterOperations || !lookup && _const2.DATATYPE_OPERATIONS[dataType] || []; if (!(0, _type.isDefined)(column.filterOperations)) { (0, _m_columns_controller_utils.setFilterOperationsAsDefaultValues)(column) } column.defaultFilterOperation = column.filterOperations && column.filterOperations[0] || "="; column.showEditorAlways = (0, _type.isDefined)(column.showEditorAlways) ? column.showEditorAlways : "boolean" === dataType && !column.cellTemplate && !column.lookup } } updateColumnDataTypes(dataSource) { const that = this; const dateSerializationFormat = that.option("dateSerializationFormat"); const firstItems = that._getFirstItems(dataSource); let isColumnDataTypesUpdated = false; (0, _iterator.each)(that._columns, ((index, column) => { let i; let value; let dataType; let lookupDataType; let valueDataType; const { lookup: lookup } = column; if (_m_utils.default.isDateType(column.dataType) && void 0 === column.serializationFormat) { column.serializationFormat = dateSerializationFormat } if (lookup && _m_utils.default.isDateType(lookup.dataType) && void 0 === column.serializationFormat) { lookup.serializationFormat = dateSerializationFormat } if (column.calculateCellValue && firstItems.length) { if (!column.dataType || lookup && !lookup.dataType) { for (i = 0; i < firstItems.length; i++) { value = column.calculateCellValue(firstItems[i]); if (!column.dataType) { valueDataType = (0, _m_columns_controller_utils.getValueDataType)(value); dataType = dataType || valueDataType; if (dataType && valueDataType && dataType !== valueDataType) { dataType = "string" } } if (lookup && !lookup.dataType) { valueDataType = (0, _m_columns_controller_utils.getValueDataType)(_m_utils.default.getDisplayValue(column, value, firstItems[i])); lookupDataType = lookupDataType || valueDataType; if (lookupDataType && valueDataType && lookupDataType !== valueDataType) { lookupDataType = "string" } } } if (dataType || lookupDataType) { if (dataType) { column.dataType = dataType } if (lookup && lookupDataType) { lookup.dataType = lookupDataType } isColumnDataTypesUpdated = true } } if (void 0 === column.serializationFormat || lookup && void 0 === lookup.serializationFormat) { for (i = 0; i < firstItems.length; i++) { value = column.calculateCellValue(firstItems[i], true); if (void 0 === column.serializationFormat) { column.serializationFormat = (0, _m_columns_controller_utils.getSerializationFormat)(column.dataType, value) } if (lookup && void 0 === lookup.serializationFormat) { lookup.serializationFormat = (0, _m_columns_controller_utils.getSerializationFormat)(lookup.dataType, lookup.calculateCellValue(value, true)) } } } } that._updateColumnOptions(column, index) })); return isColumnDataTypesUpdated } _customizeColumns(columns) { const that = this; const customizeColumns = that.option("customizeColumns"); if (customizeColumns) { const hasOwnerBand = columns.some((column => (0, _type.isObject)(column.ownerBand))); if (hasOwnerBand) { (0, _m_columns_controller_utils.updateIndexes)(that) } customizeColumns(columns); (0, _m_columns_controller_utils.assignColumns)(that, (0, _m_columns_controller_utils.createColumnsFromOptions)(that, columns)) } } updateColumns(dataSource, forceApplying, isApplyingUserState) { if (!forceApplying) { this.updateSortingGrouping(dataSource) } if (!dataSource || dataSource.isLoaded()) { const sortParameters = dataSource ? dataSource.sort() || [] : this.getSortDataSourceParameters(); const groupParameters = dataSource ? dataSource.group() || [] : this.getGroupDataSourceParameters(); const filterParameters = null === dataSource || void 0 === dataSource ? void 0 : dataSource.lastLoadOptions().filter; if (!isApplyingUserState) { this._customizeColumns(this._columns) }(0, _m_columns_controller_utils.updateIndexes)(this); const columns = this._columns; return (0, _deferred.when)(this.refresh(true)).always((() => { if (this._columns !== columns) { return } this._updateChanges(dataSource, { sorting: sortParameters, grouping: groupParameters, filtering: filterParameters }); (0, _m_columns_controller_utils.fireColumnsChanged)(this) })) } } _updateChanges(dataSource, parameters) { var _dataSource$loadOptio; const langParams = null === dataSource || void 0 === dataSource || null === (_dataSource$loadOptio = dataSource.loadOptions) || void 0 === _dataSource$loadOptio || null === (_dataSource$loadOptio = _dataSource$loadOptio.call(dataSource)) || void 0 === _dataSource$loadOptio ? void 0 : _dataSource$loadOptio.langParams; if (dataSource) { this.updateColumnDataTypes(dataSource); this._dataSourceApplied = true } if (!_m_utils.default.equalSortParameters(parameters.sorting, this.getSortDataSourceParameters())) { (0, _m_columns_controller_utils.updateColumnChanges)(this, "sorting") } if (!_m_utils.default.equalSortParameters(parameters.grouping, this.getGroupDataSourceParameters())) { (0, _m_columns_controller_utils.updateColumnChanges)(this, "grouping") } if (this._dataController && !_m_utils.default.equalFilterParameters(parameters.filtering, this._dataController.getCombinedFilter(), langParams)) { (0, _m_columns_controller_utils.updateColumnChanges)(this, "filtering") }(0, _m_columns_controller_utils.updateColumnChanges)(this, "columns") } updateSortingGrouping(dataSource, fromDataSource) { const that = this; let isColumnsChanged; const updateSortGroupParameterIndexes = function(columns, sortParameters, indexParameterName) { (0, _iterator.each)(columns, ((index, column) => { delete column[indexParameterName]; if (sortParameters) { for (let i = 0; i < sortParameters.length; i++) { const { selector: selector } = sortParameters[i]; const { isExpanded: isExpanded } = sortParameters[i]; if (selector === column.dataField || selector === column.name || selector === column.displayField || selector === column.selector || selector === column.calculateCellValue || selector === column.calculateGroupValue || selector === column.calculateDisplayValue) { if (fromDataSource) { column.sortOrder = "sortOrder" in column ? column.sortOrder : sortParameters[i].desc ? "desc" : "asc" } else { column.sortOrder = column.sortOrder || (sortParameters[i].desc ? "desc" : "asc") } if (void 0 !== isExpanded) { column.autoExpandGroup = isExpanded } column[indexParameterName] = i; break } } } })) }; if (dataSource) { var _this$_columnChanges; const sortParameters = _m_utils.default.normalizeSortingInfo(dataSource.sort()); const groupParameters = _m_utils.default.normalizeSortingInfo(dataSource.group()); const columnsGroupParameters = that.getGroupDataSourceParameters(); const columnsSortParameters = that.getSortDataSourceParameters(); const changeTypes = null === (_this$_columnChanges = this._columnChanges) || void 0 === _this$_columnChanges ? void 0 : _this$_columnChanges.changeTypes; const sortingChanged = !_m_utils.default.equalSortParameters(sortParameters, columnsSortParameters); const needToApplySortingFromDataSource = fromDataSource && !(null !== changeTypes && void 0 !== changeTypes && changeTypes.sorting); const needToApplyGroupingFromDataSource = fromDataSource && !(null !== changeTypes && void 0 !== changeTypes && changeTypes.grouping); const groupingChanged = !_m_utils.default.equalSortParameters(groupParameters, columnsGroupParameters, true); const groupExpandingChanged = !groupingChanged && !_m_utils.default.equalSortParameters(groupParameters, columnsGroupParameters); if (!that._columns.length) { (0, _iterator.each)(groupParameters, ((index, group) => { that._columns.push(group.selector) })); (0, _iterator.each)(sortParameters, ((index, sort) => { if (!(0, _type.isFunction)(sort.selector)) { that._columns.push(sort.selector) } })); (0, _m_columns_controller_utils.assignColumns)(that, (0, _m_columns_controller_utils.createColumnsFromOptions)(that, that._columns)) } if ((needToApplyGroupingFromDataSource || !columnsGroupParameters && !that._hasUserState) && (groupingChanged || groupExpandingChanged)) { updateSortGroupParameterIndexes(that._columns, groupParameters, "groupIndex"); if (fromDataSource) { groupingChanged && (0, _m_columns_controller_utils.updateColumnChanges)(that, "grouping"); groupExpandingChanged && (0, _m_columns_controller_utils.updateColumnChanges)(that, "groupExpanding"); isColumnsChanged = true } } if ((needToApplySortingFromDataSource || !columnsSortParameters && !that._hasUserState) && sortingChanged) { updateSortGroupParameterIndexes(that._columns, sortParameters, "sortIndex"); if (fromDataSource) { (0, _m_columns_controller_utils.updateColumnChanges)(that, "sorting"); isColumnsChanged = true } } if (isColumnsChanged) { (0, _m_columns_controller_utils.fireColumnsChanged)(that) } } } updateFilter(filter, remoteFiltering, columnIndex, filterValue) { const that = this; if (!Array.isArray(filter)) { return filter } filter = (0, _extend.extend)([], filter); columnIndex = void 0 !== filter.columnIndex ? filter.columnIndex : columnIndex; filterValue = void 0 !== filter.filterValue ? filter.filterValue : filterValue; if ((0, _type.isString)(filter[0]) && "!" !== filter[0]) { const column = that.columnOption(filter[0]); if (remoteFiltering) { if ((0, _config.default)().forceIsoDateParsing && column && column.serializeValue && filter.length > 1) { filter[filter.length - 1] = column.serializeValue(filter[filter.length - 1], "filter") } } else if (column && column.selector) { filter[0] = column.selector; filter[0].columnIndex = column.index } } else if ((0, _type.isFunction)(filter[0])) { filter[0].columnIndex = columnIndex; filter[0].filterValue = filterValue; filter[0].selectedFilterOperation = filter.selectedFilterOperation } for (let i = 0; i < filter.length; i++) { filter[i] = that.updateFilter(filter[i], remoteFiltering, columnIndex, filterValue) } return filter } columnCount() { return this._columns ? this._columns.length : 0 } columnOption(identifier, option, value, notFireEvent) { const that = this; const columns = that._columns.concat(that._commandColumns); const column = (0, _m_columns_controller_utils.findColumn)(columns, identifier); if (column) { if (1 === arguments.length) { return (0, _extend.extend)({}, column) } if ((0, _type.isString)(option)) { if (2 === arguments.length) { return (0, _m_columns_controller_utils.columnOptionCore)(that, column, option) }(0, _m_columns_controller_utils.columnOptionCore)(that, column, option, value, notFireEvent) } else if ((0, _type.isObject)(option)) { (0, _iterator.each)(option, ((optionName, value) => { (0, _m_columns_controller_utils.columnOptionCore)(that, column, optionName, value, notFireEvent) })) }(0, _m_columns_controller_utils.fireColumnsChanged)(that) } } clearSorting() { const that = this; const columnCount = this.columnCount(); that.beginUpdate(); for (let i = 0; i < columnCount; i++) { that.columnOption(i, "sortOrder", void 0); delete(0, _m_columns_controller_utils.findColumn)(that._columns, i).sortOrder } that.endUpdate() } clearGrouping() { const that = this; const columnCount = this.columnCount(); that.beginUpdate(); for (let i = 0; i < columnCount; i++) { that.columnOption(i, "groupIndex", void 0) } that.endUpdate() } getVisibleIndex(index, rowIndex) { const columns = this.getVisibleColumns(rowIndex); for (let i = columns.length - 1; i >= 0; i--) { if (columns[i].index === index) { return i } } return -1 } getVisibleIndexByColumn(column, rowIndex) { const visibleColumns = this.getVisibleColumns(rowIndex); const visibleColumn = visibleColumns.filter((col => col.index === column.index && col.command === column.command))[0]; return visibleColumns.indexOf(visibleColumn) } getVisibleColumnIndex(id, rowIndex) { const index = this.columnOption(id, "index"); return this.getVisibleIndex(index, rowIndex) } addColumn(options) { const that = this; let column = (0, _m_columns_controller_utils.createColumn)(that, options); const index = that._columns.length; that._columns.push(column); if (column.isBand) { that._columns = (0, _m_columns_controller_utils.createColumnsFromOptions)(that, that._columns); column = that._columns[index] } column.added = options; (0, _m_columns_controller_utils.updateIndexes)(that, column); that.updateColumns(that._dataSource); that._checkColumns() } deleteColumn(id) { const that = this; const column = that.columnOption(id); if (column && column.index >= 0) { (0, _m_columns_controller_utils.convertOwnerBandToColumnReference)(that._columns); that._columns.splice(column.index, 1); if (column.isBand) { const childIndexes = that.getChildrenByBandColumn(column.index).map((column => column.index)); that._columns = that._columns.filter((column => childIndexes.indexOf(column.index) < 0)) }(0, _m_columns_controller_utils.updateIndexes)(that); that.updateColumns(that._dataSource) } } addCommandColumn(options) { let commandColumn = this._commandColumns.filter((column => column.command === options.command))[0]; if (!commandColumn) { commandColumn = options; this._commandColumns.push(commandColumn) } } getUserState() { const columns = this._columns; const result = []; let i; function handleStateField(index, value) { if (void 0 !== columns[i][value]) { result[i][value] = columns[i][value] } } for (i = 0; i < columns.length; i++) { result[i] = {}; (0, _iterator.each)(_const2.USER_STATE_FIELD_NAMES, handleStateField) } return result } setName(column) { column.name = column.name || column.dataField || column.type } setUserState(state) { const that = this; const dataSource = that._dataSource; let ignoreColumnOptionNames = that.option("stateStoring.ignoreColumnOptionNames"); null === state || void 0 === state || state.forEach(this.setName); if (!ignoreColumnOptionNames) { ignoreColumnOptionNames = []; const commonColumnSettings = that.getCommonSettings(); if (!that.option("columnChooser.enabled")) { ignoreColumnOptionNames.push("visible") } if ("none" === that.option("sorting.mode")) { ignoreColumnOptionNames.push("sortIndex", "sortOrder") } if (!commonColumnSettings.allowGrouping) { ignoreColumnOptionNames.push("groupIndex") } if (!commonColumnSettings.allowFixing) { ignoreColumnOptionNames.push("fixed", "fixedPosition") } if (!commonColumnSettings.allowResizing) { ignoreColumnOptionNames.push("width", "visibleWidth") } const isFilterPanelHidden = !that.option("filterPanel.visible"); if (!that.option("filterRow.visible") && isFilterPanelHidden) { ignoreColumnOptionNames.push("filterValue", "selectedFilterOperation") } if (!that.option("headerFilter.visible") && isFilterPanelHidden) { ignoreColumnOptionNames.push("filterValues", "filterType") } } that._columnsUserState = state; that._ignoreColumnOptionNames = ignoreColumnOptionNames; that._hasUserState = !!state; (0, _m_columns_controller_utils.updateColumnChanges)(that, "filtering"); that.init(true); if (dataSource) { dataSource.sort(that.getSortDataSourceParameters()); dataSource.group(that.getGroupDataSourceParameters()) } } _checkColumns() { const usedNames = {}; let hasEditableColumnWithoutName = false; const duplicatedNames = []; this._columns.forEach((column => { var _column$columns; const { name: name } = column; const isBand = null === (_column$columns = column.columns) || void 0 === _column$columns ? void 0 : _column$columns.length; const isEditable = column.allowEditing && (column.dataField || column.setCellValue) && !isBand; if (name) { if (usedNames[name]) { duplicatedNames.push(`"${name}"`) } usedNames[name] = true } else if (isEditable) { hasEditableColumnWithoutName = true } })); if (duplicatedNames.length) { _ui.default.log("E1059", duplicatedNames.join(", ")) } if (hasEditableColumnWithoutName) { _ui.default.log("E1060") } } _createCalculatedColumnOptions(columnOptions, bandColumn) { let calculatedColumnOptions = {}; let { dataField: dataField } = columnOptions; if (Array.isArray(columnOptions.columns) && columnOptions.columns.length || columnOptions.isBand) { calculatedColumnOptions.isBand = true; dataField = null } if (dataField) { if ((0, _type.isString)(dataField)) { const getter = (0, _data.compileGetter)(dataField); calculatedColumnOptions = { caption: _m_inflector.default.captionize(dataField), calculateCellValue(data, skipDeserialization) { const value = getter(data); return this.deserializeValue && !skipDeserialization ? this.deserializeValue(value) : value }, setCellValue: _m_columns_controller_utils.defaultSetCellValue, parseValue(text) { const column = this; let result; let parsedValue; if ("number" === column.dataType) { if ((0, _type.isString)(text) && column.format) { result = (0, _m_columns_controller_utils.strictParseNumber)(text.trim(), column.format) } else if ((0, _type.isDefined)(text) && (0, _type.isNumeric)(text)) { result = Number(text) } } else if ("boolean" === column.dataType) { if (text === column.trueText) { result = true } else if (text === column.falseText) { result = false } } else if (_m_utils.default.isDateType(column.dataType)) { parsedValue = _date.default.parse(text, column.format); if (parsedValue) { result = parsedValue } } else { result = text } return result } } } calculatedColumnOptions.allowFiltering = true } else { calculatedColumnOptions.allowFiltering = !!columnOptions.calculateFilterExpression } calculatedColumnOptions.calculateFilterExpression = function() { return _filtering.default.defaultCalculateFilterExpression.apply(this, arguments) }; calculatedColumnOptions.defaultFilterOperation = "="; calculatedColumnOptions.createFilterExpression = function(filterValue, selectedFilterOperation) { let result; if (this.calculateFilterExpression) { result = this.calculateFilterExpression.apply(this, arguments) } if ((0, _type.isFunction)(result)) { result = [result, "=", true] } if (result) { result.columnIndex = this.index; result.filterValue = filterValue; result.selectedFilterOperation = selectedFilterOperation } return result }; if (!dataField || !(0, _type.isString)(dataField)) { (0, _extend.extend)(true, calculatedColumnOptions, { allowSorting: false, allowGrouping: false, calculateCellValue: () => null }) } if (bandColumn) { calculatedColumnOptions.allowFixing = false } if (columnOptions.dataType) { calculatedColumnOptions.userDataType = columnOptions.dataType } if (columnOptions.selectedFilterOperation && !("defaultSelectedFilterOperation" in calculatedColumnOptions)) { calculatedColumnOptions.defaultSelectedFilterOperation = columnOptions.selectedFilterOperation } if (columnOptions.lookup) { calculatedColumnOptions.lookup = { calculateCellValue(value, skipDeserialization) { if (this.valueExpr) { value = this.valueMap && this.valueMap[value] } return this.deserializeValue && !skipDeserialization ? this.deserializeValue(value) : value }, updateValueMap() { this.valueMap = {}; if (this.items) { const calculateValue = (0, _data.compileGetter)(this.valueExpr); const calculateDisplayValue = (0, _data.compileGetter)(this.displayExpr); for (let i = 0; i < this.items.length; i++) { const item = this.items[i]; const displayValue = calculateDisplayValue(item); this.valueMap[calculateValue(item)] = displayValue; this.dataType = this.dataType || (0, _m_columns_controller_utils.getValueDataType)(displayValue) } } }, update() { const that = this; let { dataSource: dataSource } = that; if (dataSource) { if ((0, _type.isFunction)(dataSource) && !_variable_wrapper.default.isWrapped(dataSource)) { dataSource = dataSource({}) } if ((0, _type.isPlainObject)(dataSource) || dataSource instanceof _abstract_store.default || Array.isArray(dataSource)) { if (that.valueExpr) { const dataSourceOptions = (0, _utils.normalizeDataSourceOptions)(dataSource); dataSourceOptions.paginate = false; dataSource = new _data_source.DataSource(dataSourceOptions); return dataSource.load().done((data => { that.items = data; that.updateValueMap && that.updateValueMap() })) } } else { _ui.default.log("E1016") } } else { that.updateValueMap && that.updateValueMap() } } } } calculatedColumnOptions.resizedCallbacks = (0, _callbacks.default)(); if (columnOptions.resized) { calculatedColumnOptions.resizedCallbacks.add(columnOptions.resized.bind(columnOptions)) }(0, _iterator.each)(calculatedColumnOptions, (optionName => { if ((0, _type.isFunction)(calculatedColumnOptions[optionName]) && 0 !== optionName.indexOf("default")) { const defaultOptionName = `default${optionName.charAt(0).toUpperCase()}${optionName.substr(1)}`; calculatedColumnOptions[defaultOptionName] = calculatedColumnOptions[optionName] } })); return calculatedColumnOptions } getRowCount() { this._rowCount = this._rowCount || (0, _m_columns_controller_utils.getRowCount)(this); return this._rowCount } getRowIndex(columnIndex, alwaysGetRowIndex) { const column = this._columns[columnIndex]; const bandColumnsCache = this.getBandColumnsCache(); return column && (alwaysGetRowIndex || column.visible && !(column.command || (0, _type.isDefined)(column.groupIndex))) ? (0, _m_columns_controller_utils.getParentBandColumns)(columnIndex, bandColumnsCache.columnParentByIndex).length : 0 } getChildrenByBandColumn(bandColumnIndex, onlyVisibleDirectChildren) { const bandColumnsCache = this.getBandColumnsCache(); const result = (0, _m_columns_controller_utils.getChildrenByBandColumn)(bandColumnIndex, bandColumnsCache.columnChildrenByIndex, !onlyVisibleDirectChildren); if (onlyVisibleDirectChildren) { return result.filter((column => column.visible && !column.command)).sort(((column1, column2) => column1.visibleIndex - column2.visibleIndex)) } return result } getVisibleDataColumnsByBandColumn(bandColumnIndex) { const bandColumnsCache = this.getBandColumnsCache(); const result = this.getChildrenByBandColumn(bandColumnIndex, bandColumnsCache.columnChildrenByIndex); return result.filter((column => !column.isBand && column.visible)) } isParentBandColumn(columnIndex, bandColumnIndex) { let result = false; const column = this._columns[columnIndex]; const bandColumnsCache = this.getBandColumnsCache(); const parentBandColumns = column && (0, _m_columns_controller_utils.getParentBandColumns)(columnIndex, bandColumnsCache.columnParentByIndex); if (parentBandColumns) { (0, _iterator.each)(parentBandColumns, ((_, bandColumn) => { if (bandColumn.index === bandColumnIndex) { result = true; return false } })) } return result } isParentColumnVisible(columnIndex) { let result = true; const bandColumnsCache = this.getBandColumnsCache(); const bandColumns = columnIndex >= 0 && (0, _m_columns_controller_utils.getParentBandColumns)(columnIndex, bandColumnsCache.columnParentByIndex); bandColumns && (0, _iterator.each)(bandColumns, ((_, bandColumn) => { result = result && bandColumn.visible; return result })); return result } getParentColumn(column) { let needDirectParent = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : false; const bandColumnsCache = this.getBandColumnsCache(); const parentColumns = (0, _m_columns_controller_utils.getParentBandColumns)(column.index, bandColumnsCache.columnParentByIndex); const parentColumnIndex = needDirectParent ? -1 : 0; return parentColumns.at(parentColumnIndex) } isFirstColumn(column, rowIndex) { let onlyWithinBandColumn = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : false; let fixedPosition = arguments.length > 3 ? arguments[3] : void 0; return (0, _m_columns_controller_utils.isFirstOrLastColumn)(this, column, rowIndex, onlyWithinBandColumn, false, fixedPosition) } isLastColumn(column, rowIndex) { let onlyWithinBandColumn = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : false; let fixedPosition = arguments.length > 3 ? arguments[3] : void 0; return (0, _m_columns_controller_utils.isFirstOrLastColumn)(this, column, rowIndex, onlyWithinBandColumn, true, fixedPosition) } isCustomCommandColumn(commandColumn) { return _m_utils.default.isCustomCommandColumn(this._columns, commandColumn) } getColumnId(column) { if (column.command && column.type === _const2.GROUP_COMMAND_COLUMN_NAME) { if (_m_utils.default.isCustomCommandColumn(this._columns, column)) { return `type:${column.type}` } return `command:${column.command}` } return column.index } getCustomizeTextByDataType(dataType) { return (0, _m_columns_controller_utils.getCustomizeTextByDataType)(dataType) } getHeaderContentAlignment(columnAlignment) { const rtlEnabled = this.option("rtlEnabled"); if (rtlEnabled) { return "left" === columnAlignment ? "right" : "left" } return columnAlignment } isVirtualMode() { return false } isNeedToRenderVirtualColumns(scrollPosition) { return false } } exports.ColumnsController = ColumnsController; exports.columnsControllerModule = { defaultOptions: () => ({ commonColumnSettings: { allowFiltering: true, allowHiding: true, allowSorting: true, allowEditing: true, encodeHtml: true, trueText: _message.default.format("dxDataGrid-trueText"), falseText: _message.default.format("dxDataGrid-falseText") }, allowColumnReordering: false, allowColumnResizing: false, columnResizingMode: "nextColumn", columnMinWidth: void 0, columnWidth: void 0, adaptColumnWidthByRatio: true, columns: void 0, regenerateColumnsByVisibleItems: false, customizeColumns: null, dateSerializationFormat: void 0 }), controllers: { columns: ColumnsController } } }, 63904: /*!*************************************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/grid_core/columns_controller/m_columns_controller_utils.js ***! \*************************************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.applyUserState = exports.addExpandColumn = void 0; exports.assignColumns = assignColumns; exports.isFirstOrLastColumn = exports.isColumnFixed = exports.getValueDataType = exports.getSerializationFormat = exports.getRowCount = exports.getParentBandColumns = exports.getFixedPosition = exports.getDataColumns = exports.getCustomizeTextByDataType = exports.getColumnIndexByVisibleIndex = exports.getColumnFullPath = exports.getColumnByIndexes = exports.getChildrenByBandColumn = exports.getAlignmentByDataType = exports.fireOptionChanged = exports.fireColumnsChanged = exports.findColumn = exports.digitsCount = exports.defaultSetCellValue = exports.customizeTextForBooleanDataType = exports.createColumnsFromOptions = exports.createColumnsFromDataSource = exports.createColumn = exports.convertOwnerBandToColumnReference = exports.columnOptionCore = exports.calculateColspan = void 0; exports.isSortOrderValid = isSortOrderValid; exports.updateSortOrderWhenGrouping = exports.updateSerializers = exports.updateIndexes = exports.updateColumnVisibleIndexes = exports.updateColumnSortIndexes = exports.updateColumnIndexes = exports.updateColumnGroupIndexes = exports.updateColumnChanges = exports.strictParseNumber = exports.sortColumns = exports.setFilterOperationsAsDefaultValues = exports.resetColumnsCache = exports.resetBandColumnsCache = exports.processExpandColumns = exports.processBandColumns = exports.numberToString = exports.moveColumnToGroup = exports.mergeColumns = void 0; var _number = _interopRequireDefault(__webpack_require__( /*! ../../../../common/core/localization/number */ 52771)); var _array = __webpack_require__( /*! ../../../../core/utils/array */ 94487); var _common = __webpack_require__( /*! ../../../../core/utils/common */ 17781); var _data = __webpack_require__( /*! ../../../../core/utils/data */ 31e3); var _date_serialization = _interopRequireDefault(__webpack_require__( /*! ../../../../core/utils/date_serialization */ 71051)); var _extend = __webpack_require__( /*! ../../../../core/utils/extend */ 52576); var _iterator = __webpack_require__( /*! ../../../../core/utils/iterator */ 21274); var _object = __webpack_require__( /*! ../../../../core/utils/object */ 22263); var _position = __webpack_require__( /*! ../../../../core/utils/position */ 41639); var _type = __webpack_require__( /*! ../../../../core/utils/type */ 11528); var _variable_wrapper = _interopRequireDefault(__webpack_require__( /*! ../../../../core/utils/variable_wrapper */ 40216)); var _const = __webpack_require__( /*! ../adaptivity/const */ 26854); var _m_utils = _interopRequireDefault(__webpack_require__( /*! ../m_utils */ 53226)); var _const2 = __webpack_require__( /*! ../sticky_columns/const */ 87396); var _utils = __webpack_require__( /*! ../sticky_columns/utils */ 24378); var _const3 = __webpack_require__( /*! ./const */ 48795); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } const setFilterOperationsAsDefaultValues = function(column) { column.filterOperations = column.defaultFilterOperations }; exports.setFilterOperationsAsDefaultValues = setFilterOperationsAsDefaultValues; let globalColumnId = 1; const createColumn = function(that, columnOptions, userStateColumnOptions, bandColumn) { let commonColumnOptions = {}; if (columnOptions) { if ((0, _type.isString)(columnOptions)) { columnOptions = { dataField: columnOptions } } that.setName(columnOptions); let result = {}; if (columnOptions.command) { result = (0, _object.deepExtendArraySafe)(commonColumnOptions, columnOptions) } else { commonColumnOptions = that.getCommonSettings(columnOptions); if (userStateColumnOptions && userStateColumnOptions.name && userStateColumnOptions.dataField) { columnOptions = (0, _extend.extend)({}, columnOptions, { dataField: userStateColumnOptions.dataField }) } const calculatedColumnOptions = that._createCalculatedColumnOptions(columnOptions, bandColumn); if (!columnOptions.type) { result = { headerId: "dx-col-" + globalColumnId++ } } result = (0, _object.deepExtendArraySafe)(result, _const3.DEFAULT_COLUMN_OPTIONS, false, true); (0, _object.deepExtendArraySafe)(result, commonColumnOptions, false, true); (0, _object.deepExtendArraySafe)(result, calculatedColumnOptions, false, true); (0, _object.deepExtendArraySafe)(result, columnOptions, false, true); (0, _object.deepExtendArraySafe)(result, { selector: null }, false, true) } if (columnOptions.filterOperations === columnOptions.defaultFilterOperations) { setFilterOperationsAsDefaultValues(result) } return result } }; exports.createColumn = createColumn; const createColumnsFromOptions = function(that, columnsOptions, bandColumn, createdColumnCount) { let result = []; if (columnsOptions) { (0, _iterator.each)(columnsOptions, ((index, columnOptions) => { const currentIndex = (createdColumnCount ?? 0) + result.length; const userStateColumnOptions = that._columnsUserState && checkUserStateColumn(columnOptions, that._columnsUserState[currentIndex]) && that._columnsUserState[currentIndex]; const column = createColumn(that, columnOptions, userStateColumnOptions, bandColumn); if (column) { if (bandColumn) { column.ownerBand = bandColumn } result.push(column); if (column.columns) { result = result.concat(createColumnsFromOptions(that, column.columns, column, result.length)); delete column.columns; column.hasColumns = true } } })) } return result }; exports.createColumnsFromOptions = createColumnsFromOptions; const getParentBandColumns = function(columnIndex, columnParentByIndex) { const result = []; let parent = columnParentByIndex[columnIndex]; while (parent) { result.unshift(parent); columnIndex = parent.index; parent = columnParentByIndex[columnIndex] } return result }; exports.getParentBandColumns = getParentBandColumns; const getChildrenByBandColumn = function(columnIndex, columnChildrenByIndex, recursive) { let result = []; const children = columnChildrenByIndex[columnIndex]; if (children) { for (let i = 0; i < children.length; i++) { const column = children[i]; if (!(0, _type.isDefined)(column.groupIndex) || column.showWhenGrouped) { result.push(column); if (recursive && column.isBand) { result = result.concat(getChildrenByBandColumn(column.index, columnChildrenByIndex, recursive)) } } } } return result }; exports.getChildrenByBandColumn = getChildrenByBandColumn; exports.getColumnByIndexes = function(that, columnIndexes) { let result; let columns; const bandColumnsCache = that.getBandColumnsCache(); const callbackFilter = function(column) { const ownerBand = result ? result.index : void 0; return column.ownerBand === ownerBand }; if (bandColumnsCache.isPlain) { result = that._columns[columnIndexes[0]] } else { columns = that._columns.filter(callbackFilter); for (let i = 0; i < columnIndexes.length; i++) { result = columns[columnIndexes[i]]; if (result) { columns = that._columns.filter(callbackFilter) } } } return result }; const getColumnFullPath = function(that, column) { let result = []; let columns; const bandColumnsCache = that.getBandColumnsCache(); const callbackFilter = function(item) { return item.ownerBand === column.ownerBand }; if (bandColumnsCache.isPlain) { const columnIndex = that._columns.indexOf(column); if (columnIndex >= 0) { result = [`columns[${columnIndex}]`] } } else { columns = that._columns.filter(callbackFilter); while (columns.length && -1 !== columns.indexOf(column)) { result.unshift(`columns[${columns.indexOf(column)}]`); column = bandColumnsCache.columnParentByIndex[column.index]; columns = column ? that._columns.filter(callbackFilter) : [] } } return result.join(".") }; exports.getColumnFullPath = getColumnFullPath; const calculateColspan = function(that, columnID) { let colspan = 0; const columns = that.getChildrenByBandColumn(columnID, true); (0, _iterator.each)(columns, ((_, column) => { if (column.isBand) { column.colspan = column.colspan || calculateColspan(that, column.index); colspan += column.colspan || 1 } else { colspan += 1 } })); return colspan }; exports.calculateColspan = calculateColspan; exports.processBandColumns = function(that, columns, bandColumnsCache) { let rowspan; for (let i = 0; i < columns.length; i++) { const column = columns[i]; if (column.visible || column.command) { if (column.isBand) { column.colspan = column.colspan || calculateColspan(that, column.index) } if (!column.isBand || !column.colspan) { rowspan = that.getRowCount(); if (!column.command && (!(0, _type.isDefined)(column.groupIndex) || column.showWhenGrouped)) { rowspan -= getParentBandColumns(column.index, bandColumnsCache.columnParentByIndex).length } if (rowspan > 1) { column.rowspan = rowspan } } } } }; exports.getValueDataType = function(value) { let dataType = (0, _type.type)(value); if ("string" !== dataType && "boolean" !== dataType && "number" !== dataType && "date" !== dataType && "object" !== dataType) { dataType = void 0 } return dataType }; exports.getSerializationFormat = function(dataType, value) { switch (dataType) { case "date": case "datetime": return _date_serialization.default.getDateSerializationFormat(value); case "number": if ((0, _type.isString)(value)) { return "string" } if ((0, _type.isNumeric)(value)) { return null } } }; exports.updateSerializers = function(options, dataType) { if (!options.deserializeValue) { if (_m_utils.default.isDateType(dataType)) { options.deserializeValue = function(value) { return _date_serialization.default.deserializeDate(value) }; options.serializeValue = function(value) { return (0, _type.isString)(value) ? value : _date_serialization.default.serializeDate(value, this.serializationFormat) } } if ("number" === dataType) { options.deserializeValue = function(value) { const parsedValue = parseFloat(value); return isNaN(parsedValue) ? value : parsedValue }; options.serializeValue = function(value, target) { if ("filter" === target) { return value } return (0, _type.isDefined)(value) && "string" === this.serializationFormat ? value.toString() : value } } } }; exports.getAlignmentByDataType = function(dataType, isRTL) { switch (dataType) { case "number": return "right"; case "boolean": return "center"; default: return (0, _position.getDefaultAlignment)(isRTL) } }; const customizeTextForBooleanDataType = function(e) { if (true === e.value) { return this.trueText || "true" } if (false === e.value) { return this.falseText || "false" } return e.valueText || "" }; exports.customizeTextForBooleanDataType = customizeTextForBooleanDataType; exports.getCustomizeTextByDataType = function(dataType) { if ("boolean" === dataType) { return customizeTextForBooleanDataType } }; exports.createColumnsFromDataSource = function(that, dataSource) { const firstItems = that._getFirstItems(dataSource); let fieldName; const processedFields = {}; const result = []; for (let i = 0; i < firstItems.length; i++) { if (firstItems[i]) { for (fieldName in firstItems[i]) { if (!(0, _type.isFunction)(firstItems[i][fieldName]) || _variable_wrapper.default.isWrapped(firstItems[i][fieldName])) { processedFields[fieldName] = true } } } } for (fieldName in processedFields) { if (0 !== fieldName.indexOf("__")) { const column = createColumn(that, fieldName); result.push(column) } } return result }; const updateColumnIndexes = function(that) { (0, _iterator.each)(that._columns, ((index, column) => { column.index = index })); (0, _iterator.each)(that._columns, ((index, column) => { if ((0, _type.isObject)(column.ownerBand)) { column.ownerBand = column.ownerBand.index } })); (0, _iterator.each)(that._commandColumns, ((index, column) => { column.index = -(index + 1) })) }; exports.updateColumnIndexes = updateColumnIndexes; const updateColumnGroupIndexes = function(that, currentColumn) { (0, _array.normalizeIndexes)(that._columns, "groupIndex", currentColumn, (column => { const { grouped: grouped } = column; delete column.grouped; return grouped })) }; exports.updateColumnGroupIndexes = updateColumnGroupIndexes; const updateColumnSortIndexes = function(that, currentColumn) { (0, _iterator.each)(that._columns, ((index, column) => { if ((0, _type.isDefined)(column.sortIndex) && !isSortOrderValid(column.sortOrder)) { delete column.sortIndex } })); (0, _array.normalizeIndexes)(that._columns, "sortIndex", currentColumn, (column => !(0, _type.isDefined)(column.groupIndex) && isSortOrderValid(column.sortOrder))) }; exports.updateColumnSortIndexes = updateColumnSortIndexes; const updateColumnVisibleIndexes = function(that, currentColumn) { let column; const result = []; const bandColumnsCache = that.getBandColumnsCache(); const bandedColumns = []; const columns = that._columns.filter((column => !column.command)); for (let i = 0; i < columns.length; i++) { column = columns[i]; const parentBandColumns = getParentBandColumns(i, bandColumnsCache.columnParentByIndex); if (parentBandColumns.length) { bandedColumns.push(column) } else { result.push(column) } }(0, _array.normalizeIndexes)(bandedColumns, "visibleIndex", currentColumn); (0, _array.normalizeIndexes)(result, "visibleIndex", currentColumn) }; exports.updateColumnVisibleIndexes = updateColumnVisibleIndexes; exports.getColumnIndexByVisibleIndex = function(that, visibleIndex, location) { const rowIndex = (0, _type.isObject)(visibleIndex) ? visibleIndex.rowIndex : null; const columns = location === _const3.GROUP_LOCATION ? that.getGroupColumns() : location === _const3.COLUMN_CHOOSER_LOCATION ? that.getChooserColumns() : that.getVisibleColumns(rowIndex, true); let column; visibleIndex = (0, _type.isObject)(visibleIndex) ? visibleIndex.columnIndex : visibleIndex; column = columns[visibleIndex]; if (column && column.type === _const3.GROUP_COMMAND_COLUMN_NAME) { column = that._columns.filter((col => column.type === col.type))[0] || column } return column && (0, _type.isDefined)(column.index) ? column.index : -1 }; exports.moveColumnToGroup = function(that, column, groupIndex) { const groupColumns = that.getGroupColumns(); let i; if (groupIndex >= 0) { for (i = 0; i < groupColumns.length; i++) { if (groupColumns[i].groupIndex >= groupIndex) { groupColumns[i].groupIndex++ } } } else { groupIndex = 0; for (i = 0; i < groupColumns.length; i++) { groupIndex = Math.max(groupIndex, groupColumns[i].groupIndex + 1) } } return groupIndex }; function checkUserStateColumn(column, userStateColumn) { return column && userStateColumn && userStateColumn.name === (column.name || column.dataField) && (userStateColumn.dataField === column.dataField || column.name) } exports.applyUserState = function(that) { const columnsUserState = that._columnsUserState; const ignoreColumnOptionNames = that._ignoreColumnOptionNames || []; const columns = that._columns; const columnCountById = {}; let resultColumns = []; let allColumnsHaveState = true; const userStateColumnIndexes = []; let column; let userStateColumnIndex; let i; function applyFieldsState(column, userStateColumn) { if (!userStateColumn) { return } for (let index = 0; index < _const3.USER_STATE_FIELD_NAMES.length; index++) { const fieldName = _const3.USER_STATE_FIELD_NAMES[index]; if (ignoreColumnOptionNames.includes(fieldName)) { continue } if ("dataType" === fieldName) { column[fieldName] = column[fieldName] || userStateColumn[fieldName] } else if (_const3.USER_STATE_FIELD_NAMES_15_1.includes(fieldName)) { if (fieldName in userStateColumn) { column[fieldName] = userStateColumn[fieldName] } } else { if ("selectedFilterOperation" === fieldName && userStateColumn[fieldName]) { column.defaultSelectedFilterOperation = column[fieldName] || null } column[fieldName] = userStateColumn[fieldName] } } } function findUserStateColumn(columnsUserState, column) { const id = column.name || column.dataField; let count = columnCountById[id] || 0; for (let j = 0; j < columnsUserState.length; j++) { if (checkUserStateColumn(column, columnsUserState[j])) { if (count) { count-- } else { columnCountById[id] = columnCountById[id] || 0; columnCountById[id]++; return j } } } return -1 } if (columnsUserState) { for (i = 0; i < columns.length; i++) { userStateColumnIndex = findUserStateColumn(columnsUserState, columns[i]); allColumnsHaveState = allColumnsHaveState && userStateColumnIndex >= 0; userStateColumnIndexes.push(userStateColumnIndex) } for (i = 0; i < columns.length; i++) { column = columns[i]; userStateColumnIndex = userStateColumnIndexes[i]; if (that._hasUserState || allColumnsHaveState) { applyFieldsState(column, columnsUserState[userStateColumnIndex]) } if (userStateColumnIndex >= 0 && (0, _type.isDefined)(columnsUserState[userStateColumnIndex].initialIndex)) { resultColumns[userStateColumnIndex] = column } else { resultColumns.push(column) } } let hasAddedBands = false; for (i = 0; i < columnsUserState.length; i++) { const columnUserState = columnsUserState[i]; if (columnUserState.added && findUserStateColumn(columns, columnUserState) < 0) { column = createColumn(that, columnUserState.added); applyFieldsState(column, columnUserState); resultColumns.push(column); if (columnUserState.added.columns) { hasAddedBands = true } } } if (hasAddedBands) { updateColumnIndexes(that); resultColumns = createColumnsFromOptions(that, resultColumns) } assignColumns(that, resultColumns) } }; const updateIndexes = function(that, column) { updateColumnIndexes(that); updateColumnGroupIndexes(that, column); updateColumnSortIndexes(that, column); resetBandColumnsCache(that); updateColumnVisibleIndexes(that, column) }; exports.updateIndexes = updateIndexes; const resetColumnsCache = function(that) { that.resetColumnsCache() }; exports.resetColumnsCache = resetColumnsCache; function assignColumns(that, columns) { that._previousColumns = that._columns; that._columns = columns; resetColumnsCache(that); that.updateColumnDataTypes() } const updateColumnChanges = function(that, changeType, optionName, columnIndex) { const columnChanges = that._columnChanges || { optionNames: { length: 0 }, changeTypes: { length: 0 }, columnIndex: columnIndex }; optionName = optionName || "all"; optionName = optionName.split(".")[0]; const { changeTypes: changeTypes } = columnChanges; if (changeType && !changeTypes[changeType]) { changeTypes[changeType] = true; changeTypes.length++ } const { optionNames: optionNames } = columnChanges; if (optionName && !optionNames[optionName]) { optionNames[optionName] = true; optionNames.length++ } if (void 0 === columnIndex || columnIndex !== columnChanges.columnIndex) { if ((0, _type.isDefined)(columnIndex)) { columnChanges.columnIndices ?? (columnChanges.columnIndices = []); if ((0, _type.isDefined)(columnChanges.columnIndex)) { columnChanges.columnIndices.push(columnChanges.columnIndex) } columnChanges.columnIndices.push(columnIndex) } delete columnChanges.columnIndex } that._columnChanges = columnChanges; resetColumnsCache(that) }; exports.updateColumnChanges = updateColumnChanges; exports.fireColumnsChanged = function(that) { const onColumnsChanging = that.option("onColumnsChanging"); const columnChanges = that._columnChanges; const reinitOptionNames = ["dataField", "lookup", "dataType", "columns"]; if (that.isInitialized() && !that._updateLockCount && columnChanges) { if (onColumnsChanging) { that._updateLockCount++; onColumnsChanging((0, _extend.extend)({ component: that.component }, columnChanges)); that._updateLockCount-- } that._columnChanges = void 0; if (options = columnChanges.optionNames, options && reinitOptionNames.some((name => options[name]))) { that._reinitAfterLookupChanges = null === columnChanges || void 0 === columnChanges ? void 0 : columnChanges.optionNames.lookup; that.reinit(); that._reinitAfterLookupChanges = void 0 } else { that.columnsChanged.fire(columnChanges) } } var options }; const updateSortOrderWhenGrouping = function(that, column, groupIndex, prevGroupIndex) { const columnWasGrouped = prevGroupIndex >= 0; if (groupIndex >= 0) { if (!columnWasGrouped) { column.lastSortOrder = column.sortOrder } } else { const sortMode = that.option("sorting.mode"); let sortOrder = column.lastSortOrder; if ("single" === sortMode) { const sortedByAnotherColumn = that._columns.some((col => col !== column && (0, _type.isDefined)(col.sortIndex))); if (sortedByAnotherColumn) { sortOrder = void 0 } } column.sortOrder = sortOrder } }; exports.updateSortOrderWhenGrouping = updateSortOrderWhenGrouping; const fireOptionChanged = function(that, options) { const { value: value } = options; const { optionName: optionName } = options; const { prevValue: prevValue } = options; const { fullOptionName: fullOptionName } = options; const fullOptionPath = `${fullOptionName}.${optionName}`; if (!_const3.IGNORE_COLUMN_OPTION_NAMES[optionName] && that._skipProcessingColumnsChange !== fullOptionPath) { that._skipProcessingColumnsChange = fullOptionPath; that.component._notifyOptionChanged(fullOptionPath, value, prevValue); that._skipProcessingColumnsChange = false } }; exports.fireOptionChanged = fireOptionChanged; exports.columnOptionCore = function(that, column, optionName, value, notFireEvent) { const optionGetter = (0, _data.compileGetter)(optionName); const columnIndex = column.index; let columns; let changeType; let initialColumn; if (3 === arguments.length) { return optionGetter(column, { functionsAsIs: true }) } const prevValue = optionGetter(column, { functionsAsIs: true }); if (!(0, _common.equalByValue)(prevValue, value, { maxDepth: 5 })) { if ("groupIndex" === optionName || "calculateGroupValue" === optionName) { changeType = "grouping"; updateSortOrderWhenGrouping(that, column, value, prevValue) } else if ("sortIndex" === optionName || "sortOrder" === optionName || "calculateSortValue" === optionName) { changeType = "sorting" } else { changeType = "columns" } const optionSetter = (0, _data.compileSetter)(optionName); optionSetter(column, value, { functionsAsIs: true }); const fullOptionName = getColumnFullPath(that, column); if (_const3.COLUMN_INDEX_OPTIONS[optionName]) { updateIndexes(that, column); value = optionGetter(column) } if ("name" === optionName || "allowEditing" === optionName) { that._checkColumns() } if (!(0, _type.isDefined)(prevValue) && !(0, _type.isDefined)(value) && 0 !== optionName.indexOf("buffer") && false !== notFireEvent) { notFireEvent = true } if (!notFireEvent) { if (!_const3.USER_STATE_FIELD_NAMES.includes(optionName) && "visibleWidth" !== optionName) { columns = that.option("columns"); initialColumn = that.getColumnByPath(fullOptionName, columns); if ((0, _type.isString)(initialColumn)) { initialColumn = columns[columnIndex] = { dataField: initialColumn } } if (initialColumn && checkUserStateColumn(initialColumn, column)) { optionSetter(initialColumn, value, { functionsAsIs: true }) } } updateColumnChanges(that, changeType, optionName, columnIndex) } else { resetColumnsCache(that) } fullOptionName && fireOptionChanged(that, { fullOptionName: fullOptionName, optionName: optionName, value: value, prevValue: prevValue }) } }; function isSortOrderValid(sortOrder) { return "asc" === sortOrder || "desc" === sortOrder } exports.addExpandColumn = function(that) { const options = that._getExpandColumnOptions(); that.addCommandColumn(options) }; exports.defaultSetCellValue = function(data, value) { if (!this.dataField) { return } const path = this.dataField.split("."); const dotCount = path.length - 1; if (this.serializeValue) { value = this.serializeValue(value) } for (let i = 0; i < dotCount; i++) { const name = path[i]; data = data[name] = data[name] || {} } data[path[dotCount]] = value }; const getDataColumns = function(columns, rowIndex, bandColumnID) { const result = []; rowIndex = rowIndex || 0; columns[rowIndex] && (0, _iterator.each)(columns[rowIndex], ((_, column) => { if (column.ownerBand === bandColumnID || column.type === _const3.GROUP_COMMAND_COLUMN_NAME) { if (!column.isBand || !column.colspan) { if (!column.command || rowIndex < 1) { result.push(column) } } else { result.push.apply(result, getDataColumns(columns, rowIndex + 1, column.index)) } } })); return result }; exports.getDataColumns = getDataColumns; exports.getRowCount = function(that) { let rowCount = 1; const bandColumnsCache = that.getBandColumnsCache(); const { columnParentByIndex: columnParentByIndex } = bandColumnsCache; that._columns.forEach((column => { const parents = getParentBandColumns(column.index, columnParentByIndex); const invisibleParents = parents.filter((column => !column.visible)); if (column.visible && !invisibleParents.length) { rowCount = Math.max(rowCount, parents.length + 1) } })); return rowCount }; exports.getFixedPosition = function(that, column) { const rtlEnabled = that.option("rtlEnabled"); if (column.command && !_m_utils.default.isCustomCommandColumn(that._columns, column) || !column.fixedPosition) { return rtlEnabled ? "right" : "left" } return column.fixedPosition }; exports.processExpandColumns = function(columns, expandColumns, type, columnIndex) { let customColumnIndex; const rowCount = this.getRowCount(); let rowspan = columns[columnIndex] && columns[columnIndex].rowspan; let expandColumnsByType = expandColumns.filter((column => column.type === type)); columns.forEach(((column, index) => { if (column.type === type) { customColumnIndex = index; rowspan = columns[index + 1] ? columns[index + 1].rowspan : rowCount } })); if (rowspan > 1) { expandColumnsByType = (0, _iterator.map)(expandColumnsByType, (expandColumn => (0, _extend.extend)({}, expandColumn, { rowspan: rowspan }))) } expandColumnsByType.unshift.apply(expandColumnsByType, (0, _type.isDefined)(customColumnIndex) ? [customColumnIndex, 1] : [columnIndex, 0]); columns.splice.apply(columns, expandColumnsByType); return rowspan || 1 }; exports.digitsCount = function(number) { let i; for (i = 0; number > 1; i++) { number /= 10 } return i }; exports.numberToString = function(number, digitsCount) { let str = number ? number.toString() : "0"; while (str.length < digitsCount) { str = `0${str}` } return str }; exports.mergeColumns = (that, columns, commandColumns, needToExtend) => { let column; let commandColumnIndex; let result = columns.slice().map((column => (0, _extend.extend)({}, column))); const isColumnFixing = that._isColumnFixing(); let defaultCommandColumns = commandColumns.slice().map((column => (0, _extend.extend)({ fixed: isColumnFixing }, column))); const getCommandColumnIndex = column => commandColumns.reduce(((result, commandColumn, index) => { const columnType = needToExtend && column.type === _const3.GROUP_COMMAND_COLUMN_NAME ? "expand" : column.type; return commandColumn.type === columnType || commandColumn.command === column.command ? index : result }), -1); const callbackFilter = commandColumn => commandColumn.command !== commandColumns[commandColumnIndex].command; for (let i = 0; i < columns.length; i++) { column = columns[i]; commandColumnIndex = column && (column.type || column.command) ? getCommandColumnIndex(column) : -1; if (commandColumnIndex >= 0) { if (needToExtend) { result[i] = (0, _extend.extend)({ fixed: isColumnFixing }, commandColumns[commandColumnIndex], column); if (column.type !== _const3.GROUP_COMMAND_COLUMN_NAME) { defaultCommandColumns = defaultCommandColumns.filter(callbackFilter) } } else { const columnOptions = { visibleIndex: column.visibleIndex, index: column.index, headerId: column.headerId, allowFixing: 0 === column.groupIndex, allowReordering: 0 === column.groupIndex, groupIndex: column.groupIndex }; result[i] = (0, _extend.extend)({}, column, commandColumns[commandColumnIndex], column.type === _const3.GROUP_COMMAND_COLUMN_NAME && columnOptions) } } } if (columns.length && needToExtend && defaultCommandColumns.length) { result = result.concat(defaultCommandColumns) } return result }; exports.isColumnFixed = (that, column) => (0, _type.isDefined)(column.fixed) || !column.type ? column.fixed && column.fixedPosition !== _const2.StickyPosition.Sticky : that._isColumnFixing(); exports.convertOwnerBandToColumnReference = columns => { columns.forEach((column => { if ((0, _type.isDefined)(column.ownerBand)) { column.ownerBand = columns[column.ownerBand] } })) }; const resetBandColumnsCache = that => { that._bandColumnsCache = void 0 }; exports.resetBandColumnsCache = resetBandColumnsCache; exports.findColumn = (columns, identifier) => { const identifierOptionName = (0, _type.isString)(identifier) && identifier.substr(0, identifier.indexOf(":")); let column; if (void 0 === identifier) { return } if (identifierOptionName) { identifier = identifier.substr(identifierOptionName.length + 1) } if (identifierOptionName) { column = columns.filter((column => `${column[identifierOptionName]}` === identifier))[0] } else { ["index", "name", "dataField", "caption"].some((optionName => { column = columns.filter((column => column[optionName] === identifier))[0]; return !!column })) } return column }; exports.sortColumns = (columns, sortOrder) => { if ("asc" !== sortOrder && "desc" !== sortOrder) { return columns } const sign = "asc" === sortOrder ? 1 : -1; columns.sort(((column1, column2) => { const caption1 = column1.caption || ""; const caption2 = column2.caption || ""; return sign * caption1.localeCompare(caption2) })); return columns }; exports.strictParseNumber = function(text, format) { const parsedValue = _number.default.parse(text); if ((0, _type.isNumeric)(parsedValue)) { const formattedValue = _number.default.format(parsedValue, format); const formattedValueWithDefaultFormat = _number.default.format(parsedValue, "decimal"); if (formattedValue === text || formattedValueWithDefaultFormat === text) { return parsedValue } } }; const isFirstOrLastColumnCore = function(that, column, rowIndex) { var _columns, _columns$; let onlyWithinBandColumn = arguments.length > 3 && void 0 !== arguments[3] ? arguments[3] : false; let isLast = arguments.length > 4 && void 0 !== arguments[4] ? arguments[4] : false; let fixedPosition = arguments.length > 5 ? arguments[5] : void 0; const columnIndex = column.index; const columns = (index = rowIndex, that.getVisibleColumns(index).filter((col => { let res = true; if (col.visibleWidth === _const.HIDDEN_COLUMNS_WIDTH) { return false } if (onlyWithinBandColumn && column) { res && (res = col.ownerBand === column.ownerBand) } else if (fixedPosition) { res && (res = col.fixed && (0, _utils.getColumnFixedPosition)(that, col) === fixedPosition) } return res }))); var index; const visibleColumnIndex = that.getVisibleIndex(columnIndex, rowIndex); return isLast ? visibleColumnIndex === that.getVisibleIndex(null === (_columns = columns[columns.length - 1]) || void 0 === _columns ? void 0 : _columns.index, rowIndex) : visibleColumnIndex === that.getVisibleIndex(null === (_columns$ = columns[0]) || void 0 === _columns$ ? void 0 : _columns$.index, rowIndex) }; exports.isFirstOrLastColumn = function(that, targetColumn, rowIndex) { let onlyWithinBandColumn = arguments.length > 3 && void 0 !== arguments[3] ? arguments[3] : false; let isLast = arguments.length > 4 && void 0 !== arguments[4] ? arguments[4] : false; let fixedPosition = arguments.length > 5 ? arguments[5] : void 0; const targetColumnIndex = targetColumn.index; const bandColumnsCache = that.getBandColumnsCache(); const parentBandColumns = getParentBandColumns(targetColumnIndex, bandColumnsCache.columnParentByIndex); if (null !== parentBandColumns && void 0 !== parentBandColumns && parentBandColumns.length) { return function(that, bandColumns) { let onlyWithinBandColumn = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : false; let isLast = arguments.length > 3 && void 0 !== arguments[3] ? arguments[3] : false; let fixedPosition = arguments.length > 4 ? arguments[4] : void 0; return bandColumns.every(((column, index) => onlyWithinBandColumn && 0 === index || isFirstOrLastColumnCore(that, column, index, onlyWithinBandColumn, isLast, fixedPosition))) }(that, parentBandColumns.concat([targetColumn]), onlyWithinBandColumn, isLast, fixedPosition) } return onlyWithinBandColumn || isFirstOrLastColumnCore(that, targetColumn, rowIndex, onlyWithinBandColumn, isLast, fixedPosition) } }, 91066: /*!*************************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/grid_core/columns_resizing_reordering/const.js ***! \*************************************************************************************************************/ function(__unused_webpack_module, exports) { Object.defineProperty(exports, "__esModule", { value: true }); exports.CLASSES = void 0; exports.CLASSES = { draggableColumn: "draggable-column" } }, 19448: /*!*************************************************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/grid_core/columns_resizing_reordering/m_columns_resizing_reordering.js ***! \*************************************************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.columnsResizingReorderingModule = exports.TrackerView = exports.TablePositionViewController = exports.SeparatorView = exports.DraggingHeaderViewController = exports.DraggingHeaderView = exports.ColumnsSeparatorView = exports.ColumnsResizerViewController = exports.BlockSeparatorView = void 0; var _animation = __webpack_require__( /*! ../../../../common/core/animation */ 16826); var _events_engine = _interopRequireDefault(__webpack_require__( /*! ../../../../common/core/events/core/events_engine */ 92774)); var _drag = __webpack_require__( /*! ../../../../common/core/events/drag */ 59144); var _pointer = _interopRequireDefault(__webpack_require__( /*! ../../../../common/core/events/pointer */ 89797)); var _index = __webpack_require__( /*! ../../../../common/core/events/utils/index */ 98834); var _dom_adapter = _interopRequireDefault(__webpack_require__( /*! ../../../../core/dom_adapter */ 64960)); var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../../../core/renderer */ 64553)); var _callbacks = _interopRequireDefault(__webpack_require__( /*! ../../../../core/utils/callbacks */ 84718)); var _extend = __webpack_require__( /*! ../../../../core/utils/extend */ 52576); var _iterator = __webpack_require__( /*! ../../../../core/utils/iterator */ 21274); var _position = __webpack_require__( /*! ../../../../core/utils/position */ 41639); var _size = __webpack_require__( /*! ../../../../core/utils/size */ 57653); var _type = __webpack_require__( /*! ../../../../core/utils/type */ 11528); var _swatch_container = _interopRequireDefault(__webpack_require__( /*! ../../../../ui/widget/swatch_container */ 5080)); var _m_modules = _interopRequireDefault(__webpack_require__( /*! ../m_modules */ 74854)); var _m_utils = _interopRequireDefault(__webpack_require__( /*! ../m_utils */ 53226)); var _const = __webpack_require__( /*! ./const */ 91066); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } const MODULE_NAMESPACE = "dxDataGridResizingReordering"; const allowResizing = function(that) { return that.option("allowColumnResizing") || that.getController("columns").isColumnOptionUsed("allowResizing") }; const allowReordering = function(that) { return that.option("allowColumnReordering") || that.getController("columns").isColumnOptionUsed("allowReordering") }; class TrackerView extends _m_modules.default.View { init() { super.init(); this._tablePositionController = this.getController("tablePosition"); this._subscribeToCallback() } dispose() { this._unsubscribeFromCallback(); super.dispose() } optionChanged(args) { if ("allowColumnResizing" === args.name) { this._unsubscribeFromCallback(); if (args.value) { this._subscribeToCallback(); this._invalidate() } } super.optionChanged(args) } _renderCore() { const deferred = super._renderCore(); this.element().addClass(this.addWidgetPrefix("tracker")); this.hide(); return deferred } _unsubscribeFromCallback() { if (this._positionChanged) { this._tablePositionController.positionChanged.remove(this._positionChanged) } } _subscribeToCallback() { const that = this; that._positionChanged = function(position) { const $element = that.element(); if (null !== $element && void 0 !== $element && $element.hasClass(that.addWidgetPrefix("tracker"))) { $element.css({ top: position.top }); (0, _size.setHeight)($element, position.height) } }; this._tablePositionController.positionChanged.add(that._positionChanged) } isVisible() { return allowResizing(this) } show() { this.element().show() } hide() { var _this$element; null === (_this$element = this.element()) || void 0 === _this$element || _this$element.hide() } setHeight(value) { (0, _size.setHeight)(this.element(), value) } } exports.TrackerView = TrackerView; class SeparatorView extends _m_modules.default.View { _renderSeparator() {} _renderCore(options) { const deferred = super._renderCore(options); this._isShown = true; this._renderSeparator(); this.hide(); return deferred } show() { this._isShown = true } hide() { this._isShown = false } height(value) { const $element = this.element(); if ($element) { if ((0, _type.isDefined)(value)) { (0, _size.setHeight)($element, value) } else { return (0, _size.getHeight)($element) } } } width(value) { const $element = this.element(); if ($element) { if ((0, _type.isDefined)(value)) { (0, _size.setWidth)($element, value) } else { return (0, _size.getWidth)($element) } } } } exports.SeparatorView = SeparatorView; class ColumnsSeparatorView extends SeparatorView { init() { super.init(); this._tablePositionController = this.getController("tablePosition"); this._init() } dispose() { this._unsubscribeFromCallback(); super.dispose() } optionChanged(args) { if ("allowColumnResizing" === args.name) { if (args.value) { this._init(); this._invalidate(); this.hide(true) } else { this._unsubscribeFromCallback(); this._isTransparent = allowResizing(this); this.hide(true) } } super.optionChanged(args) } _renderSeparator() { super._renderSeparator(); const $element = this.element(); $element.addClass(this.addWidgetPrefix("columns-separator")) } _subscribeToCallback() { const that = this; let $element; that._positionChanged = function(position) { $element = that.element(); if ($element) { $element.css({ top: position.top }); (0, _size.setHeight)($element, position.height) } }; that._tablePositionController.positionChanged.add(that._positionChanged) } _unsubscribeFromCallback() { this._positionChanged && this._tablePositionController.positionChanged.remove(this._positionChanged) } _init() { this._isTransparent = allowResizing(this); if (this.isVisible()) { this._subscribeToCallback() } } isVisible() { return this.option("showColumnHeaders") && (allowReordering(this) || allowResizing(this)) } show() { const that = this; const $element = this.element(); if ($element && !that._isShown) { if (that._isTransparent) { $element.removeClass(that.addWidgetPrefix("columns-separator-transparent")) } else { $element.show() } } super.show() } hide(force) { const $element = this.element(); const columnsSeparatorTransparent = this.addWidgetPrefix("columns-separator-transparent"); if ($element && (this._isShown || force)) { if (this._isTransparent) { $element.addClass(columnsSeparatorTransparent); $element.css("left", ""); $element.show() } else { if ($element.hasClass(columnsSeparatorTransparent)) { $element.removeClass(columnsSeparatorTransparent) } $element.hide() } } super.hide() } moveByX(outerX) { const $element = this.element(); if ($element) { $element.css("left", null === outerX ? 0 : outerX - this._parentElement().offset().left) } } changeCursor(cursorName) { cursorName = (0, _type.isDefined)(cursorName) ? cursorName : ""; const $element = this.element(); if ($element) { $element.css("cursor", cursorName) } } } exports.ColumnsSeparatorView = ColumnsSeparatorView; class BlockSeparatorView extends SeparatorView { init() { super.init(); const dataController = this.getController("data"); dataController.loadingChanged.add((isLoading => { if (!isLoading) { this.hide() } })) } _renderSeparator() { super._renderSeparator(); this.element().addClass("dx-block-separator").html(" ") } hide() { const that = this; const $parent = this._parentElement(); const $element = this.element(); if ($element && this._isShown) { $element.css("display", "none") } if ($parent && !$parent.children(".dx-block-separator").length) { $parent.prepend(that.element()) } super.hide() } isVisible() { const groupPanelOptions = this.option("groupPanel"); const columnChooserOptions = this.option("columnChooser"); return (null === groupPanelOptions || void 0 === groupPanelOptions ? void 0 : groupPanelOptions.visible) || (null === columnChooserOptions || void 0 === columnChooserOptions ? void 0 : columnChooserOptions.enabled) } show(targetLocation) { const $element = this.element(); if ($element && !this._isShown) { switch (targetLocation) { case "group": this.element().css("display", "block"); break; case "columnChooser": ! function(toOptions) { _animation.fx.stop($element, true); _animation.fx.animate($element, { type: "slide", from: { width: 0, display: toOptions.display }, to: toOptions, duration: 300, easing: "swing" }) }({ width: "100%", display: "block" }); break; default: $element.css("display", "") } } super.show() } } exports.BlockSeparatorView = BlockSeparatorView; class DraggingHeaderView extends _m_modules.default.View { init() { super.init(); const dataController = this.getController("data"); this._controller = this.getController("draggingHeader"); this._columnsResizerViewController = this.getController("columnsResizer"); this._columnsController = this.getController("columns"); this._isDragging = false; dataController.loadingChanged.add((isLoading => { const element = this.element(); if (!isLoading && element) { element.hide() } })) } isDragging() { return this._isDragging } _getDraggingPanelByPos(pos) { let result; (0, _iterator.each)(this._dragOptions.draggingPanels, ((index, draggingPanel) => { if (draggingPanel) { const boundingRect = draggingPanel.getBoundingRect(); if (boundingRect && (void 0 === boundingRect.bottom || pos.y < boundingRect.bottom) && (void 0 === boundingRect.top || pos.y > boundingRect.top) && (void 0 === boundingRect.left || pos.x > boundingRect.left) && (void 0 === boundingRect.right || pos.x < boundingRect.right)) { result = draggingPanel; return false } } return })); return result } _renderCore() { this.element().addClass(`${this.addWidgetPrefix("drag-header")} ${this.addWidgetPrefix("text-content")} dx-widget`).hide() } _resetTargetColumnOptions() { const params = this._dropOptions; params.targetColumnIndex = -1; delete params.targetColumnElement; delete params.isLast; delete params.posX; delete params.posY } _getVisibleIndexObject(rowIndex, visibleIndex) { if ((0, _type.isDefined)(rowIndex)) { return { columnIndex: visibleIndex, rowIndex: rowIndex } } return visibleIndex } dispose() { const element = this.element(); this._dragOptions = null; null === element || void 0 === element || element.parent().find(`.${this.addWidgetPrefix("drag-header")}`).remove() } isVisible() { const commonColumnSettings = this._columnsController.getCommonSettings(); return this.option("showColumnHeaders") && (allowReordering(this) || commonColumnSettings.allowGrouping || commonColumnSettings.allowHiding) } dragHeader(options) { const { columnElement: columnElement } = options; const isCommandColumn = !!options.sourceColumn.type; this._isDragging = true; this._dragOptions = options; this._dropOptions = { sourceIndex: options.index, sourceColumnIndex: this._getVisibleIndexObject(options.rowIndex, options.columnIndex), sourceColumnElement: options.columnElement, sourceLocation: options.sourceLocation }; const document = _dom_adapter.default.getDocument(); this._onSelectStart = document.onselectstart; document.onselectstart = function() { return false }; this._controller.drag(this._dropOptions); this.element().css({ textAlign: null === columnElement || void 0 === columnElement ? void 0 : columnElement.css("textAlign"), height: columnElement && (isCommandColumn && columnElement.get(0).clientHeight || (0, _size.getHeight)(columnElement)), width: columnElement && (isCommandColumn && columnElement.get(0).clientWidth || (0, _size.getWidth)(columnElement)), whiteSpace: null === columnElement || void 0 === columnElement ? void 0 : columnElement.css("whiteSpace") }).addClass(this.addWidgetPrefix("drag-action")).toggleClass("dx-drag-command-cell", isCommandColumn).text(isCommandColumn ? "" : options.sourceColumn.caption); this.element().appendTo(_swatch_container.default.getSwatchContainer(columnElement)) } moveHeader(args) { const e = args.event; const { that: that } = e.data; const eventData = (0, _index.eventData)(e); const isResizing = that._columnsResizerViewController ? that._columnsResizerViewController.isResizing() : false; const dragOptions = that._dragOptions; if (that._isDragging && !isResizing) { const $element = that.element(); const moveDeltaX = Math.abs(eventData.x - dragOptions.columnElement.offset().left - dragOptions.deltaX); const moveDeltaY = Math.abs(eventData.y - dragOptions.columnElement.offset().top - dragOptions.deltaY); if ($element.is(":visible") || moveDeltaX > 5 || moveDeltaY > 5) { $element.show(); const newLeft = eventData.x - dragOptions.deltaX; const newTop = eventData.y - dragOptions.deltaY; $element.css({ left: newLeft, top: newTop }); that.dockHeader(eventData) } e.preventDefault() } } dockHeader(eventData) { const that = this; const targetDraggingPanel = that._getDraggingPanelByPos(eventData); const controller = that._controller; const params = that._dropOptions; const dragOptions = that._dragOptions; if (targetDraggingPanel) { const rtlEnabled = that.option("rtlEnabled"); const isVerticalOrientation = "columnChooser" === targetDraggingPanel.getName(); const axisName = isVerticalOrientation ? "y" : "x"; const targetLocation = targetDraggingPanel.getName(); const rowIndex = "headers" === targetLocation ? dragOptions.rowIndex : void 0; const { sourceColumn: sourceColumn } = dragOptions; const columnElements = targetDraggingPanel.getColumnElements(rowIndex, null === sourceColumn || void 0 === sourceColumn ? void 0 : sourceColumn.ownerBand) || []; const pointsByTarget = dragOptions.pointsByTarget = dragOptions.pointsByTarget || {}; const pointsByColumns = "columnChooser" === targetLocation ? [] : pointsByTarget[targetLocation] || controller._generatePointsByColumns((0, _extend.extend)({}, dragOptions, { targetDraggingPanel: targetDraggingPanel, columns: targetDraggingPanel.getColumns(rowIndex), columnElements: columnElements, isVerticalOrientation: isVerticalOrientation, startColumnIndex: "headers" === targetLocation ? (0, _renderer.default)(columnElements[0]).index() : 0 })); pointsByTarget[targetLocation] = pointsByColumns; params.targetLocation = targetLocation; if (pointsByColumns.length > 0) { for (let i = 0; i < pointsByColumns.length; i++) { const centerPosition = pointsByColumns[i + 1] && (pointsByColumns[i][axisName] + pointsByColumns[i + 1][axisName]) / 2; if (void 0 === centerPosition || (rtlEnabled && "x" === axisName ? eventData[axisName] > centerPosition : eventData[axisName] < centerPosition)) { params.targetColumnIndex = that._getVisibleIndexObject(rowIndex, pointsByColumns[i].columnIndex); if (columnElements[i]) { params.targetColumnElement = columnElements.eq(i); params.isLast = false } else { params.targetColumnElement = columnElements.last(); params.isLast = true } params.posX = pointsByColumns[i].x; params.posY = pointsByColumns[i].y; controller.dock(params); break } } } else { that._resetTargetColumnOptions(); controller.dock(params) } } } dropHeader(args) { const e = args.event; const { that: that } = e.data; const controller = that._controller; that.element().hide(); if (controller && that._isDragging) { controller.drop(that._dropOptions) } that.element().appendTo(that._parentElement()); that._dragOptions = null; that._dropOptions = null; that._isDragging = false; _dom_adapter.default.getDocument().onselectstart = that._onSelectStart || null } } exports.DraggingHeaderView = DraggingHeaderView; const isNextColumnResizingMode = function(that) { return "widget" !== that.option("columnResizingMode") }; class ColumnsResizerViewController extends _m_modules.default.ViewController { init() { this._subscribesToCallbacks = []; if (allowResizing(this)) { this._init() } } dispose() { this._unsubscribes(); super.dispose() } optionChanged(args) { super.optionChanged(args); if ("allowColumnResizing" === args.name) { if (args.value) { this._init(); this._subscribeToEvents() } else { this._unsubscribes() } } } _isHeadersRowArea(posY) { if (this._columnHeadersView) { const element = this._columnHeadersView.element(); if (element) { const offsetTop = element.offset().top; const headersRowHeight = this._columnHeadersView.getHeadersRowHeight(); return posY >= offsetTop && posY <= offsetTop + headersRowHeight } } return false } _isRtlParentStyle() { var _this$_$parentContain; const rtlEnabled = this.option("rtlEnabled"); return rtlEnabled && "rtl" === (null === (_this$_$parentContain = this._$parentContainer) || void 0 === _this$_$parentContain ? void 0 : _this$_$parentContain.parent().css("direction")) } _correctColumnIndexForPoint(point, correctionValue, columns) { point.columnIndex -= correctionValue } _pointCreated(point, cellsLength, columns) { const isNextColumnMode = isNextColumnResizingMode(this); const rtlEnabled = this.option("rtlEnabled"); const isRtlParentStyle = this._isRtlParentStyle(); const firstPointColumnIndex = !isNextColumnMode && rtlEnabled && !isRtlParentStyle ? 0 : 1; if (point.index >= firstPointColumnIndex && point.index < cellsLength + (!isNextColumnMode && (!rtlEnabled || isRtlParentStyle) ? 1 : 0)) { this._correctColumnIndexForPoint(point, firstPointColumnIndex, columns); const currentColumn = columns[point.columnIndex] || {}; const nextColumn = columns[point.columnIndex + 1] || {}; return !(isNextColumnMode ? currentColumn.allowResizing && nextColumn.allowResizing : currentColumn.allowResizing) } return true } _getTargetPoint(pointsByColumns, currentX, deltaX) { if (pointsByColumns) { for (let i = 0; i < pointsByColumns.length; i++) { if (pointsByColumns[i].x === pointsByColumns[0].x && pointsByColumns[i + 1] && pointsByColumns[i].x === pointsByColumns[i + 1].x) { continue } if (pointsByColumns[i].x - deltaX <= currentX && currentX <= pointsByColumns[i].x + deltaX) { return pointsByColumns[i] } } } return null } getSeparatorOffsetX($cell) { var _$cell$offset; const isNextColumnMode = isNextColumnResizingMode(this); const rtlEnabled = this.option("rtlEnabled"); const isRtlParentStyle = this._isRtlParentStyle(); const outerWidth = $cell[0].getBoundingClientRect().width; const cellOffset = (null === (_$cell$offset = $cell.offset()) || void 0 === _$cell$offset ? void 0 : _$cell$offset.left) ?? 0; return cellOffset + ((isNextColumnMode || isRtlParentStyle) && rtlEnabled ? 0 : outerWidth) } _moveSeparator(args) { var _that$_draggingHeader; const e = args.event; const that = e.data; const columnsSeparatorWidth = that._columnsSeparatorView.width(); const isNextColumnMode = isNextColumnResizingMode(that); const deltaX = columnsSeparatorWidth / 2; const parentOffset = that._$parentContainer.offset(); const parentOffsetLeft = parentOffset.left; const eventData = (0, _index.eventData)(e); const isRtlParentStyle = this._isRtlParentStyle(); const isDragging = null === (_that$_draggingHeader = that._draggingHeaderView) || void 0 === _that$_draggingHeader ? void 0 : _that$_draggingHeader.isDragging(); if (that._isResizing && that._resizingInfo) { if ((parentOffsetLeft <= eventData.x || !isNextColumnMode && isRtlParentStyle) && (!isNextColumnMode || eventData.x <= parentOffsetLeft + (0, _size.getWidth)(that._$parentContainer))) { if (that._updateColumnsWidthIfNeeded(eventData.x)) { const $cell = that._columnHeadersView.getColumnElements().eq(that._resizingInfo.currentColumnIndex); if ($cell.length) { const offsetX = this.getSeparatorOffsetX($cell); that._columnsSeparatorView.moveByX(offsetX); that._tablePositionController.update(that._targetPoint.y); e.preventDefault() } } } } else if (!isDragging) { if (that._isHeadersRowArea(eventData.y)) { if (that._previousParentOffset) { if (that._previousParentOffset.left !== parentOffset.left || that._previousParentOffset.top !== parentOffset.top) { that.pointsByColumns(null) } } that._targetPoint = that._getTargetPoint(that.pointsByColumns(), eventData.x, columnsSeparatorWidth); that._previousParentOffset = parentOffset; that._isReadyResizing = false; if (that._targetPoint) { that._columnsSeparatorView.changeCursor("col-resize"); that._columnsSeparatorView.moveByX(that._targetPoint.x - deltaX); that._tablePositionController.update(that._targetPoint.y); that._isReadyResizing = true; e.preventDefault() } else { that._columnsSeparatorView.changeCursor(); that._columnsSeparatorView.moveByX(null) } } else { that.pointsByColumns(null); that._isReadyResizing = false; that._columnsSeparatorView.changeCursor(); that._columnsSeparatorView.moveByX(null) } } } _endResizing(args) { const e = args.event; const that = e.data; if (that._isResizing) { that.pointsByColumns(null); that._resizingInfo = null; that._columnsSeparatorView.hide(); that._columnsSeparatorView.changeCursor(); that._trackerView.hide(); that._isReadyResizing = false; that._isResizing = false } } _getNextColumnIndex(currentColumnIndex) { return currentColumnIndex + 1 } _setupResizingInfo(posX) { const currentColumnIndex = this._targetPoint.columnIndex; const nextColumnIndex = this._getNextColumnIndex(currentColumnIndex); const $currentHeader = this._columnHeadersView.getHeaderElement(currentColumnIndex); const $nextHeader = this._columnHeadersView.getHeaderElement(nextColumnIndex); this._resizingInfo = { startPosX: posX, currentColumnIndex: currentColumnIndex, currentColumnWidth: null !== $currentHeader && void 0 !== $currentHeader && $currentHeader.length ? (0, _position.getBoundingRect)($currentHeader[0]).width : 0, nextColumnIndex: nextColumnIndex, nextColumnWidth: null !== $nextHeader && void 0 !== $nextHeader && $nextHeader.length ? (0, _position.getBoundingRect)($nextHeader[0]).width : 0, needToInvertResizing: this._needToInvertResizing($currentHeader) } } _startResizing(args) { const e = args.event; const that = e.data; const eventData = (0, _index.eventData)(e); if ((0, _index.isTouchEvent)(e)) { if (that._isHeadersRowArea(eventData.y)) { that._targetPoint = that._getTargetPoint(that.pointsByColumns(), eventData.x, 10); if (that._targetPoint) { that._columnsSeparatorView.moveByX(that._targetPoint.x - that._columnsSeparatorView.width() / 2); that._isReadyResizing = true } } else { that._isReadyResizing = false } } if (that._isReadyResizing) { that._setupResizingInfo(eventData.x); that._isResizing = true; that._tablePositionController.update(that._targetPoint.y); that._columnsSeparatorView.show(); that._trackerView.show(); const scrollable = that.component.getScrollable(); if (scrollable && that._isRtlParentStyle()) { that._scrollRight = (0, _size.getWidth)(scrollable.$content()) - (0, _size.getWidth)(scrollable.container()) - scrollable.scrollLeft() } e.preventDefault(); e.stopPropagation() } if (this.isResizing()) { this._editorFactoryController.loseFocus() } } _generateColumnsTopYIndex() { let needToCheckPrevPoint = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : false; const that = this; const rowCount = that._columnsController.getRowCount(); const topYMap = {}; const pointCreated = point => { const x = Math.ceil(point.x); if (!topYMap[x]) { topYMap[x] = point.y } return true }; for (let rowIndex = 0; rowIndex < rowCount - 1; rowIndex++) { const cells = that._columnHeadersView.getColumnElements(rowIndex); if (cells && cells.length > 0) { _m_utils.default.getPointsByColumns(cells, pointCreated, false, 0, needToCheckPrevPoint) } } return topYMap } _generatePointsByColumns() { let needToCheckPrevPoint = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : false; const that = this; const topYMap = that._generateColumnsTopYIndex(needToCheckPrevPoint); const columns = that._columnsController ? that._columnsController.getVisibleColumns() : []; const cells = that._columnHeadersView.getColumnElements(); that._pointsByColumns = []; if (cells && cells.length > 0) { that._pointsByColumns = _m_utils.default.getPointsByColumns(cells, (point => that._pointCreated((point => { const x = Math.ceil(point.x); if (topYMap[x]) { point.y = topYMap[x] } return point })(point), cells.length, columns)), false, 0, needToCheckPrevPoint) } } _needToInvertResizing($cell) { const rtlEnabled = this.option("rtlEnabled"); const isRtlParentStyle = this._isRtlParentStyle(); const isNextColumnMode = isNextColumnResizingMode(this); return (isNextColumnMode || isRtlParentStyle) && rtlEnabled } _unsubscribeFromEvents() { this._moveSeparatorHandler && _events_engine.default.off(_dom_adapter.default.getDocument(), (0, _index.addNamespace)(_pointer.default.move, MODULE_NAMESPACE), this._moveSeparatorHandler); this._startResizingHandler && _events_engine.default.off(this._$parentContainer, (0, _index.addNamespace)(_pointer.default.down, MODULE_NAMESPACE), this._startResizingHandler); if (this._endResizingHandler) { _events_engine.default.off(this._columnsSeparatorView.element(), (0, _index.addNamespace)(_pointer.default.up, MODULE_NAMESPACE), this._endResizingHandler); _events_engine.default.off(_dom_adapter.default.getDocument(), (0, _index.addNamespace)(_pointer.default.up, MODULE_NAMESPACE), this._endResizingHandler) } } _subscribeToEvents() { this._moveSeparatorHandler = this.createAction(this._moveSeparator); this._startResizingHandler = this.createAction(this._startResizing); this._endResizingHandler = this.createAction(this._endResizing); _events_engine.default.on(_dom_adapter.default.getDocument(), (0, _index.addNamespace)(_pointer.default.move, MODULE_NAMESPACE), this, this._moveSeparatorHandler); _events_engine.default.on(this._$parentContainer, (0, _index.addNamespace)(_pointer.default.down, MODULE_NAMESPACE), this, this._startResizingHandler); _events_engine.default.on(this._columnsSeparatorView.element(), (0, _index.addNamespace)(_pointer.default.up, MODULE_NAMESPACE), this, this._endResizingHandler); _events_engine.default.on(_dom_adapter.default.getDocument(), (0, _index.addNamespace)(_pointer.default.up, MODULE_NAMESPACE), this, this._endResizingHandler) } _updateColumnsWidthIfNeeded(posX) { let deltaX; let needUpdate = false; let contentWidth = this._rowsView.contentWidth(); const resizingInfo = this._resizingInfo; const columnsController = this._columnsController; const visibleColumns = columnsController.getVisibleColumns(); const columnsSeparatorWidth = this._columnsSeparatorView.width(); const isNextColumnMode = isNextColumnResizingMode(this); const adaptColumnWidthByRatio = isNextColumnMode && this.option("adaptColumnWidthByRatio") && !this.option("columnAutoWidth"); const isRtlParentStyle = this._isRtlParentStyle(); const column = visibleColumns[resizingInfo.currentColumnIndex]; const nextColumn = visibleColumns[resizingInfo.nextColumnIndex]; const { needToInvertResizing: needToInvertResizing } = resizingInfo; function isPercentWidth(width) { return (0, _type.isString)(width) && width.endsWith("%") } function setColumnWidth(column, columnWidth, contentWidth, adaptColumnWidthByRatio) { if (column) { const oldColumnWidth = column.width; if (oldColumnWidth) { adaptColumnWidthByRatio = isPercentWidth(oldColumnWidth) } if (adaptColumnWidthByRatio) { columnsController.columnOption(column.index, "visibleWidth", columnWidth); columnsController.columnOption(column.index, "width", `${(columnWidth/contentWidth*100).toFixed(3)}%`) } else { columnsController.columnOption(column.index, "visibleWidth", null); columnsController.columnOption(column.index, "width", columnWidth) } } } deltaX = posX - resizingInfo.startPosX; if (needToInvertResizing) { deltaX = -deltaX } let { cellWidth: cellWidth, nextCellWidth: nextCellWidth } = function(delta) { let nextMinWidth; let nextCellWidth; let needCorrectionNextCellWidth; const cellWidth = resizingInfo.currentColumnWidth + delta; const minWidth = (null === column || void 0 === column ? void 0 : column.minWidth) || columnsSeparatorWidth; const result = {}; if (cellWidth >= minWidth) { result.cellWidth = cellWidth } else { result.cellWidth = minWidth; needCorrectionNextCellWidth = true } if (isNextColumnMode) { nextCellWidth = resizingInfo.nextColumnWidth - delta; nextMinWidth = (null === nextColumn || void 0 === nextColumn ? void 0 : nextColumn.minWidth) || columnsSeparatorWidth; if (nextCellWidth >= nextMinWidth) { if (needCorrectionNextCellWidth) { result.nextCellWidth = resizingInfo.nextColumnWidth - (delta + minWidth - cellWidth) } else { result.nextCellWidth = nextCellWidth } } else { result.nextCellWidth = nextMinWidth; result.cellWidth = resizingInfo.currentColumnWidth + (delta - nextMinWidth + nextCellWidth) } } return result }(deltaX); needUpdate = column.width !== cellWidth; if (needUpdate) { columnsController.beginUpdate(); cellWidth = Math.floor(cellWidth); contentWidth = function(contentWidth, visibleColumns) { const allColumnsHaveWidth = visibleColumns.every((column => column.width)); if (allColumnsHaveWidth) { const totalPercent = visibleColumns.reduce(((sum, column) => { if (isPercentWidth(column.width)) { sum += parseFloat(column.width) } return sum }), 0); if (totalPercent > 100) { contentWidth = contentWidth / totalPercent * 100 } } return contentWidth }(contentWidth, visibleColumns); setColumnWidth(column, cellWidth, contentWidth, adaptColumnWidthByRatio); if (isNextColumnMode) { nextCellWidth = Math.floor(nextCellWidth); setColumnWidth(nextColumn, nextCellWidth, contentWidth, adaptColumnWidthByRatio) } else { const columnWidths = this._columnHeadersView.getColumnWidths(); columnWidths[resizingInfo.currentColumnIndex] = cellWidth; const hasScroll = columnWidths.reduce(((totalWidth, width) => totalWidth + width), 0) > this._rowsView.contentWidth(); if (!hasScroll) { const lastColumnIndex = _m_utils.default.getLastResizableColumnIndex(visibleColumns); if (lastColumnIndex >= 0) { columnsController.columnOption(visibleColumns[lastColumnIndex].index, "visibleWidth", "auto") } } for (let i = 0; i < columnWidths.length; i++) { if (visibleColumns[i] && visibleColumns[i] !== column && void 0 === visibleColumns[i].width) { columnsController.columnOption(visibleColumns[i].index, "width", columnWidths[i]) } } } columnsController.endUpdate(); if (!isNextColumnMode) { this.component.updateDimensions(); const scrollable = this.component.getScrollable(); if (scrollable && isRtlParentStyle) { const left = (0, _size.getWidth)(scrollable.$content()) - (0, _size.getWidth)(scrollable.container()) - this._scrollRight; scrollable.scrollTo({ left: left }) } } } return needUpdate } _subscribeToCallback(callback, handler) { callback.add(handler); this._subscribesToCallbacks.push({ callback: callback, handler: handler }) } _unsubscribeFromCallbacks() { for (let i = 0; i < this._subscribesToCallbacks.length; i++) { const subscribe = this._subscribesToCallbacks[i]; subscribe.callback.remove(subscribe.handler) } this._subscribesToCallbacks = [] } _unsubscribes() { this._unsubscribeFromEvents(); this._unsubscribeFromCallbacks() } _init() { const generatePointsByColumnsHandler = () => { if (!this._isResizing) { this.pointsByColumns(null) } }; const generatePointsByColumnsScrollHandler = offset => { if (this._scrollLeft !== offset.left) { this._scrollLeft = offset.left; this.pointsByColumns(null) } }; this._columnsSeparatorView = this.getView("columnsSeparatorView"); this._columnHeadersView = this.getView("columnHeadersView"); this._trackerView = this.getView("trackerView"); this._rowsView = this.getView("rowsView"); this._columnsController = this.getController("columns"); this._tablePositionController = this.getController("tablePosition"); this._editorFactoryController = this.getController("editorFactory"); this._draggingHeaderView = this.component.getView("draggingHeaderView"); this._$parentContainer = this.component.$element(); this._subscribeToCallback(this._columnHeadersView.renderCompleted, generatePointsByColumnsHandler); this._subscribeToCallback(this._columnHeadersView.resizeCompleted, generatePointsByColumnsHandler); this._subscribeToCallback(this._columnsSeparatorView.renderCompleted, (() => { this._unsubscribeFromEvents(); this._subscribeToEvents() })); this._subscribeToCallback(this._rowsView.renderCompleted, (() => { this._rowsView.scrollChanged.remove(generatePointsByColumnsScrollHandler); this._rowsView.scrollChanged.add(generatePointsByColumnsScrollHandler) })); let previousScrollbarVisibility = 0 !== this._rowsView.getScrollbarWidth(); let previousTableHeight = 0; this._subscribeToCallback(this._tablePositionController.positionChanged, (e => { if (this._isResizing && !this._rowsView.isResizing) { const scrollbarVisibility = 0 !== this._rowsView.getScrollbarWidth(); if (previousScrollbarVisibility !== scrollbarVisibility || previousTableHeight && previousTableHeight !== e.height) { previousScrollbarVisibility = scrollbarVisibility; previousTableHeight = e.height; this.component.updateDimensions() } else { this._rowsView.updateFreeSpaceRowHeight() } } previousTableHeight = e.height })) } isResizing() { return this._isResizing } pointsByColumns(value) { if (void 0 !== value) { this._pointsByColumns = value } else { if (!this._pointsByColumns) { this._generatePointsByColumns() } return this._pointsByColumns } } } exports.ColumnsResizerViewController = ColumnsResizerViewController; class TablePositionViewController extends _m_modules.default.ViewController { constructor(component) { super(component); this.positionChanged = (0, _callbacks.default)() } init() { super.init(); this._columnsResizerController = this.getController("columnsResizer"); this._columnHeadersView = this.getView("columnHeadersView"); this._rowsView = this.getView("rowsView"); this._pagerView = this.getView("pagerView"); this._rowsView.resizeCompleted.add((() => { if (this.option("allowColumnResizing")) { const targetPoint = this._columnsResizerController._targetPoint; this.update(targetPoint ? targetPoint.y : null) } })) } update(top) { const params = {}; const $element = this._columnHeadersView.element(); const offset = null === $element || void 0 === $element ? void 0 : $element.offset(); const offsetTop = (null === offset || void 0 === offset ? void 0 : offset.top) || 0; const diffOffsetTop = (0, _type.isDefined)(top) ? Math.abs(top - offsetTop) : 0; const columnsHeadersHeight = this._columnHeadersView ? this._columnHeadersView.getHeight() : 0; const scrollBarWidth = this._rowsView.getScrollbarWidth(true); const rowsHeight = this._rowsView ? this._rowsView.height() - scrollBarWidth : 0; const draggingHeaderView = this.component.getView("draggingHeaderView"); params.height = columnsHeadersHeight; const isDraggingOrResizing = this._columnsResizerController.isResizing() || draggingHeaderView.isDragging(); if (isDraggingOrResizing) { params.height += rowsHeight - diffOffsetTop } if (null !== top && null !== $element && void 0 !== $element && $element.length) { params.top = $element[0].offsetTop + diffOffsetTop } this.positionChanged.fire(params) } } exports.TablePositionViewController = TablePositionViewController; class DraggingHeaderViewController extends _m_modules.default.ViewController { init() { var _this$_headerPanelVie, _this$_columnChooserV; super.init(); this._columnsController = this.getController("columns"); this._tablePositionController = this.getController("tablePosition"); this._columnHeadersView = this.getView("columnHeadersView"); this._columnsSeparatorView = this.getView("columnsSeparatorView"); this._draggingHeaderView = this.getView("draggingHeaderView"); this._rowsView = this.getView("rowsView"); this._blockSeparatorView = this.getView("blockSeparatorView"); this._headerPanelView = this.getView("headerPanel"); this._columnChooserView = this.getView("columnChooserView"); const subscribeToEvents = () => { if (this._draggingHeaderView) { const draggingPanels = [this._columnChooserView, this._columnHeadersView, this._headerPanelView]; this._unsubscribeFromEvents(this._draggingHeaderView, draggingPanels); this._subscribeToEvents(this._draggingHeaderView, draggingPanels) } }; this._columnHeadersView.renderCompleted.add(subscribeToEvents); null === (_this$_headerPanelVie = this._headerPanelView) || void 0 === _this$_headerPanelVie || _this$_headerPanelVie.renderCompleted.add(subscribeToEvents); null === (_this$_columnChooserV = this._columnChooserView) || void 0 === _this$_columnChooserV || _this$_columnChooserV.renderCompleted.add(subscribeToEvents) } dispose() { if (this._draggingHeaderView) { this._unsubscribeFromEvents(this._draggingHeaderView, [this._columnChooserView, this._columnHeadersView, this._headerPanelView]) } } _generatePointsByColumns(options) { let needToCheckPrevPoint = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : false; this.isCustomGroupColumnPosition = this.checkIsCustomGroupColumnPosition(options); const points = _m_utils.default.getPointsByColumns(options.columnElements, (point => this._pointCreated(point, options.columns, options.targetDraggingPanel.getName(), options.sourceColumn)), options.isVerticalOrientation, options.startColumnIndex, needToCheckPrevPoint); return points } checkIsCustomGroupColumnPosition(options) { let wasOnlyCommandColumns = true; for (let i = 0; i < options.columns.length; i += 1) { const col = options.columns[i]; if ("expand" === col.command && !wasOnlyCommandColumns) { return true } if (!col.command) { wasOnlyCommandColumns = false } } return false } _pointCreated(point, columns, location, sourceColumn) { const targetColumn = columns[point.columnIndex]; const prevColumn = columns[point.columnIndex - 1]; const isColumnAfterExpandColumn = "expand" === (null === prevColumn || void 0 === prevColumn ? void 0 : prevColumn.command); const isFirstExpandColumn = "expand" === (null === targetColumn || void 0 === targetColumn ? void 0 : targetColumn.command) && "expand" !== (null === prevColumn || void 0 === prevColumn ? void 0 : prevColumn.command); const sourceColumnReorderingDisabled = sourceColumn && !sourceColumn.allowReordering; const otherColumnsReorderingDisabled = !(null !== targetColumn && void 0 !== targetColumn && targetColumn.allowReordering) && !(null !== prevColumn && void 0 !== prevColumn && prevColumn.allowReordering); switch (location) { case "columnChooser": return true; case "headers": if (sourceColumnReorderingDisabled) { return true } if (!isFirstExpandColumn) { return isColumnAfterExpandColumn || otherColumnsReorderingDisabled } if (this.isCustomGroupColumnPosition) { return false } while ("expand" === (null === (_columns$point$column = columns[point.columnIndex]) || void 0 === _columns$point$column ? void 0 : _columns$point$column.command)) { var _columns$point$column; point.columnIndex += 1 } return false; default: return 0 === columns.length } } _subscribeToEvents(draggingHeader, draggingPanels) { const that = this; (0, _iterator.each)(draggingPanels, ((_, draggingPanel) => { if (draggingPanel) { let columns; const rowCount = draggingPanel.getRowCount ? draggingPanel.getRowCount() : 1; const nameDraggingPanel = draggingPanel.getName(); const subscribeToEvents = function(index, columnElement) { if (!columnElement) { return } const $columnElement = (0, _renderer.default)(columnElement); const column = columns[index]; if (column && draggingPanel.allowDragging(column)) { $columnElement.addClass(that.addWidgetPrefix("drag-action")); _events_engine.default.on($columnElement, (0, _index.addNamespace)(_drag.start, MODULE_NAMESPACE), that.createAction((args => { const e = args.event; const eventData = (0, _index.eventData)(e); draggingHeader.dragHeader({ deltaX: eventData.x - (0, _renderer.default)(e.currentTarget).offset().left, deltaY: eventData.y - (0, _renderer.default)(e.currentTarget).offset().top, sourceColumn: column, index: column.index, columnIndex: index, columnElement: $columnElement, sourceLocation: nameDraggingPanel, draggingPanels: draggingPanels, rowIndex: that._columnsController.getRowIndex(column.index, true) }) }))); _events_engine.default.on($columnElement, (0, _index.addNamespace)(_drag.move, MODULE_NAMESPACE), { that: draggingHeader }, that.createAction(draggingHeader.moveHeader)); _events_engine.default.on($columnElement, (0, _index.addNamespace)(_drag.end, MODULE_NAMESPACE), { that: draggingHeader }, that.createAction(draggingHeader.dropHeader)) } }; for (let i = 0; i < rowCount; i++) { const columnElements = draggingPanel.getColumnElements(i) || []; if (columnElements.length) { columns = draggingPanel.getColumns(i) || []; (0, _iterator.each)(columnElements, subscribeToEvents) } } } })) } _unsubscribeFromEvents(draggingHeader, draggingPanels) { const that = this; (0, _iterator.each)(draggingPanels, ((_, draggingPanel) => { if (draggingPanel) { const columnElements = draggingPanel.getColumnElements() || []; (0, _iterator.each)(columnElements, ((index, columnElement) => { const $columnElement = (0, _renderer.default)(columnElement); _events_engine.default.off($columnElement, (0, _index.addNamespace)(_drag.start, MODULE_NAMESPACE)); _events_engine.default.off($columnElement, (0, _index.addNamespace)(_drag.move, MODULE_NAMESPACE)); _events_engine.default.off($columnElement, (0, _index.addNamespace)(_drag.end, MODULE_NAMESPACE)); $columnElement.removeClass(that.addWidgetPrefix("drag-action")) })) } })) } _getSeparator(targetLocation) { return "headers" === targetLocation ? this._columnsSeparatorView : this._blockSeparatorView } hideSeparators(type) { const blockSeparator = this._blockSeparatorView; const columnsSeparator = this._columnsSeparatorView; this._animationColumnIndex = void 0; blockSeparator && blockSeparator.hide(); "block" !== type && columnsSeparator && columnsSeparator.hide() } allowDrop(parameters) { return this._columnsController.allowMoveColumn(parameters.sourceColumnIndex, parameters.targetColumnIndex, parameters.sourceLocation, parameters.targetLocation) } drag(parameters) { const { sourceIndex: sourceIndex } = parameters; const { sourceLocation: sourceLocation } = parameters; const { sourceColumnElement: sourceColumnElement } = parameters; const headersView = this._columnHeadersView; const rowsView = this._rowsView; if (sourceColumnElement) { sourceColumnElement.addClass(this.addWidgetPrefix(_const.CLASSES.draggableColumn)); if ("headers" === sourceLocation) { headersView && headersView.toggleDraggableColumnClass(sourceIndex, true); rowsView && rowsView.toggleDraggableColumnClass(sourceIndex, true) } } } dock(parameters) { const that = this; const targetColumnIndex = (0, _type.isObject)(parameters.targetColumnIndex) ? parameters.targetColumnIndex.columnIndex : parameters.targetColumnIndex; const { sourceLocation: sourceLocation } = parameters; const { targetLocation: targetLocation } = parameters; const separator = that._getSeparator(targetLocation); const hasTargetVisibleIndex = targetColumnIndex >= 0; that._columnHeadersView.element().find(".dx-header-row").toggleClass(that.addWidgetPrefix("drop-highlight"), "headers" !== sourceLocation && "headers" === targetLocation && !hasTargetVisibleIndex); if (separator) { if (that.allowDrop(parameters) && hasTargetVisibleIndex) { if ("group" === targetLocation || "columnChooser" === targetLocation) { ! function() { if (that._animationColumnIndex !== targetColumnIndex) { that.hideSeparators(); separator.element()[parameters.isLast ? "insertAfter" : "insertBefore"](parameters.targetColumnElement); that._animationColumnIndex = targetColumnIndex; separator.show(targetLocation) } }() } else { that.hideSeparators("block"); that._tablePositionController.update(parameters.posY); separator.moveByX(parameters.posX - separator.width()); separator.show() } } else { that.hideSeparators() } } } drop(parameters) { const { sourceColumnElement: sourceColumnElement } = parameters; if (sourceColumnElement) { sourceColumnElement.removeClass(this.addWidgetPrefix(_const.CLASSES.draggableColumn)); this._columnHeadersView.toggleDraggableColumnClass(parameters.sourceIndex, false); this._rowsView.toggleDraggableColumnClass(parameters.sourceIndex, false); this._columnHeadersView.element().find(".dx-header-row").removeClass(this.addWidgetPrefix("drop-highlight")) } if (this.allowDrop(parameters)) { const separator = this._getSeparator(parameters.targetLocation); if (separator) { separator.hide() } this._columnsController.moveColumn(parameters.sourceColumnIndex, parameters.targetColumnIndex, parameters.sourceLocation, parameters.targetLocation) } } } exports.DraggingHeaderViewController = DraggingHeaderViewController; exports.columnsResizingReorderingModule = { views: { columnsSeparatorView: ColumnsSeparatorView, blockSeparatorView: BlockSeparatorView, draggingHeaderView: DraggingHeaderView, trackerView: TrackerView }, controllers: { draggingHeader: DraggingHeaderViewController, tablePosition: TablePositionViewController, columnsResizer: ColumnsResizerViewController }, extenders: { views: { rowsView: Base => class extends Base { _needUpdateRowHeight(itemCount) { const wordWrapEnabled = this.option("wordWrapEnabled"); const isResizing = this._columnsResizerController.isResizing(); return super._needUpdateRowHeight.apply(this, arguments) || itemCount > 0 && !!wordWrapEnabled && !!isResizing } } }, controllers: { editorFactory: Base => class extends Base { renderFocusOverlay() { if (this._columnsResizerController.isResizing()) { return } return super.renderFocusOverlay.apply(this, arguments) } } } } } }, 68672: /*!**********************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/grid_core/context_menu/const.js ***! \**********************************************************************************************/ function(__unused_webpack_module, exports) { Object.defineProperty(exports, "__esModule", { value: true }); exports.CONTEXT_MENU_MOVE_PREVIOUS_ICON_NAME = exports.CONTEXT_MENU_MOVE_NEXT_ICON_NAME = void 0; exports.CONTEXT_MENU_MOVE_PREVIOUS_ICON_NAME = "arrowleft"; exports.CONTEXT_MENU_MOVE_NEXT_ICON_NAME = "arrowright" }, 16217: /*!********************************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/grid_core/context_menu/m_column_context_menu_mixin.js ***! \********************************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.ColumnContextMenuMixin = void 0; var _message = (e = __webpack_require__( /*! ../../../../common/core/localization/message */ 4671), e && e.__esModule ? e : { default: e }); var e; var _const = __webpack_require__( /*! ../keyboard_navigation/const */ 24171); var _const2 = __webpack_require__( /*! ./const */ 68672); exports.ColumnContextMenuMixin = Base => class extends Base { constructor() { super(...arguments); this.isNeedToFocusColumn = false } getMoveColumnContextMenuItems(options) { var _this$isColumnReorder, _this$getKeyboardNavi; const { column: column, rowIndex: rowIndex } = options; const allowColumnReordering = null === (_this$isColumnReorder = this.isColumnReorderingEnabled) || void 0 === _this$isColumnReorder ? void 0 : _this$isColumnReorder.call(this, null === options || void 0 === options ? void 0 : options.column); const keyboardNavigationController = null === (_this$getKeyboardNavi = this.getKeyboardNavigationController) || void 0 === _this$getKeyboardNavi ? void 0 : _this$getKeyboardNavi.call(this); if (!allowColumnReordering || !keyboardNavigationController) { return [] } const rtlEnabled = this.option("rtlEnabled"); const onItemClick = e => { var _e$itemData; this.isNeedToFocusColumn = true; keyboardNavigationController.moveColumn(column, null === (_e$itemData = e.itemData) || void 0 === _e$itemData ? void 0 : _e$itemData.value, rowIndex) }; return [{ text: rtlEnabled ? _message.default.format("dxDataGrid-moveColumnToTheRight") : _message.default.format("dxDataGrid-moveColumnToTheLeft"), value: _const.Direction.Previous, beginGroup: true, disabled: !keyboardNavigationController.canReorderColumn(column, _const.Direction.Previous, rowIndex), icon: rtlEnabled ? _const2.CONTEXT_MENU_MOVE_NEXT_ICON_NAME : _const2.CONTEXT_MENU_MOVE_PREVIOUS_ICON_NAME, onItemClick: onItemClick }, { text: rtlEnabled ? _message.default.format("dxDataGrid-moveColumnToTheLeft") : _message.default.format("dxDataGrid-moveColumnToTheRight"), value: _const.Direction.Next, disabled: !keyboardNavigationController.canReorderColumn(column, _const.Direction.Next, rowIndex), icon: rtlEnabled ? _const2.CONTEXT_MENU_MOVE_PREVIOUS_ICON_NAME : _const2.CONTEXT_MENU_MOVE_NEXT_ICON_NAME, onItemClick: onItemClick }] } } }, 73680: /*!*******************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/grid_core/context_menu/m_context_menu.js ***! \*******************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.contextMenuModule = exports.ContextMenuView = exports.ContextMenuController = void 0; var _element = __webpack_require__( /*! ../../../../core/element */ 61404); var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../../../core/renderer */ 64553)); var _iterator = __webpack_require__( /*! ../../../../core/utils/iterator */ 21274); var _context_menu = _interopRequireDefault(__webpack_require__( /*! ../../../../ui/context_menu */ 34378)); var _m_modules = _interopRequireDefault(__webpack_require__( /*! ../m_modules */ 74854)); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } const viewName = { columnHeadersView: "header", rowsView: "content", footerView: "footer", headerPanel: "toolbar" }; const VIEW_NAMES = ["columnHeadersView", "rowsView", "footerView", "headerPanel"]; class ContextMenuController extends _m_modules.default.ViewController { init() { this.createAction("onContextMenuPreparing") } getContextMenuItems(dxEvent) { if (!dxEvent) { return false } const that = this; const $targetElement = (0, _renderer.default)(dxEvent.target); let menuItems; (0, _iterator.each)(VIEW_NAMES, (function() { const view = that.getView(this); if (!view) { return } const $viewElement = view.element(); const isTargetElementInsideView = (null === $viewElement || void 0 === $viewElement ? void 0 : $viewElement.is($targetElement)) || (null === $viewElement || void 0 === $viewElement ? void 0 : $viewElement.find($targetElement).length); if (isTargetElementInsideView) { var _$targetCellElement$, _rowOptions$cells, _view$getContextMenuI; const isGroupRow = $targetElement.hasClass("dx-group-row"); const $targetCellElement = isGroupRow ? $targetElement.find(".dx-group-cell").first() : $targetElement.closest(".dx-row > td, .dx-row > tr"); const $targetRowElement = $targetCellElement.parent(); const rowIndex = view.getRowIndex($targetRowElement); const columnIndex = null === (_$targetCellElement$ = $targetCellElement[0]) || void 0 === _$targetCellElement$ ? void 0 : _$targetCellElement$.cellIndex; const rowOptions = $targetRowElement.data("options"); const options = { event: dxEvent, targetElement: (0, _element.getPublicElement)($targetElement), target: viewName[this], rowIndex: rowIndex, row: view._getRows()[rowIndex], columnIndex: columnIndex, column: null === rowOptions || void 0 === rowOptions || null === (_rowOptions$cells = rowOptions.cells) || void 0 === _rowOptions$cells || null === (_rowOptions$cells = _rowOptions$cells[columnIndex]) || void 0 === _rowOptions$cells ? void 0 : _rowOptions$cells.column }; options.items = null === (_view$getContextMenuI = view.getContextMenuItems) || void 0 === _view$getContextMenuI ? void 0 : _view$getContextMenuI.call(view, options); that.executeAction("onContextMenuPreparing", options); that._contextMenuPrepared(options); menuItems = options.items; if (menuItems) { return false } } return })); return menuItems } _contextMenuPrepared(options) {} } exports.ContextMenuController = ContextMenuController; class ContextMenuView extends _m_modules.default.View { init() { super.init(); this._contextMenuController = this.getController("contextMenu") } _renderCore() { const $element = this.element().addClass("dx-context-menu"); this.setAria("role", "presentation", $element); this._createComponent($element, _context_menu.default, { onPositioning: actionArgs => { const { event: event } = actionArgs; const contextMenuInstance = actionArgs.component; const items = this._contextMenuController.getContextMenuItems(event); if (items) { contextMenuInstance.option("items", items); event.stopPropagation() } else { actionArgs.cancel = true } }, onItemClick(params) { var _params$itemData, _params$itemData$onIt; null === (_params$itemData = params.itemData) || void 0 === _params$itemData || null === (_params$itemData$onIt = _params$itemData.onItemClick) || void 0 === _params$itemData$onIt || _params$itemData$onIt.call(_params$itemData, params) }, cssClass: this.getWidgetContainerClass(), target: this.component.$element() }) } } exports.ContextMenuView = ContextMenuView; exports.contextMenuModule = { defaultOptions: () => ({ onContextMenuPreparing: null }), controllers: { contextMenu: ContextMenuController }, views: { contextMenuView: ContextMenuView } } }, 32688: /*!*************************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/grid_core/data_controller/m_data_controller.js ***! \*************************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.dataControllerModule = exports.DataController = void 0; var _array_store = _interopRequireDefault(__webpack_require__( /*! ../../../../common/data/array_store */ 80556)); var _custom_store = __webpack_require__( /*! ../../../../common/data/custom_store */ 63326); var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../../../core/renderer */ 64553)); var _array_compare = __webpack_require__( /*! ../../../../core/utils/array_compare */ 13387); var _common = __webpack_require__( /*! ../../../../core/utils/common */ 17781); var _deferred = __webpack_require__( /*! ../../../../core/utils/deferred */ 87739); var _extend = __webpack_require__( /*! ../../../../core/utils/extend */ 52576); var _iterator = __webpack_require__( /*! ../../../../core/utils/iterator */ 21274); var _type = __webpack_require__( /*! ../../../../core/utils/type */ 11528); var _ui = _interopRequireDefault(__webpack_require__( /*! ../../../../ui/widget/ui.errors */ 35185)); var _m_modules = _interopRequireDefault(__webpack_require__( /*! ../m_modules */ 74854)); var _m_utils = _interopRequireDefault(__webpack_require__( /*! ../m_utils */ 53226)); var _m_data_helper_mixin = __webpack_require__( /*! ./m_data_helper_mixin */ 68910); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } const changePaging = function(that, optionName, value) { const dataSource = that._dataSource; if (dataSource) { if (void 0 !== value) { const oldValue = that._getPagingOptionValue(optionName); if (oldValue !== value) { if ("pageSize" === optionName) { dataSource.pageIndex(0) } dataSource[optionName](value); that._skipProcessingPagingChange = true; that.option(`paging.${optionName}`, value); that._skipProcessingPagingChange = false; const pageIndex = dataSource.pageIndex(); that._isPaging = "pageIndex" === optionName; return dataSource["pageIndex" === optionName ? "load" : "reload"]().done((() => { that._isPaging = false; that.pageChanged.fire(pageIndex) })) } return (0, _deferred.Deferred)().resolve().promise() } return dataSource[optionName]() } if ("pageIndex" === optionName && void 0 !== value) { return (0, _deferred.Deferred)().resolve().promise() } return 0 }; class DataController extends((0, _m_data_helper_mixin.DataHelperMixin)(_m_modules.default.Controller)) { init() { this._items = []; this._cachedProcessedItems = null; this._columnsController = this.getController("columns"); this._adaptiveColumnsController = this.getController("adaptiveColumns"); this._editingController = this.getController("editing"); this._editorFactoryController = this.getController("editorFactory"); this._errorHandlingController = this.getController("errorHandling"); this._filterSyncController = this.getController("filterSync"); this._applyFilterController = this.getController("applyFilter"); this._keyboardNavigationController = this.getController("keyboardNavigation"); this._focusController = this.getController("focus"); this._headerFilterController = this.getController("headerFilter"); this._selectionController = this.getController("selection"); this._stateStoringController = this.getController("stateStoring"); this._validatingController = this.getController("validating"); this._isPaging = false; this._currentOperationTypes = null; this._dataChangedHandler = e => { this._currentOperationTypes = this._dataSource.operationTypes(); this._handleDataChanged(e); this._currentOperationTypes = null }; this._columnsChangedHandler = this._handleColumnsChanged.bind(this); this._loadingChangedHandler = this._handleLoadingChanged.bind(this); this._loadErrorHandler = this._handleLoadError.bind(this); this._customizeStoreLoadOptionsHandler = this._handleCustomizeStoreLoadOptions.bind(this); this._changingHandler = this._handleChanging.bind(this); this._dataPushedHandler = this._handleDataPushed.bind(this); this._columnsController.columnsChanged.add(this._columnsChangedHandler); this._isLoading = false; this._isCustomLoading = false; this._repaintChangesOnly = void 0; this._changes = []; this.createAction("onDataErrorOccurred"); this.dataErrorOccurred.add((error => this.executeAction("onDataErrorOccurred", { error: error }))); this._refreshDataSource(); this.postCtor() } _getPagingOptionValue(optionName) { return this._dataSource[optionName]() } callbackNames() { return ["changed", "loadingChanged", "dataErrorOccurred", "pageChanged", "dataSourceChanged", "pushed"] } callbackFlags(name) { if ("dataErrorOccurred" === name) { return { stopOnFalse: true } } return } publicMethods() { return ["_disposeDataSource", "beginCustomLoading", "byKey", "clearFilter", "endCustomLoading", "filter", "getCombinedFilter", "getDataByKeys", "getDataSource", "getKeyByRowIndex", "getRowIndexByKey", "getVisibleRows", "keyOf", "pageCount", "pageIndex", "pageSize", "refresh", "repaintRows", "totalCount"] } reset() { this._columnsController.reset(); this._items = []; this._refreshDataSource() } _handleDataSourceChange(args) { if (args.value === args.previousValue || this.option("columns") && Array.isArray(args.value) && Array.isArray(args.previousValue)) { const isValueChanged = args.value !== args.previousValue; if (isValueChanged) { const store = this.store(); if (store) { store._array = args.value } } if (this.needToRefreshOnDataSourceChange(args)) { this.refresh(this.option("repaintChangesOnly")) } return true } return false } needToRefreshOnDataSourceChange(args) { return true } optionChanged(args) { const that = this; let dataSource; let changedPagingOptions; function handled() { args.handled = true } if ("dataSource" === args.name && args.name === args.fullName && this._handleDataSourceChange(args)) { handled(); return } switch (args.name) { case "cacheEnabled": case "repaintChangesOnly": case "highlightChanges": case "loadingTimeout": handled(); break; case "remoteOperations": case "keyExpr": case "dataSource": case "scrolling": handled(); that.reset(); break; case "paging": dataSource = that.dataSource(); if (dataSource) { changedPagingOptions = that._setPagingOptions(dataSource); if (changedPagingOptions) { const pageIndex = dataSource.pageIndex(); this._isPaging = changedPagingOptions.isPageIndexChanged; dataSource.load().done((() => { this._isPaging = false; that.pageChanged.fire(pageIndex) })) } } handled(); break; case "rtlEnabled": that.reset(); break; case "columns": dataSource = that.dataSource(); if (dataSource && dataSource.isLoading() && args.name === args.fullName) { this._useSortingGroupingFromColumns = true; dataSource.load() } break; default: super.optionChanged(args) } } isReady() { return !this._isLoading } getDataSource() { return this._dataSource && this._dataSource._dataSource } getCombinedFilter(returnDataField) { return this.combinedFilter(void 0, returnDataField) } combinedFilter(filter, returnDataField) { if (!this._dataSource) { return filter } let combined = filter ?? this._dataSource.filter(); const isColumnsTypesDefined = this._columnsController.isDataSourceApplied() || this._columnsController.isAllDataTypesDefined(); if (isColumnsTypesDefined) { const additionalFilter = this._calculateAdditionalFilter(); combined = additionalFilter ? _m_utils.default.combineFilters([additionalFilter, combined]) : combined } const isRemoteFiltering = this._dataSource.remoteOperations().filtering || returnDataField; combined = this._columnsController.updateFilter(combined, isRemoteFiltering); return combined } waitReady() { if (this._updateLockCount) { this._readyDeferred = new _deferred.Deferred; return this._readyDeferred } return (0, _deferred.when)() } _endUpdateCore() { const changes = this._changes; if (changes.length) { this._changes = []; const repaintChangesOnly = changes.every((change => change.repaintChangesOnly)); this.updateItems(1 === changes.length ? changes[0] : { repaintChangesOnly: repaintChangesOnly }) } if (this._readyDeferred) { this._readyDeferred.resolve(); this._readyDeferred = null } } _handleCustomizeStoreLoadOptions(e) { var _storeLoadOptions$fil; const columnsController = this._columnsController; const dataSource = this._dataSource; const { storeLoadOptions: storeLoadOptions } = e; if (e.isCustomLoading && !storeLoadOptions.isLoadingAll) { return } storeLoadOptions.filter = this.combinedFilter(storeLoadOptions.filter); if (1 === (null === (_storeLoadOptions$fil = storeLoadOptions.filter) || void 0 === _storeLoadOptions$fil ? void 0 : _storeLoadOptions$fil.length) && "!" === storeLoadOptions.filter[0]) { e.data = []; e.extra = e.extra || {}; e.extra.totalCount = 0 } if (!columnsController.isDataSourceApplied()) { columnsController.updateColumnDataTypes(dataSource) } this._columnsUpdating = true; columnsController.updateSortingGrouping(dataSource, !this._useSortingGroupingFromColumns); this._columnsUpdating = false; storeLoadOptions.sort = columnsController.getSortDataSourceParameters(); storeLoadOptions.group = columnsController.getGroupDataSourceParameters(); dataSource.sort(storeLoadOptions.sort); dataSource.group(storeLoadOptions.group); storeLoadOptions.sort = columnsController.getSortDataSourceParameters(!dataSource.remoteOperations().sorting); e.group = columnsController.getGroupDataSourceParameters(!dataSource.remoteOperations().grouping) } _handleColumnsChanged(e) { const that = this; const { changeTypes: changeTypes } = e; const { optionNames: optionNames } = e; let filterValue; let filterValues; let filterApplied; const updateItemsHandler = function(change) { var _change$changeTypes, _change$changeTypes2; that._columnsController.columnsChanged.remove(updateItemsHandler); that.updateItems({ repaintChangesOnly: false, event: null === change || void 0 === change || null === (_change$changeTypes = change.changeTypes) || void 0 === _change$changeTypes ? void 0 : _change$changeTypes.event, virtualColumnsScrolling: null === change || void 0 === change || null === (_change$changeTypes2 = change.changeTypes) || void 0 === _change$changeTypes2 ? void 0 : _change$changeTypes2.virtualColumnsScrolling }) }; if (changeTypes.sorting || changeTypes.grouping) { if (that._dataSource && !that._columnsUpdating) { that._dataSource.group(that._columnsController.getGroupDataSourceParameters()); that._dataSource.sort(that._columnsController.getSortDataSourceParameters()); that.reload() } } else if (changeTypes.columns) { filterValues = that._columnsController.columnOption(e.columnIndex, "filterValues"); if (optionNames.filterValues || optionNames.filterType && Array.isArray(filterValues) || optionNames.filterValue || optionNames.selectedFilterOperation || optionNames.allowFiltering) { filterValue = that._columnsController.columnOption(e.columnIndex, "filterValue"); if (Array.isArray(filterValues) || void 0 === e.columnIndex || (0, _type.isDefined)(filterValue) || !optionNames.selectedFilterOperation || optionNames.filterValue) { that._applyFilter(); filterApplied = true } } if (!that._needApplyFilter && !_m_utils.default.checkChanges(optionNames, ["width", "visibleWidth", "filterValue", "bufferedFilterValue", "selectedFilterOperation", "filterValues", "filterType"])) { that._columnsController.columnsChanged.add(updateItemsHandler) } if ((0, _type.isDefined)(optionNames.visible)) { const column = that._columnsController.columnOption(e.columnIndex); if (column && ((0, _type.isDefined)(column.filterValue) || (0, _type.isDefined)(column.filterValues))) { that._applyFilter(); filterApplied = true } } } if (!filterApplied && changeTypes.filtering && !this._needApplyFilter) { that.reload() } } _handleDataChanged(e) { const that = this; const dataSource = that._dataSource; const columnsController = that._columnsController; let isAsyncDataSourceApplying = false; this._useSortingGroupingFromColumns = false; if (dataSource && !that._isDataSourceApplying) { that._isDataSourceApplying = true; (0, _deferred.when)(that._columnsController.applyDataSource(dataSource)).done((() => { if (that._isLoading) { that._handleLoadingChanged(false) } if (isAsyncDataSourceApplying && e && e.isDelayed) { e.isDelayed = false } that._isDataSourceApplying = false; const needApplyFilter = that._needApplyFilter; that._needApplyFilter = false; if (needApplyFilter && !that._isAllDataTypesDefined && (() => { const additionalFilter = that._calculateAdditionalFilter(); return additionalFilter && additionalFilter.length })()) { _ui.default.log("W1005", that.component.NAME); that._applyFilter() } else { that.updateItems(e, true) } })).fail((() => { that._isDataSourceApplying = false })); if (that._isDataSourceApplying) { isAsyncDataSourceApplying = true; that._handleLoadingChanged(true) } that._needApplyFilter = !that._columnsController.isDataSourceApplied(); that._isAllDataTypesDefined = columnsController.isAllDataTypesDefined() } } _handleLoadingChanged(isLoading) { this._isLoading = isLoading; this._fireLoadingChanged() } _handleLoadError(e) { this.dataErrorOccurred.fire(e) } _handleDataPushed(changes) { this.pushed.fire(changes) } fireError() { for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { args[_key] = arguments[_key] } this.dataErrorOccurred.fire(_ui.default.Error.apply(_ui.default, args)) } _setPagingOptions(dataSource) { const pageIndex = this.option("paging.pageIndex"); const pageSize = this.option("paging.pageSize"); const pagingEnabled = this.option("paging.enabled"); const scrollingMode = this.option("scrolling.mode"); const appendMode = "infinite" === scrollingMode; const virtualMode = "virtual" === scrollingMode; const paginate = pagingEnabled || virtualMode || appendMode; let isPaginateChanged = false; let isPageSizeChanged = false; let isPageIndexChanged = false; dataSource.requireTotalCount(!appendMode); if (void 0 !== pagingEnabled && dataSource.paginate() !== paginate) { dataSource.paginate(paginate); isPaginateChanged = true } if (void 0 !== pageSize && dataSource.pageSize() !== pageSize) { dataSource.pageSize(pageSize); isPageSizeChanged = true } if (void 0 !== pageIndex && dataSource.pageIndex() !== pageIndex) { dataSource.pageIndex(pageIndex); isPageIndexChanged = true } if (isPaginateChanged || isPageSizeChanged || isPageIndexChanged) { return { isPaginateChanged: isPaginateChanged, isPageSizeChanged: isPageSizeChanged, isPageIndexChanged: isPageIndexChanged } } return false } _getSpecificDataSourceOption() { const dataSource = this.option("dataSource"); if (Array.isArray(dataSource)) { return { store: { type: "array", data: dataSource, key: this.option("keyExpr") } } } return dataSource } _initDataSource() { const that = this; const oldDataSource = this._dataSource; super._initDataSource(); const dataSource = that._dataSource; that._useSortingGroupingFromColumns = true; that._cachedProcessedItems = null; if (dataSource) { const changedPagingOptions = that._setPagingOptions(dataSource); this._isPaging = null === changedPagingOptions || void 0 === changedPagingOptions ? void 0 : changedPagingOptions.isPageIndexChanged; that.setDataSource(dataSource) } else if (oldDataSource) { that.updateItems() } } _loadDataSource() { const that = this; const dataSource = that._dataSource; const result = new _deferred.Deferred; (0, _deferred.when)(this._columnsController.refresh(true)).always((() => { if (dataSource) { dataSource.load().done((function() { that._isPaging = false; result.resolve.apply(result, arguments) })).fail(result.reject) } else { result.resolve() } })); return result.promise() } _beforeProcessItems(items) { return items.slice(0) } getRowIndexDelta() { return 0 } getDataIndex(change) { const visibleItems = this._items; const lastVisibleItem = "append" === change.changeType && visibleItems.length > 0 ? visibleItems[visibleItems.length - 1] : null; return (0, _type.isDefined)(null === lastVisibleItem || void 0 === lastVisibleItem ? void 0 : lastVisibleItem.dataIndex) ? lastVisibleItem.dataIndex + 1 : 0 } _processItems(items, change) { const that = this; const rowIndexDelta = that.getRowIndexDelta(); const { changeType: changeType } = change; const visibleColumns = that._columnsController.getVisibleColumns(null, "loadingAll" === changeType); const dataIndex = this.getDataIndex(change); const options = { visibleColumns: visibleColumns, dataIndex: dataIndex }; const result = []; (0, _iterator.each)(items, ((index, item) => { if ((0, _type.isDefined)(item)) { options.rowIndex = index - rowIndexDelta; item = that._processItem(item, options); result.push(item) } })); return result } _processItem(item, options) { item = this._generateDataItem(item, options); item = this._processDataItem(item, options); item.dataIndex = options.dataIndex++; return item } _generateDataItem(data, options) { return { rowType: "data", data: data, key: this.keyOf(data) } } _processDataItem(dataItem, options) { dataItem.values = this.generateDataValues(dataItem.data, options.visibleColumns); return dataItem } generateDataValues(data, columns, isModified) { const values = []; let value; for (let i = 0; i < columns.length; i++) { const column = columns[i]; value = isModified ? void 0 : null; if (!column.command) { if (column.calculateCellValue) { value = column.calculateCellValue(data) } else if (column.dataField) { value = data[column.dataField] } } values.push(value) } return values } _applyChange(change) { const that = this; if ("update" === change.changeType) { that._applyChangeUpdate(change) } else if (that.items().length && change.repaintChangesOnly && "refresh" === change.changeType) { that._applyChangesOnly(change) } else if ("refresh" === change.changeType) { that._applyChangeFull(change) } } _applyChangeFull(change) { this._items = change.items.slice(0) } _getRowIndices(change) { const rowIndices = change.rowIndices.slice(0); const rowIndexDelta = this.getRowIndexDelta(); rowIndices.sort(((a, b) => a - b)); for (let i = 0; i < rowIndices.length; i++) { let correctedRowIndex = rowIndices[i]; if (change.allowInvisibleRowIndices) { correctedRowIndex += rowIndexDelta } if (correctedRowIndex < 0) { rowIndices.splice(i, 1); i-- } } return rowIndices } _applyChangeUpdate(change) { const that = this; const { items: items } = change; const rowIndices = that._getRowIndices(change); const rowIndexDelta = that.getRowIndexDelta(); const repaintChangesOnly = that.option("repaintChangesOnly"); let prevIndex = -1; let rowIndexCorrection = 0; let changeType; change.items = []; change.rowIndices = []; change.columnIndices = []; change.changeTypes = []; const equalItems = function(item1, item2, strict) { let result = item1 && item2 && (0, _common.equalByValue)(item1.key, item2.key); if (result && strict) { result = item1.rowType === item2.rowType && ("detail" !== item2.rowType || item1.isEditing === item2.isEditing) } return result }; (0, _iterator.each)(rowIndices, ((index, rowIndex) => { let columnIndices; rowIndex += rowIndexCorrection + rowIndexDelta; if (prevIndex === rowIndex) { return } prevIndex = rowIndex; const oldItem = that._items[rowIndex]; const oldNextItem = that._items[rowIndex + 1]; const newItem = items[rowIndex]; const newNextItem = items[rowIndex + 1]; const strict = equalItems(oldItem, oldNextItem) || equalItems(newItem, newNextItem); if (newItem) { newItem.rowIndex = rowIndex; change.items.push(newItem) } if (oldItem && newItem && equalItems(oldItem, newItem, strict)) { changeType = "update"; that._items[rowIndex] = newItem; if (oldItem.visible !== newItem.visible) { change.items.splice(-1, 1, { visible: newItem.visible }) } else if (repaintChangesOnly && !change.isFullUpdate) { columnIndices = that._partialUpdateRow(oldItem, newItem, rowIndex - rowIndexDelta) } } else if (newItem && !oldItem || newNextItem && equalItems(oldItem, newNextItem, strict)) { changeType = "insert"; that._items.splice(rowIndex, 0, newItem); rowIndexCorrection++ } else if (oldItem && !newItem || oldNextItem && equalItems(newItem, oldNextItem, strict)) { changeType = "remove"; that._items.splice(rowIndex, 1); rowIndexCorrection--; prevIndex = -1 } else if (newItem) { changeType = "update"; that._items[rowIndex] = newItem } else { return } change.rowIndices.push(rowIndex - rowIndexDelta); change.changeTypes.push(changeType); change.columnIndices.push(columnIndices) })) } _isCellChanged(oldRow, newRow, visibleRowIndex, columnIndex, isLiveUpdate) { if (JSON.stringify(oldRow.values[columnIndex]) !== JSON.stringify(newRow.values[columnIndex])) { return true } function isCellModified(row, columnIndex) { return row.modifiedValues ? void 0 !== row.modifiedValues[columnIndex] : false } if (isCellModified(oldRow, columnIndex) !== isCellModified(newRow, columnIndex)) { return true } return false } _getChangedColumnIndices(oldItem, newItem, visibleRowIndex, isLiveUpdate) { let columnIndices; if (oldItem.rowType === newItem.rowType) { if ("group" !== newItem.rowType && "groupFooter" !== newItem.rowType) { columnIndices = []; if ("detail" !== newItem.rowType) { for (let columnIndex = 0; columnIndex < oldItem.values.length; columnIndex++) { if (this._isCellChanged(oldItem, newItem, visibleRowIndex, columnIndex, isLiveUpdate)) { columnIndices.push(columnIndex) } } } } if ("group" === newItem.rowType && oldItem.cells) { const isRowStateEquals = newItem.isExpanded === oldItem.isExpanded && newItem.data.isContinuation === oldItem.data.isContinuation && newItem.data.isContinuationOnNextPage === oldItem.data.isContinuationOnNextPage; if (isRowStateEquals) { columnIndices = oldItem.cells.map(((cell, index) => { var _cell$column; return "groupExpand" !== (null === (_cell$column = cell.column) || void 0 === _cell$column ? void 0 : _cell$column.type) ? index : -1 })).filter((index => index >= 0)) } } } return columnIndices } _partialUpdateRow(oldItem, newItem, visibleRowIndex, isLiveUpdate) { var _changedColumnIndices; let changedColumnIndices = this._getChangedColumnIndices(oldItem, newItem, visibleRowIndex, isLiveUpdate); if (null !== (_changedColumnIndices = changedColumnIndices) && void 0 !== _changedColumnIndices && _changedColumnIndices.length && this.option("dataRowTemplate")) { changedColumnIndices = void 0 } if (changedColumnIndices) { oldItem.cells && oldItem.cells.forEach(((cell, columnIndex) => { const isCellChanged = changedColumnIndices.indexOf(columnIndex) >= 0; if (!isCellChanged && cell && cell.update) { cell.update(newItem) } })); newItem.update = oldItem.update; newItem.watch = oldItem.watch; newItem.cells = oldItem.cells; if (isLiveUpdate) { newItem.oldValues = oldItem.values } oldItem.update && oldItem.update(newItem) } return changedColumnIndices } _isItemEquals(item1, item2) { if (JSON.stringify(item1.values) !== JSON.stringify(item2.values)) { return false } if (["modified", "isNewRow", "removed", "isEditing"].some((field => item1[field] !== item2[field]))) { return false } if ("group" === item1.rowType || "groupFooter" === item1.rowType) { var _item1$data, _item2$data, _item1$data2, _item2$data2; const expandedMatch = item1.isExpanded === item2.isExpanded; const summaryCellsMatch = JSON.stringify(item1.summaryCells) === JSON.stringify(item2.summaryCells); const continuationMatch = (null === (_item1$data = item1.data) || void 0 === _item1$data ? void 0 : _item1$data.isContinuation) === (null === (_item2$data = item2.data) || void 0 === _item2$data ? void 0 : _item2$data.isContinuation) && (null === (_item1$data2 = item1.data) || void 0 === _item1$data2 ? void 0 : _item1$data2.isContinuationOnNextPage) === (null === (_item2$data2 = item2.data) || void 0 === _item2$data2 ? void 0 : _item2$data2.isContinuationOnNextPage); if (!expandedMatch || !summaryCellsMatch || !continuationMatch) { return false } } return true } _applyChangesOnly(change) { const rowIndices = []; const columnIndices = []; const changeTypes = []; const items = []; const newIndexByKey = {}; const isLiveUpdate = (null === change || void 0 === change ? void 0 : change.isLiveUpdate) ?? true; function getRowKey(row) { if (row) { return `${row.rowType},${JSON.stringify(row.key)}` } return } const currentItems = this._items; const oldItems = currentItems.slice(); change.items.forEach(((item, index) => { const key = getRowKey(item); newIndexByKey[key] = index; item.rowIndex = index })); const result = (0, _array_compare.findChanges)(oldItems, change.items, getRowKey, ((item1, item2) => { if (!this._isItemEquals(item1, item2)) { return false } if (item1.cells) { item1.update && item1.update(item2); item1.cells.forEach((cell => { if (cell && cell.update) { cell.update(item2, true) } })) } return true })); if (!result) { this._applyChangeFull(change); return } result.forEach((change => { switch (change.type) { case "update": { const { index: index } = change; const newItem = change.data; const { oldItem: oldItem } = change; const changedColumnIndices = this._partialUpdateRow(oldItem, newItem, index, isLiveUpdate); rowIndices.push(index); changeTypes.push("update"); items.push(newItem); currentItems[index] = newItem; columnIndices.push(changedColumnIndices); break } case "insert": rowIndices.push(change.index); changeTypes.push("insert"); items.push(change.data); columnIndices.push(void 0); currentItems.splice(change.index, 0, change.data); break; case "remove": rowIndices.push(change.index); changeTypes.push("remove"); currentItems.splice(change.index, 1); items.push(change.oldItem); columnIndices.push(void 0) } })); change.repaintChangesOnly = true; change.changeType = "update"; change.rowIndices = rowIndices; change.columnIndices = columnIndices; change.changeTypes = changeTypes; change.items = items; if (oldItems.length) { change.isLiveUpdate = true } this._correctRowIndices((rowIndex => { const oldRowIndexOffset = this._rowIndexOffset || 0; const rowIndexOffset = this.getRowIndexOffset(); const oldItem = oldItems[rowIndex - oldRowIndexOffset]; const key = getRowKey(oldItem); const newVisibleRowIndex = newIndexByKey[key]; return newVisibleRowIndex >= 0 ? newVisibleRowIndex + rowIndexOffset - rowIndex : 0 })) } _correctRowIndices(rowIndex) {} _afterProcessItems(items, change) { return items } _updateItemsCore(change) { let items; const dataSource = this._dataSource; const changeType = change.changeType || "refresh"; change.changeType = changeType; if (dataSource) { const cachedProcessedItems = this._cachedProcessedItems; if (change.useProcessedItemsCache && cachedProcessedItems) { items = cachedProcessedItems } else { items = change.items || dataSource.items(); items = this._beforeProcessItems(items); items = this._processItems(items, change); this._cachedProcessedItems = items } items = this._afterProcessItems(items, change); change.items = items; const oldItems = this._items.length === items.length && this._items; this._applyChange(change); const rowIndexDelta = this.getRowIndexDelta(); (0, _iterator.each)(this._items, ((index, item) => { item.rowIndex = index - rowIndexDelta; if (oldItems) { item.cells = oldItems[index].cells ?? [] } const newItem = items[index]; if (newItem) { item.loadIndex = newItem.loadIndex } })); this._rowIndexOffset = this.getRowIndexOffset() } else { this._items = [] } } _handleChanging(e) { const rows = this.getVisibleRows(); const dataSource = this.dataSource(); if (dataSource) { e.changes.forEach((change => { if ("insert" === change.type && change.index >= 0) { let dataIndex = 0; for (let i = 0; i < change.index; i++) { const row = rows[i]; if (row && ("data" === row.rowType || "group" === row.rowType)) { dataIndex++ } } change.index = dataIndex } })) } } updateItems(change, isDataChanged) { change = change || {}; const that = this; change.isFirstRender = !that.changed.fired(); if (void 0 !== that._repaintChangesOnly) { change.repaintChangesOnly = change.repaintChangesOnly ?? that._repaintChangesOnly; change.needUpdateDimensions = change.needUpdateDimensions || that._needUpdateDimensions } else if (change.changes) { change.repaintChangesOnly = that.option("repaintChangesOnly") } else if (isDataChanged) { const operationTypes = that.dataSource().operationTypes(); change.repaintChangesOnly = operationTypes && !operationTypes.grouping && !operationTypes.filtering && that.option("repaintChangesOnly"); change.isDataChanged = true; if (operationTypes && (operationTypes.reload || operationTypes.paging || operationTypes.groupExpanding)) { change.needUpdateDimensions = true } } if (that._updateLockCount && !change.cancel) { that._changes.push(change); return } that._updateItemsCore(change); if (change.cancel) { return } that._fireChanged(change) } loadingOperationTypes() { const dataSource = this.dataSource(); return dataSource && dataSource.loadingOperationTypes() || {} } _fireChanged(change) { if (this._currentOperationTypes) { change.operationTypes = this._currentOperationTypes; this._currentOperationTypes = null }(0, _common.deferRender)((() => { this.changed.fire(change) })) } isLoading() { return this._isLoading || this._isCustomLoading } _fireLoadingChanged() { this.loadingChanged.fire(this.isLoading(), this._loadingText) } _calculateAdditionalFilter() { return null } _applyFilter() { const dataSource = this._dataSource; if (dataSource) { dataSource.pageIndex(0); this._isFilterApplying = true; return this.reload().done((() => { if (this._isFilterApplying) { this.pageChanged.fire() } })) } return (new _deferred.Deferred).resolve() } resetFilterApplying() { this._isFilterApplying = false } filter(filterExpr) { var _dataSource$loadOptio; const dataSource = this._dataSource; const filter = null === dataSource || void 0 === dataSource ? void 0 : dataSource.filter(); const langParams = null === dataSource || void 0 === dataSource || null === (_dataSource$loadOptio = dataSource.loadOptions) || void 0 === _dataSource$loadOptio || null === (_dataSource$loadOptio = _dataSource$loadOptio.call(dataSource)) || void 0 === _dataSource$loadOptio ? void 0 : _dataSource$loadOptio.langParams; if (0 === arguments.length) { return filter } filterExpr = arguments.length > 1 ? Array.prototype.slice.call(arguments, 0) : filterExpr; if (_m_utils.default.equalFilterParameters(filter, filterExpr, langParams)) { return } if (dataSource) { dataSource.filter(filterExpr) } this._applyFilter() } clearFilter(filterName) { const that = this; const columnsController = that._columnsController; const clearColumnOption = function(optionName) { const columnCount = columnsController.columnCount(); for (let index = 0; index < columnCount; index++) { columnsController.columnOption(index, optionName, void 0) } }; that.component.beginUpdate(); if (arguments.length > 0) { switch (filterName) { case "dataSource": that.filter(null); break; case "search": that.searchByText(""); break; case "header": clearColumnOption("filterValues"); break; case "row": clearColumnOption("filterValue") } } else { that.filter(null); that.searchByText(""); clearColumnOption("filterValue"); clearColumnOption("bufferedFilterValue"); clearColumnOption("filterValues") } that.component.endUpdate() } _fireDataSourceChanged() { const that = this; const changedHandler = function() { that.changed.remove(changedHandler); that.dataSourceChanged.fire() }; that.changed.add(changedHandler) } _getDataSourceAdapter() {} _createDataSourceAdapterCore(dataSource, remoteOperations) { const dataSourceAdapterProvider = this._getDataSourceAdapter(); const dataSourceAdapter = dataSourceAdapterProvider.create(this.component); dataSourceAdapter.init(dataSource, remoteOperations); return dataSourceAdapter } isLocalStore() { let store = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : this.store(); return store instanceof _array_store.default } isCustomStore(store) { store = store || this.store(); return store instanceof _custom_store.CustomStore } _createDataSourceAdapter(dataSource) { let remoteOperations = this.option("remoteOperations"); const store = dataSource.store(); const enabledRemoteOperations = { filtering: true, sorting: true, paging: true, grouping: true, summary: true }; if ((0, _type.isObject)(remoteOperations) && remoteOperations.groupPaging) { remoteOperations = (0, _extend.extend)({}, enabledRemoteOperations, remoteOperations) } if ("auto" === remoteOperations) { remoteOperations = this.isLocalStore(store) || this.isCustomStore(store) ? {} : { filtering: true, sorting: true, paging: true } } if (true === remoteOperations) { remoteOperations = enabledRemoteOperations } return this._createDataSourceAdapterCore(dataSource, remoteOperations) } setDataSource(dataSource) { const that = this; const oldDataSource = that._dataSource; if (!dataSource && oldDataSource) { oldDataSource.cancelAll(); oldDataSource.changed.remove(that._dataChangedHandler); oldDataSource.loadingChanged.remove(that._loadingChangedHandler); oldDataSource.loadError.remove(that._loadErrorHandler); oldDataSource.customizeStoreLoadOptions.remove(that._customizeStoreLoadOptionsHandler); oldDataSource.changing.remove(that._changingHandler); oldDataSource.pushed.remove(that._dataPushedHandler); oldDataSource.dispose(that._isSharedDataSource) } if (dataSource) { dataSource = that._createDataSourceAdapter(dataSource) } that._dataSource = dataSource; if (dataSource) { that._fireDataSourceChanged(); that._isLoading = !dataSource.isLoaded(); that._needApplyFilter = true; that._isAllDataTypesDefined = that._columnsController.isAllDataTypesDefined(); dataSource.changed.add(that._dataChangedHandler); dataSource.loadingChanged.add(that._loadingChangedHandler); dataSource.loadError.add(that._loadErrorHandler); dataSource.customizeStoreLoadOptions.add(that._customizeStoreLoadOptionsHandler); dataSource.changing.add(that._changingHandler); dataSource.pushed.add(that._dataPushedHandler) } } items(byLoaded) { return this._items } isEmpty() { return !this.items().length } pageCount() { return this._dataSource ? this._dataSource.pageCount() : 1 } dataSource() { return this._dataSource } store() { const dataSource = this._dataSource; return dataSource && dataSource.store() } loadAll(data) { let skipFilter = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : false; const that = this; const d = new _deferred.Deferred; const dataSource = that._dataSource; if (dataSource) { if (data) { const options = { data: data, isCustomLoading: true, storeLoadOptions: { isLoadingAll: true }, loadOptions: { filter: skipFilter ? null : that.getCombinedFilter(), group: dataSource.group(), sort: dataSource.sort() } }; dataSource._handleDataLoaded(options); (0, _deferred.when)(options.data).done((data => { var _options$extra; data = that._beforeProcessItems(data); d.resolve(that._processItems(data, { changeType: "loadingAll" }), null === (_options$extra = options.extra) || void 0 === _options$extra ? void 0 : _options$extra.summary) })).fail(d.reject) } else if (!dataSource.isLoading()) { const loadOptions = (0, _extend.extend)({}, dataSource.loadOptions(), { isLoadingAll: true, requireTotalCount: false }); dataSource.load(loadOptions).done(((items, extra) => { items = that._beforeProcessItems(items); items = that._processItems(items, { changeType: "loadingAll" }); d.resolve(items, extra && extra.summary) })).fail(d.reject) } else { d.reject() } } else { d.resolve([]) } return d } getKeyByRowIndex(rowIndex, byLoaded) { const item = this.items(byLoaded)[rowIndex]; if (item) { return item.key } } getRowIndexByKey(key, byLoaded) { return _m_utils.default.getIndexByKey(key, this.items(byLoaded)) } keyOf(data) { const store = this.store(); if (store) { return store.keyOf(data) } } byKey(key) { const store = this.store(); const rowIndex = this.getRowIndexByKey(key); let result; if (!store) { return } if (rowIndex >= 0) { result = (new _deferred.Deferred).resolve(this.items()[rowIndex].data) } return result || store.byKey(key) } key() { const store = this.store(); if (store) { return store.key() } } getRowIndexOffset(byLoadedRows) { return 0 } getDataByKeys(rowKeys) { const that = this; const result = new _deferred.Deferred; const deferreds = []; const data = []; (0, _iterator.each)(rowKeys, ((index, key) => { deferreds.push(that.byKey(key).done((keyData => { data[index] = keyData }))) })); _deferred.when.apply(_renderer.default, deferreds).always((() => { result.resolve(data) })); return result } pageIndex(value) { return changePaging(this, "pageIndex", value) } pageSize(value) { return changePaging(this, "pageSize", value) } beginCustomLoading(messageText) { this._isCustomLoading = true; this._loadingText = messageText || ""; this._fireLoadingChanged() } endCustomLoading() { this._isCustomLoading = false; this._loadingText = void 0; this._fireLoadingChanged() } refresh(options) { if (true === options) { options = { reload: true, changesOnly: true } } else if (!options) { options = { lookup: true, selection: true, reload: true } } const that = this; const dataSource = that.getDataSource(); const { changesOnly: changesOnly } = options; const d = new _deferred.Deferred; const customizeLoadResult = function() { that._repaintChangesOnly = !!changesOnly }; (0, _deferred.when)(!options.lookup || that._columnsController.refresh()).always((() => { if (options.load || options.reload) { dataSource && dataSource.on("customizeLoadResult", customizeLoadResult); (0, _deferred.when)(that.reload(options.reload, changesOnly)).always((() => { dataSource && dataSource.off("customizeLoadResult", customizeLoadResult); that._repaintChangesOnly = void 0 })).done(d.resolve).fail(d.reject) } else { that.updateItems({ repaintChangesOnly: options.changesOnly }); d.resolve() } })); return d.promise() } getVisibleRows() { return this.items() } _disposeDataSource() { if (this._dataSource && this._dataSource._eventsStrategy) { this._dataSource._eventsStrategy.off("loadingChanged", this.readyWatcher) } this.setDataSource(null) } dispose() { this._disposeDataSource(); super.dispose() } repaintRows(rowIndexes, changesOnly) { rowIndexes = Array.isArray(rowIndexes) ? rowIndexes : [rowIndexes]; if (rowIndexes.length > 1 || (0, _type.isDefined)(rowIndexes[0])) { this.updateItems({ changeType: "update", rowIndices: rowIndexes, isFullUpdate: !changesOnly }) } } skipProcessingPagingChange(fullName) { return this._skipProcessingPagingChange && ("paging.pageIndex" === fullName || "paging.pageSize" === fullName) } getUserState() { return { searchText: this.option("searchPanel.text"), pageIndex: this.pageIndex(), pageSize: this.pageSize() } } getCachedStoreData() { return this._dataSource && this._dataSource.getCachedStoreData() } isLastPageLoaded() { const pageIndex = this.pageIndex(); const pageCount = this.pageCount(); return pageIndex === pageCount - 1 } load() { var _this$_dataSource; return null === (_this$_dataSource = this._dataSource) || void 0 === _this$_dataSource ? void 0 : _this$_dataSource.load() } reload(reload, changesOnly) { var _this$_dataSource2; return null === (_this$_dataSource2 = this._dataSource) || void 0 === _this$_dataSource2 ? void 0 : _this$_dataSource2.reload(reload, changesOnly) } push() { var _this$_dataSource3; for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) { args[_key2] = arguments[_key2] } return null === (_this$_dataSource3 = this._dataSource) || void 0 === _this$_dataSource3 ? void 0 : _this$_dataSource3.push(...args) } itemsCount() { var _this$_dataSource4; return this._dataSource ? null === (_this$_dataSource4 = this._dataSource) || void 0 === _this$_dataSource4 ? void 0 : _this$_dataSource4.itemsCount() : 0 } totalItemsCount() { var _this$_dataSource5; return this._dataSource ? null === (_this$_dataSource5 = this._dataSource) || void 0 === _this$_dataSource5 ? void 0 : _this$_dataSource5.totalItemsCount() : 0 } hasKnownLastPage() { var _this$_dataSource6; return this._dataSource ? null === (_this$_dataSource6 = this._dataSource) || void 0 === _this$_dataSource6 ? void 0 : _this$_dataSource6.hasKnownLastPage() : true } isLoaded() { var _this$_dataSource7; return this._dataSource ? null === (_this$_dataSource7 = this._dataSource) || void 0 === _this$_dataSource7 ? void 0 : _this$_dataSource7.isLoaded() : true } totalCount() { var _this$_dataSource8; return this._dataSource ? null === (_this$_dataSource8 = this._dataSource) || void 0 === _this$_dataSource8 ? void 0 : _this$_dataSource8.totalCount() : 0 } hasLoadOperation() { var _this$_dataSource9; const operationTypes = (null === (_this$_dataSource9 = this._dataSource) || void 0 === _this$_dataSource9 ? void 0 : _this$_dataSource9.operationTypes()) ?? {}; return Object.keys(operationTypes).some((type => operationTypes[type])) } } exports.DataController = DataController; exports.dataControllerModule = { defaultOptions: () => ({ loadingTimeout: 0, dataSource: null, cacheEnabled: true, repaintChangesOnly: false, highlightChanges: false, onDataErrorOccurred: null, remoteOperations: "auto", paging: { enabled: true, pageSize: void 0, pageIndex: void 0 } }), controllers: { data: DataController } } }, 68910: /*!***************************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/grid_core/data_controller/m_data_helper_mixin.js ***! \***************************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.DataHelperMixin = void 0; var _data_source = __webpack_require__( /*! ../../../../common/data/data_source/data_source */ 68216); var _utils = __webpack_require__( /*! ../../../../common/data/data_source/utils */ 97169); var _extend = __webpack_require__( /*! ../../../../core/utils/extend */ 52576); var _m_data_controller = (e = __webpack_require__( /*! ../../../ui/collection/m_data_controller */ 5285), e && e.__esModule ? e : { default: e }); var e; exports.DataHelperMixin = Base => class extends Base { postCtor() { this.on("disposing", (() => { this._disposeDataSource() })) } _refreshDataSource() { this._initDataSource(); this._loadDataSource() } _initDataSource() { let dataSourceOptions = "_getSpecificDataSourceOption" in this ? this._getSpecificDataSourceOption() : this.option("dataSource"); let widgetDataSourceOptions; let dataSourceType; this._disposeDataSource(); if (dataSourceOptions) { if (dataSourceOptions instanceof _data_source.DataSource) { this._isSharedDataSource = true; this._dataSource = dataSourceOptions } else { widgetDataSourceOptions = "_dataSourceOptions" in this ? this._dataSourceOptions() : {}; dataSourceType = this._dataSourceType ? this._dataSourceType() : _data_source.DataSource; dataSourceOptions = (0, _utils.normalizeDataSourceOptions)(dataSourceOptions, { fromUrlLoadMode: "_dataSourceFromUrlLoadMode" in this && this._dataSourceFromUrlLoadMode() }); this._dataSource = new dataSourceType((0, _extend.extend)(true, {}, widgetDataSourceOptions, dataSourceOptions)) } if ("_normalizeDataSource" in this) { this._dataSource = this._normalizeDataSource(this._dataSource) } this._addDataSourceHandlers(); this._initDataController() } } _initDataController() { var _this$option; const dataController = null === (_this$option = this.option) || void 0 === _this$option ? void 0 : _this$option.call(this, "_dataController"); const dataSource = this._dataSource; if (dataController) { this._dataController = dataController } else { this._dataController = new _m_data_controller.default(dataSource) } } _addDataSourceHandlers() { if ("_dataSourceChangedHandler" in this) { this._addDataSourceChangeHandler() } if ("_dataSourceLoadErrorHandler" in this) { this._addDataSourceLoadErrorHandler() } if ("_dataSourceLoadingChangedHandler" in this) { this._addDataSourceLoadingChangedHandler() } this._addReadyWatcher() } _addReadyWatcher() { this.readyWatcher = function(isLoading) { this._ready && this._ready(!isLoading) }.bind(this); this._dataSource.on("loadingChanged", this.readyWatcher) } _addDataSourceChangeHandler() { const dataSource = this._dataSource; this._proxiedDataSourceChangedHandler = function(e) { this._dataSourceChangedHandler(dataSource.items(), e) }.bind(this); dataSource.on("changed", this._proxiedDataSourceChangedHandler) } _addDataSourceLoadErrorHandler() { this._proxiedDataSourceLoadErrorHandler = this._dataSourceLoadErrorHandler.bind(this); this._dataSource.on("loadError", this._proxiedDataSourceLoadErrorHandler) } _addDataSourceLoadingChangedHandler() { this._proxiedDataSourceLoadingChangedHandler = this._dataSourceLoadingChangedHandler.bind(this); this._dataSource.on("loadingChanged", this._proxiedDataSourceLoadingChangedHandler) } _loadDataSource() { const dataSource = this._dataSource; if (dataSource) { if (dataSource.isLoaded()) { this._proxiedDataSourceChangedHandler && this._proxiedDataSourceChangedHandler() } else { dataSource.load() } } } _loadSingle(key, value) { key = "this" === key ? this._dataSource.key() || "this" : key; return this._dataSource.loadSingle(key, value) } _isLastPage() { return !this._dataSource || this._dataSource.isLastPage() || !this._dataSource._pageSize } _isDataSourceLoading() { return this._dataSource && this._dataSource.isLoading() } _disposeDataSource() { if (this._dataSource) { if (this._isSharedDataSource) { delete this._isSharedDataSource; this._proxiedDataSourceChangedHandler && this._dataSource.off("changed", this._proxiedDataSourceChangedHandler); this._proxiedDataSourceLoadErrorHandler && this._dataSource.off("loadError", this._proxiedDataSourceLoadErrorHandler); this._proxiedDataSourceLoadingChangedHandler && this._dataSource.off("loadingChanged", this._proxiedDataSourceLoadingChangedHandler); if (this._dataSource._eventsStrategy) { this._dataSource._eventsStrategy.off("loadingChanged", this.readyWatcher) } } else { this._dataSource.dispose() } delete this._dataSource; delete this._proxiedDataSourceChangedHandler; delete this._proxiedDataSourceLoadErrorHandler; delete this._proxiedDataSourceLoadingChangedHandler } } getDataSource() { return this._dataSource || null } } }, 3120: /*!*********************************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/grid_core/data_source_adapter/m_data_source_adapter.js ***! \*********************************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _array_store = _interopRequireDefault(__webpack_require__( /*! ../../../../common/data/array_store */ 80556)); var _array_utils = __webpack_require__( /*! ../../../../common/data/array_utils */ 43792); var _callbacks = _interopRequireDefault(__webpack_require__( /*! ../../../../core/utils/callbacks */ 84718)); var _common = __webpack_require__( /*! ../../../../core/utils/common */ 17781); var _deferred = __webpack_require__( /*! ../../../../core/utils/deferred */ 87739); var _extend = __webpack_require__( /*! ../../../../core/utils/extend */ 52576); var _iterator = __webpack_require__( /*! ../../../../core/utils/iterator */ 21274); var _type = __webpack_require__( /*! ../../../../core/utils/type */ 11528); var _m_modules = _interopRequireDefault(__webpack_require__( /*! ../m_modules */ 74854)); var _m_utils = _interopRequireDefault(__webpack_require__( /*! ../m_utils */ 53226)); var _m_data_source_adapter_utils = __webpack_require__( /*! ./m_data_source_adapter_utils */ 39394); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } class DataSourceAdapter extends _m_modules.default.Controller { init(dataSource, remoteOperations) { const that = this; that._dataSource = dataSource; that._remoteOperations = remoteOperations || {}; that._isLastPage = !dataSource.isLastPage(); that._hasLastPage = false; that._currentTotalCount = 0; that._cachedData = (0, _m_data_source_adapter_utils.createEmptyCachedData)(); that._lastOperationTypes = {}; that._eventsStrategy = dataSource._eventsStrategy; that._totalCountCorrection = 0; that._isLoadingAll = false; that.changed = (0, _callbacks.default)(); that.loadingChanged = (0, _callbacks.default)(); that.loadError = (0, _callbacks.default)(); that.customizeStoreLoadOptions = (0, _callbacks.default)(); that.changing = (0, _callbacks.default)(); that.pushed = (0, _callbacks.default)(); that._dataChangedHandler = that._handleDataChanged.bind(that); that._customizeStoreLoadOptionsHandler = that._handleCustomizeStoreLoadOptions.bind(that); that._dataLoadedHandler = that._handleDataLoaded.bind(that); that._loadingChangedHandler = that._handleLoadingChanged.bind(that); that._loadErrorHandler = that._handleLoadError.bind(that); that._pushHandler = that._handlePush.bind(that); that._changingHandler = that._handleChanging.bind(that); dataSource.on("changed", that._dataChangedHandler); dataSource.on("customizeStoreLoadOptions", that._customizeStoreLoadOptionsHandler); dataSource.on("customizeLoadResult", that._dataLoadedHandler); dataSource.on("loadingChanged", that._loadingChangedHandler); dataSource.on("loadError", that._loadErrorHandler); dataSource.on("changing", that._changingHandler); dataSource.store().on("beforePush", that._pushHandler); (0, _iterator.each)(dataSource, ((memberName, member) => { if (!that[memberName] && (0, _type.isFunction)(member)) { that[memberName] = function() { return this._dataSource[memberName].apply(this._dataSource, arguments) } } })) } dispose(isSharedDataSource) { const dataSource = this._dataSource; const store = dataSource.store(); dataSource.off("changed", this._dataChangedHandler); dataSource.off("customizeStoreLoadOptions", this._customizeStoreLoadOptionsHandler); dataSource.off("customizeLoadResult", this._dataLoadedHandler); dataSource.off("loadingChanged", this._loadingChangedHandler); dataSource.off("loadError", this._loadErrorHandler); dataSource.off("changing", this._changingHandler); store && store.off("beforePush", this._pushHandler); if (!isSharedDataSource) { dataSource.dispose() } } remoteOperations() { return this._remoteOperations } refresh(options, operationTypes) { const that = this; const dataSource = that._dataSource; if (operationTypes.reload) { that.resetCurrentTotalCount(); that._isLastPage = !dataSource.paginate(); that._hasLastPage = that._isLastPage } } resetCurrentTotalCount() { this._currentTotalCount = 0; this._totalCountCorrection = 0 } resetCache() { this._cachedStoreData = void 0; this._cachedPagingData = void 0 } resetPagesCache(isLiveUpdate) { this._cachedData = (0, _m_data_source_adapter_utils.createEmptyCachedData)() } _needClearStoreDataCache() { const remoteOperations = this.remoteOperations(); const operationTypes = (0, _m_data_source_adapter_utils.calculateOperationTypes)(this._lastLoadOptions || {}, {}); const isLocalOperations = Object.keys(remoteOperations).every((operationName => !operationTypes[operationName] || !remoteOperations[operationName])); return !isLocalOperations } push(changes, fromStore) { const store = this.store(); if (this._needClearStoreDataCache()) { this._cachedStoreData = void 0 } this._cachedPagingData = void 0; this.resetPagesCache(true); if (this._cachedStoreData) { (0, _array_utils.applyBatch)({ keyInfo: store, data: this._cachedStoreData, changes: changes }) } if (!fromStore) { this._applyBatch(changes) } this.pushed.fire(changes) } getDataIndexGetter() { if (!this._dataIndexGetter) { let indexByKey; let storeData; const store = this.store(); this._dataIndexGetter = data => { const isCacheUpdated = storeData && storeData !== this._cachedStoreData; if (!indexByKey || isCacheUpdated) { storeData = this._cachedStoreData || []; indexByKey = {}; for (let i = 0; i < storeData.length; i++) { indexByKey[(0, _common.getKeyHash)(store.keyOf(storeData[i]))] = i } } return indexByKey[(0, _common.getKeyHash)(store.keyOf(data))] } } return this._dataIndexGetter } _getKeyInfo() { return this.store() } _needToCopyDataObject() { return true } _applyBatch(changes, fromStore) { const keyInfo = this._getKeyInfo(); const dataSource = this._dataSource; const groupCount = _m_utils.default.normalizeSortingInfo(this.group()).length; const isReshapeMode = "reshape" === this.option("editing.refreshMode"); const isVirtualMode = "virtual" === this.option("scrolling.mode"); changes = changes.filter((change => !dataSource.paginate() || "insert" !== change.type || void 0 !== change.index)); const getItemCount = () => groupCount ? this.itemsCount() : this.items().length; const oldItemCount = getItemCount(); (0, _array_utils.applyBatch)({ keyInfo: keyInfo, data: this._items, changes: changes, groupCount: groupCount, useInsertIndex: true, skipCopying: !this._needToCopyDataObject() }); (0, _array_utils.applyBatch)({ keyInfo: keyInfo, data: dataSource.items(), changes: changes, groupCount: groupCount, useInsertIndex: true, skipCopying: !this._needToCopyDataObject() }); const needUpdateTotalCountCorrection = this._currentTotalCount > 0 || (fromStore || !isReshapeMode) && isVirtualMode; if (needUpdateTotalCountCorrection) { this._totalCountCorrection += getItemCount() - oldItemCount } changes.splice(0, changes.length) } _handlePush(_ref) { let { changes: changes } = _ref; this.push(changes, true) } _handleChanging(e) { this.changing.fire(e); this._applyBatch(e.changes, true) } _needCleanCacheByOperation(operationType, remoteOperations) { const operationTypesByOrder = ["filtering", "sorting", "paging"]; const operationTypeIndex = operationTypesByOrder.indexOf(operationType); const currentOperationTypes = operationTypeIndex >= 0 ? operationTypesByOrder.slice(operationTypeIndex) : [operationType]; return currentOperationTypes.some((operationType => remoteOperations[operationType])) } _customizeRemoteOperations(options, operationTypes) { let cachedStoreData = this._cachedStoreData; let cachedPagingData = this._cachedPagingData; let cachedData = this._cachedData; if (options.storeLoadOptions.filter && !options.remoteOperations.filtering || options.storeLoadOptions.sort && !options.remoteOperations.sorting) { options.remoteOperations = { filtering: options.remoteOperations.filtering, summary: options.remoteOperations.summary } } if (operationTypes.fullReload) { cachedStoreData = void 0; cachedPagingData = void 0; cachedData = (0, _m_data_source_adapter_utils.createEmptyCachedData)() } else { if (operationTypes.reload) { cachedPagingData = void 0; cachedData = (0, _m_data_source_adapter_utils.createEmptyCachedData)() } else if (operationTypes.groupExpanding) { cachedData = (0, _m_data_source_adapter_utils.createEmptyCachedData)() }(0, _iterator.each)(operationTypes, ((operationType, value) => { if (value && this._needCleanCacheByOperation(operationType, options.remoteOperations)) { cachedStoreData = void 0; cachedPagingData = void 0 } })) } if (cachedPagingData) { options.remoteOperations.paging = false } options.cachedStoreData = cachedStoreData; options.cachedPagingData = cachedPagingData; options.cachedData = cachedData; if (!options.isCustomLoading) { this._cachedStoreData = cachedStoreData; this._cachedPagingData = cachedPagingData; this._cachedData = cachedData } } _handleCustomizeStoreLoadOptions(options) { var _options$data; this._handleDataLoading(options); if (!(0 === (null === (_options$data = options.data) || void 0 === _options$data ? void 0 : _options$data.length))) { options.data = (0, _m_data_source_adapter_utils.getPageDataFromCache)(options, true) || options.cachedStoreData } } _handleDataLoading(options) { const dataSource = this._dataSource; const lastLoadOptions = this._lastLoadOptions; this.customizeStoreLoadOptions.fire(options); options.delay = this.option("loadingTimeout"); options.originalStoreLoadOptions = options.storeLoadOptions; options.remoteOperations = (0, _extend.extend)({}, this.remoteOperations()); const isFullReload = !this.isLoaded() && !this._isRefreshing; if (this.option("integrationOptions.renderedOnServer") && !this.isLoaded()) { options.delay = void 0 } const loadOptions = (0, _extend.extend)({ pageIndex: this.pageIndex(), pageSize: this.pageSize() }, options.storeLoadOptions); const operationTypes = (0, _m_data_source_adapter_utils.calculateOperationTypes)(loadOptions, lastLoadOptions, isFullReload); this._customizeRemoteOperations(options, operationTypes); if (!options.isCustomLoading) { const isRefreshing = this._isRefreshing; options.pageIndex = dataSource.pageIndex(); options.lastLoadOptions = loadOptions; options.operationTypes = operationTypes; this._loadingOperationTypes = operationTypes; this._isRefreshing = true; (0, _deferred.when)(isRefreshing || this._isRefreshed || this.refresh(options, operationTypes)).done((() => { if (this._lastOperationId === options.operationId) { this._isRefreshed = true; this.load().always((() => { this._isRefreshed = false })) } })).fail((() => { dataSource.cancel(options.operationId) })).always((() => { this._isRefreshing = false })); dataSource.cancel(this._lastOperationId); this._lastOperationId = options.operationId; if (this._isRefreshing) { dataSource.cancel(this._lastOperationId) } } this._handleDataLoadingCore(options) } _handleDataLoadingCore(options) { const { remoteOperations: remoteOperations } = options; options.loadOptions = {}; const cachedExtra = options.cachedData.extra; const localLoadOptionNames = { filter: !remoteOperations.filtering, sort: !remoteOperations.sorting, group: !remoteOperations.grouping, summary: !remoteOperations.summary, skip: !remoteOperations.paging, take: !remoteOperations.paging, requireTotalCount: cachedExtra && "totalCount" in cachedExtra || !remoteOperations.paging, langParams: !remoteOperations.filtering || !remoteOperations.sorting }; (0, _iterator.each)(options.storeLoadOptions, ((optionName, optionValue) => { if (localLoadOptionNames[optionName]) { options.loadOptions[optionName] = optionValue; delete options.storeLoadOptions[optionName] } })); if (cachedExtra) { options.extra = cachedExtra } } _handleDataLoaded(options) { const { loadOptions: loadOptions } = options; const localPaging = options.remoteOperations && !options.remoteOperations.paging; const { cachedData: cachedData } = options; const { storeLoadOptions: storeLoadOptions } = options; const needCache = false !== this.option("cacheEnabled") && storeLoadOptions; const needPageCache = needCache && !options.isCustomLoading && cachedData && (!localPaging || storeLoadOptions.group); const needPagingCache = needCache && localPaging; const needStoreCache = needPagingCache && !options.isCustomLoading; if (!loadOptions) { this._dataSource.cancel(options.operationId); return } if (localPaging) { options.skip = loadOptions.skip; options.take = loadOptions.take; delete loadOptions.skip; delete loadOptions.take } if (loadOptions.group) { loadOptions.group = options.group || loadOptions.group } const groupCount = _m_utils.default.normalizeSortingInfo(options.group || storeLoadOptions.group || loadOptions.group).length; if (options.cachedDataPartBegin) { options.data = options.cachedDataPartBegin.concat(options.data) } if (options.cachedDataPartEnd) { options.data = options.data.concat(options.cachedDataPartEnd) } if (!needPageCache || !(0, _m_data_source_adapter_utils.getPageDataFromCache)(options)) { var _options$extra; if (needPagingCache && options.cachedPagingData) { options.data = (0, _m_data_source_adapter_utils.cloneItems)(options.cachedPagingData, groupCount) } else { if (needStoreCache) { if (!this._cachedStoreData) { this._cachedStoreData = (0, _m_data_source_adapter_utils.cloneItems)(options.data, _m_utils.default.normalizeSortingInfo(storeLoadOptions.group).length) } else if (options.mergeStoreLoadData) { options.data = this._cachedStoreData = this._cachedStoreData.concat(options.data) } } new _array_store.default(options.data).load(loadOptions).done((data => { options.data = data; if (needStoreCache) { this._cachedPagingData = (0, _m_data_source_adapter_utils.cloneItems)(options.data, groupCount) } })).fail((error => { options.data = (new _deferred.Deferred).reject(error) })) } if (loadOptions.requireTotalCount && localPaging) { options.extra = (0, _type.isPlainObject)(options.extra) ? options.extra : {}; options.extra.totalCount = options.data.length } if (options.extra && options.extra.totalCount >= 0 && (false === storeLoadOptions.requireTotalCount || false === loadOptions.requireTotalCount)) { options.extra.totalCount = -1 } if (!loadOptions.data && (storeLoadOptions.requireTotalCount || ((null === (_options$extra = options.extra) || void 0 === _options$extra ? void 0 : _options$extra.totalCount) ?? -1) >= 0)) { this._totalCountCorrection = 0 } this._handleDataLoadedCore(options); if (needPageCache) { cachedData.extra = cachedData.extra || (0, _extend.extend)({}, options.extra); (0, _deferred.when)(options.data).done((data => { (0, _m_data_source_adapter_utils.setPageDataToCache)(options, data, groupCount) })) } }(0, _deferred.when)(options.data).done((() => { if (options.lastLoadOptions) { this._lastLoadOptions = options.lastLoadOptions; Object.keys(options.operationTypes).forEach((operationType => { this._lastOperationTypes[operationType] = this._lastOperationTypes[operationType] || options.operationTypes[operationType] })) } })); options.storeLoadOptions = options.originalStoreLoadOptions } _handleDataLoadedCore(options) { if (options.remoteOperations && !options.remoteOperations.paging && Array.isArray(options.data)) { if (void 0 !== options.skip) { options.data = options.data.slice(options.skip) } if (void 0 !== options.take) { options.data = options.data.slice(0, options.take) } } } _handleLoadingChanged(isLoading) { this.loadingChanged.fire(isLoading) } _handleLoadError(error) { this.loadError.fire(error); this.changed.fire({ changeType: "loadError", error: error }) } _loadPageSize() { return this.pageSize() } _handleDataChanged(args) { let currentTotalCount; const dataSource = this._dataSource; let isLoading = false; const isDataLoading = !args || (0, _type.isDefined)(args.changeType); const itemsCount = this.itemsCount(); if (isDataLoading) { this._isLastPage = !itemsCount || !this._loadPageSize() || itemsCount < this._loadPageSize(); if (this._isLastPage) { this._hasLastPage = true } } if (dataSource.totalCount() >= 0) { if (dataSource.pageIndex() >= this.pageCount()) { dataSource.pageIndex(this.pageCount() - 1); this.pageIndex(dataSource.pageIndex()); this.resetPagesCache(); dataSource.load(); isLoading = true } } else if (isDataLoading) { currentTotalCount = dataSource.pageIndex() * this.pageSize() + itemsCount; if (currentTotalCount > this._currentTotalCount) { this._currentTotalCount = currentTotalCount; if (0 === dataSource.pageIndex() || !this.option("scrolling.legacyMode")) { this._totalCountCorrection = 0 } } if (0 === itemsCount && dataSource.pageIndex() >= this.pageCount()) { dataSource.pageIndex(this.pageCount() - 1); if ("infinite" !== this.option("scrolling.mode")) { dataSource.load(); isLoading = true } } } if (!isLoading) { this._operationTypes = this._lastOperationTypes; this._lastOperationTypes = {}; this.component._optionCache = {}; this.changed.fire(args); this.component._optionCache = void 0 } } _scheduleCustomLoadCallbacks(deferred) { const that = this; that._isCustomLoading = true; deferred.always((() => { that._isCustomLoading = false })) } loadingOperationTypes() { return this._loadingOperationTypes } operationTypes() { return this._operationTypes } lastLoadOptions() { return this._lastLoadOptions || {} } isLastPage() { return this._isLastPage } _dataSourceTotalCount() { return this._dataSource.totalCount() } _changeRowExpandCore(path) {} changeRowExpand(path) {} totalCount() { return parseInt((this._currentTotalCount || this._dataSourceTotalCount()) + this._totalCountCorrection) } totalCountCorrection() { return this._totalCountCorrection } items() {} itemsCount() { return this._dataSource.items().length } totalItemsCount() { return this.totalCount() } pageSize() { const dataSource = this._dataSource; if (!arguments.length && !dataSource.paginate()) { return 0 } return dataSource.pageSize.apply(dataSource, arguments) } pageCount() { const count = this.totalItemsCount() - this._totalCountCorrection; const pageSize = this.pageSize(); if (pageSize && count > 0) { return Math.max(1, Math.ceil(count / pageSize)) } return 1 } hasKnownLastPage() { return this._hasLastPage || this._dataSource.totalCount() >= 0 } loadFromStore(loadOptions, store) { const dataSource = this._dataSource; const d = new _deferred.Deferred; if (!dataSource) { return } store = store || dataSource.store(); store.load(loadOptions).done(((data, extra) => { if (data && !Array.isArray(data) && Array.isArray(data.data)) { extra = data; data = data.data } d.resolve(data, extra) })).fail(d.reject); return d } isCustomLoading() { return !!this._isCustomLoading } load(options) { const that = this; const dataSource = that._dataSource; const d = new _deferred.Deferred; if (options) { const store = dataSource.store(); const dataSourceLoadOptions = dataSource.loadOptions(); const loadResult = { storeLoadOptions: (0, _extend.extend)({}, options, { langParams: null === dataSourceLoadOptions || void 0 === dataSourceLoadOptions ? void 0 : dataSourceLoadOptions.langParams }), isCustomLoading: true }; (0, _iterator.each)(store._customLoadOptions() || [], ((_, optionName) => { if (!(optionName in loadResult.storeLoadOptions)) { loadResult.storeLoadOptions[optionName] = dataSourceLoadOptions[optionName] } })); this._isLoadingAll = options.isLoadingAll; that._scheduleCustomLoadCallbacks(d); dataSource._scheduleLoadCallbacks(d); that._handleCustomizeStoreLoadOptions(loadResult); (0, _m_data_source_adapter_utils.executeTask)((() => { if (!dataSource.store()) { return d.reject("canceled") }(0, _deferred.when)(loadResult.data || that.loadFromStore(loadResult.storeLoadOptions)).done(((data, extra) => { loadResult.data = data; loadResult.extra = extra || {}; that._handleDataLoaded(loadResult); if (options.requireTotalCount && void 0 === loadResult.extra.totalCount) { loadResult.extra.totalCount = store.totalCount(loadResult.storeLoadOptions) }(0, _deferred.when)(loadResult.data, loadResult.extra.totalCount).done(((data, totalCount) => { loadResult.extra.totalCount = totalCount; d.resolve(data, loadResult.extra) })).fail(d.reject) })).fail(d.reject) }), that.option("loadingTimeout")); return d.fail((function() { that._eventsStrategy.fireEvent("loadError", arguments) })).always((() => { this._isLoadingAll = false })).promise() } return dataSource.load() } reload(full) { return full ? this._dataSource.reload() : this._dataSource.load() } getCachedStoreData() { return this._cachedStoreData } isLoaded() {} pageIndex(pageIndex) {} } exports.default = DataSourceAdapter }, 39394: /*!***************************************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/grid_core/data_source_adapter/m_data_source_adapter_utils.js ***! \***************************************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.updatePagingOptionsByCache = exports.setPageDataToCache = exports.getPageDataFromCache = exports.getItemFromCache = exports.getGroupItemFromCache = exports.getCacheItem = exports.fillItemsFromCache = exports.executeTask = exports.createEmptyCachedData = exports.cloneItems = exports.calculateOperationTypes = void 0; var _extend = __webpack_require__( /*! ../../../../core/utils/extend */ 52576); var _type = __webpack_require__( /*! ../../../../core/utils/type */ 11528); var _m_common = _interopRequireDefault(__webpack_require__( /*! ../../../core/utils/m_common */ 39315)); var _m_utils = _interopRequireDefault(__webpack_require__( /*! ../m_utils */ 53226)); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } function _extends() { return _extends = Object.assign ? Object.assign.bind() : function(n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) { ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]) } } return n }, _extends.apply(null, arguments) } const cloneItems = function(items, groupCount) { if (items) { items = items.slice(0); if (groupCount) { for (let i = 0; i < items.length; i++) { items[i] = (0, _extend.extend)({ key: items[i].key }, items[i]); items[i].items = cloneItems(items[i].items, groupCount - 1) } } } return items }; exports.cloneItems = cloneItems; exports.calculateOperationTypes = function(loadOptions, lastLoadOptions, isFullReload) { let operationTypes = { reload: true, fullReload: true }; if (lastLoadOptions) { operationTypes = { sorting: !_m_utils.default.equalSortParameters(loadOptions.sort, lastLoadOptions.sort), grouping: !_m_utils.default.equalSortParameters(loadOptions.group, lastLoadOptions.group, true), groupExpanding: !_m_utils.default.equalSortParameters(loadOptions.group, lastLoadOptions.group) || lastLoadOptions.groupExpand, filtering: !_m_utils.default.equalFilterParameters(loadOptions.filter, lastLoadOptions.filter, loadOptions.langParams), pageIndex: loadOptions.pageIndex !== lastLoadOptions.pageIndex, skip: loadOptions.skip !== lastLoadOptions.skip, take: loadOptions.take !== lastLoadOptions.take, pageSize: loadOptions.pageSize !== lastLoadOptions.pageSize, fullReload: isFullReload, reload: false, paging: false }; operationTypes.reload = isFullReload || operationTypes.sorting || operationTypes.grouping || operationTypes.filtering; operationTypes.paging = operationTypes.pageIndex || operationTypes.pageSize || operationTypes.take } return operationTypes }; exports.executeTask = function(action, timeout) { if ((0, _type.isDefined)(timeout)) { _m_common.default.executeAsync(action, timeout) } else { action() } }; exports.createEmptyCachedData = function() { return { items: {} } }; exports.getPageDataFromCache = function(options, updatePaging) { const groupCount = _m_utils.default.normalizeSortingInfo(options.group || options.storeLoadOptions.group || options.loadOptions.group).length; const items = []; if (fillItemsFromCache(items, options, groupCount)) { return items } if (updatePaging) { updatePagingOptionsByCache(items, options, groupCount) } }; const fillItemsFromCache = function(items, options, groupCount, fromEnd) { var _options$cachedData; const { storeLoadOptions: storeLoadOptions } = options; const take = options.take ?? storeLoadOptions.take ?? 0; const cachedItems = null === (_options$cachedData = options.cachedData) || void 0 === _options$cachedData ? void 0 : _options$cachedData.items; if (take && cachedItems) { const skip = options.skip ?? storeLoadOptions.skip ?? 0; for (let i = 0; i < take; i += 1) { const localIndex = fromEnd ? take - 1 - i : i; const cacheItemIndex = localIndex + skip; const cacheItem = cachedItems[cacheItemIndex]; if (void 0 === cacheItem && cacheItemIndex in cachedItems) { return true } const item = getItemFromCache(options, cacheItem, groupCount, localIndex, take); if (item) { items.push(item) } else { return false } } return true } return false }; exports.fillItemsFromCache = fillItemsFromCache; const getItemFromCache = function(options, cacheItem, groupCount, index, take) { if (groupCount && cacheItem) { const skips = 0 === index && options.skips || []; const takes = index === take - 1 && options.takes || []; return getGroupItemFromCache(cacheItem, groupCount, skips, takes) } return cacheItem }; exports.getItemFromCache = getItemFromCache; const getGroupItemFromCache = function(cacheItem, groupCount, skips, takes) { if (groupCount && cacheItem) { const result = _extends({}, cacheItem); const skip = skips[0] || 0; const take = takes[0]; const { items: items } = cacheItem; if (items) { if (void 0 === take && !items[skip]) { return } result.items = []; if (skips.length) { result.isContinuation = true } if (take) { result.isContinuationOnNextPage = cacheItem.count > take } for (let i = 0; void 0 === take ? items[i + skip] : i < take; i += 1) { const childCacheItem = items[i + skip]; const isLast = i + 1 === take; const item = getGroupItemFromCache(childCacheItem, groupCount - 1, 0 === i ? skips.slice(1) : [], isLast ? takes.slice(1) : []); if (void 0 !== item) { result.items.push(item) } else { return } } } return result } return cacheItem }; exports.getGroupItemFromCache = getGroupItemFromCache; const updatePagingOptionsByCache = function(cacheItemsFromBegin, options, groupCount) { const cacheItemBeginCount = cacheItemsFromBegin.length; const { storeLoadOptions: storeLoadOptions } = options; if (void 0 !== storeLoadOptions.skip && storeLoadOptions.take && !groupCount) { const cacheItemsFromEnd = []; fillItemsFromCache(cacheItemsFromEnd, options, groupCount, true); const cacheItemEndCount = cacheItemsFromEnd.length; if (cacheItemBeginCount || cacheItemEndCount) { options.skip = options.skip ?? storeLoadOptions.skip; options.take = options.take ?? storeLoadOptions.take } if (cacheItemBeginCount) { storeLoadOptions.skip += cacheItemBeginCount; storeLoadOptions.take -= cacheItemBeginCount; options.cachedDataPartBegin = cacheItemsFromBegin } if (cacheItemEndCount) { storeLoadOptions.take -= cacheItemEndCount; options.cachedDataPartEnd = cacheItemsFromEnd.reverse() } } }; exports.updatePagingOptionsByCache = updatePagingOptionsByCache; exports.setPageDataToCache = function(options, data, groupCount) { const { storeLoadOptions: storeLoadOptions } = options; const skip = options.skip ?? storeLoadOptions.skip ?? 0; const take = options.take ?? storeLoadOptions.take ?? 0; for (let i = 0; i < take; i += 1) { const globalIndex = i + skip; const cacheItems = options.cachedData.items; const skips = 0 === i && options.skips || []; cacheItems[globalIndex] = getCacheItem(cacheItems[globalIndex], data[i], groupCount, skips) } }; const getCacheItem = function(cacheItem, loadedItem, groupCount, skips) { if (groupCount && loadedItem) { const result = _extends({}, loadedItem); delete result.isContinuation; delete result.isContinuationOnNextPage; const skip = skips[0] || 0; if (loadedItem.items) { result.items = (null === cacheItem || void 0 === cacheItem ? void 0 : cacheItem.items) || {}; loadedItem.items.forEach(((item, index) => { const globalIndex = index + skip; const childSkips = 0 === index ? skips.slice(1) : []; result.items[globalIndex] = getCacheItem(result.items[globalIndex], item, groupCount - 1, childSkips) })) } return result } return loadedItem }; exports.getCacheItem = getCacheItem }, 69699: /*!*****************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/grid_core/editing/const.js ***! \*****************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.VIEWPORT_TOP_NEW_ROW_POSITION = exports.VIEWPORT_BOTTOM_NEW_ROW_POSITION = exports.TARGET_COMPONENT_NAME = exports.ROW_SELECTED_CLASS = exports.ROW_SELECTED = exports.ROW_REMOVED = exports.ROW_MODIFIED = exports.ROW_INSERTED = exports.ROW_CLASS = exports.ROW_BASED_MODES = exports.REQUIRED_EDITOR_LABELLEDBY_MODES = exports.READONLY_CLASS = exports.PAGE_TOP_NEW_ROW_POSITION = exports.PAGE_BOTTOM_NEW_ROW_POSITION = exports.MODES_WITH_DELAYED_FOCUS = exports.METHOD_NAMES = exports.LINK_ICON_CLASS = exports.LINK_CLASS = exports.LAST_NEW_ROW_POSITION = exports.INSERT_INDEX = exports.FORM_BUTTONS_CONTAINER_CLASS = exports.FOCUS_OVERLAY_CLASS = exports.FOCUSABLE_ELEMENT_SELECTOR = exports.FOCUSABLE_ELEMENT_CLASS = exports.FIRST_NEW_ROW_POSITION = exports.FILTER_ROW_CLASS = exports.EDIT_ROW = exports.EDIT_POPUP_FORM_CLASS = exports.EDIT_POPUP_CLASS = exports.EDIT_MODE_ROW = exports.EDIT_MODE_POPUP = exports.EDIT_MODE_FORM = exports.EDIT_MODE_CELL = exports.EDIT_MODE_BATCH = exports.EDIT_MODES = exports.EDIT_LINK_CLASS = exports.EDIT_ICON_CLASS = exports.EDIT_FORM_ITEM_CLASS = exports.EDIT_FORM_CLASS = exports.EDIT_BUTTON_CLASS = exports.EDITOR_CELL_CLASS = exports.EDITORS_INPUT_SELECTOR = exports.EDITING_POPUP_OPTION_NAME = exports.EDITING_NAMESPACE = exports.EDITING_FORM_OPTION_NAME = exports.EDITING_EDITROWKEY_OPTION_NAME = exports.EDITING_EDITCOLUMNNAME_OPTION_NAME = exports.EDITING_CHANGES_OPTION_NAME = exports.DROPDOWN_EDITOR_OVERLAY_CLASS = exports.DEFAULT_START_EDIT_ACTION = exports.DATA_ROW_CLASS = exports.DATA_EDIT_DATA_UPDATE_TYPE = exports.DATA_EDIT_DATA_REMOVE_TYPE = exports.DATA_EDIT_DATA_INSERT_TYPE = exports.COMMAND_EDIT_WITH_ICONS_CLASS = exports.COMMAND_EDIT_CLASS = exports.CELL_MODIFIED_CLASS = exports.CELL_MODIFIED = exports.CELL_FOCUS_DISABLED_CLASS = exports.CELL_BASED_MODES = exports.BUTTON_NAMES = exports.BUTTON_CLASS = exports.ADD_ROW_BUTTON_CLASS = exports.ACTION_OPTION_NAMES = void 0; var _ui = (e = __webpack_require__( /*! ../../../../ui/scroll_view/ui.scrollable */ 20876), e && e.__esModule ? e : { default: e }); var e; exports.EDITOR_CELL_CLASS = "dx-editor-cell"; exports.ROW_CLASS = "dx-row"; exports.CELL_MODIFIED_CLASS = "dx-cell-modified"; exports.ROW_SELECTED_CLASS = "dx-selection"; exports.EDIT_FORM_CLASS = "edit-form"; exports.DATA_EDIT_DATA_INSERT_TYPE = "insert"; exports.DATA_EDIT_DATA_REMOVE_TYPE = "remove"; exports.EDITING_POPUP_OPTION_NAME = "editing.popup"; exports.EDITING_FORM_OPTION_NAME = "editing.form"; exports.EDITING_EDITROWKEY_OPTION_NAME = "editing.editRowKey"; exports.EDITING_EDITCOLUMNNAME_OPTION_NAME = "editing.editColumnName"; exports.TARGET_COMPONENT_NAME = "targetComponent"; const EDITORS_INPUT_SELECTOR = exports.EDITORS_INPUT_SELECTOR = "input:not([type='hidden'])"; exports.FOCUSABLE_ELEMENT_SELECTOR = `[tabindex]:not([disabled]), ${EDITORS_INPUT_SELECTOR}:not([disabled])`; const EDIT_MODE_BATCH = exports.EDIT_MODE_BATCH = "batch"; const EDIT_MODE_ROW = exports.EDIT_MODE_ROW = "row"; const EDIT_MODE_CELL = exports.EDIT_MODE_CELL = "cell"; const EDIT_MODE_FORM = exports.EDIT_MODE_FORM = "form"; const EDIT_MODE_POPUP = exports.EDIT_MODE_POPUP = "popup"; exports.FIRST_NEW_ROW_POSITION = "first"; exports.LAST_NEW_ROW_POSITION = "last"; exports.PAGE_BOTTOM_NEW_ROW_POSITION = "pageBottom"; exports.PAGE_TOP_NEW_ROW_POSITION = "pageTop"; exports.VIEWPORT_BOTTOM_NEW_ROW_POSITION = "viewportBottom"; exports.VIEWPORT_TOP_NEW_ROW_POSITION = "viewportTop"; exports.EDIT_MODES = [EDIT_MODE_BATCH, EDIT_MODE_ROW, EDIT_MODE_CELL, EDIT_MODE_FORM, EDIT_MODE_POPUP]; exports.ROW_BASED_MODES = [EDIT_MODE_ROW, EDIT_MODE_FORM, EDIT_MODE_POPUP]; exports.CELL_BASED_MODES = [EDIT_MODE_BATCH, EDIT_MODE_CELL]; exports.REQUIRED_EDITOR_LABELLEDBY_MODES = [EDIT_MODE_BATCH, EDIT_MODE_ROW, EDIT_MODE_CELL]; exports.MODES_WITH_DELAYED_FOCUS = [EDIT_MODE_ROW, EDIT_MODE_FORM]; exports.READONLY_CLASS = "readonly"; exports.LINK_CLASS = "dx-link"; exports.LINK_ICON_CLASS = "dx-link-icon"; exports.ROW_SELECTED = "dx-selection"; exports.EDIT_BUTTON_CLASS = "dx-edit-button"; const COMMAND_EDIT_CLASS = exports.COMMAND_EDIT_CLASS = "dx-command-edit"; exports.COMMAND_EDIT_WITH_ICONS_CLASS = `${COMMAND_EDIT_CLASS}-with-icons`; exports.INSERT_INDEX = "__DX_INSERT_INDEX__"; exports.ROW_INSERTED = "dx-row-inserted"; exports.ROW_MODIFIED = "dx-row-modified"; exports.CELL_MODIFIED = "dx-cell-modified"; exports.EDITING_NAMESPACE = "dxDataGridEditing"; exports.CELL_FOCUS_DISABLED_CLASS = "dx-cell-focus-disabled"; exports.DATA_EDIT_DATA_UPDATE_TYPE = "update"; exports.DEFAULT_START_EDIT_ACTION = "click"; exports.EDIT_LINK_CLASS = { save: "dx-link-save", cancel: "dx-link-cancel", edit: "dx-link-edit", undelete: "dx-link-undelete", delete: "dx-link-delete", add: "dx-link-add" }; exports.EDIT_ICON_CLASS = { save: "save", cancel: "revert", edit: "edit", undelete: "revert", delete: "trash", add: "add" }; exports.METHOD_NAMES = { edit: "editRow", delete: "deleteRow", undelete: "undeleteRow", save: "saveEditData", cancel: "cancelEditData", add: "addRowByRowIndex" }; exports.ACTION_OPTION_NAMES = { add: "allowAdding", edit: "allowUpdating", delete: "allowDeleting" }; exports.BUTTON_NAMES = ["edit", "save", "cancel", "delete", "undelete"]; exports.EDITING_CHANGES_OPTION_NAME = "editing.changes"; exports.FOCUS_OVERLAY_CLASS = "focus-overlay"; exports.ADD_ROW_BUTTON_CLASS = "addrow-button"; exports.DROPDOWN_EDITOR_OVERLAY_CLASS = "dx-dropdowneditor-overlay"; exports.DATA_ROW_CLASS = "dx-data-row"; exports.ROW_REMOVED = "dx-row-removed"; exports.FILTER_ROW_CLASS = "filter-row"; const isRenovatedScrollable = !!_ui.default.IS_RENOVATED_WIDGET; exports.EDIT_FORM_ITEM_CLASS = "edit-form-item"; exports.EDIT_POPUP_CLASS = "edit-popup"; exports.EDIT_POPUP_FORM_CLASS = "edit-popup-form"; exports.FOCUSABLE_ELEMENT_CLASS = isRenovatedScrollable ? "dx-scrollable" : "dx-scrollable-container"; exports.BUTTON_CLASS = "dx-button"; exports.FORM_BUTTONS_CONTAINER_CLASS = "form-buttons-container"; exports.EDIT_ROW = "dx-edit-row" }, 13876: /*!*********************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/grid_core/editing/m_editing.js ***! \*********************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.editingModule = exports.dataControllerEditingExtenderMixin = void 0; var _click = __webpack_require__( /*! ../../../../common/core/events/click */ 64044); var _events_engine = _interopRequireDefault(__webpack_require__( /*! ../../../../common/core/events/core/events_engine */ 92774)); var _pointer = _interopRequireDefault(__webpack_require__( /*! ../../../../common/core/events/pointer */ 89797)); var _remove = __webpack_require__( /*! ../../../../common/core/events/remove */ 28630); var _index = __webpack_require__( /*! ../../../../common/core/events/utils/index */ 98834); var _message = _interopRequireDefault(__webpack_require__( /*! ../../../../common/core/localization/message */ 4671)); var _array_utils = __webpack_require__( /*! ../../../../common/data/array_utils */ 43792); var _devices = _interopRequireDefault(__webpack_require__( /*! ../../../../core/devices */ 65951)); var _dom_adapter = _interopRequireDefault(__webpack_require__( /*! ../../../../core/dom_adapter */ 64960)); var _guid = _interopRequireDefault(__webpack_require__( /*! ../../../../core/guid */ 19427)); var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../../../core/renderer */ 64553)); var _common = __webpack_require__( /*! ../../../../core/utils/common */ 17781); var _deferred = __webpack_require__( /*! ../../../../core/utils/deferred */ 87739); var _extend = __webpack_require__( /*! ../../../../core/utils/extend */ 52576); var iconUtils = function(e, r) { if (!r && e && e.__esModule) { return e } if (null === e || "object" != typeof e && "function" != typeof e) { return { default: e } } var t = _getRequireWildcardCache(r); if (t && t.has(e)) { return t.get(e) } var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) { if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u] } } return n.default = e, t && t.set(e, n), n }(__webpack_require__( /*! ../../../../core/utils/icon */ 69629)); var _iterator = __webpack_require__( /*! ../../../../core/utils/iterator */ 21274); var _object = __webpack_require__( /*! ../../../../core/utils/object */ 22263); var _type = __webpack_require__( /*! ../../../../core/utils/type */ 11528); var _dialog = __webpack_require__( /*! ../../../../ui/dialog */ 35757); var _themes = __webpack_require__( /*! ../../../../ui/themes */ 52071); var _m_dom = _interopRequireDefault(__webpack_require__( /*! ../../../core/utils/m_dom */ 76400)); var _m_modules = _interopRequireDefault(__webpack_require__( /*! ../m_modules */ 74854)); var _m_utils = _interopRequireDefault(__webpack_require__( /*! ../m_utils */ 53226)); var _const = __webpack_require__( /*! ./const */ 69699); var _m_editing_utils = __webpack_require__( /*! ./m_editing_utils */ 1414); function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) { return null } var r = new WeakMap, t = new WeakMap; return (_getRequireWildcardCache = function(e) { return e ? t : r })(e) } function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } function _extends() { return _extends = Object.assign ? Object.assign.bind() : function(n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) { ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]) } } return n }, _extends.apply(null, arguments) } class EditingControllerImpl extends _m_modules.default.ViewController { init() { this._columnsController = this.getController("columns"); this._dataController = this.getController("data"); this._adaptiveColumnsController = this.getController("adaptiveColumns"); this._validatingController = this.getController("validating"); this._editorFactoryController = this.getController("editorFactory"); this._focusController = this.getController("focus"); this._keyboardNavigationController = this.getController("keyboardNavigation"); this._columnsResizerController = this.getController("columnsResizer"); this._errorHandlingController = this.getController("errorHandling"); this._rowsView = this.getView("rowsView"); this._headerPanelView = this.getView("headerPanel"); this._lastOperation = null; this._changes = []; if (this._deferreds) { this._deferreds.forEach((d => { d.reject("cancel") })) } this._deferreds = []; if (!this._dataChangedHandler) { this._dataChangedHandler = this._handleDataChanged.bind(this); this._dataController.changed.add(this._dataChangedHandler) } if (!this._saveEditorHandler) { this.createAction("onInitNewRow", { excludeValidators: ["disabled", "readOnly"] }); this.createAction("onRowInserting", { excludeValidators: ["disabled", "readOnly"] }); this.createAction("onRowInserted", { excludeValidators: ["disabled", "readOnly"] }); this.createAction("onEditingStart", { excludeValidators: ["disabled", "readOnly"] }); this.createAction("onRowUpdating", { excludeValidators: ["disabled", "readOnly"] }); this.createAction("onRowUpdated", { excludeValidators: ["disabled", "readOnly"] }); this.createAction("onRowRemoving", { excludeValidators: ["disabled", "readOnly"] }); this.createAction("onRowRemoved", { excludeValidators: ["disabled", "readOnly"] }); this.createAction("onSaved", { excludeValidators: ["disabled", "readOnly"] }); this.createAction("onSaving", { excludeValidators: ["disabled", "readOnly"] }); this.createAction("onEditCanceling", { excludeValidators: ["disabled", "readOnly"] }); this.createAction("onEditCanceled", { excludeValidators: ["disabled", "readOnly"] }) } this._updateEditColumn(); this._updateEditButtons(); if (!this._internalState) { this._internalState = new Map } this.component._optionsByReference[_const.EDITING_EDITROWKEY_OPTION_NAME] = true; this.component._optionsByReference[_const.EDITING_CHANGES_OPTION_NAME] = true } getEditMode() { const editMode = this.option("editing.mode") ?? _const.EDIT_MODE_ROW; if (_const.EDIT_MODES.includes(editMode)) { return editMode } return _const.EDIT_MODE_ROW } isCellBasedEditMode() { const editMode = this.getEditMode(); return _const.CELL_BASED_MODES.includes(editMode) } _getDefaultEditorTemplate() { return (container, options) => { const $editor = (0, _renderer.default)("
").appendTo(container); const editorOptions = (0, _extend.extend)({}, options.column, { value: options.value, setValue: options.setValue, row: options.row, parentType: "dataRow", width: null, readOnly: !options.setValue, isOnForm: options.isOnForm, id: options.id }); const needLabel = _const.REQUIRED_EDITOR_LABELLEDBY_MODES.includes(this.getEditMode()); if (needLabel) { editorOptions["aria-labelledby"] = options.column.headerId } this._editorFactoryController.createEditor($editor, editorOptions) } } _getNewRowPosition() { const newRowPosition = this.option("editing.newRowPosition"); const scrollingMode = this.option("scrolling.mode"); if ("virtual" === scrollingMode) { switch (newRowPosition) { case _const.PAGE_TOP_NEW_ROW_POSITION: return _const.VIEWPORT_TOP_NEW_ROW_POSITION; case _const.PAGE_BOTTOM_NEW_ROW_POSITION: return _const.VIEWPORT_BOTTOM_NEW_ROW_POSITION; default: return newRowPosition } } return newRowPosition } getChanges() { return this.option(_const.EDITING_CHANGES_OPTION_NAME) } getInsertRowCount() { const changes = this.option(_const.EDITING_CHANGES_OPTION_NAME); return changes.filter((change => "insert" === change.type)).length } resetChanges() { const changes = this.getChanges(); const needReset = null === changes || void 0 === changes ? void 0 : changes.length; if (needReset) { this._silentOption(_const.EDITING_CHANGES_OPTION_NAME, []); this._internalState.clear() } } _getInternalData(key) { return this._internalState.get((0, _common.getKeyHash)(key)) } _addInternalData(params) { const internalData = this._getInternalData(params.key); if (internalData) { return (0, _extend.extend)(internalData, params) } this._internalState.set((0, _common.getKeyHash)(params.key), params); return params } _getOldData(key) { var _this$_getInternalDat; return null === (_this$_getInternalDat = this._getInternalData(key)) || void 0 === _this$_getInternalDat ? void 0 : _this$_getInternalDat.oldData } getUpdatedData(data) { const key = this._dataController.keyOf(data); const changes = this.getChanges(); const editIndex = _m_utils.default.getIndexByKey(key, changes); if (changes[editIndex]) { return (0, _array_utils.createObjectWithChanges)(data, changes[editIndex].data) } return data } getInsertedData() { return this.getChanges().filter((change => change.data && change.type === _const.DATA_EDIT_DATA_INSERT_TYPE)).map((change => change.data)) } getRemovedData() { return this.getChanges().filter((change => this._getOldData(change.key) && change.type === _const.DATA_EDIT_DATA_REMOVE_TYPE)).map((change => this._getOldData(change.key))) } _fireDataErrorOccurred(arg) { if ("cancel" === arg) { return } const $popupContent = this.getPopupContent(); this._dataController.dataErrorOccurred.fire(arg, $popupContent) } _needToCloseEditableCell($targetElement) {} _closeEditItem($targetElement) {} _handleDataChanged(args) {} _isDefaultButtonVisible(button, options) { let result = true; switch (button.name) { case "delete": result = this.allowDeleting(options); break; case "undelete": result = false } return result } isPopupEditMode() { const editMode = this.option("editing.mode"); return editMode === _const.EDIT_MODE_POPUP } _isButtonVisible(button, options) { const { visible: visible } = button; if (!(0, _type.isDefined)(visible)) { return this._isDefaultButtonVisible(button, options) } return (0, _type.isFunction)(visible) ? visible.call(button, { component: options.component, row: options.row, column: options.column }) : visible } _isButtonDisabled(button, options) { const { disabled: disabled } = button; return (0, _type.isFunction)(disabled) ? disabled.call(button, { component: options.component, row: options.row, column: options.column }) : !!disabled } _getButtonConfig(button, options) { const config = (0, _type.isObject)(button) ? button : {}; const buttonName = (0, _m_editing_utils.getButtonName)(button); const editingTexts = (0, _m_editing_utils.getEditingTexts)(options); const methodName = _const.METHOD_NAMES[buttonName]; const editingOptions = this.option("editing"); const actionName = _const.ACTION_OPTION_NAMES[buttonName]; const allowAction = actionName ? editingOptions[actionName] : true; return (0, _extend.extend)({ name: buttonName, text: editingTexts[buttonName], cssClass: _const.EDIT_LINK_CLASS[buttonName] }, { onClick: methodName && (e => { const { event: event } = e; event.stopPropagation(); event.preventDefault(); setTimeout((() => { options.row && allowAction && this[methodName] && this[methodName](options.row.rowIndex) })) }) }, config) } _getEditingButtons(options) { let buttonIndex; const haveCustomButtons = !!options.column.buttons; let buttons = (options.column.buttons || []).slice(); if (haveCustomButtons) { buttonIndex = (0, _m_editing_utils.getButtonIndex)(buttons, "edit"); if (buttonIndex >= 0) { if ((0, _m_editing_utils.getButtonIndex)(buttons, "save") < 0) { buttons.splice(buttonIndex + 1, 0, "save") } if ((0, _m_editing_utils.getButtonIndex)(buttons, "cancel") < 0) { buttons.splice((0, _m_editing_utils.getButtonIndex)(buttons, "save") + 1, 0, "cancel") } } buttonIndex = (0, _m_editing_utils.getButtonIndex)(buttons, "delete"); if (buttonIndex >= 0 && (0, _m_editing_utils.getButtonIndex)(buttons, "undelete") < 0) { buttons.splice(buttonIndex + 1, 0, "undelete") } } else { buttons = _const.BUTTON_NAMES.slice() } return buttons.map((button => this._getButtonConfig(button, options))) } _renderEditingButtons($container, buttons, options, change) { buttons.forEach((button => { if (this._isButtonVisible(button, options)) { this._createButton($container, button, options, change) } })) } _getEditCommandCellTemplate() { return (container, options, change) => { const $container = (0, _renderer.default)(container); if ("data" === options.rowType) { const buttons = this._getEditingButtons(options); this._renderEditingButtons($container, buttons, options, change); if (options.watch) { const dispose = options.watch((() => buttons.map((button => ({ visible: this._isButtonVisible(button, options), disabled: this._isButtonDisabled(button, options) })))), (() => { $container.empty(); this._renderEditingButtons($container, buttons, options) })); _events_engine.default.on($container, _remove.removeEvent, dispose) } } else { _m_utils.default.setEmptyText($container) } } } isRowBasedEditMode() { const editMode = this.getEditMode(); return _const.ROW_BASED_MODES.includes(editMode) } getFirstEditableColumnIndex() { let columnIndex; const visibleColumns = this._columnsController.getVisibleColumns(); (0, _iterator.each)(visibleColumns, ((index, column) => { if (column.allowEditing) { columnIndex = index; return false } })); return columnIndex } getFirstEditableCellInRow(rowIndex) { var _this$_rowsView; const columnIndex = this.getFirstEditableColumnIndex(); return null === (_this$_rowsView = this._rowsView) || void 0 === _this$_rowsView ? void 0 : _this$_rowsView._getCellElement(rowIndex || 0, columnIndex) } getFocusedCellInRow(rowIndex) { return this.getFirstEditableCellInRow(rowIndex) } getIndexByKey(key, items) { return _m_utils.default.getIndexByKey(key, items) } hasChanges(rowIndex) { const changes = this.getChanges(); let result = false; for (let i = 0; i < (null === changes || void 0 === changes ? void 0 : changes.length); i++) { if (changes[i].type && (!(0, _type.isDefined)(rowIndex) || this._dataController.getRowIndexByKey(changes[i].key) === rowIndex)) { result = true; break } } return result } dispose() { super.dispose(); clearTimeout(this._inputFocusTimeoutID); _events_engine.default.off(_dom_adapter.default.getDocument(), _pointer.default.up, this._pointerUpEditorHandler); _events_engine.default.off(_dom_adapter.default.getDocument(), _pointer.default.down, this._pointerDownEditorHandler); _events_engine.default.off(_dom_adapter.default.getDocument(), _click.name, this._saveEditorHandler) } _silentOption(name, value) { if ("editing.changes" === name) { this._changes = (0, _object.deepExtendArraySafe)([], value) } super._silentOption(name, value) } optionChanged(args) { if ("editing" === args.name) { const { fullName: fullName } = args; if (fullName === _const.EDITING_EDITROWKEY_OPTION_NAME) { this._handleEditRowKeyChange(args) } else if (fullName === _const.EDITING_CHANGES_OPTION_NAME) { const isEqual = (0, _common.equalByValue)(args.value, this._changes, { maxDepth: 4 }); if (!isEqual) { this._changes = (0, _object.deepExtendArraySafe)([], args.value); this._handleChangesChange(args) } } else if (!args.handled) { this._columnsController.reinit(); this.init(); this.resetChanges(); this._resetEditColumnName(); this._resetEditRowKey() } args.handled = true } else { super.optionChanged(args) } } _handleEditRowKeyChange(args) { const rowIndex = this._dataController.getRowIndexByKey(args.value); const oldRowIndexCorrection = this._getEditRowIndexCorrection(); const oldRowIndex = this._dataController.getRowIndexByKey(args.previousValue) + oldRowIndexCorrection; if ((0, _type.isDefined)(args.value)) { if (args.value !== args.previousValue) { this._editRowFromOptionChanged(rowIndex, oldRowIndex) } } else { this.cancelEditData() } } _handleChangesChange(args) { const dataController = this._dataController; const changes = args.value; if (!args.value.length && !args.previousValue.length) { return } changes.forEach((change => { if ("insert" === change.type) { this._addInsertInfo(change) } else { var _dataController$items; const items = dataController.getCachedStoreData() || (null === (_dataController$items = dataController.items()) || void 0 === _dataController$items ? void 0 : _dataController$items.map((item => item.data))); const rowIndex = _m_utils.default.getIndexByKey(change.key, items, dataController.key()); this._addInternalData({ key: change.key, oldData: items[rowIndex] }) } })); dataController.updateItems({ repaintChangesOnly: true, isLiveUpdate: false, isOptionChanged: true }) } publicMethods() { return ["addRow", "deleteRow", "undeleteRow", "editRow", "saveEditData", "cancelEditData", "hasEditData"] } refresh() { if (!(0, _type.isDefined)(this._pageIndex)) { return } this._refreshCore.apply(this, arguments) } _refreshCore(params) {} isEditing() { const isEditRowKeyDefined = (0, _type.isDefined)(this.option(_const.EDITING_EDITROWKEY_OPTION_NAME)); return isEditRowKeyDefined } isEditRow(rowIndex) { return false } _setEditRowKey(value, silent) { if (silent) { this._silentOption(_const.EDITING_EDITROWKEY_OPTION_NAME, value) } else { this.option(_const.EDITING_EDITROWKEY_OPTION_NAME, value) } if (this._refocusEditCell) { this._refocusEditCell = false; this._focusEditingCell() } } _setEditRowKeyByIndex(rowIndex, silent) { const key = this._dataController.getKeyByRowIndex(rowIndex); if (void 0 === key) { this._dataController.fireError("E1043"); return } this._setEditRowKey(key, silent) } getEditRowIndex() { return this._getVisibleEditRowIndex() } getEditFormRowIndex() { return -1 } isEditRowByIndex(rowIndex) { const key = this._dataController.getKeyByRowIndex(rowIndex); const isKeyEqual = (0, _type.isDefined)(key) && (0, _common.equalByValue)(this.option(_const.EDITING_EDITROWKEY_OPTION_NAME), key); if (isKeyEqual) { return this._getVisibleEditRowIndex() === rowIndex } return isKeyEqual } isEditCell(visibleRowIndex, columnIndex) { return this.isEditRowByIndex(visibleRowIndex) && this._getVisibleEditColumnIndex() === columnIndex } getPopupContent() {} _isProcessedItem(item) { return false } _getInsertRowIndex(items, change, isProcessedItems) { let result = -1; const dataController = this._dataController; const key = this._getInsertAfterOrBeforeKey(change); if (!(0, _type.isDefined)(key) && 0 === items.length) { result = 0 } else if ((0, _type.isDefined)(key)) { items.some(((item, index) => { const isProcessedItem = isProcessedItems || this._isProcessedItem(item); if ((0, _type.isObject)(item)) { if (isProcessedItem || (0, _type.isDefined)(item[_const.INSERT_INDEX])) { if ((0, _common.equalByValue)(item.key, key)) { result = index } } else if ((0, _common.equalByValue)(dataController.keyOf(item), key)) { result = index } } if (result >= 0) { const nextItem = items[result + 1]; if (nextItem && ("detail" === nextItem.rowType || "detailAdaptive" === nextItem.rowType) && (0, _type.isDefined)(change.insertAfterKey)) { return } if ((0, _type.isDefined)(change.insertAfterKey)) { result += 1 } return true } })) } return result } _generateNewItem(key) { var _this$_getInternalDat2; const item = { key: key }; const insertInfo = null === (_this$_getInternalDat2 = this._getInternalData(key)) || void 0 === _this$_getInternalDat2 ? void 0 : _this$_getInternalDat2.insertInfo; if (null !== insertInfo && void 0 !== insertInfo && insertInfo[_const.INSERT_INDEX]) { item[_const.INSERT_INDEX] = insertInfo[_const.INSERT_INDEX] } return item } _getLoadedRowIndex(items, change, isProcessedItems) { let loadedRowIndex = this._getInsertRowIndex(items, change, isProcessedItems); const dataController = this._dataController; if (loadedRowIndex < 0) { const newRowPosition = this._getNewRowPosition(); const pageIndex = dataController.pageIndex(); const insertAfterOrBeforeKey = this._getInsertAfterOrBeforeKey(change); if (newRowPosition !== _const.LAST_NEW_ROW_POSITION && 0 === pageIndex && !(0, _type.isDefined)(insertAfterOrBeforeKey)) { loadedRowIndex = 0 } else if (newRowPosition === _const.LAST_NEW_ROW_POSITION && dataController.isLastPageLoaded()) { loadedRowIndex = items.length } } return loadedRowIndex } processItems(items, e) { const { changeType: changeType } = e; this.update(changeType); const changes = this.getChanges(); changes.forEach((change => { var _this$_getInternalDat3; const isInsert = change.type === _const.DATA_EDIT_DATA_INSERT_TYPE; if (!isInsert) { return } let { key: key } = change; let insertInfo = null === (_this$_getInternalDat3 = this._getInternalData(key)) || void 0 === _this$_getInternalDat3 ? void 0 : _this$_getInternalDat3.insertInfo; if (!(0, _type.isDefined)(key) || !(0, _type.isDefined)(insertInfo)) { insertInfo = this._addInsertInfo(change); key = insertInfo.key } const loadedRowIndex = this._getLoadedRowIndex(items, change); const item = this._generateNewItem(key); if (loadedRowIndex >= 0) { items.splice(loadedRowIndex, 0, item) } })); return items } processDataItem(item, options, generateDataValues) { const columns = options.visibleColumns; const key = item.data[_const.INSERT_INDEX] ? item.data.key : item.key; const changes = this.getChanges(); const editIndex = _m_utils.default.getIndexByKey(key, changes); item.isEditing = false; if (editIndex >= 0) { this._processDataItemCore(item, changes[editIndex], key, columns, generateDataValues) } } _processDataItemCore(item, change, key, columns, generateDataValues) { const { data: data, type: type } = change; switch (type) { case _const.DATA_EDIT_DATA_INSERT_TYPE: item.isNewRow = true; item.key = key; item.data = data; break; case _const.DATA_EDIT_DATA_UPDATE_TYPE: item.modified = true; item.oldData = item.data; item.data = (0, _array_utils.createObjectWithChanges)(item.data, data); item.modifiedValues = generateDataValues(data, columns, true); break; case _const.DATA_EDIT_DATA_REMOVE_TYPE: item.removed = true } } _initNewRow(options) { this.executeAction("onInitNewRow", options); if (options.promise) { const deferred = new _deferred.Deferred; (0, _deferred.when)((0, _deferred.fromPromise)(options.promise)).done(deferred.resolve).fail((0, _m_editing_utils.createFailureHandler)(deferred)).fail((arg => this._fireDataErrorOccurred(arg))); return deferred } } _createInsertInfo() { const insertInfo = {}; insertInfo[_const.INSERT_INDEX] = this._getInsertIndex(); return insertInfo } _addInsertInfo(change, parentKey) { var _this$_getInternalDat4; let insertInfo; change.key = this.getChangeKeyValue(change); const { key: key } = change; insertInfo = null === (_this$_getInternalDat4 = this._getInternalData(key)) || void 0 === _this$_getInternalDat4 ? void 0 : _this$_getInternalDat4.insertInfo; if (!(0, _type.isDefined)(insertInfo)) { const insertAfterOrBeforeKey = this._getInsertAfterOrBeforeKey(change); insertInfo = this._createInsertInfo(); if (!(0, _type.isDefined)(insertAfterOrBeforeKey)) { this._setInsertAfterOrBeforeKey(change, parentKey) } } this._addInternalData({ insertInfo: insertInfo, key: key }); return { insertInfo: insertInfo, key: key } } getChangeKeyValue(change) { if ((0, _type.isDefined)(change.key)) { return change.key } const keyExpr = this._dataController.key(); let keyValue; if (change.data && keyExpr && !Array.isArray(keyExpr)) { keyValue = change.data[keyExpr] } if (!(0, _type.isDefined)(keyValue)) { keyValue = (0, _m_editing_utils.generateNewRowTempKey)() } return keyValue } _setInsertAfterOrBeforeKey(change, parentKey) { const rowsView = this.getView("rowsView"); const dataController = this._dataController; const allItems = dataController.items(true); const newRowPosition = this._getNewRowPosition(); switch (newRowPosition) { case _const.FIRST_NEW_ROW_POSITION: case _const.LAST_NEW_ROW_POSITION: break; case _const.PAGE_TOP_NEW_ROW_POSITION: if (allItems.length) { change.insertBeforeKey = allItems[0].key } break; case _const.PAGE_BOTTOM_NEW_ROW_POSITION: if (allItems.length) { change.insertAfterKey = allItems[allItems.length - 1].key } break; default: { const isViewportBottom = newRowPosition === _const.VIEWPORT_BOTTOM_NEW_ROW_POSITION; let visibleItemIndex = isViewportBottom ? null === rowsView || void 0 === rowsView ? void 0 : rowsView.getBottomVisibleItemIndex() : null === rowsView || void 0 === rowsView ? void 0 : rowsView.getTopVisibleItemIndex(); const row = dataController.getVisibleRows()[visibleItemIndex]; if (row && (!row.isEditing && "detail" === row.rowType || "detailAdaptive" === row.rowType)) { visibleItemIndex++ } const insertKey = dataController.getKeyByRowIndex(visibleItemIndex); if ((0, _type.isDefined)(insertKey)) { change.insertBeforeKey = insertKey } } } } _getInsertIndex() { let maxInsertIndex = 0; this.getChanges().forEach((editItem => { var _this$_getInternalDat5; const insertInfo = null === (_this$_getInternalDat5 = this._getInternalData(editItem.key)) || void 0 === _this$_getInternalDat5 ? void 0 : _this$_getInternalDat5.insertInfo; if ((0, _type.isDefined)(insertInfo) && editItem.type === _const.DATA_EDIT_DATA_INSERT_TYPE && insertInfo[_const.INSERT_INDEX] > maxInsertIndex) { maxInsertIndex = insertInfo[_const.INSERT_INDEX] } })); return maxInsertIndex + 1 } _getInsertAfterOrBeforeKey(insertChange) { return insertChange.insertAfterKey ?? insertChange.insertBeforeKey } _getPageIndexToInsertRow() { const newRowPosition = this._getNewRowPosition(); const dataController = this._dataController; const pageIndex = dataController.pageIndex(); const lastPageIndex = dataController.pageCount() - 1; if (newRowPosition === _const.FIRST_NEW_ROW_POSITION && 0 !== pageIndex) { return 0 } if (newRowPosition === _const.LAST_NEW_ROW_POSITION && pageIndex !== lastPageIndex) { return lastPageIndex } return -1 } addRow(parentKey) { const dataController = this._dataController; const store = dataController.store(); if (!store) { dataController.fireError("E1052", this.component.NAME); return (new _deferred.Deferred).reject() } return this._addRow(parentKey) } _addRow(parentKey) { const dataController = this._dataController; const store = dataController.store(); const key = store && store.key(); const param = { data: {} }; const oldEditRowIndex = this._getVisibleEditRowIndex(); const deferred = new _deferred.Deferred; this.refresh({ allowCancelEditing: true }); if (!this._allowRowAdding()) { (0, _deferred.when)(this._navigateToNewRow(oldEditRowIndex)).done(deferred.resolve).fail(deferred.reject); return deferred.promise() } if (!key) { param.data.__KEY__ = String(new _guid.default) }(0, _deferred.when)(this._initNewRow(param, parentKey)).done((() => { if (this._allowRowAdding()) { (0, _deferred.when)(this._addRowCore(param.data, parentKey, oldEditRowIndex)).done(deferred.resolve).fail(deferred.reject) } else { deferred.reject("cancel") } })).fail(deferred.reject); return deferred.promise() } _allowRowAdding(params) { const insertIndex = this._getInsertIndex(); if (insertIndex > 1) { return false } return true } _addRowCore(data, parentKey, initialOldEditRowIndex) { const change = { data: data, type: _const.DATA_EDIT_DATA_INSERT_TYPE }; const editRowIndex = this._getVisibleEditRowIndex(); const insertInfo = this._addInsertInfo(change, parentKey); const { key: key } = insertInfo; this._setEditRowKey(key, true); this._addChange(change); return this._navigateToNewRow(initialOldEditRowIndex, change, editRowIndex) } _navigateToNewRow(oldEditRowIndex, change, editRowIndex) { const d = new _deferred.Deferred; const dataController = this._dataController; editRowIndex = editRowIndex ?? -1; change = change ?? this.getChanges().filter((c => c.type === _const.DATA_EDIT_DATA_INSERT_TYPE))[0]; if (!change) { return d.reject("cancel").promise() } const pageIndexToInsertRow = this._getPageIndexToInsertRow(); let rowIndex = this._getLoadedRowIndex(dataController.items(), change, true); const navigateToRowByKey = key => { var _this$_focusControlle; (0, _deferred.when)(null === (_this$_focusControlle = this._focusController) || void 0 === _this$_focusControlle ? void 0 : _this$_focusControlle.navigateToRow(key)).done((() => { rowIndex = dataController.getRowIndexByKey(change.key); d.resolve() })) }; const insertAfterOrBeforeKey = this._getInsertAfterOrBeforeKey(change); if (pageIndexToInsertRow >= 0) { dataController.pageIndex(pageIndexToInsertRow).done((() => { navigateToRowByKey(change.key) })).fail(d.reject) } else if (rowIndex < 0 && (0, _type.isDefined)(insertAfterOrBeforeKey)) { navigateToRowByKey(insertAfterOrBeforeKey) } else { dataController.updateItems({ changeType: "update", rowIndices: [oldEditRowIndex, editRowIndex, rowIndex] }); rowIndex = dataController.getRowIndexByKey(change.key); if (rowIndex < 0) { navigateToRowByKey(change.key) } else { d.resolve() } } d.done((() => { var _this$_rowsView2; null === (_this$_rowsView2 = this._rowsView) || void 0 === _this$_rowsView2 || _this$_rowsView2.waitAsyncTemplates(true).done((() => { this._showAddedRow(rowIndex); this._afterInsertRow(change.key) })) })); return d.promise() } _showAddedRow(rowIndex) { this._focusFirstEditableCellInRow(rowIndex) } _beforeFocusElementInRow(rowIndex) {} _focusFirstEditableCellInRow(rowIndex) { var _this$_keyboardNaviga; const dataController = this._dataController; const key = dataController.getKeyByRowIndex(rowIndex); const $firstCell = this.getFirstEditableCellInRow(rowIndex); null === (_this$_keyboardNaviga = this._keyboardNavigationController) || void 0 === _this$_keyboardNaviga || _this$_keyboardNaviga.focus($firstCell); this.option("focusedRowKey", key); this._editCellInProgress = true; this._delayedInputFocus($firstCell, (() => { rowIndex = dataController.getRowIndexByKey(key); this._editCellInProgress = false; this._beforeFocusElementInRow(rowIndex) })) } _isEditingStart(options) { this.executeAction("onEditingStart", options); return options.cancel } _beforeUpdateItems(rowIndices, rowIndex) {} _getVisibleEditColumnIndex() { const editColumnName = this.option(_const.EDITING_EDITCOLUMNNAME_OPTION_NAME); if (!(0, _type.isDefined)(editColumnName)) { return -1 } return this._columnsController.getVisibleColumnIndex(editColumnName) } _setEditColumnNameByIndex(index, silent) { var _visibleColumns$index; const visibleColumns = this._columnsController.getVisibleColumns(); this._setEditColumnName(null === (_visibleColumns$index = visibleColumns[index]) || void 0 === _visibleColumns$index ? void 0 : _visibleColumns$index.name, silent) } _setEditColumnName(name, silent) { if (silent) { this._silentOption(_const.EDITING_EDITCOLUMNNAME_OPTION_NAME, name) } else { this.option(_const.EDITING_EDITCOLUMNNAME_OPTION_NAME, name) } } _resetEditColumnName() { this._setEditColumnName(null, true) } _getEditColumn() { const editColumnName = this.option(_const.EDITING_EDITCOLUMNNAME_OPTION_NAME); return this._getColumnByName(editColumnName) } _getColumnByName(name) { const visibleColumns = this._columnsController.getVisibleColumns(); let editColumn; (0, _type.isDefined)(name) && visibleColumns.some((column => { if (column.name === name) { editColumn = column; return true } })); return editColumn } _getVisibleEditRowIndex(columnName) { const dataController = this._dataController; const editRowKey = this.option(_const.EDITING_EDITROWKEY_OPTION_NAME); const rowIndex = dataController.getRowIndexByKey(editRowKey); if (-1 === rowIndex) { return rowIndex } return rowIndex + this._getEditRowIndexCorrection(columnName) } _getEditRowIndexCorrection(columnName) { const editColumn = columnName ? this._getColumnByName(columnName) : this._getEditColumn(); const isColumnHidden = "adaptiveHidden" === (null === editColumn || void 0 === editColumn ? void 0 : editColumn.visibleWidth); return isColumnHidden ? 1 : 0 } _resetEditRowKey() { this._refocusEditCell = false; this._setEditRowKey(null, true) } _resetEditIndices() { this._resetEditColumnName(); this._resetEditRowKey() } editRow(rowIndex) { const dataController = this._dataController; const items = dataController.items(); const item = items[rowIndex]; const params = { data: item && item.data, cancel: false }; const oldRowIndex = this._getVisibleEditRowIndex(); if (!item) { return } if (rowIndex === oldRowIndex) { return true } if (void 0 === item.key) { this._dataController.fireError("E1043"); return } if (!item.isNewRow) { params.key = item.key } if (this._isEditingStart(params)) { return } this.resetChanges(); this.init(); this._resetEditColumnName(); this._pageIndex = dataController.pageIndex(); this._addInternalData({ key: item.key, oldData: item.oldData ?? item.data }); this._setEditRowKey(item.key) } _editRowFromOptionChanged(rowIndex, oldRowIndex) { const rowIndices = [oldRowIndex, rowIndex]; this._beforeUpdateItems(rowIndices, rowIndex, oldRowIndex); this._editRowFromOptionChangedCore(rowIndices, rowIndex) } _editRowFromOptionChangedCore(rowIndices, rowIndex, preventRendering) { this._needFocusEditor = true; this._dataController.updateItems({ changeType: "update", rowIndices: rowIndices, cancel: preventRendering }) } _focusEditorIfNeed() {} _showEditPopup(rowIndex, repaintForm) {} _repaintEditPopup() {} _getEditPopupHiddenHandler() { return e => { if (this.isEditing()) { this.cancelEditData() } } } _getPopupEditFormTemplate(rowIndex) {} _getSaveButtonConfig() { const buttonConfig = { text: this.option("editing.texts.saveRowChanges"), onClick: this.saveEditData.bind(this) }; if ((0, _themes.isFluent)((0, _themes.current)())) { buttonConfig.stylingMode = "contained"; buttonConfig.type = "default" } return buttonConfig } _getCancelButtonConfig() { const buttonConfig = { text: this.option("editing.texts.cancelRowChanges"), onClick: this.cancelEditData.bind(this) }; if ((0, _themes.isFluent)((0, _themes.current)())) { buttonConfig.stylingMode = "outlined" } return buttonConfig } _removeInternalData(key) { this._internalState.delete((0, _common.getKeyHash)(key)) } _updateInsertAfterOrBeforeKeys(changes, index) { const removeChange = changes[index]; changes.forEach((change => { if (change.type === _const.DATA_EDIT_DATA_INSERT_TYPE) { const insertAfterOrBeforeKey = this._getInsertAfterOrBeforeKey(change); if ((0, _common.equalByValue)(insertAfterOrBeforeKey, removeChange.key)) { change[(0, _type.isDefined)(change.insertAfterKey) ? "insertAfterKey" : "insertBeforeKey"] = this._getInsertAfterOrBeforeKey(removeChange) } } })) } _removeChange(index) { if (index >= 0) { const changes = [...this.getChanges()]; const { key: key } = changes[index]; this._removeInternalData(key); this._updateInsertAfterOrBeforeKeys(changes, index); changes.splice(index, 1); this._silentOption(_const.EDITING_CHANGES_OPTION_NAME, changes); if ((0, _common.equalByValue)(this.option(_const.EDITING_EDITROWKEY_OPTION_NAME), key)) { this._resetEditIndices() } } } executeOperation(deferred, func) { this._lastOperation && this._lastOperation.reject(); this._lastOperation = deferred; this.waitForDeferredOperations().done((() => { if ("rejected" === deferred.state()) { return } func(); this._lastOperation = null })).fail((() => { deferred.reject(); this._lastOperation = null })) } waitForDeferredOperations() { return (0, _deferred.when)(...this._deferreds) } _processCanceledEditingCell() {} _repaintEditCell(column, oldColumn, oldEditRowIndex) { if (!column || !column.showEditorAlways || oldColumn && !oldColumn.showEditorAlways) { this._editCellInProgress = true; this._needFocusEditor = true; this._editorFactoryController.loseFocus(); this._dataController.updateItems({ changeType: "update", rowIndices: [oldEditRowIndex, this._getVisibleEditRowIndex()] }) } else if (column !== oldColumn) { this._needFocusEditor = true; this._dataController.updateItems({ changeType: "update", rowIndices: [] }) } } _delayedInputFocus($cell, beforeFocusCallback, callBeforeFocusCallbackAlways) { const inputFocus = () => { if (beforeFocusCallback) { beforeFocusCallback() } if ($cell) { const $focusableElement = $cell.find(_const.FOCUSABLE_ELEMENT_SELECTOR).first(); _m_utils.default.focusAndSelectElement(this, $focusableElement) } this._beforeFocusCallback = null }; if (_devices.default.real().ios || _devices.default.real().android) { inputFocus() } else { if (this._beforeFocusCallback) { this._beforeFocusCallback() } clearTimeout(this._inputFocusTimeoutID); if (callBeforeFocusCallbackAlways) { this._beforeFocusCallback = beforeFocusCallback } this._inputFocusTimeoutID = setTimeout(inputFocus) } } _focusEditingCell(beforeFocusCallback, $editCell, callBeforeFocusCallbackAlways) { const editColumnIndex = this._getVisibleEditColumnIndex(); $editCell = $editCell || this._rowsView && this._rowsView._getCellElement(this._getVisibleEditRowIndex(), editColumnIndex); if ($editCell) { this._delayedInputFocus($editCell, beforeFocusCallback, callBeforeFocusCallbackAlways) } } deleteRow(rowIndex) { this._checkAndDeleteRow(rowIndex) } _checkAndDeleteRow(rowIndex) { const editingOptions = this.option("editing"); const editingTexts = null === editingOptions || void 0 === editingOptions ? void 0 : editingOptions.texts; const confirmDelete = null === editingOptions || void 0 === editingOptions ? void 0 : editingOptions.confirmDelete; const confirmDeleteMessage = null === editingTexts || void 0 === editingTexts ? void 0 : editingTexts.confirmDeleteMessage; const item = this._dataController.items()[rowIndex]; const allowDeleting = !this.isEditing() || item.isNewRow; if (item && allowDeleting) { if (!confirmDelete || !confirmDeleteMessage) { this._deleteRowCore(rowIndex) } else { const confirmDeleteTitle = editingTexts && editingTexts.confirmDeleteTitle; const showDialogTitle = (0, _type.isDefined)(confirmDeleteTitle) && confirmDeleteTitle.length > 0; (0, _dialog.confirm)(confirmDeleteMessage, confirmDeleteTitle, showDialogTitle).done((confirmResult => { if (confirmResult) { this._deleteRowCore(rowIndex) } })) } } } _deleteRowCore(rowIndex) { const dataController = this._dataController; const item = dataController.items()[rowIndex]; const key = item && item.key; const oldEditRowIndex = this._getVisibleEditRowIndex(); this.refresh(); const changes = this.getChanges(); const editIndex = _m_utils.default.getIndexByKey(key, changes); if (editIndex >= 0) { if (changes[editIndex].type === _const.DATA_EDIT_DATA_INSERT_TYPE) { this._removeChange(editIndex) } else { this._addChange({ key: key, type: _const.DATA_EDIT_DATA_REMOVE_TYPE }) } } else { this._addChange({ key: key, oldData: item.data, type: _const.DATA_EDIT_DATA_REMOVE_TYPE }) } return this._afterDeleteRow(rowIndex, oldEditRowIndex) } _afterDeleteRow(rowIndex, oldEditRowIndex) { return this.saveEditData() } undeleteRow(rowIndex) { const dataController = this._dataController; const item = dataController.items()[rowIndex]; const oldEditRowIndex = this._getVisibleEditRowIndex(); const key = item && item.key; const changes = this.getChanges(); if (item) { const editIndex = _m_utils.default.getIndexByKey(key, changes); if (editIndex >= 0) { const { data: data } = changes[editIndex]; if ((0, _type.isEmptyObject)(data)) { this._removeChange(editIndex) } else { this._addChange({ key: key, type: _const.DATA_EDIT_DATA_UPDATE_TYPE }) } dataController.updateItems({ changeType: "update", rowIndices: [oldEditRowIndex, rowIndex] }) } } } _fireOnSaving() { const onSavingParams = { cancel: false, promise: null, changes: [...this.getChanges()] }; this.executeAction("onSaving", onSavingParams); const d = new _deferred.Deferred; (0, _deferred.when)((0, _deferred.fromPromise)(onSavingParams.promise)).done((() => { d.resolve(onSavingParams) })).fail((arg => { (0, _m_editing_utils.createFailureHandler)(d); this._fireDataErrorOccurred(arg); d.resolve({ cancel: true }) })); return d } _executeEditingAction(actionName, params, func) { if (this.component._disposed) { return null } const deferred = new _deferred.Deferred; this.executeAction(actionName, params); (0, _deferred.when)((0, _deferred.fromPromise)(params.cancel)).done((cancel => { if (cancel) { setTimeout((() => { deferred.resolve("cancel") })) } else { func(params).done(deferred.resolve).fail((0, _m_editing_utils.createFailureHandler)(deferred)) } })).fail((0, _m_editing_utils.createFailureHandler)(deferred)); return deferred } _processChanges(deferreds, results, dataChanges, changes) { const store = this._dataController.store(); (0, _iterator.each)(changes, ((index, change) => { const oldData = this._getOldData(change.key); const { data: data, type: type } = change; const changeCopy = _extends({}, change); let deferred; let params; if (this._beforeSaveEditData(change, index)) { return } switch (type) { case _const.DATA_EDIT_DATA_REMOVE_TYPE: params = { data: oldData, key: change.key, cancel: false }; deferred = this._executeEditingAction("onRowRemoving", params, (() => store.remove(change.key).done((key => { dataChanges.push({ type: "remove", key: key }) })))); break; case _const.DATA_EDIT_DATA_INSERT_TYPE: params = { data: data, cancel: false }; deferred = this._executeEditingAction("onRowInserting", params, (() => store.insert(params.data).done(((data, key) => { if ((0, _type.isDefined)(key)) { changeCopy.key = key } if (data && (0, _type.isObject)(data) && data !== params.data) { changeCopy.data = data } dataChanges.push({ type: "insert", data: data, index: 0 }) })))); break; case _const.DATA_EDIT_DATA_UPDATE_TYPE: params = { newData: data, oldData: oldData, key: change.key, cancel: false }; deferred = this._executeEditingAction("onRowUpdating", params, (() => store.update(change.key, params.newData).done(((data, key) => { if (data && (0, _type.isObject)(data) && data !== params.newData) { changeCopy.data = data } dataChanges.push({ type: "update", key: key, data: data }) })))) } changes[index] = changeCopy; if (deferred) { const doneDeferred = new _deferred.Deferred; deferred.always((data => { results.push({ key: change.key, result: data }) })).always(doneDeferred.resolve); deferreds.push(doneDeferred.promise()) } })) } _processRemoveIfError(changes, editIndex) { const change = changes[editIndex]; if ((null === change || void 0 === change ? void 0 : change.type) === _const.DATA_EDIT_DATA_REMOVE_TYPE) { if (editIndex >= 0) { changes.splice(editIndex, 1) } } return true } _processRemove(changes, editIndex, cancel) { const change = changes[editIndex]; if (!cancel || !change || change.type === _const.DATA_EDIT_DATA_REMOVE_TYPE) { return this._processRemoveCore(changes, editIndex, !cancel || !change) } } _processRemoveCore(changes, editIndex, processIfBatch) { if (editIndex >= 0) { changes.splice(editIndex, 1) } return true } _processSaveEditDataResult(results) { let hasSavedData = false; const originalChanges = this.getChanges(); const changes = [...originalChanges]; const changesLength = changes.length; for (let i = 0; i < results.length; i++) { const arg = results[i].result; const cancel = "cancel" === arg; const editIndex = _m_utils.default.getIndexByKey(results[i].key, changes); const change = changes[editIndex]; const isError = arg && arg instanceof Error; if (isError) { if (change) { this._addInternalData({ key: change.key, error: arg }) } this._fireDataErrorOccurred(arg); if (this._processRemoveIfError(changes, editIndex)) { break } } else if (this._processRemove(changes, editIndex, cancel)) { hasSavedData = !cancel; const removedChangeIndex = _m_utils.default.getIndexByKey(results[i].key, originalChanges); this._updateInsertAfterOrBeforeKeys(originalChanges, removedChangeIndex) } } if (changes.length < changesLength) { this._silentOption(_const.EDITING_CHANGES_OPTION_NAME, changes) } return hasSavedData } _fireSaveEditDataEvents(changes) { (0, _iterator.each)(changes, ((_, _ref) => { let { data: data, key: key, type: type } = _ref; const internalData = this._addInternalData({ key: key }); const params = { key: key, data: data }; if (internalData.error) { params.error = internalData.error } switch (type) { case _const.DATA_EDIT_DATA_REMOVE_TYPE: this.executeAction("onRowRemoved", (0, _extend.extend)({}, params, { data: internalData.oldData })); break; case _const.DATA_EDIT_DATA_INSERT_TYPE: this.executeAction("onRowInserted", params); break; case _const.DATA_EDIT_DATA_UPDATE_TYPE: this.executeAction("onRowUpdated", params) } })); this.executeAction("onSaved", { changes: changes }) } saveEditData() { const deferred = new _deferred.Deferred; this.waitForDeferredOperations().done((() => { if (this.isSaving()) { this._resolveAfterSave(deferred); return }(0, _deferred.when)(this._beforeSaveEditData()).done((cancel => { if (cancel) { this._resolveAfterSave(deferred, { cancel: cancel }); return } this._saving = true; this._saveEditDataInner().always((() => { this._saving = false; if (this._refocusEditCell) { this._focusEditingCell() } })).done(deferred.resolve).fail(deferred.reject) })).fail(deferred.reject) })).fail(deferred.reject); return deferred.promise() } _resolveAfterSave(deferred) { let { cancel: cancel, error: error } = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {}; (0, _deferred.when)(this._afterSaveEditData(cancel)).done((() => { deferred.resolve(error) })).fail(deferred.reject) } _saveEditDataInner() { const result = new _deferred.Deferred; const results = []; const deferreds = []; const dataChanges = []; const dataSource = this._dataController.dataSource(); (0, _deferred.when)(this._fireOnSaving()).done((_ref2 => { let { cancel: cancel, changes: changes } = _ref2; if (cancel) { return result.resolve().promise() } this._processChanges(deferreds, results, dataChanges, changes); if (deferreds.length) { this._refocusEditCell = true; null === dataSource || void 0 === dataSource || dataSource.beginLoading(); (0, _deferred.when)(...deferreds).done((() => { if (this._processSaveEditDataResult(results)) { this._endSaving(dataChanges, changes, result) } else { null === dataSource || void 0 === dataSource || dataSource.endLoading(); result.resolve() } })).fail((error => { null === dataSource || void 0 === dataSource || dataSource.endLoading(); result.resolve(error) })); return result.always((() => { this._refocusEditCell = true })).promise() } this._cancelSaving(result) })).fail(result.reject); return result.promise() } _beforeEndSaving(changes) { this._resetEditIndices() } _endSaving(dataChanges, changes, deferred) { const dataSource = this._dataController.dataSource(); this._beforeEndSaving(changes); null === dataSource || void 0 === dataSource || dataSource.endLoading(); this._refreshDataAfterSave(dataChanges, changes, deferred) } _cancelSaving(result) { this.executeAction("onSaved", { changes: [] }); this._resolveAfterSave(result) } _refreshDataAfterSave(dataChanges, changes, deferred) { const dataController = this._dataController; const refreshMode = this.option("editing.refreshMode"); const isFullRefresh = "reshape" !== refreshMode && "repaint" !== refreshMode; if (!isFullRefresh) { dataController.push(dataChanges) }(0, _deferred.when)(dataController.refresh({ selection: isFullRefresh, reload: isFullRefresh, load: "reshape" === refreshMode, changesOnly: this.option("repaintChangesOnly") })).always((() => { this._fireSaveEditDataEvents(changes) })).done((() => { this._resolveAfterSave(deferred) })).fail((error => { this._resolveAfterSave(deferred, { error: error }) })) } isSaving() { return this._saving } _updateEditColumn() { const isEditColumnVisible = this._isEditColumnVisible(); const useIcons = this.option("editing.useIcons"); const cssClass = _const.COMMAND_EDIT_CLASS + (useIcons ? ` ${_const.COMMAND_EDIT_WITH_ICONS_CLASS}` : ""); this._columnsController.addCommandColumn({ type: "buttons", command: "edit", visible: isEditColumnVisible, cssClass: cssClass, width: "auto", alignment: "center", cellTemplate: this._getEditCommandCellTemplate(), fixedPosition: "right" }); this._columnsController.columnOption("command:edit", { visible: isEditColumnVisible, cssClass: cssClass }) } _isEditColumnVisible() { const editingOptions = this.option("editing"); return editingOptions.allowDeleting } _isEditButtonDisabled() { const hasChanges = this.hasChanges(); const isEditRowDefined = (0, _type.isDefined)(this.option("editing.editRowKey")); return !(isEditRowDefined || hasChanges) } _updateEditButtons() { const isButtonDisabled = this._isEditButtonDisabled(); if (this._headerPanelView) { this._headerPanelView.setToolbarItemDisabled("saveButton", isButtonDisabled); this._headerPanelView.setToolbarItemDisabled("revertButton", isButtonDisabled) } } _applyModified($element, options) { $element && $element.addClass(_const.CELL_MODIFIED) } _beforeCloseEditCellInBatchMode(rowIndices) {} cancelEditData() { const changes = this.getChanges(); const params = { cancel: false, changes: changes }; this.executeAction("onEditCanceling", params); if (!params.cancel) { this._cancelEditDataCore(); this.executeAction("onEditCanceled", { changes: changes }) } } _cancelEditDataCore() { const rowIndex = this._getVisibleEditRowIndex(); this._beforeCancelEditData(); this.init(); this.resetChanges(); this._resetEditColumnName(); this._resetEditRowKey(); this._afterCancelEditData(rowIndex) } _afterCancelEditData(rowIndex) { const dataController = this._dataController; dataController.updateItems({ repaintChangesOnly: this.option("repaintChangesOnly") }) } _hideEditPopup() {} hasEditData() { return this.hasChanges() } update(changeType) { const dataController = this._dataController; if (dataController && this._pageIndex !== dataController.pageIndex()) { if ("refresh" === changeType) { this.refresh({ isPageChanged: true }) } this._pageIndex = dataController.pageIndex() } this._updateEditButtons() } _getRowIndicesForCascadeUpdating(row, skipCurrentRow) { return skipCurrentRow ? [] : [row.rowIndex] } addDeferred(deferred) { if (!this._deferreds.includes(deferred)) { this._deferreds.push(deferred); deferred.always((() => { const index = this._deferreds.indexOf(deferred); if (index >= 0) { this._deferreds.splice(index, 1) } })) } } _prepareChange(options, value, text) { var _options$row; const newData = {}; const oldData = null === (_options$row = options.row) || void 0 === _options$row ? void 0 : _options$row.data; const rowKey = options.key; const deferred = new _deferred.Deferred; if (void 0 !== rowKey) { options.value = value; const setCellValueResult = (0, _deferred.fromPromise)(options.column.setCellValue(newData, value, (0, _extend.extend)(true, {}, oldData), text)); setCellValueResult.done((() => { deferred.resolve({ data: newData, key: rowKey, oldData: oldData, type: _const.DATA_EDIT_DATA_UPDATE_TYPE }) })).fail((0, _m_editing_utils.createFailureHandler)(deferred)).fail((arg => this._fireDataErrorOccurred(arg))); if ((0, _type.isDefined)(text) && options.column.displayValueMap) { options.column.displayValueMap[value] = text } this._updateRowValues(options); this.addDeferred(deferred) } return deferred } _updateRowValues(options) { if (options.values) { const dataController = this._dataController; const rowIndex = dataController.getRowIndexByKey(options.key); const row = dataController.getVisibleRows()[rowIndex]; if (row) { options.row.values = row.values; options.values = row.values } options.values[options.columnIndex] = options.value } } updateFieldValue(options, value, text, forceUpdateRow) { const rowKey = options.key; const deferred = new _deferred.Deferred; if (void 0 === rowKey) { this._dataController.fireError("E1043") } if (options.column.setCellValue) { this._prepareChange(options, value, text).done((params => { (0, _deferred.when)(this._applyChange(options, params, forceUpdateRow)).always((() => { deferred.resolve() })) })) } else { deferred.resolve() } return deferred.promise() } _focusPreviousEditingCellIfNeed(options) { if (this.hasEditData() && !this.isEditCell(options.rowIndex, options.columnIndex)) { this._focusEditingCell(); this._updateEditRow(options.row, true); return true } } _needUpdateRow(column) { const visibleColumns = this._columnsController.getVisibleColumns(); if (!column) { column = this._getEditColumn() } const isCustomSetCellValue = column && column.setCellValue !== column.defaultSetCellValue; const isCustomCalculateCellValue = visibleColumns.some((visibleColumn => visibleColumn.calculateCellValue !== visibleColumn.defaultCalculateCellValue)); return isCustomSetCellValue || isCustomCalculateCellValue } _applyChange(options, params, forceUpdateRow) { const changeOptions = _extends({}, options, { forceUpdateRow: forceUpdateRow }); this._addChange(params, changeOptions); this._updateEditButtons(); return this._applyChangeCore(options, changeOptions.forceUpdateRow) } _applyChangeCore(options, forceUpdateRow) { const isCustomSetCellValue = options.column.setCellValue !== options.column.defaultSetCellValue; const { row: row } = options; if (row) { if (forceUpdateRow || isCustomSetCellValue) { this._updateEditRow(row, forceUpdateRow, isCustomSetCellValue) } else if (row.update) { row.update() } } } _updateEditRowCore(row, skipCurrentRow, isCustomSetCellValue) { this._dataController.updateItems({ changeType: "update", rowIndices: this._getRowIndicesForCascadeUpdating(row, skipCurrentRow) }) } _updateEditRow(row, forceUpdateRow, isCustomSetCellValue) { if (forceUpdateRow) { this._updateRowImmediately(row, forceUpdateRow, isCustomSetCellValue) } else { this._updateRowWithDelay(row, isCustomSetCellValue) } } _updateRowImmediately(row, forceUpdateRow, isCustomSetCellValue) { this._updateEditRowCore(row, !forceUpdateRow, isCustomSetCellValue); this._validateEditFormAfterUpdate(row, isCustomSetCellValue); if (!forceUpdateRow) { this._focusEditingCell() } } _updateRowWithDelay(row, isCustomSetCellValue) { const deferred = new _deferred.Deferred; this.addDeferred(deferred); setTimeout((() => { var _this$_editForm; const elementContainer = (null === (_this$_editForm = this._editForm) || void 0 === _this$_editForm ? void 0 : _this$_editForm.element()) || this.component.$element().get(0); const $focusedElement = (0, _renderer.default)(_dom_adapter.default.getActiveElement(elementContainer)); const columnIndex = this._rowsView.getCellIndex($focusedElement, row.rowIndex); let focusedElement = $focusedElement.get(0); const selectionRange = _m_utils.default.getSelectionRange(focusedElement); this._updateEditRowCore(row, false, isCustomSetCellValue); this._validateEditFormAfterUpdate(row, isCustomSetCellValue); if (columnIndex >= 0) { const $focusedItem = this._rowsView._getCellElement(row.rowIndex, columnIndex); this._delayedInputFocus($focusedItem, (() => { setTimeout((() => { var _this$component$$elem; focusedElement = _dom_adapter.default.getActiveElement(null === (_this$component$$elem = this.component.$element()) || void 0 === _this$component$$elem ? void 0 : _this$component$$elem.get(0)); if (selectionRange.selectionStart >= 0) { _m_utils.default.setSelectionRange(focusedElement, selectionRange) } })) })) } deferred.resolve() })) } _validateEditFormAfterUpdate() {} _addChange(changeParams, options) { var _this$getChanges; const row = null === options || void 0 === options ? void 0 : options.row; const changes = [...this.getChanges()]; let index = _m_utils.default.getIndexByKey(changeParams.key, changes); if (index < 0) { index = changes.length; this._addInternalData({ key: changeParams.key, oldData: changeParams.oldData }); delete changeParams.oldData; changes.push(changeParams) } const change = _extends({}, changes[index]); if (change) { if (changeParams.data) { change.data = (0, _array_utils.createObjectWithChanges)(change.data, changeParams.data) } if ((!change.type || !changeParams.data) && changeParams.type) { change.type = changeParams.type } if (row) { row.oldData = this._getOldData(row.key); row.data = (0, _array_utils.createObjectWithChanges)(row.data, changeParams.data) } } changes[index] = change; this._silentOption(_const.EDITING_CHANGES_OPTION_NAME, changes); if (options && change !== (null === (_this$getChanges = this.getChanges()) || void 0 === _this$getChanges ? void 0 : _this$getChanges[index])) { options.forceUpdateRow = true } return change } _getFormEditItemTemplate(cellOptions, column) { return column.editCellTemplate || this._getDefaultEditorTemplate() } getColumnTemplate(options) { const { column: column } = options; const rowIndex = options.row && options.row.rowIndex; let template; const isRowMode = this.isRowBasedEditMode(); const isRowEditing = this.isEditRow(rowIndex); const isCellEditing = this.isEditCell(rowIndex, options.columnIndex); let editingStartOptions; if ((column.showEditorAlways || column.setCellValue && (isRowEditing && column.allowEditing || isCellEditing)) && ("data" === options.rowType || "detailAdaptive" === options.rowType) && !column.command) { const allowUpdating = this.allowUpdating(options); if (((allowUpdating || isRowEditing) && column.allowEditing || isCellEditing) && (isRowEditing || !isRowMode)) { if (column.showEditorAlways && !isRowMode) { editingStartOptions = { cancel: false, key: options.row.isNewRow ? void 0 : options.row.key, data: options.row.data, column: column }; this._isEditingStart(editingStartOptions) } if (!editingStartOptions || !editingStartOptions.cancel) { options.setValue = (value, text) => { this.updateFieldValue(options, value, text) } } } template = column.editCellTemplate || this._getDefaultEditorTemplate() } else if ("detail" === column.command && "detail" === options.rowType && isRowEditing) { template = null === this || void 0 === this ? void 0 : this.getEditFormTemplate(options) } return template } _createButton($container, button, options, change) { let icon = _const.EDIT_ICON_CLASS[button.name]; const useIcons = this.option("editing.useIcons"); const useLegacyColumnButtonTemplate = this.option("useLegacyColumnButtonTemplate"); let $button = (0, _renderer.default)("").attr("href", "#").addClass(_const.LINK_CLASS).addClass(button.cssClass); if (button.template && useLegacyColumnButtonTemplate) { this._rowsView.renderTemplate($container, button.template, options, true) } else { if (button.template) { $button = (0, _renderer.default)("").addClass(button.cssClass) } else if (useIcons && icon || button.icon) { icon = button.icon || icon; const iconType = iconUtils.getImageSourceType(icon); if ("image" === iconType || "svg" === iconType) { $button = iconUtils.getImageContainer(icon).addClass(button.cssClass) } else { $button.addClass(`dx-icon${"dxIcon"===iconType?"-":" "}${icon}`).attr("title", button.text) } $button.addClass(_const.LINK_ICON_CLASS); $container.addClass(_const.COMMAND_EDIT_WITH_ICONS_CLASS); const localizationName = this.getButtonLocalizationNames()[button.name]; localizationName && $button.attr("aria-label", _message.default.format(localizationName)) } else { $button.text(button.text) } if ((0, _type.isDefined)(button.hint)) { $button.attr("title", button.hint) } if (this._isButtonDisabled(button, options)) { $button.addClass("dx-state-disabled") } else if (!button.template || button.onClick) { _events_engine.default.on($button, (0, _index.addNamespace)("click", _const.EDITING_NAMESPACE), this.createAction((e => { var _button$onClick; null === (_button$onClick = button.onClick) || void 0 === _button$onClick || _button$onClick.call(button, (0, _extend.extend)({}, e, { row: options.row, column: options.column })); e.event.preventDefault(); e.event.stopPropagation() }))) } $container.append($button); if (button.template) { options.renderAsync = false; this._rowsView.renderTemplate($button, button.template, options, true, change) } } } getButtonLocalizationNames() { return { edit: "dxDataGrid-editingEditRow", save: "dxDataGrid-editingSaveRowChanges", delete: "dxDataGrid-editingDeleteRow", undelete: "dxDataGrid-editingUndeleteRow", cancel: "dxDataGrid-editingCancelRowChanges" } } prepareButtonItem(headerPanel, name, methodName, sortIndex) { const editingTexts = this.option("editing.texts") ?? {}; const titleButtonTextByClassNames = { revert: editingTexts.cancelAllChanges, save: editingTexts.saveAllChanges, addRow: editingTexts.addRow }; const className = { revert: "cancel", save: "save", addRow: "addrow" } [name]; const hintText = titleButtonTextByClassNames[name]; const isButtonDisabled = ("save" === className || "cancel" === className) && this._isEditButtonDisabled(); return { widget: "dxButton", options: { onInitialized: e => { (0, _renderer.default)(e.element).addClass(headerPanel._getToolbarButtonClass(`${_const.EDIT_BUTTON_CLASS} ${this.addWidgetPrefix(className)}-button`)) }, icon: `edit-button-${className}`, disabled: isButtonDisabled, onClick: () => { setTimeout((() => { this[methodName]() })) }, text: hintText, hint: hintText }, showText: "inMenu", name: `${name}Button`, location: "after", locateInMenu: "auto", sortIndex: sortIndex } } prepareEditButtons(headerPanel) { const editingOptions = this.option("editing") ?? {}; const buttonItems = []; if (editingOptions.allowAdding) { buttonItems.push(this.prepareButtonItem(headerPanel, "addRow", "addRow", 20)) } return buttonItems } highlightDataCell($cell, params) { this.shouldHighlightCell(params) && $cell.addClass(_const.CELL_MODIFIED) } _afterInsertRow(key) {} _beforeSaveEditData(change) { if (change && !(0, _type.isDefined)(change.key) && (0, _type.isDefined)(change.type)) { return true } } _afterSaveEditData() {} _beforeCancelEditData() {} _allowEditAction(actionName, options) { let allowEditAction = this.option(`editing.${actionName}`); if ((0, _type.isFunction)(allowEditAction)) { allowEditAction = allowEditAction({ component: this.component, row: options.row }) } return allowEditAction } allowUpdating(options, eventName) { const startEditAction = this.option("editing.startEditAction") ?? _const.DEFAULT_START_EDIT_ACTION; const needCallback = arguments.length > 1 ? startEditAction === eventName || "down" === eventName : true; return needCallback && this._allowEditAction("allowUpdating", options) } allowDeleting(options) { return this._allowEditAction("allowDeleting", options) } isCellModified(parameters) { var _parameters$row, _parameters$row2; const { columnIndex: columnIndex } = parameters; let modifiedValue = null === parameters || void 0 === parameters || null === (_parameters$row = parameters.row) || void 0 === _parameters$row || null === (_parameters$row = _parameters$row.modifiedValues) || void 0 === _parameters$row ? void 0 : _parameters$row[columnIndex]; if (null !== parameters && void 0 !== parameters && null !== (_parameters$row2 = parameters.row) && void 0 !== _parameters$row2 && _parameters$row2.isNewRow) { modifiedValue = parameters.value } return void 0 !== modifiedValue } isNewRowInEditMode() { const visibleEditRowIndex = this._getVisibleEditRowIndex(); const rows = this._dataController.items(); return visibleEditRowIndex >= 0 ? rows[visibleEditRowIndex].isNewRow : false } _isRowDeleteAllowed() {} shouldHighlightCell(parameters) { const cellModified = this.isCellModified(parameters); return cellModified && parameters.column.setCellValue && (this.getEditMode() !== _const.EDIT_MODE_ROW || !parameters.row.isEditing) } } const dataControllerEditingExtenderMixin = Base => class extends Base { reload(full, repaintChangesOnly) { !repaintChangesOnly && this._editingController.refresh(); return super.reload.apply(this, arguments) } repaintRows() { if (this._editingController.isSaving()) { return } return super.repaintRows.apply(this, arguments) } _updateEditRow(items) { const editRowKey = this.option(_const.EDITING_EDITROWKEY_OPTION_NAME); const editRowIndex = _m_utils.default.getIndexByKey(editRowKey, items); const editItem = items[editRowIndex]; if (editItem) { var _this$_updateEditItem; editItem.isEditing = true; null === (_this$_updateEditItem = this._updateEditItem) || void 0 === _this$_updateEditItem || _this$_updateEditItem.call(this, editItem) } } _updateItemsCore(change) { super._updateItemsCore(change); this._updateEditRow(this.items(true)) } _applyChangeUpdate(change) { this._updateEditRow(change.items); super._applyChangeUpdate(change) } _applyChangesOnly(change) { this._updateEditRow(change.items); super._applyChangesOnly(change) } _processItems(items, change) { items = this._editingController.processItems(items, change); return super._processItems(items, change) } _processDataItem(dataItem, options) { this._editingController.processDataItem(dataItem, options, this.generateDataValues); return super._processDataItem(dataItem, options) } _processItem(item, options) { item = super._processItem(item, options); if (item.isNewRow) { options.dataIndex--; delete item.dataIndex } return item } _getChangedColumnIndices(oldItem, newItem, rowIndex, isLiveUpdate) { if (oldItem.isNewRow !== newItem.isNewRow || oldItem.removed !== newItem.removed) { return } return super._getChangedColumnIndices.apply(this, arguments) } _isCellChanged(oldRow, newRow, visibleRowIndex, columnIndex, isLiveUpdate) { const cell = oldRow.cells && oldRow.cells[columnIndex]; const isEditing = this._editingController && this._editingController.isEditCell(visibleRowIndex, columnIndex); if (isLiveUpdate && isEditing) { return false } if (cell && cell.column && !cell.column.showEditorAlways && cell.isEditing !== isEditing) { return true } return super._isCellChanged.apply(this, arguments) } needToRefreshOnDataSourceChange(args) { const isParasiteChange = Array.isArray(args.value) && args.value === args.previousValue && this._editingController.isSaving(); return !isParasiteChange } _handleDataSourceChange(args) { const result = super._handleDataSourceChange(args); const changes = this.option("editing.changes"); const dataSource = args.value; if (Array.isArray(dataSource) && changes.length) { const dataSourceKeys = dataSource.map((item => this.keyOf(item))); const newChanges = changes.filter((change => "insert" === change.type || dataSourceKeys.some((key => (0, _common.equalByValue)(change.key, key))))); if (newChanges.length !== changes.length) { this.option("editing.changes", newChanges) } const editRowKey = this.option("editing.editRowKey"); const isEditNewItem = newChanges.some((change => "insert" === change.type && (0, _common.equalByValue)(editRowKey, change.key))); if (!isEditNewItem && dataSourceKeys.every((key => !(0, _common.equalByValue)(editRowKey, key)))) { this.option("editing.editRowKey", null) } } return result } }; exports.dataControllerEditingExtenderMixin = dataControllerEditingExtenderMixin; exports.editingModule = { defaultOptions: () => ({ editing: { mode: "row", refreshMode: "full", newRowPosition: _const.VIEWPORT_TOP_NEW_ROW_POSITION, allowAdding: false, allowUpdating: false, allowDeleting: false, useIcons: false, selectTextOnEditStart: false, confirmDelete: true, texts: { editRow: _message.default.format("dxDataGrid-editingEditRow"), saveAllChanges: _message.default.format("dxDataGrid-editingSaveAllChanges"), saveRowChanges: _message.default.format("dxDataGrid-editingSaveRowChanges"), cancelAllChanges: _message.default.format("dxDataGrid-editingCancelAllChanges"), cancelRowChanges: _message.default.format("dxDataGrid-editingCancelRowChanges"), addRow: _message.default.format("dxDataGrid-editingAddRow"), deleteRow: _message.default.format("dxDataGrid-editingDeleteRow"), undeleteRow: _message.default.format("dxDataGrid-editingUndeleteRow"), confirmDeleteMessage: _message.default.format("dxDataGrid-editingConfirmDeleteMessage"), confirmDeleteTitle: "" }, form: { colCount: 2 }, popup: {}, startEditAction: "click", editRowKey: null, editColumnName: null, changes: [] }, useLegacyColumnButtonTemplate: false }), controllers: { editing: EditingControllerImpl }, extenders: { controllers: { data: dataControllerEditingExtenderMixin }, views: { rowsView: Base => class extends Base { getCellIndex($cell, rowIndex) { if (!$cell.is("td") && rowIndex >= 0) { const $cellElements = this.getCellElements(rowIndex); let cellIndex = -1; (0, _iterator.each)($cellElements, ((index, cellElement) => { if ((0, _renderer.default)(cellElement).find($cell).length) { cellIndex = index } })); return cellIndex } return super.getCellIndex.apply(this, arguments) } publicMethods() { return super.publicMethods().concat(["cellValue"]) } _getCellTemplate(options) { const template = this._editingController.getColumnTemplate(options); return template || super._getCellTemplate(options) } _createRow(row) { const $row = super._createRow.apply(this, arguments); if (row) { const isRowRemoved = !!row.removed; const isRowInserted = !!row.isNewRow; const isRowModified = !!row.modified; isRowInserted && $row.addClass(_const.ROW_INSERTED); isRowModified && $row.addClass(_const.ROW_MODIFIED); if (isRowInserted || isRowRemoved) { $row.removeClass(_const.ROW_SELECTED) } } return $row } _getColumnIndexByElement($element) { let $tableElement = $element.closest("table"); const $tableElements = this.getTableElements(); while ($tableElement.length && !$tableElements.filter($tableElement).length) { $element = $tableElement.closest("td"); $tableElement = $element.closest("table") } return this._getColumnIndexByElementCore($element) } _getColumnIndexByElementCore($element) { const $targetElement = $element.closest(`.${_const.ROW_CLASS}> td:not(.dx-master-detail-cell)`); return this.getCellIndex($targetElement) } _editCellByClick(e, eventName) { const editingController = this._editingController; const $targetElement = (0, _renderer.default)(e.event.target); const columnIndex = this._getColumnIndexByElement($targetElement); const row = this._dataController.items()[e.rowIndex]; const allowUpdating = editingController.allowUpdating({ row: row }, eventName) || row && row.isNewRow; const column = this._columnsController.getVisibleColumns()[columnIndex]; const isEditedCell = editingController.isEditCell(e.rowIndex, columnIndex); const allowEditing = allowUpdating && column && (column.allowEditing || isEditedCell); const startEditAction = this.option("editing.startEditAction") || "click"; const isShowEditorAlways = column && column.showEditorAlways; if (isEditedCell) { return true } if ("down" === eventName) { if (_devices.default.real().ios || _devices.default.real().android) { _m_dom.default.resetActiveElement() } return isShowEditorAlways && allowEditing && editingController.editCell(e.rowIndex, columnIndex) } if ("click" === eventName && "dblClick" === startEditAction && this._pointerDownTarget === $targetElement.get(0)) { const isError = false; const withoutSaveEditData = null === row || void 0 === row ? void 0 : row.isNewRow; editingController.closeEditCell(isError, withoutSaveEditData) } if (allowEditing && eventName === startEditAction) { return editingController.editCell(e.rowIndex, columnIndex) || editingController.isEditRow(e.rowIndex) } } _rowPointerDown(e) { this._pointerDownTarget = e.event.target; this._pointerDownTimeout = setTimeout((() => { this._editCellByClick(e, "down") })) } _rowClickTreeListHack(e) { super._rowClick.apply(this, arguments) } _rowClick(e) { const isEditForm = (0, _renderer.default)(e.rowElement).hasClass(this.addWidgetPrefix(_const.EDIT_FORM_CLASS)); e.event[_const.TARGET_COMPONENT_NAME] = this.component; if (!this._editCellByClick(e, "click") && !isEditForm) { super._rowClick.apply(this, arguments) } } _rowDblClickTreeListHack(e) { super._rowDblClick.apply(this, arguments) } _rowDblClick(e) { if (!this._editCellByClick(e, "dblClick")) { super._rowDblClick.apply(this, arguments) } } _cellPrepared($cell, parameters) { var _parameters$column; const editingController = this._editingController; const isCommandCell = !!parameters.column.command; const isEditableCell = parameters.setValue; const isEditRow = editingController.isEditRow(parameters.rowIndex); const isEditing = (0, _m_editing_utils.isEditingCell)(isEditRow, parameters); if ((0, _m_editing_utils.isEditingOrShowEditorAlwaysDataCell)(isEditRow, parameters)) { const { alignment: alignment } = parameters.column; $cell.toggleClass(this.addWidgetPrefix(_const.READONLY_CLASS), !isEditableCell).toggleClass(_const.CELL_FOCUS_DISABLED_CLASS, !isEditableCell); if (alignment) { $cell.find(_const.EDITORS_INPUT_SELECTOR).first().css("textAlign", alignment) } } if (isEditing) { this._editCellPrepared($cell) } const hasTemplate = !!(null !== (_parameters$column = parameters.column) && void 0 !== _parameters$column && _parameters$column.cellTemplate); if (parameters.column && !isCommandCell && (!hasTemplate || editingController.shouldHighlightCell(parameters))) { editingController.highlightDataCell($cell, parameters) } super._cellPrepared.apply(this, arguments) } _getCellOptions(options) { const cellOptions = super._getCellOptions(options); const { columnIndex: columnIndex, row: row } = options; cellOptions.isEditing = this._editingController.isEditCell(cellOptions.rowIndex, cellOptions.columnIndex); cellOptions.removed = row.removed; if (row.modified) { cellOptions.modified = void 0 !== row.modifiedValues[columnIndex] } return cellOptions } _setCellAriaAttributes($cell, cellOptions, options) { super._setCellAriaAttributes($cell, cellOptions, options); if (cellOptions.removed) { this.setAria("roledescription", _message.default.format("dxDataGrid-ariaDeletedCell"), $cell) } if (cellOptions.modified) { this.setAria("roledescription", _message.default.format("dxDataGrid-ariaModifiedCell"), $cell) } const isEditableCell = cellOptions.column.allowEditing && !cellOptions.removed && !cellOptions.modified && "data" === cellOptions.rowType && cellOptions.column.calculateCellValue === cellOptions.column.defaultCalculateCellValue && this._editingController.isCellBasedEditMode(); if (isEditableCell) { this.setAria("roledescription", _message.default.format("dxDataGrid-ariaEditableCell"), $cell) } } _createCell(options) { const $cell = super._createCell(options); const isEditRow = this._editingController.isEditRow(options.rowIndex); (0, _m_editing_utils.isEditingOrShowEditorAlwaysDataCell)(isEditRow, options) && $cell.addClass(_const.EDITOR_CELL_CLASS); return $cell } cellValue(rowIndex, columnIdentifier, value, text) { const cellOptions = this.getCellOptions(rowIndex, columnIdentifier); if (cellOptions) { if (void 0 === value) { return cellOptions.value } this._editingController.updateFieldValue(cellOptions, value, text, true) } } dispose() { super.dispose.apply(this, arguments); clearTimeout(this._pointerDownTimeout) } _renderCore() { super._renderCore.apply(this, arguments); return this.waitAsyncTemplates(true).done((() => { this._editingController._focusEditorIfNeed() })) } _editCellPrepared() {} _formItemPrepared() {} }, headerPanel: Base => class extends Base { optionChanged(args) { const { fullName: fullName } = args; switch (args.name) { case "editing": { const excludedOptions = [_const.EDITING_POPUP_OPTION_NAME, _const.EDITING_CHANGES_OPTION_NAME, _const.EDITING_EDITCOLUMNNAME_OPTION_NAME, _const.EDITING_EDITROWKEY_OPTION_NAME]; const shouldInvalidate = fullName && !excludedOptions.some((optionName => optionName === fullName)); shouldInvalidate && this._invalidate(); super.optionChanged(args); break } case "useLegacyColumnButtonTemplate": args.handled = true; break; default: super.optionChanged(args) } } _getToolbarItems() { const items = super._getToolbarItems(); const editButtonItems = this._editingController.prepareEditButtons(this); return editButtonItems.concat(items) } } } } } }, 48295: /*!********************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/grid_core/editing/m_editing_cell_based.js ***! \********************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.editingCellBasedModule = void 0; var _click = __webpack_require__( /*! ../../../../common/core/events/click */ 64044); var _events_engine = _interopRequireDefault(__webpack_require__( /*! ../../../../common/core/events/core/events_engine */ 92774)); var _hold = _interopRequireDefault(__webpack_require__( /*! ../../../../common/core/events/hold */ 68095)); var _pointer = _interopRequireDefault(__webpack_require__( /*! ../../../../common/core/events/pointer */ 89797)); var _index = __webpack_require__( /*! ../../../../common/core/events/utils/index */ 98834); var _array_utils = __webpack_require__( /*! ../../../../common/data/array_utils */ 43792); var _dom_adapter = _interopRequireDefault(__webpack_require__( /*! ../../../../core/dom_adapter */ 64960)); var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../../../core/renderer */ 64553)); var _common = __webpack_require__( /*! ../../../../core/utils/common */ 17781); var _deferred2 = __webpack_require__( /*! ../../../../core/utils/deferred */ 87739); var _dom = __webpack_require__( /*! ../../../../core/utils/dom */ 86858); var _type = __webpack_require__( /*! ../../../../core/utils/type */ 11528); var _const = __webpack_require__( /*! ./const */ 69699); var _m_editing_utils = __webpack_require__( /*! ./m_editing_utils */ 1414); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } exports.editingCellBasedModule = { extenders: { controllers: { editing: Base => class extends Base { init() { const needCreateHandlers = !this._saveEditorHandler; super.init(); if (needCreateHandlers) { let $pointerDownTarget; let isResizing; this._pointerUpEditorHandler = () => { var _this$_columnsResizer; isResizing = null === (_this$_columnsResizer = this._columnsResizerController) || void 0 === _this$_columnsResizer ? void 0 : _this$_columnsResizer.isResizing() }; this._pointerDownEditorHandler = e => $pointerDownTarget = (0, _renderer.default)(e.target); this._saveEditorHandler = this.createAction((function(e) { const { event: event } = e; const $target = (0, _renderer.default)(event.target); const targetComponent = event[_const.TARGET_COMPONENT_NAME]; const { component: component } = this; if ((0, _m_editing_utils.isEditable)($pointerDownTarget) && !$pointerDownTarget.is($target)) { return } function checkEditorPopup($element) { if (!$element) { return false } const $dropDownEditorOverlay = $element.closest(`.${_const.DROPDOWN_EDITOR_OVERLAY_CLASS}`); const $componentElement = component.$element(); return $dropDownEditorOverlay.length > 0 && 0 === $componentElement.closest($dropDownEditorOverlay).length } if (this.isCellOrBatchEditMode() && !this._editCellInProgress) { const isEditorPopup = checkEditorPopup($target) || checkEditorPopup(null === targetComponent || void 0 === targetComponent ? void 0 : targetComponent.$element()); const isAnotherComponent = targetComponent && !targetComponent._disposed && targetComponent !== this.component; const isAddRowButton = !!$target.closest(`.${this.addWidgetPrefix(_const.ADD_ROW_BUTTON_CLASS)}`).length; const isFocusOverlay = $target.hasClass(this.addWidgetPrefix(_const.FOCUS_OVERLAY_CLASS)); const isCellEditMode = this.isCellEditMode(); if (!isResizing && !isEditorPopup && !isFocusOverlay && !(isAddRowButton && isCellEditMode && this.isEditing()) && ((0, _dom.isElementInDom)($target) || isAnotherComponent)) { this._closeEditItem.bind(this)($target) } } })); _events_engine.default.on(_dom_adapter.default.getDocument(), _pointer.default.up, this._pointerUpEditorHandler); _events_engine.default.on(_dom_adapter.default.getDocument(), _pointer.default.down, this._pointerDownEditorHandler); _events_engine.default.on(_dom_adapter.default.getDocument(), _click.name, this._saveEditorHandler) } } isCellEditMode() { return this.option("editing.mode") === _const.EDIT_MODE_CELL } isBatchEditMode() { return this.option("editing.mode") === _const.EDIT_MODE_BATCH } isCellOrBatchEditMode() { return this.isCellEditMode() || this.isBatchEditMode() } _needToCloseEditableCell($targetElement) { const $element = this.component.$element(); let result = this.isEditing(); const isCurrentComponentElement = !$element || !!$targetElement.closest($element).length; if (isCurrentComponentElement) { const isDataRow = $targetElement.closest(`.${_const.DATA_ROW_CLASS}`).length; if (isDataRow) { const $targetCell = $targetElement.closest(`.${_const.ROW_CLASS}> td`); const rowIndex = this._rowsView.getRowIndex($targetCell.parent()); const cellElements = this._rowsView.getCellElements(rowIndex); if (null !== cellElements && void 0 !== cellElements && cellElements.length) { var _visibleColumns$colum; const columnIndex = cellElements.index($targetCell); const visibleColumns = this._columnsController.getVisibleColumns(); const allowEditing = null === (_visibleColumns$colum = visibleColumns[columnIndex]) || void 0 === _visibleColumns$colum ? void 0 : _visibleColumns$colum.allowEditing; const isEditingCell = this.isEditCell(rowIndex, columnIndex); result = result && !allowEditing && !isEditingCell } } } return result || super._needToCloseEditableCell($targetElement) } _closeEditItem($targetElement) { if (this._needToCloseEditableCell($targetElement)) { this.closeEditCell() } } _focusEditorIfNeed() { if (this._needFocusEditor && this.isCellOrBatchEditMode()) { var _this$_rowsView; const editColumnIndex = this._getVisibleEditColumnIndex(); const $cell = null === (_this$_rowsView = this._rowsView) || void 0 === _this$_rowsView ? void 0 : _this$_rowsView._getCellElement(this._getVisibleEditRowIndex(), editColumnIndex); this._refocusEditCell = false; clearTimeout(this._inputFocusTimeoutID); if ($cell && !$cell.find(":focus").length) { this._focusEditingCell((() => { this._editCellInProgress = false }), $cell, true) } else { this._editCellInProgress = false } this._needFocusEditor = false } else { super._focusEditorIfNeed() } } isEditing() { if (this.isCellOrBatchEditMode()) { const isEditRowKeyDefined = (0, _type.isDefined)(this.option(_const.EDITING_EDITROWKEY_OPTION_NAME)); const isEditColumnNameDefined = (0, _type.isDefined)(this.option(_const.EDITING_EDITCOLUMNNAME_OPTION_NAME)); return isEditRowKeyDefined && isEditColumnNameDefined } return super.isEditing() } _handleEditColumnNameChange(args) { const oldRowIndex = this._getVisibleEditRowIndex(args.previousValue); if (this.isCellOrBatchEditMode() && -1 !== oldRowIndex && (0, _type.isDefined)(args.value) && args.value !== args.previousValue) { const columnIndex = this._columnsController.getVisibleColumnIndex(args.value); const oldColumnIndex = this._columnsController.getVisibleColumnIndex(args.previousValue); this._editCellFromOptionChanged(columnIndex, oldColumnIndex, oldRowIndex) } } _addRow(parentKey) { if (this.isCellEditMode() && this.hasChanges()) { const deferred = new _deferred2.Deferred; this.saveEditData().done((() => { if (!this.hasChanges()) { this.addRow(parentKey).done(deferred.resolve).fail(deferred.reject) } else { deferred.reject("cancel") } })); return deferred.promise() } return super._addRow(parentKey) } editCell(rowIndex, columnIndex) { return this._editCell({ rowIndex: rowIndex, columnIndex: columnIndex }) } _editCell(options) { const d = new _deferred2.Deferred; let coreResult; this.executeOperation(d, (() => { coreResult = this._editCellCore(options); (0, _deferred2.when)(coreResult).done(d.resolve).fail(d.reject) })); return void 0 !== coreResult ? coreResult : d.promise() } _editCellCore(options) { const dataController = this._dataController; const isEditByOptionChanged = (0, _type.isDefined)(options.oldColumnIndex) || (0, _type.isDefined)(options.oldRowIndex); const { columnIndex: columnIndex, rowIndex: rowIndex, column: column, item: item } = this._getNormalizedEditCellOptions(options); const params = { data: null === item || void 0 === item ? void 0 : item.data, cancel: false, column: column }; if (void 0 === item.key) { this._dataController.fireError("E1043"); return } if (column && ("data" === item.rowType || "detailAdaptive" === item.rowType) && !item.removed && this.isCellOrBatchEditMode()) { if (!isEditByOptionChanged && this.isEditCell(rowIndex, columnIndex)) { return true } const editRowIndex = rowIndex + dataController.getRowIndexOffset(); return (0, _deferred2.when)(this._beforeEditCell(rowIndex, columnIndex, item)).done((cancel => { if (cancel) { return } if (!this._prepareEditCell(params, item, columnIndex, editRowIndex)) { this._processCanceledEditingCell() } })) } return false } _beforeEditCell(rowIndex, columnIndex, item) { if (this.isCellEditMode() && !item.isNewRow && this.hasChanges()) { const isSaving = new _deferred2.Deferred; this.saveEditData().always((() => { isSaving.resolve(this.hasChanges()) })); this.addDeferred(isSaving); return isSaving } return false } publicMethods() { const publicMethods = super.publicMethods(); return publicMethods.concat(["editCell", "closeEditCell"]) } _getNormalizedEditCellOptions(_ref) { let { oldColumnIndex: oldColumnIndex, oldRowIndex: oldRowIndex, columnIndex: columnIndex, rowIndex: rowIndex } = _ref; const columnsController = this._columnsController; const visibleColumns = columnsController.getVisibleColumns(); const items = this._dataController.items(); const item = items[rowIndex]; let oldColumn; if ((0, _type.isDefined)(oldColumnIndex)) { oldColumn = visibleColumns[oldColumnIndex] } else { oldColumn = this._getEditColumn() } if (!(0, _type.isDefined)(oldRowIndex)) { oldRowIndex = this._getVisibleEditRowIndex() } if ((0, _type.isString)(columnIndex)) { columnIndex = columnsController.columnOption(columnIndex, "index"); columnIndex = columnsController.getVisibleIndex(columnIndex) } const column = visibleColumns[columnIndex]; return { oldColumn: oldColumn, columnIndex: columnIndex, oldRowIndex: oldRowIndex, rowIndex: rowIndex, column: column, item: item } } _prepareEditCell(params, item, editColumnIndex, editRowIndex) { if (!item.isNewRow) { params.key = item.key } if (this._isEditingStart(params)) { return false } this._pageIndex = this._dataController.pageIndex(); this._setEditRowKey(item.key); this._setEditColumnNameByIndex(editColumnIndex); if (!params.column.showEditorAlways) { this._addInternalData({ key: item.key, oldData: item.oldData ?? item.data }) } return true } closeEditCell(isError, withoutSaveEditData) { let result = (0, _deferred2.when)(); const oldEditRowIndex = this._getVisibleEditRowIndex(); if (this.isCellOrBatchEditMode()) { const deferred = new _deferred2.Deferred; result = new _deferred2.Deferred; this.executeOperation(deferred, (() => { this._closeEditCellCore(isError, oldEditRowIndex, withoutSaveEditData).always(result.resolve) })) } return result.promise() } _closeEditCellCore(isError, oldEditRowIndex, withoutSaveEditData) { const dataController = this._dataController; const deferred = new _deferred2.Deferred; const promise = deferred.promise(); if (this.isCellEditMode() && this.hasChanges()) { if (!withoutSaveEditData) { this.saveEditData().done((error => { if (!this.hasChanges()) { this.closeEditCell(!!error).always(deferred.resolve); return } deferred.resolve() })); return promise } } else { this._resetEditRowKey(); this._resetEditColumnName(); if (oldEditRowIndex >= 0) { const rowIndices = [oldEditRowIndex]; this._beforeCloseEditCellInBatchMode(rowIndices); if (!isError) { dataController.updateItems({ changeType: "update", rowIndices: rowIndices }) } } } deferred.resolve(); return promise } _resetModifiedClassCells(changes) { if (this.isBatchEditMode()) { const columnsCount = this._columnsController.getVisibleColumns().length; changes.forEach((_ref2 => { let { key: key } = _ref2; const rowIndex = this._dataController.getRowIndexByKey(key); for (let columnIndex = 0; columnIndex < columnsCount; columnIndex++) { const cellElement = this._rowsView._getCellElement(rowIndex, columnIndex); null === cellElement || void 0 === cellElement || cellElement.removeClass(_const.CELL_MODIFIED_CLASS) } })) } } _prepareChange(options, value, text) { const $cellElement = (0, _renderer.default)(options.cellElement); if (this.isBatchEditMode() && void 0 !== options.key) { this._applyModified($cellElement, options) } return super._prepareChange(options, value, text) } _cancelSaving(result) { const dataController = this._dataController; if (this.isCellOrBatchEditMode()) { if (this.isBatchEditMode()) { this._resetEditIndices() } dataController.updateItems() } super._cancelSaving(result) } optionChanged(args) { const { fullName: fullName } = args; if ("editing" === args.name && fullName === _const.EDITING_EDITCOLUMNNAME_OPTION_NAME) { this._handleEditColumnNameChange(args); args.handled = true } else { super.optionChanged(args) } } _editCellFromOptionChanged(columnIndex, oldColumnIndex, oldRowIndex) { const columns = this._columnsController.getVisibleColumns(); if (columnIndex > -1) { (0, _common.deferRender)((() => { this._repaintEditCell(columns[columnIndex], columns[oldColumnIndex], oldRowIndex) })) } } _handleEditRowKeyChange(args) { if (this.isCellOrBatchEditMode()) { const columnIndex = this._getVisibleEditColumnIndex(); const oldRowIndexCorrection = this._getEditRowIndexCorrection(); const oldRowIndex = this._dataController.getRowIndexByKey(args.previousValue) + oldRowIndexCorrection; if ((0, _type.isDefined)(args.value) && args.value !== args.previousValue) { var _this$_editCellFromOp; null === (_this$_editCellFromOp = this._editCellFromOptionChanged) || void 0 === _this$_editCellFromOp || _this$_editCellFromOp.call(this, columnIndex, columnIndex, oldRowIndex) } } else { super._handleEditRowKeyChange(args) } } deleteRow(rowIndex) { if (this.isCellEditMode() && this.isEditing()) { const { isNewRow: isNewRow } = this._dataController.items()[rowIndex]; const rowKey = this._dataController.getKeyByRowIndex(rowIndex); this.closeEditCell(null, isNewRow).always((() => { rowIndex = this._dataController.getRowIndexByKey(rowKey); this._checkAndDeleteRow(rowIndex) })) } else { super.deleteRow(rowIndex) } } _checkAndDeleteRow(rowIndex) { if (this.isBatchEditMode()) { this._deleteRowCore(rowIndex) } else { super._checkAndDeleteRow(rowIndex) } } _refreshCore(params) { const { isPageChanged: isPageChanged } = params ?? {}; const needResetIndexes = this.isBatchEditMode() || isPageChanged && "virtual" !== this.option("scrolling.mode"); if (this.isCellOrBatchEditMode()) { if (needResetIndexes) { this._resetEditColumnName(); this._resetEditRowKey() } } else { super._refreshCore(params) } } _allowRowAdding(params) { if (this.isBatchEditMode()) { return true } return super._allowRowAdding(params) } _afterDeleteRow(rowIndex, oldEditRowIndex) { const dataController = this._dataController; if (this.isBatchEditMode()) { dataController.updateItems({ changeType: "update", rowIndices: [oldEditRowIndex, rowIndex] }); return (new _deferred2.Deferred).resolve() } return super._afterDeleteRow(rowIndex, oldEditRowIndex) } _updateEditRow(row, forceUpdateRow, isCustomSetCellValue) { if (this.isCellOrBatchEditMode()) { this._updateRowImmediately(row, forceUpdateRow, isCustomSetCellValue) } else { super._updateEditRow(row, forceUpdateRow, isCustomSetCellValue) } } _isDefaultButtonVisible(button, options) { if (this.isCellOrBatchEditMode()) { const isBatchMode = this.isBatchEditMode(); switch (button.name) { case "save": case "cancel": case "edit": return false; case "delete": return super._isDefaultButtonVisible(button, options) && (!isBatchMode || !options.row.removed); case "undelete": return isBatchMode && this.allowDeleting(options) && options.row.removed; default: return super._isDefaultButtonVisible(button, options) } } return super._isDefaultButtonVisible(button, options) } _isRowDeleteAllowed() { const callBaseResult = super._isRowDeleteAllowed(); return callBaseResult || this.isBatchEditMode() } _beforeEndSaving(changes) { if (this.isCellEditMode()) { var _changes$; if ("update" !== (null === (_changes$ = changes[0]) || void 0 === _changes$ ? void 0 : _changes$.type)) { super._beforeEndSaving(changes) } } else { if (this.isBatchEditMode()) { this._resetModifiedClassCells(changes) } super._beforeEndSaving(changes) } } prepareEditButtons(headerPanel) { const editingOptions = this.option("editing") ?? {}; const buttonItems = super.prepareEditButtons(headerPanel); const needEditingButtons = editingOptions.allowUpdating || editingOptions.allowAdding || editingOptions.allowDeleting; if (needEditingButtons && this.isBatchEditMode()) { buttonItems.push(this.prepareButtonItem(headerPanel, "save", "saveEditData", 21)); buttonItems.push(this.prepareButtonItem(headerPanel, "revert", "cancelEditData", 22)) } return buttonItems } _saveEditDataInner() { var _deferred; const editRow = this._dataController.getVisibleRows()[this.getEditRowIndex()]; const editColumn = this._getEditColumn(); const showEditorAlways = null === editColumn || void 0 === editColumn ? void 0 : editColumn.showEditorAlways; const isUpdateInCellMode = this.isCellEditMode() && !(null !== editRow && void 0 !== editRow && editRow.isNewRow); let deferred; if (isUpdateInCellMode && showEditorAlways) { deferred = new _deferred2.Deferred; this.addDeferred(deferred) } return super._saveEditDataInner().always(null === (_deferred = deferred) || void 0 === _deferred ? void 0 : _deferred.resolve) } _applyChange(options, params, forceUpdateRow) { const isUpdateInCellMode = this.isCellEditMode() && options.row && !options.row.isNewRow; const { showEditorAlways: showEditorAlways } = options.column; const isCustomSetCellValue = options.column.setCellValue !== options.column.defaultSetCellValue; const focusPreviousEditingCell = showEditorAlways && !forceUpdateRow && isUpdateInCellMode && this.hasEditData() && !this.isEditCell(options.rowIndex, options.columnIndex); if (focusPreviousEditingCell) { this._focusEditingCell(); this._updateEditRow(options.row, true, isCustomSetCellValue); return } return super._applyChange(options, params, forceUpdateRow) } _applyChangeCore(options, forceUpdateRow) { const { showEditorAlways: showEditorAlways } = options.column; const isUpdateInCellMode = this.isCellEditMode() && options.row && !options.row.isNewRow; if (showEditorAlways && !forceUpdateRow) { if (isUpdateInCellMode) { this._setEditRowKey(options.row.key, true); this._setEditColumnNameByIndex(options.columnIndex, true); return this.saveEditData() } if (this.isBatchEditMode()) { forceUpdateRow = this._needUpdateRow(options.column); return super._applyChangeCore(options, forceUpdateRow) } } return super._applyChangeCore(options, forceUpdateRow) } _processDataItemCore(item, change, key, columns, generateDataValues) { const { data: data, type: type } = change; if (this.isBatchEditMode() && type === _const.DATA_EDIT_DATA_REMOVE_TYPE) { item.data = (0, _array_utils.createObjectWithChanges)(item.data, data) } super._processDataItemCore(item, change, key, columns, generateDataValues) } _processRemoveCore(changes, editIndex, processIfBatch) { if (this.isBatchEditMode() && !processIfBatch) { return } return super._processRemoveCore(changes, editIndex, processIfBatch) } _processRemoveIfError(changes, editIndex) { if (this.isBatchEditMode()) { return } return super._processRemoveIfError(changes, editIndex) } _beforeFocusElementInRow(rowIndex) { super._beforeFocusElementInRow(rowIndex); const editRowIndex = rowIndex >= 0 ? rowIndex : 0; const columnIndex = this.getFirstEditableColumnIndex(); columnIndex >= 0 && this.editCell(editRowIndex, columnIndex) } } }, views: { rowsView: Base => class extends Base { _createTable() { const $table = super._createTable.apply(this, arguments); const editingController = this._editingController; if (editingController.isCellOrBatchEditMode() && this.option("editing.allowUpdating")) { _events_engine.default.on($table, (0, _index.addNamespace)(_hold.default.name, "dxDataGridRowsView"), `td:not(.${_const.EDITOR_CELL_CLASS})`, this.createAction((() => { if (editingController.isEditing()) { editingController.closeEditCell() } }))) } return $table } _createRow(row) { const $row = super._createRow.apply(this, arguments); if (row) { const editingController = this._editingController; const isRowRemoved = !!row.removed; if (editingController.isBatchEditMode()) { isRowRemoved && $row.addClass(_const.ROW_REMOVED) } } return $row } } } } } }, 29657: /*!********************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/grid_core/editing/m_editing_form_based.js ***! \********************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.editingFormBasedModule = void 0; var _events_engine = _interopRequireDefault(__webpack_require__( /*! ../../../../common/core/events/core/events_engine */ 92774)); var _remove = __webpack_require__( /*! ../../../../common/core/events/remove */ 28630); var _devices = _interopRequireDefault(__webpack_require__( /*! ../../../../core/devices */ 65951)); var _guid = _interopRequireDefault(__webpack_require__( /*! ../../../../core/guid */ 19427)); var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../../../core/renderer */ 64553)); var _common = __webpack_require__( /*! ../../../../core/utils/common */ 17781); var _deferred = __webpack_require__( /*! ../../../../core/utils/deferred */ 87739); var _dom = __webpack_require__( /*! ../../../../core/utils/dom */ 86858); var _extend = __webpack_require__( /*! ../../../../core/utils/extend */ 52576); var _iterator = __webpack_require__( /*! ../../../../core/utils/iterator */ 21274); var _type = __webpack_require__( /*! ../../../../core/utils/type */ 11528); var _button = _interopRequireDefault(__webpack_require__( /*! ../../../../ui/button */ 64973)); var _form = _interopRequireDefault(__webpack_require__( /*! ../../../../ui/form */ 74075)); var _ui = _interopRequireDefault(__webpack_require__( /*! ../../../../ui/popup/ui.popup */ 10720)); var _ui2 = _interopRequireDefault(__webpack_require__( /*! ../../../../ui/scroll_view/ui.scrollable */ 20876)); var _m_utils = _interopRequireDefault(__webpack_require__( /*! ../m_utils */ 53226)); var _const = __webpack_require__( /*! ./const */ 69699); var _m_editing_utils = __webpack_require__( /*! ./m_editing_utils */ 1414); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } exports.editingFormBasedModule = { extenders: { controllers: { editing: Base => class extends Base { init() { this._editForm = null; this._updateEditFormDeferred = null; super.init() } isEditRow(rowIndex) { return !this.isPopupEditMode() && super.isEditRow(rowIndex) } isFormOrPopupEditMode() { return this.isPopupEditMode() || this.isFormEditMode() } isFormEditMode() { const editMode = this.option("editing.mode"); return editMode === _const.EDIT_MODE_FORM } getFirstEditableColumnIndex() { const firstFormItem = this._firstFormItem; if (this.isFormEditMode() && firstFormItem) { const editRowKey = this.option(_const.EDITING_EDITROWKEY_OPTION_NAME); const editRowIndex = this._dataController.getRowIndexByKey(editRowKey); const $editFormElements = this._rowsView.getCellElements(editRowIndex); return this._rowsView._getEditFormEditorVisibleIndex($editFormElements, firstFormItem.column) } return super.getFirstEditableColumnIndex() } getEditFormRowIndex() { return this.isFormOrPopupEditMode() ? this._getVisibleEditRowIndex() : super.getEditFormRowIndex() } _isEditColumnVisible() { const result = super._isEditColumnVisible(); const editingOptions = this.option("editing"); return this.isFormOrPopupEditMode() ? editingOptions.allowUpdating || result : result } _handleDataChanged(args) { if (this.isPopupEditMode()) { var _args$items, _args$changeTypes; const editRowKey = this.option("editing.editRowKey"); const hasEditRow = null === args || void 0 === args || null === (_args$items = args.items) || void 0 === _args$items ? void 0 : _args$items.some((item => (0, _common.equalByValue)(item.key, editRowKey))); const onlyInsertChanges = (null === (_args$changeTypes = args.changeTypes) || void 0 === _args$changeTypes ? void 0 : _args$changeTypes.length) && args.changeTypes.every((item => "insert" === item)); if (("refresh" === args.changeType || hasEditRow && args.isOptionChanged) && !onlyInsertChanges) { this._repaintEditPopup() } } super._handleDataChanged(args) } getPopupContent() { var _this$_editPopup; const popupVisible = null === (_this$_editPopup = this._editPopup) || void 0 === _this$_editPopup ? void 0 : _this$_editPopup.option("visible"); if (this.isPopupEditMode() && popupVisible) { return this._$popupContent } } _showAddedRow(rowIndex) { if (this.isPopupEditMode()) { this._showEditPopup(rowIndex) } else { super._showAddedRow(rowIndex) } } _cancelEditDataCore() { super._cancelEditDataCore(); if (this.isPopupEditMode()) { this._hideEditPopup() } } _updateEditRowCore(row, skipCurrentRow, isCustomSetCellValue) { const editForm = this._editForm; if (this.isPopupEditMode()) { if (this.option("repaintChangesOnly")) { var _row$update; null === (_row$update = row.update) || void 0 === _row$update || _row$update.call(row, row); this._rowsView.renderDelayedTemplates() } else if (editForm) { this._updateEditFormDeferred = (new _deferred.Deferred).done((() => editForm.repaint())); if (!this._updateLockCount) { this._updateEditFormDeferred.resolve() } } } else { super._updateEditRowCore(row, skipCurrentRow, isCustomSetCellValue) } } _showEditPopup(rowIndex, repaintForm) { const isMobileDevice = "desktop" !== _devices.default.current().deviceType; const editPopupClass = this.addWidgetPrefix(_const.EDIT_POPUP_CLASS); const popupOptions = (0, _extend.extend)({ showTitle: false, fullScreen: isMobileDevice, wrapperAttr: { class: editPopupClass }, toolbarItems: [{ toolbar: "bottom", location: "after", widget: "dxButton", options: this._getSaveButtonConfig() }, { toolbar: "bottom", location: "after", widget: "dxButton", options: this._getCancelButtonConfig() }], contentTemplate: this._getPopupEditFormTemplate(rowIndex) }, this.option(_const.EDITING_POPUP_OPTION_NAME)); if (!this._editPopup) { const $popupContainer = (0, _renderer.default)("
").appendTo(this.component.$element()).addClass(editPopupClass); this._editPopup = this._createComponent($popupContainer, _ui.default); this._editPopup.on("hiding", this._getEditPopupHiddenHandler()); this._editPopup.on("shown", (e => { _events_engine.default.trigger(e.component.$content().find(_const.FOCUSABLE_ELEMENT_SELECTOR).not(`.${_const.FOCUSABLE_ELEMENT_CLASS}`).first(), "focus"); if (repaintForm) { var _this$_editForm; null === (_this$_editForm = this._editForm) || void 0 === _this$_editForm || _this$_editForm.repaint() } })) } this._editPopup.option(popupOptions); this._editPopup.show(); super._showEditPopup(rowIndex, repaintForm) } _getPopupEditFormTemplate(rowIndex) { const row = this.component.getVisibleRows()[rowIndex]; const templateOptions = { row: row, values: row.values, rowType: row.rowType, key: row.key, rowIndex: rowIndex }; this._rowsView._addWatchMethod(templateOptions, row); return container => { const formTemplate = this.getEditFormTemplate(); const scrollable = this._createComponent((0, _renderer.default)("
").appendTo(container), _ui2.default); this._$popupContent = (0, _renderer.default)(scrollable.content()); formTemplate(this._$popupContent, templateOptions, { isPopupForm: true }); this._rowsView.renderDelayedTemplates(); (0, _renderer.default)(container).parent().attr("aria-label", this.localize("dxDataGrid-ariaEditForm")) } } _repaintEditPopup() { const rowIndex = this._getVisibleEditRowIndex(); if (rowIndex >= 0) { var _this$_editPopup2, _this$_editPopup3; const defaultAnimation = null === (_this$_editPopup2 = this._editPopup) || void 0 === _this$_editPopup2 ? void 0 : _this$_editPopup2.option("animation"); null === (_this$_editPopup3 = this._editPopup) || void 0 === _this$_editPopup3 || _this$_editPopup3.option("animation", null); this._showEditPopup(rowIndex, true); if (void 0 !== defaultAnimation) { this._editPopup.option("animation", defaultAnimation) } } } _hideEditPopup() { var _this$_editPopup4; null === (_this$_editPopup4 = this._editPopup) || void 0 === _this$_editPopup4 || _this$_editPopup4.option("visible", false) } optionChanged(args) { if ("editing" === args.name && this.isFormOrPopupEditMode()) { const { fullName: fullName } = args; if (0 === fullName.indexOf(_const.EDITING_FORM_OPTION_NAME)) { this._handleFormOptionChange(args); args.handled = true } else if (0 === fullName.indexOf(_const.EDITING_POPUP_OPTION_NAME)) { this._handlePopupOptionChange(args); args.handled = true } } super.optionChanged(args) } _handleFormOptionChange(args) { var _this$_editPopup5; if (this.isFormEditMode()) { const editRowIndex = this._getVisibleEditRowIndex(); if (editRowIndex >= 0) { this._dataController.updateItems({ changeType: "update", rowIndices: [editRowIndex] }) } } else if (null !== (_this$_editPopup5 = this._editPopup) && void 0 !== _this$_editPopup5 && _this$_editPopup5.option("visible") && 0 === args.fullName.indexOf(_const.EDITING_FORM_OPTION_NAME)) { this._repaintEditPopup() } } _handlePopupOptionChange(args) { const editPopup = this._editPopup; if (editPopup) { const popupOptionName = args.fullName.slice(_const.EDITING_POPUP_OPTION_NAME.length + 1); if (popupOptionName) { editPopup.option(popupOptionName, args.value) } else { editPopup.option(args.value) } } } renderFormEditorTemplate(detailCellOptions, item, formTemplateOptions, container, isReadOnly) { const that = this; const $container = (0, _renderer.default)(container); const { column: column } = item; const editorType = (0, _m_editing_utils.getEditorType)(item); const row = null === detailCellOptions || void 0 === detailCellOptions ? void 0 : detailCellOptions.row; const rowData = null === row || void 0 === row ? void 0 : row.data; const form = formTemplateOptions.component; const value = column.calculateCellValue(rowData); const displayValue = _m_utils.default.getDisplayValue(column, value, rowData, null === row || void 0 === row ? void 0 : row.rowType); const { label: label, labelMark: labelMark, labelMode: labelMode } = formTemplateOptions.editorOptions || {}; const cellOptions = (0, _extend.extend)({}, detailCellOptions, { data: rowData, cellElement: null, isOnForm: true, item: item, id: form.getItemID(item.name || item.dataField), column: (0, _extend.extend)({}, column, { editorType: editorType, editorOptions: (0, _extend.extend)({ label: label, labelMark: labelMark, labelMode: labelMode }, column.editorOptions, item.editorOptions) }), columnIndex: column.index, setValue: !isReadOnly && column.allowEditing && function(value, text) { that.updateFieldValue(cellOptions, value, text) } }); cellOptions.value = value; cellOptions.displayValue = displayValue; cellOptions.text = !column.command ? _m_utils.default.formatValue(displayValue, column) : ""; const template = this._getFormEditItemTemplate.bind(this)(cellOptions, column); this._rowsView.renderTemplate($container, template, cellOptions, !!(0, _dom.isElementInDom)($container)).done((() => { this._rowsView._updateCell($container, cellOptions) })); return cellOptions } getFormEditorTemplate(cellOptions, item) { const column = this.component.columnOption(item.name || item.dataField); return (options, container) => { const $container = (0, _renderer.default)(container); const { row: row } = cellOptions; if (null !== row && void 0 !== row && row.watch) { const dispose = row.watch((() => column.selector(row.data)), (() => { var _validator; let $editorElement = $container.find(".dx-widget").first(); let validator = $editorElement.data("dxValidator"); const validatorOptions = null === (_validator = validator) || void 0 === _validator ? void 0 : _validator.option(); $container.contents().remove(); cellOptions = this.renderFormEditorTemplate.bind(this)(cellOptions, item, options, $container); $editorElement = $container.find(".dx-widget").first(); validator = $editorElement.data("dxValidator"); if (validatorOptions && !validator) { $editorElement.dxValidator({ validationRules: validatorOptions.validationRules, validationGroup: validatorOptions.validationGroup, dataGetter: validatorOptions.dataGetter }) } })); _events_engine.default.on($container, _remove.removeEvent, dispose) } cellOptions = this.renderFormEditorTemplate.bind(this)(cellOptions, item, options, $container) } } getEditFormOptions(detailOptions) { var _this$_getValidationG; const editFormOptions = null === (_this$_getValidationG = this._getValidationGroupsInForm) || void 0 === _this$_getValidationG ? void 0 : _this$_getValidationG.call(this, detailOptions); const userCustomizeItem = this.option("editing.form.customizeItem"); const editFormItemClass = this.addWidgetPrefix(_const.EDIT_FORM_ITEM_CLASS); let items = this.option("editing.form.items"); const isCustomEditorType = {}; if (!items) { const columns = this._columnsController.getColumns(); items = []; (0, _iterator.each)(columns, ((_, column) => { if (!column.isBand && !column.type) { items.push({ column: column, name: column.name, dataField: column.dataField }) } })) } else { (0, _m_editing_utils.forEachFormItems)(items, (item => { const itemId = (null === item || void 0 === item ? void 0 : item.name) || (null === item || void 0 === item ? void 0 : item.dataField); if (itemId) { isCustomEditorType[itemId] = !!item.editorType } })) } return (0, _extend.extend)({}, editFormOptions, { items: items, formID: `dx-${new _guid.default}`, customizeItem: item => { let column; const itemId = item.name || item.dataField; if (item.column || itemId) { column = item.column || this._columnsController.columnOption(item.name ? `name:${item.name}` : `dataField:${item.dataField}`) } if (column) { item.label = item.label || {}; item.label.text = item.label.text || column.caption; if ("boolean" === column.dataType && void 0 === item.label.visible) { const labelMode = this.option("editing.form.labelMode"); if ("floating" === labelMode || "static" === labelMode) { item.label.visible = true } } item.template = item.template || this.getFormEditorTemplate(detailOptions, item); item.column = column; item.isCustomEditorType = isCustomEditorType[itemId]; if (column.formItem) { (0, _extend.extend)(item, column.formItem) } if (void 0 === item.isRequired && column.validationRules) { item.isRequired = column.validationRules.some((rule => "required" === rule.type)); item.validationRules = [] } const itemVisible = (0, _type.isDefined)(item.visible) ? item.visible : true; if (!this._firstFormItem && itemVisible) { this._firstFormItem = item } } null === userCustomizeItem || void 0 === userCustomizeItem || userCustomizeItem.call(this, item); item.cssClass = (0, _type.isString)(item.cssClass) ? `${item.cssClass} ${editFormItemClass}` : editFormItemClass } }) } getEditFormTemplate() { return ($container, detailOptions, options) => { const editFormOptions = this.option(_const.EDITING_FORM_OPTION_NAME); const baseEditFormOptions = this.getEditFormOptions(detailOptions); const $formContainer = (0, _renderer.default)("
").appendTo($container); const isPopupForm = null === options || void 0 === options ? void 0 : options.isPopupForm; this._firstFormItem = void 0; if (isPopupForm) { $formContainer.addClass(this.addWidgetPrefix(_const.EDIT_POPUP_FORM_CLASS)) } this._editForm = this._createComponent($formContainer, _form.default, (0, _extend.extend)({}, editFormOptions, baseEditFormOptions)); if (!isPopupForm) { const $buttonsContainer = (0, _renderer.default)("
").addClass(this.addWidgetPrefix(_const.FORM_BUTTONS_CONTAINER_CLASS)).appendTo($container); this._createComponent((0, _renderer.default)("
").appendTo($buttonsContainer), _button.default, this._getSaveButtonConfig()); this._createComponent((0, _renderer.default)("
").appendTo($buttonsContainer), _button.default, this._getCancelButtonConfig()) } this._editForm.on("contentReady", (() => { var _this$_editPopup6; this._rowsView.renderDelayedTemplates(); null === (_this$_editPopup6 = this._editPopup) || void 0 === _this$_editPopup6 || _this$_editPopup6.repaint() })) } } getEditForm() { return this._editForm } _endUpdateCore() { var _this$_updateEditForm; null === (_this$_updateEditForm = this._updateEditFormDeferred) || void 0 === _this$_updateEditForm || _this$_updateEditForm.resolve() } _beforeEndSaving(changes) { super._beforeEndSaving(changes); if (this.isPopupEditMode()) { var _this$_editPopup7; null === (_this$_editPopup7 = this._editPopup) || void 0 === _this$_editPopup7 || _this$_editPopup7.hide() } } _processDataItemCore(item, change, key, columns, generateDataValues) { const { type: type } = change; if (this.isPopupEditMode() && type === _const.DATA_EDIT_DATA_INSERT_TYPE) { item.visible = false } super._processDataItemCore(item, change, key, columns, generateDataValues) } _editRowFromOptionChangedCore(rowIndices, rowIndex) { const isPopupEditMode = this.isPopupEditMode(); super._editRowFromOptionChangedCore(rowIndices, rowIndex, isPopupEditMode); if (isPopupEditMode) { this._showEditPopup(rowIndex) } } }, data: Base => class extends Base { _updateEditItem(item) { if (this._editingController.isFormEditMode()) { item.rowType = "detail" } } _getChangedColumnIndices(oldItem, newItem, visibleRowIndex, isLiveUpdate) { if (false === isLiveUpdate && newItem.isEditing && this._editingController.isFormEditMode()) { return } return super._getChangedColumnIndices.apply(this, arguments) } } }, views: { rowsView: Base => class extends Base { _renderCellContent($cell, options) { if ("data" === options.rowType && this._editingController.isPopupEditMode() && false === options.row.visible) { return } super._renderCellContent.apply(this, arguments) } getCellElements(rowIndex) { const $cellElements = super.getCellElements(rowIndex); const editingController = this._editingController; const editForm = editingController.getEditForm(); const editFormRowIndex = editingController.getEditFormRowIndex(); if (editFormRowIndex === rowIndex && $cellElements && editForm) { return editForm.$element().find(`.${this.addWidgetPrefix(_const.EDIT_FORM_ITEM_CLASS)}, .${_const.BUTTON_CLASS}`) } return $cellElements } _getVisibleColumnIndex($cells, rowIndex, columnIdentifier) { const editFormRowIndex = this._editingController.getEditFormRowIndex(); if (editFormRowIndex === rowIndex && (0, _type.isString)(columnIdentifier)) { const column = this._columnsController.columnOption(columnIdentifier); return this._getEditFormEditorVisibleIndex($cells, column) } return super._getVisibleColumnIndex.apply(this, arguments) } _getEditFormEditorVisibleIndex($cells, column) { let visibleIndex = -1; (0, _iterator.each)($cells, ((index, cellElement) => { const item = (0, _renderer.default)(cellElement).find(".dx-field-item-content").data("dx-form-item"); if (null !== item && void 0 !== item && item.column && column && item.column.index === column.index) { visibleIndex = index; return false } })); return visibleIndex } _isFormItem(parameters) { const isDetailRow = "detail" === parameters.rowType || "detailAdaptive" === parameters.rowType; const isPopupEditing = "data" === parameters.rowType && this._editingController.isPopupEditMode(); return (isDetailRow || isPopupEditing) && parameters.item } _updateCell($cell, parameters) { if (this._isFormItem(parameters)) { this._formItemPrepared(parameters, $cell) } else { super._updateCell($cell, parameters) } } _updateContent() { const editingController = this._editingController; const oldEditForm = editingController.getEditForm(); const validationGroup = null === oldEditForm || void 0 === oldEditForm ? void 0 : oldEditForm.option("validationGroup"); const deferred = super._updateContent.apply(this, arguments); return deferred.done((() => { const newEditForm = editingController.getEditForm(); if (validationGroup && newEditForm && newEditForm !== oldEditForm) { newEditForm.option("validationGroup", validationGroup) } })) } } } } } }, 56671: /*!*******************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/grid_core/editing/m_editing_row_based.js ***! \*******************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.editingRowBasedModule = void 0; var _common = __webpack_require__( /*! ../../../../core/utils/common */ 17781); var _const = __webpack_require__( /*! ./const */ 69699); exports.editingRowBasedModule = { extenders: { controllers: { editing: Base => class extends Base { isRowEditMode() { return this.getEditMode() === _const.EDIT_MODE_ROW } _afterCancelEditData(rowIndex) { const dataController = this._dataController; if (this.isRowBasedEditMode() && rowIndex >= 0) { dataController.updateItems({ changeType: "update", rowIndices: [rowIndex, rowIndex + 1] }) } else { super._afterCancelEditData(rowIndex) } } _isDefaultButtonVisible(button, options) { const isRowMode = this.isRowBasedEditMode(); const isPopupEditMode = this.isPopupEditMode(); const isEditRow = !isPopupEditMode && options.row && (0, _common.equalByValue)(options.row.key, this.option(_const.EDITING_EDITROWKEY_OPTION_NAME)); if (isRowMode) { switch (button.name) { case "edit": return !isEditRow && this.allowUpdating(options); case "delete": return super._isDefaultButtonVisible(button, options) && !isEditRow; case "save": case "cancel": return isEditRow; default: return super._isDefaultButtonVisible(button, options) } } return super._isDefaultButtonVisible(button, options) } isEditRow(rowIndex) { return this.isRowBasedEditMode() && this.isEditRowByIndex(rowIndex) } _cancelSaving(result) { if (this.isRowBasedEditMode()) { if (!this.hasChanges()) { this._cancelEditDataCore() } } super._cancelSaving(result) } _refreshCore(params) { const { allowCancelEditing: allowCancelEditing } = params ?? {}; if (this.isRowBasedEditMode()) { const hasUpdateChanges = this.getChanges().filter((it => "update" === it.type)).length > 0; this.init(); allowCancelEditing && hasUpdateChanges && this._cancelEditDataCore() } super._refreshCore(params) } _isEditColumnVisible() { const result = super._isEditColumnVisible(); const editingOptions = this.option("editing"); const isRowEditMode = this.isRowEditMode(); const isVisibleInRowEditMode = editingOptions.allowUpdating || editingOptions.allowAdding; return result || isRowEditMode && isVisibleInRowEditMode } _focusEditorIfNeed() { const editMode = this.getEditMode(); if (this._needFocusEditor) { if (_const.MODES_WITH_DELAYED_FOCUS.includes(editMode)) { const $editingCell = this.getFocusedCellInRow(this._getVisibleEditRowIndex()); this._delayedInputFocus($editingCell, (() => { $editingCell && this.component.focus($editingCell) })) } this._needFocusEditor = false } } }, data: Base => class extends Base { _getChangedColumnIndices(oldItem, newItem, rowIndex, isLiveUpdate) { if (this._editingController.isRowBasedEditMode() && oldItem.isEditing !== newItem.isEditing) { return } return super._getChangedColumnIndices.apply(this, arguments) } } }, views: { rowsView: Base => class extends Base { _createRow(row) { const $row = super._createRow.apply(this, arguments); if (row) { const editingController = this._editingController; const isEditRow = editingController.isEditRow(row.rowIndex); if (isEditRow) { $row.addClass(_const.EDIT_ROW); $row.removeClass(_const.ROW_SELECTED_CLASS); if ("detail" === row.rowType) { $row.addClass(this.addWidgetPrefix(_const.EDIT_FORM_CLASS)) } } } return $row } _update(change) { super._update(change); if ("updateSelection" === change.changeType) { this.getTableElements().children("tbody").children(`.${_const.EDIT_ROW}`).removeClass(_const.ROW_SELECTED_CLASS) } } } } } } }, 1414: /*!***************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/grid_core/editing/m_editing_utils.js ***! \***************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.getButtonIndex = exports.generateNewRowTempKey = exports.forEachFormItems = exports.createFailureHandler = void 0; exports.getButtonName = getButtonName; exports.getEditorType = exports.getEditingTexts = void 0; exports.isEditable = function($element) { return $element && ($element.is("input") || $element.is("textarea")) }; exports.isNewRowTempKey = exports.isEditingOrShowEditorAlwaysDataCell = exports.isEditingCell = void 0; var _guid = (e = __webpack_require__( /*! ../../../../core/guid */ 19427), e && e.__esModule ? e : { default: e }); var e; var _type = __webpack_require__( /*! ../../../../core/utils/type */ 11528); exports.createFailureHandler = function(deferred) { return function(arg) { const error = arg instanceof Error ? arg : new Error(arg && String(arg) || "Unknown error"); deferred.reject(error) } }; const isEditingCell = function(isEditRow, cellOptions) { return cellOptions.isEditing || isEditRow && cellOptions.column.allowEditing }; exports.isEditingCell = isEditingCell; exports.isEditingOrShowEditorAlwaysDataCell = function(isEditRow, cellOptions) { const isCommandCell = !!cellOptions.column.command; const isEditing = isEditingCell(isEditRow, cellOptions); const isEditorCell = !isCommandCell && (isEditing || cellOptions.column.showEditorAlways); return "data" === cellOptions.rowType && isEditorCell }; exports.getEditingTexts = options => { const editingTexts = options.component.option("editing.texts") || {}; return { save: editingTexts.saveRowChanges, cancel: editingTexts.cancelRowChanges, edit: editingTexts.editRow, undelete: editingTexts.undeleteRow, delete: editingTexts.deleteRow, add: editingTexts.addRowToNode } }; exports.generateNewRowTempKey = () => `_DX_KEY_${new _guid.default}`; exports.isNewRowTempKey = key => "string" === typeof key && key.startsWith("_DX_KEY_") && 44 === key.length; exports.getButtonIndex = (buttons, name) => { let result = -1; buttons.some(((button, index) => { if (getButtonName(button) === name) { result = index; return true } })); return result }; function getButtonName(button) { return (0, _type.isObject)(button) ? button.name : button } exports.getEditorType = item => { var _column$formItem; const { column: column } = item; return item.isCustomEditorType ? item.editorType : null === (_column$formItem = column.formItem) || void 0 === _column$formItem ? void 0 : _column$formItem.editorType }; const forEachFormItems = (items, callBack) => { items.forEach((item => { if (item.items || item.tabs) { forEachFormItems(item.items || item.tabs, callBack) } else { callBack(item) } })) }; exports.forEachFormItems = forEachFormItems }, 77862: /*!***********************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/grid_core/editor_factory/m_editor_factory.js ***! \***********************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.editorFactoryModule = exports.EditorFactory = void 0; var _position = _interopRequireDefault(__webpack_require__( /*! ../../../../common/core/animation/position */ 3030)); var _click = __webpack_require__( /*! ../../../../common/core/events/click */ 64044); var _events_engine = _interopRequireDefault(__webpack_require__( /*! ../../../../common/core/events/core/events_engine */ 92774)); var _index = __webpack_require__( /*! ../../../../common/core/events/utils/index */ 98834); var _dom_adapter = _interopRequireDefault(__webpack_require__( /*! ../../../../core/dom_adapter */ 64960)); var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../../../core/renderer */ 64553)); var _browser = _interopRequireDefault(__webpack_require__( /*! ../../../../core/utils/browser */ 48314)); var _extend = __webpack_require__( /*! ../../../../core/utils/extend */ 52576); var _position2 = __webpack_require__( /*! ../../../../core/utils/position */ 41639); var _size = __webpack_require__( /*! ../../../../core/utils/size */ 57653); var _ui = _interopRequireDefault(__webpack_require__( /*! ../../../../ui/shared/ui.editor_factory_mixin */ 87093)); var _m_modules = _interopRequireDefault(__webpack_require__( /*! ../m_modules */ 74854)); var _m_utils = _interopRequireDefault(__webpack_require__( /*! ../m_utils */ 53226)); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } const UPDATE_FOCUS_EVENTS = (0, _index.addNamespace)([_click.name, "focusin"].join(" "), "dxDataGridEditorFactory"); const ViewControllerWithMixin = (0, _ui.default)(_m_modules.default.ViewController); class EditorFactory extends ViewControllerWithMixin { init() { this.createAction("onEditorPreparing", { excludeValidators: ["disabled", "readOnly"], category: "rendering" }); this.createAction("onEditorPrepared", { excludeValidators: ["disabled", "readOnly"], category: "rendering" }); this._columnsResizerController = this.getController("columnsResizer"); this._editingController = this.getController("editing"); this._keyboardNavigationController = this.getController("keyboardNavigation"); this._columnsController = this.getController("columns"); this._validatingController = this.getController("validating"); this._columnHeadersView = this.getView("columnHeadersView"); this._rowsView = this.getView("rowsView"); this._updateFocusHandler = this._updateFocusHandler || this.createAction(this._updateFocus.bind(this)); this._subscribedContainerRoot = this._getContainerRoot(); _events_engine.default.on(this._subscribedContainerRoot, UPDATE_FOCUS_EVENTS, this._updateFocusHandler); this._attachContainerEventHandlers() } dispose() { clearTimeout(this._focusTimeoutID); clearTimeout(this._updateFocusTimeoutID); _events_engine.default.off(this._subscribedContainerRoot, UPDATE_FOCUS_EVENTS, this._updateFocusHandler) } _getFocusedElement($dataGridElement) { const rowSelector = this.option("focusedRowEnabled") ? "tr[tabindex]:focus" : "tr[tabindex]:not(.dx-data-row):focus"; const focusedElementSelector = ["td[tabindex]:focus", `${rowSelector}`, "input:focus", "button:focus", "textarea:focus", "div[tabindex]:focus", ".dx-lookup-field:focus", ".dx-checkbox:focus", ".dx-switch:focus", ".dx-dropdownbutton .dx-buttongroup:focus", ".dx-adaptive-item-text:focus"].join(","); const $focusedElement = $dataGridElement.find(focusedElementSelector); return this.elementIsInsideGrid($focusedElement) && $focusedElement } _getFocusCellSelector() { return ".dx-row > td" } _updateFocusCore() { const $dataGridElement = this.component && this.component.$element(); if ($dataGridElement) { let $focus = this._getFocusedElement($dataGridElement); if ($focus && $focus.length) { let isHideBorder; if (!$focus.hasClass("dx-cell-focus-disabled") && !$focus.hasClass("dx-row")) { const $focusCell = $focus.closest(`${this._getFocusCellSelector()}, .dx-cell-focus-disabled`); if ($focusCell.get(0) !== $focus.get(0)) { isHideBorder = this._needHideBorder($focusCell); $focus = $focusCell } } if ($focus.length && !$focus.hasClass("dx-cell-focus-disabled")) { this.focus($focus, isHideBorder); return } } } this.loseFocus() } _needHideBorder($element) { const rowsViewElement = this._rowsView.element(); const isRowsView = $element.closest(rowsViewElement).length > 0; const isEditing = this._editingController.isEditing(); return $element.hasClass("dx-editor-inline-block") || isRowsView && !isEditing } _updateFocus(e) { const that = this; const isFocusOverlay = e && e.event && (0, _renderer.default)(e.event.target).hasClass(that.addWidgetPrefix("focus-overlay")); that._isFocusOverlay = that._isFocusOverlay || isFocusOverlay; clearTimeout(that._updateFocusTimeoutID); that._updateFocusTimeoutID = setTimeout((() => { delete that._updateFocusTimeoutID; if (!that._isFocusOverlay) { that._updateFocusCore() } that._isFocusOverlay = false })) } updateFocusOverlaySize($element, position) { $element.hide(); const location = _position.default.calculate($element, (0, _extend.extend)({ collision: "fit" }, position)); if (location.h.oversize > 0) { (0, _size.setOuterWidth)($element, (0, _size.getOuterWidth)($element) - location.h.oversize) } if (location.v.oversize > 0) { (0, _size.setOuterHeight)($element, (0, _size.getOuterHeight)($element) - location.v.oversize) } $element.show() } callbackNames() { return ["focused"] } getFocusOverlayContainer($focusedElement) { return $focusedElement.closest(`.${this.addWidgetPrefix("content")}`) } getFocusOverlaySize($element) { const elementRect = (0, _position2.getBoundingRect)($element.get(0)); return { width: elementRect.right - elementRect.left + 1, height: elementRect.bottom - elementRect.top + 1 } } updateFocusOverlay($element) { let isHideBorder = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : false; if (isHideBorder) { this._$focusOverlay.addClass("dx-hidden") } else if ($element.length) { const align = _browser.default.mozilla ? "right bottom" : "left top"; const isFocusedCellInvalid = $element.hasClass(this.addWidgetPrefix("invalid")); const isFocusedCellModified = $element.hasClass("dx-cell-modified") && !isFocusedCellInvalid; const $content = this.getFocusOverlayContainer($element); const focusOverlaySize = this.getFocusOverlaySize($element); this._$focusOverlay.removeClass("dx-hidden").toggleClass("dx-focused-cell-invalid", isFocusedCellInvalid).toggleClass("dx-focused-cell-modified", isFocusedCellModified).appendTo($content); (0, _size.setOuterHeight)(this._$focusOverlay, focusOverlaySize.height); (0, _size.setOuterWidth)(this._$focusOverlay, focusOverlaySize.width); const focusOverlayPosition = { precise: true, my: align, at: align, of: $element, boundary: $content.length && $content }; this.updateFocusOverlaySize(this._$focusOverlay, focusOverlayPosition); _position.default.setup(this._$focusOverlay, focusOverlayPosition); this._$focusOverlay.css("visibility", "visible") } } renderFocusOverlay($element, isHideBorder) { if (!_m_utils.default.isElementInCurrentGrid(this, $element)) { return } if (!this._$focusOverlay) { this._$focusOverlay = (0, _renderer.default)("
").addClass(this.addWidgetPrefix("focus-overlay")) } this.updateFocusOverlay($element, isHideBorder) } focus($element, isHideBorder) { const that = this; if (void 0 === $element) { return that._$focusedElement } if ($element) { if (!$element.is(that._$focusedElement)) { that._$focusedElement && that._$focusedElement.removeClass("dx-focused") } that._$focusedElement = $element; clearTimeout(that._focusTimeoutID); that._focusTimeoutID = setTimeout((() => { delete that._focusTimeoutID; that.renderFocusOverlay($element, isHideBorder); $element.addClass("dx-focused"); that.focused.fire($element) })) } } refocus() { const $focus = this.focus(); this.focus($focus) } resize() { const $focusedElement = this._$focusedElement; if ($focusedElement) { this.focus($focusedElement) } } loseFocus(skipValidator) { this._$focusedElement && this._$focusedElement.removeClass("dx-focused"); this._$focusedElement = null; this._$focusOverlay && this._$focusOverlay.addClass("dx-hidden") } _getContainerRoot() { var _this$component; const $container = null === (_this$component = this.component) || void 0 === _this$component ? void 0 : _this$component.$element(); const root = _dom_adapter.default.getRootNode(null === $container || void 0 === $container ? void 0 : $container.get(0)); if (root.nodeType === Node.DOCUMENT_FRAGMENT_NODE && !root.host) { return _dom_adapter.default.getDocument() } return root } _attachContainerEventHandlers() { const that = this; const $container = that.component && that.component.$element(); if ($container) { _events_engine.default.on($container, (0, _index.addNamespace)("keydown", "dxDataGridEditorFactory"), (e => { if ("tab" === (0, _index.normalizeKeyName)(e)) { that._updateFocusHandler(e) } })) } } getFocusOverlay() { return this._$focusOverlay } hasOverlayElements() { var _this$_$focusOverlay; return !!(null !== (_this$_$focusOverlay = this._$focusOverlay) && void 0 !== _this$_$focusOverlay && _this$_$focusOverlay.length) && !this._$focusOverlay.hasClass("dx-hidden") } } exports.EditorFactory = EditorFactory; exports.editorFactoryModule = { defaultOptions: () => ({}), controllers: { editorFactory: EditorFactory } } }, 82358: /*!***********************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/grid_core/error_handling/m_error_handling.js ***! \***********************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.errorHandlingModule = exports.ErrorHandlingController = void 0; var _click = __webpack_require__( /*! ../../../../common/core/events/click */ 64044); var _events_engine = _interopRequireDefault(__webpack_require__( /*! ../../../../common/core/events/core/events_engine */ 92774)); var _message = _interopRequireDefault(__webpack_require__( /*! ../../../../common/core/localization/message */ 4671)); var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../../../core/renderer */ 64553)); var _iterator = __webpack_require__( /*! ../../../../core/utils/iterator */ 21274); var _m_modules = _interopRequireDefault(__webpack_require__( /*! ../m_modules */ 74854)); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } class ErrorHandlingController extends _m_modules.default.ViewController { init() { this._resizingController = this.getController("resizing"); this._columnsController = this.getController("columns"); this._columnHeadersView = this.getView("columnHeadersView"); this._rowsView = this.getView("rowsView") } _createErrorRow(error, $tableElements) { let $errorRow; let $closeButton; const $errorMessage = this._renderErrorMessage(error); if ($tableElements) { $errorRow = (0, _renderer.default)("").attr("role", "row").addClass("dx-error-row"); $closeButton = (0, _renderer.default)("
").addClass("dx-closebutton").addClass(this.addWidgetPrefix("action")); _events_engine.default.on($closeButton, _click.name, this.createAction((args => { var _this$_resizingContro, _this$_resizingContro2; const e = args.event; let $errorRow; const errorRowIndex = (0, _renderer.default)(e.currentTarget).closest(".dx-error-row").index(); e.stopPropagation(); (0, _iterator.each)($tableElements, ((_, tableElement) => { $errorRow = (0, _renderer.default)(tableElement).children("tbody").children("tr").eq(errorRowIndex); this.removeErrorRow($errorRow) })); null === (_this$_resizingContro = this._resizingController) || void 0 === _this$_resizingContro || null === (_this$_resizingContro2 = _this$_resizingContro.fireContentReadyAction) || void 0 === _this$_resizingContro2 || _this$_resizingContro2.call(_this$_resizingContro) }))); (0, _renderer.default)("").attr({ colSpan: this._columnsController.getVisibleColumns().length, role: "gridcell" }).prepend($closeButton).append($errorMessage).appendTo($errorRow); return $errorRow } return $errorMessage } _renderErrorMessage(error) { const message = error.url ? error.message.replace(error.url, "") : error.message || error; const $message = (0, _renderer.default)("
").attr("role", "alert").attr("aria-roledescription", _message.default.format("dxDataGrid-ariaError")).addClass("dx-error-message").text(message); if (error.url) { (0, _renderer.default)("").attr("href", error.url).text(error.url).appendTo($message) } return $message } renderErrorRow(error, rowIndex, $popupContent) { var _this$_resizingContro3, _this$_resizingContro4; const that = this; let $errorMessageElement; let $firstErrorRow; if ($popupContent) { $popupContent.find(".dx-error-message").remove(); $errorMessageElement = that._createErrorRow(error); $popupContent.prepend($errorMessageElement); return $errorMessageElement } const viewElement = rowIndex >= 0 || !that._columnHeadersView.isVisible() ? that._rowsView : that._columnHeadersView; const $tableElements = viewElement.getTableElements(); (0, _iterator.each)($tableElements, ((_, tableElement) => { $errorMessageElement = that._createErrorRow(error, $tableElements); $firstErrorRow = $firstErrorRow || $errorMessageElement; if (rowIndex >= 0) { const $row = viewElement._getRowElements((0, _renderer.default)(tableElement)).eq(rowIndex); that.removeErrorRow($row.next()); $errorMessageElement.insertAfter($row) } else { const $tbody = (0, _renderer.default)(tableElement).children("tbody"); const rowElements = $tbody.children("tr"); if (that._columnHeadersView.isVisible()) { that.removeErrorRow(rowElements.last()); (0, _renderer.default)(tableElement).append($errorMessageElement) } else { that.removeErrorRow(rowElements.first()); $tbody.first().prepend($errorMessageElement) } } })); null === (_this$_resizingContro3 = this._resizingController) || void 0 === _this$_resizingContro3 || null === (_this$_resizingContro4 = _this$_resizingContro3.fireContentReadyAction) || void 0 === _this$_resizingContro4 || _this$_resizingContro4.call(_this$_resizingContro3); return $firstErrorRow } removeErrorRow($row) { if (!$row) { const $columnHeaders = this._columnHeadersView && this._columnHeadersView.element(); $row = $columnHeaders && $columnHeaders.find(".dx-error-row"); if (!$row || !$row.length) { const $rowsViewElement = this._rowsView.element(); $row = $rowsViewElement && $rowsViewElement.find(".dx-error-row") } } $row && $row.hasClass("dx-error-row") && $row.remove() } optionChanged(args) { if ("errorRowEnabled" === args.name) { args.handled = true } else { super.optionChanged(args) } } } exports.ErrorHandlingController = ErrorHandlingController; exports.errorHandlingModule = { defaultOptions: () => ({ errorRowEnabled: true }), controllers: { errorHandling: ErrorHandlingController }, extenders: { controllers: { data: Base => class extends Base { init() { super.init(); this.dataErrorOccurred.add(((error, $popupContent) => { if (this.option("errorRowEnabled")) { this._errorHandlingController.renderErrorRow(error, void 0, $popupContent) } })); this.changed.add((e => { if (e && "loadError" === e.changeType) { return } if (this._editingController && !this._editingController.hasChanges()) { var _this$_errorHandlingC, _this$_errorHandlingC2; null === (_this$_errorHandlingC = this._errorHandlingController) || void 0 === _this$_errorHandlingC || null === (_this$_errorHandlingC2 = _this$_errorHandlingC.removeErrorRow) || void 0 === _this$_errorHandlingC2 || _this$_errorHandlingC2.call(_this$_errorHandlingC) } })) } } } } } }, 65382: /*!***************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/grid_core/filter/m_filter_builder.js ***! \***************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.filterBuilderModule = exports.FilterBuilderView = void 0; var _message = _interopRequireDefault(__webpack_require__( /*! ../../../../common/core/localization/message */ 4671)); var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../../../core/renderer */ 64553)); var _extend = __webpack_require__( /*! ../../../../core/utils/extend */ 52576); var _filter_builder = _interopRequireDefault(__webpack_require__( /*! ../../../../ui/filter_builder */ 35299)); var _ui = _interopRequireDefault(__webpack_require__( /*! ../../../../ui/popup/ui.popup */ 10720)); var _scroll_view = _interopRequireDefault(__webpack_require__( /*! ../../../../ui/scroll_view */ 91374)); var _accessibility = __webpack_require__( /*! ../../../../ui/shared/accessibility */ 16191); var _m_modules = _interopRequireDefault(__webpack_require__( /*! ../m_modules */ 74854)); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } class FilterBuilderView extends _m_modules.default.View { init() { super.init(); this._columnsController = this.getController("columns"); this._filterSyncController = this.getController("filterSync") } optionChanged(args) { switch (args.name) { case "filterBuilder": case "filterBuilderPopup": this._invalidate(); args.handled = true; break; default: super.optionChanged(args) } } _renderCore() { this._updatePopupOptions() } _updatePopupOptions() { if (this.option("filterBuilderPopup.visible")) { this._initPopup() } else if (this._filterBuilderPopup) { this._filterBuilderPopup.hide() } } _disposePopup() { if (this._filterBuilderPopup) { this._filterBuilderPopup.dispose(); this._filterBuilderPopup = void 0 } if (this._filterBuilder) { this._filterBuilder.dispose(); this._filterBuilder = void 0 } } _initPopup() { const that = this; that._disposePopup(); that._filterBuilderPopup = that._createComponent(that.element(), _ui.default, (0, _extend.extend)({ title: _message.default.format("dxDataGrid-filterBuilderPopupTitle"), contentTemplate: $contentElement => that._getPopupContentTemplate($contentElement), onOptionChanged(args) { if ("visible" === args.name) { that.option("filterBuilderPopup.visible", args.value) } }, toolbarItems: that._getPopupToolbarItems() }, that.option("filterBuilderPopup"), { onHidden() { (0, _accessibility.restoreFocus)(that); that._disposePopup() } })) } _getPopupContentTemplate(contentElement) { const $contentElement = (0, _renderer.default)(contentElement); const $filterBuilderContainer = (0, _renderer.default)("
").appendTo((0, _renderer.default)(contentElement)); this._filterBuilder = this._createComponent($filterBuilderContainer, _filter_builder.default, (0, _extend.extend)({ value: this.option("filterValue"), fields: this._columnsController.getFilteringColumns() }, this.option("filterBuilder"), { customOperations: this._filterSyncController.getCustomFilterOperations() })); this._createComponent($contentElement, _scroll_view.default, { direction: "both" }) } _getPopupToolbarItems() { const that = this; return [{ toolbar: "bottom", location: "after", widget: "dxButton", options: { text: _message.default.format("OK"), onClick() { const filter = that._filterBuilder.option("value"); that.option("filterValue", filter); that._filterBuilderPopup.hide() } } }, { toolbar: "bottom", location: "after", widget: "dxButton", options: { text: _message.default.format("Cancel"), onClick() { that._filterBuilderPopup.hide() } } }] } } exports.FilterBuilderView = FilterBuilderView; exports.filterBuilderModule = { defaultOptions: () => ({ filterBuilder: { groupOperationDescriptions: { and: _message.default.format("dxFilterBuilder-and"), or: _message.default.format("dxFilterBuilder-or"), notAnd: _message.default.format("dxFilterBuilder-notAnd"), notOr: _message.default.format("dxFilterBuilder-notOr") }, filterOperationDescriptions: { between: _message.default.format("dxFilterBuilder-filterOperationBetween"), equal: _message.default.format("dxFilterBuilder-filterOperationEquals"), notEqual: _message.default.format("dxFilterBuilder-filterOperationNotEquals"), lessThan: _message.default.format("dxFilterBuilder-filterOperationLess"), lessThanOrEqual: _message.default.format("dxFilterBuilder-filterOperationLessOrEquals"), greaterThan: _message.default.format("dxFilterBuilder-filterOperationGreater"), greaterThanOrEqual: _message.default.format("dxFilterBuilder-filterOperationGreaterOrEquals"), startsWith: _message.default.format("dxFilterBuilder-filterOperationStartsWith"), contains: _message.default.format("dxFilterBuilder-filterOperationContains"), notContains: _message.default.format("dxFilterBuilder-filterOperationNotContains"), endsWith: _message.default.format("dxFilterBuilder-filterOperationEndsWith"), isBlank: _message.default.format("dxFilterBuilder-filterOperationIsBlank"), isNotBlank: _message.default.format("dxFilterBuilder-filterOperationIsNotBlank") } }, filterBuilderPopup: {} }), views: { filterBuilderView: FilterBuilderView } } }, 44651: /*!*************************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/grid_core/filter/m_filter_custom_operations.js ***! \*************************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.anyOf = function(grid) { return (0, _extend.extend)(baseOperation(grid), { name: "anyof", icon: "selectall", caption: _message.default.format("dxFilterBuilder-filterOperationAnyOf") }) }; exports.noneOf = function(grid) { const baseOp = baseOperation(grid); return (0, _extend.extend)({}, baseOp, { calculateFilterExpression(filterValue, field, fields) { const baseFilter = baseOp.calculateFilterExpression(filterValue, field, fields); if (!baseFilter || 0 === baseFilter.length) { return null } return "!" === baseFilter[0] ? baseFilter : ["!", baseFilter] }, name: "noneof", icon: "unselectall", caption: _message.default.format("dxFilterBuilder-filterOperationNoneOf") }) }; var _message = _interopRequireDefault(__webpack_require__( /*! ../../../../common/core/localization/message */ 4671)); var _data_source = __webpack_require__( /*! ../../../../common/data/data_source/data_source */ 68216); var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../../../core/renderer */ 64553)); var _deferred = __webpack_require__( /*! ../../../../core/utils/deferred */ 87739); var _extend = __webpack_require__( /*! ../../../../core/utils/extend */ 52576); var _ui = _interopRequireDefault(__webpack_require__( /*! ../../../../ui/widget/ui.errors */ 35185)); var _m_utils = __webpack_require__( /*! ../../../filter_builder/m_utils */ 29498); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } function baseOperation(grid) { const getFullText = function(itemText, parentText) { return parentText ? `${parentText}/${itemText}` : itemText }; const getSelectedItemsTexts = function(items, parentText) { let result = []; items.forEach((item => { if (item.items) { const selectedItemsTexts = getSelectedItemsTexts(item.items, getFullText(item.text, parentText)); result = result.concat(selectedItemsTexts) } item.selected && result.push(getFullText(item.text, parentText)) })); return result }; const headerFilterController = grid && grid.getController("headerFilter"); return { dataTypes: ["string", "date", "datetime", "number", "boolean", "object"], calculateFilterExpression: function(filterValue, field, fields) { const result = []; const lastIndex = filterValue.length - 1; filterValue && filterValue.forEach(((value, index) => { if ((0, _m_utils.isCondition)(value) || (0, _m_utils.isGroup)(value)) { const filterExpression = (0, _m_utils.getFilterExpression)(value, fields, [], "headerFilter"); result.push(filterExpression) } else { const filterExpression = (0, _m_utils.getFilterExpression)([field.dataField, "=", value], fields, [], "headerFilter"); result.push(filterExpression) } index !== lastIndex && result.push("or") })); if (1 === result.length) { return result[0] } return result }, editorTemplate(conditionInfo, container) { const div = (0, _renderer.default)("
").addClass("dx-filterbuilder-item-value-text").appendTo(container); const column = (0, _extend.extend)(true, {}, grid.columnOption(conditionInfo.field.dataField)); (0, _m_utils.renderValueText)(div, conditionInfo.text && conditionInfo.text.split("|")); column.filterType = "include"; column.filterValues = conditionInfo.value ? conditionInfo.value.slice() : []; headerFilterController.showHeaderFilterMenuBase({ columnElement: div, column: column, apply() { value = this.filterValues, void conditionInfo.setValue(value); var value; headerFilterController.hideHeaderFilterMenu(); conditionInfo.closeEditor() }, onHidden() { conditionInfo.closeEditor() }, isFilterBuilder: true }); return container }, customizeText: function(fieldInfo, options) { options = options || {}; const { value: value } = fieldInfo; let column = grid.columnOption(fieldInfo.field.dataField); const headerFilter = column && column.headerFilter; const lookup = column && column.lookup; const values = options.values || [value]; if (headerFilter && headerFilter.dataSource || lookup && lookup.dataSource) { const result = new _deferred.Deferred; const itemsDeferred = options.items || new _deferred.Deferred; if (!options.items) { column = (0, _extend.extend)({}, column, { filterType: "include", filterValues: values }); const dataSourceOptions = headerFilterController.getDataSource(column); dataSourceOptions.paginate = false; const dataSource = new _data_source.DataSource(dataSourceOptions); const key = dataSource.store().key(); if (key) { const { values: values } = options; if (values && values.length > 1) { const filter = values.reduce(((result, value) => { if (result.length) { result.push("or") } result.push([key, "=", value]); return result }), []); dataSource.filter(filter) } else { dataSource.filter([key, "=", fieldInfo.value]) } } else if (fieldInfo.field.calculateDisplayValue) { _ui.default.log("W1017") } options.items = itemsDeferred; dataSource.load().done(itemsDeferred.resolve) } itemsDeferred.done((items => { const index = values.indexOf(fieldInfo.value); result.resolve(getSelectedItemsTexts(items, null)[index]) })); return result } const text = headerFilterController.getHeaderItemText(value, column, 0, grid.option("headerFilter")); return text } } } }, 17887: /*!*************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/grid_core/filter/m_filter_panel.js ***! \*************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.filterPanelModule = exports.FilterPanelView = void 0; var _events_engine = _interopRequireDefault(__webpack_require__( /*! ../../../../common/core/events/core/events_engine */ 92774)); var _message = _interopRequireDefault(__webpack_require__( /*! ../../../../common/core/localization/message */ 4671)); var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../../../core/renderer */ 64553)); var _deferred = __webpack_require__( /*! ../../../../core/utils/deferred */ 87739); var _type = __webpack_require__( /*! ../../../../core/utils/type */ 11528); var _check_box = _interopRequireDefault(__webpack_require__( /*! ../../../../ui/check_box */ 94319)); var _m_inflector = _interopRequireDefault(__webpack_require__( /*! ../../../core/utils/m_inflector */ 66122)); var _m_utils = __webpack_require__( /*! ../../../filter_builder/m_utils */ 29498); var _m_accessibility = __webpack_require__( /*! ../m_accessibility */ 68491); var _m_modules = _interopRequireDefault(__webpack_require__( /*! ../m_modules */ 74854)); var _m_utils2 = _interopRequireDefault(__webpack_require__( /*! ../m_utils */ 53226)); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } class FilterPanelView extends _m_modules.default.View { init() { this._dataController = this.getController("data"); this._columnsController = this.getController("columns"); this._filterSyncController = this.getController("filterSync"); this._dataController.dataSourceChanged.add((() => this.render())) } isVisible() { return this.option("filterPanel.visible") && this._dataController.dataSource() } _renderCore() { const $element = this.element(); $element.empty(); const isColumnsDefined = !!this._columnsController.getColumns().length; if (!isColumnsDefined) { return } $element.addClass(this.addWidgetPrefix("filter-panel")); const $leftContainer = (0, _renderer.default)("
").addClass(this.addWidgetPrefix("filter-panel-left")).appendTo($element); this._renderFilterBuilderText($element, $leftContainer) } _renderFilterBuilderText($element, $leftContainer) { const $filterElement = this._getFilterElement(); const $textElement = this._getTextElement(); if (this.option("filterValue") || this._filterValueBuffer) { const $checkElement = this._getCheckElement(); const $removeButtonElement = this._getRemoveButtonElement(); $leftContainer.append($checkElement).append($filterElement).append($textElement); $element.append($removeButtonElement); return } $leftContainer.append($filterElement).append($textElement) } _getCheckElement() { const that = this; const $element = (0, _renderer.default)("
").addClass(this.addWidgetPrefix("filter-panel-checkbox")); that._createComponent($element, _check_box.default, { value: that.option("filterPanel.filterEnabled"), onValueChanged(e) { that.option("filterPanel.filterEnabled", e.value) } }); $element.attr("title", this.option("filterPanel.texts.filterEnabledHint")); return $element } _getFilterElement() { const that = this; const $element = (0, _renderer.default)("
").addClass("dx-icon-filter"); _events_engine.default.on($element, "click", (() => that._showFilterBuilder())); (0, _m_accessibility.registerKeyboardAction)("filterPanel", that, $element, void 0, (() => that._showFilterBuilder())); that._addTabIndexToElement($element); return $element } _getTextElement() { const that = this; const $textElement = (0, _renderer.default)("
").addClass(that.addWidgetPrefix("filter-panel-text")); let filterText; const filterValue = that.option("filterValue"); if (filterValue) { (0, _deferred.when)(that.getFilterText(filterValue, this._filterSyncController.getCustomFilterOperations())).done((filterText => { const customizeText = that.option("filterPanel.customizeText"); if (customizeText) { const customText = customizeText({ component: that.component, filterValue: filterValue, text: filterText }); if ("string" === typeof customText) { filterText = customText } } $textElement.text(filterText) })) } else { filterText = that.option("filterPanel.texts.createFilter"); $textElement.text(filterText) } _events_engine.default.on($textElement, "click", (() => that._showFilterBuilder())); (0, _m_accessibility.registerKeyboardAction)("filterPanel", that, $textElement, void 0, (() => that._showFilterBuilder())); that._addTabIndexToElement($textElement); return $textElement } _showFilterBuilder() { this.option("filterBuilderPopup.visible", true) } _getRemoveButtonElement() { const that = this; const clearFilterValue = () => that.option("filterValue", null); const $element = (0, _renderer.default)("
").addClass(that.addWidgetPrefix("filter-panel-clear-filter")).text(that.option("filterPanel.texts.clearFilter")); _events_engine.default.on($element, "click", clearFilterValue); (0, _m_accessibility.registerKeyboardAction)("filterPanel", this, $element, void 0, clearFilterValue); that._addTabIndexToElement($element); return $element } _addTabIndexToElement($element) { if (!this.option("useLegacyKeyboardNavigation")) { const tabindex = this.option("tabindex") || 0; $element.attr("tabindex", tabindex) } } optionChanged(args) { switch (args.name) { case "filterValue": this._invalidate(); this.option("filterPanel.filterEnabled", true); args.handled = true; break; case "filterPanel": this._invalidate(); args.handled = true; break; default: super.optionChanged(args) } } _getConditionText(fieldText, operationText, valueText) { let result = `[${fieldText}] ${operationText}`; if ((0, _type.isDefined)(valueText)) { result += valueText } return result } _getValueMaskedText(value) { return Array.isArray(value) ? `('${value.join("', '")}')` : ` '${value}'` } _getValueText(field, customOperation, value) { const deferred = new _deferred.Deferred; const hasCustomOperation = customOperation && customOperation.customizeText; if ((0, _type.isDefined)(value) || hasCustomOperation) { if (!hasCustomOperation && field.lookup) { (0, _m_utils.getCurrentLookupValueText)(field, value, (data => { deferred.resolve(this._getValueMaskedText(data)) })) } else { const displayValue = Array.isArray(value) ? value : _m_utils2.default.getDisplayValue(field, value, null); (0, _deferred.when)((0, _m_utils.getCurrentValueText)(field, displayValue, customOperation, "filterPanel")).done((data => { deferred.resolve(this._getValueMaskedText(data)) })) } } else { deferred.resolve("") } return deferred.promise() } getConditionText(filterValue, options) { const that = this; const operation = filterValue[1]; const deferred = new _deferred.Deferred; const customOperation = (0, _m_utils.getCustomOperation)(options.customOperations, operation); let operationText; const field = (0, _m_utils.getField)(filterValue[0], options.columns); const fieldText = field.caption || ""; const value = filterValue[2]; if (customOperation) { operationText = customOperation.caption || _m_inflector.default.captionize(customOperation.name) } else if (null === value) { operationText = (0, _m_utils.getCaptionByOperation)("=" === operation ? "isblank" : "isnotblank", options.filterOperationDescriptions) } else { operationText = (0, _m_utils.getCaptionByOperation)(operation, options.filterOperationDescriptions) } this._getValueText(field, customOperation, value).done((valueText => { deferred.resolve(that._getConditionText(fieldText, operationText, valueText)) })); return deferred } getGroupText(filterValue, options, isInnerGroup) { const that = this; const result = new _deferred.Deferred; const textParts = []; const groupValue = (0, _m_utils.getGroupValue)(filterValue); filterValue.forEach((item => { if ((0, _m_utils.isCondition)(item)) { textParts.push(that.getConditionText(item, options)) } else if ((0, _m_utils.isGroup)(item)) { textParts.push(that.getGroupText(item, options, true)) } })); _deferred.when.apply(this, textParts).done((function() { let text; for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { args[_key] = arguments[_key] } if (groupValue.startsWith("!")) { const groupText = options.groupOperationDescriptions[`not${groupValue.substring(1,2).toUpperCase()}${groupValue.substring(2)}`].split(" "); text = `${groupText[0]} ${args[0]}` } else { text = args.join(` ${options.groupOperationDescriptions[groupValue]} `) } if (isInnerGroup) { text = `(${text})` } result.resolve(text) })); return result } getFilterText(filterValue, customOperations) { const options = { customOperations: customOperations, columns: this._columnsController.getFilteringColumns(), filterOperationDescriptions: this.option("filterBuilder.filterOperationDescriptions"), groupOperationDescriptions: this.option("filterBuilder.groupOperationDescriptions") }; return (0, _m_utils.isCondition)(filterValue) ? this.getConditionText(filterValue, options) : this.getGroupText(filterValue, options) } } exports.FilterPanelView = FilterPanelView; exports.filterPanelModule = { defaultOptions: () => ({ filterPanel: { visible: false, filterEnabled: true, texts: { createFilter: _message.default.format("dxDataGrid-filterPanelCreateFilter"), clearFilter: _message.default.format("dxDataGrid-filterPanelClearFilter"), filterEnabledHint: _message.default.format("dxDataGrid-filterPanelFilterEnabledHint") } } }), views: { filterPanelView: FilterPanelView }, extenders: { controllers: { data: Base => class extends Base { optionChanged(args) { if ("filterPanel" === args.name) { this._applyFilter(); args.handled = true } else { super.optionChanged(args) } } } } } } }, 62289: /*!***********************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/grid_core/filter/m_filter_row.js ***! \***********************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.filterRowModule = exports.ApplyFilterViewController = void 0; var _events_engine = _interopRequireDefault(__webpack_require__( /*! ../../../../common/core/events/core/events_engine */ 92774)); var _index = __webpack_require__( /*! ../../../../common/core/events/utils/index */ 98834); var _message = _interopRequireDefault(__webpack_require__( /*! ../../../../common/core/localization/message */ 4671)); var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../../../core/renderer */ 64553)); var _common = __webpack_require__( /*! ../../../../core/utils/common */ 17781); var _extend = __webpack_require__( /*! ../../../../core/utils/extend */ 52576); var _iterator = __webpack_require__( /*! ../../../../core/utils/iterator */ 21274); var _size = __webpack_require__( /*! ../../../../core/utils/size */ 57653); var _type = __webpack_require__( /*! ../../../../core/utils/type */ 11528); var _editor = _interopRequireDefault(__webpack_require__( /*! ../../../../ui/editor/editor */ 78694)); var _menu = _interopRequireDefault(__webpack_require__( /*! ../../../../ui/menu */ 1614)); var _ui = _interopRequireDefault(__webpack_require__( /*! ../../../../ui/overlay/ui.overlay */ 89132)); var _accessibility = __webpack_require__( /*! ../../../../ui/shared/accessibility */ 16191); var _m_modules = _interopRequireDefault(__webpack_require__( /*! ../m_modules */ 74854)); var _m_utils = _interopRequireDefault(__webpack_require__( /*! ../m_utils */ 53226)); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } function _extends() { return _extends = Object.assign ? Object.assign.bind() : function(n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) { ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]) } } return n }, _extends.apply(null, arguments) } const OPERATION_ICONS = { "=": "filter-operation-equals", "<>": "filter-operation-not-equals", "<": "filter-operation-less", "<=": "filter-operation-less-equal", ">": "filter-operation-greater", ">=": "filter-operation-greater-equal", default: "filter-operation-default", notcontains: "filter-operation-not-contains", contains: "filter-operation-contains", startswith: "filter-operation-starts-with", endswith: "filter-operation-ends-with", between: "filter-operation-between" }; const OPERATION_DESCRIPTORS = { "=": "equal", "<>": "notEqual", "<": "lessThan", "<=": "lessThanOrEqual", ">": "greaterThan", ">=": "greaterThanOrEqual", startswith: "startsWith", contains: "contains", notcontains: "notContains", endswith: "endsWith", between: "between" }; const BETWEEN_OPERATION_DATA_TYPES = ["date", "datetime", "number"]; const ARIA_SEARCH_BOX = _message.default.format("dxDataGrid-ariaSearchBox"); function isOnClickApplyFilterMode(that) { return "onClick" === that.option("filterRow.applyFilter") } const getEditorInstance = function($editorContainer) { const $editor = null === $editorContainer || void 0 === $editorContainer ? void 0 : $editorContainer.children(); const componentNames = null === $editor || void 0 === $editor ? void 0 : $editor.data("dxComponents"); const editor = (null === componentNames || void 0 === componentNames ? void 0 : componentNames.length) && $editor.data(componentNames[0]); if (editor instanceof _editor.default) { return editor } return null }; const getRangeTextByFilterValue = function(that, column) { let result = ""; let rangeEnd = ""; const filterValue = getColumnFilterValue(that, column); const formatOptions = _m_utils.default.getFormatOptionsByColumn(column, "filterRow"); if (Array.isArray(filterValue)) { result = _m_utils.default.formatValue(filterValue[0], formatOptions); rangeEnd = _m_utils.default.formatValue(filterValue[1], formatOptions); if ("" !== rangeEnd) { result += ` - ${rangeEnd}` } } else if ((0, _type.isDefined)(filterValue)) { result = _m_utils.default.formatValue(filterValue, formatOptions) } return result }; function getColumnFilterValue(that, column) { if (column) { return isOnClickApplyFilterMode(that) && void 0 !== column.bufferedFilterValue ? column.bufferedFilterValue : column.filterValue } } const getColumnSelectedFilterOperation = function(that, column) { if (column) { return isOnClickApplyFilterMode(that) && void 0 !== column.bufferedSelectedFilterOperation ? column.bufferedSelectedFilterOperation : column.selectedFilterOperation } }; const getFilterValue = function(that, columnIndex, $editorContainer) { const column = that._columnsController.columnOption(columnIndex); const filterValue = getColumnFilterValue(that, column); const isFilterRange = $editorContainer.closest(`.${that.addWidgetPrefix("filter-range-overlay")}`).length; const isRangeStart = $editorContainer.hasClass(that.addWidgetPrefix("filter-range-start")); if (filterValue && Array.isArray(filterValue) && "between" === getColumnSelectedFilterOperation(that, column)) { if (isRangeStart) { return filterValue[0] } return filterValue[1] } return !isFilterRange && function(filterValue, column) { if (column && BETWEEN_OPERATION_DATA_TYPES.includes(column.dataType) && Array.isArray(filterValue)) { return false } return void 0 !== filterValue }(filterValue, column) ? filterValue : null }; const updateFilterValue = function(that, options) { const value = "" === options.value ? null : options.value; const $editorContainer = options.container; const column = that._columnsController.columnOption(options.column.index); const filterValue = getFilterValue(that, column.index, $editorContainer); if (!(0, _type.isDefined)(filterValue) && !(0, _type.isDefined)(value)) { return } that._applyFilterViewController.setHighLight($editorContainer, filterValue !== value); const columnOptionName = isOnClickApplyFilterMode(that) ? "bufferedFilterValue" : "filterValue"; const normalizedValue = function(that, filterValue, column, $editorContainer) { if ("between" === getColumnSelectedFilterOperation(that, column)) { const columnFilterValue = getColumnFilterValue(that, column); if ($editorContainer.hasClass(that.addWidgetPrefix("filter-range-start"))) { return [filterValue, Array.isArray(columnFilterValue) ? columnFilterValue[1] : void 0] } return [Array.isArray(columnFilterValue) ? columnFilterValue[0] : columnFilterValue, filterValue] } return filterValue }(that, value, column, $editorContainer); const isBetween = "between" === getColumnSelectedFilterOperation(that, column); const notFireEvent = options.notFireEvent || isBetween && Array.isArray(normalizedValue) && normalizedValue.includes(void 0); that._columnsController.columnOption(column.index, columnOptionName, normalizedValue, notFireEvent) }; class ApplyFilterViewController extends _m_modules.default.ViewController { init() { this._columnsController = this.getController("columns") } _getHeaderPanel() { if (!this._headerPanel) { this._headerPanel = this.getView("headerPanel") } return this._headerPanel } setHighLight($element, value) { if (isOnClickApplyFilterMode(this)) { (null === $element || void 0 === $element ? void 0 : $element.toggleClass("dx-highlight-outline", value)) && $element.closest(".dx-editor-cell").toggleClass("dx-filter-modified", value); this._getHeaderPanel().enableApplyButton(value) } } applyFilter() { const columns = this._columnsController.getColumns(); this._columnsController.beginUpdate(); for (let i = 0; i < columns.length; i++) { const column = columns[i]; if (void 0 !== column.bufferedFilterValue) { this._columnsController.columnOption(i, "filterValue", column.bufferedFilterValue); column.bufferedFilterValue = void 0 } if (void 0 !== column.bufferedSelectedFilterOperation) { this._columnsController.columnOption(i, "selectedFilterOperation", column.bufferedSelectedFilterOperation); column.bufferedSelectedFilterOperation = void 0 } } this._columnsController.endUpdate(); this.removeHighLights() } removeHighLights() { if (isOnClickApplyFilterMode(this)) { const columnHeadersViewElement = this.getView("columnHeadersView").element(); columnHeadersViewElement.find(`.${this.addWidgetPrefix("filter-row")} .dx-highlight-outline`).removeClass("dx-highlight-outline"); columnHeadersViewElement.find(`.${this.addWidgetPrefix("filter-row")} .dx-filter-modified`).removeClass("dx-filter-modified"); this._getHeaderPanel().enableApplyButton(false) } } setCurrentColumnForFiltering(column) { this._currentColumn = column } getCurrentColumnForFiltering() { return this._currentColumn } } exports.ApplyFilterViewController = ApplyFilterViewController; exports.filterRowModule = { defaultOptions: () => ({ syncLookupFilterValues: true, filterRow: { visible: false, showOperationChooser: true, showAllText: _message.default.format("dxDataGrid-filterRowShowAllText"), resetOperationText: _message.default.format("dxDataGrid-filterRowResetOperationText"), applyFilter: "auto", applyFilterText: _message.default.format("dxDataGrid-applyFilterText"), operationDescriptions: { equal: _message.default.format("dxDataGrid-filterRowOperationEquals"), notEqual: _message.default.format("dxDataGrid-filterRowOperationNotEquals"), lessThan: _message.default.format("dxDataGrid-filterRowOperationLess"), lessThanOrEqual: _message.default.format("dxDataGrid-filterRowOperationLessOrEquals"), greaterThan: _message.default.format("dxDataGrid-filterRowOperationGreater"), greaterThanOrEqual: _message.default.format("dxDataGrid-filterRowOperationGreaterOrEquals"), startsWith: _message.default.format("dxDataGrid-filterRowOperationStartsWith"), contains: _message.default.format("dxDataGrid-filterRowOperationContains"), notContains: _message.default.format("dxDataGrid-filterRowOperationNotContains"), endsWith: _message.default.format("dxDataGrid-filterRowOperationEndsWith"), between: _message.default.format("dxDataGrid-filterRowOperationBetween"), isBlank: _message.default.format("dxFilterBuilder-filterOperationIsBlank"), isNotBlank: _message.default.format("dxFilterBuilder-filterOperationIsNotBlank") }, betweenStartText: _message.default.format("dxDataGrid-filterRowOperationBetweenStartText"), betweenEndText: _message.default.format("dxDataGrid-filterRowOperationBetweenEndText") } }), controllers: { applyFilter: ApplyFilterViewController }, extenders: { controllers: { data: Base => class extends Base { skipCalculateColumnFilters() { return false } _calculateAdditionalFilter() { if (this.skipCalculateColumnFilters()) { return super._calculateAdditionalFilter() } const filters = [super._calculateAdditionalFilter()]; const columns = this._columnsController.getVisibleColumns(null, true); const applyFilterController = this._applyFilterController; (0, _iterator.each)(columns, (function() { var _applyFilterControlle; const shouldSkip = (null === (_applyFilterControlle = applyFilterController.getCurrentColumnForFiltering()) || void 0 === _applyFilterControlle ? void 0 : _applyFilterControlle.index) === this.index; if (this.allowFiltering && this.calculateFilterExpression && (0, _type.isDefined)(this.filterValue) && !shouldSkip) { const filter = this.createFilterExpression(this.filterValue, this.selectedFilterOperation || this.defaultFilterOperation, "filterRow"); filters.push(filter) } })); return _m_utils.default.combineFilters(filters) } }, columnsResizer: Base => class extends Base { _startResizing() { const that = this; super._startResizing.apply(that, arguments); if (that.isResizing()) { const overlayInstance = that._columnHeadersView.getFilterRangeOverlayInstance(); if (overlayInstance) { const cellIndex = overlayInstance.$element().closest("td").index(); if (cellIndex === that._targetPoint.columnIndex || cellIndex === that._targetPoint.columnIndex + 1) { overlayInstance.$content().hide() } } } } _endResizing() { const that = this; let $cell; if (that.isResizing()) { const overlayInstance = that._columnHeadersView.getFilterRangeOverlayInstance(); if (overlayInstance) { $cell = overlayInstance.$element().closest("td"); that._columnHeadersView._updateFilterRangeOverlay({ width: (0, _size.getOuterWidth)($cell, true) + 1 }); overlayInstance.$content().show() } } super._endResizing.apply(that, arguments) } }, editing: Base => class extends Base { updateFieldValue(options) { if (options.column.lookup) { this._needUpdateLookupDataSource = true } return super.updateFieldValue.apply(this, arguments) } _afterSaveEditData(cancel) { if (this._needUpdateLookupDataSource && !cancel) { var _this$getView; null === (_this$getView = this.getView("columnHeadersView")) || void 0 === _this$getView || _this$getView.updateLookupDataSource() } this._needUpdateLookupDataSource = false; return super._afterSaveEditData.apply(this, arguments) } _afterCancelEditData() { this._needUpdateLookupDataSource = false; return super._afterCancelEditData.apply(this, arguments) } } }, views: { columnHeadersView: Base => class extends Base { init() { super.init(); this._applyFilterViewController = this.getController("applyFilter") } optionChanged(args) { switch (args.name) { case "filterRow": case "showColumnLines": this._invalidate(true, true); args.handled = true; break; case "syncLookupFilterValues": if (args.value) { this.updateLookupDataSource() } else { this.render() } args.handled = true; break; default: super.optionChanged(args) } } _updateEditorValue(column, $editorContainer) { const editor = getEditorInstance($editorContainer); editor && editor.option("value", getFilterValue(this, column.index, $editorContainer)) } _columnOptionChanged(e) { const that = this; const { optionNames: optionNames } = e; let $cell; let $editorContainer; let $editorRangeElements; let $menu; if (_m_utils.default.checkChanges(optionNames, ["filterValue", "bufferedFilterValue", "selectedFilterOperation", "bufferedSelectedFilterOperation", "filterValues", "filterType"]) && void 0 !== e.columnIndex) { const visibleIndex = that._columnsController.getVisibleIndex(e.columnIndex); const column = that._columnsController.columnOption(e.columnIndex); $cell = that._getCellElement(that.element().find(`.${that.addWidgetPrefix("filter-row")}`).index(), visibleIndex) ?? (0, _renderer.default)(); $editorContainer = $cell.find(".dx-editor-container").first(); if (optionNames.filterValue || optionNames.bufferedFilterValue) { that._updateEditorValue(column, $editorContainer); const overlayInstance = $cell.find(`.${that.addWidgetPrefix("filter-range-overlay")}`).data("dxOverlay"); if (overlayInstance) { $editorRangeElements = overlayInstance.$content().find(".dx-editor-container"); that._updateEditorValue(column, $editorRangeElements.first()); that._updateEditorValue(column, $editorRangeElements.last()) } if (!(null !== overlayInstance && void 0 !== overlayInstance && overlayInstance.option("visible"))) { that._updateFilterRangeContent($cell, getRangeTextByFilterValue(that, column)) } } if (optionNames.selectedFilterOperation || optionNames.bufferedSelectedFilterOperation) { if (visibleIndex >= 0 && column) { $menu = $cell.find(".dx-menu"); if ($menu.length) { that._updateFilterOperationChooser($menu, column, $editorContainer); if ("between" === getColumnSelectedFilterOperation(that, column)) { that._renderFilterRangeContent($cell, column) } else if ($editorContainer.find(".dx-filter-range-content").length) { that._renderEditor($editorContainer, that._getEditorOptions($editorContainer, column)); that._hideFilterRange() } } } } return } super._columnOptionChanged(e) } _renderCore() { this._filterRangeOverlayInstance = null; return super._renderCore.apply(this, arguments) } _resizeCore() { var _this$_filterRangeOve; super._resizeCore.apply(this, arguments); null === (_this$_filterRangeOve = this._filterRangeOverlayInstance) || void 0 === _this$_filterRangeOve || _this$_filterRangeOve.repaint() } isFilterRowVisible() { return this._isElementVisible(this.option("filterRow")) } isVisible() { return super.isVisible() || this.isFilterRowVisible() } _initFilterRangeOverlay($cell, column) { const that = this; const sharedData = {}; const $editorContainer = $cell.find(".dx-editor-container"); const filterRangeOverlayClass = that.addWidgetPrefix("filter-range-overlay"); const $overlay = (0, _renderer.default)("
").addClass(filterRangeOverlayClass).appendTo($cell); return that._createComponent($overlay, _ui.default, { height: "auto", shading: false, showTitle: false, focusStateEnabled: false, hideOnOutsideClick: true, hideOnParentScroll: true, _hideOnParentScrollTarget: $overlay, wrapperAttr: { class: filterRangeOverlayClass }, animation: false, position: { my: "top", at: "top", of: $editorContainer.length && $editorContainer || $cell, offset: "0 -1" }, contentTemplate(contentElement) { let editorOptions; let $editor = (0, _renderer.default)("
").addClass(`dx-editor-container ${that.addWidgetPrefix("filter-range-start")}`).appendTo(contentElement); column = that._columnsController.columnOption(column.index); editorOptions = that._getEditorOptions($editor, column); editorOptions.sharedData = sharedData; that._renderEditor($editor, editorOptions); _events_engine.default.on($editor.find("input:not([type='hidden'])"), "keydown", (e => { let $prevElement = $cell.find("[tabindex]").not(e.target).first(); if ("tab" === (0, _index.normalizeKeyName)(e) && e.shiftKey) { e.preventDefault(); that._hideFilterRange(); if (!$prevElement.length) { $prevElement = $cell.prev().find("[tabindex]").last() } _events_engine.default.trigger($prevElement, "focus") } })); $editor = (0, _renderer.default)("
").addClass(`dx-editor-container ${that.addWidgetPrefix("filter-range-end")}`).appendTo(contentElement); editorOptions = that._getEditorOptions($editor, column); editorOptions.sharedData = sharedData; that._renderEditor($editor, editorOptions); _events_engine.default.on($editor.find("input:not([type='hidden'])"), "keydown", (e => { if ("tab" === (0, _index.normalizeKeyName)(e) && !e.shiftKey) { e.preventDefault(); that._hideFilterRange(); _events_engine.default.trigger($cell.next().find("[tabindex]").first(), "focus") } })); return (0, _renderer.default)(contentElement).addClass(that.getWidgetContainerClass()) }, onShown(e) { const $editor = e.component.$content().find(".dx-editor-container").first(); _events_engine.default.trigger($editor.find("input:not([type='hidden'])"), "focus") }, onHidden() { column = that._columnsController.columnOption(column.index); $cell.find(".dx-menu").parent().addClass("dx-editor-with-menu"); if ("between" === getColumnSelectedFilterOperation(that, column)) { that._updateFilterRangeContent($cell, getRangeTextByFilterValue(that, column)); that.component.updateDimensions() } } }) } _updateFilterRangeOverlay(options) { const overlayInstance = this._filterRangeOverlayInstance; null === overlayInstance || void 0 === overlayInstance || overlayInstance.option(options) } _showFilterRange($cell, column) { const that = this; const $overlay = $cell.children(`.${that.addWidgetPrefix("filter-range-overlay")}`); let overlayInstance = $overlay.length && $overlay.data("dxOverlay"); if (!overlayInstance && column) { overlayInstance = that._initFilterRangeOverlay($cell, column) } if (!overlayInstance.option("visible")) { var _that$_filterRangeOve, _that$_filterRangeOve2; null === (_that$_filterRangeOve = that._filterRangeOverlayInstance) || void 0 === _that$_filterRangeOve || _that$_filterRangeOve.hide(); that._filterRangeOverlayInstance = overlayInstance; that._updateFilterRangeOverlay({ width: (0, _size.getOuterWidth)($cell, true) + 1 }); null === (_that$_filterRangeOve2 = that._filterRangeOverlayInstance) || void 0 === _that$_filterRangeOve2 || _that$_filterRangeOve2.show() } } _hideFilterRange() { const overlayInstance = this._filterRangeOverlayInstance; null === overlayInstance || void 0 === overlayInstance || overlayInstance.hide() } getFilterRangeOverlayInstance() { return this._filterRangeOverlayInstance } _createRow(row) { const $row = super._createRow(row); if ("filter" === row.rowType) { $row.addClass(this.addWidgetPrefix("filter-row")); if (!this.option("useLegacyKeyboardNavigation")) { _events_engine.default.on($row, "keydown", (event => (0, _accessibility.selectView)("filterRow", this, event))) } } return $row } _getRows() { const result = super._getRows(); if (this.isFilterRowVisible()) { result.push({ rowType: "filter" }) } return result } _renderFilterCell(cell, options) { var _column$filterOperati; const that = this; const { column: column } = options; const $cell = (0, _renderer.default)(cell); if (that.component.option("showColumnHeaders")) { that.setAria("describedby", column.headerId, $cell) } that.setAria("label", _message.default.format("dxDataGrid-ariaFilterCell"), $cell); $cell.addClass("dx-editor-cell"); const $container = (0, _renderer.default)("
").appendTo($cell); const $editorContainer = (0, _renderer.default)("
").addClass("dx-editor-container").appendTo($container); if ("between" === getColumnSelectedFilterOperation(that, column)) { that._renderFilterRangeContent($cell, column) } else { const editorOptions = that._getEditorOptions($editorContainer, column); that._renderEditor($editorContainer, editorOptions) } const { alignment: alignment } = column; if (alignment && "center" !== alignment) { $cell.find("input:not([type='hidden'])").first().css("textAlign", column.alignment) } if (null !== (_column$filterOperati = column.filterOperations) && void 0 !== _column$filterOperati && _column$filterOperati.length) { that._renderFilterOperationChooser($container, column, $editorContainer) } } _renderCellContent($cell, options) { const that = this; const { column: column } = options; if ("filter" === options.rowType) { if (column.command) { $cell.html(" ") } else if (column.allowFiltering) { that.renderTemplate($cell, that._renderFilterCell.bind(that), options).done((() => { that._updateCell($cell, options) })); return } } super._renderCellContent.apply(this, arguments) } _getEditorOptions($editorContainer, column) { const that = this; const accessibilityOptions = { editorOptions: { inputAttr: that._getFilterInputAccessibilityAttributes(column) } }; const result = (0, _extend.extend)(accessibilityOptions, column, { value: getFilterValue(that, column.index, $editorContainer), parentType: "filterRow", showAllText: that.option("filterRow.showAllText"), updateValueTimeout: "onClick" === that.option("filterRow.applyFilter") ? 0 : 700, width: null, setValue(value, notFireEvent) { updateFilterValue(that, { column: column, value: value, container: $editorContainer, notFireEvent: notFireEvent }) } }); if ("between" === getColumnSelectedFilterOperation(that, column)) { if ($editorContainer.hasClass(that.addWidgetPrefix("filter-range-start"))) { result.placeholder = that.option("filterRow.betweenStartText") } else { result.placeholder = that.option("filterRow.betweenEndText") } } return result } _getFilterInputAccessibilityAttributes(column) { const columnAriaLabel = _message.default.format("dxDataGrid-ariaFilterCell"); if (this.component.option("showColumnHeaders")) { return { "aria-label": columnAriaLabel, "aria-describedby": column.headerId } } return { "aria-label": columnAriaLabel } } _renderEditor($editorContainer, options) { $editorContainer.empty(); const $element = (0, _renderer.default)("
").appendTo($editorContainer); const dataSource = this._dataController.dataSource(); if (options.lookup && this.option("syncLookupFilterValues")) { this._applyFilterViewController.setCurrentColumnForFiltering(options); const filter = this._dataController.getCombinedFilter(); this._applyFilterViewController.setCurrentColumnForFiltering(null); const lookupDataSource = _m_utils.default.getWrappedLookupDataSource(options, dataSource, filter); const lookupOptions = _extends({}, options, { lookup: _extends({}, options.lookup, { dataSource: lookupDataSource }) }); return this._editorFactoryController.createEditor($element, lookupOptions) } return this._editorFactoryController.createEditor($element, options) } _renderFilterRangeContent($cell, column) { const that = this; const $editorContainer = $cell.find(".dx-editor-container").first(); $editorContainer.empty(); const $filterRangeContent = (0, _renderer.default)("
").addClass("dx-filter-range-content").attr("tabindex", this.option("tabIndex")); _events_engine.default.on($filterRangeContent, "focusin", (() => { that._showFilterRange($cell, column) })); $filterRangeContent.appendTo($editorContainer); that._updateFilterRangeContent($cell, getRangeTextByFilterValue(that, column)) } _updateFilterRangeContent($cell, value) { const $filterRangeContent = $cell.find(".dx-filter-range-content"); if ($filterRangeContent.length) { if ("" === value) { $filterRangeContent.html(" ") } else { $filterRangeContent.text(value) } } } _updateFilterOperationChooser($menu, column, $editorContainer) { var _column$filterOperati2; const that = this; let isCellWasFocused; const restoreFocus = function() { const menu = _menu.default.getInstance($menu); menu && menu.option("focusedElement", null); isCellWasFocused && that._focusEditor($editorContainer) }; const editorFactoryController = this._editorFactoryController; that._createComponent($menu, _menu.default, { integrationOptions: {}, activeStateEnabled: false, selectionMode: "single", cssClass: `${that.getWidgetContainerClass()} dx-cell-focus-disabled dx-filter-menu`, showFirstSubmenuMode: "onHover", hideSubmenuOnMouseLeave: true, items: [{ name: getColumnSelectedFilterOperation(that, column) || ARIA_SEARCH_BOX, disabled: !(null !== (_column$filterOperati2 = column.filterOperations) && void 0 !== _column$filterOperati2 && _column$filterOperati2.length), icon: OPERATION_ICONS[getColumnSelectedFilterOperation(that, column) || "default"], selectable: false, items: that._getFilterOperationMenuItems(column) }], onItemRendered: _ref => { let { itemElement: itemElement, itemData: itemData } = _ref; if (null !== itemData && void 0 !== itemData && itemData.items && null !== itemData && void 0 !== itemData && itemData.name) { const labelText = that._getOperationDescriptionFromDescriptor(itemData.name) || ARIA_SEARCH_BOX; this.setAria("label", labelText, (0, _renderer.default)(itemElement)) } }, onItemClick(properties) { var _properties$itemData; const selectedFilterOperation = properties.itemData.name; const columnSelectedFilterOperation = getColumnSelectedFilterOperation(that, column); let notFocusEditor = false; const isOnClickMode = isOnClickApplyFilterMode(that); const options = {}; if (properties.itemData.items || selectedFilterOperation && selectedFilterOperation === columnSelectedFilterOperation) { return } if (selectedFilterOperation) { options[isOnClickMode ? "bufferedSelectedFilterOperation" : "selectedFilterOperation"] = selectedFilterOperation; if ("between" === selectedFilterOperation || "between" === columnSelectedFilterOperation) { notFocusEditor = "between" === selectedFilterOperation; options[isOnClickMode ? "bufferedFilterValue" : "filterValue"] = null } } else { options[isOnClickMode ? "bufferedFilterValue" : "filterValue"] = null; options[isOnClickMode ? "bufferedSelectedFilterOperation" : "selectedFilterOperation"] = column.defaultSelectedFilterOperation || null } const isResetFilterOperation = !(null !== (_properties$itemData = properties.itemData) && void 0 !== _properties$itemData && _properties$itemData.name); const isNotFireEvent = isResetFilterOperation ? false : void 0; that._columnsController.columnOption(column.index, options, void 0, isNotFireEvent); that._applyFilterViewController.setHighLight($editorContainer, true); if (!selectedFilterOperation) { const editor = getEditorInstance($editorContainer); if (editor && "dxDateBox" === editor.NAME && !editor.option("isValid")) { editor.clear(); editor.option("isValid", true) } } if (!notFocusEditor) { that._focusEditor($editorContainer) } else { that._showFilterRange($editorContainer.closest(".dx-editor-cell"), column) } }, onSubmenuShowing() { isCellWasFocused = that._isEditorFocused($editorContainer); editorFactoryController.loseFocus() }, onSubmenuHiding() { _events_engine.default.trigger($menu, "blur"); restoreFocus() }, onContentReady(e) { _events_engine.default.on($menu, "blur", (() => { const menu = e.component; menu._hideSubmenuAfterTimeout(); restoreFocus() })) }, rtlEnabled: that.option("rtlEnabled") }) } _isEditorFocused($container) { return $container.hasClass("dx-focused") || $container.parents(".dx-focused").length } _focusEditor($container) { this._editorFactoryController.focus($container); _events_engine.default.trigger($container.find("input:not([type='hidden'])"), "focus") } _renderFilterOperationChooser($container, column, $editorContainer) { const that = this; let $menu; if (that.option("filterRow.showOperationChooser")) { $container.addClass("dx-editor-with-menu"); $menu = (0, _renderer.default)("
").prependTo($container); that._updateFilterOperationChooser($menu, column, $editorContainer) } } _getFilterOperationMenuItems(column) { var _column$filterOperati3; const that = this; let result = [{}]; const filterRowOptions = that.option("filterRow"); if (null !== (_column$filterOperati3 = column.filterOperations) && void 0 !== _column$filterOperati3 && _column$filterOperati3.length) { const availableFilterOperations = column.filterOperations.filter((value => (0, _type.isDefined)(OPERATION_DESCRIPTORS[value]))); result = (0, _iterator.map)(availableFilterOperations, (value => ({ name: value, selected: (getColumnSelectedFilterOperation(that, column) || column.defaultFilterOperation) === value, text: that._getOperationDescriptionFromDescriptor(value), icon: OPERATION_ICONS[value] }))); result.push({ name: null, text: null === filterRowOptions || void 0 === filterRowOptions ? void 0 : filterRowOptions.resetOperationText, icon: OPERATION_ICONS.default }) } return result } _getOperationDescriptionFromDescriptor(value) { const filterRowOptions = this.option("filterRow"); const operationDescriptions = (null === filterRowOptions || void 0 === filterRowOptions ? void 0 : filterRowOptions.operationDescriptions) || {}; const descriptionName = OPERATION_DESCRIPTORS[value]; return operationDescriptions[descriptionName] } _handleDataChanged(e) { var _this$_dataController, _this$_dataController2, _dataSource$lastLoadO, _e$operationTypes, _e$operationTypes2; const dataSource = null === (_this$_dataController = this._dataController) || void 0 === _this$_dataController || null === (_this$_dataController2 = _this$_dataController.dataSource) || void 0 === _this$_dataController2 ? void 0 : _this$_dataController2.call(_this$_dataController); const lastLoadOptions = null === dataSource || void 0 === dataSource || null === (_dataSource$lastLoadO = dataSource.lastLoadOptions) || void 0 === _dataSource$lastLoadO ? void 0 : _dataSource$lastLoadO.call(dataSource); super._handleDataChanged.apply(this, arguments); if (null !== (_e$operationTypes = e.operationTypes) && void 0 !== _e$operationTypes && _e$operationTypes.filtering || null !== (_e$operationTypes2 = e.operationTypes) && void 0 !== _e$operationTypes2 && _e$operationTypes2.fullReload) { var _e$operationTypes3; this.updateLookupDataSource((null === (_e$operationTypes3 = e.operationTypes) || void 0 === _e$operationTypes3 ? void 0 : _e$operationTypes3.filtering) || (null === lastLoadOptions || void 0 === lastLoadOptions ? void 0 : lastLoadOptions.filter)) } } updateLookupDataSource(filterChanged) { if (!this.option("syncLookupFilterValues")) { return } if (!this.element()) { return } const columns = this._columnsController.getVisibleColumns(); const dataSource = this._dataController.dataSource(); const applyFilterViewController = this._applyFilterViewController; const rowIndex = this.element().find(`.${this.addWidgetPrefix("filter-row")}`).index(); if (-1 === rowIndex) { return } columns.forEach(((column, index) => { if (!column.lookup || column.calculateCellValue !== column.defaultCalculateCellValue) { return } const $cell = this._getCellElement(rowIndex, index); const editor = getEditorInstance(null === $cell || void 0 === $cell ? void 0 : $cell.find(".dx-editor-container")); if (editor) { applyFilterViewController.setCurrentColumnForFiltering(column); const filter = this._dataController.getCombinedFilter() || null; applyFilterViewController.setCurrentColumnForFiltering(null); const editorDataSource = editor.option("dataSource"); const shouldUpdateFilter = !filterChanged || !(0, _common.equalByValue)(editorDataSource.__dataGridSourceFilter || null, filter); if (shouldUpdateFilter) { const lookupDataSource = _m_utils.default.getWrappedLookupDataSource(column, dataSource, filter); editor.option("dataSource", lookupDataSource) } } })) } getColumnElements(index, bandColumnIndex) { var _rows$index; const rows = this._getRows(); if ("filter" === (null === rows || void 0 === rows || null === (_rows$index = rows[index]) || void 0 === _rows$index ? void 0 : _rows$index.rowType) && arguments.length < 2) { return this.getCellElements(index) } return super.getColumnElements(index, bandColumnIndex) } isFilterRowCell($cell) { return !!$cell.closest(`.${this.addWidgetPrefix("filter-row")}`).length } }, headerPanel: Base => class extends Base { init() { super.init(); this._dataController = this.getController("data"); this._applyFilterViewController = this.getController("applyFilter") } optionChanged(args) { if ("filterRow" === args.name) { this._invalidate(); args.handled = true } else { super.optionChanged(args) } } _getToolbarItems() { const items = super._getToolbarItems(); const filterItem = this._prepareFilterItem(); return filterItem.concat(items) } _prepareFilterItem() { const that = this; const filterItem = []; if (that._isShowApplyFilterButton()) { const hintText = that.option("filterRow.applyFilterText"); const columns = that._columnsController.getColumns(); const disabled = !columns.filter((column => void 0 !== column.bufferedFilterValue)).length; const onInitialized = function(e) { (0, _renderer.default)(e.element).addClass(that._getToolbarButtonClass("dx-apply-button")) }; const onClickHandler = function() { that._applyFilterViewController.applyFilter() }; const toolbarItem = { widget: "dxButton", options: { icon: "apply-filter", disabled: disabled, onClick: onClickHandler, hint: hintText, text: hintText, onInitialized: onInitialized }, showText: "inMenu", name: "applyFilterButton", location: "after", locateInMenu: "auto", sortIndex: 10 }; filterItem.push(toolbarItem) } return filterItem } _isShowApplyFilterButton() { const filterRowOptions = this.option("filterRow"); return !!(null !== filterRowOptions && void 0 !== filterRowOptions && filterRowOptions.visible) && "onClick" === filterRowOptions.applyFilter } enableApplyButton(value) { this.setToolbarItemDisabled("applyFilterButton", !value) } } } } } }, 78746: /*!************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/grid_core/filter/m_filter_sync.js ***! \************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.filterSyncModule = exports.FilterSyncController = void 0; var _deferred = __webpack_require__( /*! ../../../../core/utils/deferred */ 87739); var _type = __webpack_require__( /*! ../../../../core/utils/type */ 11528); var _filtering = _interopRequireDefault(__webpack_require__( /*! ../../../../ui/shared/filtering */ 56417)); var _ui = _interopRequireDefault(__webpack_require__( /*! ../../../../ui/widget/ui.errors */ 35185)); var _m_utils = __webpack_require__( /*! ../../../filter_builder/m_utils */ 29498); var _m_modules = _interopRequireDefault(__webpack_require__( /*! ../m_modules */ 74854)); var _m_utils2 = _interopRequireDefault(__webpack_require__( /*! ../m_utils */ 53226)); var _m_filter_custom_operations = __webpack_require__( /*! ./m_filter_custom_operations */ 44651); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } const FILTER_ROW_OPERATIONS = ["=", "<>", "<", "<=", ">", ">=", "notcontains", "contains", "startswith", "endswith", "between"]; function getColumnIdentifier(column) { return column.name || column.dataField } const canSyncHeaderFilterWithFilterRow = function(column) { const filterValues = column.filterValues || []; return !_filtering.default.getGroupInterval(column) && !(column.headerFilter && column.headerFilter.dataSource) || 1 === filterValues.length && null === filterValues[0] }; const getConditionFromFilterRow = function(column) { const value = column.filterValue; if ((0, _type.isDefined)(value)) { const operation = column.selectedFilterOperation || column.defaultFilterOperation || (0, _m_utils.getDefaultOperation)(column); const filter = [getColumnIdentifier(column), operation, column.filterValue]; return filter } return null }; const getConditionFromHeaderFilter = function(column) { let selectedOperation; let value; const { filterValues: filterValues } = column; if (!filterValues) { return null } if (1 === filterValues.length && canSyncHeaderFilterWithFilterRow(column) && !Array.isArray(filterValues[0])) { "exclude" === column.filterType ? selectedOperation = "<>" : selectedOperation = "="; value = filterValues[0] } else { "exclude" === column.filterType ? selectedOperation = "noneof" : selectedOperation = "anyof"; value = filterValues } return [getColumnIdentifier(column), selectedOperation, value] }; const updateHeaderFilterCondition = function(columnsController, column, headerFilterCondition) { const headerFilter = function(headerFilterCondition, column) { if (!headerFilterCondition) { return { filterType: "include", filterValues: void 0 } } let filterType; const selectedFilterOperation = headerFilterCondition[1]; const value = headerFilterCondition[2]; const hasArrayValue = Array.isArray(value); if (!hasArrayValue) { if (!canSyncHeaderFilterWithFilterRow(column)) { return { filterType: "include", filterValues: void 0 } } } switch (selectedFilterOperation) { case "anyof": case "=": filterType = "include"; break; case "noneof": case "<>": filterType = "exclude"; break; default: return { filterType: "include", filterValues: void 0 } } return { filterType: filterType, filterValues: hasArrayValue ? value : [value] } }(headerFilterCondition, column); columnsController.columnOption(getColumnIdentifier(column), headerFilter) }; const updateFilterRowCondition = function(columnsController, column, condition) { let filterRowOptions; let selectedFilterOperation = null === condition || void 0 === condition ? void 0 : condition[1]; const filterValue = null === condition || void 0 === condition ? void 0 : condition[2]; const filterOperations = column.filterOperations || column.defaultFilterOperations; const selectedOperationExists = !filterOperations || filterOperations.indexOf(selectedFilterOperation) >= 0; const defaultOperationSelected = selectedFilterOperation === column.defaultFilterOperation; const builtInOperationSelected = FILTER_ROW_OPERATIONS.includes(selectedFilterOperation); const filterValueNotNullOrEmpty = null !== filterValue && "" !== filterValue; if ((selectedOperationExists || defaultOperationSelected) && builtInOperationSelected && filterValueNotNullOrEmpty) { if (defaultOperationSelected && !(0, _type.isDefined)(column.selectedFilterOperation)) { selectedFilterOperation = column.selectedFilterOperation } filterRowOptions = { filterValue: filterValue, selectedFilterOperation: selectedFilterOperation } } else { filterRowOptions = { filterValue: void 0, selectedFilterOperation: void 0 } } columnsController.columnOption(getColumnIdentifier(column), filterRowOptions) }; class FilterSyncController extends _m_modules.default.Controller { init() { this._dataController = this.getController("data"); this._columnsController = this.getController("columns"); if (this._dataController.isFilterSyncActive()) { if (this._columnsController.isAllDataTypesDefined()) { this._initSync() } else { this._dataController.dataSourceChanged.add((() => this._initSync())) } } } publicMethods() { return ["getCustomFilterOperations"] } syncFilterValue() { const that = this; const columns = this._columnsController.getFilteringColumns(); this._skipSyncColumnOptions = true; columns.forEach((column => { const filterConditions = (0, _m_utils.getMatchedConditions)(that.option("filterValue"), getColumnIdentifier(column)); if (1 === filterConditions.length) { const filterCondition = filterConditions[0]; updateHeaderFilterCondition(this._columnsController, column, filterCondition); updateFilterRowCondition(this._columnsController, column, filterCondition) } else { (0, _type.isDefined)(column.filterValues) && updateHeaderFilterCondition(this._columnsController, column, null); (0, _type.isDefined)(column.filterValue) && updateFilterRowCondition(this._columnsController, column, null) } })); this._skipSyncColumnOptions = false } _initSync() { const columns = this._columnsController.getColumns(); const pageIndex = this._dataController.pageIndex(); ! function(columns) { columns.forEach((column => { const identifier = getColumnIdentifier(column); if (!(0, _type.isDefined)(identifier) && column.allowFiltering) { throw new _ui.default.Error("E1049", column.caption) } })) }(columns); if (!this.option("filterValue")) { const filteringColumns = this._columnsController.getFilteringColumns(); const filterValue = this.getFilterValueFromColumns(filteringColumns); this._silentOption("filterValue", filterValue) } this.syncFilterValue(); this._dataController.pageIndex(pageIndex) } _getSyncFilterRow(filterValue, column) { const filter = getConditionFromFilterRow(column); if ((0, _type.isDefined)(filter)) { return (0, _m_utils.syncFilters)(filterValue, filter) } return (0, _m_utils.removeFieldConditionsFromFilter)(filterValue, getColumnIdentifier(column)) } _getSyncHeaderFilter(filterValue, column) { const filter = getConditionFromHeaderFilter(column); if (filter) { return (0, _m_utils.syncFilters)(filterValue, filter) } return (0, _m_utils.removeFieldConditionsFromFilter)(filterValue, getColumnIdentifier(column)) } getFilterValueFromColumns(columns) { if (!this._dataController.isFilterSyncActive()) { return null } const filterValue = ["and"]; columns && columns.forEach((column => { const headerFilter = getConditionFromHeaderFilter(column); const filterRow = getConditionFromFilterRow(column); headerFilter && (0, _m_utils.addItem)(headerFilter, filterValue); filterRow && (0, _m_utils.addItem)(filterRow, filterValue) })); return (0, _m_utils.getNormalizedFilter)(filterValue) } syncFilterRow(column, filterValue) { this.option("filterValue", this._getSyncFilterRow(this.option("filterValue"), column)) } syncHeaderFilter(column) { this.option("filterValue", this._getSyncHeaderFilter(this.option("filterValue"), column)) } getCustomFilterOperations() { const filterBuilderCustomOperations = this.option("filterBuilder.customOperations") ?? []; return [(0, _m_filter_custom_operations.anyOf)(this.component), (0, _m_filter_custom_operations.noneOf)(this.component)].concat(filterBuilderCustomOperations) } } exports.FilterSyncController = FilterSyncController; exports.filterSyncModule = { defaultOptions: () => ({ filterValue: null, filterSyncEnabled: "auto" }), controllers: { filterSync: FilterSyncController }, extenders: { controllers: { data: Base => class extends Base { optionChanged(args) { switch (args.name) { case "filterValue": this._applyFilter(); this.isFilterSyncActive() && this._filterSyncController.syncFilterValue(); args.handled = true; break; case "filterSyncEnabled": args.handled = true; break; case "columns": if (this.isFilterSyncActive()) { const column = this._columnsController.getColumnByPath(args.fullName); if (column && !this._filterSyncController._skipSyncColumnOptions) { const propertyName = this._parseColumnPropertyName(args.fullName); this._filterSyncController._skipSyncColumnOptions = true; if ("filterType" === propertyName) { if ("exclude" === args.value || "exclude" === args.previousValue) { this._filterSyncController.syncHeaderFilter(column) } } else if ("filterValues" === propertyName) { this._filterSyncController.syncHeaderFilter(column) } else if (["filterValue", "selectedFilterOperation"].includes(propertyName)) { this._filterSyncController.syncFilterRow(column, column.filterValue) } this._filterSyncController._skipSyncColumnOptions = false } } super.optionChanged(args); break; default: super.optionChanged(args) } } isFilterSyncActive() { const filterSyncEnabledValue = this.option("filterSyncEnabled"); return "auto" === filterSyncEnabledValue ? this.option("filterPanel.visible") : filterSyncEnabledValue } skipCalculateColumnFilters() { return ((0, _type.isDefined)(this.option("filterValue")) || this._filterSyncController._skipSyncColumnOptions) && this.isFilterSyncActive() } _calculateAdditionalFilter() { if (false === this.option("filterPanel.filterEnabled")) { return super._calculateAdditionalFilter() } const filters = [super._calculateAdditionalFilter()]; const columns = this._columnsController.getFilteringColumns(); let filterValue = this.option("filterValue"); if (this.isFilterSyncActive()) { const currentColumnForHeaderFilter = this._headerFilterController.getCurrentColumn(); const currentColumnForFilterRow = this._applyFilterController.getCurrentColumnForFiltering(); const currentColumn = currentColumnForHeaderFilter || currentColumnForFilterRow; const needRemoveCurrentColumnFilter = currentColumnForHeaderFilter || (0, _type.isDefined)(null === currentColumnForFilterRow || void 0 === currentColumnForFilterRow ? void 0 : currentColumnForFilterRow.filterValue); if (needRemoveCurrentColumnFilter && filterValue) { filterValue = (0, _m_utils.removeFieldConditionsFromFilter)(filterValue, getColumnIdentifier(currentColumn)) } } const customOperations = this._filterSyncController.getCustomFilterOperations(); const calculatedFilterValue = (0, _m_utils.getFilterExpression)(filterValue, columns, customOperations, "filterBuilder"); if (calculatedFilterValue) { filters.push(calculatedFilterValue) } return _m_utils2.default.combineFilters(filters) } _parseColumnPropertyName(fullName) { const matched = fullName.match(/.*\.(.*)/); if (matched) { return matched[1] } return null } clearFilter(filterName) { this.component.beginUpdate(); if (arguments.length > 0) { if ("filterValue" === filterName) { this.option("filterValue", null) } super.clearFilter(filterName) } else { this.option("filterValue", null); super.clearFilter() } this.component.endUpdate() } _applyFilter() { if (this._filterSyncController._skipSyncColumnOptions) { return (new _deferred.Deferred).resolve() } return super._applyFilter.apply(this, arguments) } } }, views: { columnHeadersView: Base => class extends Base { optionChanged(args) { if ("filterValue" === args.name) { this._updateHeaderFilterIndicators() } else { super.optionChanged(args) } } _isHeaderFilterEmpty(column) { if (this._dataController.isFilterSyncActive()) { return !(0, _m_utils.filterHasField)(this.option("filterValue"), getColumnIdentifier(column)) } return super._isHeaderFilterEmpty(column) } _needUpdateFilterIndicators() { return !this._dataController.isFilterSyncActive() } } } } } }, 51628: /*!*****************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/grid_core/focus/m_focus.js ***! \*****************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.focusModule = exports.FocusController = void 0; var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../../../core/renderer */ 64553)); var _common = __webpack_require__( /*! ../../../../core/utils/common */ 17781); var _deferred = __webpack_require__( /*! ../../../../core/utils/deferred */ 87739); var _iterator = __webpack_require__( /*! ../../../../core/utils/iterator */ 21274); var _type = __webpack_require__( /*! ../../../../core/utils/type */ 11528); var _m_editing_utils = __webpack_require__( /*! ../editing/m_editing_utils */ 1414); var _m_modules = _interopRequireDefault(__webpack_require__( /*! ../m_modules */ 74854)); var _m_utils = _interopRequireDefault(__webpack_require__( /*! ../m_utils */ 53226)); var _m_focus_utils = __webpack_require__( /*! ./m_focus_utils */ 21774); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } class FocusController extends _m_modules.default.ViewController { getKeyboardController() { return this.getController("keyboardNavigation") } getDataController() { return this.getController("data") } init() { this.component._optionsByReference.focusedRowKey = true } optionChanged(args) { const { name: name, value: value, previousValue: previousValue } = args; switch (name) { case "focusedRowIndex": this._focusRowByIndex(value); this.getKeyboardController()._fireFocusedRowChanged(); args.handled = true; break; case "focusedRowKey": if (Array.isArray(value) && JSON.stringify(value) === JSON.stringify(previousValue)) { return } this._focusRowByKey(value); this.getKeyboardController()._fireFocusedRowChanged(); args.handled = true; break; case "focusedColumnIndex": case "focusedRowEnabled": case "autoNavigateToFocusedRow": args.handled = true; break; default: super.optionChanged(args) } } publicMethods() { return ["navigateToRow", "isRowFocused"] } isAutoNavigateToFocusedRow() { return "infinite" !== this.option("scrolling.mode") && this.option("autoNavigateToFocusedRow") } _focusRowByIndex(index, operationTypes) { if (!this.option("focusedRowEnabled")) { return } const isEmptyData = this.getDataController().isEmpty(); const currentIndex = this._getCurrentFocusRowIndex(isEmptyData, index); if (currentIndex < 0) { if (isEmptyData || this.isAutoNavigateToFocusedRow()) { this._resetFocusedRow() } } else { this._focusRowByIndexCore(currentIndex, operationTypes) } } _getCurrentFocusRowIndex(isEmptyData, index) { let currentIndex = index; if (void 0 === currentIndex) { if (isEmptyData) { currentIndex = -1 } else { currentIndex = this.option("focusedRowIndex") } } return currentIndex } _focusRowByIndexCore(index, operationTypes) { const pageSize = this.getDataController().pageSize(); const setKeyByIndex = () => { if (this._isValidFocusedRowIndex(index)) { let rowIndex = index - this.getDataController().getRowIndexOffset(true); if (!operationTypes || operationTypes.paging && !operationTypes.filtering) { const lastItemIndex = this.getDataController()._getLastItemIndex(); rowIndex = Math.min(rowIndex, lastItemIndex) } const focusedRowKey = this.getDataController().getKeyByRowIndex(rowIndex, true); if ((0, _type.isDefined)(focusedRowKey) && !this.isRowFocused(focusedRowKey)) { this.option("focusedRowKey", focusedRowKey) } } }; if (pageSize >= 0) { if (!this._isLocalRowIndex(index)) { const pageIndex = Math.floor(index / this.getDataController().pageSize()); (0, _deferred.when)(this.getDataController().pageIndex(pageIndex), this.getDataController().waitReady()).done((() => { setKeyByIndex() })) } else { setKeyByIndex() } } } _isLocalRowIndex(index) { const isVirtualScrolling = this.getKeyboardController()._isVirtualScrolling(); if (isVirtualScrolling) { const pageIndex = Math.floor(index / this.getDataController().pageSize()); const virtualItems = this.getDataController().virtualItemsCount(); const virtualItemsBegin = virtualItems ? virtualItems.begin : -1; const visibleRowsCount = this.getDataController().getVisibleRows().length + this.getDataController().getRowIndexOffset(); const visiblePagesCount = Math.ceil(visibleRowsCount / this.getDataController().pageSize()); return virtualItemsBegin <= index && visiblePagesCount > pageIndex } return true } _setFocusedRowKeyByIndex(index) { if (this._isValidFocusedRowIndex(index)) { const rowIndex = Math.min(index - this.getDataController().getRowIndexOffset(), this.getDataController().items().length - 1); const focusedRowKey = this.getDataController().getKeyByRowIndex(rowIndex); if ((0, _type.isDefined)(focusedRowKey) && !this.isRowFocused(focusedRowKey)) { this.option("focusedRowKey", focusedRowKey) } } } _focusRowByKey(key) { if (!(0, _type.isDefined)(key)) { this._resetFocusedRow() } else { this._navigateToRow(key, true) } } _resetFocusedRow() { const focusedRowKey = this.option("focusedRowKey"); const isFocusedRowKeyDefined = (0, _type.isDefined)(focusedRowKey); if (!isFocusedRowKeyDefined && this.option("focusedRowIndex") < 0) { return } if (isFocusedRowKeyDefined) { this.option("focusedRowKey", null) } this.getKeyboardController().setFocusedRowIndex(-1); this.option("focusedRowIndex", -1); this.getDataController().updateItems({ changeType: "updateFocusedRow", focusedRowKey: null }); this.getKeyboardController()._fireFocusedRowChanged() } _isValidFocusedRowIndex(rowIndex) { const row = this.getDataController().getVisibleRows()[rowIndex]; return !row || "data" === row.rowType || "group" === row.rowType } navigateToRow(key) { if (!this.isAutoNavigateToFocusedRow()) { this.option("focusedRowIndex", -1) } return this._navigateToRow(key) } _navigateToRow(key, needFocusRow) { const that = this; const isAutoNavigate = that.isAutoNavigateToFocusedRow(); const d = new _deferred.Deferred; const rowsView = this.getView("rowsView"); if (void 0 === key || !this.getDataController().dataSource()) { return d.reject().promise() } const rowIndexByKey = that.getFocusedRowIndexByKey(key); if (!isAutoNavigate && needFocusRow || rowIndexByKey >= 0) { that._navigateTo(key, d, needFocusRow) } else { this.getDataController().getPageIndexByKey(key).done((pageIndex => { if (pageIndex < 0) { d.resolve(-1); return } if (pageIndex === this.getDataController().pageIndex()) { this.getDataController().reload().done((() => { if (that.isRowFocused(key) && this.getDataController().getRowIndexByKey(key) >= 0) { d.resolve(that.getFocusedRowIndexByKey(key)) } else { that._navigateTo(key, d, needFocusRow) } })).fail(d.reject) } else { this.getDataController().pageIndex(pageIndex).done((() => { rowsView.waitAsyncTemplates(true).done((() => { that._navigateTo(key, d, needFocusRow) })) })).fail(d.reject) } })).fail(d.reject) } return d.promise() } _navigateTo(key, deferred, needFocusRow) { const visibleRowIndex = this.getDataController().getRowIndexByKey(key); const isVirtualRowRenderingMode = _m_utils.default.isVirtualRowRendering(this); const isAutoNavigate = this.isAutoNavigateToFocusedRow(); if (isAutoNavigate && isVirtualRowRenderingMode && visibleRowIndex < 0) { this._navigateToVirtualRow(key, deferred, needFocusRow) } else { this._navigateToVisibleRow(key, deferred, needFocusRow) } } _navigateToVisibleRow(key, deferred, needFocusRow) { if (needFocusRow) { this._triggerUpdateFocusedRow(key, deferred) } else { const focusedRowIndex = this.getFocusedRowIndexByKey(key); this.getView("rowsView").scrollToRowElement(key, deferred).done((() => { deferred.resolve(focusedRowIndex) })) } } _navigateToVirtualRow(key, deferred, needFocusRow) { const rowsScrollController = this.getDataController()._rowsScrollController; const rowIndex = _m_utils.default.getIndexByKey(key, this.getDataController().items(true)); const scrollable = this.getView("rowsView").getScrollable(); if (rowsScrollController && scrollable && rowIndex >= 0) { const focusedRowIndex = rowIndex + this.getDataController().getRowIndexOffset(true); const offset = rowsScrollController.getItemOffset(focusedRowIndex); const triggerUpdateFocusedRow = () => { if (this.getDataController().totalCount() && !this.getDataController().items().length) { return } this.component.off("contentReady", triggerUpdateFocusedRow); if (needFocusRow) { this._triggerUpdateFocusedRow(key, deferred) } else { deferred.resolve(focusedRowIndex) } }; this.component.on("contentReady", triggerUpdateFocusedRow); this.getView("rowsView").scrollTopPosition(offset) } else { deferred.resolve(-1) } } _triggerUpdateFocusedRow(key, deferred) { const focusedRowIndex = this.getFocusedRowIndexByKey(key); if (this._isValidFocusedRowIndex(focusedRowIndex)) { let d; if (this.option("focusedRowEnabled")) { this.getDataController().updateItems({ changeType: "updateFocusedRow", focusedRowKey: key }) } else { d = this.getView("rowsView").scrollToRowElement(key) }(0, _deferred.when)(d).done((() => { this.getKeyboardController().setFocusedRowIndex(focusedRowIndex); deferred && deferred.resolve(focusedRowIndex) })) } else { deferred && deferred.resolve(-1) } } getFocusedRowIndexByKey(key) { const loadedRowIndex = this.getDataController().getRowIndexByKey(key, true); return loadedRowIndex >= 0 ? loadedRowIndex + this.getDataController().getRowIndexOffset(true) : -1 } _focusRowByKeyOrIndex() { const focusedRowKey = this.option("focusedRowKey"); let currentFocusedRowIndex = this.option("focusedRowIndex"); if ((0, _type.isDefined)(focusedRowKey)) { const visibleRowIndex = this.getDataController().getRowIndexByKey(focusedRowKey); if (visibleRowIndex >= 0) { if (this.getKeyboardController()._isVirtualScrolling()) { currentFocusedRowIndex = visibleRowIndex + this.getDataController().getRowIndexOffset() } this.getKeyboardController().setFocusedRowIndex(currentFocusedRowIndex); this._triggerUpdateFocusedRow(focusedRowKey) } else { this._navigateToRow(focusedRowKey, true).done((focusedRowIndex => { if (currentFocusedRowIndex >= 0 && focusedRowIndex < 0) { this._focusRowByIndex() } else if (currentFocusedRowIndex < 0 && focusedRowIndex >= 0) { this.getKeyboardController().setFocusedRowIndex(focusedRowIndex) } })) } } else if (currentFocusedRowIndex >= 0) { this._focusRowByIndex(currentFocusedRowIndex) } } isRowFocused(key) { const focusedRowKey = this.option("focusedRowKey"); if ((0, _type.isDefined)(focusedRowKey)) { return (0, _common.equalByValue)(key, this.option("focusedRowKey")) } return } updateFocusedRow(e) { const that = this; const focusedRowIndex = that.getDataController().getRowIndexByKey(e.focusedRowKey); const rowsView = that.getView("rowsView"); let $tableElement; let $mainRow; (0, _iterator.each)(rowsView.getTableElements(), ((index, element) => { const isMainTable = 0 === index; $tableElement = (0, _renderer.default)(element); that._clearPreviousFocusedRow($tableElement, focusedRowIndex); const $row = that._prepareFocusedRow({ changedItem: that.getDataController().getVisibleRows()[focusedRowIndex], $tableElement: $tableElement, focusedRowIndex: focusedRowIndex }); if (isMainTable) { $mainRow = $row } })); if (!e.preventScroll && $mainRow) { rowsView.scrollToElementVertically($mainRow) } } _clearPreviousFocusedRow($tableElement, focusedRowIndex) { const $prevRowFocusedElement = $tableElement.find(".dx-row.dx-row-focused").filter(((_, focusedRow) => { const $focusedRowTable = (0, _renderer.default)(focusedRow).closest(`.${this.addWidgetPrefix("table")}`); return $tableElement.is($focusedRowTable) })); $prevRowFocusedElement.removeClass("dx-row-focused").removeClass("dx-cell-focus-disabled").removeAttr("tabindex"); $prevRowFocusedElement.children("td").removeAttr("tabindex"); if (0 !== focusedRowIndex) { const $firstRow = (0, _renderer.default)(this.getView("rowsView").getRowElement(0)); $firstRow.removeClass("dx-cell-focus-disabled").removeAttr("tabIndex") } } _prepareFocusedRow(options) { let $row; const { changedItem: changedItem } = options; if (changedItem && ("data" === changedItem.rowType || "group" === changedItem.rowType)) { const { focusedRowIndex: focusedRowIndex } = options; const { $tableElement: $tableElement } = options; const tabIndex = this.option("tabindex") || 0; const rowsView = this.getView("rowsView"); $row = (0, _renderer.default)(rowsView._getRowElements($tableElement).eq(focusedRowIndex)); $row.addClass("dx-row-focused").attr("tabindex", tabIndex) } return $row } } exports.FocusController = FocusController; exports.focusModule = { defaultOptions: () => ({ focusedRowEnabled: false, autoNavigateToFocusedRow: true, focusedRowKey: null, focusedRowIndex: -1, focusedColumnIndex: -1 }), controllers: { focus: FocusController }, extenders: { controllers: { keyboardNavigation: Base => class extends Base { init() { const rowIndex = this.option("focusedRowIndex"); const columnIndex = this.option("focusedColumnIndex"); this.createAction("onFocusedRowChanging", { excludeValidators: ["disabled", "readOnly"] }); this.createAction("onFocusedRowChanged", { excludeValidators: ["disabled", "readOnly"] }); this.createAction("onFocusedCellChanging", { excludeValidators: ["disabled", "readOnly"] }); this.createAction("onFocusedCellChanged", { excludeValidators: ["disabled", "readOnly"] }); super.init(); this.setRowFocusType(); this._focusedCellPosition = {}; if ((0, _type.isDefined)(rowIndex) && rowIndex >= 0) { this._focusedCellPosition.rowIndex = rowIndex } if ((0, _type.isDefined)(columnIndex) && columnIndex >= 0) { this._focusedCellPosition.columnIndex = columnIndex } } setFocusedRowIndex(rowIndex) { super.setFocusedRowIndex(rowIndex); this.option("focusedRowIndex", rowIndex) } setFocusedColumnIndex(columnIndex) { super.setFocusedColumnIndex(columnIndex); this.option("focusedColumnIndex", columnIndex) } _escapeKeyHandler(eventArgs, isEditing) { if (isEditing || !this.option("focusedRowEnabled")) { return super._escapeKeyHandler(eventArgs, isEditing) } if (this.isCellFocusType()) { this.setRowFocusType(); this._focus(this._getCellElementFromTarget(eventArgs.originalEvent.target), true); return true } return false } _updateFocusedCellPosition($cell, direction) { const position = super._updateFocusedCellPosition($cell, direction); if (position && position.columnIndex >= 0) { this._fireFocusedCellChanged($cell) } return position } }, editorFactory: Base => class extends Base { renderFocusOverlay($element, isHideBorder) { var _this$_keyboardNaviga; const focusedRowEnabled = this.option("focusedRowEnabled"); if (!focusedRowEnabled || !(null !== (_this$_keyboardNaviga = this._keyboardNavigationController) && void 0 !== _this$_keyboardNaviga && _this$_keyboardNaviga.isRowFocusType()) || this._editingController.isEditing() || this._columnHeadersView.isFilterRowCell($element)) { super.renderFocusOverlay($element, isHideBorder) } else if (focusedRowEnabled) { const isRowElement = "row" === this._keyboardNavigationController._getElementType($element); if (isRowElement && !$element.hasClass("dx-row-focused")) { const $cell = this._keyboardNavigationController.getFirstValidCellInRow($element); this._keyboardNavigationController.focus($cell) } } } }, columns: Base => class extends Base { getSortDataSourceParameters(_, sortByKey) { let result = super.getSortDataSourceParameters.apply(this, arguments); const dataSource = this._dataController._dataSource; const store = this._dataController.store(); let key = store && store.key(); const remoteOperations = dataSource && dataSource.remoteOperations() || {}; const isLocalOperations = Object.keys(remoteOperations).every((operationName => !remoteOperations[operationName])); if (key && (this.option("focusedRowEnabled") && false !== this._focusController.isAutoNavigateToFocusedRow() || sortByKey)) { key = Array.isArray(key) ? key : [key]; const notSortedKeys = key.filter((key => !this.columnOption(key, "sortOrder"))); if (notSortedKeys.length) { result = result || []; if (isLocalOperations) { result.push({ selector: dataSource.getDataIndexGetter(), desc: false }) } else { notSortedKeys.forEach((notSortedKey => result.push({ selector: notSortedKey, desc: false }))) } } } return result } }, data: Base => class extends Base { constructor() { super(...arguments); this._needToUpdateFocusedRowByIndex = false } _applyChange(change) { if (change && "updateFocusedRow" === change.changeType) { return } return super._applyChange.apply(this, arguments) } _fireChanged(e) { super._fireChanged(e); if (this.option("focusedRowEnabled") && this._dataSource) { const isPartialUpdate = "update" === e.changeType && e.repaintChangesOnly; const isPartialUpdateWithDeleting = isPartialUpdate && e.changeTypes && e.changeTypes.indexOf("remove") >= 0; if (this._needToUpdateFocusedRowByIndex) { this._needToUpdateFocusedRowByIndex = false; this._focusController._focusRowByIndex() } else if ("refresh" === e.changeType && e.items.length || isPartialUpdateWithDeleting) { this._updatePageIndexes(); this._updateFocusedRow(e) } else if ("append" === e.changeType || "prepend" === e.changeType) { this._updatePageIndexes() } else if ("update" === e.changeType && e.repaintChangesOnly) { this._updateFocusedRow(e) } } } _handleDataPushed(changes) { super._handleDataPushed(changes); const focusedRowKey = this.option("focusedRowKey"); this._needToUpdateFocusedRowByIndex = null === changes || void 0 === changes ? void 0 : changes.some((change => "remove" === change.type && (0, _common.equalByValue)(change.key, focusedRowKey))) } _updatePageIndexes() { const prevRenderingPageIndex = this._lastRenderingPageIndex || 0; const renderingPageIndex = this._rowsScrollController ? this._rowsScrollController.pageIndex() : 0; this._lastRenderingPageIndex = renderingPageIndex; this._isPagingByRendering = renderingPageIndex !== prevRenderingPageIndex } isPagingByRendering() { return this._isPagingByRendering } _updateFocusedRow(e) { const operationTypes = e.operationTypes || {}; const { reload: reload, fullReload: fullReload, pageIndex: pageIndex, paging: paging } = operationTypes; const isVirtualScrolling = this._keyboardNavigationController._isVirtualScrolling(); const pagingWithoutVirtualScrolling = paging && !isVirtualScrolling; const focusedRowKey = this.option("focusedRowKey"); const isAutoNavigate = this._focusController.isAutoNavigateToFocusedRow(); const isReload = reload && false === pageIndex; if (isReload && !fullReload && (0, _type.isDefined)(focusedRowKey)) { this._focusController._navigateToRow(focusedRowKey, true).done((focusedRowIndex => { if (focusedRowIndex < 0) { this._focusController._focusRowByIndex(void 0, operationTypes) } })) } else if (pagingWithoutVirtualScrolling && isAutoNavigate) { const rowIndexByKey = this.getRowIndexByKey(focusedRowKey); const focusedRowIndex = this.option("focusedRowIndex"); const isValidRowIndexByKey = rowIndexByKey >= 0; const isValidFocusedRowIndex = focusedRowIndex >= 0; const isSameRowIndex = focusedRowIndex === rowIndexByKey; if (isValidFocusedRowIndex && (isSameRowIndex || !isValidRowIndexByKey)) { this._focusController._focusRowByIndex(focusedRowIndex, operationTypes) } } else if (pagingWithoutVirtualScrolling && !isAutoNavigate && this.getRowIndexByKey(focusedRowKey) < 0) { this.option("focusedRowIndex", -1) } else if (operationTypes.fullReload) { this._focusController._focusRowByKeyOrIndex() } } getPageIndexByKey(key) { const that = this; const d = new _deferred.Deferred; that.getGlobalRowIndexByKey(key).done((globalIndex => { d.resolve(globalIndex >= 0 ? Math.floor(globalIndex / that.pageSize()) : -1) })).fail(d.reject); return d.promise() } getGlobalRowIndexByKey(key) { if (this._dataSource.group()) { return this._calculateGlobalRowIndexByGroupedData(key) } return this._calculateGlobalRowIndexByFlatData(key) } _calculateGlobalRowIndexByFlatData(key, groupFilter, useGroup) { const that = this; const deferred = new _deferred.Deferred; const dataSource = that._dataSource; if (Array.isArray(key) || (0, _m_editing_utils.isNewRowTempKey)(key)) { return deferred.resolve(-1).promise() } let filter = that._generateFilterByKey(key); dataSource.load({ filter: that._concatWithCombinedFilter(filter), skip: 0, take: 1 }).done((data => { if (data.length > 0) { filter = that._generateOperationFilterByKey(key, data[0], useGroup); dataSource.load({ filter: that._concatWithCombinedFilter(filter, groupFilter), skip: 0, take: 1, requireTotalCount: true }).done(((_, extra) => { deferred.resolve(extra.totalCount) })) } else { deferred.resolve(-1) } })); return deferred.promise() } _concatWithCombinedFilter(filter, groupFilter) { const combinedFilter = this.getCombinedFilter(); return _m_utils.default.combineFilters([filter, combinedFilter, groupFilter]) } _generateBooleanFilter(selector, value, sortInfo) { const { desc: desc } = sortInfo; switch (true) { case false === value && desc: return [selector, "=", true]; case false === value && !desc: return [selector, "=", null]; case true === value && !desc: case !(0, _type.isBoolean)(value) && desc: return [selector, "<>", value]; default: return } } _generateOperationFilterByKey(key, rowData, useGroup) { const that = this; const dateSerializationFormat = that.option("dateSerializationFormat"); const isRemoteFiltering = that._dataSource.remoteOperations().filtering; const isRemoteSorting = that._dataSource.remoteOperations().sorting; let filter = that._generateFilterByKey(key, "<"); let sort = that._columnsController.getSortDataSourceParameters(!isRemoteFiltering, true); if (useGroup) { const group = that._columnsController.getGroupDataSourceParameters(!isRemoteFiltering); if (group) { sort = sort ? group.concat(sort) : group } } if (sort) { sort.slice().reverse().forEach((sortInfo => { const { selector: selector, desc: desc, compare: compare } = sortInfo; const { getter: getter, rawValue: rawValue, safeValue: safeValue } = _m_focus_utils.UiGridCoreFocusUtils.getSortFilterValue(sortInfo, rowData, { isRemoteFiltering: isRemoteFiltering, dateSerializationFormat: dateSerializationFormat, getSelector: selector => that._columnsController.columnOption(selector, "selector") }); filter = [ [selector, "=", safeValue], "and", filter ]; if (null === rawValue || (0, _type.isBoolean)(rawValue)) { const booleanFilter = that._generateBooleanFilter(selector, safeValue, desc); if (booleanFilter) { filter = [booleanFilter, "or", filter] } } else { const filterOperation = desc ? ">" : "<"; let sortFilter; if (compare && !isRemoteSorting) { sortFilter = data => { if ("<" === filterOperation) { return compare(rawValue, getter(data)) >= 1 } return compare(rawValue, getter(data)) <= -1 } } else { sortFilter = [selector, filterOperation, safeValue]; if (!desc) { sortFilter = [sortFilter, "or", [selector, "=", null]] } } filter = [sortFilter, "or", filter] } })) } return filter } _generateFilterByKey(key, operation) { const dataSourceKey = this._dataSource.key(); let filter = []; if (!operation) { operation = "=" } if (Array.isArray(dataSourceKey)) { for (let i = 0; i < dataSourceKey.length; ++i) { const keyPart = key[dataSourceKey[i]]; if (keyPart) { if (filter.length > 0) { filter.push("and") } filter.push([dataSourceKey[i], operation, keyPart]) } } } else { filter = [dataSourceKey, operation, key] } return filter } _getLastItemIndex() { return this.items(true).length - 1 } }, editing: Base => class extends Base { _deleteRowCore(rowIndex) { const deferred = super._deleteRowCore.apply(this, arguments); const rowKey = this._dataController.getKeyByRowIndex(rowIndex); deferred.done((() => { const rowIndex = this._dataController.getRowIndexByKey(rowKey); const visibleRows = this._dataController.getVisibleRows(); if (-1 === rowIndex && !visibleRows.length) { this._focusController._resetFocusedRow() } })) } } }, views: { rowsView: Base => class extends Base { _createRow(row) { const $row = super._createRow.apply(this, arguments); if (this.option("focusedRowEnabled") && row) { if (this._focusController.isRowFocused(row.key)) { $row.addClass("dx-row-focused") } } return $row } _checkRowKeys(options) { super._checkRowKeys.apply(this, arguments); if (this.option("focusedRowEnabled") && this.option("dataSource")) { const store = this._dataController.store(); if (store && !store.key()) { this._dataController.fireError("E1042", "Row focusing") } } } _update(change) { if ("updateFocusedRow" === change.changeType) { if (this.option("focusedRowEnabled")) { this._focusController.updateFocusedRow(change) } } else { super._update(change) } } updateFocusElementTabIndex($cellElements, preventScroll) { if (this.option("focusedRowEnabled")) { this._setFocusedRowElementTabIndex(preventScroll) } else { super.updateFocusElementTabIndex($cellElements) } } _setFocusedRowElementTabIndex(preventScroll) { const focusedRowKey = this.option("focusedRowKey"); const tabIndex = this.option("tabIndex") ?? 0; const columnsController = this._columnsController; let rowIndex = this._dataController.getRowIndexByKey(focusedRowKey); let columnIndex = this.option("focusedColumnIndex"); const $row = this._findRowElementForTabIndex(); const dataSource = this._dataController.dataSource(); const operationTypes = null === dataSource || void 0 === dataSource ? void 0 : dataSource.operationTypes(); const isPaging = !operationTypes || operationTypes.paging; if (!(0, _type.isDefined)(this._scrollToFocusOnResize)) { this._scrollToFocusOnResize = () => { this.scrollToElementVertically(this._findRowElementForTabIndex()); this.resizeCompleted.remove(this._scrollToFocusOnResize) } } $row.attr("tabIndex", tabIndex); const rowIndexFromOption = this.option("focusedRowIndex") - this._dataController.getRowIndexOffset(true); if (!isPaging && rowIndex < 0 && rowIndexFromOption >= 0) { this._focusController.updateFocusedRow({ focusedRowKey: focusedRowKey, preventScroll: preventScroll }) } if (rowIndex >= 0 && !preventScroll) { if (columnIndex < 0) { columnIndex = 0 } rowIndex += this._dataController.getRowIndexOffset(); columnIndex += columnsController.getColumnIndexOffset(); this._keyboardNavigationController.setFocusedCellPosition(rowIndex, columnIndex); if (this._focusController.isAutoNavigateToFocusedRow()) { if (!isPaging && !this._dataController.isPagingByRendering()) { this.resizeCompleted.remove(this._scrollToFocusOnResize); this.resizeCompleted.add(this._scrollToFocusOnResize) } } } } _findRowElementForTabIndex() { const focusedRowKey = this.option("focusedRowKey"); const rowIndex = this._dataController.getRowIndexByKey(focusedRowKey); return (0, _renderer.default)(this.getRowElement(rowIndex >= 0 ? rowIndex : 0)) } scrollToRowElement(key) { const rowIndex = this._dataController.getRowIndexByKey(key); const $row = (0, _renderer.default)(this.getRow(rowIndex)); return this.scrollToElementVertically($row) } scrollToElementVertically($row) { const scrollable = this.getScrollable(); if (scrollable && $row.length) { const position = scrollable.getScrollElementPosition($row, "vertical"); return this.scrollTopPosition(position) } return (new _deferred.Deferred).resolve() } scrollTopPosition(scrollTop) { const d = new _deferred.Deferred; const scrollable = this.getScrollable(); if (scrollable) { const currentScrollTop = scrollable.scrollTop(); const scrollHandler = () => { scrollable.off("scroll", scrollHandler); d.resolve() }; if (scrollTop !== currentScrollTop) { scrollable.on("scroll", scrollHandler); this._dataController.resetFilterApplying(); scrollable.scrollTo({ top: scrollTop }); return d.promise() } } return d.resolve() } } } } } }, 21774: /*!***********************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/grid_core/focus/m_focus_utils.js ***! \***********************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.UiGridCoreFocusUtils = void 0; var _date_serialization = (e = __webpack_require__( /*! ../../../../core/utils/date_serialization */ 71051), e && e.__esModule ? e : { default: e }); var e; var _type = __webpack_require__( /*! ../../../../core/utils/type */ 11528); exports.UiGridCoreFocusUtils = { getSortFilterValue: (sortInfo, rowData, _ref) => { let { isRemoteFiltering: isRemoteFiltering, dateSerializationFormat: dateSerializationFormat, getSelector: getSelector } = _ref; const { selector: selector } = sortInfo; const getter = (0, _type.isFunction)(selector) ? selector : getSelector(selector); const rawValue = getter ? getter(rowData) : rowData[selector]; const safeValue = isRemoteFiltering && (0, _type.isDate)(rawValue) ? _date_serialization.default.serializeDate(rawValue, dateSerializationFormat) : rawValue; return { getter: getter, rawValue: rawValue, safeValue: safeValue } } } }, 69952: /*!*********************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/grid_core/header_filter/m_header_filter.js ***! \*********************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.HeaderFilterController = void 0; exports.convertDataFromUTCToLocal = convertDataFromUTCToLocal; exports.headerFilterModule = exports.getFormatOptions = void 0; exports.invertFilterExpression = function(filter) { return ["!", filter] }; exports.isUTCFormat = isUTCFormat; var _click = __webpack_require__( /*! ../../../../common/core/events/click */ 64044); var _events_engine = _interopRequireDefault(__webpack_require__( /*! ../../../../common/core/events/core/events_engine */ 92774)); var _date = _interopRequireDefault(__webpack_require__( /*! ../../../../common/core/localization/date */ 38662)); var _message = _interopRequireDefault(__webpack_require__( /*! ../../../../common/core/localization/message */ 4671)); var _utils = __webpack_require__( /*! ../../../../common/data/data_source/utils */ 97169); var _query = _interopRequireDefault(__webpack_require__( /*! ../../../../common/data/query */ 30771)); var _store_helper = _interopRequireDefault(__webpack_require__( /*! ../../../../common/data/store_helper */ 66177)); var _data = __webpack_require__( /*! ../../../../core/utils/data */ 31e3); var _deferred = __webpack_require__( /*! ../../../../core/utils/deferred */ 87739); var _extend = __webpack_require__( /*! ../../../../core/utils/extend */ 52576); var _iterator = __webpack_require__( /*! ../../../../core/utils/iterator */ 21274); var _position = __webpack_require__( /*! ../../../../core/utils/position */ 41639); var _type = __webpack_require__( /*! ../../../../core/utils/type */ 11528); var _accessibility = __webpack_require__( /*! ../../../../ui/shared/accessibility */ 16191); var _filtering = _interopRequireDefault(__webpack_require__( /*! ../../../../ui/shared/filtering */ 56417)); var _m_modules = _interopRequireDefault(__webpack_require__( /*! ../../../grids/grid_core/m_modules */ 74854)); var _m_utils = _interopRequireDefault(__webpack_require__( /*! ../m_utils */ 53226)); var _m_header_filter_core = __webpack_require__( /*! ./m_header_filter_core */ 83040); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } function _extends() { return _extends = Object.assign ? Object.assign.bind() : function(n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) { ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]) } } return n }, _extends.apply(null, arguments) } const DATE_INTERVAL_FORMATS = { month: value => _date.default.getMonthNames()[value - 1], quarter: value => _date.default.format(new Date(2e3, 3 * value - 1), "quarter") }; function ungroupUTCDates(items, dateParts, dates) { dateParts = dateParts || []; dates = dates || []; items.forEach((item => { if ((0, _type.isDefined)(item.key)) { const isMonthPart = 1 === dateParts.length; dateParts.push(isMonthPart ? item.key - 1 : item.key); if (item.items) { ungroupUTCDates(item.items, dateParts, dates) } else { const date = new Date(Date.UTC.apply(Date, dateParts)); dates.push(date) } dateParts.pop() } else { dates.push(null) } })); return dates } function convertDataFromUTCToLocal(data, column) { const dates = ungroupUTCDates(data); const query = (0, _query.default)(dates); const group = _m_utils.default.getHeaderFilterGroupParameters(_extends({}, column, { calculateCellValue: date => date })); return _store_helper.default.queryByOptions(query, { group: group }).toArray() } function isUTCFormat(format) { return "Z" === (null === format || void 0 === format ? void 0 : format.slice(-1)) || "'Z'" === (null === format || void 0 === format ? void 0 : format.slice(-3)) } const getFormatOptions = function(value, column, currentLevel) { const groupInterval = _filtering.default.getGroupInterval(column); const result = _m_utils.default.getFormatOptionsByColumn(column, "headerFilter"); if (groupInterval) { result.groupInterval = groupInterval[currentLevel]; if (_m_utils.default.isDateType(column.dataType)) { result.format = DATE_INTERVAL_FORMATS[groupInterval[currentLevel]] } else if ("number" === column.dataType) { result.getDisplayFormat = function() { const formatOptions = { format: column.format, target: "headerFilter" }; const firstValueText = _m_utils.default.formatValue(value, formatOptions); const secondValue = value + groupInterval[currentLevel]; const secondValueText = _m_utils.default.formatValue(secondValue, formatOptions); return firstValueText && secondValueText ? `${firstValueText} - ${secondValueText}` : "" } } } return result }; exports.getFormatOptions = getFormatOptions; class HeaderFilterController extends _m_modules.default.ViewController { init() { this._columnsController = this.getController("columns"); this._dataController = this.getController("data"); this._headerFilterView = this.getView("headerFilterView") } _updateSelectedState(items, column) { let i = items.length; const isExclude = "exclude" === column.filterType; while (i--) { const item = items[i]; if ("items" in items[i]) { this._updateSelectedState(items[i].items, column) }(0, _m_header_filter_core.updateHeaderFilterItemSelectionState)(item, _m_utils.default.getIndexByKey(items[i].value, column.filterValues, null) > -1, isExclude) } } _normalizeGroupItem(item, currentLevel, options) { let value; let displayValue; const { path: path } = options; const { valueSelector: valueSelector } = options; const { displaySelector: displaySelector } = options; const { column: column } = options; if (valueSelector && displaySelector) { value = valueSelector(item); displayValue = displaySelector(item) } else { value = item.key; displayValue = value } if (!(0, _type.isObject)(item)) { item = {} } else { item = (0, _extend.extend)({}, item) } path.push(value); if (1 === path.length) { item.value = path[0] } else { item.value = path.join("/") } item.text = this.getHeaderItemText(displayValue, column, currentLevel, options.headerFilterOptions); return item } getHeaderItemText(displayValue, column, currentLevel, headerFilterOptions) { let text = _m_utils.default.formatValue(displayValue, getFormatOptions(displayValue, column, currentLevel)); if (!text) { text = headerFilterOptions.texts.emptyValue } return text } _processGroupItems(groupItems, currentLevel, path, options) { const that = this; let displaySelector; let valueSelector; const { column: column } = options; const { lookup: lookup } = column; const { level: level } = options; path = path || []; currentLevel = currentLevel || 0; if (lookup) { displaySelector = (0, _data.compileGetter)(lookup.displayExpr); valueSelector = (0, _data.compileGetter)(lookup.valueExpr) } for (let i = 0; i < groupItems.length; i++) { groupItems[i] = that._normalizeGroupItem(groupItems[i], currentLevel, { column: options.column, headerFilterOptions: options.headerFilterOptions, displaySelector: displaySelector, valueSelector: valueSelector, path: path }); if ("items" in groupItems[i]) { if (currentLevel === level || !(0, _type.isDefined)(groupItems[i].value)) { delete groupItems[i].items } else { that._processGroupItems(groupItems[i].items, currentLevel + 1, path, options) } } path.pop() } } getDataSource(column) { var _column$headerFilter; const dataSource = this._dataController.dataSource(); const remoteGrouping = null === dataSource || void 0 === dataSource ? void 0 : dataSource.remoteOperations().grouping; const group = _m_utils.default.getHeaderFilterGroupParameters(column, remoteGrouping); const headerFilterDataSource = null === (_column$headerFilter = column.headerFilter) || void 0 === _column$headerFilter ? void 0 : _column$headerFilter.dataSource; const headerFilterOptions = this.option("headerFilter"); let isLookup = false; const options = { component: this.component }; if (!dataSource) { return } if ((0, _type.isDefined)(headerFilterDataSource) && !(0, _type.isFunction)(headerFilterDataSource)) { options.dataSource = (0, _utils.normalizeDataSourceOptions)(headerFilterDataSource) } else if (column.lookup) { isLookup = true; if (this.option("syncLookupFilterValues")) { this._currentColumn = column; const filter = this._dataController.getCombinedFilter(); this._currentColumn = null; options.dataSource = _m_utils.default.getWrappedLookupDataSource(column, dataSource, filter) } else { options.dataSource = _m_utils.default.normalizeLookupDataSource(column.lookup) } } else { const cutoffLevel = Array.isArray(group) ? group.length - 1 : 0; this._currentColumn = column; const filter = this._dataController.getCombinedFilter(); this._currentColumn = null; options.dataSource = { filter: filter, group: group, useDefaultSearch: true, load: options => { const d = new _deferred.Deferred; options.dataField = column.dataField || column.name; dataSource.load(options).done((data => { const convertUTCDates = remoteGrouping && isUTCFormat(column.serializationFormat) && cutoffLevel > 3; if (convertUTCDates) { data = convertDataFromUTCToLocal(data, column) } that._processGroupItems(data, null, null, { level: cutoffLevel, column: column, headerFilterOptions: headerFilterOptions }); d.resolve(data) })).fail(d.reject); return d } } } if ((0, _type.isFunction)(headerFilterDataSource)) { headerFilterDataSource.call(column, options) } const origPostProcess = options.dataSource.postProcess; const that = this; options.dataSource.postProcess = function(data) { let items = data; if (isLookup) { items = items.filter((item => null !== item[column.lookup.valueExpr])); if (0 === this.pageIndex() && !this.searchValue()) { items = items.slice(0); items.unshift(null) } that._processGroupItems(items, null, null, { level: 0, column: column, headerFilterOptions: headerFilterOptions }) } items = origPostProcess && origPostProcess.call(this, items) || items; that._updateSelectedState(items, column); return items }; return options.dataSource } getCurrentColumn() { return this._currentColumn } showHeaderFilterMenu(columnIndex, isGroupPanel) { const columnsController = this._columnsController; const column = (0, _extend.extend)(true, {}, this._columnsController.getColumns()[columnIndex]); if (column) { const visibleIndex = columnsController.getVisibleIndex(columnIndex); const view = isGroupPanel ? this.getView("headerPanel") : this.getView("columnHeadersView"); const $columnElement = view.getColumnElements().eq(isGroupPanel ? column.groupIndex : visibleIndex); this.showHeaderFilterMenuBase({ columnElement: $columnElement, column: column, applyFilter: true, apply() { columnsController.columnOption(columnIndex, { filterValues: this.filterValues, filterType: this.filterType }) } }) } } showHeaderFilterMenuBase(options) { const that = this; const { column: column } = options; if (column) { const groupInterval = _filtering.default.getGroupInterval(column); const dataSource = that._dataController.dataSource(); const remoteFiltering = dataSource && dataSource.remoteOperations().filtering; const previousOnHidden = options.onHidden; (0, _extend.extend)(options, column, { type: groupInterval && groupInterval.length > 1 ? "tree" : "list", remoteFiltering: remoteFiltering, onShowing: e => { const dxResizableInstance = e.component.$overlayContent().dxResizable("instance"); dxResizableInstance && dxResizableInstance.option("onResizeEnd", (e => { let headerFilterByColumn = this._columnsController.columnOption(options.dataField, "headerFilter"); headerFilterByColumn = headerFilterByColumn || {}; headerFilterByColumn.width = e.width; headerFilterByColumn.height = e.height; this._columnsController.columnOption(options.dataField, "headerFilter", headerFilterByColumn, true) })) }, onHidden: () => { null === previousOnHidden || void 0 === previousOnHidden || previousOnHidden(); (0, _accessibility.restoreFocus)(this) } }); options.dataSource = that.getDataSource(options); if (options.isFilterBuilder) { options.dataSource.filter = null; options.alignment = "right" } that._headerFilterView.showHeaderFilterMenu(options.columnElement, options) } } hideHeaderFilterMenu() { this._headerFilterView.hideHeaderFilterMenu() } } exports.HeaderFilterController = HeaderFilterController; exports.headerFilterModule = { defaultOptions: () => ({ syncLookupFilterValues: true, headerFilter: { visible: false, width: 252, height: 325, allowSelectAll: true, search: { enabled: false, timeout: 500, mode: "contains", editorOptions: {} }, texts: { emptyValue: _message.default.format("dxDataGrid-headerFilterEmptyValue"), ok: _message.default.format("dxDataGrid-headerFilterOK"), cancel: _message.default.format("dxDataGrid-headerFilterCancel") } } }), controllers: { headerFilter: HeaderFilterController }, views: { headerFilterView: _m_header_filter_core.HeaderFilterView }, extenders: { controllers: { data: Base => class extends Base { skipCalculateColumnFilters() { return false } _calculateAdditionalFilter() { if (this.skipCalculateColumnFilters()) { return super._calculateAdditionalFilter() } const filters = [super._calculateAdditionalFilter()]; const columns = this._columnsController.getVisibleColumns(null, true); const headerFilterController = this._headerFilterController; const currentColumn = headerFilterController.getCurrentColumn(); (0, _iterator.each)(columns, ((_, column) => { let filter; if (currentColumn && currentColumn.index === column.index) { return } if ((0, _m_header_filter_core.allowHeaderFiltering)(column) && column.calculateFilterExpression && Array.isArray(column.filterValues) && column.filterValues.length) { let filterValues = []; (0, _iterator.each)(column.filterValues, ((_, filterValue) => { if (Array.isArray(filterValue)) { filter = filterValue } else { if (column.deserializeValue && !_m_utils.default.isDateType(column.dataType) && "number" !== column.dataType) { filterValue = column.deserializeValue(filterValue) } filter = column.createFilterExpression(filterValue, "=", "headerFilter") } if (filter) { filter.columnIndex = column.index } filterValues.push(filter) })); filterValues = _m_utils.default.combineFilters(filterValues, "or"); filters.push("exclude" === column.filterType ? ["!", filterValues] : filterValues) } })); return _m_utils.default.combineFilters(filters) } } }, views: { columnHeadersView: Base => class extends((0, _m_header_filter_core.headerFilterMixin)(Base)) { _renderCellContent($cell, options) { const that = this; let $headerFilterIndicator; const { column: column } = options; if (!column.command && (0, _m_header_filter_core.allowHeaderFiltering)(column) && that.option("headerFilter.visible") && "header" === options.rowType) { $headerFilterIndicator = that._applyColumnState({ name: "headerFilter", rootElement: $cell, column: column, showColumnLines: that.option("showColumnLines") }); $headerFilterIndicator && that._subscribeToIndicatorEvent($headerFilterIndicator, column, "headerFilter") } super._renderCellContent.apply(this, arguments) } _subscribeToIndicatorEvent($indicator, column, indicatorName) { if ("headerFilter" === indicatorName) { _events_engine.default.on($indicator, _click.name, this.createAction((e => { e.event.stopPropagation(); (0, _accessibility.saveFocusedElementInfo)($indicator, this); this._headerFilterController.showHeaderFilterMenu(column.index, false) }))) } } _updateIndicator($cell, column, indicatorName) { const $indicator = super._updateIndicator($cell, column, indicatorName); $indicator && this._subscribeToIndicatorEvent($indicator, column, indicatorName) } _updateHeaderFilterIndicators() { if (this.option("headerFilter.visible")) { this._updateIndicators("headerFilter") } } _needUpdateFilterIndicators() { return true } _columnOptionChanged(e) { const { optionNames: optionNames } = e; const isFilterRowAndHeaderFilterValuesChanged = _m_utils.default.checkChanges(optionNames, ["filterValues", "filterValue"]); const isHeaderFilterValuesAndTypeChanged = _m_utils.default.checkChanges(optionNames, ["filterValues", "filterType"]); const shouldUpdateFilterIndicators = (isFilterRowAndHeaderFilterValuesChanged || isHeaderFilterValuesAndTypeChanged) && this._needUpdateFilterIndicators(); if (shouldUpdateFilterIndicators) { this._updateHeaderFilterIndicators() } if (!isHeaderFilterValuesAndTypeChanged) { super._columnOptionChanged(e) } } }, headerPanel: Base => class extends((0, _m_header_filter_core.headerFilterMixin)(Base)) { _createGroupPanelItem($rootElement, groupColumn) { const that = this; const $item = super._createGroupPanelItem.apply(that, arguments); let $headerFilterIndicator; if (!groupColumn.command && (0, _m_header_filter_core.allowHeaderFiltering)(groupColumn) && that.option("headerFilter.visible")) { $headerFilterIndicator = that._applyColumnState({ name: "headerFilter", rootElement: $item, column: { alignment: (0, _position.getDefaultAlignment)(that.option("rtlEnabled")), filterValues: groupColumn.filterValues, allowHeaderFiltering: true, caption: groupColumn.caption }, showColumnLines: true }); $headerFilterIndicator && _events_engine.default.on($headerFilterIndicator, _click.name, that.createAction((e => { const { event: event } = e; event.stopPropagation(); this._headerFilterController.showHeaderFilterMenu(groupColumn.index, true) }))) } return $item } } } } } }, 83040: /*!**************************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/grid_core/header_filter/m_header_filter_core.js ***! \**************************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.headerFilterMixin = exports.allowHeaderFiltering = exports.HeaderFilterView = void 0; exports.updateHeaderFilterItemSelectionState = function(item, filterValuesMatch, isExcludeFilter) { if (filterValuesMatch ^ isExcludeFilter) { item.selected = true; if (isExcludeFilter && item.items) { for (let j = 0; j < item.items.length; j++) { if (!item.items[j].selected) { item.selected = void 0; break } } } } else if (isExcludeFilter || item.selected) { item.selected = false; resetChildrenItemSelection(item.items) } }; __webpack_require__( /*! ../../../ui/list/modules/m_search */ 18928); __webpack_require__( /*! ../../../ui/list/modules/m_selection */ 44804); var _message = _interopRequireDefault(__webpack_require__( /*! ../../../../common/core/localization/message */ 4671)); var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../../../core/renderer */ 64553)); var _extend = __webpack_require__( /*! ../../../../core/utils/extend */ 52576); var _iterator = __webpack_require__( /*! ../../../../core/utils/iterator */ 21274); var _type = __webpack_require__( /*! ../../../../core/utils/type */ 11528); var _list_light = _interopRequireDefault(__webpack_require__( /*! ../../../../ui/list_light */ 80070)); var _ui = _interopRequireDefault(__webpack_require__( /*! ../../../../ui/popup/ui.popup */ 10720)); var _tree_view = _interopRequireDefault(__webpack_require__( /*! ../../../../ui/tree_view */ 4313)); var _m_modules = _interopRequireDefault(__webpack_require__( /*! ../../../grids/grid_core/m_modules */ 74854)); var _m_utils = _interopRequireDefault(__webpack_require__( /*! ../m_utils */ 53226)); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } function resetChildrenItemSelection(items) { items = items || []; for (let i = 0; i < items.length; i++) { items[i].selected = false; resetChildrenItemSelection(items[i].items) } } function getSelectAllCheckBox(listComponent) { const selector = "dxTreeView" === listComponent.NAME ? ".dx-treeview-select-all-item" : ".dx-list-select-all-checkbox"; return listComponent.$element().find(selector).dxCheckBox("instance") } function updateListSelectAllState(listComponent, filterValues) { if (listComponent.option("searchValue")) { return } const selectAllCheckBox = getSelectAllCheckBox(listComponent); if (selectAllCheckBox && null !== filterValues && void 0 !== filterValues && filterValues.length) { selectAllCheckBox.option("value", void 0); const originalValueChanged = selectAllCheckBox.option("onValueChanged"); selectAllCheckBox.option("onValueChanged", (event => { selectAllCheckBox.option("onValueChanged", originalValueChanged); const deferred = listComponent.unselectAll(); if ((0, _type.isDeferred)(deferred)) { deferred.always((() => { null === originalValueChanged || void 0 === originalValueChanged || originalValueChanged(event) })) } else { null === originalValueChanged || void 0 === originalValueChanged || originalValueChanged(event) } })) } } class HeaderFilterView extends _m_modules.default.View { getPopupContainer() { return this._popupContainer } getListComponent() { return this._listComponent } applyHeaderFilter(options) { const list = this.getListComponent(); const searchValue = list.option("searchValue"); const selectAllCheckBox = getSelectAllCheckBox(list); const isAllSelected = !searchValue && !options.isFilterBuilder && (null === selectAllCheckBox || void 0 === selectAllCheckBox ? void 0 : selectAllCheckBox.option("value")); const filterValues = []; const fillSelectedItemKeys = function(filterValues, items, isExclude) { (0, _iterator.each)(items, ((_, item) => { if (void 0 !== item.selected && !!item.selected ^ isExclude) { const node = list._getNode(item); const hasChildren = list._hasChildren(node); const hasChildrenWithSelection = hasChildren && item.items && item.items.some((item => item.selected)); if (!searchValue || !hasChildrenWithSelection) { filterValues.push(item.value); return } } if (item.items && item.items.length) { fillSelectedItemKeys(filterValues, item.items, isExclude) } })) }; if (!isAllSelected) { if ("tree" === options.type) { if (options.filterType) { options.filterType = "include" } fillSelectedItemKeys(filterValues, list.option("items"), false); options.filterValues = filterValues } } else { if ("tree" === options.type) { options.filterType = "exclude" } if (Array.isArray(options.filterValues)) { options.filterValues = [] } } if (options.filterValues && !options.filterValues.length) { options.filterValues = null } options.apply(); this.hideHeaderFilterMenu() } showHeaderFilterMenu($columnElement, options) { const that = this; if (options) { that._initializePopupContainer(options); const popupContainer = that.getPopupContainer(); that.hideHeaderFilterMenu(); that.updatePopup($columnElement, options); popupContainer.show() } } hideHeaderFilterMenu() { const headerFilterMenu = this.getPopupContainer(); headerFilterMenu && headerFilterMenu.hide() } updatePopup($element, options) { const that = this; const showColumnLines = this.option("showColumnLines"); const alignment = "right" === options.alignment ^ !showColumnLines ? "left" : "right"; that._popupContainer.setAria({ role: "dialog", label: _message.default.format("dxDataGrid-headerFilterLabel") }); if (that._popupContainer) { that._cleanPopupContent(); that._popupContainer.option("position", { my: `${alignment} top`, at: `${alignment} bottom`, of: $element, collision: "fit fit" }) } } _getSearchExpr(options, headerFilterOptions) { const { lookup: lookup } = options; const { useDefaultSearchExpr: useDefaultSearchExpr } = options; const headerFilterDataSource = headerFilterOptions.dataSource; const filterSearchExpr = headerFilterOptions.search.searchExpr; if (filterSearchExpr) { return filterSearchExpr } if (useDefaultSearchExpr || (0, _type.isDefined)(headerFilterDataSource) && !(0, _type.isFunction)(headerFilterDataSource)) { return "text" } if (lookup) { return lookup.displayExpr || "this" } if (options.dataSource) { const { group: group } = options.dataSource; if (Array.isArray(group) && group.length > 0) { return group[0].selector } if ((0, _type.isFunction)(group) && !options.remoteFiltering) { return group } } return options.dataField || options.selector } _cleanPopupContent() { this._popupContainer && this._popupContainer.$content().empty() } _initializePopupContainer(options) { const that = this; const $element = that.element(); const headerFilterOptions = this._normalizeHeaderFilterOptions(options); const { hidePopupCallback: hidePopupCallback } = options; const { height: height, width: width } = headerFilterOptions; const dxPopupOptions = { width: width, height: height, visible: false, shading: false, showTitle: false, showCloseButton: false, hideOnParentScroll: false, dragEnabled: false, hideOnOutsideClick: true, wrapperAttr: { class: "dx-header-filter-menu" }, focusStateEnabled: false, toolbarItems: [{ toolbar: "bottom", location: "after", widget: "dxButton", options: { text: headerFilterOptions.texts.ok, onClick() { that.applyHeaderFilter(options) } } }, { toolbar: "bottom", location: "after", widget: "dxButton", options: { text: headerFilterOptions.texts.cancel, onClick() { that.hideHeaderFilterMenu(); null === hidePopupCallback || void 0 === hidePopupCallback || hidePopupCallback() } } }], resizeEnabled: true, onShowing(e) { e.component.$content().parent().addClass("dx-dropdowneditor-overlay"); that._initializeListContainer(options, headerFilterOptions); options.onShowing && options.onShowing(e) }, onShown() { that.getListComponent().focus() }, onHidden: options.onHidden, onInitialized(e) { const { component: component } = e; component.option("animation", component._getDefaultOptions().animation) }, _loopFocus: true }; if (!(0, _type.isDefined)(that._popupContainer)) { that._popupContainer = that._createComponent($element, _ui.default, dxPopupOptions) } else { that._popupContainer.option(dxPopupOptions) } } _initializeListContainer(options, headerFilterOptions) { const that = this; const $content = that._popupContainer.$content(); const needShowSelectAllCheckbox = !options.isFilterBuilder && headerFilterOptions.allowSelectAll; const widgetOptions = { searchEnabled: headerFilterOptions.search.enabled, searchTimeout: headerFilterOptions.search.timeout, searchEditorOptions: headerFilterOptions.search.editorOptions, searchMode: headerFilterOptions.search.mode || "", dataSource: options.dataSource, onContentReady() { that.renderCompleted.fire() }, itemTemplate(data, _, element) { const $element = (0, _renderer.default)(element); if (options.encodeHtml) { return $element.text(data.text) } return $element.html(data.text) } }; const shouldChangeSelectAllCheckBoxVisibility = () => needShowSelectAllCheckbox && false !== that.option("headerFilter.hideSelectAllOnSearch"); const onTreeViewOptionChanged = event => { switch (true) { case "searchValue" === event.fullName && shouldChangeSelectAllCheckBoxVisibility(): event.component.option("showCheckBoxesMode", event.value ? "normal" : "selectAll"); break; case "showCheckBoxesMode" === event.fullName: Promise.resolve().then((() => { event.component._searchEditor.focus() })).catch((() => {})) } }; const onListOptionChanged = event => { if ("searchValue" === event.fullName && shouldChangeSelectAllCheckBoxVisibility()) { event.component.option("selectionMode", event.value ? "multiple" : "all") } }; if ("tree" === options.type) { that._listComponent = that._createComponent((0, _renderer.default)("
").appendTo($content), _tree_view.default, (0, _extend.extend)(widgetOptions, { showCheckBoxesMode: needShowSelectAllCheckbox ? "selectAll" : "normal", onOptionChanged: onTreeViewOptionChanged, keyExpr: "id" })) } else { that._listComponent = that._createComponent((0, _renderer.default)("
").appendTo($content), _list_light.default, (0, _extend.extend)(widgetOptions, { searchExpr: that._getSearchExpr(options, headerFilterOptions), pageLoadMode: "scrollBottom", showSelectionControls: true, selectionMode: needShowSelectAllCheckbox ? "all" : "multiple", onOptionChanged: onListOptionChanged, onSelectionChanged(event) { const { component: listComponent } = event; const items = listComponent.option("items"); const selectedItems = listComponent.option("selectedItems"); if (!listComponent._selectedItemsUpdating && !listComponent.option("searchValue") && !options.isFilterBuilder) { const filterValues = options.filterValues || []; const isExclude = "exclude" === options.filterType; if (0 === selectedItems.length && items.length && (filterValues.length <= 1 || isExclude && filterValues.length === items.length - 1)) { options.filterType = "include"; options.filterValues = [] } else if (selectedItems.length === items.length) { options.filterType = "exclude"; options.filterValues = [] } }(0, _iterator.each)(items, ((index, item) => { const selected = _m_utils.default.getIndexByKey(item, selectedItems, null) >= 0; const oldSelected = !!item.selected; if (oldSelected !== selected) { item.selected = selected; options.filterValues = options.filterValues || []; const filterValueIndex = _m_utils.default.getIndexByKey(item.value, options.filterValues, null); if (filterValueIndex >= 0) { options.filterValues.splice(filterValueIndex, 1) } const isExcludeFilterType = "exclude" === options.filterType; if (selected ^ isExcludeFilterType) { options.filterValues.push(item.value) } } })); updateListSelectAllState(listComponent, options.filterValues) }, onContentReady(e) { const { component: listComponent } = e; const items = listComponent.option("items"); const selectedItems = []; (0, _iterator.each)(items, (function() { if (this.selected) { selectedItems.push(this) } })); listComponent._selectedItemsUpdating = true; listComponent.option("selectedItems", selectedItems); listComponent._selectedItemsUpdating = false; updateListSelectAllState(listComponent, options.filterValues) } })) } } _normalizeHeaderFilterOptions(options) { const generalHeaderFilter = this.option("headerFilter") || {}; const specificHeaderFilter = options.headerFilter || {}; const generalDeprecated = { search: { enabled: generalHeaderFilter.allowSearch, timeout: generalHeaderFilter.searchTimeout } }; const specificDeprecated = { search: { enabled: specificHeaderFilter.allowSearch, mode: specificHeaderFilter.searchMode, timeout: specificHeaderFilter.searchTimeout } }; return (0, _extend.extend)(true, {}, generalHeaderFilter, generalDeprecated, specificHeaderFilter, specificDeprecated) } _renderCore() { this.element().addClass("dx-header-filter-menu") } } exports.HeaderFilterView = HeaderFilterView; const allowHeaderFiltering = function(column) { return (0, _type.isDefined)(column.allowHeaderFiltering) ? column.allowHeaderFiltering : column.allowFiltering }; exports.allowHeaderFiltering = allowHeaderFiltering; exports.headerFilterMixin = Base => class extends Base { optionChanged(args) { if ("headerFilter" === args.name) { const requireReady = "columnHeadersView" === this.name; this._invalidate(requireReady, requireReady); args.handled = true } else { super.optionChanged(args) } } _applyColumnState(options) { let $headerFilterIndicator; const { rootElement: rootElement } = options; const { column: column } = options; if ("headerFilter" === options.name) { rootElement.find(".dx-header-filter").remove(); if (allowHeaderFiltering(column)) { $headerFilterIndicator = super._applyColumnState(options).toggleClass("dx-header-filter-empty", this._isHeaderFilterEmpty(column)); if (!this.option("useLegacyKeyboardNavigation")) { $headerFilterIndicator.attr("tabindex", this.option("tabindex") || 0) } const indicatorLabel = _message.default.format("dxDataGrid-headerFilterIndicatorLabel", column.caption); $headerFilterIndicator.attr("aria-label", indicatorLabel); $headerFilterIndicator.attr("aria-haspopup", "dialog"); $headerFilterIndicator.attr("role", "button") } return $headerFilterIndicator } return super._applyColumnState(options) } _isHeaderFilterEmpty(column) { return !column.filterValues || !column.filterValues.length } _getIndicatorClassName(name) { if ("headerFilter" === name) { return "dx-header-filter" } return super._getIndicatorClassName(name) } _renderIndicator(options) { const $container = options.container; const $indicator = options.indicator; if ("headerFilter" === options.name) { const rtlEnabled = this.option("rtlEnabled"); if ($container.children().length && (!rtlEnabled && "right" === options.columnAlignment || rtlEnabled && "left" === options.columnAlignment)) { $container.prepend($indicator); return } } super._renderIndicator(options) } } }, 5542: /*!*******************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/grid_core/header_panel/m_header_panel.js ***! \*******************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.headerPanelModule = exports.HeaderPanel = void 0; var _message = _interopRequireDefault(__webpack_require__( /*! ../../../../common/core/localization/message */ 4671)); var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../../../core/renderer */ 64553)); var _data = __webpack_require__( /*! ../../../../core/utils/data */ 31e3); var _type = __webpack_require__( /*! ../../../../core/utils/type */ 11528); var _toolbar = _interopRequireDefault(__webpack_require__( /*! ../../../../ui/toolbar */ 2850)); var _utils = __webpack_require__( /*! ../../../grids/new/grid_core/toolbar/utils */ 31895); var _m_columns_view = __webpack_require__( /*! ../views/m_columns_view */ 48921); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } const DEFAULT_TOOLBAR_ITEM_NAMES = ["addRowButton", "applyFilterButton", "columnChooserButton", "exportButton", "groupPanel", "revertButton", "saveButton", "searchPanel"]; class HeaderPanel extends _m_columns_view.ColumnsView { init() { super.init(); this._editingController = this.getController("editing"); this._headerFilterController = this.getController("headerFilter"); this.createAction("onToolbarPreparing", { excludeValidators: ["disabled", "readOnly"] }) } _getToolbarItems() { return [] } _getButtonContainer() { return (0, _renderer.default)("
").addClass(this.addWidgetPrefix("toolbar-button")) } _getToolbarButtonClass(specificClass) { const secondClass = specificClass ? ` ${specificClass}` : ""; return this.addWidgetPrefix("toolbar-button") + secondClass } _getToolbarOptions() { const userToolbarOptions = this.option("toolbar"); const options = { toolbarOptions: { items: this._getToolbarItems(), visible: null === userToolbarOptions || void 0 === userToolbarOptions ? void 0 : userToolbarOptions.visible, disabled: null === userToolbarOptions || void 0 === userToolbarOptions ? void 0 : userToolbarOptions.disabled, onItemRendered(e) { const itemRenderedCallback = e.itemData.onItemRendered; if (itemRenderedCallback) { itemRenderedCallback(e) } } } }; const userItems = null === userToolbarOptions || void 0 === userToolbarOptions ? void 0 : userToolbarOptions.items; options.toolbarOptions.items = (0, _utils.normalizeToolbarItems)(options.toolbarOptions.items, userItems, DEFAULT_TOOLBAR_ITEM_NAMES); this.executeAction("onToolbarPreparing", options); if (options.toolbarOptions && !(0, _type.isDefined)(options.toolbarOptions.visible)) { const toolbarItems = options.toolbarOptions.items; options.toolbarOptions.visible = !!(null !== toolbarItems && void 0 !== toolbarItems && toolbarItems.length) } return options.toolbarOptions } _renderCore() { if (!this._toolbar) { const $headerPanel = this.element(); $headerPanel.addClass(this.addWidgetPrefix("header-panel")); const label = _message.default.format(this.component.NAME + "-ariaToolbar"); const $toolbar = (0, _renderer.default)("
").attr("aria-label", label).appendTo($headerPanel); this._toolbar = this._createComponent($toolbar, _toolbar.default, this._toolbarOptions) } else { this._toolbar.option(this._toolbarOptions) } } _columnOptionChanged() {} _handleDataChanged() { if (this._requireReady) { this.render() } } _isDisabledDefinedByUser(name) { var _this$option; const userItems = null === (_this$option = this.option("toolbar")) || void 0 === _this$option ? void 0 : _this$option.items; const userItem = null === userItems || void 0 === userItems ? void 0 : userItems.find((item => (null === item || void 0 === item ? void 0 : item.name) === name)); return (0, _type.isDefined)(null === userItem || void 0 === userItem ? void 0 : userItem.disabled) } render() { this._toolbarOptions = this._getToolbarOptions(); super.render.apply(this, arguments) } setToolbarItemDisabled(name, disabled) { const toolbar = this._toolbar; const isDefinedByUser = this._isDisabledDefinedByUser(name); if (!toolbar || isDefinedByUser) { return } const items = toolbar.option("items") ?? []; const itemIndex = items.findIndex((item => item.name === name)); if (itemIndex < 0) { return } const item = toolbar.option(`items[${itemIndex}]`); toolbar.option(`items[${itemIndex}].disabled`, disabled); if (item.options) { toolbar.option(`items[${itemIndex}].options.disabled`, disabled) } } updateToolbarDimensions() { var _this$_toolbar; null === (_this$_toolbar = this._toolbar) || void 0 === _this$_toolbar || _this$_toolbar.updateDimensions() } getHeaderPanel() { return this.element() } getHeight() { return this.getElementHeight() } optionChanged(args) { if ("onToolbarPreparing" === args.name) { this._invalidate(); args.handled = true } if ("toolbar" === args.name) { const parts = (0, _data.getPathParts)(args.fullName); const optionName = args.fullName.replace(/^toolbar\./, ""); if (1 === parts.length || "visible" === parts[1]) { this._invalidate() } else if ("items" === parts[1]) { if (2 === parts.length) { this._invalidate() } else if (3 === parts.length) { var _this$_toolbar2; const normalizedItem = (0, _utils.normalizeToolbarItems)(this._getToolbarItems(), [args.value], DEFAULT_TOOLBAR_ITEM_NAMES)[0]; null === (_this$_toolbar2 = this._toolbar) || void 0 === _this$_toolbar2 || _this$_toolbar2.option(optionName, normalizedItem) } else if (parts.length >= 4) { var _this$_toolbar3; null === (_this$_toolbar3 = this._toolbar) || void 0 === _this$_toolbar3 || _this$_toolbar3.option(optionName, args.value) } } else { var _this$_toolbar4; null === (_this$_toolbar4 = this._toolbar) || void 0 === _this$_toolbar4 || _this$_toolbar4.option(optionName, args.value) } args.handled = true } super.optionChanged(args) } isVisible() { return !!(this._toolbarOptions && this._toolbarOptions.visible) } allowDragging(column) { return false } hasGroupedColumns() {} getContextMenuItems(options) { return } } exports.HeaderPanel = HeaderPanel; exports.headerPanelModule = { defaultOptions: () => ({}), views: { headerPanel: HeaderPanel }, extenders: { controllers: { resizing: Base => class extends Base { _updateDimensionsCore() { super._updateDimensionsCore.apply(this, arguments); this.getView("headerPanel").updateToolbarDimensions() } } } } } }, 24171: /*!*****************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/grid_core/keyboard_navigation/const.js ***! \*****************************************************************************************************/ function(__unused_webpack_module, exports) { Object.defineProperty(exports, "__esModule", { value: true }); exports.WIDGET_CLASS = exports.ViewName = exports.VIRTUAL_ROW_CLASS = exports.TABLE_CLASS = exports.ROW_CLASS = exports.ROWS_VIEW_CLASS = exports.ROWS_VIEW = exports.REVERT_BUTTON_CLASS = exports.NON_FOCUSABLE_ELEMENTS_SELECTOR = exports.MASTER_DETAIL_ROW_CLASS = exports.MASTER_DETAIL_CELL_CLASS = exports.KEY_CODES = exports.INTERACTIVE_ELEMENTS_SELECTOR = exports.HEADER_ROW_CLASS = exports.GROUP_ROW_CLASS = exports.GROUP_FOOTER_CLASS = exports.FUNCTIONAL_KEYS = exports.FREESPACE_ROW_CLASS = exports.FOCUS_TYPE_ROW = exports.FOCUS_TYPE_CELL = exports.FOCUS_STATE_CLASS = exports.FOCUSED_CLASS = exports.FAST_EDITING_DELETE_KEY = exports.EDIT_MODE_FORM = exports.EDIT_FORM_ITEM_CLASS = exports.EDIT_FORM_CLASS = exports.EDITOR_CELL_CLASS = exports.Direction = exports.DROPDOWN_EDITOR_OVERLAY_CLASS = exports.DRAG_COLUMN_NAME = exports.DATEBOX_WIDGET_NAME = exports.DATA_ROW_CLASS = exports.COMMAND_SELECT_CLASS = exports.COMMAND_EXPAND_CLASS = exports.COMMAND_EDIT_CLASS = exports.COMMAND_CELL_SELECTOR = exports.COLUMN_HEADERS_VIEW = exports.CELL_FOCUS_DISABLED_CLASS = exports.ATTRIBUTES = exports.ADAPTIVE_ITEM_TEXT_CLASS = exports.ADAPTIVE_COLUMN_NAME_CLASS = void 0; exports.ATTRIBUTES = { ariaColIndex: "aria-colindex", dragCell: "dx-drag-cell" }; exports.ROWS_VIEW_CLASS = "rowsview"; exports.TABLE_CLASS = "table"; exports.EDIT_FORM_CLASS = "edit-form"; exports.GROUP_FOOTER_CLASS = "group-footer"; exports.ROW_CLASS = "dx-row"; exports.DATA_ROW_CLASS = "dx-data-row"; exports.GROUP_ROW_CLASS = "dx-group-row"; exports.HEADER_ROW_CLASS = "dx-header-row"; exports.EDIT_FORM_ITEM_CLASS = "edit-form-item"; exports.MASTER_DETAIL_ROW_CLASS = "dx-master-detail-row"; exports.FREESPACE_ROW_CLASS = "dx-freespace-row"; exports.VIRTUAL_ROW_CLASS = "dx-virtual-row"; exports.MASTER_DETAIL_CELL_CLASS = "dx-master-detail-cell"; exports.EDITOR_CELL_CLASS = "dx-editor-cell"; exports.DROPDOWN_EDITOR_OVERLAY_CLASS = "dx-dropdowneditor-overlay"; exports.COMMAND_EXPAND_CLASS = "dx-command-expand"; exports.ADAPTIVE_COLUMN_NAME_CLASS = "dx-command-adaptive"; exports.ADAPTIVE_ITEM_TEXT_CLASS = "dx-adaptive-item-text"; exports.COMMAND_SELECT_CLASS = "dx-command-select"; exports.COMMAND_EDIT_CLASS = "dx-command-edit"; exports.COMMAND_CELL_SELECTOR = "[class^=dx-command]"; exports.CELL_FOCUS_DISABLED_CLASS = "dx-cell-focus-disabled"; exports.DATEBOX_WIDGET_NAME = "dxDateBox"; exports.FOCUS_STATE_CLASS = "dx-state-focused"; exports.WIDGET_CLASS = "dx-widget"; exports.REVERT_BUTTON_CLASS = "dx-revert-button"; exports.FOCUSED_CLASS = "dx-focused"; exports.FAST_EDITING_DELETE_KEY = "delete"; const INTERACTIVE_ELEMENTS_SELECTOR = exports.INTERACTIVE_ELEMENTS_SELECTOR = '\n input:not([type="hidden"]):not([disabled]),\n textarea:not([disabled]),\n a:not([disabled]),\n select:not([disabled]),\n button:not([disabled]),\n [tabindex]:not([disabled]),\n .dx-checkbox:not([disabled],.dx-state-readonly)\n'; exports.NON_FOCUSABLE_ELEMENTS_SELECTOR = `${INTERACTIVE_ELEMENTS_SELECTOR}, .dx-dropdowneditor-icon`; exports.EDIT_MODE_FORM = "form"; exports.FOCUS_TYPE_ROW = "row"; exports.FOCUS_TYPE_CELL = "cell"; exports.COLUMN_HEADERS_VIEW = "columnHeadersView"; exports.ROWS_VIEW = "rowsView"; exports.FUNCTIONAL_KEYS = ["shift", "control", "alt"]; exports.DRAG_COLUMN_NAME = "drag"; var Direction; ! function(Direction) { Direction.Next = "next"; Direction.Previous = "previous" }(Direction || (exports.Direction = Direction = {})); var ViewName; ! function(ViewName) { ViewName.Group = "group"; ViewName.Headers = "headers" }(ViewName || (exports.ViewName = ViewName = {})); exports.KEY_CODES = { G: 71 } }, 3024: /*!***************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/grid_core/keyboard_navigation/dom.js ***! \***************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.GridCoreKeyboardNavigationDom = void 0; var _const = __webpack_require__( /*! ./const */ 24171); exports.GridCoreKeyboardNavigationDom = { isDragCell: $cell => void 0 !== $cell.attr(_const.ATTRIBUTES.dragCell), getCellToFocus: ($cellElements, columnIndex) => $cellElements.filter((columnIndex => [`[${_const.ATTRIBUTES.ariaColIndex}="${columnIndex+1}"]`, `:not([${_const.ATTRIBUTES.dragCell}])`, ":not([aria-hidden=true])"].join(""))(columnIndex)).first() } }, 78079: /*!*************************************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/grid_core/keyboard_navigation/m_column_focus_dispatcher.js ***! \*************************************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.ColumnFocusDispatcher = void 0; var _type = __webpack_require__( /*! ../../../../core/utils/type */ 11528); var _m_modules = __webpack_require__( /*! ../m_modules */ 74854); class ColumnFocusDispatcher extends _m_modules.Controller { constructor() { super(...arguments); this.keyboardNavigationControllers = [] } registerKeyboardNavigationController(keyboardNavigationController) { this.keyboardNavigationControllers.push(keyboardNavigationController) } updateFocusPosition(keyboardNavigationController, cellPosition) { if ((0, _type.isDefined)(cellPosition)) { keyboardNavigationController.updateFocusPosition(cellPosition) } else { this.keyboardNavigationControllers.forEach((keyboardController => { if (keyboardController === keyboardNavigationController) { return } keyboardController.updateFocusPosition() })) } } restoreFocus(keyboardNavigationController) { if (keyboardNavigationController.getFirstFocusableVisibleIndex() >= 0) { keyboardNavigationController.restoreFocus() } else { this.keyboardNavigationControllers.forEach((keyboardController => { if (keyboardController === keyboardNavigationController) { return } const firstFocusableVisibleIndex = keyboardController.getFirstFocusableVisibleIndex(); if (firstFocusableVisibleIndex >= 0) { keyboardController.restoreFocus() } })) } } } exports.ColumnFocusDispatcher = ColumnFocusDispatcher }, 37565: /*!*********************************************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/grid_core/keyboard_navigation/m_column_keyboard_navigation_core.js ***! \*********************************************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.ColumnKeyboardNavigationController = void 0; var _type = __webpack_require__( /*! ../../../../core/utils/type */ 11528); var _const = __webpack_require__( /*! ./const */ 24171); var _m_keyboard_navigation_core = __webpack_require__( /*! ./m_keyboard_navigation_core */ 59796); class ColumnKeyboardNavigationController extends _m_keyboard_navigation_core.KeyboardNavigationController { keyDownHandler(e) { return this.processOnKeyDown(e) } getVisibleIndex(column, rowIndex) { const visibleIndex = this._columnsController.getVisibleIndex(column.index, rowIndex); const columnIndexOffset = this.getColumnIndexOffset(visibleIndex); return visibleIndex >= 0 ? visibleIndex + columnIndexOffset : -1 } getNewVisibleIndex(visibleIndex, rowIndex, direction) { return "previous" === direction ? visibleIndex - 1 : visibleIndex + 2 } getNewFocusedColumnIndex(newVisibleIndex, direction) { return direction === _const.Direction.Next ? newVisibleIndex - 1 : newVisibleIndex } resizeCompleted() { if (this.needToRestoreFocus) { this.restoreFocus() } } resetFocusedCellPosition() { this._focusedCellPosition = {} } canReorderColumn(column, direction, rowIndex) { return false } init() { var _this$columnFocusDisp; super.init(); this.columnFocusDispatcher = this.getController("columnFocusDispatcher"); null === (_this$columnFocusDisp = this.columnFocusDispatcher) || void 0 === _this$columnFocusDisp || _this$columnFocusDisp.registerKeyboardNavigationController(this) } moveColumn(column) { let direction = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : _const.Direction.Next; let rowIndex = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : 0; const viewName = this.getFocusedView().getName(); const visibleIndex = this.getVisibleIndex(column, rowIndex); const newVisibleIndex = this.getNewVisibleIndex(visibleIndex, rowIndex, direction); const newFocusedColumnIndex = this.getNewFocusedColumnIndex(newVisibleIndex, direction); this.updateViewFocusPosition({ rowIndex: rowIndex, columnIndex: newFocusedColumnIndex }); this._columnsController.moveColumn({ columnIndex: visibleIndex, rowIndex: rowIndex }, { columnIndex: newVisibleIndex, rowIndex: rowIndex }, viewName, viewName) } getFirstFocusableVisibleIndex() { return -1 } updateViewFocusPosition(cellPosition) { var _this$columnFocusDisp2; null === (_this$columnFocusDisp2 = this.columnFocusDispatcher) || void 0 === _this$columnFocusDisp2 || _this$columnFocusDisp2.updateFocusPosition(this, cellPosition) } updateFocusPosition(cellPosition) { this.needToRestoreFocus = true; if ((0, _type.isDefined)(cellPosition)) { this.setFocusedCellPosition(cellPosition.rowIndex, cellPosition.columnIndex) } else { this.resetFocusedCellPosition() } } restoreViewFocus() { var _this$columnFocusDisp3; null === (_this$columnFocusDisp3 = this.columnFocusDispatcher) || void 0 === _this$columnFocusDisp3 || _this$columnFocusDisp3.restoreFocus(this) } restoreFocus() { var _$focusedCell$; this.needToRestoreFocus = false; if ((0, _type.isEmptyObject)(this._focusedCellPosition)) { this.setFocusedCellPosition(0, this.getFirstFocusableVisibleIndex()) } const $focusedCell = this._getFocusedCell(); null === $focusedCell || void 0 === $focusedCell || null === (_$focusedCell$ = $focusedCell[0]) || void 0 === _$focusedCell$ || _$focusedCell$.focus({ preventScroll: true }) } } exports.ColumnKeyboardNavigationController = ColumnKeyboardNavigationController }, 86421: /*!*****************************************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/grid_core/keyboard_navigation/m_headers_keyboard_navigation.js ***! \*****************************************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.headersKeyboardNavigationModule = exports.HeadersKeyboardNavigationController = void 0; var _index = __webpack_require__( /*! ../../../../common/core/events/utils/index */ 98834); var _renderer = (e = __webpack_require__( /*! ../../../../core/renderer */ 64553), e && e.__esModule ? e : { default: e }); var e; var _position = __webpack_require__( /*! ../../../../core/utils/position */ 41639); var _type = __webpack_require__( /*! ../../../../core/utils/type */ 11528); var _get_element_location_internal = __webpack_require__( /*! ../../../ui/scroll_view/utils/get_element_location_internal */ 62504); var _const = __webpack_require__( /*! ../sticky_columns/const */ 87396); var _dom = __webpack_require__( /*! ../sticky_columns/dom */ 52511); var _utils = __webpack_require__( /*! ../sticky_columns/utils */ 24378); var _const2 = __webpack_require__( /*! ./const */ 24171); var _m_column_focus_dispatcher = __webpack_require__( /*! ./m_column_focus_dispatcher */ 78079); var _m_column_keyboard_navigation_core = __webpack_require__( /*! ./m_column_keyboard_navigation_core */ 37565); class HeadersKeyboardNavigationController extends _m_column_keyboard_navigation_core.ColumnKeyboardNavigationController { constructor() { super(...arguments); this.isOutsideVisibleArea = ($element, $container) => { const elementRect = (0, _position.getBoundingRect)($element.get(0)); const elementRectLeft = Math.round(elementRect.left); const elementRectRight = Math.round(elementRect.right); const containerBoundingRect = this.getContainerBoundingRect($container); return elementRectLeft < containerBoundingRect.left || elementRectRight > containerBoundingRect.right } } leftRightKeysHandler(e) { const { originalEvent: originalEvent } = e; if ((0, _index.isCommandKeyPressed)(originalEvent)) { const $cell = (0, _renderer.default)(originalEvent.target).closest("td"); const direction = this.getDirectionByKeyName(e.keyName); const rowIndex = this._getRowIndex($cell.parent()); const column = this._getColumnByCellElement($cell, rowIndex); if (this.canReorderColumn(column, direction, rowIndex)) { this.moveColumn(column, direction, rowIndex) } null === originalEvent || void 0 === originalEvent || originalEvent.preventDefault() } } getColumnVisibleIndexCorrection(visibleColumnIndex, rowIndex, direction) { return 0 } getNewVisibleIndex(visibleIndex, rowIndex, direction) { const newVisibleIndex = super.getNewVisibleIndex(visibleIndex, rowIndex, direction); const indexCorrection = this.getColumnVisibleIndexCorrection(visibleIndex, rowIndex, direction); return newVisibleIndex + indexCorrection } getDraggableColumns(column, rowIndex) { var _columnsController$ge; const columnsController = this._columnsController; const visibleColumns = null === (_columnsController$ge = columnsController.getVisibleColumns(rowIndex, true)) || void 0 === _columnsController$ge ? void 0 : _columnsController$ge.filter((col => col.ownerBand === (null === column || void 0 === column ? void 0 : column.ownerBand) && (!(0, _type.isDefined)(col.type) || columnsController.isCustomCommandColumn(col)))); if (null !== column && void 0 !== column && column.fixed) { const fixedPosition = (0, _utils.getColumnFixedPosition)(columnsController, column); if (fixedPosition !== _const.StickyPosition.Sticky) { return visibleColumns.filter((col => col.fixed && (0, _utils.getColumnFixedPosition)(columnsController, col) === fixedPosition)) } } return visibleColumns.filter((column => !column.fixed || column.fixedPosition === _const.StickyPosition.Sticky)) } keyDownHandler(e) { let isHandled = super.keyDownHandler(e); if (isHandled) { return true } switch (e.keyName) { case "tab": this.tabKeyHandler(e); isHandled = true; break; case "leftArrow": case "rightArrow": this.leftRightKeysHandler(e); isHandled = true } return isHandled } tabKeyHandler(e) {} getCellIndex($cell) { return this._columnHeadersView.getCellIndex($cell) } _getCell(cellPosition) { var _this$_columnHeadersV; const columnIndexOffset = this.getColumnIndexOffset(cellPosition.columnIndex); const columnIndex = cellPosition.columnIndex >= 0 ? cellPosition.columnIndex - columnIndexOffset : -1; return null === (_this$_columnHeadersV = this._columnHeadersView) || void 0 === _this$_columnHeadersV ? void 0 : _this$_columnHeadersV.getCell({ rowIndex: cellPosition.rowIndex, columnIndex: columnIndex }) } getFocusedView() { return this.getView("columnHeadersView") } focusinHandler(e) { this._updateFocusedCellPosition((0, _renderer.default)(e.target)) } getFocusinSelector() { return ".dx-header-row > td" } getFocusableColumns(rowIndex, bandColumnId) { const visibleColumns = this._columnsController.getVisibleColumns(rowIndex); const result = visibleColumns.filter((column => !(0, _type.isDefined)(column.type) || this._columnsController.isCustomCommandColumn(column))); if ((0, _type.isDefined)(bandColumnId)) { return result.filter((column => column.ownerBand === bandColumnId)) } return result } getContainerBoundingRect($container) { const containerRect = (0, _position.getBoundingRect)($container.get(0)); return { left: containerRect.left, right: containerRect.right } } getScrollPadding($container) { const containerRect = (0, _position.getBoundingRect)($container.get(0)); const containerBoundingRect = this.getContainerBoundingRect($container); return { left: containerBoundingRect.left - containerRect.left, right: containerRect.right - containerBoundingRect.right } } scrollToColumn($cell) { var _this$getView; const scrollable = null === (_this$getView = this.getView("rowsView")) || void 0 === _this$getView ? void 0 : _this$getView.getScrollable(); if (!scrollable) { return } const scrollPadding = this.getScrollPadding((0, _renderer.default)(scrollable.container())); const scrollPosition = (0, _get_element_location_internal.getElementLocationInternal)($cell[0], "horizontal", (0, _renderer.default)(this._columnHeadersView.getContent())[0], scrollable.scrollOffset(), scrollPadding, this.addWidgetPrefix("table")); scrollable.scrollTo({ x: scrollPosition }) } init() { super.init(); this._columnHeadersView = this.getView("columnHeadersView") } canReorderColumn(column, direction, rowIndex) { const allowReordering = this._columnHeadersView.isColumnReorderingEnabled(column); if (!allowReordering) { return false } const draggableColumns = this.getDraggableColumns(column, rowIndex); const isFirstColumn = column.index === draggableColumns[0].index; const isLastColumn = column.index === draggableColumns[draggableColumns.length - 1].index; return direction === _const2.Direction.Next ? !isLastColumn : !isFirstColumn } getFirstFocusableVisibleIndex() { const focusableColumns = this.getFocusableColumns(); if (null !== focusableColumns && void 0 !== focusableColumns && focusableColumns.length) { return this._columnsController.getVisibleIndex(focusableColumns[0].index) } return -1 } restoreFocus() { const $focusedCell = this._getFocusedCell(); const isFixedCell = _dom.GridCoreStickyColumnsDom.isFixedCell($focusedCell, this.addWidgetPrefix.bind(this)); if (isFixedCell) { super.restoreFocus(); return } const focusedCellIsOutsideVisibleArea = $focusedCell.length && this.isOutsideVisibleArea($focusedCell, (0, _renderer.default)(this._columnHeadersView.getContent())); if (focusedCellIsOutsideVisibleArea) { this.scrollToColumn($focusedCell) } else { super.restoreFocus() } } needToFocus() { return this.needToRestoreFocus } } exports.HeadersKeyboardNavigationController = HeadersKeyboardNavigationController; exports.headersKeyboardNavigationModule = { controllers: { headersKeyboardNavigation: HeadersKeyboardNavigationController, columnFocusDispatcher: _m_column_focus_dispatcher.ColumnFocusDispatcher }, extenders: { views: { columnHeadersView: Base => class extends Base { handleScroll(e) { var _this$_headersKeyboar, _this$_columnsControl; super.handleScroll(e); if (!(null !== (_this$_headersKeyboar = this._headersKeyboardNavigation) && void 0 !== _this$_headersKeyboar && _this$_headersKeyboar.needToFocus())) { return } const isNeedToRenderVirtualColumns = null === (_this$_columnsControl = this._columnsController) || void 0 === _this$_columnsControl ? void 0 : _this$_columnsControl.isNeedToRenderVirtualColumns(e.target.scrollLeft); if (!isNeedToRenderVirtualColumns) { this._headersKeyboardNavigation.restoreFocus() } } } } } } }, 4628: /*!*********************************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/grid_core/keyboard_navigation/m_keyboard_navigation.js ***! \*********************************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.keyboardNavigationModule = exports.KeyboardNavigationController = void 0; var _click = __webpack_require__( /*! ../../../../common/core/events/click */ 64044); var _events_engine = _interopRequireDefault(__webpack_require__( /*! ../../../../common/core/events/core/events_engine */ 92774)); var _pointer = _interopRequireDefault(__webpack_require__( /*! ../../../../common/core/events/pointer */ 89797)); var _index = __webpack_require__( /*! ../../../../common/core/events/utils/index */ 98834); var _common = __webpack_require__( /*! ../../../../core/utils/common */ 17781); var _dom_adapter = _interopRequireDefault(__webpack_require__( /*! ../../../../core/dom_adapter */ 64960)); var _element = __webpack_require__( /*! ../../../../core/element */ 61404); var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../../../core/renderer */ 64553)); var _browser = _interopRequireDefault(__webpack_require__( /*! ../../../../core/utils/browser */ 48314)); var _deferred = __webpack_require__( /*! ../../../../core/utils/deferred */ 87739); var _size = __webpack_require__( /*! ../../../../core/utils/size */ 57653); var _type = __webpack_require__( /*! ../../../../core/utils/type */ 11528); var accessibility = function(e, r) { if (!r && e && e.__esModule) { return e } if (null === e || "object" != typeof e && "function" != typeof e) { return { default: e } } var t = _getRequireWildcardCache(r); if (t && t.has(e)) { return t.get(e) } var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) { if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u] } } return n.default = e, t && t.set(e, n), n }(__webpack_require__( /*! ../../../../ui/shared/accessibility */ 16191)); var _selectors = __webpack_require__( /*! ../../../../ui/widget/selectors */ 35944); var _m_dom = __webpack_require__( /*! ../../../core/utils/m_dom */ 76400); var _memoize = __webpack_require__( /*! ../../../utils/memoize */ 78698); var _const = __webpack_require__( /*! ../editing/const */ 69699); var _m_utils = _interopRequireDefault(__webpack_require__( /*! ../m_utils */ 53226)); var _const2 = __webpack_require__( /*! ./const */ 24171); var _dom = __webpack_require__( /*! ./dom */ 3024); var _m_keyboard_navigation_core = __webpack_require__( /*! ./m_keyboard_navigation_core */ 59796); var _m_keyboard_navigation_utils = __webpack_require__( /*! ./m_keyboard_navigation_utils */ 93734); var _scrollable_a11y = __webpack_require__( /*! ./scrollable_a11y */ 47526); function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) { return null } var r = new WeakMap, t = new WeakMap; return (_getRequireWildcardCache = function(e) { return e ? t : r })(e) } function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } function _extends() { return _extends = Object.assign ? Object.assign.bind() : function(n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) { ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]) } } return n }, _extends.apply(null, arguments) } class KeyboardNavigationController extends _m_keyboard_navigation_core.KeyboardNavigationController { constructor() { super(...arguments); this._needNavigationToCell = false } init() { this._dataController = this.getController("data"); this._selectionController = this.getController("selection"); this._editingController = this.getController("editing"); this._headerPanel = this.getView("headerPanel"); this._editorFactory = this.getController("editorFactory"); this._focusController = this.getController("focus"); this._adaptiveColumnsController = this.getController("adaptiveColumns"); this._columnResizerController = this.getController("columnsResizer"); this._rowsView = this.getView("rowsView"); super.init(); this._memoFireFocusedCellChanged = (0, _memoize.memoize)(this._memoFireFocusedCellChanged.bind(this), { compareType: "value" }); this._memoFireFocusedRowChanged = (0, _memoize.memoize)(this._memoFireFocusedRowChanged.bind(this), { compareType: "value" }); this.focusedHandlerWithContext = this.focusedHandlerWithContext || this.focusedHandler.bind(this); this.focusOutHandlerContext = this.focusOutHandlerContext ?? this.focusOutHandler.bind(this); this._updateFocusTimeout = null; this._fastEditingStarted = false; this._canceledCellPosition = null; if (this.isKeyboardEnabled()) { var _this$_editorFactory; accessibility.subscribeVisibilityChange(); null === (_this$_editorFactory = this._editorFactory) || void 0 === _this$_editorFactory || _this$_editorFactory.focused.add(this.focusedHandlerWithContext) } else { var _this$_editorFactory2; accessibility.unsubscribeVisibilityChange(); null === (_this$_editorFactory2 = this._editorFactory) || void 0 === _this$_editorFactory2 || _this$_editorFactory2.focused.remove(this.focusedHandlerWithContext) } this.initDocumentHandlers() } dispose() { super.dispose(); this._resetFocusedView(); _events_engine.default.off(_dom_adapter.default.getDocument(), (0, _index.addNamespace)(_pointer.default.down, "dxDataGridKeyboardNavigation"), this._documentClickHandler); clearTimeout(this._updateFocusTimeout); accessibility.unsubscribeVisibilityChange() } focusedHandler($element) { this.setupFocusedView(); if (this._isNeedScroll) { if ($element.is(":visible") && this._focusedView && this._focusedView.getScrollable()) { this._focusedView._scrollToElement($element); this._isNeedScroll = false } } } focusinHandler(event) { const $element = (0, _renderer.default)(event.target); const isRelatedTargetInRowsView = (0, _renderer.default)(event.relatedTarget).closest(this._rowsView.element()).length; const isLink = $element.is("a"); if (event.relatedTarget && isLink && !isRelatedTargetInRowsView && this._isEventInCurrentGrid(event)) { let $focusedCell = this._getFocusedCell(); $focusedCell = !(0, _m_keyboard_navigation_utils.isElementDefined)($focusedCell) ? this._rowsView.getCellElements(0).filter("[tabindex]").eq(0) : $focusedCell; if (!$element.closest($focusedCell).length) { event.preventDefault(); _events_engine.default.trigger($focusedCell, "focus") } } const isCell = $element.is("td"); const needSetFocusPosition = (this.option("focusedRowIndex") ?? -1) < 0; if (isCell && needSetFocusPosition) { this._updateFocusedCellPosition($element) } } focusOutHandler(e) { const { relatedTarget: relatedTarget } = e; this._toggleInertAttr(false); if (relatedTarget && !this.isInsideFocusedView((0, _renderer.default)(relatedTarget))) { this._isNeedFocus = false; this._isHiddenFocus = false; this._isNeedScroll = false } } subscribeToRowsViewFocusEvent() { var _this$_rowsView; const $rowsView = null === (_this$_rowsView = this._rowsView) || void 0 === _this$_rowsView ? void 0 : _this$_rowsView.element(); _events_engine.default.on($rowsView, "focusin", this.focusinHandlerContext); _events_engine.default.on($rowsView, "focusout", this.focusOutHandlerContext) } unsubscribeFromRowsViewFocusEvent() { var _this$_rowsView2; const $rowsView = null === (_this$_rowsView2 = this._rowsView) || void 0 === _this$_rowsView2 ? void 0 : _this$_rowsView2.element(); _events_engine.default.off($rowsView, "focusin", this.focusinHandlerContext); _events_engine.default.off($rowsView, "focusout", this.focusOutHandlerContext) } resizeCompleted() { var _this$_rowsView3; if (this.navigationToCellInProgress()) { this._resizeController.resetLastResizeTime() } if (!this.needToRestoreFocus) { return } const scrollLeft = (null === (_this$_rowsView3 = this._rowsView) || void 0 === _this$_rowsView3 || null === (_this$_rowsView3 = _this$_rowsView3.getScrollable()) || void 0 === _this$_rowsView3 ? void 0 : _this$_rowsView3.scrollLeft()) ?? 0; if (!this._columnsController.isNeedToRenderVirtualColumns(scrollLeft)) { this.needToRestoreFocus = false; this.focusFirstOrLastCell() } } renderCompleted(e) { const $rowsView = this._rowsView.element(); const isFullUpdate = !e || "refresh" === e.changeType; const isFocusedViewCorrect = this._focusedView && this._focusedView.name === this._rowsView.name; let needUpdateFocus = false; const isAppend = e && ("append" === e.changeType || "prepend" === e.changeType); const root = (0, _renderer.default)(_dom_adapter.default.getRootNode($rowsView.get && $rowsView.get(0))); const $focusedElement = root.find(":focus"); const isFocusedElementCorrect = this._isFocusedElementCorrect($focusedElement, $rowsView, e); this.unsubscribeFromRowsViewFocusEvent(); this.subscribeToRowsViewFocusEvent(); this.initPointerEventHandler(); this.initKeyDownHandler(); this._setRowsViewAttributes(); if (isFocusedViewCorrect && isFocusedElementCorrect) { needUpdateFocus = this._isNeedFocus ? !isAppend : this._isHiddenFocus && isFullUpdate && !(null !== e && void 0 !== e && e.virtualColumnsScrolling); if (needUpdateFocus) { var _e$event; const isScrollEvent = !!(null !== e && void 0 !== e && null !== (_e$event = e.event) && void 0 !== _e$event && _e$event.type); const skipFocusEvent = (null === e || void 0 === e ? void 0 : e.virtualColumnsScrolling) && isScrollEvent; this._updateFocus(true, skipFocusEvent) } } } _isFocusedElementCorrect($focusedElement, $rowsView, e) { if ($focusedElement.length && !$focusedElement.closest($rowsView).length) { return false } if (!$focusedElement.length && null !== e && void 0 !== e && e.virtualColumnsScrolling) { var _this$_focusedCellPos; const focusedColumnIndex = (null === (_this$_focusedCellPos = this._focusedCellPosition) || void 0 === _this$_focusedCellPos ? void 0 : _this$_focusedCellPos.columnIndex) ?? -1; return this._isColumnRendered(focusedColumnIndex) } return true } initHandlers() { this.unsubscribeFromRowsViewFocusEvent(); this.unsubscribeFromPointerEvent(); super.initHandlers() } initDocumentHandlers() { const document = _dom_adapter.default.getDocument(); this._documentClickHandler = this._documentClickHandler || this.createAction((e => { var _this$_columnResizerC; const $target = (0, _renderer.default)(e.event.target); const tableSelector = `.${this.addWidgetPrefix(_const2.TABLE_CLASS)}`; const rowsViewSelector = `.${this.addWidgetPrefix(_const2.ROWS_VIEW_CLASS)}`; const editorOverlaySelector = `.${_const2.DROPDOWN_EDITOR_OVERLAY_CLASS}`; const needKeepFocus = !!$target.closest(tableSelector).length && !(0, _m_dom.isElementInDom)($target); if (needKeepFocus) { e.event.preventDefault(); return } const isRowsViewClick = this._isEventInCurrentGrid(e.event) && !!$target.closest(rowsViewSelector).length; const isEditorOverlayClick = !!$target.closest(editorOverlaySelector).length; const isColumnResizing = !!(null !== (_this$_columnResizerC = this._columnResizerController) && void 0 !== _this$_columnResizerC && _this$_columnResizerC.isResizing()); if (!isRowsViewClick && !isEditorOverlayClick && !isColumnResizing) { const isClickOutsideFocusedView = this._focusedView ? 0 === $target.closest(this._focusedView.element()).length : true; if (isClickOutsideFocusedView) { this._resetFocusedCell(true) } this._resetFocusedView() } })); _events_engine.default.off(document, (0, _index.addNamespace)(_pointer.default.down, "dxDataGridKeyboardNavigation"), this._documentClickHandler); if (this.isKeyboardEnabled()) { _events_engine.default.on(document, (0, _index.addNamespace)(_pointer.default.down, "dxDataGridKeyboardNavigation"), this._documentClickHandler) } } _setRowsViewAttributes() { const $rowsView = this._getRowsViewElement(); const isGridEmpty = !this._dataController.getVisibleRows().length; if (isGridEmpty) { this._applyTabIndexToElement($rowsView) } } unsubscribeFromPointerEvent() { const pointerEventName = !(0, _m_keyboard_navigation_utils.isMobile)() ? _pointer.default.down : _click.name; const $rowsView = this._getRowsViewElement(); this._pointerEventAction && _events_engine.default.off($rowsView, (0, _index.addNamespace)(pointerEventName, "dxDataGridKeyboardNavigation"), this._pointerEventAction) } subscribeToPointerEvent() { const pointerEventName = !(0, _m_keyboard_navigation_utils.isMobile)() ? _pointer.default.down : _click.name; const $rowsView = this._getRowsViewElement(); const clickSelector = `.${_const.ROW_CLASS} > td, .${_const.ROW_CLASS}`; _events_engine.default.on($rowsView, (0, _index.addNamespace)(pointerEventName, "dxDataGridKeyboardNavigation"), clickSelector, this._pointerEventAction) } initPointerEventHandler() { this._pointerEventAction = this._pointerEventAction || this.createAction(this._pointerEventHandler); this.unsubscribeFromPointerEvent(); this.subscribeToPointerEvent() } isRowFocusType() { return this.focusType === _const2.FOCUS_TYPE_ROW } isCellFocusType() { return this.focusType === _const2.FOCUS_TYPE_CELL } setRowFocusType() { if (this.option("focusedRowEnabled")) { this.focusType = _const2.FOCUS_TYPE_ROW } } setCellFocusType() { this.focusType = _const2.FOCUS_TYPE_CELL } keyDownHandler(e) { var _this$_editingControl; let needStopPropagation = true; this._isNeedFocus = true; this._isNeedScroll = true; let isHandled = this.processOnKeyDown(e); const isEditing = null === (_this$_editingControl = this._editingController) || void 0 === _this$_editingControl ? void 0 : _this$_editingControl.isEditing(); const { originalEvent: originalEvent } = e; if (originalEvent.isDefaultPrevented()) { this._isNeedFocus = false; this._isNeedScroll = false; return }!_const2.FUNCTIONAL_KEYS.includes(e.keyName) && this._updateFocusedCellPositionByTarget(originalEvent.target); if (!isHandled) { switch (e.keyName) { case "leftArrow": case "rightArrow": this._leftRightKeysHandler(e, isEditing); isHandled = true; break; case "upArrow": case "downArrow": if (e.ctrl) { accessibility.selectView("rowsView", this, originalEvent) } else { this._upDownKeysHandler(e, isEditing) } isHandled = true; break; case "pageUp": case "pageDown": this._pageUpDownKeyHandler(e); isHandled = true; break; case "space": isHandled = this._spaceKeyHandler(e, isEditing); break; case "A": if ((0, _index.isCommandKeyPressed)(e.originalEvent)) { this._ctrlAKeyHandler(e, isEditing); isHandled = true } else { isHandled = this._beginFastEditing(e.originalEvent) } break; case "tab": this._tabKeyHandler(e, isEditing); isHandled = true; break; case "enter": this._enterKeyHandler(e, isEditing); isHandled = true; break; case "escape": isHandled = this._escapeKeyHandler(e, isEditing); break; case "F": if ((0, _index.isCommandKeyPressed)(e.originalEvent)) { this._ctrlFKeyHandler(e); isHandled = true } else { isHandled = this._beginFastEditing(e.originalEvent) } break; case "F2": this._f2KeyHandler(); isHandled = true; break; case "del": case "backspace": if (this._isFastEditingAllowed() && !this._isFastEditingStarted()) { isHandled = this._beginFastEditing(originalEvent, true) } break; case "home": case "end": this.homeOrEndKeyHandler(e) } if (!isHandled && !this._beginFastEditing(originalEvent)) { this._isNeedFocus = false; this._isNeedScroll = false; needStopPropagation = false } if (needStopPropagation) { originalEvent.stopPropagation() } } } _closeEditCell() { const d = (0, _deferred.Deferred)(); setTimeout((() => { this._editingController.closeEditCell().always(d.resolve) })); return d } _leftRightKeysHandler(eventArgs, isEditing) { const rowIndex = this.getVisibleRowIndex(); const $event = eventArgs.originalEvent; const $row = this._focusedView && this._focusedView.getRow(rowIndex); const directionCode = this._getDirectionCodeByKey(eventArgs.keyName); const isEditingNavigationMode = this._isFastEditingStarted(); const allowNavigate = (!isEditing || isEditingNavigationMode) && (0, _m_keyboard_navigation_utils.isDataRow)($row); if (allowNavigate) { this.setCellFocusType(); isEditingNavigationMode && this._closeEditCell(); if (this._isVirtualColumnRender()) { this._processVirtualHorizontalPosition(directionCode) } const $cell = this._getNextCell(directionCode); if ((0, _m_keyboard_navigation_utils.isElementDefined)($cell)) { this._arrowKeysHandlerFocusCell($event, $cell, directionCode) } $event && $event.preventDefault() } } isInsideMasterDetail($target) { const $masterDetail = $target.closest(`.${_const2.MASTER_DETAIL_CELL_CLASS}`); return !!$masterDetail.get(0) && this.elementIsInsideGrid($masterDetail) && !$target.is($masterDetail) } _upDownKeysHandler(eventArgs, isEditing) { var _this$_editingControl2, _this$_editingControl3; const visibleRowIndex = this.getVisibleRowIndex(); const $row = this._focusedView && this._focusedView.getRow(visibleRowIndex); const $event = eventArgs.originalEvent; const isUpArrow = "upArrow" === eventArgs.keyName; const dataSource = this._dataController.dataSource(); const isRowEditingInCurrentRow = null === (_this$_editingControl2 = this._editingController) || void 0 === _this$_editingControl2 || null === (_this$_editingControl3 = _this$_editingControl2.isEditRowByIndex) || void 0 === _this$_editingControl3 ? void 0 : _this$_editingControl3.call(_this$_editingControl2, visibleRowIndex); const isEditingNavigationMode = this._isFastEditingStarted(); const isInsideMasterDetail = this.isInsideMasterDetail((0, _renderer.default)(null === $event || void 0 === $event ? void 0 : $event.target)); const allowNavigate = (!isRowEditingInCurrentRow || !isEditing || isEditingNavigationMode) && $row && !(0, _m_keyboard_navigation_utils.isEditForm)($row) && !isInsideMasterDetail; if (allowNavigate) { isEditingNavigationMode && this._closeEditCell(); if (!this._navigateNextCell($event, eventArgs.keyName)) { if (this._isVirtualRowRender() && isUpArrow && dataSource && !dataSource.isLoading()) { const rowHeight = (0, _size.getOuterHeight)($row); const rowIndex = this._focusedCellPosition.rowIndex - 1; this._scrollBy(0, -rowHeight, rowIndex, $event) } } $event && $event.preventDefault() } } _pageUpDownKeyHandler(eventArgs) { const pageIndex = this._dataController.pageIndex(); const pageCount = this._dataController.pageCount(); const pagingEnabled = this.option("paging.enabled"); const isPageUp = "pageUp" === eventArgs.keyName; const pageStep = isPageUp ? -1 : 1; const scrollable = this._rowsView.getScrollable(); if (pagingEnabled && !this._isVirtualScrolling()) { if ((isPageUp ? pageIndex > 0 : pageIndex < pageCount - 1) && !this._isVirtualScrolling()) { this._dataController.pageIndex(pageIndex + pageStep); eventArgs.originalEvent.preventDefault() } } else if (scrollable && (0, _size.getHeight)(scrollable.container()) < (0, _size.getHeight)(scrollable.$content())) { this._scrollBy(0, (0, _size.getHeight)(scrollable.container()) * pageStep); eventArgs.originalEvent.preventDefault() } } _spaceKeyHandler(eventArgs, isEditing) { const rowIndex = this.getVisibleRowIndex(); const $target = (0, _renderer.default)(eventArgs.originalEvent && eventArgs.originalEvent.target); if (this.option("selection") && "none" !== this.option("selection").mode && !isEditing) { const isFocusedRowElement = "row" === this._getElementType($target) && this.isRowFocusType() && (0, _m_keyboard_navigation_utils.isDataRow)($target); const isFocusedSelectionCell = $target.hasClass(_const2.COMMAND_SELECT_CLASS); if (isFocusedSelectionCell && "onClick" === this.option("selection.showCheckBoxesMode")) { this._selectionController.startSelectionWithCheckboxes() } if (isFocusedRowElement || $target.parent().hasClass(_const2.DATA_ROW_CLASS) || $target.hasClass(this.addWidgetPrefix(_const2.ROWS_VIEW_CLASS))) { this._selectionController.changeItemSelection(rowIndex, { shift: eventArgs.shift, control: eventArgs.ctrl }); eventArgs.originalEvent.preventDefault(); return true } return false } return this._beginFastEditing(eventArgs.originalEvent) } _ctrlAKeyHandler(eventArgs, isEditing) { if (!isEditing && !eventArgs.alt && "multiple" === this.option("selection.mode") && this.option("selection.allowSelectAll")) { this._selectionController.selectAll(); eventArgs.originalEvent.preventDefault() } } _toggleInertAttr(value) {} _tabKeyHandler(eventArgs, isEditing) { const editingOptions = this.option("editing"); const direction = eventArgs.shift ? "previous" : "next"; const isCellPositionDefined = (0, _type.isDefined)(this._focusedCellPosition) && !(0, _type.isEmptyObject)(this._focusedCellPosition); const isFirstValidCell = eventArgs.shift && this._isFirstValidCell(this._focusedCellPosition); const isLastValidCell = !eventArgs.shift && this._isLastValidCell(this._focusedCellPosition); let isOriginalHandlerRequired = !isCellPositionDefined || isFirstValidCell || isLastValidCell; const eventTarget = eventArgs.originalEvent.target; const focusedViewElement = this._focusedView && this._focusedView.element(); if (this._handleTabKeyOnMasterDetailCell(eventTarget, direction)) { return }(0, _renderer.default)(focusedViewElement).addClass(_const2.FOCUS_STATE_CLASS); if (editingOptions && eventTarget && !isOriginalHandlerRequired) { if ((0, _renderer.default)(eventTarget).hasClass(this.addWidgetPrefix(_const2.ROWS_VIEW_CLASS))) { this._resetFocusedCell() } if (this._isVirtualColumnRender()) { this._processVirtualHorizontalPosition(direction) } if (isEditing) { if (!this._editingCellTabHandler(eventArgs, direction)) { return } } else if (this._targetCellTabHandler(eventArgs, direction)) { isOriginalHandlerRequired = true } } if (isOriginalHandlerRequired) { const $cell = this._getFocusedCell(); const isCommandCell = $cell.is(_const2.COMMAND_CELL_SELECTOR); if (isLastValidCell && !isCommandCell) { this._toggleInertAttr(true) } this._editorFactory.loseFocus(); if (this._editingController.isEditing() && !this._isRowEditMode()) { this._resetFocusedCell(true); this._resetFocusedView(); this._closeEditCell() } } else { eventArgs.originalEvent.preventDefault() } } _getMaxVerticalOffset() { const scrollable = this.component.getScrollable(); return scrollable ? scrollable.scrollHeight() - (0, _size.getHeight)(this._rowsView.element()) : 0 } _getMaxHorizontalOffset() { const scrollable = this.component.getScrollable(); return scrollable ? scrollable.scrollWidth() - (0, _size.getWidth)(this._rowsView.element()) : 0 } _isColumnRendered(columnIndex) { const allVisibleColumns = this._columnsController.getVisibleColumns(null, true); const renderedVisibleColumns = this._columnsController.getVisibleColumns(); const column = allVisibleColumns[columnIndex]; let result = false; if (column) { result = renderedVisibleColumns.indexOf(column) >= 0 } return result } _isFixedColumn(columnIndex) { const allVisibleColumns = this._columnsController.getVisibleColumns(null, true); const column = allVisibleColumns[columnIndex]; return !!column && !!column.fixed } _isColumnVirtual(columnIndex) { const localColumnIndex = columnIndex - this._columnsController.getColumnIndexOffset(); const visibleColumns = this._columnsController.getVisibleColumns(); const column = visibleColumns[localColumnIndex]; return !!column && "virtual" === column.command } _processVirtualHorizontalPosition(direction) { const scrollable = this.component.getScrollable(); const columnIndex = this.getColumnIndex(); let nextColumnIndex; let horizontalScrollPosition = 0; let needToScroll = false; switch (direction) { case "next": case "nextInRow": { const columnsCount = this._getVisibleColumnCount(); nextColumnIndex = columnIndex + 1; horizontalScrollPosition = this.option("rtlEnabled") ? this._getMaxHorizontalOffset() : 0; if ("next" === direction) { needToScroll = columnsCount === nextColumnIndex || this._isFixedColumn(columnIndex) && !this._isColumnRendered(nextColumnIndex) } else { needToScroll = columnsCount > nextColumnIndex && this._isFixedColumn(columnIndex) && !this._isColumnRendered(nextColumnIndex) } break } case "previous": case "previousInRow": nextColumnIndex = columnIndex - 1; horizontalScrollPosition = this.option("rtlEnabled") ? 0 : this._getMaxHorizontalOffset(); if ("previous" === direction) { const columnIndexOffset = this._columnsController.getColumnIndexOffset(); const leftEdgePosition = nextColumnIndex < 0 && 0 === columnIndexOffset; needToScroll = leftEdgePosition || this._isFixedColumn(columnIndex) && !this._isColumnRendered(nextColumnIndex) } else { needToScroll = nextColumnIndex >= 0 && this._isFixedColumn(columnIndex) && !this._isColumnRendered(nextColumnIndex) } } if (needToScroll) { scrollable.scrollTo({ left: horizontalScrollPosition }) } else if ((0, _type.isDefined)(nextColumnIndex) && (0, _type.isDefined)(direction) && this._isColumnVirtual(nextColumnIndex)) { horizontalScrollPosition = this._getHorizontalScrollPositionOffset(direction); 0 !== horizontalScrollPosition && scrollable.scrollBy({ left: horizontalScrollPosition, top: 0 }) } } _getHorizontalScrollPositionOffset(direction) { let positionOffset = 0; const $currentCell = this._getCell(this._focusedCellPosition); const currentCellWidth = $currentCell && (0, _size.getOuterWidth)($currentCell); if (currentCellWidth > 0) { const rtlMultiplier = this.option("rtlEnabled") ? -1 : 1; positionOffset = "nextInRow" === direction || "next" === direction ? currentCellWidth * rtlMultiplier : currentCellWidth * rtlMultiplier * -1 } return positionOffset } _editingCellTabHandler(eventArgs, direction) { const eventTarget = eventArgs.originalEvent.target; let $cell = this._getCellElementFromTarget(eventTarget); let isEditingAllowed; const $event = eventArgs.originalEvent; const elementType = this._getElementType(eventTarget); if ($cell.is(_const2.COMMAND_CELL_SELECTOR)) { return !this._targetCellTabHandler(eventArgs, direction) } this._updateFocusedCellPosition($cell); const nextCellInfo = this._getNextCellByTabKey($event, direction, elementType); $cell = nextCellInfo.$cell; if (!$cell || this._handleTabKeyOnMasterDetailCell($cell, direction)) { return false } const column = this._getColumnByCellElement($cell); const $row = $cell.parent(); const rowIndex = this._getRowIndex($row); const row = this._dataController.items()[rowIndex]; const editingController = this._editingController; if (column && column.allowEditing) { const isDataRow = !row || "data" === row.rowType; isEditingAllowed = editingController.allowUpdating({ row: row }) ? isDataRow : row && row.isNewRow } if (!isEditingAllowed) { this._closeEditCell() } if (this._focusCell($cell, !nextCellInfo.isHighlighted)) { if (!this._isRowEditMode() && isEditingAllowed) { this._editFocusedCell() } else { this._focusInteractiveElement($cell, eventArgs.shift) } } return true } _targetCellTabHandler(eventArgs, direction) { const $event = eventArgs.originalEvent; let eventTarget = $event.target; let elementType = this._getElementType(eventTarget); let $cell = this._getCellElementFromTarget(eventTarget); const $lastInteractiveElement = "cell" === elementType && this._getInteractiveElement($cell, !eventArgs.shift); let isOriginalHandlerRequired = false; if (!(0, _m_keyboard_navigation_utils.isEditorCell)(this, $cell) && null !== $lastInteractiveElement && void 0 !== $lastInteractiveElement && $lastInteractiveElement.length && eventTarget !== $lastInteractiveElement.get(0)) { isOriginalHandlerRequired = true } else { if (void 0 === this._focusedCellPosition.rowIndex && (0, _renderer.default)(eventTarget).hasClass(_const.ROW_CLASS)) { this._updateFocusedCellPosition($cell) } elementType = this._getElementType(eventTarget); if (this.isRowFocusType()) { this.setCellFocusType(); if ("row" === elementType && (0, _m_keyboard_navigation_utils.isDataRow)((0, _renderer.default)(eventTarget))) { eventTarget = this.getFirstValidCellInRow((0, _renderer.default)(eventTarget)); elementType = this._getElementType(eventTarget) } } const nextCellInfo = this._getNextCellByTabKey($event, direction, elementType); $cell = nextCellInfo.$cell; if (!$cell) { return false } $cell = this._checkNewLineTransition($event, $cell); if (!$cell) { return false } this._focusCell($cell, !nextCellInfo.isHighlighted); if (!(0, _m_keyboard_navigation_utils.isEditorCell)(this, $cell)) { this._focusInteractiveElement($cell, eventArgs.shift) } } return isOriginalHandlerRequired } _getNextCellByTabKey($event, direction, elementType) { let $cell = this._getNextCell(direction, elementType); const args = $cell && this._fireFocusedCellChanging($event, $cell, true); if (!args || args.cancel) { return {} } if (args.$newCellElement) { $cell = args.$newCellElement } return { $cell: $cell, isHighlighted: args.isHighlighted } } _checkNewLineTransition($event, $cell) { const rowIndex = this.getVisibleRowIndex(); const $row = $cell.parent(); if (rowIndex !== this._getRowIndex($row)) { const cellPosition = this._getCellPosition($cell); const args = this._fireFocusedRowChanging($event, $row); if (args.cancel) { return } if (args.rowIndexChanged && cellPosition) { this.setFocusedColumnIndex(cellPosition.columnIndex); $cell = this._getFocusedCell() } } return $cell } _enterKeyHandler(eventArgs, isEditing) { var _this$_focusedView, _this$getMasterDetail; const rowIndex = this.getVisibleRowIndex(); const key = this._dataController.getKeyByRowIndex(rowIndex); const $row = null === (_this$_focusedView = this._focusedView) || void 0 === _this$_focusedView ? void 0 : _this$_focusedView.getRow(rowIndex); const $cell = this._getFocusedCell(); const needExpandGroupRow = this.option("grouping.allowCollapsing") && (0, _m_keyboard_navigation_utils.isGroupRow)($row); const needExpandMasterDetailRow = this.option("masterDetail.enabled") && (null === $cell || void 0 === $cell ? void 0 : $cell.hasClass(_const2.COMMAND_EXPAND_CLASS)); const needExpandAdaptiveRow = null === $cell || void 0 === $cell ? void 0 : $cell.hasClass(_const2.ADAPTIVE_COLUMN_NAME_CLASS); if (needExpandGroupRow || needExpandMasterDetailRow) { const item = this._dataController.items()[rowIndex]; const isNotContinuation = (null === item || void 0 === item ? void 0 : item.data) && !item.data.isContinuation; if ((0, _type.isDefined)(key) && isNotContinuation) { this._dataController.changeRowExpand(key) } } else if (needExpandAdaptiveRow) { this._adaptiveColumnsController.toggleExpandAdaptiveDetailRow(key); this._updateFocusedCellPosition($cell) } else if (null !== (_this$getMasterDetail = this.getMasterDetailCell($cell)) && void 0 !== _this$getMasterDetail && _this$getMasterDetail.is($cell)) { if ($cell.is(":focus")) { this.focusFirstInteractiveElementInside($cell) } } else if (!(null !== $cell && void 0 !== $cell && $cell.hasClass(_const2.COMMAND_EDIT_CLASS))) { this._processEnterKeyForDataCell(eventArgs, isEditing) } } focusFirstInteractiveElementInside($el) { $el.find(_const2.INTERACTIVE_ELEMENTS_SELECTOR).get(0).focus() } _processEnterKeyForDataCell(eventArgs, isEditing) { const direction = this._getEnterKeyDirection(eventArgs); const allowEditingOnEnterKey = this._allowEditingOnEnterKey(); if (isEditing || !allowEditingOnEnterKey && direction) { this._handleEnterKeyEditingCell(eventArgs.originalEvent).done((() => { if ("next" === direction || "previous" === direction) { this._targetCellTabHandler(eventArgs, direction) } else if ("upArrow" === direction || "downArrow" === direction) { this._navigateNextCell(eventArgs.originalEvent, direction) } })) } else if (allowEditingOnEnterKey) { this._startEditing(eventArgs) } } _getEnterKeyDirection(eventArgs) { const enterKeyDirection = this.option("keyboardNavigation.enterKeyDirection"); const isShift = eventArgs.shift; if ("column" === enterKeyDirection) { return isShift ? "upArrow" : "downArrow" } if ("row" === enterKeyDirection) { return isShift ? "previous" : "next" } return } _handleEnterKeyEditingCell(event) { const d = (0, _deferred.Deferred)(); const { target: target } = event; const $cell = this._getCellElementFromTarget(target); const isRowEditMode = this._isRowEditMode(); this._updateFocusedCellPosition($cell); if (isRowEditMode) { this._focusEditFormCell($cell); setTimeout(this._editingController.saveEditData.bind(this._editingController)); d.resolve() } else { _events_engine.default.trigger((0, _renderer.default)(target), "change"); this._closeEditCell().always(d.resolve); event.preventDefault() } return d } _escapeKeyHandler(eventArgs, isEditing) { const $cell = this._getCellElementFromTarget(eventArgs.originalEvent.target); if (isEditing) { this._updateFocusedCellPosition($cell); if (!this._isRowEditMode()) { if ("cell" === this._editingController.getEditMode()) { this._editingController.cancelEditData() } else { this._closeEditCell() } } else { this._focusEditFormCell($cell); this._editingController.cancelEditData(); if (0 === this._dataController.items().length) { this._resetFocusedCell(); this._editorFactory.loseFocus() } } eventArgs.originalEvent.preventDefault(); return true } const masterDetailCell = this.getMasterDetailCell($cell); if (masterDetailCell) { this._focusCell(masterDetailCell); return true } return false } _ctrlFKeyHandler(eventArgs) { if (this.option("searchPanel.visible")) { const searchTextEditor = this._headerPanel.getSearchTextEditor(); if (searchTextEditor) { searchTextEditor.focus(); eventArgs.originalEvent.preventDefault() } } } _f2KeyHandler() { const isEditing = this._editingController.isEditing(); const rowIndex = this.getVisibleRowIndex(); const $row = this._focusedView && this._focusedView.getRow(rowIndex); if (!isEditing && (0, _m_keyboard_navigation_utils.isDataRow)($row)) { this._startEditing() } } _navigateNextCell($event, keyCode) { const $cell = this._getNextCell(keyCode); const directionCode = this._getDirectionCodeByKey(keyCode); const isCellValid = $cell && this._isCellValid($cell); const result = isCellValid ? this._arrowKeysHandlerFocusCell($event, $cell, directionCode) : false; return result } _arrowKeysHandlerFocusCell($event, $nextCell, direction) { const isVerticalDirection = "prevRow" === direction || "nextRow" === direction; const args = this._fireFocusChangingEvents($event, $nextCell, isVerticalDirection, true); $nextCell = args.$newCellElement; if (!args.cancel && this._isCellValid($nextCell)) { this._focus($nextCell, !args.isHighlighted); return true } return false } _beginFastEditing(originalEvent, isDeleting) { if (!this._isFastEditingAllowed() || originalEvent.altKey || originalEvent.ctrlKey || this._editingController.isEditing()) { return false } if (isDeleting) { this._startEditing(originalEvent, _const2.FAST_EDITING_DELETE_KEY) } else { const { key: key } = originalEvent; const keyCode = originalEvent.keyCode || originalEvent.which; const fastEditingKey = key || keyCode && String.fromCharCode(keyCode); if (fastEditingKey && (1 === fastEditingKey.length || fastEditingKey === _const2.FAST_EDITING_DELETE_KEY)) { this._startEditing(originalEvent, fastEditingKey) } } return true } isQuickNavigationPossible() { var _this$_rowsView4, _this$_editingControl4, _this$_editingControl5; const visibleRowIndex = this.getVisibleRowIndex(); const $row = null === (_this$_rowsView4 = this._rowsView) || void 0 === _this$_rowsView4 ? void 0 : _this$_rowsView4.getRow(visibleRowIndex); const dataRowTemplate = this.option("dataRowTemplate"); const isEditRowByIndex = null === (_this$_editingControl4 = this._editingController) || void 0 === _this$_editingControl4 || null === (_this$_editingControl5 = _this$_editingControl4.isEditRowByIndex) || void 0 === _this$_editingControl5 ? void 0 : _this$_editingControl5.call(_this$_editingControl4, visibleRowIndex); return !isEditRowByIndex && !dataRowTemplate && (0, _m_keyboard_navigation_utils.isDataRow)($row) } getFirstOrLastColumnIndex(needFirstColumnIndex) { const allVisibleColumns = this._columnsController.getVisibleColumns(null, true); const findColumnIndex = column => this.isFocusableColumn(column); return needFirstColumnIndex ? allVisibleColumns.findIndex(findColumnIndex) : allVisibleColumns.findLastIndex(findColumnIndex) } getFirstOrLastRowIndex(needFirstRow) { var _this$_dataController; const rowCount = this._isVirtualScrolling() ? this._dataController.totalItemsCount() : null === (_this$_dataController = this._dataController.items(true)) || void 0 === _this$_dataController ? void 0 : _this$_dataController.length; return needFirstRow ? 0 : rowCount - 1 } calculateScrollLeft(needScrollToFirstCell) { var _this$_columnsControl; const result = needScrollToFirstCell ? 0 : this._getMaxHorizontalOffset(); const isNeedToRenderVirtualColumns = null === (_this$_columnsControl = this._columnsController) || void 0 === _this$_columnsControl ? void 0 : _this$_columnsControl.isNeedToRenderVirtualColumns(result); return isNeedToRenderVirtualColumns ? result : -1 } calculateScrollTop(needScrollToFirstCell) { const maxVerticalOffset = this._getMaxVerticalOffset(); const hasScroll = maxVerticalOffset > 0; const isVirtualRowRender = this._isVirtualRowRender(); if (isVirtualRowRender && hasScroll) { return needScrollToFirstCell ? 0 : maxVerticalOffset } return -1 } scrollTo(scrollOffset) { var _this$_rowsView5; const scrollable = null === (_this$_rowsView5 = this._rowsView) || void 0 === _this$_rowsView5 ? void 0 : _this$_rowsView5.getScrollable(); null === scrollable || void 0 === scrollable || scrollable.scrollTo(scrollOffset) } focusFirstOrLastCell(e) { var _this$_rowsView$getSc; const $cell = this._getFocusedCell(); this._focusElement($cell, true, e); null === (_this$_rowsView$getSc = this._rowsView.getScrollable()) || void 0 === _this$_rowsView$getSc || _this$_rowsView$getSc.update() } navigateToFirstOrLastRow(needNavigateToFirstCell, e) { const scrollTop = this.calculateScrollTop(needNavigateToFirstCell); const firstOrLastRowIndex = this.getFirstOrLastRowIndex(needNavigateToFirstCell); const firstOrLastColumnIndex = this.getFirstOrLastColumnIndex(needNavigateToFirstCell); this.silentUpdateFocusedCellPosition({ columnIndex: firstOrLastColumnIndex, rowIndex: firstOrLastRowIndex }); if (scrollTop >= 0) { this._needNavigationToCell = true; this.scrollTo({ top: scrollTop }) } else { this.navigateToFirstOrLastCell(needNavigateToFirstCell, e) } } homeOrEndKeyHandler(e) { if (!this.isQuickNavigationPossible()) { return } const needNavigateToFirstCell = "home" === e.keyName; const { originalEvent: originalEvent } = e; if ((0, _index.isCommandKeyPressed)(originalEvent)) { this.navigateToFirstOrLastRow(needNavigateToFirstCell, originalEvent) } else { this.navigateToFirstOrLastCell(needNavigateToFirstCell, originalEvent) } originalEvent.preventDefault() } isFocusableColumn(column) { return column.type !== _const2.DRAG_COLUMN_NAME } navigateToFirstOrLastCell(needNavigateToFirstCell, e) { const firstOrLastColumnIndex = this.getFirstOrLastColumnIndex(needNavigateToFirstCell); this._needNavigationToCell = false; if (firstOrLastColumnIndex < 0) { return } const scrollLeft = this.calculateScrollLeft(needNavigateToFirstCell); this.silentUpdateFocusedCellPosition({ columnIndex: firstOrLastColumnIndex }); if (scrollLeft >= 0) { this.needToRestoreFocus = true; this.scrollTo({ left: scrollLeft }) } else { this.focusFirstOrLastCell(e) } } isQuickNavigationToFirstCell() { var _this$_focusedCellPos2; const firstColumnIndex = this.getFirstOrLastColumnIndex(true); return (null === (_this$_focusedCellPos2 = this._focusedCellPosition) || void 0 === _this$_focusedCellPos2 ? void 0 : _this$_focusedCellPos2.columnIndex) === firstColumnIndex } _pointerEventHandler(e) { var _this$_rowsView6; const event = e.event || e; let $target = (0, _renderer.default)(event.currentTarget); const focusedViewElement = null === (_this$_rowsView6 = this._rowsView) || void 0 === _this$_rowsView6 ? void 0 : _this$_rowsView6.element(); const $parent = $target.parent(); const isInteractiveElement = (0, _renderer.default)(event.target).is(_const2.INTERACTIVE_ELEMENTS_SELECTOR); const isRevertButton = !!(0, _renderer.default)(event.target).closest(`.${_const2.REVERT_BUTTON_CLASS}`).length; const isExpandCommandCell = $target.hasClass(_const2.COMMAND_EXPAND_CLASS); if (!this._isEventInCurrentGrid(event)) { return } if (!isRevertButton && (this._isCellValid($target, !isInteractiveElement) || isExpandCommandCell)) { $target = this._isInsideEditForm($target) ? (0, _renderer.default)(event.target) : $target; this._focusView(); (0, _renderer.default)(focusedViewElement).removeClass(_const2.FOCUS_STATE_CLASS); if ($parent.hasClass(_const2.FREESPACE_ROW_CLASS)) { this._updateFocusedCellPosition($target); this._applyTabIndexToElement(this._focusedView.element()); this._focusedView.focus(true) } else if (!this.getMasterDetailCell($target)) { this._clickTargetCellHandler(event, $target) } else { this._updateFocusedCellPosition($target) } } else if ($target.is("td")) { this._resetFocusedCell() } } _clickTargetCellHandler(event, $cell) { const column = this._getColumnByCellElement($cell); const isCellEditMode = this._isCellEditMode(); this.setCellFocusType(); const args = this._fireFocusChangingEvents(event, $cell, true); $cell = args.$newCellElement; if (!args.cancel) { if (args.resetFocusedRow) { this._focusController._resetFocusedRow(); return } if (args.rowIndexChanged) { $cell = this._getFocusedCell() } if (!args.isHighlighted && !isCellEditMode) { this.setRowFocusType() } this._updateFocusedCellPosition($cell); if (this._allowRowUpdating() && isCellEditMode && column && column.allowEditing) { this._isNeedFocus = false; this._isHiddenFocus = false } else { $cell = this._getFocusedCell(); const $target = event && (0, _renderer.default)(event.target).closest(`${_const2.NON_FOCUSABLE_ELEMENTS_SELECTOR}, td`); const skipFocusEvent = $target && $target.not($cell).is(_const2.NON_FOCUSABLE_ELEMENTS_SELECTOR); const isEditor = !!column && !column.command && $cell.hasClass(_const.EDITOR_CELL_CLASS); const isDisabled = !isEditor && (!args.isHighlighted || skipFocusEvent); this._focus($cell, isDisabled, skipFocusEvent) } } else { this.setRowFocusType(); this.setFocusedRowIndex(args.prevRowIndex); if (this._editingController.isEditing() && isCellEditMode) { this._closeEditCell() } } } _allowRowUpdating() { const rowIndex = this.getVisibleRowIndex(); const row = this._dataController.items()[rowIndex]; return this._editingController.allowUpdating({ row: row }, "click") } focus(element) { let activeElementSelector; const focusedRowEnabled = this.option("focusedRowEnabled"); const isHighlighted = this._isCellElement((0, _renderer.default)(element)); if (!element) { activeElementSelector = ".dx-datagrid-rowsview .dx-row[tabindex]"; if (!focusedRowEnabled) { activeElementSelector += ", .dx-datagrid-rowsview .dx-row > td[tabindex]" } element = this.component.$element().find(activeElementSelector).first() } element && this._focusElement((0, _renderer.default)(element), isHighlighted) } getFocusedView() { return this.getView("rowsView") } setupFocusedView() { if (this.isKeyboardEnabled() && !(0, _type.isDefined)(this._focusedView)) { this._focusView() } } _focusElement($element, isHighlighted, event) { const rowsViewElement = (0, _renderer.default)(this._getRowsViewElement()); const $focusedView = $element.closest(rowsViewElement); const isRowFocusType = this.isRowFocusType(); let args = {}; if (!$focusedView.length || this._isCellElement($element) && !this._isCellValid($element)) { return } this._focusView(); this._isNeedFocus = true; this._isNeedScroll = true; if (this._isCellElement($element) || (0, _m_keyboard_navigation_utils.isGroupRow)($element)) { this.setCellFocusType(); args = this._fireFocusChangingEvents(event, $element, true, isHighlighted); $element = args.$newCellElement; if (isRowFocusType && !args.isHighlighted) { this.setRowFocusType() } } if (!args.cancel) { this._focus($element, !args.isHighlighted); this._focusInteractiveElement($element) } } isInsideFocusedView($element) { var _this$_focusedView2; return 0 !== $element.closest(null === (_this$_focusedView2 = this._focusedView) || void 0 === _this$_focusedView2 ? void 0 : _this$_focusedView2.element()).length } _focusView() { this._focusedView = this._rowsView } _resetFocusedView() { this.setRowFocusType(); this._focusedView = null } _focusInteractiveElement($cell, isLast) { if (!$cell) { return } const $focusedElement = this._getInteractiveElement($cell, isLast); _m_utils.default.focusAndSelectElement(this, $focusedElement) } _focus($cell, disableFocus, skipFocusEvent) { const $row = $cell && !$cell.hasClass(_const.ROW_CLASS) ? $cell.closest(`.${_const.ROW_CLASS}`) : $cell; if ($row && (0, _m_keyboard_navigation_utils.isNotFocusedRow)($row)) { return } const focusedView = this._focusedView; const $focusViewElement = focusedView && focusedView.element(); let $focusElement; this._isHiddenFocus = disableFocus; const isRowFocus = (0, _m_keyboard_navigation_utils.isGroupRow)($row) || (0, _m_keyboard_navigation_utils.isGroupFooterRow)($row) || this.isRowFocusType(); if (isRowFocus) { $focusElement = $row; if (focusedView) { this.setFocusedRowIndex(this._getRowIndex($row)) } } else if (this._isCellElement($cell)) { $focusElement = $cell; this._updateFocusedCellPosition($cell) } if ($focusElement) { if ($focusViewElement) { $focusViewElement.find(".dx-row[tabindex], .dx-row > td[tabindex]").filter(((i, node) => _m_utils.default.isElementInCurrentGrid(this, (0, _renderer.default)(node)))).not($focusElement).removeClass(_const2.CELL_FOCUS_DISABLED_CLASS).removeClass(_const2.FOCUSED_CLASS).removeAttr("tabindex") } _events_engine.default.one($focusElement, "blur", (e => { if (e.relatedTarget) { $focusElement.removeClass(_const2.CELL_FOCUS_DISABLED_CLASS).removeClass(_const2.FOCUSED_CLASS) } })); if (!skipFocusEvent) { this._applyTabIndexToElement($focusElement); _events_engine.default.trigger($focusElement, "focus") } if (disableFocus) { $focusElement.addClass(_const2.CELL_FOCUS_DISABLED_CLASS); if (isRowFocus) { $cell.addClass(_const2.CELL_FOCUS_DISABLED_CLASS) } } else { this._editorFactory.focus($focusElement) } } } _updateFocus(isRenderView) { let skipFocusEvent = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : false; this._updateFocusTimeout = setTimeout((() => { if (this._needFocusEditingCell()) { this._editingController._focusEditingCell(); return } let $cell = this._getFocusedCell(); const isEditing = this._editingController.isEditing(); if (!this.getMasterDetailCell($cell) || this._isRowEditMode()) { if (this._hasSkipRow($cell.parent())) { const direction = this._focusedCellPosition && this._focusedCellPosition.rowIndex > 0 ? "upArrow" : "downArrow"; $cell = this._getNextCell(direction) } if ((0, _m_keyboard_navigation_utils.isElementDefined)($cell)) { if ($cell.is("td") || $cell.hasClass(this.addWidgetPrefix(_const2.EDIT_FORM_ITEM_CLASS))) { const isCommandCell = $cell.is(_const2.COMMAND_CELL_SELECTOR); const $focusedElementInsideCell = $cell.find(":focus"); const isFocusedElementDefined = (0, _m_keyboard_navigation_utils.isElementDefined)($focusedElementInsideCell); const column = this._getColumnByCellElement($cell); if ((isRenderView || !isCommandCell) && this._editorFactory.focus()) { if (isCommandCell && isFocusedElementDefined) { _m_utils.default.focusAndSelectElement(this, $focusedElementInsideCell); return }!isFocusedElementDefined && this._focus($cell, false, skipFocusEvent) } else if (!isFocusedElementDefined && (this._isNeedFocus || this._isHiddenFocus)) { this._focus($cell, this._isHiddenFocus, skipFocusEvent) } if (isEditing && !(null !== column && void 0 !== column && column.showEditorAlways)) { this._focusInteractiveElement.bind(this)($cell) } } else { _events_engine.default.trigger($cell, "focus") } } } })) } _needFocusEditingCell() { const isCellEditMode = this._editingController.getEditMode() === _const.EDIT_MODE_CELL; const isBatchEditMode = this._editingController.getEditMode() === _const.EDIT_MODE_BATCH; const cellEditModeHasChanges = isCellEditMode && this._editingController.hasChanges(); const isNewRowBatchEditMode = isBatchEditMode && this._editingController.isNewRowInEditMode(); const $cell = this._getFocusedCell(); return (0 === $cell.children().length || $cell.find(_const.FOCUSABLE_ELEMENT_SELECTOR).length > 0) && (cellEditModeHasChanges || isNewRowBatchEditMode) } _updateFocusedCellPositionByTarget(target) { var _this$_focusedCellPos3; const elementType = this._getElementType(target); if ("row" === elementType && (0, _type.isDefined)(null === (_this$_focusedCellPos3 = this._focusedCellPosition) || void 0 === _this$_focusedCellPos3 ? void 0 : _this$_focusedCellPos3.columnIndex)) { const $row = (0, _renderer.default)(target); this._focusedView && (0, _m_keyboard_navigation_utils.isGroupRow)($row) && this.setFocusedRowIndex(this._getRowIndex($row)) } else { this._updateFocusedCellPosition(this._getCellElementFromTarget(target)) } } _focusCell($cell, isDisabled) { if (this._isCellValid($cell)) { this._focus($cell, isDisabled); return true } return } _focusEditFormCell($cell) { if ($cell.hasClass(_const2.MASTER_DETAIL_CELL_CLASS)) { this._editorFactory.focus($cell, true) } } _resetFocusedCell(preventScroll) { var _this$_focusedView3; const $cell = this._getFocusedCell(); (0, _m_keyboard_navigation_utils.isElementDefined)($cell) && $cell.removeAttr("tabindex").removeClass(_const2.CELL_FOCUS_DISABLED_CLASS); this._isNeedFocus = false; this._isNeedScroll = false; this._focusedCellPosition = {}; clearTimeout(this._updateFocusTimeout); null === (_this$_focusedView3 = this._focusedView) || void 0 === _this$_focusedView3 || _this$_focusedView3.renderFocusState({ preventScroll: preventScroll }) } restoreFocusableElement(rowIndex, $event) { const that = this; let args; let $rowElement; const isUpArrow = (0, _type.isDefined)(rowIndex); const $rowsViewElement = this._rowsView.element(); const { columnIndex: columnIndex } = that._focusedCellPosition; const rowIndexOffset = that._dataController.getRowIndexOffset(); rowIndex = isUpArrow ? rowIndex : this._rowsView.getTopVisibleItemIndex() + rowIndexOffset; if (!isUpArrow) { that._editorFactory.loseFocus(); that._applyTabIndexToElement($rowsViewElement); _events_engine.default.trigger($rowsViewElement, "focus") } else { $rowElement = this._rowsView.getRow(rowIndex - rowIndexOffset); args = that._fireFocusedRowChanging($event, $rowElement); if (!args.cancel && args.rowIndexChanged) { rowIndex = args.newRowIndex } } if (!isUpArrow || !args.cancel) { that.setFocusedCellPosition(rowIndex, columnIndex) } isUpArrow && that._updateFocus() } silentUpdateFocusedCellPosition(newFocusedCellPosition) { this._focusedCellPosition = _extends({}, this._focusedCellPosition ?? {}, newFocusedCellPosition) } _getNewPositionByCode(cellPosition, elementType, code) { let { columnIndex: columnIndex } = cellPosition; let { rowIndex: rowIndex } = cellPosition; let visibleColumnsCount; if (void 0 === cellPosition.rowIndex && "next" === code) { return { columnIndex: 0, rowIndex: 0 } } switch (code) { case "nextInRow": case "next": visibleColumnsCount = this._getVisibleColumnCount(); if (columnIndex < visibleColumnsCount - 1 && "row" !== elementType && this._hasValidCellAfterPosition({ columnIndex: columnIndex, rowIndex: rowIndex })) { columnIndex++ } else if (!this._isLastRow(rowIndex) && "next" === code) { columnIndex = 0; rowIndex++ } break; case "previousInRow": case "previous": if (columnIndex > 0 && "row" !== elementType && this._hasValidCellBeforePosition({ columnIndex: columnIndex, rowIndex: rowIndex })) { columnIndex-- } else if (rowIndex > 0 && "previous" === code) { rowIndex--; visibleColumnsCount = this._getVisibleColumnCount(); columnIndex = visibleColumnsCount - 1 } break; case "upArrow": rowIndex = rowIndex > 0 ? rowIndex - 1 : rowIndex; break; case "downArrow": rowIndex = !this._isLastRow(rowIndex) ? rowIndex + 1 : rowIndex } return { columnIndex: columnIndex, rowIndex: rowIndex } } getRowIndex() { return this._focusedCellPosition ? this._focusedCellPosition.rowIndex : -1 } getColumnIndex() { return this._focusedCellPosition ? this._focusedCellPosition.columnIndex : -1 } getVisibleRowIndex() { var _this$_focusedCellPos4; const rowIndex = null === (_this$_focusedCellPos4 = this._focusedCellPosition) || void 0 === _this$_focusedCellPos4 ? void 0 : _this$_focusedCellPos4.rowIndex; return !(0, _type.isDefined)(rowIndex) || rowIndex < 0 ? -1 : rowIndex - this._dataController.getRowIndexOffset() } getVisibleColumnIndex() { var _this$_focusedCellPos5; const columnIndex = null === (_this$_focusedCellPos5 = this._focusedCellPosition) || void 0 === _this$_focusedCellPos5 ? void 0 : _this$_focusedCellPos5.columnIndex; return !(0, _type.isDefined)(columnIndex) ? -1 : columnIndex - this._columnsController.getColumnIndexOffset() } _isCellByPositionValid(cellPosition) { const $cell = (0, _renderer.default)(this._getCell(cellPosition)); return this._isCellValid($cell) } _isLastRow(rowIndex) { const dataController = this._dataController; if (this._isVirtualRowRender()) { return rowIndex >= dataController.getMaxRowIndex() } const lastVisibleIndex = Math.max(...dataController.items().map(((item, index) => false !== item.visible ? index : -1))); return rowIndex === lastVisibleIndex } _isFirstValidCell(cellPosition) { let isFirstValidCell = false; if (0 === cellPosition.rowIndex && cellPosition.columnIndex >= 0) { isFirstValidCell = isFirstValidCell || !this._hasValidCellBeforePosition(cellPosition) } return isFirstValidCell } _hasValidCellBeforePosition(cellPosition) { let { columnIndex: columnIndex } = cellPosition; let hasValidCells = false; while (columnIndex > 0 && !hasValidCells) { const checkingPosition = { columnIndex: --columnIndex, rowIndex: cellPosition.rowIndex }; hasValidCells = this._isCellByPositionValid(checkingPosition) } return hasValidCells } _hasValidCellAfterPosition(cellPosition) { let { columnIndex: columnIndex } = cellPosition; let hasValidCells = false; const visibleColumnCount = this._getVisibleColumnCount(); while (columnIndex < visibleColumnCount - 1 && !hasValidCells) { const checkingPosition = { columnIndex: ++columnIndex, rowIndex: cellPosition.rowIndex }; hasValidCells = this._isCellByPositionValid(checkingPosition) } return hasValidCells } _isLastValidCell(cellPosition) { const nextColumnIndex = cellPosition.columnIndex >= 0 ? cellPosition.columnIndex + 1 : 0; const { rowIndex: rowIndex } = cellPosition; const checkingPosition = { columnIndex: nextColumnIndex, rowIndex: rowIndex }; const visibleRows = this._dataController.getVisibleRows(); const row = visibleRows && visibleRows[rowIndex]; const isLastRow = this._isLastRow(rowIndex); if (!isLastRow) { return false } const isFullRowFocus = "group" === (null === row || void 0 === row ? void 0 : row.rowType) || "groupFooter" === (null === row || void 0 === row ? void 0 : row.rowType); if (isFullRowFocus && cellPosition.columnIndex > 0) { return true } if (cellPosition.columnIndex === this._getVisibleColumnCount() - 1) { return true } if (this._isCellByPositionValid(checkingPosition)) { return false } return this._isLastValidCell(checkingPosition) } _isCellValid($cell, isClick) { if ((0, _m_keyboard_navigation_utils.isElementDefined)($cell)) { const $row = $cell.parent(); const columnIndex = this._rowsView.getCellIndex($cell) + this._columnsController.getColumnIndexOffset(); const column = this._getColumnByCellElement($cell); const visibleColumnCount = this._getVisibleColumnCount(); const editingController = this._editingController; const isMasterDetailRow = (0, _m_keyboard_navigation_utils.isDetailRow)($row); const isShowWhenGrouped = column && column.showWhenGrouped; const isDataCell = column && !$cell.hasClass(_const2.COMMAND_EXPAND_CLASS) && (0, _m_keyboard_navigation_utils.isDataRow)($row); const isValidGroupSpaceColumn = function() { return !isMasterDetailRow && column && (!(0, _type.isDefined)(column.groupIndex) || isShowWhenGrouped && isDataCell) || parseInt($cell.attr("colspan"), 10) > 1 }; const isDragCell = _dom.GridCoreKeyboardNavigationDom.isDragCell($cell); if (isDragCell) { return false } if (this.getMasterDetailCell($cell)) { return true } if (visibleColumnCount > columnIndex && isValidGroupSpaceColumn()) { const rowItems = this._dataController.items(); const visibleRowIndex = this._rowsView.getRowIndex($row); const row = rowItems[visibleRowIndex]; const isCellEditing = editingController && this._isCellEditMode() && editingController.isEditing(); const isRowEditingInCurrentRow = editingController && editingController.isEditRow(visibleRowIndex); const isEditing = isRowEditingInCurrentRow || isCellEditing; if (column.command) { if (this._isLegacyNavigation()) { return !isEditing && "expand" === column.command } if (isCellEditing) { return false } if (isRowEditingInCurrentRow) { return "select" !== column.command } return !isEditing } if (isCellEditing && row && "data" !== row.rowType) { return false } return !isEditing || column.allowEditing || isClick } } } getFirstValidCellInRow($row, columnIndex) { const that = this; const $cells = $row.find("> td"); let $cell; let $result; columnIndex = columnIndex || 0; for (let i = columnIndex; i < $cells.length; ++i) { $cell = $cells.eq(i); if (that._isCellValid($cell)) { $result = $cell; break } } return $result } _getNextCell(keyCode, elementType, cellPosition) { const focusedCellPosition = cellPosition || this._focusedCellPosition; const isRowFocusType = this.isRowFocusType(); const includeCommandCells = isRowFocusType || ["next", "previous"].includes(keyCode); let $cell; let $row; if (this._focusedView && focusedCellPosition) { const newFocusedCellPosition = this._getNewPositionByCode(focusedCellPosition, elementType, keyCode); $cell = (0, _renderer.default)(this._getCell(newFocusedCellPosition)); const isLastCellOnDirection = "previous" === keyCode ? this._isFirstValidCell(newFocusedCellPosition) : this._isLastValidCell(newFocusedCellPosition); if ((0, _m_keyboard_navigation_utils.isElementDefined)($cell) && !this._isCellValid($cell) && this._isCellInRow(newFocusedCellPosition, includeCommandCells) && !isLastCellOnDirection) { if (isRowFocusType) { $cell = this.getFirstValidCellInRow($cell.parent(), newFocusedCellPosition.columnIndex) } else { $cell = this._getNextCell(keyCode, "cell", newFocusedCellPosition) } } $row = (0, _m_keyboard_navigation_utils.isElementDefined)($cell) && $cell.parent(); if (this._hasSkipRow($row)) { const rowIndex = this._getRowIndex($row); if (!this._isLastRow(rowIndex)) { $cell = this._getNextCell(keyCode, "row", { columnIndex: focusedCellPosition.columnIndex, rowIndex: rowIndex }) } else { return null } } return (0, _m_keyboard_navigation_utils.isElementDefined)($cell) ? $cell : null } return null } _startEditing(eventArgs, fastEditingKey) { const focusedCellPosition = this._focusedCellPosition; const visibleRowIndex = this.getVisibleRowIndex(); const visibleColumnIndex = this.getVisibleColumnIndex(); const row = this._dataController.items()[visibleRowIndex]; const column = this._columnsController.getVisibleColumns()[visibleColumnIndex]; if (this._isAllowEditing(row, column)) { if (this._isRowEditMode()) { this._editingController.editRow(visibleRowIndex) } else if (focusedCellPosition) { this._startEditCell(eventArgs, fastEditingKey) } } } _isAllowEditing(row, column) { return this._editingController.allowUpdating({ row: row }) && column && column.allowEditing } _editFocusedCell() { const rowIndex = this.getVisibleRowIndex(); const colIndex = this.getVisibleColumnIndex(); return this._editingController.editCell(rowIndex, colIndex) } _startEditCell(eventArgs, fastEditingKey) { this._fastEditingStarted = (0, _type.isDefined)(fastEditingKey); const editResult = this._editFocusedCell(); const isEditResultDeferred = (0, _type.isDeferred)(editResult); const isFastEditingStarted = this._isFastEditingStarted(); if (!isFastEditingStarted || !isEditResultDeferred && !editResult) { return } const editorValue = isEditResultDeferred && fastEditingKey === _const2.FAST_EDITING_DELETE_KEY ? "" : fastEditingKey; const editResultDeferred = isEditResultDeferred ? editResult : (0, _deferred.Deferred)().resolve(); const waitTemplatesDeferred = this._rowsView.waitAsyncTemplates(true); (0, _deferred.when)(editResultDeferred, waitTemplatesDeferred).done((() => { this._editingCellHandler(eventArgs, editorValue) })) } _editingCellHandler(eventArgs, editorValue) { var _$inputElement$select; const $input = this._getFocusedCell().find(_const2.INTERACTIVE_ELEMENTS_SELECTOR).eq(0); const $inputElement = $input.get(0); if (!$inputElement) { return } const keyDownEvent = (0, _index.createEvent)(eventArgs, { type: "keydown", target: $inputElement }); const keyPressEvent = (0, _index.createEvent)(eventArgs, { type: "keypress", target: $inputElement }); const inputEvent = (0, _index.createEvent)(eventArgs, { type: "input", target: $inputElement }); if (inputEvent.originalEvent) { inputEvent.originalEvent = (0, _index.createEvent)(inputEvent.originalEvent, { data: editorValue }) } null === (_$inputElement$select = $inputElement.select) || void 0 === _$inputElement$select || _$inputElement$select.call($inputElement); _events_engine.default.trigger($input, keyDownEvent); if (!keyDownEvent.isDefaultPrevented()) { _events_engine.default.trigger($input, keyPressEvent); if (!keyPressEvent.isDefaultPrevented()) { const timeout = _browser.default.mozilla ? 25 : 0; setTimeout((() => { const inputValue = this._getKeyPressInputValue($input, editorValue); $input.val(inputValue); const $widgetContainer = $input.closest(`.${_const2.WIDGET_CLASS}`); _events_engine.default.off($widgetContainer, "focusout"); _events_engine.default.one($widgetContainer, "focusout", (() => { _events_engine.default.trigger($input, "change") })); _events_engine.default.trigger($input, inputEvent) }), timeout) } } } _getKeyPressInputValue($input, editorValue) { const inputCurrentValue = $input.val(); return "-" === editorValue && "-0" === inputCurrentValue ? "-0" : editorValue } _fireFocusChangingEvents($event, $cell, fireRowEvent, isHighlighted) { let args = {}; const cellPosition = this._getCellPosition($cell) ?? {}; if (this.isCellFocusType()) { args = this._fireFocusedCellChanging($event, $cell, isHighlighted); if (!args.cancel) { cellPosition.columnIndex = args.newColumnIndex; cellPosition.rowIndex = args.newRowIndex; isHighlighted = args.isHighlighted; $cell = (0, _renderer.default)(this._getCell(cellPosition)) } } if (!args.cancel && fireRowEvent && $cell) { args = this._fireFocusedRowChanging($event, $cell.parent()); if (!args.cancel) { cellPosition.rowIndex = args.newRowIndex; args.isHighlighted = isHighlighted } } args.$newCellElement = (0, _renderer.default)(this._getCell(cellPosition)); if (!args.$newCellElement.length) { args.$newCellElement = $cell } return args } _fireFocusedCellChanging($event, $cellElement, isHighlighted) { const prevColumnIndex = this.option("focusedColumnIndex"); const prevRowIndex = this.option("focusedRowIndex"); const cellPosition = this._getCellPosition($cellElement); const columnIndex = cellPosition ? cellPosition.columnIndex : -1; const rowIndex = cellPosition ? cellPosition.rowIndex : -1; const visibleRows = this._dataController.getVisibleRows(); const visibleColumns = this._columnsController.getVisibleColumns(); const args = { cellElement: $cellElement, prevColumnIndex: prevColumnIndex, prevRowIndex: prevRowIndex, newColumnIndex: columnIndex, newRowIndex: rowIndex, rows: visibleRows, columns: visibleColumns, event: $event, isHighlighted: isHighlighted || false, cancel: false }; this._canceledCellPosition = null; this.executeAction("onFocusedCellChanging", args); if (args.newColumnIndex !== columnIndex || args.newRowIndex !== rowIndex) { args.$newCellElement = (0, _renderer.default)(this._getCell({ columnIndex: args.newColumnIndex, rowIndex: args.newRowIndex })) } if (args.cancel) { this._canceledCellPosition = { rowIndex: rowIndex, columnIndex: columnIndex } } return args } _fireFocusedCellChanged($cell) { const columnIndex = this._rowsView.getCellIndex($cell); const rowOptions = null === $cell || void 0 === $cell ? void 0 : $cell.parent().data("options"); const focusedRowKey = null === rowOptions || void 0 === rowOptions ? void 0 : rowOptions.key; this._memoFireFocusedCellChanged(focusedRowKey, columnIndex) } _memoFireFocusedCellChanged(rowKey, columnIndex) { const $cell = this._getFocusedCell(); const rowIndex = this._getRowIndex(null === $cell || void 0 === $cell ? void 0 : $cell.parent()); const localRowIndex = Math.min(rowIndex - this._dataController.getRowIndexOffset(), this._dataController.items().length - 1); const isEditingCell = this._editingController.isEditCell(localRowIndex, columnIndex); if (isEditingCell) { return } const row = this._dataController.items()[localRowIndex]; const column = this._columnsController.getVisibleColumns()[columnIndex]; this.executeAction("onFocusedCellChanged", { cellElement: $cell ? (0, _element.getPublicElement)($cell) : void 0, columnIndex: columnIndex, rowIndex: rowIndex, row: row, column: column }) } _fireFocusedRowChanging(eventArgs, $newFocusedRow) { const newRowIndex = this._getRowIndex($newFocusedRow); const prevFocusedRowIndex = this.option("focusedRowIndex"); const loadingOperationTypes = this._dataController.loadingOperationTypes(); const args = { rowElement: $newFocusedRow, prevRowIndex: prevFocusedRowIndex, newRowIndex: newRowIndex, event: eventArgs, rows: this._dataController.getVisibleRows(), cancel: false }; const loadingOperations = loadingOperationTypes.sorting || loadingOperationTypes.grouping || loadingOperationTypes.filtering || loadingOperationTypes.paging; if (!this._dataController || this._dataController.isLoading() && loadingOperations) { args.cancel = true; return args } if (this.option("focusedRowEnabled")) { this.executeAction("onFocusedRowChanging", args); if (!args.cancel && args.newRowIndex !== newRowIndex) { args.resetFocusedRow = args.newRowIndex < 0; if (!args.resetFocusedRow) { this.setFocusedRowIndex(args.newRowIndex) } args.rowIndexChanged = true } } return args } _fireFocusedRowChanged() { var _this$_focusControlle; const focusedRowEnabled = this.option("focusedRowEnabled"); const focusedRowKey = this.option("focusedRowKey"); const focusedRowIndex = null === (_this$_focusControlle = this._focusController) || void 0 === _this$_focusControlle ? void 0 : _this$_focusControlle.getFocusedRowIndexByKey(focusedRowKey); if (!focusedRowEnabled || (0, _type.isDefined)(focusedRowKey) && focusedRowIndex < 0) { return } this._memoFireFocusedRowChanged(focusedRowKey, focusedRowIndex) } _memoFireFocusedRowChanged(focusedRowKey, focusedRowIndex) { const localRowIndex = focusedRowIndex - this._dataController.getRowIndexOffset(); this.executeAction("onFocusedRowChanged", { rowElement: focusedRowIndex < 0 ? void 0 : this._rowsView.getRowElement(localRowIndex), rowIndex: focusedRowIndex, row: focusedRowIndex < 0 ? void 0 : this._dataController.getVisibleRows()[localRowIndex] }) } _isEventInCurrentGrid(event) { return _m_utils.default.isElementInCurrentGrid(this, (0, _renderer.default)(event.target)) } _isRowEditMode() { const editMode = this._editingController.getEditMode(); return editMode === _const.EDIT_MODE_ROW || editMode === _const.EDIT_MODE_FORM } _isCellEditMode() { const editMode = this._editingController.getEditMode(); return editMode === _const.EDIT_MODE_CELL || editMode === _const.EDIT_MODE_BATCH } _isFastEditingAllowed() { return this._isCellEditMode() && this.option("keyboardNavigation.editOnKeyPress") } _getInteractiveElement($cell, isLast) { const $focusedElement = $cell.find(_const2.INTERACTIVE_ELEMENTS_SELECTOR).filter(":visible"); return isLast ? $focusedElement.last() : $focusedElement.first() } _applyTabIndexToElement($element) { const tabIndex = this.option("tabIndex") ?? 0; $element.attr("tabindex", tabIndex) } _getCell(cellPosition) { if (this._focusedView && cellPosition) { const rowIndexOffset = this._dataController.getRowIndexOffset(); const column = this._columnsController.getVisibleColumns(null, true)[cellPosition.columnIndex]; const columnIndexOffset = column && column.fixed ? this._getFixedColumnIndexOffset(column) : this._columnsController.getColumnIndexOffset(); const rowIndex = cellPosition.rowIndex >= 0 ? cellPosition.rowIndex - rowIndexOffset : -1; const columnIndex = cellPosition.columnIndex >= 0 ? cellPosition.columnIndex - columnIndexOffset : -1; return this._focusedView.getCell({ rowIndex: rowIndex, columnIndex: columnIndex }) } } _getRowIndex($row) { let rowIndex = this._rowsView.getRowIndex($row); if (rowIndex >= 0) { rowIndex += this._dataController.getRowIndexOffset() } return rowIndex } getCellIndex($cell, rowIndex) { return this._rowsView.getCellIndex($cell, rowIndex) } _hasSkipRow($row) { const row = $row && $row.get(0); return row && "none" === row.style.display } _allowEditingOnEnterKey() { return "startEdit" === this.option("keyboardNavigation.enterKeyAction") } _isLegacyNavigation() { return this.option("useLegacyKeyboardNavigation") } _getDirectionCodeByKey(key) { let directionCode; switch (key) { case "upArrow": directionCode = "prevRow"; break; case "downArrow": directionCode = "nextRow"; break; case "leftArrow": directionCode = this.option("rtlEnabled") ? "nextInRow" : "previousInRow"; break; case "rightArrow": directionCode = this.option("rtlEnabled") ? "previousInRow" : "nextInRow" } return directionCode } _isVirtualScrolling() { const scrollingMode = this.option("scrolling.mode"); return "virtual" === scrollingMode || "infinite" === scrollingMode } _isVirtualRowRender() { return this._isVirtualScrolling() || _m_utils.default.isVirtualRowRendering(this) } _isVirtualColumnRender() { return "virtual" === this.option("scrolling.columnRenderingMode") } _scrollBy(left, top, rowIndex, $event) { const that = this; const scrollable = this._rowsView.getScrollable(); if (that._focusedCellPosition) { const scrollHandler = function() { scrollable.off("scroll", scrollHandler); setTimeout(that.restoreFocusableElement.bind(that, rowIndex, $event)) }; scrollable.on("scroll", scrollHandler) } return scrollable.scrollBy({ left: left, top: top }) } _isInsideEditForm(element) { const $editForm = (0, _renderer.default)(element).closest(`.${this.addWidgetPrefix(_const.EDIT_FORM_CLASS)}`); return $editForm.length && this.elementIsInsideGrid($editForm) } getMasterDetailCell(element) { const $masterDetailCell = (0, _renderer.default)(element).closest(`.${_const2.MASTER_DETAIL_CELL_CLASS}`); if ($masterDetailCell.length && this.elementIsInsideGrid($masterDetailCell)) { return $masterDetailCell } return null } _processNextCellInMasterDetail($nextCell, _$cell) { if (!this._isInsideEditForm($nextCell) && $nextCell) { this._applyTabIndexToElement($nextCell) } } _handleTabKeyOnMasterDetailCell(target, direction) { if (this.getMasterDetailCell(target)) { this._updateFocusedCellPosition((0, _renderer.default)(target), direction); const $nextCell = this._getNextCell(direction, "row"); this._processNextCellInMasterDetail($nextCell, (0, _renderer.default)(target)); return true } return false } _getElementType(target) { return (0, _renderer.default)(target).is("tr") ? "row" : "cell" } _isFastEditingStarted() { return this._isFastEditingAllowed() && this._fastEditingStarted } _getVisibleColumnCount() { return this._columnsController.getVisibleColumns(null, true).length } _isCellInRow(cellPosition, includeCommandCells) { const { columnIndex: columnIndex } = cellPosition; const visibleColumnsCount = this._getVisibleColumnCount(); return includeCommandCells ? columnIndex >= 0 && columnIndex <= visibleColumnsCount - 1 : columnIndex > 0 && columnIndex < visibleColumnsCount - 1 } _isCellElement($element) { return $element.length && "TD" === $element[0].tagName } _getCellElementFromTarget(target) { const elementType = this._getElementType(target); const $targetElement = (0, _renderer.default)(target); let $cell; if ("cell" === elementType) { $cell = $targetElement.closest(`.${_const.ROW_CLASS} > td`) } else { $cell = $targetElement.children().not(`.${_const2.COMMAND_EXPAND_CLASS}`).first() } return $cell } _getRowsViewElement() { var _this$_rowsView7; return null === (_this$_rowsView7 = this._rowsView) || void 0 === _this$_rowsView7 ? void 0 : _this$_rowsView7.element() } _processCanceledEditCellPosition(rowIndex, columnIndex) { if (this._canceledCellPosition) { const isCanceled = this._canceledCellPosition.rowIndex === rowIndex && this._canceledCellPosition.columnIndex === columnIndex; this._canceledCellPosition = null; return isCanceled } return } updateFocusedRowIndex() { const dataController = this._dataController; const visibleRowIndex = this.getVisibleRowIndex(); const visibleItems = dataController.items(); const lastVisibleIndex = visibleItems.length ? visibleItems.length - 1 : -1; const rowIndexOffset = dataController.getRowIndexOffset(); if (lastVisibleIndex >= 0 && visibleRowIndex > lastVisibleIndex) { this.setFocusedRowIndex(lastVisibleIndex + rowIndexOffset) } } needNavigationToCell() { return this._needNavigationToCell } navigationToCellInProgress() { return this.needToRestoreFocus || this.needNavigationToCell() } } exports.KeyboardNavigationController = KeyboardNavigationController; exports.keyboardNavigationModule = { defaultOptions: () => ({ useLegacyKeyboardNavigation: false, keyboardNavigation: { enabled: true, enterKeyAction: "startEdit", enterKeyDirection: "none", editOnKeyPress: false } }), controllers: { keyboardNavigation: KeyboardNavigationController }, extenders: { views: { rowsView: Base => class extends Base { _rowClick(e) { const editRowIndex = this._editingController.getEditRowIndex(); const isKeyboardEnabled = this._keyboardNavigationController.isKeyboardEnabled(); if (editRowIndex === e.rowIndex) { this._keyboardNavigationController.setCellFocusType() } const needTriggerPointerEventHandler = ((0, _m_keyboard_navigation_utils.isMobile)() || !isKeyboardEnabled) && this.option("focusedRowEnabled"); if (needTriggerPointerEventHandler) { this._triggerPointerDownEventHandler(e, !isKeyboardEnabled) } super._rowClick.apply(this, arguments) } _triggerPointerDownEventHandler(e, force) { const { originalEvent: originalEvent } = e.event; if (originalEvent) { const $cell = (0, _renderer.default)(originalEvent.target); const columnIndex = this.getCellIndex($cell); const column = this._columnsController.getVisibleColumns()[columnIndex]; const row = this._dataController.items()[e.rowIndex]; if (this._keyboardNavigationController._isAllowEditing(row, column) || force) { const eventArgs = (0, _index.createEvent)(originalEvent, { currentTarget: originalEvent.target }); this._keyboardNavigationController._pointerEventHandler(eventArgs) } } } renderFocusState(params) { super.renderFocusState(params); if (this._keyboardNavigationController.navigationToCellInProgress()) { return } const { preventScroll: preventScroll, pageSizeChanged: pageSizeChanged } = params ?? {}; const $rowsViewElement = this.element(); if ($rowsViewElement && !(0, _selectors.focused)($rowsViewElement)) { $rowsViewElement.attr("tabindex", null) } pageSizeChanged && this._keyboardNavigationController.updateFocusedRowIndex(); let rowIndex = this._keyboardNavigationController.getVisibleRowIndex(); if (!(0, _type.isDefined)(rowIndex) || rowIndex < 0) { rowIndex = 0 } const cellElements = this.getCellElements(rowIndex); if (this._keyboardNavigationController.isKeyboardEnabled() && null !== cellElements && void 0 !== cellElements && cellElements.length) { this.updateFocusElementTabIndex(cellElements, preventScroll) } } updateFocusElementTabIndex(cellElements, preventScroll) { const $row = cellElements.eq(0).parent(); if ((0, _m_keyboard_navigation_utils.isGroupRow)($row)) { this._keyboardNavigationController._applyTabIndexToElement($row) } else { let columnIndex = this._keyboardNavigationController.getColumnIndex(); if (!(0, _type.isDefined)(columnIndex) || columnIndex < 0) { columnIndex = 0 } this._updateFocusedCellTabIndex(cellElements, columnIndex) } } _updateFocusedCellTabIndex(cellElements, columnIndex) { const keyboardController = this._keyboardNavigationController; const cellElementsLength = cellElements ? cellElements.length : -1; const updateCellTabIndex = function($cell) { const isMasterDetailCell = !!keyboardController.getMasterDetailCell($cell); const isValidCell = keyboardController._isCellValid($cell); if (!isMasterDetailCell && isValidCell && keyboardController._isCellElement($cell)) { keyboardController._applyTabIndexToElement($cell); keyboardController.setCellFocusType(); return true } return }; const $cell = _dom.GridCoreKeyboardNavigationDom.getCellToFocus(cellElements, columnIndex); if ($cell.length) { updateCellTabIndex($cell) } else { if (cellElementsLength <= columnIndex) { columnIndex = cellElementsLength - 1 } for (let i = columnIndex; i < cellElementsLength; ++i) { if (updateCellTabIndex((0, _renderer.default)(cellElements[i]))) { break } } } } renderDelayedTemplates(change) { super.renderDelayedTemplates.apply(this, arguments); this.waitAsyncTemplates().done((() => { this._renderFocusByChange(change) })) } _renderFocusByChange(change) { var _change$changeTypes; const { operationTypes: operationTypes, repaintChangesOnly: repaintChangesOnly } = change ?? {}; const { fullReload: fullReload, pageSize: pageSize } = operationTypes ?? {}; const hasInsertsOrRemoves = !!(null !== change && void 0 !== change && null !== (_change$changeTypes = change.changeTypes) && void 0 !== _change$changeTypes && _change$changeTypes.find((changeType => "insert" === changeType || "remove" === changeType))); if (!change || !repaintChangesOnly || fullReload || pageSize || hasInsertsOrRemoves) { const preventScroll = (0, _m_keyboard_navigation_utils.shouldPreventScroll)(this); this.renderFocusState({ preventScroll: preventScroll, pageSizeChanged: pageSize }) } } _renderCore(change) { const deferred = super._renderCore.apply(this, arguments); this._renderFocusByChange(change); return deferred } _editCellPrepared($cell) { var _this$_keyboardNaviga; const editorInstance = this._getEditorInstance($cell); const isEditingNavigationMode = null === (_this$_keyboardNaviga = this._keyboardNavigationController) || void 0 === _this$_keyboardNaviga ? void 0 : _this$_keyboardNaviga._isFastEditingStarted(); if (editorInstance && isEditingNavigationMode) { this._handleEditingNavigationMode(editorInstance) } super._editCellPrepared.apply(this, arguments) } _handleEditingNavigationMode(editorInstance) { ["downArrow", "upArrow"].forEach((keyName => { const originalKeyHandler = editorInstance._supportedKeys()[keyName]; editorInstance.registerKeyHandler(keyName, (e => { const isDropDownOpened = "true" === editorInstance._input().attr("aria-expanded"); if (isDropDownOpened) { return originalKeyHandler && originalKeyHandler.call(editorInstance, e) } })) })); editorInstance.registerKeyHandler("leftArrow", _common.noop); editorInstance.registerKeyHandler("rightArrow", _common.noop); const isDateBoxWithMask = editorInstance.NAME === _const2.DATEBOX_WIDGET_NAME && editorInstance.option("useMaskBehavior"); if (isDateBoxWithMask) { editorInstance.registerKeyHandler("enter", _common.noop) } } _getEditorInstance($cell) { const $editor = $cell.find(".dx-texteditor").eq(0); return _m_utils.default.getWidgetInstance($editor) } _handleScroll(e) { super._handleScroll(e); if (this._keyboardNavigationController.needNavigationToCell()) { this._keyboardNavigationController.navigateToFirstOrLastCell(this._keyboardNavigationController.isQuickNavigationToFirstCell()) } } init() { super.init(); this._resizeController = this.getController("resizing") } } }, controllers: { editing: Base => class extends Base { editCell(rowIndex, columnIndex) { if (this._keyboardNavigationController._processCanceledEditCellPosition(rowIndex, columnIndex)) { return false } const isCellEditing = super.editCell(rowIndex, columnIndex); if (isCellEditing) { this._keyboardNavigationController.setupFocusedView() } return isCellEditing } editRow(rowIndex) { const visibleColumnIndex = this._keyboardNavigationController.getVisibleColumnIndex(); const column = this._columnsController.getVisibleColumns()[visibleColumnIndex]; if (column && column.type || this.option("editing.mode") === _const.EDIT_MODE_FORM) { this._keyboardNavigationController._resetFocusedCell() } super.editRow(rowIndex); return } addRow(parentKey) { this._keyboardNavigationController.setupFocusedView(); this._keyboardNavigationController.setCellFocusType(); return super.addRow.apply(this, arguments) } getFocusedCellInRow(rowIndex) { let $cell = super.getFocusedCellInRow(rowIndex); const rowIndexOffset = this._dataController.getRowIndexOffset(); const focusedRowIndex = this._keyboardNavigationController._focusedCellPosition.rowIndex - rowIndexOffset; if (this._keyboardNavigationController.isKeyboardEnabled() && focusedRowIndex === rowIndex) { const $focusedCell = this._keyboardNavigationController._getFocusedCell(); if ((0, _m_keyboard_navigation_utils.isElementDefined)($focusedCell) && !$focusedCell.hasClass(_const2.COMMAND_EDIT_CLASS)) { $cell = $focusedCell } } return $cell } _processCanceledEditingCell() { this.closeEditCell().done((() => { this._keyboardNavigationController._updateFocus() })) } closeEditCell() { const keyboardNavigation = this._keyboardNavigationController; keyboardNavigation._fastEditingStarted = false; const result = super.closeEditCell.apply(this, arguments); const $focusedElement = this._getFocusedElement(); const isFilterCell = !!$focusedElement.closest(`.${this.addWidgetPrefix(_const.FILTER_ROW_CLASS)}`).length; if (!isFilterCell) { keyboardNavigation._updateFocus() } return result } _getFocusedElement() { var _this$component$eleme, _this$component; const $element = (0, _renderer.default)(null === (_this$component$eleme = (_this$component = this.component).element) || void 0 === _this$component$eleme ? void 0 : _this$component$eleme.call(_this$component)); const $focusedElement = $element.find(":focus"); return $focusedElement } _delayedInputFocus() { this._keyboardNavigationController._isNeedScroll = true; super._delayedInputFocus.apply(this, arguments) } _isEditingStart() { const cancel = super._isEditingStart.apply(this, arguments); if (cancel && !this._keyboardNavigationController._isNeedFocus) { const $cell = this._keyboardNavigationController._getFocusedCell(); this._keyboardNavigationController._focus($cell, true) } return cancel } }, data: Base => class extends Base { _correctRowIndices(getRowIndexCorrection) { const focusedCellPosition = this._keyboardNavigationController._focusedCellPosition; super._correctRowIndices.apply(this, arguments); if (focusedCellPosition && focusedCellPosition.rowIndex >= 0) { const focusedRowIndexCorrection = getRowIndexCorrection(focusedCellPosition.rowIndex); if (focusedRowIndexCorrection) { focusedCellPosition.rowIndex += focusedRowIndexCorrection; this._editorFactoryController.refocus() } } } getMaxRowIndex() { let result = this.items().length - 1; const virtualItemsCount = this.virtualItemsCount(); if (virtualItemsCount) { const rowIndexOffset = this.getRowIndexOffset(); result += rowIndexOffset + virtualItemsCount.end } return result } }, adaptiveColumns: Base => class extends Base { _showHiddenCellsInView(_ref) { let { viewName: viewName, $cells: $cells, isCommandColumn: isCommandColumn } = _ref; super._showHiddenCellsInView.apply(this, arguments); viewName === _const2.COLUMN_HEADERS_VIEW && !isCommandColumn && $cells.each(((_, cellElement) => { const $cell = (0, _renderer.default)(cellElement); (0, _m_keyboard_navigation_utils.isCellInHeaderRow)($cell) && $cell.attr("tabindex", 0) })) } _hideVisibleCellInView(_ref2) { let { viewName: viewName, $cell: $cell, isCommandColumn: isCommandColumn } = _ref2; super._hideVisibleCellInView.apply(this, arguments); if (viewName === _const2.COLUMN_HEADERS_VIEW && !isCommandColumn && (0, _m_keyboard_navigation_utils.isCellInHeaderRow)($cell)) { $cell.removeAttr("tabindex") } } _hideVisibleColumnInView(_ref3) { let { view: view, isCommandColumn: isCommandColumn, visibleIndex: visibleIndex } = _ref3; super._hideVisibleColumnInView({ view: view, isCommandColumn: isCommandColumn, visibleIndex: visibleIndex }); if (view.name === _const2.ROWS_VIEW) { this._rowsView.renderFocusState(null) } } }, keyboardNavigation: _scrollable_a11y.keyboardNavigationScrollableA11yExtender } } } }, 59796: /*!**************************************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/grid_core/keyboard_navigation/m_keyboard_navigation_core.js ***! \**************************************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.KeyboardNavigationController = void 0; var _events_engine = _interopRequireDefault(__webpack_require__( /*! ../../../../common/core/events/core/events_engine */ 92774)); var _short = __webpack_require__( /*! ../../../../common/core/events/short */ 42222); var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../../../core/renderer */ 64553)); var _m_modules = _interopRequireDefault(__webpack_require__( /*! ../m_modules */ 74854)); var _const = __webpack_require__( /*! ./const */ 24171); var _m_keyboard_navigation_utils = __webpack_require__( /*! ./m_keyboard_navigation_utils */ 93734); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } class KeyboardNavigationController extends _m_modules.default.ViewController { constructor() { super(...arguments); this.needToRestoreFocus = false } _applyColumnIndexBoundaries(columnIndex) { const visibleColumnCount = this._columnsController.getVisibleColumns(null, true).length; if (columnIndex < 0) { columnIndex = 0 } else if (columnIndex >= visibleColumnCount) { columnIndex = visibleColumnCount - 1 } return columnIndex } unsubscribeFromKeyDownEvent() { if (this.keyDownListener) { _short.keyboard.off(this.keyDownListener) } } subscribeToKeyDownEvent() { const $focusedViewElement = this.getFocusedViewElement(); if ($focusedViewElement) { this.keyDownListener = _short.keyboard.on($focusedViewElement, null, (e => this.keyDownHandler(e))) } } resizeCompleted() {} getColumnIndexOffset(visibleIndex) { let offset = 0; const column = this._columnsController.getVisibleColumns()[visibleIndex]; if (null !== column && void 0 !== column && column.fixed) { offset = this._getFixedColumnIndexOffset(column) } else if (visibleIndex >= 0) { offset = this._columnsController.getColumnIndexOffset() } return offset } getFocusedViewElement() { var _this$getFocusedView; return null === (_this$getFocusedView = this.getFocusedView()) || void 0 === _this$getFocusedView ? void 0 : _this$getFocusedView.element() } keyDownHandler(e) {} initKeyDownHandler() { this.unsubscribeFromKeyDownEvent(); this.subscribeToKeyDownEvent() } unsubscribeFromFocusinEvent() { const $focusedView = this.getFocusedViewElement(); if ($focusedView) { _events_engine.default.off($focusedView, "focusin", this.focusinHandlerContext) } } subscribeToFocusinEvent() { const $focusedView = this.getFocusedViewElement(); const focusinSelector = this.getFocusinSelector(); if ($focusedView) { _events_engine.default.on($focusedView, "focusin", focusinSelector, this.focusinHandlerContext) } } getFocusinSelector() { return "" } focusinHandler(e) {} initHandlers() { var _focusedView$renderCo, _this$_resizeControll; const focusedView = this.getFocusedView(); this.unsubscribeFromKeyDownEvent(); null === focusedView || void 0 === focusedView || null === (_focusedView$renderCo = focusedView.renderCompleted) || void 0 === _focusedView$renderCo || _focusedView$renderCo.remove(this.renderCompletedWithContext); null === (_this$_resizeControll = this._resizeController) || void 0 === _this$_resizeControll || null === (_this$_resizeControll = _this$_resizeControll.resizeCompleted) || void 0 === _this$_resizeControll || _this$_resizeControll.remove(this.resizeCompletedWithContext); if (this.isKeyboardEnabled()) { var _focusedView$renderCo2, _this$_resizeControll2; null === focusedView || void 0 === focusedView || null === (_focusedView$renderCo2 = focusedView.renderCompleted) || void 0 === _focusedView$renderCo2 || _focusedView$renderCo2.add(this.renderCompletedWithContext); null === (_this$_resizeControll2 = this._resizeController) || void 0 === _this$_resizeControll2 || null === (_this$_resizeControll2 = _this$_resizeControll2.resizeCompleted) || void 0 === _this$_resizeControll2 || _this$_resizeControll2.add(this.resizeCompletedWithContext) } } getFocusedView() {} _getCell(cellPosition) {} _getRowIndex($row) { return null === $row || void 0 === $row ? void 0 : $row.index() } getCellIndex($cell, rowIndex) { return null === $cell || void 0 === $cell ? void 0 : $cell.index() } _getFixedColumnIndexOffset(column) { const visibleColumnCount = this._columnsController.getVisibleColumns(null, true).length; const offset = (0, _m_keyboard_navigation_utils.isFixedColumnIndexOffsetRequired)(this, column) ? visibleColumnCount - this._columnsController.getVisibleColumns().length : 0; return offset } getNewVisibleIndex(visibleIndex, rowIndex, direction) { return "previous" === direction ? visibleIndex - 1 : visibleIndex + 1 } _getCellPosition($cell, direction) { const $row = (0, _m_keyboard_navigation_utils.isElementDefined)($cell) && $cell.closest("tr"); if ((0, _m_keyboard_navigation_utils.isElementDefined)($row)) { const rowIndex = this._getRowIndex($row); let columnIndex = this.getCellIndex($cell, rowIndex); columnIndex += this.getColumnIndexOffset(columnIndex); if (direction) { columnIndex = this.getNewVisibleIndex(columnIndex, rowIndex, direction); columnIndex = this._applyColumnIndexBoundaries(columnIndex) } return { rowIndex: rowIndex, columnIndex: columnIndex } } return } _getColumnByCellElement($cell, rowIndex) { const cellIndex = this.getCellIndex($cell); const columnIndex = cellIndex + this._columnsController.getColumnIndexOffset(); return this._columnsController.getVisibleColumns(rowIndex, true)[columnIndex] } processOnKeyDown(eventArgs) { const { originalEvent: originalEvent } = eventArgs; const args = { handled: false, event: originalEvent }; this.executeAction("onKeyDown", args); eventArgs.ctrl = originalEvent.ctrlKey; eventArgs.alt = originalEvent.altKey; eventArgs.shift = originalEvent.shiftKey; return !!args.handled } setFocusedColumnIndex(columnIndex) { if (!this._focusedCellPosition) { this._focusedCellPosition = {} } this._focusedCellPosition.columnIndex = columnIndex } _updateFocusedCellPosition($cell, direction) { const position = this._getCellPosition($cell, direction); if (position) { if (!$cell.length || position.rowIndex >= 0 && position.columnIndex >= 0) { this.setFocusedCellPosition(position.rowIndex, position.columnIndex) } } return position } renderCompleted(e) { this.initKeyDownHandler(); this.unsubscribeFromFocusinEvent(); this.subscribeToFocusinEvent() } init() { this._columnsController = this.getController("columns"); this._resizeController = this.getController("resizing"); this._focusedCellPosition = {}; if (this.isKeyboardEnabled()) { this.createAction("onKeyDown") } this.renderCompletedWithContext = this.renderCompletedWithContext ?? this.renderCompleted.bind(this); this.resizeCompletedWithContext = this.resizeCompletedWithContext ?? this.resizeCompleted.bind(this); this.focusinHandlerContext = this.focusinHandlerContext ?? this.focusinHandler.bind(this); this.initHandlers() } dispose() { _short.keyboard.off(this.keyDownListener) } setFocusedRowIndex(rowIndex) { if (!this._focusedCellPosition) { this._focusedCellPosition = {} } this._focusedCellPosition.rowIndex = rowIndex } setFocusedCellPosition(rowIndex, columnIndex) { this.setFocusedRowIndex(rowIndex); this.setFocusedColumnIndex(columnIndex) } optionChanged(args) { switch (args.name) { case "keyboardNavigation": if ("keyboardNavigation.enabled" === args.fullName) { this.init() } args.handled = true; break; case "useLegacyKeyboardNavigation": this.init(); args.handled = true; break; default: super.optionChanged(args) } } isKeyboardEnabled() { return this.option("keyboardNavigation.enabled") } _getFocusedCell() { return (0, _renderer.default)(this._getCell(this._focusedCellPosition)) } getDirectionByKeyName(keyName) { const rtlEnabled = this.option("rtlEnabled"); switch (keyName) { case "leftArrow": return rtlEnabled ? _const.Direction.Next : _const.Direction.Previous; case "rightArrow": return rtlEnabled ? _const.Direction.Previous : _const.Direction.Next; default: return _const.Direction.Next } } } exports.KeyboardNavigationController = KeyboardNavigationController }, 93734: /*!***************************************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/grid_core/keyboard_navigation/m_keyboard_navigation_utils.js ***! \***************************************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.isAdaptiveItem = function($element) { return $element && $element.hasClass(_const2.ADAPTIVE_ITEM_TEXT_CLASS) }; exports.isCellInHeaderRow = function($cell) { return !!$cell.parent(`.${_const2.HEADER_ROW_CLASS}`).length }; exports.isDataRow = function($row) { return $row && $row.hasClass(_const2.DATA_ROW_CLASS) }; exports.isDetailRow = function($row) { return $row && $row.hasClass(_const2.MASTER_DETAIL_ROW_CLASS) }; exports.isEditForm = function($row) { return $row && $row.hasClass(_const2.MASTER_DETAIL_ROW_CLASS) && $row.hasClass(_const2.EDIT_FORM_CLASS) }; exports.isEditorCell = function(that, $cell) { return !that._isRowEditMode() && $cell && !$cell.hasClass(_const2.COMMAND_SELECT_CLASS) && $cell.hasClass(_const.EDITOR_CELL_CLASS) }; exports.isElementDefined = function($element) { return (0, _type.isDefined)($element) && $element.length > 0 }; exports.isFixedColumnIndexOffsetRequired = function(that, column) { const rtlEnabled = that.option("rtlEnabled"); if (rtlEnabled) { return !("right" === column.fixedPosition || (0, _type.isDefined)(column.command) && !(0, _type.isDefined)(column.fixedPosition)) } return !(!(0, _type.isDefined)(column.fixedPosition) || "left" === column.fixedPosition) }; exports.isGroupFooterRow = function($row) { return $row && $row.hasClass(DATAGRID_GROUP_FOOTER_CLASS) }; exports.isGroupRow = function($row) { return $row && $row.hasClass(_const2.GROUP_ROW_CLASS) }; exports.isMobile = function() { return "desktop" !== _devices.default.current().deviceType }; exports.isNotFocusedRow = function($row) { return !$row || $row.hasClass(_const2.FREESPACE_ROW_CLASS) || $row.hasClass(_const2.VIRTUAL_ROW_CLASS) }; exports.shouldPreventScroll = function(that) { const keyboardController = that.getController("keyboardNavigation"); return keyboardController._isVirtualScrolling() ? that.option("focusedRowIndex") === keyboardController.getRowIndex() : false }; var _devices = (e = __webpack_require__( /*! ../../../../core/devices */ 65951), e && e.__esModule ? e : { default: e }); var e; var _type = __webpack_require__( /*! ../../../../core/utils/type */ 11528); var _const = __webpack_require__( /*! ../editing/const */ 69699); var _const2 = __webpack_require__( /*! ./const */ 24171); const DATAGRID_GROUP_FOOTER_CLASS = "dx-datagrid-group-footer" }, 47526: /*!***************************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/grid_core/keyboard_navigation/scrollable_a11y.js ***! \***************************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.keyboardNavigationScrollableA11yExtender = void 0; var _renderer = (e = __webpack_require__( /*! ../../../../core/renderer */ 64553), e && e.__esModule ? e : { default: e }); var e; var _type = __webpack_require__( /*! ../../../../core/utils/type */ 11528); exports.keyboardNavigationScrollableA11yExtender = Base => class extends Base { focusinHandler(event) { const $target = (0, _renderer.default)(event.target); this.translateFocusIfNeed(event, $target); super.focusinHandler(event) } focusOutHandler(e) { super.focusOutHandler(e); this.makeScrollableFocusableIfNeed() } translateFocusIfNeed(event, $target) { const needTranslateFocus = this.isScrollableNeedFocusable(); const isFirstCellFixed = this._isFixedColumn(0); if (!needTranslateFocus || !isFirstCellFixed) { return } const $firstCell = this._rowsView.getCell({ rowIndex: 0, columnIndex: 0 }); const firstCellHasTabIndex = !!$firstCell.attr("tabindex"); const notFixedCellIsTarget = $target.is(this._$firstNotFixedCell); if (firstCellHasTabIndex && notFixedCellIsTarget) { event.preventDefault(); this._focus($firstCell) } } renderCompleted(e) { this._$firstNotFixedCell = this.getFirstNotFixedCell(); this.makeScrollableFocusableIfNeed(); super.renderCompleted(e) } _focus($cell, disableFocus, skipFocusEvent) { super._focus($cell, disableFocus, skipFocusEvent); this.makeScrollableFocusableIfNeed() } _tabKeyHandler(eventArgs, isEditing) { const isCellPositionDefined = (0, _type.isDefined)(this._focusedCellPosition) && !(0, _type.isEmptyObject)(this._focusedCellPosition); const isOriginalHandlerRequired = !isCellPositionDefined || !eventArgs.shift && this._isLastValidCell(this._focusedCellPosition) || eventArgs.shift && this._isFirstValidCell(this._focusedCellPosition); const isNeedFocusable = this.isScrollableNeedFocusable(); if (isOriginalHandlerRequired && isNeedFocusable) { var _this$_$firstNotFixed; null === (_this$_$firstNotFixed = this._$firstNotFixedCell) || void 0 === _this$_$firstNotFixed || _this$_$firstNotFixed.removeAttr("tabIndex") } super._tabKeyHandler(eventArgs, isEditing) } getFirstNotFixedCell() { var _this$_editingControl; const columns = this._columnsController.getVisibleColumns(); const columnIndex = columns.findIndex((_ref => { let { fixed: fixed } = _ref; return !fixed })); const isEditing = null === (_this$_editingControl = this._editingController) || void 0 === _this$_editingControl ? void 0 : _this$_editingControl.isEditing(); return -1 === columnIndex || isEditing ? void 0 : this._rowsView._getCellElement(0, columnIndex) } isScrollableNeedFocusable() { var _this$_rowsView$_fixe, _this$_rowsView$getCe; const hasScrollable = !!this._rowsView.getScrollable(); const hasFixedTable = !!(null !== (_this$_rowsView$_fixe = this._rowsView._fixedTableElement) && void 0 !== _this$_rowsView$_fixe && _this$_rowsView$_fixe.length); const isCellsRendered = !!(null !== (_this$_rowsView$getCe = this._rowsView.getCellElements(0)) && void 0 !== _this$_rowsView$getCe && _this$_rowsView$getCe.length); return hasScrollable && hasFixedTable && isCellsRendered } makeScrollableFocusableIfNeed() { const needFocusable = this.isScrollableNeedFocusable(); if (!needFocusable || !this._$firstNotFixedCell) { return } this._applyTabIndexToElement(this._$firstNotFixedCell) } } }, 68491: /*!*******************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/grid_core/m_accessibility.js ***! \*******************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.registerKeyboardAction = void 0; var accessibility = function(e, r) { if (!r && e && e.__esModule) { return e } if (null === e || "object" != typeof e && "function" != typeof e) { return { default: e } } var t = _getRequireWildcardCache(r); if (t && t.has(e)) { return t.get(e) } var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) { if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u] } } return n.default = e, t && t.set(e, n), n }(__webpack_require__( /*! ../../../ui/shared/accessibility */ 16191)); function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) { return null } var r = new WeakMap, t = new WeakMap; return (_getRequireWildcardCache = function(e) { return e ? t : r })(e) } exports.registerKeyboardAction = function(viewName, instance, $element, selector, action) { let executeKeyDown = args => {}; const keyboardController = instance.getController("keyboardNavigation"); if (instance.option("useLegacyKeyboardNavigation") || keyboardController && !keyboardController.isKeyboardEnabled()) { return } if ("filterPanel" === viewName) { executeKeyDown = args => { instance.executeAction("onKeyDown", args) }; instance.createAction("onKeyDown") } accessibility.registerKeyboardAction(viewName, instance, $element, selector, action, executeKeyDown) } }, 47197: /*!************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/grid_core/m_export.js ***! \************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.prepareItems = function(items, emptyCell) { const defaultSetter = value => !value ? 1 : value; const resultItems = []; const cols = (items[0] || []).reduce(((sum, item) => sum + defaultSetter(item.colspan)), 0); const getItem = (items => { let rowIndex = 0; let cellIndex = 0; return () => { const row = items[rowIndex] || []; const item = row[cellIndex++]; if (cellIndex >= row.length) { rowIndex++; cellIndex = 0 } if (item) { item.colspan = defaultSetter(item.colspan); item.rowspan = defaultSetter(item.rowspan) } return item } })(items); const addItem = (rowIndex, cellIndex, item) => { const row = resultItems[rowIndex] = resultItems[rowIndex] || []; row[cellIndex] = item; if (item.colspan > 1 || item.rowspan > 1) { const clone = (item => (0, _extend.extend)({}, item, emptyCell))(item); for (let c = 1; c < item.colspan; c++) { addItem(rowIndex, cellIndex + c, clone) } for (let r = 1; r < item.rowspan; r++) { for (let c = 0; c < item.colspan; c++) { addItem(rowIndex + r, cellIndex + c, clone) } } } }; let item = getItem(); let rowIndex = 0; while (item) { for (let cellIndex = 0; cellIndex < cols; cellIndex++) { if (!item) { break } if (resultItems[rowIndex] && resultItems[rowIndex][cellIndex]) { continue } addItem(rowIndex, cellIndex, item); cellIndex += item.colspan - 1; item = getItem() } rowIndex++ } return resultItems }; var _extend = __webpack_require__( /*! ../../../core/utils/extend */ 52576) }, 74854: /*!*************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/grid_core/m_modules.js ***! \*************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = exports.ViewController = exports.View = exports.ModuleItem = exports.Controller = void 0; exports.processModules = processModules; var _message = _interopRequireDefault(__webpack_require__( /*! ../../../common/core/localization/message */ 4671)); var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../../core/renderer */ 64553)); var _callbacks = _interopRequireDefault(__webpack_require__( /*! ../../../core/utils/callbacks */ 84718)); var _common = __webpack_require__( /*! ../../../core/utils/common */ 17781); var _iterator = __webpack_require__( /*! ../../../core/utils/iterator */ 21274); var _type = __webpack_require__( /*! ../../../core/utils/type */ 11528); var _window = __webpack_require__( /*! ../../../core/utils/window */ 3104); var _ui = _interopRequireDefault(__webpack_require__( /*! ../../../ui/widget/ui.errors */ 35185)); var _update_views_borders = __webpack_require__( /*! ./views/utils/update_views_borders */ 20574); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } function _extends() { return _extends = Object.assign ? Object.assign.bind() : function(n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) { ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]) } } return n }, _extends.apply(null, arguments) } class ModuleItem { constructor(component) { const that = this; that._updateLockCount = 0; that.component = component; that._actions = {}; that._actionConfigs = {}; (0, _iterator.each)(this.callbackNames() || [], (function(index, name) { const flags = that.callbackFlags(name) || {}; flags.unique = true; flags.syncStrategy = true; that[this] = (0, _callbacks.default)(flags) })) } _endUpdateCore() {} init() {} callbackNames() { return } callbackFlags(name) {} publicMethods() { return [] } beginUpdate() { this._updateLockCount++ } endUpdate() { if (this._updateLockCount > 0) { this._updateLockCount--; if (!this._updateLockCount) { this._endUpdateCore() } } } option(name) { const { component: component } = this; const optionCache = component._optionCache; if (1 === arguments.length && optionCache) { if (!(name in optionCache)) { optionCache[name] = component.option(name) } return optionCache[name] } return component.option.apply(component, arguments) } _silentOption(name, value) { const { component: component } = this; const optionCache = component._optionCache; if (optionCache) { optionCache[name] = value } return component._setOptionWithoutOptionChange(name, value) } localize(name) { const optionCache = this.component._optionCache; if (optionCache) { if (!(name in optionCache)) { optionCache[name] = _message.default.format(name) } return optionCache[name] } return _message.default.format(name) } on(event, callback) { return this.component.on.apply(this.component, arguments) } off() { return this.component.off.apply(this.component, arguments) } optionChanged(args) { if (args.name in this._actions) { this.createAction(args.name, this._actionConfigs[args.name]); args.handled = true } } getAction(actionName) { return this._actions[actionName] } setAria(name, value, $target) { const target = $target.get(0); const prefix = "role" !== name && "id" !== name ? "aria-" : ""; if (target.setAttribute) { target.setAttribute(prefix + name, value) } else { $target.attr(prefix + name, value) } } _createComponent($container, component, options) { return this.component._createComponent($container, component, options) } getController(name) { return this.component._controllers[name] } createAction(actionName, config) { if ((0, _type.isFunction)(actionName)) { const action = this.component._createAction(actionName.bind(this), config); return function(e) { action({ event: e }) } } this._actions[actionName] = this.component._createActionByOption(actionName, config); this._actionConfigs[actionName] = config; return } executeAction(actionName, options) { const action = this._actions[actionName]; return action && action(options) } dispose() { const that = this; (0, _iterator.each)(that.callbackNames() || [], (function() { that[this].empty() })) } addWidgetPrefix(className) { const componentName = this.component.NAME; return `dx-${componentName.slice(2).toLowerCase()}${className?`-${className}`:""}` } getWidgetContainerClass() { const containerName = "dxDataGrid" === this.component.NAME ? null : "container"; return this.addWidgetPrefix(containerName) } elementIsInsideGrid($element) { const $gridElement = $element.closest(`.${this.getWidgetContainerClass()}`).parent(); return $gridElement.is(this.component.$element()) } } exports.ModuleItem = ModuleItem; class Controller extends ModuleItem {} exports.Controller = Controller; class ViewController extends Controller { getView(name) { return this.component._views[name] } getViews() { return this.component._views } } exports.ViewController = ViewController; class View extends ModuleItem { constructor(component) { super(component); this.renderCompleted = (0, _callbacks.default)(); this.resizeCompleted = (0, _callbacks.default)() } _isReady() { return this.component.isReady() } _endUpdateCore() { super._endUpdateCore(); if (!this._isReady() && this._requireReady) { this._requireRender = false; this.component._requireResize = false } if (this._requireRender) { this._requireRender = false; this.render(this._$parent) } } _invalidate(requireResize, requireReady) { this._requireRender = true; this.component._requireResize = (0, _window.hasWindow)() && (this.component._requireResize || requireResize); this._requireReady = this._requireReady || requireReady } _renderCore(options) {} _resizeCore() {} _parentElement() { return this._$parent } element() { return this._$element } getElementHeight() { const $element = this.element(); if (!$element) { return 0 } const marginTop = parseFloat($element.css("marginTop")) || 0; const marginBottom = parseFloat($element.css("marginBottom")) || 0; const { offsetHeight: offsetHeight } = $element.get(0); return offsetHeight + marginTop + marginBottom } isVisible() { return true } getTemplate(name) { return this.component._getTemplate(name) } getView(name) { return this.component._views[name] } _getBorderedViews() { return { columnHeadersView: this.component._views.columnHeadersView, rowsView: this.component._views.rowsView, filterPanelView: this.component._views.filterPanelView, footerView: this.component._views.footerView } } render($parent, options) { let $element = this._$element; const isVisible = this.isVisible(); if (!$element && !$parent) { return } this._requireReady = false; if (!$element) { $element = this._$element = (0, _renderer.default)("
").appendTo($parent); this._$parent = $parent } $element.toggleClass("dx-hidden", !isVisible); if (this.component._views) { (0, _update_views_borders.updateViewsBorders)(this.name, this._getBorderedViews()) } if (isVisible) { this.component._optionCache = {}; const deferred = this._renderCore(options); this.component._optionCache = void 0; if (deferred) { deferred.done((() => { this.renderCompleted.fire(options) })) } else { this.renderCompleted.fire(options) } } } resize() { this.isResizing = true; this._resizeCore(); this.resizeCompleted.fire(); this.isResizing = false } focus(preventScroll) { this.element().get(0).focus({ preventScroll: preventScroll }) } } exports.View = View; const MODULES_ORDER_MAX_INDEX = 1e6; function getExtendedTypes(types) { let moduleExtenders = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {}; const extendTypes = {}; Object.entries(moduleExtenders).forEach((_ref => { let [name, extender] = _ref; const currentType = types[name]; if (currentType) { if ((0, _type.isFunction)(extender)) { extendTypes[name] = extender(currentType) } else { const classType = currentType; extendTypes[name] = classType.inherit(extender) } } })); return extendTypes } function processModules(componentInstance, componentClass) { const { modules: modules } = componentClass; const { modulesOrder: modulesOrder } = componentClass; function createModuleItems(moduleTypes) { const moduleItems = {}; (0, _iterator.each)(moduleTypes, ((name, moduleType) => { const moduleItem = new moduleType(componentInstance); moduleItem.name = name; ! function(componentInstance, name, moduleItem) { const publicMethods = moduleItem.publicMethods(); if (publicMethods) { (0, _iterator.each)(publicMethods, ((_, methodName) => { if (moduleItem[methodName]) { if (!componentInstance[methodName]) { componentInstance[methodName] = function() { return moduleItem[methodName](...arguments) } } else { throw _ui.default.Error("E1005", methodName) } } else { throw _ui.default.Error("E1006", name, methodName) } })) } }(componentInstance, name, moduleItem); moduleItems[name] = moduleItem })); return moduleItems } if (modulesOrder) { modules.sort(((module1, module2) => { let orderIndex1 = modulesOrder.indexOf(module1.name); let orderIndex2 = modulesOrder.indexOf(module2.name); if (orderIndex1 < 0) { orderIndex1 = MODULES_ORDER_MAX_INDEX } if (orderIndex2 < 0) { orderIndex2 = MODULES_ORDER_MAX_INDEX } return orderIndex1 - orderIndex2 })) } const rootControllerTypes = {}; const rootViewTypes = {}; modules.forEach((_ref2 => { let { name: moduleName, controllers: controllers = {}, views: views = {} } = _ref2; Object.entries(controllers).forEach((_ref3 => { let [name, type] = _ref3; if (rootControllerTypes[name]) { throw _ui.default.Error("E1001", moduleName, name) } else if (!((null === type || void 0 === type ? void 0 : type.prototype) instanceof Controller)) { throw _ui.default.Error("E1002", moduleName, name) } rootControllerTypes[name] = type })); Object.entries(views).forEach((_ref4 => { let [name, type] = _ref4; if (rootViewTypes[name]) { throw _ui.default.Error("E1003", moduleName, name) } else if (!((null === type || void 0 === type ? void 0 : type.prototype) instanceof View)) { throw _ui.default.Error("E1004", moduleName, name) } rootViewTypes[name] = type })) })); const moduleExtenders = modules.filter((_ref5 => { let { extenders: extenders } = _ref5; return !!extenders })); const controllerTypes = moduleExtenders.reduce(((types, _ref6) => { let { extenders: extenders } = _ref6; return _extends({}, types, getExtendedTypes(types, null === extenders || void 0 === extenders ? void 0 : extenders.controllers)) }), rootControllerTypes); const viewTypes = moduleExtenders.reduce(((types, _ref7) => { let { extenders: extenders } = _ref7; return _extends({}, types, getExtendedTypes(types, null === extenders || void 0 === extenders ? void 0 : extenders.views)) }), rootViewTypes); componentInstance._controllers = createModuleItems(controllerTypes); componentInstance._views = createModuleItems(viewTypes) } exports.default = { modules: [], View: View, ViewController: ViewController, Controller: Controller, registerModule(name, module) { const { modules: modules } = this; for (let i = 0; i < modules.length; i++) { if (modules[i].name === name) { return } } module.name = name; modules.push(module) }, registerModulesOrder(moduleNames) { this.modulesOrder = moduleNames }, unregisterModule(name) { this.modules = (0, _common.grep)(this.modules, (module => module.name !== name)) }, processModules: processModules, callModuleItemsMethod: function(that, methodName, args) { args = args || []; if (that._controllers) { (0, _iterator.each)(that._controllers, (function() { this[methodName] && this[methodName].apply(this, args) })) } if (that._views) { (0, _iterator.each)(that._views, (function() { this[methodName] && this[methodName].apply(this, args) })) } } } }, 53226: /*!***********************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/grid_core/m_utils.js ***! \***********************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _events_engine = _interopRequireDefault(__webpack_require__( /*! ../../../common/core/events/core/events_engine */ 92774)); var _data_source = _interopRequireDefault(__webpack_require__( /*! ../../../common/data/data_source */ 14479)); var _utils = __webpack_require__( /*! ../../../common/data/data_source/utils */ 97169); var _utils2 = __webpack_require__( /*! ../../../common/data/utils */ 89358); var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../../core/renderer */ 64553)); var _common = __webpack_require__( /*! ../../../core/utils/common */ 17781); var _data = __webpack_require__( /*! ../../../core/utils/data */ 31e3); var _deferred = __webpack_require__( /*! ../../../core/utils/deferred */ 87739); var _extend = __webpack_require__( /*! ../../../core/utils/extend */ 52576); var _iterator = __webpack_require__( /*! ../../../core/utils/iterator */ 21274); var _position = __webpack_require__( /*! ../../../core/utils/position */ 41639); var _size = __webpack_require__( /*! ../../../core/utils/size */ 57653); var _string = __webpack_require__( /*! ../../../core/utils/string */ 54497); var _type = __webpack_require__( /*! ../../../core/utils/type */ 11528); var _variable_wrapper = _interopRequireDefault(__webpack_require__( /*! ../../../core/utils/variable_wrapper */ 40216)); var _window = __webpack_require__( /*! ../../../core/utils/window */ 3104); var _format_helper = _interopRequireDefault(__webpack_require__( /*! ../../../format_helper */ 2082)); var _load_panel = _interopRequireDefault(__webpack_require__( /*! ../../../ui/load_panel */ 31876)); var _filtering = _interopRequireDefault(__webpack_require__( /*! ../../../ui/shared/filtering */ 56417)); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } function _extends() { return _extends = Object.assign ? Object.assign.bind() : function(n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) { ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]) } } return n }, _extends.apply(null, arguments) } const DATE_INTERVAL_SELECTORS = { year: value => value && value.getFullYear(), month: value => value && value.getMonth() + 1, day: value => value && value.getDate(), quarter: value => value && Math.floor(value.getMonth() / 3) + 1, hour: value => value && value.getHours(), minute: value => value && value.getMinutes(), second: value => value && value.getSeconds() }; const getIntervalSelector = function() { const data = arguments[1]; const value = this.calculateCellValue(data); if (!(0, _type.isDefined)(value)) { return null } if (isDateType(this.dataType)) { const nameIntervalSelector = arguments[0]; return DATE_INTERVAL_SELECTORS[nameIntervalSelector](value) } if ("number" === this.dataType) { const groupInterval = arguments[0]; return Math.floor(Number(value) / groupInterval) * groupInterval } }; const equalSelectors = function(selector1, selector2) { if ((0, _type.isFunction)(selector1) && (0, _type.isFunction)(selector2)) { if (selector1.originalCallback && selector2.originalCallback) { return selector1.originalCallback === selector2.originalCallback && selector1.columnIndex === selector2.columnIndex } } return selector1 === selector2 }; function isDateType(dataType) { return "date" === dataType || "datetime" === dataType } const setEmptyText = function($container) { $container.get(0).textContent = "\xa0" }; const normalizeSortingInfo = function(sort) { sort = sort || []; const result = (0, _utils2.normalizeSortingInfo)(sort); for (let i = 0; i < sort.length; i++) { if (sort && sort[i] && void 0 !== sort[i].isExpanded) { result[i].isExpanded = sort[i].isExpanded } if (sort && sort[i] && void 0 !== sort[i].groupInterval) { result[i].groupInterval = sort[i].groupInterval } } return result }; const formatValue = function(value, options) { const valueText = _format_helper.default.format(value, options.format) || value && value.toString() || ""; const formatObject = { value: value, valueText: options.getDisplayFormat ? options.getDisplayFormat(valueText) : valueText, target: options.target || "row", groupInterval: options.groupInterval }; return options.customizeText ? options.customizeText.call(options, formatObject) : formatObject.valueText }; const getSummaryText = function(summaryItem, summaryTexts) { const displayFormat = summaryItem.displayFormat || summaryItem.columnCaption && summaryTexts[`${summaryItem.summaryType}OtherColumn`] || summaryTexts[summaryItem.summaryType]; return formatValue(summaryItem.value, { format: summaryItem.valueFormat, getDisplayFormat: valueText => displayFormat ? (0, _string.format)(displayFormat, valueText, summaryItem.columnCaption) : valueText, customizeText: summaryItem.customizeText }) }; const getWidgetInstance = function($element) { const editorData = $element.data && $element.data(); const dxComponents = editorData && editorData.dxComponents; const widgetName = dxComponents && dxComponents[0]; return widgetName && editorData[widgetName] }; const equalFilterParameters = function(filter1, filter2, langParams) { if (Array.isArray(filter1) && Array.isArray(filter2)) { if (filter1.length !== filter2.length) { return false } for (let i = 0; i < filter1.length; i++) { if (!equalFilterParameters(filter1[i], filter2[i], langParams)) { return false } } return true } if ((0, _type.isFunction)(filter1) && filter1.columnIndex >= 0 && (0, _type.isFunction)(filter2) && filter2.columnIndex >= 0) { return filter1.columnIndex === filter2.columnIndex && (0, _data.toComparable)(filter1.filterValue, void 0, langParams) === (0, _data.toComparable)(filter2.filterValue, void 0, langParams) && (0, _data.toComparable)(filter1.selectedFilterOperation, void 0, langParams) === (0, _data.toComparable)(filter2.selectedFilterOperation, void 0, langParams) } return (0, _data.toComparable)(filter1, void 0, langParams) == (0, _data.toComparable)(filter2, void 0, langParams) }; const addPointIfNeed = (points, pointProps, pointCreated) => { let notCreatePoint = false; if (pointCreated) { notCreatePoint = pointCreated(pointProps) } if (!notCreatePoint) { const point = (options = pointProps, { index: options.index, columnIndex: options.columnIndex, x: options.x, y: options.y }); points.push(point) } var options }; exports.default = { renderNoDataText($element) { const that = this; $element = $element || this.element(); if (!$element) { return } const noDataClass = that.addWidgetPrefix("nodata"); let noDataElement = $element.find(`.${noDataClass}`).last(); const isVisible = this._dataController.isEmpty(); const isLoading = this._dataController.isLoading(); if (!noDataElement.length) { noDataElement = (0, _renderer.default)("").addClass(noDataClass) } if (!noDataElement.parent().is($element)) { noDataElement.appendTo($element) } if (isVisible && !isLoading) { noDataElement.removeClass("dx-hidden").text(that._getNoDataText()) } else { noDataElement.addClass("dx-hidden") } }, renderLoadPanel($element, $container, isLocalStore) { const that = this; let loadPanelOptions; that._loadPanel && that._loadPanel.$element().remove(); loadPanelOptions = that.option("loadPanel"); if (loadPanelOptions && ("auto" === loadPanelOptions.enabled ? !isLocalStore : loadPanelOptions.enabled)) { loadPanelOptions = (0, _extend.extend)({ shading: false, message: loadPanelOptions.text, container: $container }, loadPanelOptions); that._loadPanel = that._createComponent((0, _renderer.default)("
").appendTo($container), _load_panel.default, loadPanelOptions) } else { that._loadPanel = null } }, calculateLoadPanelPosition($element) { const $window = (0, _renderer.default)((0, _window.getWindow)()); if ((0, _size.getHeight)($element) > (0, _size.getHeight)($window)) { return { of: $window, boundary: $element, collision: "fit" } } return { of: $element } }, getIndexByKey(key, items, keyName) { let index = -1; if (void 0 !== key && Array.isArray(items)) { keyName = arguments.length <= 2 ? "key" : keyName; for (let i = 0; i < items.length; i++) { const item = (0, _type.isDefined)(keyName) ? items[i][keyName] : items[i]; if ((0, _common.equalByValue)(key, item)) { index = i; break } } } return index }, combineFilters(filters, operation) { let resultFilter = []; operation = operation || "and"; for (let i = 0; i < filters.length; i++) { var _filters$i; if (!filters[i]) { continue } if (1 === (null === (_filters$i = filters[i]) || void 0 === _filters$i ? void 0 : _filters$i.length) && "!" === filters[i][0]) { if ("and" === operation) { return ["!"] } if ("or" === operation) { continue } } if (resultFilter.length) { resultFilter.push(operation) } resultFilter.push(filters[i]) } if (1 === resultFilter.length) { resultFilter = resultFilter[0] } if (resultFilter.length) { return resultFilter } return }, checkChanges(changes, changeNames) { let changesWithChangeNamesCount = 0; for (let i = 0; i < changeNames.length; i++) { if (changes[changeNames[i]]) { changesWithChangeNamesCount++ } } return changes.length && changes.length === changesWithChangeNamesCount }, equalFilterParameters: equalFilterParameters, proxyMethod(instance, methodName, defaultResult) { if (!instance[methodName]) { instance[methodName] = function() { const dataSource = this._dataSource; return dataSource ? dataSource[methodName].apply(dataSource, arguments) : defaultResult } } }, formatValue: formatValue, getFormatOptionsByColumn: (column, target) => ({ format: column.format, getDisplayFormat: column.getDisplayFormat, customizeText: column.customizeText, target: target, trueText: column.trueText, falseText: column.falseText }), getDisplayValue(column, value, data, rowType) { if (column.displayValueMap && void 0 !== column.displayValueMap[value]) { return column.displayValueMap[value] } if (column.calculateDisplayValue && data && "group" !== rowType) { return column.calculateDisplayValue(data) } if (column.lookup && !("group" === rowType && (column.calculateGroupValue || column.calculateDisplayValue))) { return column.lookup.calculateCellValue(value) } return value }, getGroupRowSummaryText(summaryItems, summaryTexts) { let result = "("; for (let i = 0; i < summaryItems.length; i++) { const summaryItem = summaryItems[i]; result += (i > 0 ? ", " : "") + getSummaryText(summaryItem, summaryTexts) } return result + ")" }, getSummaryText: getSummaryText, normalizeSortingInfo: normalizeSortingInfo, getFormatByDataType(dataType) { switch (dataType) { case "date": return "shortDate"; case "datetime": return "shortDateShortTime"; default: return } }, getHeaderFilterGroupParameters(column, remoteGrouping) { let result = []; const dataField = column.dataField || column.name; const groupInterval = _filtering.default.getGroupInterval(column); if (groupInterval) { (0, _iterator.each)(groupInterval, ((index, interval) => { result.push(remoteGrouping ? { selector: dataField, groupInterval: interval, isExpanded: index < groupInterval.length - 1 } : getIntervalSelector.bind(column, interval)) })); return result } if (remoteGrouping) { result = [{ selector: dataField, isExpanded: false }] } else { result = function(data) { let result = column.calculateCellValue(data); if (void 0 === result || "" === result) { result = null } return result }; if (column.sortingMethod) { result = [{ selector: result, compare: column.sortingMethod.bind(column) }] } } return result }, equalSortParameters(sortParameters1, sortParameters2, ignoreIsExpanded) { sortParameters1 = normalizeSortingInfo(sortParameters1); sortParameters2 = normalizeSortingInfo(sortParameters2); if (Array.isArray(sortParameters1) && Array.isArray(sortParameters2)) { if (sortParameters1.length !== sortParameters2.length) { return false } for (let i = 0; i < sortParameters1.length; i++) { if (!equalSelectors(sortParameters1[i].selector, sortParameters2[i].selector) || sortParameters1[i].desc !== sortParameters2[i].desc || sortParameters1[i].groupInterval !== sortParameters2[i].groupInterval || !ignoreIsExpanded && Boolean(sortParameters1[i].isExpanded) !== Boolean(sortParameters2[i].isExpanded)) { return false } } return true } return (!sortParameters1 || !sortParameters1.length) === (!sortParameters2 || !sortParameters2.length) }, getPointsByColumns(items, pointCreated) { let isVertical = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : false; let startColumnIndex = arguments.length > 3 && void 0 !== arguments[3] ? arguments[3] : 0; let needToCheckPrevPoint = arguments.length > 4 && void 0 !== arguments[4] ? arguments[4] : false; const result = []; const cellsLength = items.length; let $item; let offset = { left: 0, top: 0 }; let itemRect = { width: 0, height: 0 }; let columnIndex = startColumnIndex; let rtlEnabled; for (let i = 0; i <= cellsLength; i++) { var _$item; if (i < cellsLength) { $item = items.eq(i); offset = $item.offset(); itemRect = (0, _position.getBoundingRect)($item.get(0)); rtlEnabled = "rtl" === $item.css("direction") } const offsetRight = offset.left + itemRect.width; const offsetBottom = offset.top + itemRect.height; const pointProps = { index: columnIndex, columnIndex: columnIndex, item: null === (_$item = $item) || void 0 === _$item ? void 0 : _$item.get(0), x: !isVertical && rtlEnabled !== (i === cellsLength) ? offsetRight : offset.left, y: isVertical && i === cellsLength ? offsetBottom : offset.top }; if (!isVertical && i > 0) { const prevItemOffset = items.eq(i - 1).offset(); const { width: prevItemWidth } = (0, _position.getBoundingRect)(items[i - 1]); const prevItemOffsetX = rtlEnabled ? prevItemOffset.left : prevItemOffset.left + prevItemWidth; if (prevItemOffset.top < pointProps.y) { pointProps.y = prevItemOffset.top } if (needToCheckPrevPoint && Math.round(prevItemOffsetX) !== Math.round(pointProps.x)) { const prevPointProps = _extends({}, pointProps, { item: items[i - 1], x: prevItemOffsetX }); if (rtlEnabled) { pointProps.isRightBoundary = true; prevPointProps.isLeftBoundary = true } else { pointProps.isLeftBoundary = true; prevPointProps.isRightBoundary = true } addPointIfNeed(result, prevPointProps, pointCreated) } } addPointIfNeed(result, pointProps, pointCreated); columnIndex++ } return result }, getExpandCellTemplate: () => ({ allowRenderToDetachedContainer: true, render(container, options) { const $container = (0, _renderer.default)(container); if ((0, _type.isDefined)(options.value) && !(options.data && options.data.isContinuation) && !options.row.isNewRow) { const rowsView = options.component.getView("rowsView"); $container.addClass("dx-datagrid-expand").addClass("dx-selection-disabled"); (0, _renderer.default)("
").addClass(options.value ? "dx-datagrid-group-opened" : "dx-datagrid-group-closed").appendTo($container); rowsView.setAria("label", options.value ? rowsView.localize("dxDataGrid-ariaCollapse") : rowsView.localize("dxDataGrid-ariaExpand"), $container) } else { setEmptyText($container) } } }), setEmptyText: setEmptyText, isDateType: isDateType, getSelectionRange(focusedElement) { try { if (focusedElement) { return { selectionStart: focusedElement.selectionStart, selectionEnd: focusedElement.selectionEnd } } } catch (e) {} return {} }, setSelectionRange(focusedElement, selectionRange) { try { if (focusedElement && focusedElement.setSelectionRange) { focusedElement.setSelectionRange(selectionRange.selectionStart, selectionRange.selectionEnd) } } catch (e) {} }, focusAndSelectElement(component, $element) { const isFocused = $element.is(":focus"); _events_engine.default.trigger($element, "focus"); const isSelectTextOnEditingStart = component.option("editing.selectTextOnEditStart"); const element = $element.get(0); if (!isFocused && isSelectTextOnEditingStart && $element.is(".dx-texteditor-input") && !$element.is("[readonly]")) { const editor = getWidgetInstance($element.closest(".dx-texteditor")); (0, _deferred.when)(editor && editor._loadItemDeferred).done((() => { element.select() })) } }, getWidgetInstance: getWidgetInstance, getLastResizableColumnIndex(columns, resultWidths) { const hasResizableColumns = columns.some((column => column && !column.command && !column.fixed && false !== column.allowResizing)); let lastColumnIndex; for (lastColumnIndex = columns.length - 1; columns[lastColumnIndex]; lastColumnIndex--) { const column = columns[lastColumnIndex]; const width = resultWidths && resultWidths[lastColumnIndex]; const allowResizing = !hasResizableColumns || false !== column.allowResizing; if (!column.command && !column.fixed && "adaptiveHidden" !== width && allowResizing) { break } } return lastColumnIndex }, isElementInCurrentGrid(controller, $element) { if ($element && $element.length) { const $grid = $element.closest(`.${controller.getWidgetContainerClass()}`).parent(); return $grid.is(controller.component.$element()) } return false }, isVirtualRowRendering(that) { const rowRenderingMode = that.option("scrolling.rowRenderingMode"); const isVirtualMode = "virtual" === that.option("scrolling.mode"); const isAppendMode = "infinite" === that.option("scrolling.mode"); if (false === that.option("scrolling.legacyMode") && (isVirtualMode || isAppendMode)) { return true } return "virtual" === rowRenderingMode }, getPixelRatio: window => window.devicePixelRatio || 1, getContentHeightLimit(browser) { if (browser.mozilla) { return 8e6 } return 15e6 / this.getPixelRatio((0, _window.getWindow)()) }, normalizeLookupDataSource(lookup) { let lookupDataSourceOptions; if (lookup.items) { lookupDataSourceOptions = lookup.items } else { lookupDataSourceOptions = lookup.dataSource; if ((0, _type.isFunction)(lookupDataSourceOptions) && !_variable_wrapper.default.isWrapped(lookupDataSourceOptions)) { lookupDataSourceOptions = lookupDataSourceOptions({}) } } return (0, _utils.normalizeDataSourceOptions)(lookupDataSourceOptions) }, getWrappedLookupDataSource(column, dataSource, filter) { if (!dataSource) { return [] } const lookupDataSourceOptions = this.normalizeLookupDataSource(column.lookup); if (column.calculateCellValue !== column.defaultCalculateCellValue) { return lookupDataSourceOptions } const hasGroupPaging = dataSource.remoteOperations().groupPaging; const hasLookupOptimization = column.displayField && (0, _type.isString)(column.displayField); let cachedUniqueRelevantItems; let previousTake; let previousSkip; const sliceItems = (items, loadOptions) => { const start = loadOptions.skip ?? 0; const end = loadOptions.take ? start + loadOptions.take : items.length; return items.slice(start, end) }; const loadUniqueRelevantItems = loadOptions => { const group = function(group) { if (!Array.isArray(group)) { group = [group] } return group.map(((item, i) => { if ((0, _type.isString)(item)) { return { selector: item, isExpanded: i < group.length - 1 } } return item })) }(hasLookupOptimization ? [column.dataField, column.displayField] : column.dataField); const d = new _deferred.Deferred; const canUseCache = cachedUniqueRelevantItems && (!hasGroupPaging || loadOptions.skip === previousSkip && loadOptions.take === previousTake); if (canUseCache) { d.resolve(sliceItems(cachedUniqueRelevantItems, loadOptions)) } else { previousSkip = loadOptions.skip; previousTake = loadOptions.take; dataSource.load({ filter: filter, group: group, take: hasGroupPaging ? loadOptions.take : void 0, skip: hasGroupPaging ? loadOptions.skip : void 0 }).done((items => { cachedUniqueRelevantItems = items; d.resolve(hasGroupPaging ? items : sliceItems(items, loadOptions)) })).fail(d.fail) } return d }; const lookupDataSource = _extends({}, lookupDataSourceOptions, { __dataGridSourceFilter: filter, load: loadOptions => { const d = new _deferred.Deferred; loadUniqueRelevantItems(loadOptions).done((items => { if (0 === items.length) { d.resolve([]); return } const filter = this.combineFilters(items.flatMap((data => data.key)).map((key => [column.lookup.valueExpr, key])), "or"); const newDataSource = new _data_source.default(_extends({}, lookupDataSourceOptions, loadOptions, { filter: this.combineFilters([filter, loadOptions.filter], "and"), paginate: false })); newDataSource.load().done(d.resolve).fail(d.fail) })).fail(d.fail); return d }, key: column.lookup.valueExpr, byKey(key) { const d = (0, _deferred.Deferred)(); this.load({ filter: [column.lookup.valueExpr, "=", key] }).done((arr => { d.resolve(arr[0]) })); return d.promise() } }); return lookupDataSource }, logHeaderFilterDeprecatedWarningIfNeed(component) { const logWarning = component._logDeprecatedOptionWarning.bind(component); if ((0, _type.isDefined)(component.option("headerFilter.allowSearch"))) { logWarning("headerFilter.allowSearch", { since: "23.1", alias: "headerFilter.search.enabled" }) } if ((0, _type.isDefined)(component.option("headerFilter.searchTimeout"))) { logWarning("headerFilter.searchTimeout", { since: "23.1", alias: "headerFilter.search.timeout" }) } const specificName = "dxPivotGrid" === component.NAME ? "dataSource.fields" : "columns"; const columns = component.option(specificName); if (!Array.isArray(columns)) { return } const logSpecificDeprecatedWarningIfNeed = columns => { columns.forEach((column => { var _column$columns; const headerFilter = column.headerFilter || {}; if ((0, _type.isDefined)(headerFilter.allowSearch)) { logWarning(`${specificName}[].headerFilter.allowSearch`, { since: "23.1", alias: `${specificName}[].headerFilter.search.enabled` }) } if ((0, _type.isDefined)(headerFilter.searchMode)) { logWarning(`${specificName}[].headerFilter.searchMode`, { since: "23.1", alias: `${specificName}[].headerFilter.search.mode` }) } if (null !== (_column$columns = column.columns) && void 0 !== _column$columns && _column$columns.length) { logSpecificDeprecatedWarningIfNeed(column.columns) } })) }; logSpecificDeprecatedWarningIfNeed(columns) }, getComponentBorderWidth(that, $rowsViewElement) { const borderWidth = that.option("showBorders") ? Math.ceil((0, _size.getOuterWidth)($rowsViewElement) - (0, _size.getInnerWidth)($rowsViewElement)) : 0; return borderWidth }, isCustomCommandColumn(columns, commandColumn) { const customCommandColumns = columns.filter((column => column.type === commandColumn.type)); return !!customCommandColumns.length } } }, 99335: /*!*****************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/grid_core/m_widget_base.js ***! \*****************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _common = __webpack_require__( /*! ../../../core/utils/common */ 17781); var _extend = __webpack_require__( /*! ../../../core/utils/extend */ 52576); var _iterator = __webpack_require__( /*! ../../../core/utils/iterator */ 21274); var _type = __webpack_require__( /*! ../../../core/utils/type */ 11528); var _ui = (e = __webpack_require__( /*! ../../../ui/widget/ui.widget */ 11118), e && e.__esModule ? e : { default: e }); var e; class GridCoreWidget extends _ui.default { _getDefaultOptions() { const result = super._getDefaultOptions(); (0, _iterator.each)(this.getGridCoreHelper().modules, (function() { if ((0, _type.isFunction)(this.defaultOptions)) { (0, _extend.extend)(true, result, this.defaultOptions()) } })); return result } _init() { this._activeStateUnit = ".dx-row"; super._init() } _setDeprecatedOptions() { super._setDeprecatedOptions(); (0, _extend.extend)(this._deprecatedOptions, { "columnChooser.allowSearch": { since: "23.1", message: 'Use the "columnChooser.search.enabled" option instead' }, "columnChooser.searchTimeout": { since: "23.1", message: 'Use the "columnChooser.search.timeout" option instead' } }) } _clean() {} _optionChanged(args) { this.getGridCoreHelper().callModuleItemsMethod(this, "optionChanged", [args]); if (!args.handled) { super._optionChanged(args) } } _dimensionChanged() { this.updateDimensions(true) } _visibilityChanged(visible) { if (visible) { this.updateDimensions() } } _renderContentImpl() { this.getView("gridView").update() } _renderContent() { const that = this; (0, _common.deferRender)((() => { that._renderContentImpl() })) } _dispose() { super._dispose(); this.getGridCoreHelper().callModuleItemsMethod(this, "dispose") } isReady() { return this.getController("data").isReady() } getController(name) { return this._controllers[name] } getView(name) { return this._views[name] } getGridCoreHelper() {} beginUpdate() { super.beginUpdate(); this.getGridCoreHelper().callModuleItemsMethod(this, "beginUpdate") } endUpdate() { this.getGridCoreHelper().callModuleItemsMethod(this, "endUpdate"); super.endUpdate() } } exports.default = GridCoreWidget }, 9649: /*!***********************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/grid_core/master_detail/const.js ***! \***********************************************************************************************/ function(__unused_webpack_module, exports) { Object.defineProperty(exports, "__esModule", { value: true }); exports.CLASSES = void 0; exports.CLASSES = { detailRow: "dx-master-detail-row" } }, 11052: /*!*********************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/grid_core/master_detail/m_master_detail.js ***! \*********************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.masterDetailModule = exports.dataMasterDetailExtenderMixin = void 0; var _message = _interopRequireDefault(__webpack_require__( /*! ../../../../common/core/localization/message */ 4671)); var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../../../core/renderer */ 64553)); var _common = __webpack_require__( /*! ../../../../core/utils/common */ 17781); var _deferred = __webpack_require__( /*! ../../../../core/utils/deferred */ 87739); var _iterator = __webpack_require__( /*! ../../../../core/utils/iterator */ 21274); var _size = __webpack_require__( /*! ../../../../core/utils/size */ 57653); var _type = __webpack_require__( /*! ../../../../core/utils/type */ 11528); var _m_utils = _interopRequireDefault(__webpack_require__( /*! ../m_utils */ 53226)); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } const initMasterDetail = function(that) { that._expandedItems = []; that._isExpandAll = that.option("masterDetail.autoExpandAll") }; const dataMasterDetailExtenderMixin = Base => class extends Base { init() { initMasterDetail(this); super.init() } expandAll(groupIndex) { const that = this; if (groupIndex < 0) { that._isExpandAll = true; that._expandedItems = []; that.updateItems() } else { super.expandAll.apply(that, arguments) } } collapseAll(groupIndex) { const that = this; if (groupIndex < 0) { that._isExpandAll = false; that._expandedItems = []; that.updateItems() } else { super.collapseAll.apply(that, arguments) } } isRowExpandedHack() { return super.isRowExpanded.apply(this, arguments) } isRowExpanded(key) { const that = this; const expandIndex = _m_utils.default.getIndexByKey(key, that._expandedItems); if (Array.isArray(key)) { return super.isRowExpanded.apply(that, arguments) } return !!(that._isExpandAll ^ (expandIndex >= 0 && that._expandedItems[expandIndex].visible)) } _getRowIndicesForExpand(key) { const rowIndex = this.getRowIndexByKey(key); return [rowIndex, rowIndex + 1] } _changeRowExpandCore(key) { const that = this; let result; if (Array.isArray(key)) { result = super._changeRowExpandCore.apply(that, arguments) } else { const expandIndex = _m_utils.default.getIndexByKey(key, that._expandedItems); if (expandIndex >= 0) { const { visible: visible } = that._expandedItems[expandIndex]; that._expandedItems[expandIndex].visible = !visible } else { that._expandedItems.push({ key: key, visible: true }) } that.updateItems({ changeType: "update", rowIndices: that._getRowIndicesForExpand(key) }); result = (new _deferred.Deferred).resolve() } return result } _processDataItemHack() { return super._processDataItem.apply(this, arguments) } _processDataItem(data, options) { const dataItem = super._processDataItem.apply(this, arguments); dataItem.isExpanded = this.isRowExpanded(dataItem.key); if (void 0 === options.detailColumnIndex) { options.detailColumnIndex = -1; (0, _iterator.each)(options.visibleColumns, ((index, column) => { if ("expand" === column.command && !(0, _type.isDefined)(column.groupIndex)) { options.detailColumnIndex = index; return false } return })) } if (options.detailColumnIndex >= 0) { dataItem.values[options.detailColumnIndex] = dataItem.isExpanded } return dataItem } _processItemsHack() { return super._processItems.apply(this, arguments) } _processItems(items, change) { const that = this; const { changeType: changeType } = change; const result = []; items = super._processItems.apply(that, arguments); if ("loadingAll" === changeType) { return items } if ("refresh" === changeType) { that._expandedItems = (0, _common.grep)(that._expandedItems, (item => item.visible)) }(0, _iterator.each)(items, ((index, item) => { result.push(item); const expandIndex = _m_utils.default.getIndexByKey(item.key, that._expandedItems); if ("data" === item.rowType && (item.isExpanded || expandIndex >= 0) && !item.isNewRow) { result.push({ visible: item.isExpanded, rowType: "detail", key: item.key, data: item.data, values: [] }) } })); return result } optionChanged(args) { const that = this; let isEnabledChanged; let isAutoExpandAllChanged; if ("masterDetail" === args.name) { args.name = "dataSource"; switch (args.fullName) { case "masterDetail": { const value = args.value || {}; const previousValue = args.previousValue || {}; isEnabledChanged = value.enabled !== previousValue.enabled; isAutoExpandAllChanged = value.autoExpandAll !== previousValue.autoExpandAll; break } case "masterDetail.template": initMasterDetail(that); break; case "masterDetail.enabled": isEnabledChanged = true; break; case "masterDetail.autoExpandAll": isAutoExpandAllChanged = true } if (isEnabledChanged || isAutoExpandAllChanged) { initMasterDetail(that) } } super.optionChanged(args) } }; exports.dataMasterDetailExtenderMixin = dataMasterDetailExtenderMixin; exports.masterDetailModule = { defaultOptions: () => ({ masterDetail: { enabled: false, autoExpandAll: false, template: null } }), extenders: { controllers: { columns: Base => class extends Base { _getExpandColumnsCore() { const expandColumns = super._getExpandColumnsCore(); if (this.option("masterDetail.enabled")) { expandColumns.push({ type: "detailExpand", cellTemplate: _m_utils.default.getExpandCellTemplate() }) } return expandColumns } }, data: dataMasterDetailExtenderMixin, resizing: Base => class extends Base { fireContentReadyAction() { super.fireContentReadyAction.apply(this, arguments); this._updateParentDataGrids(this.component.$element()) } _updateParentDataGrids($element) { const $masterDetailRow = $element.closest(".dx-master-detail-row"); if ($masterDetailRow.length) { (0, _deferred.when)(this._updateMasterDataGrid($masterDetailRow, $element)).done((() => { this._updateParentDataGrids($masterDetailRow.parent()) })) } } _updateMasterDataGrid($masterDetailRow, $detailElement) { const masterRowOptions = (0, _renderer.default)($masterDetailRow).data("options"); const masterDataGrid = (0, _renderer.default)($masterDetailRow).closest(`.${this.getWidgetContainerClass()}`).parent().data("dxDataGrid"); if (masterRowOptions && masterDataGrid) { return this._updateMasterDataGridCore(masterDataGrid, masterRowOptions) } return } _updateMasterDataGridCore(masterDataGrid, masterRowOptions) { var _masterDataGrid$getVi, _masterDataGrid$getVi2; const d = (0, _deferred.Deferred)(); if (null !== (_masterDataGrid$getVi = masterDataGrid.getView("rowsView")) && void 0 !== _masterDataGrid$getVi && null !== (_masterDataGrid$getVi2 = _masterDataGrid$getVi.isFixedColumns) && void 0 !== _masterDataGrid$getVi2 && _masterDataGrid$getVi2.call(_masterDataGrid$getVi)) { this._updateFixedMasterDetailGrids(masterDataGrid, masterRowOptions.rowIndex, (0, _renderer.default)(masterRowOptions.rowElement)).done(d.resolve) } else { if (true === masterDataGrid.option("scrolling.useNative")) { masterDataGrid.updateDimensions().done((() => d.resolve(true))); return } const scrollable = masterDataGrid.getScrollable(); if (scrollable) { null === scrollable || void 0 === scrollable || scrollable.update().done((() => d.resolve())) } else { d.resolve() } } return d.promise() } _updateFixedMasterDetailGrids(masterDataGrid, masterRowIndex, $detailElement) { const d = (0, _deferred.Deferred)(); const $rows = (0, _renderer.default)(masterDataGrid.getRowElement(masterRowIndex)); const $tables = (0, _renderer.default)(masterDataGrid.getView("rowsView").getTableElements()); const rowsNotEqual = 2 === (null === $rows || void 0 === $rows ? void 0 : $rows.length) && (0, _size.getHeight)($rows.eq(0)) !== (0, _size.getHeight)($rows.eq(1)); const tablesNotEqual = 2 === (null === $tables || void 0 === $tables ? void 0 : $tables.length) && (0, _size.getHeight)($tables.eq(0)) !== (0, _size.getHeight)($tables.eq(1)); if (rowsNotEqual || tablesNotEqual) { const detailElementWidth = (0, _size.getWidth)($detailElement); masterDataGrid.updateDimensions().done((() => { const isDetailHorizontalScrollCanBeShown = this.option("columnAutoWidth") && true === masterDataGrid.option("scrolling.useNative"); const isDetailGridWidthChanged = isDetailHorizontalScrollCanBeShown && detailElementWidth !== (0, _size.getWidth)($detailElement); if (isDetailHorizontalScrollCanBeShown && isDetailGridWidthChanged) { this.updateDimensions().done((() => d.resolve(true))) } else { d.resolve(true) } })); return d.promise() } return (0, _deferred.Deferred)().resolve() } _toggleBestFitMode(isBestFit) { super._toggleBestFitMode.apply(this, arguments); if (this.option("masterDetail.template")) { const $rowsTable = this._rowsView.getTableElement(); if ($rowsTable) { $rowsTable.find(".dx-master-detail-cell").css("maxWidth", isBestFit ? 0 : "") } } } } }, views: { rowsView: Base => class extends Base { _getCellTemplate(options) { const that = this; const { column: column } = options; const editingController = this._editingController; const isEditRow = editingController && editingController.isEditRow(options.rowIndex); let template; if ("detail" === column.command && !isEditRow) { template = that.option("masterDetail.template") || { allowRenderToDetachedContainer: false, render: that._getDefaultTemplate(column) } } else { template = super._getCellTemplate.apply(that, arguments) } return template } _isDetailRow(row) { return (null === row || void 0 === row ? void 0 : row.rowType) && 0 === row.rowType.indexOf("detail") } _createRow(row) { const $row = super._createRow.apply(this, arguments); if (row && this._isDetailRow(row)) { this.option("showRowLines") && $row.addClass("dx-row-lines"); $row.addClass("dx-master-detail-row"); if ((0, _type.isDefined)(row.visible)) { $row.toggle(row.visible) } } return $row } _renderCells($row, options) { const { row: row } = options; if (row.rowType && this._isDetailRow(row)) { if (this._needRenderCell(0, options.columnIndices)) { this._renderMasterDetailCell($row, row, options) } } else { super._renderCells.apply(this, arguments) } } _renderMasterDetailCell($row, row, options) { const visibleColumns = this._columnsController.getVisibleColumns(); const $detailCell = this._renderCell($row, { value: null, row: row, rowIndex: row.rowIndex, column: { command: "detail" }, columnIndex: 0, change: options.change }); $detailCell.addClass("dx-cell-focus-disabled").addClass("dx-master-detail-cell").attr("colSpan", visibleColumns.length); const isEditForm = row.isEditing; if (!isEditForm) { $detailCell.attr("aria-roledescription", _message.default.format("dxDataGrid-masterDetail")) } return $detailCell } } } } } }, 66040: /*!*****************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/grid_core/pager/m_pager.js ***! \*****************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.pagerModule = exports.PagerView = exports.MAX_PAGES_COUNT = void 0; var _message = _interopRequireDefault(__webpack_require__( /*! ../../../../common/core/localization/message */ 4671)); var _type = __webpack_require__( /*! ../../../../core/utils/type */ 11528); var _window = __webpack_require__( /*! ../../../../core/utils/window */ 3104); var _pagination = _interopRequireDefault(__webpack_require__( /*! ../../../pagination/wrappers/pagination */ 76988)); var _m_modules = _interopRequireDefault(__webpack_require__( /*! ../m_modules */ 74854)); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } const MAX_PAGES_COUNT = exports.MAX_PAGES_COUNT = 10; const getPageIndex = function(dataController) { return 1 + (parseInt(dataController.pageIndex()) || 0) }; class PagerView extends _m_modules.default.View { init() { const dataController = this.getController("data"); dataController.changed.add((e => { if (e && e.repaintChangesOnly) { const pager = this._pager; if (pager) { pager.option({ pageIndex: getPageIndex(dataController), pageSize: dataController.pageSize(), pageCount: dataController.pageCount(), itemCount: dataController.totalCount(), hasKnownLastPage: dataController.hasKnownLastPage() }) } else { this.render() } } else if (!e || "update" !== e.changeType && "updateSelection" !== e.changeType && "updateFocusedRow" !== e.changeType) { this._pager = null; this.render() } })) } dispose() { this._pager = null } optionChanged(args) { const { name: name } = args; const isPager = "pager" === name; const isPaging = "paging" === name; const isDataSource = "dataSource" === name; const isScrolling = "scrolling" === name; const dataController = this.getController("data"); if (isPager || isPaging || isScrolling || isDataSource) { args.handled = true; if (dataController.skipProcessingPagingChange(args.fullName)) { return } if (isPager || isPaging) { this._pageSizes = null } if (!isDataSource) { this._pager = null; this._invalidate(); if ((0, _window.hasWindow)() && isPager && this.component) { this.component.resize() } } } } _renderCore() { const that = this; const $element = that.element().addClass(that.addWidgetPrefix("pager")); const pagerOptions = that.option("pager") ?? {}; const dataController = that.getController("data"); const keyboardController = that.getController("keyboardNavigation"); const options = { maxPagesCount: MAX_PAGES_COUNT, pageIndex: getPageIndex(dataController), pageCount: dataController.pageCount(), pageSize: dataController.pageSize(), showPageSizeSelector: pagerOptions.showPageSizeSelector, showInfo: pagerOptions.showInfo, displayMode: pagerOptions.displayMode, pagesNavigatorVisible: pagerOptions.visible, showNavigationButtons: pagerOptions.showNavigationButtons, label: pagerOptions.label, allowedPageSizes: that.getPageSizes(), itemCount: dataController.totalCount(), hasKnownLastPage: dataController.hasKnownLastPage(), rtlEnabled: that.option("rtlEnabled"), isGridCompatibilityMode: true, _getParentComponentRootNode: () => this.component.element(), _skipValidation: true, pageIndexChanged(pageIndex) { if (dataController.pageIndex() !== pageIndex - 1) { dataController.pageIndex(pageIndex - 1) } }, pageSizeChanged(pageSize) { dataController.pageSize(pageSize) }, onKeyDown: e => keyboardController && keyboardController.executeAction("onKeyDown", e) }; if ((0, _type.isDefined)(pagerOptions.infoText)) { options.infoText = pagerOptions.infoText } if (this._pager) { this._pager.repaint(); return } if ((0, _window.hasWindow)()) { this._pager = that._createComponent($element, _pagination.default, options) } else { $element.addClass("dx-pager").html('
') } } getPager() { return this._pager } getPageSizes() { const that = this; const dataController = that.getController("data"); const pagerOptions = that.option("pager"); const allowedPageSizes = pagerOptions && pagerOptions.allowedPageSizes; const pageSize = dataController.pageSize(); if (!(0, _type.isDefined)(that._pageSizes) || !that._pageSizes.includes(pageSize)) { that._pageSizes = []; if (pagerOptions) { if (Array.isArray(allowedPageSizes)) { that._pageSizes = allowedPageSizes } else if (allowedPageSizes && pageSize > 1) { that._pageSizes = [Math.floor(pageSize / 2), pageSize, 2 * pageSize] } } } return that._pageSizes } isVisible() { const dataController = this.getController("data"); const pagerOptions = this.option("pager"); let pagerVisible = pagerOptions && pagerOptions.visible; const scrolling = this.option("scrolling"); if ("auto" === pagerVisible) { if (scrolling && ("virtual" === scrolling.mode || "infinite" === scrolling.mode)) { pagerVisible = false } else { pagerVisible = dataController.pageCount() > 1 || dataController.isLoaded() && !dataController.hasKnownLastPage() } } return !!pagerVisible } getHeight() { return this.getElementHeight() } } exports.PagerView = PagerView; exports.pagerModule = { defaultOptions: () => ({ pager: { visible: "auto", showPageSizeSelector: false, allowedPageSizes: "auto", label: _message.default.format("dxPager-ariaLabel") } }), views: { pagerView: PagerView } } }, 88199: /*!**********************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/grid_core/row_dragging/const.js ***! \**********************************************************************************************/ function(__unused_webpack_module, exports) { Object.defineProperty(exports, "__esModule", { value: true }); exports.CLASSES = exports.ATTRIBUTES = void 0; exports.ATTRIBUTES = { dragCell: "dx-drag-cell" }; exports.CLASSES = { cellFocusDisabled: "dx-cell-focus-disabled", handleIcon: "drag-icon", commandDrag: "dx-command-drag", sortableWithoutHandle: "dx-sortable-without-handle", rowsView: "rowsview", dragView: "dragview" } }, 84700: /*!********************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/grid_core/row_dragging/dom.js ***! \********************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.GridCoreRowDraggingDom = void 0; var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../../../core/renderer */ 64553)); var _m_utils = _interopRequireDefault(__webpack_require__( /*! ../m_utils */ 53226)); var _const = __webpack_require__( /*! ./const */ 88199); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } exports.GridCoreRowDraggingDom = { createHandleTemplateFunc: addWidgetPrefix => (container, options) => { const $container = (0, _renderer.default)(container); if ("data" === options.rowType) { $container.addClass(_const.CLASSES.cellFocusDisabled); return (0, _renderer.default)("").addClass(addWidgetPrefix(_const.CLASSES.handleIcon)) } _m_utils.default.setEmptyText($container); return } } }, 52714: /*!*******************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/grid_core/row_dragging/m_row_dragging.js ***! \*******************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.rowDraggingModule = void 0; var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../../../core/../core/renderer */ 64553)); var _extend = __webpack_require__( /*! ../../../../core/../core/utils/extend */ 52576); var _common = __webpack_require__( /*! ../../../../core/utils/common */ 17781); var _size = __webpack_require__( /*! ../../../../core/utils/size */ 57653); var _type = __webpack_require__( /*! ../../../../core/utils/type */ 11528); var _sortable = _interopRequireDefault(__webpack_require__( /*! ../../../../ui/sortable */ 95305)); var _m_utils = _interopRequireDefault(__webpack_require__( /*! ../m_utils */ 53226)); var _const = __webpack_require__( /*! ./const */ 88199); var _dom = __webpack_require__( /*! ./dom */ 84700); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } exports.rowDraggingModule = { defaultOptions: () => ({ rowDragging: { showDragIcons: true, dropFeedbackMode: "indicate", allowReordering: false, allowDropInsideItem: false } }), extenders: { views: { rowsView: Base => class extends Base { init() { super.init.apply(this, arguments); this._updateHandleColumn() } optionChanged(args) { if ("rowDragging" === args.name) { this._updateHandleColumn(); this._invalidate(true, true); args.handled = true } super.optionChanged.apply(this, arguments) } _allowReordering() { const rowDragging = this.option("rowDragging"); return !!(rowDragging && (rowDragging.allowReordering || rowDragging.allowDropInsideItem || rowDragging.group)) } _updateHandleColumn() { const rowDragging = this.option("rowDragging"); const allowReordering = this._allowReordering(); const columnsController = this._columnsController; const isHandleColumnVisible = allowReordering && rowDragging.showDragIcons; null === columnsController || void 0 === columnsController || columnsController.addCommandColumn({ type: "drag", command: "drag", visibleIndex: -2, alignment: "center", elementAttr: [{ name: _const.ATTRIBUTES.dragCell, value: "" }], cssClass: _const.CLASSES.commandDrag, width: "auto", cellTemplate: this._getHandleTemplate(), visible: isHandleColumnVisible }); null === columnsController || void 0 === columnsController || columnsController.columnOption("type:drag", "visible", isHandleColumnVisible) } _renderContent() { const rowDragging = this.option("rowDragging"); const allowReordering = this._allowReordering(); const $content = super._renderContent.apply(this, arguments); const isFixedTableRendering = this._isFixedTableRendering; const currentSortableName = isFixedTableRendering ? "_sortableFixed" : "_sortable"; const anotherSortableName = isFixedTableRendering ? "_sortable" : "_sortableFixed"; const togglePointerEventsStyle = toggle => { var _this$sortableFixedNa; null === (_this$sortableFixedNa = this._sortableFixed) || void 0 === _this$sortableFixedNa || _this$sortableFixedNa.$element().css("pointerEvents", toggle ? "auto" : "") }; const rowSelector = ".dx-row:not(.dx-freespace-row):not(.dx-virtual-row):not(.dx-header-row):not(.dx-footer-row)"; const filter = this.option("dataRowTemplate") ? `> table > tbody${rowSelector}` : `> table > tbody > ${rowSelector}`; if ((allowReordering || this[currentSortableName]) && $content.length) { this[currentSortableName] = this._createComponent($content, _sortable.default, (0, _extend.extend)({ component: this.component, contentTemplate: null, filter: filter, cursorOffset: options => { const { event: event } = options; const rowsViewOffset = (0, _renderer.default)(this.element()).offset(); return { x: event.pageX - rowsViewOffset.left } }, onDraggableElementShown: e => { if (rowDragging.dragTemplate) { return } const $dragElement = (0, _renderer.default)(e.dragElement); const gridInstance = $dragElement.children(".dx-widget").data(this.component.NAME); this._synchronizeScrollLeftPosition(gridInstance) }, dragTemplate: this._getDraggableRowTemplate(), handle: rowDragging.showDragIcons && `.${_const.CLASSES.commandDrag}`, dropFeedbackMode: "indicate" }, rowDragging, { onDragStart: e => { var _this$getController, _rowDragging$onDragSt; null === (_this$getController = this.getController("keyboardNavigation")) || void 0 === _this$getController || _this$getController._resetFocusedCell(); const row = e.component.getVisibleRows()[e.fromIndex]; e.itemData = null === row || void 0 === row ? void 0 : row.data; const isDataRow = row && "data" === row.rowType; e.cancel = !allowReordering || !isDataRow; null === (_rowDragging$onDragSt = rowDragging.onDragStart) || void 0 === _rowDragging$onDragSt || _rowDragging$onDragSt.call(rowDragging, e) }, onDragEnter: e => { if (e.fromComponent !== e.toComponent) { togglePointerEventsStyle(true) } }, onDragLeave: () => { togglePointerEventsStyle(false) }, onDragEnd: e => { var _rowDragging$onDragEn; togglePointerEventsStyle(false); null === (_rowDragging$onDragEn = rowDragging.onDragEnd) || void 0 === _rowDragging$onDragEn || _rowDragging$onDragEn.call(rowDragging, e) }, onAdd: e => { var _rowDragging$onAdd; togglePointerEventsStyle(false); null === (_rowDragging$onAdd = rowDragging.onAdd) || void 0 === _rowDragging$onAdd || _rowDragging$onAdd.call(rowDragging, e) }, dropFeedbackMode: rowDragging.dropFeedbackMode, onOptionChanged: e => { const hasFixedSortable = this._sortableFixed; if (hasFixedSortable) { if ("fromIndex" === e.name || "toIndex" === e.name) { this[anotherSortableName].option(e.name, e.value) } } } })); $content.toggleClass("dx-scrollable-container", isFixedTableRendering); $content.toggleClass(_const.CLASSES.sortableWithoutHandle, allowReordering && !rowDragging.showDragIcons) } return $content } _renderCore(e) { super._renderCore.apply(this, arguments); if (e && "update" === e.changeType && e.repaintChangesOnly && _m_utils.default.isVirtualRowRendering(this)) { (0, _common.deferUpdate)((() => { this._updateSortable() })) } } _updateSortable() { const offset = this._dataController.getRowIndexOffset(); const offsetDiff = offset - this._previousOffset; [this._sortable, this._sortableFixed].forEach((sortable => { const toIndex = null === sortable || void 0 === sortable ? void 0 : sortable.option("toIndex"); if ((0, _type.isDefined)(toIndex) && (0, _type.isDefined)(this._previousOffset)) { null === sortable || void 0 === sortable || sortable.option("toIndex", toIndex - offsetDiff) } null === sortable || void 0 === sortable || sortable.option("offset", offset); null === sortable || void 0 === sortable || sortable.update() })); this._previousOffset = offset } _resizeCore() { super._resizeCore.apply(this, arguments); this._updateSortable() } _getDraggableGridOptions(options) { const gridOptions = this.option(); const columns = this.getColumns(); const $rowElement = (0, _renderer.default)(this.getRowElement(options.rowIndex)); return { dataSource: [{ id: 1, parentId: 0 }], showBorders: true, showColumnHeaders: false, scrolling: { useNative: false, showScrollbar: "never" }, pager: { visible: false }, loadingTimeout: null, columnFixing: gridOptions.columnFixing, columnAutoWidth: gridOptions.columnAutoWidth, showColumnLines: gridOptions.showColumnLines, columns: columns.map((column => ({ width: column.width || column.visibleWidth, fixed: column.fixed, fixedPosition: column.fixedPosition }))), isDragging: true, onRowPrepared: e => { const rowsView = e.component.getView("rowsView"); (0, _renderer.default)(e.rowElement).replaceWith($rowElement.eq(rowsView._isFixedTableRendering ? 1 : 0).clone()) } } } _synchronizeScrollLeftPosition(gridInstance) { const scrollable = null === gridInstance || void 0 === gridInstance ? void 0 : gridInstance.getScrollable(); null === scrollable || void 0 === scrollable || scrollable.scrollTo({ x: this._scrollLeft }) } _getDraggableRowTemplate() { return options => { const $rootElement = this.component.$element(); const $dataGridContainer = (0, _renderer.default)("
"); (0, _size.setWidth)($dataGridContainer, (0, _size.getWidth)($rootElement)); const items = this._dataController.items(); const row = items && items[options.fromIndex]; const gridOptions = this._getDraggableGridOptions(row); this._createComponent($dataGridContainer, this.component.NAME, gridOptions); $dataGridContainer.find(".dx-gridbase-container").children(`:not(.${this.addWidgetPrefix(_const.CLASSES.rowsView)})`).hide(); $dataGridContainer.addClass(this.addWidgetPrefix(_const.CLASSES.dragView)); return $dataGridContainer } } _getHandleTemplate() { return _dom.GridCoreRowDraggingDom.createHandleTemplateFunc((string => this.addWidgetPrefix(string))) } } } } } }, 7370: /*!*******************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/grid_core/search/m_search.js ***! \*******************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.searchModule = void 0; var _message = _interopRequireDefault(__webpack_require__( /*! ../../../../common/core/localization/message */ 4671)); var _query = _interopRequireDefault(__webpack_require__( /*! ../../../../common/data/query */ 30771)); var _dom_adapter = _interopRequireDefault(__webpack_require__( /*! ../../../../core/dom_adapter */ 64960)); var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../../../core/renderer */ 64553)); var _data = __webpack_require__( /*! ../../../../core/utils/data */ 31e3); var _m_utils = _interopRequireDefault(__webpack_require__( /*! ../m_utils */ 53226)); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } function allowSearch(column) { return !!(column.allowSearch ?? column.allowFiltering) } function parseValue(column, text) { const { lookup: lookup } = column; if (!column.parseValue) { return text } if (lookup) { return column.parseValue.call(lookup, text) } return column.parseValue(text) } exports.searchModule = { defaultOptions: () => ({ searchPanel: { visible: false, width: 160, placeholder: _message.default.format("dxDataGrid-searchPanelPlaceholder"), highlightSearchText: true, highlightCaseSensitive: false, text: "", searchVisibleColumnsOnly: false } }), extenders: { controllers: { data: base => class extends base { optionChanged(args) { switch (args.fullName) { case "searchPanel.text": case "searchPanel": this._applyFilter(); args.handled = true; break; default: super.optionChanged(args) } } publicMethods() { return super.publicMethods().concat(["searchByText"]) } _calculateAdditionalFilter() { var _this$_dataController, _this$_dataController2, _dataSource$loadOptio; const dataSource = null === (_this$_dataController = this._dataController) || void 0 === _this$_dataController || null === (_this$_dataController2 = _this$_dataController.getDataSource) || void 0 === _this$_dataController2 ? void 0 : _this$_dataController2.call(_this$_dataController); const langParams = null === dataSource || void 0 === dataSource || null === (_dataSource$loadOptio = dataSource.loadOptions) || void 0 === _dataSource$loadOptio || null === (_dataSource$loadOptio = _dataSource$loadOptio.call(dataSource)) || void 0 === _dataSource$loadOptio ? void 0 : _dataSource$loadOptio.langParams; const filter = super._calculateAdditionalFilter(); const searchFilter = this.calculateSearchFilter(this.option("searchPanel.text"), langParams); return _m_utils.default.combineFilters([filter, searchFilter]) } searchByText(text) { this.option("searchPanel.text", text) } calculateSearchFilter(text, langParams) { let column; const columns = this._columnsController.getColumns(); const searchVisibleColumnsOnly = this.option("searchPanel.searchVisibleColumnsOnly"); let lookup; const filters = []; if (!text) { return null } function onQueryDone(items) { const valueGetter = (0, _data.compileGetter)(lookup.valueExpr); for (let i = 0; i < items.length; i++) { const value = valueGetter(items[i]); filters.push(column.createFilterExpression(value, null, "search")) } } for (let i = 0; i < columns.length; i++) { column = columns[i]; if (searchVisibleColumnsOnly && !column.visible) { continue } if (allowSearch(column) && column.calculateFilterExpression) { var _lookup; lookup = column.lookup; const filterValue = parseValue(column, text); if (null !== (_lookup = lookup) && void 0 !== _lookup && _lookup.items) { (0, _query.default)(lookup.items, { langParams: langParams }).filter(column.createFilterExpression.call({ dataField: lookup.displayExpr, dataType: lookup.dataType, calculateFilterExpression: column.calculateFilterExpression }, filterValue, null, "search")).enumerate().done(onQueryDone) } else if (void 0 !== filterValue) { filters.push(column.createFilterExpression(filterValue, null, "search")) } } } if (0 === filters.length) { return ["!"] } return _m_utils.default.combineFilters(filters, "or") } } }, views: { headerPanel: Base => class extends Base { optionChanged(args) { if ("searchPanel" === args.name) { if ("searchPanel.text" === args.fullName) { const editor = this.getSearchTextEditor(); if (editor) { editor.option("value", args.value) } } else { this._invalidate() } args.handled = true } else { super.optionChanged(args) } } _getToolbarItems() { const items = super._getToolbarItems(); return this._prepareSearchItem(items) } _prepareSearchItem(items) { const that = this; const dataController = this._dataController; const searchPanelOptions = this.option("searchPanel"); if (searchPanelOptions && searchPanelOptions.visible) { const toolbarItem = { template(data, index, container) { const $search = (0, _renderer.default)("
").addClass(that.addWidgetPrefix("search-panel")).appendTo(container); that._editorFactoryController.createEditor($search, { width: searchPanelOptions.width, placeholder: searchPanelOptions.placeholder, parentType: "searchPanel", value: that.option("searchPanel.text"), updateValueTimeout: 700, setValue(value) { dataController.searchByText(value) }, editorOptions: { inputAttr: { "aria-label": _message.default.format(`${that.component.NAME}-ariaSearchInGrid`) } } }); that.resize() }, name: "searchPanel", location: "after", locateInMenu: "never", sortIndex: 40 }; items.push(toolbarItem) } return items } getSearchTextEditor() { const that = this; const $element = that.element(); const $searchPanel = $element.find(`.${that.addWidgetPrefix("search-panel")}`).filter((function() { return (0, _renderer.default)(this).closest(`.${that.addWidgetPrefix("header-panel")}`).is($element) })); if ($searchPanel.length) { return $searchPanel.dxTextBox("instance") } return null } }, rowsView: Base => class extends Base { init() { super.init.apply(this, arguments); this._searchParams = []; this._dataController = this.getController("data") } dispose() { clearTimeout(this._highlightTimer); super.dispose() } _getFormattedSearchText(column, searchText) { const value = parseValue(column, searchText); const formatOptions = _m_utils.default.getFormatOptionsByColumn(column, "search"); return _m_utils.default.formatValue(value, formatOptions) } _getStringNormalizer() { var _this$_dataController3, _this$_dataController4, _dataSource$loadOptio2; const isCaseSensitive = this.option("searchPanel.highlightCaseSensitive"); const dataSource = null === (_this$_dataController3 = this._dataController) || void 0 === _this$_dataController3 || null === (_this$_dataController4 = _this$_dataController3.getDataSource) || void 0 === _this$_dataController4 ? void 0 : _this$_dataController4.call(_this$_dataController3); const langParams = null === dataSource || void 0 === dataSource || null === (_dataSource$loadOptio2 = dataSource.loadOptions) || void 0 === _dataSource$loadOptio2 || null === (_dataSource$loadOptio2 = _dataSource$loadOptio2.call(dataSource)) || void 0 === _dataSource$loadOptio2 ? void 0 : _dataSource$loadOptio2.langParams; return str => (0, _data.toComparable)(str, isCaseSensitive, langParams) } _findHighlightingTextNodes(column, cellElement, searchText) { var _$items; const that = this; let $parent = cellElement.parent(); let $items; const stringNormalizer = this._getStringNormalizer(); const normalizedSearchText = stringNormalizer(searchText); const resultTextNodes = []; if (!$parent.length) { $parent = (0, _renderer.default)("
").append(cellElement) } else if (column) { if (column.groupIndex >= 0 && !column.showWhenGrouped) { $items = cellElement } else { const columnIndex = that._columnsController.getVisibleIndex(column.index); $items = $parent.children("td").eq(columnIndex).find("*") } } $items = null !== (_$items = $items) && void 0 !== _$items && _$items.length ? $items : $parent.find("*"); $items.each(((_, element) => { const $contents = (0, _renderer.default)(element).contents(); for (let i = 0; i < $contents.length; i++) { const node = $contents.get(i); if (3 === node.nodeType) { const normalizedText = stringNormalizer(node.textContent ?? node.nodeValue ?? ""); if (normalizedText.includes(normalizedSearchText)) { resultTextNodes.push(node) } } } })); return resultTextNodes } _highlightSearchTextCore($textNode, searchText) { const that = this; const $searchTextSpan = (0, _renderer.default)("").addClass(that.addWidgetPrefix("search-text")); const text = $textNode.text(); const firstContentElement = $textNode[0]; const stringNormalizer = this._getStringNormalizer(); const index = stringNormalizer(text).indexOf(stringNormalizer(searchText)); if (index >= 0) { if (firstContentElement.textContent) { firstContentElement.textContent = text.substr(0, index) } else { firstContentElement.nodeValue = text.substr(0, index) } $textNode.after($searchTextSpan.text(text.substr(index, searchText.length))); $textNode = (0, _renderer.default)(_dom_adapter.default.createTextNode(text.substr(index + searchText.length))).insertAfter($searchTextSpan); return that._highlightSearchTextCore($textNode, searchText) } } _highlightSearchText(cellElement, isEquals, column) { const that = this; const stringNormalizer = this._getStringNormalizer(); let searchText = that.option("searchPanel.text"); if (isEquals && column) { searchText = searchText && that._getFormattedSearchText(column, searchText) } if (searchText && that.option("searchPanel.highlightSearchText")) { const textNodes = that._findHighlightingTextNodes(column, cellElement, searchText); textNodes.forEach((textNode => { if (isEquals) { if (stringNormalizer((0, _renderer.default)(textNode).text()) === stringNormalizer(searchText ?? "")) { (0, _renderer.default)(textNode).replaceWith((0, _renderer.default)("").addClass(that.addWidgetPrefix("search-text")).text((0, _renderer.default)(textNode).text())) } } else { that._highlightSearchTextCore((0, _renderer.default)(textNode), searchText) } })) } } _renderCore() { const deferred = super._renderCore.apply(this, arguments); if (this.option().rowTemplate || this.option("dataRowTemplate")) { if (this.option("templatesRenderAsynchronously")) { clearTimeout(this._highlightTimer); this._highlightTimer = setTimeout((() => { this._highlightSearchText(this.getTableElement()) })) } else { this._highlightSearchText(this.getTableElement()) } } return deferred } _updateCell($cell, parameters) { const { column: column } = parameters; const dataType = column.lookup && column.lookup.dataType || column.dataType; const isEquals = "string" !== dataType; if (allowSearch(column) && !parameters.isOnForm) { if (this.option("templatesRenderAsynchronously")) { if (!this._searchParams.length) { clearTimeout(this._highlightTimer); this._highlightTimer = setTimeout((() => { this._searchParams.forEach((params => { this._highlightSearchText.apply(this, params) })); this._searchParams = [] })) } this._searchParams.push([$cell, isEquals, column]) } else { this._highlightSearchText($cell, isEquals, column) } } super._updateCell($cell, parameters) } } } } } }, 1620: /*!*************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/grid_core/selection/m_selection.js ***! \*************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.selectionModule = exports.rowsViewSelectionExtenderMixin = exports.dataSelectionExtenderMixin = exports.columnHeadersSelectionExtenderMixin = exports.SelectionController = void 0; var _click = __webpack_require__( /*! ../../../../common/core/events/click */ 64044); var _events_engine = _interopRequireDefault(__webpack_require__( /*! ../../../../common/core/events/core/events_engine */ 92774)); var _hold = _interopRequireDefault(__webpack_require__( /*! ../../../../common/core/events/hold */ 68095)); var _index = __webpack_require__( /*! ../../../../common/core/events/utils/index */ 98834); var _message = _interopRequireDefault(__webpack_require__( /*! ../../../../common/core/localization/message */ 4671)); var _array_utils = __webpack_require__( /*! ../../../../common/data/array_utils */ 43792); var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../../../core/renderer */ 64553)); var _common = __webpack_require__( /*! ../../../../core/utils/common */ 17781); var _deferred = __webpack_require__( /*! ../../../../core/utils/deferred */ 87739); var _extend = __webpack_require__( /*! ../../../../core/utils/extend */ 52576); var _iterator = __webpack_require__( /*! ../../../../core/utils/iterator */ 21274); var _type = __webpack_require__( /*! ../../../../core/utils/type */ 11528); var _ui = _interopRequireDefault(__webpack_require__( /*! ../../../../ui/widget/ui.errors */ 35185)); var _m_support = _interopRequireDefault(__webpack_require__( /*! ../../../core/utils/m_support */ 85991)); var _m_selection = _interopRequireDefault(__webpack_require__( /*! ../../../ui/selection/m_selection */ 53544)); var _m_modules = _interopRequireDefault(__webpack_require__( /*! ../m_modules */ 74854)); var _m_utils = _interopRequireDefault(__webpack_require__( /*! ../m_utils */ 53226)); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } const SHOW_CHECKBOXES_MODE = "selection.showCheckBoxesMode"; const processLongTap = function(that, dxEvent) { const rowsView = that.getView("rowsView"); const selectionController = that.getController("selection"); const $row = (0, _renderer.default)(dxEvent.target).closest(".dx-data-row"); const rowIndex = rowsView.getRowIndex($row); if (rowIndex < 0) { return } if ("onLongTap" === that.option(SHOW_CHECKBOXES_MODE)) { if (selectionController.isSelectionWithCheckboxes()) { selectionController.stopSelectionWithCheckboxes() } else { selectionController.startSelectionWithCheckboxes() } } else { if ("onClick" === that.option(SHOW_CHECKBOXES_MODE)) { selectionController.startSelectionWithCheckboxes() } if ("always" !== that.option(SHOW_CHECKBOXES_MODE)) { selectionController.changeItemSelection(rowIndex, { control: true }) } } }; const selectionCellTemplate = (container, options) => { const { component: component } = options; const rowsView = component.getView("rowsView"); if (component.option("renderAsync") && !component.option("selection.deferred")) { options.value = component.isRowSelected(options.row.key) } rowsView.renderSelectCheckBoxContainer((0, _renderer.default)(container), options) }; const selectionHeaderTemplate = (container, options) => { const { column: column } = options; const $cellElement = (0, _renderer.default)(container); const columnHeadersView = options.component.getView("columnHeadersView"); $cellElement.addClass("dx-editor-cell"); columnHeadersView._renderSelectAllCheckBox($cellElement, column); columnHeadersView._attachSelectAllCheckBoxClickEvent($cellElement) }; class SelectionController extends _m_modules.default.Controller { init() { const { deferred: deferred, selectAllMode: selectAllMode, mode: mode } = this.option("selection") ?? {}; if ("infinite" === this.option("scrolling.mode") && !deferred && "multiple" === mode && "allPages" === selectAllMode) { _ui.default.log("W1018") } this._dataController = this.getController("data"); this._columnsController = this.getController("columns"); this._stateStoringController = this.getController("stateStoring"); this._selectionMode = mode; this._isSelectionWithCheckboxes = false; this._selection = this._createSelection(); this._updateSelectColumn(); this.createAction("onSelectionChanged", { excludeValidators: ["disabled", "readOnly"] }); if (!this._dataPushedHandler) { this._dataPushedHandler = this._handleDataPushed.bind(this); this._dataController.pushed.add(this._dataPushedHandler) } } _handleDataPushed(changes) { this._deselectRemovedOnPush(changes); this._updateSelectedOnPush(changes) } _deselectRemovedOnPush(changes) { const isDeferredSelection = this.option("selection.deferred"); let removedKeys = changes.filter((change => "remove" === change.type)).map((change => change.key)); if (isDeferredSelection) { const selectedKeys = this._dataController.items().filter((item => item.isSelected)).map((item => item.key)); removedKeys = removedKeys.filter((key => selectedKeys.find((selectedKey => (0, _common.equalByValue)(selectedKey, key))))) } removedKeys.length && this.deselectRows(removedKeys) } _updateSelectedOnPush(changes) { const isDeferredSelection = this.option("selection.deferred"); if (isDeferredSelection) { return } const updateChanges = changes.filter((change => "update" === change.type)); const data = this.getSelectedRowsData(); (0, _array_utils.applyBatch)({ keyInfo: this._selection.options, data: data, changes: updateChanges }) } _getSelectionConfig() { const dataController = this._dataController; const columnsController = this._columnsController; const selectionOptions = this.option("selection") ?? {}; const { deferred: deferred } = selectionOptions; const scrollingMode = this.option("scrolling.mode"); const virtualPaging = "virtual" === scrollingMode || "infinite" === scrollingMode; const allowSelectAll = this.option("selection.allowSelectAll"); const legacyScrollingMode = this.option("scrolling.legacyMode"); return { selectedKeys: this.option("selectedRowKeys"), mode: this._selectionMode, deferred: deferred, alwaysSelectByShift: selectionOptions.alwaysSelectByShift, maxFilterLengthInRequest: selectionOptions.maxFilterLengthInRequest, selectionFilter: this.option("selectionFilter"), ignoreDisabledItems: true, isVirtualPaging: virtualPaging, sensitivity: this.option("selection.sensitivity"), allowLoadByRange() { const hasGroupColumns = columnsController.getGroupColumns().length > 0; return virtualPaging && !legacyScrollingMode && !hasGroupColumns && allowSelectAll && !deferred }, key: () => null === dataController || void 0 === dataController ? void 0 : dataController.key(), keyOf: item => null === dataController || void 0 === dataController ? void 0 : dataController.keyOf(item), dataFields() { var _dataController$dataS; return null === (_dataController$dataS = dataController.dataSource()) || void 0 === _dataController$dataS ? void 0 : _dataController$dataS.select() }, load(options) { var _dataController$dataS2; return (null === (_dataController$dataS2 = dataController.dataSource()) || void 0 === _dataController$dataS2 ? void 0 : _dataController$dataS2.load(options)) || (new _deferred.Deferred).resolve([]) }, plainItems: cached => dataController.items(true), isItemSelected: item => item.selected, isSelectableItem: item => "data" === (null === item || void 0 === item ? void 0 : item.rowType) && !item.isNewRow, getItemData: item => (0, _type.isDefined)(null === item || void 0 === item ? void 0 : item.rowType) ? (null === item || void 0 === item ? void 0 : item.oldData) || (null === item || void 0 === item ? void 0 : item.data) : item, filter: () => dataController.getCombinedFilter(deferred), totalCount: () => dataController.totalCount(), getLoadOptions(loadItemIndex, focusedItemIndex, shiftItemIndex) { var _dataController$dataS3; const { sort: sort, filter: filter } = (null === (_dataController$dataS3 = dataController.dataSource()) || void 0 === _dataController$dataS3 ? void 0 : _dataController$dataS3.lastLoadOptions()) ?? {}; let minIndex = Math.min(loadItemIndex, focusedItemIndex); let maxIndex = Math.max(loadItemIndex, focusedItemIndex); if ((0, _type.isDefined)(shiftItemIndex)) { minIndex = Math.min(shiftItemIndex, minIndex); maxIndex = Math.max(shiftItemIndex, maxIndex) } const take = maxIndex - minIndex + 1; return { skip: minIndex, take: take, filter: filter, sort: sort } }, onSelectionChanged: this._updateSelectedItems.bind(this) } } _updateSelectColumn() { const columnsController = this._columnsController; const isSelectColumnVisible = this.isSelectColumnVisible(); columnsController.addCommandColumn({ type: "selection", command: "select", visible: isSelectColumnVisible, visibleIndex: -1, dataType: "boolean", alignment: "center", cssClass: "dx-command-select", width: "auto", cellTemplate: selectionCellTemplate, headerCellTemplate: selectionHeaderTemplate }); columnsController.columnOption("command:select", "visible", isSelectColumnVisible) } _createSelection() { const options = this._getSelectionConfig(); return new _m_selection.default(options) } _fireSelectionChanged(options) { const argument = this.option("selection.deferred") ? { selectionFilter: this.option("selectionFilter") } : { selectedRowKeys: this.option("selectedRowKeys") }; this.selectionChanged.fire(argument); if (options) { this.executeAction("onSelectionChanged", options) } } _updateCheckboxesState(options) { const { isDeferredMode: isDeferredMode } = options; const { selectionFilter: selectionFilter } = options; const { selectedItemKeys: selectedItemKeys } = options; const { removedItemKeys: removedItemKeys } = options; if ("onClick" === this.option(SHOW_CHECKBOXES_MODE)) { if (isDeferredMode ? selectionFilter && function(that, selectionFilter) { let keyIndex = 0; const store = that._dataController.store(); const key = null === store || void 0 === store ? void 0 : store.key(); const isComplexKey = Array.isArray(key); if (!selectionFilter.length) { return false } if (isComplexKey && Array.isArray(selectionFilter[0]) && "and" === selectionFilter[1]) { for (let i = 0; i < selectionFilter.length; i++) { if (Array.isArray(selectionFilter[i])) { if (selectionFilter[i][0] !== key[keyIndex] || "=" !== selectionFilter[i][1]) { return true } keyIndex++ } } return false } return key !== selectionFilter[0] }(this, selectionFilter) : selectedItemKeys.length > 1) { this.startSelectionWithCheckboxes() } else if (isDeferredMode ? selectionFilter && !selectionFilter.length : 0 === selectedItemKeys.length && removedItemKeys.length) { this.stopSelectionWithCheckboxes() } } } _updateSelectedItems(args) { const that = this; let selectionChangedOptions; const isDeferredMode = that.option("selection.deferred"); const selectionFilter = that._selection.selectionFilter(); const dataController = that._dataController; const items = dataController.items(true); const visibleItems = dataController.items(); if (!items) { return } const isSelectionWithCheckboxes = that.isSelectionWithCheckboxes(); const changedItemIndexes = that.getChangedItemIndexes(items); const visibleChangedItemIndexes = that.getChangedItemIndexes(visibleItems); that._updateCheckboxesState({ selectedItemKeys: args.selectedItemKeys, removedItemKeys: args.removedItemKeys, selectionFilter: selectionFilter, isDeferredMode: isDeferredMode }); if (changedItemIndexes.length || isSelectionWithCheckboxes !== that.isSelectionWithCheckboxes()) { dataController.updateItems({ changeType: "updateSelection", itemIndexes: visibleChangedItemIndexes }) } if (isDeferredMode) { that.option("selectionFilter", selectionFilter); selectionChangedOptions = {} } else if (args.addedItemKeys.length || args.removedItemKeys.length) { that._selectedItemsInternalChange = true; that.option("selectedRowKeys", args.selectedItemKeys.slice(0)); that._selectedItemsInternalChange = false; selectionChangedOptions = { selectedRowsData: args.selectedItems.slice(0), selectedRowKeys: args.selectedItemKeys.slice(0), currentSelectedRowKeys: args.addedItemKeys.slice(0), currentDeselectedRowKeys: args.removedItemKeys.slice(0) } } that._fireSelectionChanged(selectionChangedOptions) } getChangedItemIndexes(items) { const that = this; const itemIndexes = []; const isDeferredSelection = this.option("selection.deferred"); for (let i = 0, { length: length } = items; i < length; i++) { const row = items[i]; const isItemSelected = that.isRowSelected(isDeferredSelection ? row.data : row.key); if (that._selection.isDataItem(row) && row.isSelected !== isItemSelected) { itemIndexes.push(i) } } return itemIndexes } callbackNames() { return ["selectionChanged"] } optionChanged(args) { var _this$_selection; super.optionChanged(args); const selectionOptionsExists = !!(null !== (_this$_selection = this._selection) && void 0 !== _this$_selection && _this$_selection.options); switch (args.name) { case "selection": { const oldSelectionMode = this._selectionMode; this.init(); if (selectionOptionsExists && "selection.sensitivity" === args.fullName) { this._selection.options.sensitivity = args.value } if ("selection.showCheckBoxesMode" !== args.fullName) { const selectionMode = this._selectionMode; let selectedRowKeys = this.option("selectedRowKeys"); if (oldSelectionMode !== selectionMode) { if ("single" === selectionMode) { if (selectedRowKeys.length > 1) { selectedRowKeys = [selectedRowKeys[0]] } } else if ("multiple" !== selectionMode) { selectedRowKeys = [] } } this.selectRows(selectedRowKeys).always((() => { this._fireSelectionChanged() })) } this._columnsController.updateColumns(); args.handled = true; break } case "selectionFilter": this._selection.selectionFilter(args.value); args.handled = true; break; case "selectedRowKeys": { const value = args.value || []; if (Array.isArray(value) && !this._selectedItemsInternalChange && (this.component.getDataSource() || !value.length)) { this.selectRows(value) } args.handled = true; break } } } publicMethods() { return ["selectRows", "deselectRows", "selectRowsByIndexes", "getSelectedRowKeys", "getSelectedRowsData", "clearSelection", "selectAll", "deselectAll", "startSelectionWithCheckboxes", "stopSelectionWithCheckboxes", "isRowSelected"] } isRowSelected(arg) { return this._selection.isItemSelected(arg) } isSelectColumnVisible() { return "multiple" === this.option("selection.mode") && ("always" === this.option(SHOW_CHECKBOXES_MODE) || "onClick" === this.option(SHOW_CHECKBOXES_MODE) || this._isSelectionWithCheckboxes) } _isOnePageSelectAll() { return "page" === this.option("selection.selectAllMode") } isSelectAll() { return this._selection.getSelectAllState(this._isOnePageSelectAll()) } selectAll() { if ("onClick" === this.option(SHOW_CHECKBOXES_MODE)) { this.startSelectionWithCheckboxes() } return this._selection.selectAll(this._isOnePageSelectAll()) } deselectAll() { return this._selection.deselectAll(this._isOnePageSelectAll()) } clearSelection() { return this.selectedItemKeys([]) } refresh() { const selectedRowKeys = this.option("selectedRowKeys") ?? []; if (!this.option("selection.deferred") && selectedRowKeys.length) { return this.selectedItemKeys(selectedRowKeys) } return (new _deferred.Deferred).resolve().promise() } selectedItemKeys(value, preserve, isDeselect, isSelectAll) { return this._selection.selectedItemKeys(value, preserve, isDeselect, isSelectAll) } getSelectedRowKeys(mode) { return this._selection.getSelectedItemKeys() } selectRows(keys, preserve) { return this.selectedItemKeys(keys, preserve) } deselectRows(keys) { return this.selectedItemKeys(keys, true, true) } selectRowsByIndexes(indexes) { const items = this._dataController.items(); const keys = []; if (!Array.isArray(indexes)) { indexes = Array.prototype.slice.call(arguments, 0) }(0, _iterator.each)(indexes, (function() { const item = items[this]; if (item && "data" === item.rowType) { keys.push(item.key) } })); return this.selectRows(keys) } getSelectedRowsData(mode) { return this._selection.getSelectedItems() } loadSelectedItemsWithFilter() { return this._selection.loadSelectedItemsWithFilter() } changeItemSelection(visibleItemIndex, keys, setFocusOnly) { keys = keys || {}; if (this.isSelectionWithCheckboxes()) { keys.control = true } const loadedItemIndex = visibleItemIndex + this._dataController.getRowIndexOffset() - this._dataController.getRowIndexOffset(true); return this._selection.changeItemSelection(loadedItemIndex, keys, setFocusOnly) } focusedItemIndex(itemIndex) { const that = this; if ((0, _type.isDefined)(itemIndex)) { that._selection._focusedItemIndex = itemIndex } else { return that._selection._focusedItemIndex } return } isSelectionWithCheckboxes() { return "multiple" === this.option("selection.mode") && ("always" === this.option(SHOW_CHECKBOXES_MODE) || this._isSelectionWithCheckboxes) } startSelectionWithCheckboxes() { const that = this; if ("multiple" === that.option("selection.mode") && !that.isSelectionWithCheckboxes()) { that._isSelectionWithCheckboxes = true; that._updateSelectColumn(); return true } return false } stopSelectionWithCheckboxes() { const that = this; if (that._isSelectionWithCheckboxes) { that._isSelectionWithCheckboxes = false; that._updateSelectColumn(); return true } return false } } exports.SelectionController = SelectionController; const dataSelectionExtenderMixin = Base => class extends Base { init() { const isDeferredMode = this.option("selection.deferred"); super.init.apply(this, arguments); if (isDeferredMode) { this._selectionController._updateCheckboxesState({ isDeferredMode: true, selectionFilter: this.option("selectionFilter") }) } } _loadDataSource() { const that = this; return super._loadDataSource().always((() => { that._selectionController.refresh() })) } _processDataItem(item, options) { const hasSelectColumn = this._selectionController.isSelectColumnVisible(); const isDeferredSelection = options.isDeferredSelection = void 0 === options.isDeferredSelection ? this.option("selection.deferred") : options.isDeferredSelection; const dataItem = super._processDataItem.apply(this, arguments); dataItem.isSelected = this._selectionController.isRowSelected(isDeferredSelection ? dataItem.data : dataItem.key); if (hasSelectColumn && dataItem.values) { for (let i = 0; i < options.visibleColumns.length; i++) { if ("select" === options.visibleColumns[i].command) { dataItem.values[i] = dataItem.isSelected; break } } } return dataItem } refresh(options) { const that = this; const d = new _deferred.Deferred; super.refresh.apply(this, arguments).done((() => { if (!options || options.selection) { that._selectionController.refresh().done(d.resolve).fail(d.reject) } else { d.resolve() } })).fail(d.reject); return d.promise() } _handleDataChanged(e) { const hasLoadOperation = this.hasLoadOperation(); super._handleDataChanged.apply(this, arguments); if (hasLoadOperation && !this._repaintChangesOnly) { this._selectionController.focusedItemIndex(-1) } } _applyChange(change) { if (change && "updateSelection" === change.changeType) { change.items.forEach(((item, index) => { const currentItem = this._items[index]; if (currentItem) { currentItem.isSelected = item.isSelected; currentItem.values = item.values } })); return } return super._applyChange.apply(this, arguments) } _endUpdateCore() { const changes = this._changes; const isUpdateSelection = changes.length > 1 && changes.every((change => "updateSelection" === change.changeType)); if (isUpdateSelection) { const itemIndexes = changes.map((change => change.itemIndexes || [])).reduce(((a, b) => a.concat(b))); this._changes = [{ changeType: "updateSelection", itemIndexes: itemIndexes }] } super._endUpdateCore.apply(this, arguments) } }; exports.dataSelectionExtenderMixin = dataSelectionExtenderMixin; const columnHeadersSelectionExtenderMixin = Base => class extends Base { init() { super.init(); this._selectionController.selectionChanged.add(this._updateSelectAllValue.bind(this)) } _updateSelectAllValue() { const that = this; const $element = that.element(); const $editor = null === $element || void 0 === $element ? void 0 : $element.find(".dx-select-checkbox"); if ($element && $editor.length && "multiple" === that.option("selection.mode")) { const selectAllValue = that._selectionController.isSelectAll(); const hasSelection = false !== selectAllValue; const isVisible = that.option("selection.allowSelectAll") ? !that._dataController.isEmpty() : hasSelection; $editor.dxCheckBox("instance").option({ visible: isVisible, value: selectAllValue }) } } _handleDataChanged(e) { super._handleDataChanged(e); if (!e || "refresh" === e.changeType || e.repaintChangesOnly && "update" === e.changeType) { this.waitAsyncTemplates().done((() => { this._updateSelectAllValue() })) } } _renderSelectAllCheckBox($container, column) { const that = this; const isEmptyData = that._dataController.isEmpty(); const groupElement = (0, _renderer.default)("
").appendTo($container).addClass("dx-select-checkbox"); that.setAria("label", _message.default.format("dxDataGrid-ariaSelectAll"), groupElement); that._editorFactoryController.createEditor(groupElement, (0, _extend.extend)({}, column, { parentType: "headerRow", dataType: "boolean", value: this._selectionController.isSelectAll(), editorOptions: { visible: !isEmptyData && (that.option("selection.allowSelectAll") || false !== this._selectionController.isSelectAll()) }, tabIndex: that.option("useLegacyKeyboardNavigation") ? -1 : that.option("tabIndex") || 0, setValue: (value, e) => { const allowSelectAll = that.option("selection.allowSelectAll"); e.component.option("visible", allowSelectAll || false !== e.component.option("value")); if (!e.event || this._selectionController.isSelectAll() === value) { return } if (e.value && !allowSelectAll) { e.component.option("value", false) } else { e.value ? this._selectionController.selectAll() : this._selectionController.deselectAll() } e.event.preventDefault() } })); return groupElement } _attachSelectAllCheckBoxClickEvent($element) { _events_engine.default.on($element, _click.name, this.createAction((e => { const { event: event } = e; if (!(0, _renderer.default)(event.target).closest(".dx-select-checkbox").length) { _events_engine.default.trigger((0, _renderer.default)(event.currentTarget).children(".dx-select-checkbox"), _click.name) } event.preventDefault() }))) } }; exports.columnHeadersSelectionExtenderMixin = columnHeadersSelectionExtenderMixin; const rowsViewSelectionExtenderMixin = Base => class extends Base { renderSelectCheckBoxContainer($container, options) { if ("data" === options.rowType && !options.row.isNewRow) { $container.addClass("dx-editor-cell"); this._attachCheckBoxClickEvent($container); this._renderSelectCheckBox($container, options) } else { _m_utils.default.setEmptyText($container) } } _renderSelectCheckBox(container, options) { const groupElement = (0, _renderer.default)("
").addClass("dx-select-checkbox").appendTo(container); this.setAria("label", _message.default.format("dxDataGrid-ariaSelectRow"), groupElement); this._editorFactoryController.createEditor(groupElement, (0, _extend.extend)({}, options.column, { parentType: "dataRow", dataType: "boolean", lookup: null, value: options.value, setValue(value, e) { var _e$event; if ("keydown" === (null === e || void 0 === e || null === (_e$event = e.event) || void 0 === _e$event ? void 0 : _e$event.type)) { _events_engine.default.trigger(e.element, _click.name, e) } }, row: options.row })); return groupElement } _attachCheckBoxClickEvent($element) { _events_engine.default.on($element, _click.name, this.createAction((function(e) { const { event: event } = e; const rowIndex = this.getRowIndex((0, _renderer.default)(event.currentTarget).closest(".dx-row")); if (rowIndex >= 0) { this._selectionController.startSelectionWithCheckboxes(); this._selectionController.changeItemSelection(rowIndex, { shift: event.shiftKey }); if ((0, _renderer.default)(event.target).closest(".dx-select-checkbox").length) { this._dataController.updateItems({ changeType: "updateSelection", itemIndexes: [rowIndex] }) } } }))) } _update(change) { const that = this; const tableElements = that.getTableElements(); if ("updateSelection" === change.changeType) { if (tableElements.length > 0) { (0, _iterator.each)(tableElements, ((_, tableElement) => { (0, _iterator.each)(change.itemIndexes || [], ((_, index) => { let $row; if (change.items[index]) { $row = that._getRowElements((0, _renderer.default)(tableElement)).eq(index); if ($row.length) { const { isSelected: isSelected } = change.items[index]; $row.toggleClass("dx-selection", void 0 === isSelected ? false : isSelected).find(".dx-select-checkbox").dxCheckBox("option", "value", isSelected); that.setAria("selected", isSelected, $row) } } })) })); that._updateCheckboxesClass() } } else { super._update(change) } } _createTable() { const that = this; const selectionMode = that.option("selection.mode"); const $table = super._createTable.apply(that, arguments); if ("none" !== selectionMode) { if ("onLongTap" === that.option(SHOW_CHECKBOXES_MODE) || !_m_support.default.touch) { _events_engine.default.on($table, (0, _index.addNamespace)(_hold.default.name, "dxDataGridRowsView"), ".dx-data-row", that.createAction((e => { processLongTap(that.component, e.event); e.event.stopPropagation() }))) } _events_engine.default.on($table, "mousedown selectstart", that.createAction((e => { const { event: event } = e; if (event.shiftKey) { event.preventDefault() } }))) } return $table } _createRow(row) { const $row = super._createRow.apply(this, arguments); if (row) { const { isSelected: isSelected } = row; if (isSelected) { $row.addClass("dx-selection") } const selectionMode = this.option("selection.mode"); if ("none" !== selectionMode) { this.setAria("selected", isSelected, $row) } } return $row } _rowClickForTreeList(e) { super._rowClick(e) } _rowClick(e) { const that = this; const dxEvent = e.event; const isSelectionDisabled = (0, _renderer.default)(dxEvent.target).closest(".dx-selection-disabled").length; if (!that.isClickableElement((0, _renderer.default)(dxEvent.target))) { if (!isSelectionDisabled && ("multiple" !== that.option("selection.mode") || "always" !== that.option(SHOW_CHECKBOXES_MODE))) { if (that._selectionController.changeItemSelection(e.rowIndex, { control: (0, _index.isCommandKeyPressed)(dxEvent), shift: dxEvent.shiftKey })) { dxEvent.preventDefault(); e.handled = true } } super._rowClick(e) } } isClickableElement($target) { const isCommandSelect = $target.closest(".dx-command-select").length; return !!isCommandSelect } _renderCore(change) { const deferred = super._renderCore(change); this._updateCheckboxesClass(); return deferred } _updateCheckboxesClass() { const tableElements = this.getTableElements(); const isCheckBoxesHidden = this._selectionController.isSelectColumnVisible() && !this._selectionController.isSelectionWithCheckboxes(); (0, _iterator.each)(tableElements, ((_, tableElement) => { (0, _renderer.default)(tableElement).toggleClass("dx-select-checkboxes-hidden", isCheckBoxesHidden) })) } }; exports.rowsViewSelectionExtenderMixin = rowsViewSelectionExtenderMixin; exports.selectionModule = { defaultOptions: () => ({ selection: { mode: "none", showCheckBoxesMode: "onClick", allowSelectAll: true, selectAllMode: "allPages", deferred: false, maxFilterLengthInRequest: 1500, alwaysSelectByShift: false }, selectionFilter: [], selectedRowKeys: [] }), controllers: { selection: SelectionController }, extenders: { controllers: { data: dataSelectionExtenderMixin, contextMenu: Base => class extends Base { _contextMenuPrepared(options) { const dxEvent = options.event; if (dxEvent.originalEvent && "dxhold" !== dxEvent.originalEvent.type || options.items && options.items.length > 0) { return } processLongTap(this, dxEvent) } } }, views: { columnHeadersView: columnHeadersSelectionExtenderMixin, rowsView: rowsViewSelectionExtenderMixin } } } }, 8036: /*!*********************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/grid_core/sorting/m_sorting.js ***! \*********************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.sortingModule = void 0; var _click = __webpack_require__( /*! ../../../../common/core/events/click */ 64044); var _events_engine = _interopRequireDefault(__webpack_require__( /*! ../../../../common/core/events/core/events_engine */ 92774)); var _index = __webpack_require__( /*! ../../../../common/core/events/utils/index */ 98834); var _message = _interopRequireDefault(__webpack_require__( /*! ../../../../common/core/localization/message */ 4671)); var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../../../core/renderer */ 64553)); var _type = __webpack_require__( /*! ../../../../core/utils/type */ 11528); var _m_sorting_mixin = _interopRequireDefault(__webpack_require__( /*! ./m_sorting_mixin */ 2242)); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } exports.sortingModule = { defaultOptions: () => ({ sorting: { mode: "single", ascendingText: _message.default.format("dxDataGrid-sortingAscendingText"), descendingText: _message.default.format("dxDataGrid-sortingDescendingText"), clearText: _message.default.format("dxDataGrid-sortingClearText"), showSortIndexes: true } }), extenders: { views: { columnHeadersView: Base => class extends((0, _m_sorting_mixin.default)(Base)) { optionChanged(args) { const that = this; if ("sorting" === args.name) { that._invalidate(); args.handled = true } else { super.optionChanged(args) } } _createRow(row) { const $row = super._createRow(row); if ("header" === row.rowType) { _events_engine.default.on($row, (0, _index.addNamespace)(_click.name, "dxDataGridColumnHeadersView"), "td", this.createAction((e => { this._processHeaderAction(e.event, $row) }))) } return $row } _processHeaderAction(event, $row) { if ((0, _renderer.default)(event.currentTarget).parent().get(0) !== $row.get(0)) { return } const that = this; let keyName = null; const $cellElementFromEvent = (0, _renderer.default)(event.currentTarget); const rowIndex = $cellElementFromEvent.parent().index(); let columnIndex = -1; [].slice.call(that.getCellElements(rowIndex)).some((($cellElement, index) => { if ($cellElement === $cellElementFromEvent.get(0)) { columnIndex = index; return true } return })); const visibleColumns = that._columnsController.getVisibleColumns(rowIndex); const column = visibleColumns[columnIndex]; const editingController = that.getController("editing"); const editingMode = that.option("editing.mode"); const isCellEditing = editingController && editingController.isEditing() && ("batch" === editingMode || "cell" === editingMode); if (isCellEditing || !that._isSortableElement((0, _renderer.default)(event.target))) { return } if (column && !(0, _type.isDefined)(column.groupIndex) && !column.command) { if (event.shiftKey) { keyName = "shift" } else if ((0, _index.isCommandKeyPressed)(event)) { keyName = "ctrl" } setTimeout((() => { that._columnsController.changeSortOrder(column.index, keyName) })) } } _renderCellContent($cell, options) { const that = this; const { column: column } = options; if (!column.command && "header" === options.rowType) { that._applyColumnState({ name: "sort", rootElement: $cell, column: column, showColumnLines: that.option("showColumnLines") }) } super._renderCellContent.apply(this, arguments) } _columnOptionChanged(e) { const { changeTypes: changeTypes } = e; if (1 === changeTypes.length && changeTypes.sorting) { this._updateIndicators("sort"); return } super._columnOptionChanged(e) } }, headerPanel: Base => class extends((0, _m_sorting_mixin.default)(Base)) { optionChanged(args) { const that = this; if ("sorting" === args.name) { that._invalidate(); args.handled = true } else { super.optionChanged(args) } } _createGroupPanelItem($rootElement, groupColumn) { const that = this; const $item = super._createGroupPanelItem(...arguments); _events_engine.default.on($item, (0, _index.addNamespace)(_click.name, "dxDataGridHeaderPanel"), that.createAction((() => { that._processGroupItemAction(groupColumn.index) }))); that._applyColumnState({ name: "sort", rootElement: $item, column: { alignment: that.option("rtlEnabled") ? "right" : "left", allowSorting: groupColumn.allowSorting, sortOrder: "desc" === groupColumn.sortOrder ? "desc" : "asc", isGrouped: true }, showColumnLines: true }); return $item } _processGroupItemAction(groupColumnIndex) { setTimeout((() => this.getController("columns").changeSortOrder(groupColumnIndex))) } } } } } }, 2242: /*!***************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/grid_core/sorting/m_sorting_mixin.js ***! \***************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _message = _interopRequireDefault(__webpack_require__( /*! ../../../../common/core/localization/message */ 4671)); var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../../../core/renderer */ 64553)); var _type = __webpack_require__( /*! ../../../../core/utils/type */ 11528); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } exports.default = Base => class extends Base { _applyColumnState(options) { const that = this; let ariaSortState; let $sortIndicator; const sortingMode = that.option("sorting.mode"); const { rootElement: rootElement } = options; const { column: column } = options; const $indicatorsContainer = that._getIndicatorContainer(rootElement); if ("sort" === options.name) { rootElement.find(".dx-sort").remove(); !$indicatorsContainer.children().length && $indicatorsContainer.remove(); const isSortingAllowed = "none" !== sortingMode && column.allowSorting; const hasSeveralSortIndexes = that.getController && !!that.getController("columns").columnOption("sortIndex:1"); if (!(0, _type.isDefined)(column.groupIndex) && (isSortingAllowed || (0, _type.isDefined)(column.sortOrder))) { ariaSortState = "asc" === column.sortOrder ? "ascending" : "descending"; $sortIndicator = super._applyColumnState(options).toggleClass("dx-sort-up", "asc" === column.sortOrder).toggleClass("dx-sort-down", "desc" === column.sortOrder); if (hasSeveralSortIndexes && that.option("sorting.showSortIndexes") && column.sortIndex >= 0) { (0, _renderer.default)("").addClass("dx-sort-index-icon").text(column.sortIndex + 1).appendTo($sortIndicator); $sortIndicator.addClass("dx-sort-index") } if (isSortingAllowed) { options.rootElement.addClass(that.addWidgetPrefix("action")) } } this._setAriaSortAttribute(column, ariaSortState, rootElement, hasSeveralSortIndexes); return $sortIndicator } return super._applyColumnState(options) } _setAriaSortAttribute(column, ariaSortState, $rootElement, hasSeveralSortIndexes) { $rootElement.removeAttr("aria-roledescription"); if (column.isGrouped) { let description = this.localize("dxDataGrid-ariaNotSortedColumn"); if ((0, _type.isDefined)(column.sortOrder)) { description = "asc" === column.sortOrder ? this.localize("dxDataGrid-ariaSortedAscendingColumn") : this.localize("dxDataGrid-ariaSortedDescendingColumn") } this.setAria("roledescription", description, $rootElement) } else if (!(0, _type.isDefined)(column.sortOrder)) { this.setAria("sort", "none", $rootElement) } else { this.setAria("sort", ariaSortState, $rootElement); if (hasSeveralSortIndexes && column.sortIndex >= 0) { const ariaColumnHeader = _message.default.format("dxDataGrid-ariaColumnHeader"); const ariaSortIndex = _message.default.format("dxDataGrid-ariaSortIndex", column.sortIndex + 1); const description = `${ariaColumnHeader}, ${ariaSortIndex}`; this.setAria("roledescription", description, $rootElement) } } } _getIndicatorClassName(name) { if ("sort" === name) { return "dx-sort" } if ("sortIndex" === name) { return "dx-sort-index-icon" } return super._getIndicatorClassName(name) } _renderIndicator(options) { const { column: column } = options; const $container = options.container; const $indicator = options.indicator; if ("sort" === options.name) { const rtlEnabled = this.option("rtlEnabled"); if (!(0, _type.isDefined)(column.sortOrder)) { $indicator && $indicator.addClass("dx-sort-none") } if ($container.children().length && (!rtlEnabled && "left" === options.columnAlignment || rtlEnabled && "right" === options.columnAlignment)) { $container.prepend($indicator); return } } super._renderIndicator(options) } _updateIndicator($cell, column, indicatorName) { if ("sort" === indicatorName && (0, _type.isDefined)(column.groupIndex)) { return } return super._updateIndicator.apply(this, arguments) } _getIndicatorElements($cell, returnAll) { const $indicatorElements = super._getIndicatorElements($cell); return returnAll ? $indicatorElements : $indicatorElements && $indicatorElements.not(".dx-sort-none") } } }, 87960: /*!*********************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/grid_core/state_storing/m_state_storing.js ***! \*********************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.stateStoringModule = void 0; var _common = __webpack_require__( /*! ../../../../core/utils/common */ 17781); var _deferred = __webpack_require__( /*! ../../../../core/utils/deferred */ 87739); var _extend = __webpack_require__( /*! ../../../../core/utils/extend */ 52576); var _type = __webpack_require__( /*! ../../../../core/utils/type */ 11528); var _m_state_storing_core = __webpack_require__( /*! ./m_state_storing_core */ 93416); const processLoadState = that => { const columnsController = that.getController("columns"); const selectionController = that.getController("selection"); const exportController = that.getController("export"); const dataController = that.getController("data"); if (columnsController) { columnsController.columnsChanged.add((() => { that.updateState({ columns: columnsController.getUserState() }) })) } if (selectionController) { selectionController.selectionChanged.add((e => { that.updateState({ selectedRowKeys: e.selectedRowKeys, selectionFilter: e.selectionFilter }) })) } if (dataController) { that._initialPageSize = that.option("paging.pageSize"); that._initialFilterValue = that.option("filterValue"); dataController.changed.add((() => { const state = (that => { const pagerView = that.getView("pagerView"); const dataController = that.getController("data"); const state = { allowedPageSizes: pagerView ? pagerView.getPageSizes() : void 0, filterPanel: { filterEnabled: that.option("filterPanel.filterEnabled") }, filterValue: that.option("filterValue"), focusedRowKey: that.option("focusedRowEnabled") ? that.option("focusedRowKey") : void 0 }; return (0, _extend.extend)(state, dataController.getUserState()) })(that); that.updateState(state) })) } if (exportController) { exportController.selectionOnlyChanged.add((() => { that.updateState({ exportSelectionOnly: exportController.selectionOnly() }) })) } }; exports.stateStoringModule = { defaultOptions: () => ({ stateStoring: { enabled: false, storageKey: null, type: "localStorage", customLoad: null, customSave: null, savingTimeout: 2e3 } }), controllers: { stateStoring: _m_state_storing_core.StateStoringController }, extenders: { views: { rowsView: Base => class extends Base { init() { super.init(); this._dataController.stateLoaded.add((() => { if (this._dataController.isLoaded() && !this._dataController.getDataSource()) { this.setLoading(false); this.renderNoDataText(); const columnHeadersView = this.component.getView("columnHeadersView"); columnHeadersView && columnHeadersView.render(); this.component._fireContentReadyAction() } })) } } }, controllers: { stateStoring: Base => class extends Base { init() { super.init.apply(this, arguments); processLoadState(this); return this } isLoading() { return super.isLoading() || this.getDataController().isStateLoading() } state(state) { const result = super.state.apply(this, arguments); if (void 0 !== state) { this.applyState((0, _extend.extend)(true, {}, state)) } return result } updateState(state) { if (this.isEnabled()) { const oldState = this.state(); const newState = (0, _extend.extend)({}, oldState, state); const oldStateHash = (0, _common.getKeyHash)(oldState); const newStateHash = (0, _common.getKeyHash)(newState); if (!(0, _common.equalByValue)(oldStateHash, newStateHash)) { state = (0, _extend.extend)(true, {}, state); (0, _extend.extend)(this._state, state); this.save() } } else { (0, _extend.extend)(this._state, state) } } applyState(state) { var _this$getView; const { allowedPageSizes: allowedPageSizes } = state; const { searchText: searchText } = state; const { selectedRowKeys: selectedRowKeys } = state; const { selectionFilter: selectionFilter } = state; const scrollingMode = this.option("scrolling.mode"); const isVirtualScrollingMode = "virtual" === scrollingMode || "infinite" === scrollingMode; const showPageSizeSelector = true === this.option("pager.visible") && this.option("pager.showPageSizeSelector"); const hasHeight = null === (_this$getView = this.getView("rowsView")) || void 0 === _this$getView ? void 0 : _this$getView.hasHeight(); this.component.beginUpdate(); if (this.getColumnsController()) { this.getColumnsController().setUserState(state.columns) } if (this.getExportController()) { this.getExportController().selectionOnly(state.exportSelectionOnly) } if (!this.option("selection.deferred")) { this.option("selectedRowKeys", selectedRowKeys || []) } this.option("selectionFilter", selectionFilter); if (allowedPageSizes && "auto" === this.option("pager.allowedPageSizes")) { this.option("pager").allowedPageSizes = allowedPageSizes } if (this.option("focusedRowEnabled")) { this.option("focusedRowIndex", -1); this.option("focusedRowKey", state.focusedRowKey ?? null) } this.component.endUpdate(); this.option("searchPanel.text", searchText || ""); this.option("filterValue", ((that, state) => { const filterSyncController = that.getController("filterSync"); const columnsController = that.getController("columns"); const hasFilterState = state.columns || void 0 !== state.filterValue; if (filterSyncController) { if (hasFilterState) { return state.filterValue || filterSyncController.getFilterValueFromColumns(state.columns) } return that._initialFilterValue || filterSyncController.getFilterValueFromColumns(columnsController.getColumns()) } return null })(this, state)); this.option("filterPanel.filterEnabled", state.filterPanel ? state.filterPanel.filterEnabled : true); this.option("paging.pageIndex", (!isVirtualScrollingMode || hasHeight) && state.pageIndex || 0); this.option("paging.pageSize", (!isVirtualScrollingMode || showPageSizeSelector) && (0, _type.isDefined)(state.pageSize) ? state.pageSize : this._initialPageSize); this.getDataController() && this.getDataController().reset() } }, columns: Base => class extends Base { _shouldReturnVisibleColumns() { const result = super._shouldReturnVisibleColumns.apply(this, arguments); return result && (!this._stateStoringController.isEnabled() || this._stateStoringController.isLoaded()) } }, data: Base => class extends Base { dispose() { clearTimeout(this._restoreStateTimeoutID); super.dispose() } callbackNames() { return super.callbackNames().concat(["stateLoaded"]) } _refreshDataSource() { if (this._stateStoringController.isEnabled() && !this._stateStoringController.isLoaded()) { clearTimeout(this._restoreStateTimeoutID); const deferred = new _deferred.Deferred; this._restoreStateTimeoutID = setTimeout((() => { this._stateStoringController.load().always((() => { this._restoreStateTimeoutID = null })).done((() => { super._refreshDataSource(); this.stateLoaded.fire(); deferred.resolve() })).fail((error => { this.stateLoaded.fire(); this._handleLoadError(error || "Unknown error"); deferred.reject() })) })); return deferred.promise() } if (!this.isStateLoading()) { super._refreshDataSource() } } isLoading() { return super.isLoading() || this._stateStoringController.isLoading() } isStateLoading() { return (0, _type.isDefined)(this._restoreStateTimeoutID) } isLoaded() { return super.isLoaded() && !this.isStateLoading() } }, selection: Base => class extends Base { _fireSelectionChanged(options) { const isDeferredSelection = this.option("selection.deferred"); if (this._stateStoringController.isLoading() && isDeferredSelection) { return } super._fireSelectionChanged.apply(this, arguments) } } } } } }, 93416: /*!**************************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/grid_core/state_storing/m_state_storing_core.js ***! \**************************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = exports.StateStoringController = void 0; var _events_engine = _interopRequireDefault(__webpack_require__( /*! ../../../../common/core/events/core/events_engine */ 92774)); var _deferred = __webpack_require__( /*! ../../../../core/utils/deferred */ 87739); var _extend = __webpack_require__( /*! ../../../../core/utils/extend */ 52576); var _iterator = __webpack_require__( /*! ../../../../core/utils/iterator */ 21274); var _storage = __webpack_require__( /*! ../../../../core/utils/storage */ 98479); var _type = __webpack_require__( /*! ../../../../core/utils/type */ 11528); var _window = __webpack_require__( /*! ../../../../core/utils/window */ 3104); var _ui = _interopRequireDefault(__webpack_require__( /*! ../../../../ui/widget/ui.errors */ 35185)); var _m_modules = _interopRequireDefault(__webpack_require__( /*! ../m_modules */ 74854)); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } const DATE_REGEX = /^(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2}):(\d{2}(?:\.\d*)?)Z$/; const parseDates = function(state) { if (!state) { return }(0, _iterator.each)(state, ((key, value) => { if ((0, _type.isPlainObject)(value) || Array.isArray(value)) { parseDates(value) } else if ("string" === typeof value) { const date = DATE_REGEX.exec(value); if (date) { state[key] = new Date(Date.UTC(+date[1], +date[2] - 1, +date[3], +date[4], +date[5], +date[6])) } } })) }; const getStorage = function(options) { const storage = "sessionStorage" === options.type ? (0, _storage.sessionStorage)() : (0, _window.getWindow)().localStorage; if (!storage) { throw new Error("E1007") } return storage }; const getUniqueStorageKey = function(options) { return (0, _type.isDefined)(options.storageKey) ? options.storageKey : "storage" }; class StateStoringController extends _m_modules.default.ViewController { getDataController() { return this.getController("data") } getExportController() { return this.getController("export") } getColumnsController() { return this.getController("columns") } init() { this._state = {}; this._isLoaded = false; this._isLoading = false; this._windowUnloadHandler = () => { if (void 0 !== this._savingTimeoutID) { this._saveState(this.state()) } }; _events_engine.default.on((0, _window.getWindow)(), "visibilitychange", this._windowUnloadHandler); return this } optionChanged(args) { const that = this; if ("stateStoring" === args.name) { if (that.isEnabled() && !that.isLoading()) { that.load() } args.handled = true } else { super.optionChanged(args) } } dispose() { clearTimeout(this._savingTimeoutID); _events_engine.default.off((0, _window.getWindow)(), "visibilitychange", this._windowUnloadHandler) } _loadState() { const options = this.option("stateStoring"); if ("custom" === options.type) { return options.customLoad && options.customLoad() } try { return JSON.parse(getStorage(options).getItem(getUniqueStorageKey(options))) } catch (e) { _ui.default.log("W1022", "State storing", e.message) } } _saveState(state) { const options = this.option("stateStoring"); if ("custom" === options.type) { options.customSave && options.customSave(state); return } try { getStorage(options).setItem(getUniqueStorageKey(options), JSON.stringify(state)) } catch (e) { _ui.default.log(e.message) } } publicMethods() { return ["state"] } isEnabled() { return this.option("stateStoring.enabled") } isLoaded() { return this._isLoaded } isLoading() { return this._isLoading } load() { this._isLoading = true; const loadResult = (0, _deferred.fromPromise)(this._loadState()); loadResult.always((() => { this._isLoaded = true; this._isLoading = false })).done((state => { if (null !== state && !(0, _type.isEmptyObject)(state)) { this.state(state) } })); return loadResult } state(state) { const that = this; if (!arguments.length) { return (0, _extend.extend)(true, {}, that._state) } that._state = (0, _extend.extend)({}, state); parseDates(that._state) } save() { const that = this; clearTimeout(that._savingTimeoutID); that._savingTimeoutID = setTimeout((() => { that._saveState(that.state()); that._savingTimeoutID = void 0 }), that.option("stateStoring.savingTimeout")) } } exports.StateStoringController = StateStoringController; exports.default = { StateStoringController: StateStoringController } }, 87396: /*!************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/grid_core/sticky_columns/const.js ***! \************************************************************************************************/ function(__unused_webpack_module, exports) { Object.defineProperty(exports, "__esModule", { value: true }); exports.StickyPosition = exports.STICKY_BORDER_WIDTH = exports.CLASSES = void 0; exports.STICKY_BORDER_WIDTH = 2; var StickyPosition; ! function(StickyPosition) { StickyPosition.Left = "left"; StickyPosition.Right = "right"; StickyPosition.Sticky = "sticky" }(StickyPosition || (exports.StickyPosition = StickyPosition = {})); exports.CLASSES = { stickyColumn: "sticky-column", stickyColumnLeft: "sticky-column-left", stickyColumnRight: "sticky-column-right", stickyColumnBorderRight: "sticky-column-border-right", stickyColumnBorderLeft: "sticky-column-border-left", stickyColumns: "sticky-columns", firstHeader: "first-header", columnNoBorder: "column-no-border", groupRowContainer: "group-row-container", focusedFixedElement: "dx-focused-fixed-element", focused: "dx-focused", hidden: "dx-hidden" } }, 52511: /*!**********************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/grid_core/sticky_columns/dom.js ***! \**********************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.GridCoreStickyColumnsDom = void 0; var _renderer = (e = __webpack_require__( /*! ../../../../core/renderer */ 64553), e && e.__esModule ? e : { default: e }); var e; var _position = __webpack_require__( /*! ../../../../core/utils/position */ 41639); var _type = __webpack_require__( /*! ../../../../core/utils/type */ 11528); var _const = __webpack_require__( /*! ./const */ 87396); var _utils = __webpack_require__( /*! ./utils */ 24378); const isStickyCellPinnedToLeft = ($cell, $container, addWidgetPrefix) => { const isStickyCell = $cell.hasClass(addWidgetPrefix(_const.CLASSES.stickyColumn)); if (!isStickyCell) { return false } const cellLeft = parseFloat($cell[0].style.left); const cellRect = (0, _position.getBoundingRect)($cell[0]); const containerRect = (0, _position.getBoundingRect)($container[0]); const calculatedCellLeft = cellRect.left - containerRect.left; return Math.round(cellLeft) >= Math.round(calculatedCellLeft) }; const isStickyCellPinnedToRight = ($cell, $container, addWidgetPrefix) => { const isStickyCell = $cell.hasClass(addWidgetPrefix(_const.CLASSES.stickyColumn)); if (!isStickyCell) { return false } const cellRight = parseFloat($cell[0].style.right); const cellRect = (0, _position.getBoundingRect)($cell[0]); const containerRect = (0, _position.getBoundingRect)($container[0]); const calculatedCellRight = containerRect.right - cellRect.right; return Math.round(cellRight) >= Math.round(calculatedCellRight) }; const isLastLeftFixedCell = ($cell, addWidgetPrefix) => $cell.hasClass(addWidgetPrefix(_const.CLASSES.stickyColumnLeft)) && $cell.hasClass(addWidgetPrefix(_const.CLASSES.stickyColumnBorderRight)); const isFirstRightFixedCell = ($cell, addWidgetPrefix) => $cell.hasClass(addWidgetPrefix(_const.CLASSES.stickyColumnRight)) && $cell.hasClass(addWidgetPrefix(_const.CLASSES.stickyColumnBorderLeft)); const isFixedCell = ($cell, addWidgetPrefix) => $cell.hasClass(addWidgetPrefix(_const.CLASSES.stickyColumnLeft)) || $cell.hasClass(addWidgetPrefix(_const.CLASSES.stickyColumnRight)) || $cell.hasClass(addWidgetPrefix(_const.CLASSES.stickyColumn)); const getNonFixedAreaBoundingRect = ($cells, $container, addWidgetPrefix) => { const containerRect = (0, _position.getBoundingRect)($container.get(0)); const result = { left: containerRect.left, right: containerRect.right }; if (null !== $cells && void 0 !== $cells && $cells.length) { const $lastLeftFixedCell = (($cells, $container, addWidgetPrefix) => { const rtlEnabled = "rtl" === $container.css("direction"); const processedCells = rtlEnabled ? $cells.toArray() : $cells.toArray().reverse(); const lastLeftFixedCell = processedCells.find((cell => isStickyCellPinnedToLeft((0, _renderer.default)(cell), $container, addWidgetPrefix) || isLastLeftFixedCell((0, _renderer.default)(cell), addWidgetPrefix))); return (0, _renderer.default)(lastLeftFixedCell ?? "") })($cells, $container, addWidgetPrefix); const $firstRightFixedCell = (($cells, $container, addWidgetPrefix) => { const rtlEnabled = "rtl" === $container.css("direction"); const processedCells = rtlEnabled ? $cells.toArray().reverse() : $cells.toArray(); const firstRightFixedCell = processedCells.find((cell => isStickyCellPinnedToRight((0, _renderer.default)(cell), $container, addWidgetPrefix) || isFirstRightFixedCell((0, _renderer.default)(cell), addWidgetPrefix))); return (0, _renderer.default)(firstRightFixedCell ?? "") })($cells, $container, addWidgetPrefix); if (null !== $lastLeftFixedCell && void 0 !== $lastLeftFixedCell && $lastLeftFixedCell.length) { result.left = Math.round((0, _position.getBoundingRect)($lastLeftFixedCell[0]).right) } if (null !== $firstRightFixedCell && void 0 !== $firstRightFixedCell && $firstRightFixedCell.length) { result.right = Math.round((0, _position.getBoundingRect)($firstRightFixedCell[0]).left) } } return result }; const needToSkipHeaderCell = $cell => !$cell.is("[tabindex]"); exports.GridCoreStickyColumnsDom = { toggleFirstHeaderClass: ($cell, value, addWidgetPrefix) => { $cell.toggleClass(addWidgetPrefix(_const.CLASSES.firstHeader), value) }, toggleColumnNoBorderClass: ($cell, value, addWidgetPrefix) => { $cell.toggleClass(addWidgetPrefix(_const.CLASSES.columnNoBorder), value) }, addStickyColumnClass: ($cell, fixedPosition, addWidgetPrefix) => { switch (fixedPosition) { case _const.StickyPosition.Right: $cell.addClass(addWidgetPrefix(_const.CLASSES.stickyColumnRight)); break; case _const.StickyPosition.Sticky: $cell.addClass(addWidgetPrefix(_const.CLASSES.stickyColumn)); break; default: $cell.addClass(addWidgetPrefix(_const.CLASSES.stickyColumnLeft)) } }, addStickyColumnBorderLeftClass: ($cell, addWidgetPrefix) => { $cell.addClass(addWidgetPrefix(_const.CLASSES.stickyColumnBorderLeft)) }, addStickyColumnBorderRightClass: ($cell, addWidgetPrefix) => { $cell.addClass(addWidgetPrefix(_const.CLASSES.stickyColumnBorderRight)) }, doesGroupCellEndInFirstColumn: $groupCell => { const $groupRow = $groupCell.parent(); const commandColumns = $groupRow.children().filter((i => i < $groupCell.index())); const groupColSpanWithoutCommand = $groupCell.attr("colspan") - commandColumns.length; return 1 === groupColSpanWithoutCommand }, toggleStickyColumnsClass: ($element, hasStickyColumns, addWidgetPrefix) => { $element.toggleClass(addWidgetPrefix(_const.CLASSES.stickyColumns), hasStickyColumns) }, getLeftFixedCells: ($cells, addWidgetPrefix) => $cells.filter(((_, cell) => (0, _renderer.default)(cell).hasClass(addWidgetPrefix(_const.CLASSES.stickyColumnLeft)))), getRightFixedCells: ($cells, addWidgetPrefix) => $cells.filter(((_, cell) => (0, _renderer.default)(cell).hasClass(addWidgetPrefix(_const.CLASSES.stickyColumnRight)))), getNonFixedAndStickyCells: ($cells, addWidgetPrefix) => $cells.filter(((_, cell) => (0, _renderer.default)(cell).hasClass(addWidgetPrefix(_const.CLASSES.stickyColumn)) || !isFixedCell((0, _renderer.default)(cell), addWidgetPrefix))), getNonFixedAreaBoundingRect: getNonFixedAreaBoundingRect, getScrollPadding: ($cells, $container, addWidgetPrefix) => { const containerRect = (0, _position.getBoundingRect)($container.get(0)); const nonFixedAreaBoundingRect = getNonFixedAreaBoundingRect($cells, $container, addWidgetPrefix); return { left: nonFixedAreaBoundingRect.left - containerRect.left, right: containerRect.right - nonFixedAreaBoundingRect.right } }, getNextHeaderCell: function($cell) { let direction = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : "next"; let $nextCell = $cell; let $nextRow = $cell.parent(); do { $nextCell = "next" === direction ? $nextCell.next() : $nextCell.prev(); if (!$nextCell.length) { $nextRow = "next" === direction ? $nextRow.next() : $nextRow.prev(); if ($nextRow.length) { $nextCell = "next" === direction ? $nextRow.children().first() : $nextRow.children().last() } } } while ($nextCell.length && needToSkipHeaderCell($nextCell)); return $nextCell }, noNeedToCreateResizingPoint: (that, _ref, addWidgetPrefix) => { let { point: point, column: column, nextColumn: nextColumn } = _ref; const { item: item, isLeftBoundary: isLeftBoundary, isRightBoundary: isRightBoundary } = point; const $item = (0, _renderer.default)(item); const offsetX = Math.round(point.x); const rtlEnabled = that.option("rtlEnabled"); const isSplitPoint = (0, _type.isDefined)(isLeftBoundary) || (0, _type.isDefined)(isRightBoundary); const $cells = (0, _renderer.default)(that.getColumnElements() ?? ""); const $container = (0, _renderer.default)(that.getContent()); const isFixedPoint = (null === column || void 0 === column ? void 0 : column.fixed) && (null === nextColumn || void 0 === nextColumn ? void 0 : nextColumn.fixed); const nonFixedAreaBoundingRect = getNonFixedAreaBoundingRect($cells, $container, addWidgetPrefix); if (isFixedPoint || (0, _utils.isFixedEdge)(point, column, nextColumn)) { return false } if (isSplitPoint) { if (isLastLeftFixedCell($item, addWidgetPrefix) || isStickyCellPinnedToLeft($item, $container, addWidgetPrefix)) { return isLeftBoundary } if (isFirstRightFixedCell($item, addWidgetPrefix) || isStickyCellPinnedToRight($item, $container, addWidgetPrefix)) { return isRightBoundary } } const isOutsideVisibleArea = offsetX < nonFixedAreaBoundingRect.left || offsetX > nonFixedAreaBoundingRect.right; const isPointBoundary = offsetX === nonFixedAreaBoundingRect.left || offsetX === nonFixedAreaBoundingRect.right; const isLastOrFirstPoint = rtlEnabled ? 0 === point.index : point.index === $cells.length; return isOutsideVisibleArea || !isLastOrFirstPoint && isPointBoundary }, isFixedCellPinnedToRight: ($cell, $container, addWidgetPrefix) => $cell.hasClass(addWidgetPrefix(_const.CLASSES.stickyColumnRight)) || isStickyCellPinnedToRight($cell, $container, addWidgetPrefix), noNeedToCreateReorderingPoint: (point, $cells, $container, addWidgetPrefix) => { const { item: item, isLeftBoundary: isLeftBoundary, isRightBoundary: isRightBoundary } = point; const $item = (0, _renderer.default)(item); const pointX = Math.round(point.x); const isSplitPoint = (0, _type.isDefined)(isLeftBoundary) || (0, _type.isDefined)(isRightBoundary); const nonFixedAreaBoundingRect = getNonFixedAreaBoundingRect($cells, $container, addWidgetPrefix); if (isStickyCellPinnedToLeft($item, $container, addWidgetPrefix)) { return isSplitPoint && !isLeftBoundary } if (isStickyCellPinnedToRight($item, $container, addWidgetPrefix)) { return isSplitPoint && !isRightBoundary } return pointX < nonFixedAreaBoundingRect.left || pointX > nonFixedAreaBoundingRect.right }, isFixedCell: isFixedCell, isStickyCell: ($cell, addWidgetPrefix) => $cell.hasClass(addWidgetPrefix(_const.CLASSES.stickyColumn)), isStickyCellPinned: ($cell, $container, addWidgetPrefix) => isStickyCellPinnedToLeft($cell, $container, addWidgetPrefix) || isStickyCellPinnedToRight($cell, $container, addWidgetPrefix), isOutsideVisibleArea: ($element, $cells, $container, addWidgetPrefix) => { const elementRect = (0, _position.getBoundingRect)($element.get(0)); const elementRectLeft = Math.round(elementRect.left); const elementRectRight = Math.round(elementRect.right); const nonFixedAreaBoundingRect = getNonFixedAreaBoundingRect($cells, $container, addWidgetPrefix); return elementRectLeft < nonFixedAreaBoundingRect.left || elementRectRight > nonFixedAreaBoundingRect.right }, isLastCell: $cell => { if (!$cell.is("td")) { return false } const $lastCell = $cell.parent().children().last(); return $cell[0] === $lastCell[0] } } }, 67624: /*!***********************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/grid_core/sticky_columns/m_sticky_columns.js ***! \***********************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.stickyColumnsModule = void 0; var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../../../core/renderer */ 64553)); var _position = __webpack_require__( /*! ../../../../core/utils/position */ 41639); var _size = __webpack_require__( /*! ../../../../core/utils/size */ 57653); var _const = __webpack_require__( /*! ../adaptivity/const */ 26854); var _m_keyboard_navigation_utils = __webpack_require__( /*! ../keyboard_navigation/m_keyboard_navigation_utils */ 93734); var _m_utils = _interopRequireDefault(__webpack_require__( /*! ../m_utils */ 53226)); var _const2 = __webpack_require__( /*! ../master_detail/const */ 9649); var _m_rows_view = __webpack_require__( /*! ../views/m_rows_view */ 77081); var _const3 = __webpack_require__( /*! ./const */ 87396); var _dom = __webpack_require__( /*! ./dom */ 52511); var _utils = __webpack_require__( /*! ./utils */ 24378); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } const baseStickyColumns = Base => class extends Base { _addStickyColumnBorderLeftClass($cell, column, rowIndex) { let onlyWithinBandColumn = arguments.length > 3 && void 0 !== arguments[3] ? arguments[3] : false; let fixedPosition = arguments.length > 4 ? arguments[4] : void 0; const isFirstFixedCell = (0, _utils.isFirstFixedColumn)(this._columnsController, column, rowIndex, onlyWithinBandColumn, fixedPosition); if (isFirstFixedCell) { _dom.GridCoreStickyColumnsDom.addStickyColumnBorderLeftClass($cell, this.addWidgetPrefix.bind(this)) } } _addStickyColumnBorderRightClass($cell, column, rowIndex) { let onlyWithinBandColumn = arguments.length > 3 && void 0 !== arguments[3] ? arguments[3] : false; let fixedPosition = arguments.length > 4 ? arguments[4] : void 0; const isLastFixedCell = (0, _utils.isLastFixedColumn)(this._columnsController, column, rowIndex, onlyWithinBandColumn, fixedPosition); if (isLastFixedCell) { _dom.GridCoreStickyColumnsDom.addStickyColumnBorderRightClass($cell, this.addWidgetPrefix.bind(this)) } } updateBorderCellClasses($cell, column, rowIndex) { const columnsController = this._columnsController; const isRowsView = "rowsView" === this.name; const needToRemoveBorder = (0, _utils.needToRemoveColumnBorder)(columnsController, column, rowIndex, isRowsView); const isFirstColumn = null === columnsController || void 0 === columnsController ? void 0 : columnsController.isFirstColumn(column, rowIndex); _dom.GridCoreStickyColumnsDom.toggleColumnNoBorderClass($cell, needToRemoveBorder, this.addWidgetPrefix.bind(this)); _dom.GridCoreStickyColumnsDom.toggleFirstHeaderClass($cell, isFirstColumn, this.addWidgetPrefix.bind(this)) } _updateBorderClasses() { const isColumnHeadersView = "columnHeadersView" === this.name; const $rows = this._getRowElementsCore().not(`.${_const2.CLASSES.detailRow}`).toArray(); $rows.forEach(((row, index) => { const rowIndex = isColumnHeadersView ? index : null; const $cells = (0, _renderer.default)(row).children("td").toArray(); let columns = this.getColumns(rowIndex); columns = (0, _utils.processFixedColumns)(this._columnsController, columns); $cells.forEach(((cell, cellIndex) => { const $cell = (0, _renderer.default)(cell); const column = columns[cellIndex]; if (column.visibleWidth !== _const.HIDDEN_COLUMNS_WIDTH) { this.updateBorderCellClasses($cell, column, rowIndex) } })) })) } _renderCore(options) { const deferred = super._renderCore(options); const $element = this.element(); const hasStickyColumns = this.hasStickyColumns(); _dom.GridCoreStickyColumnsDom.toggleStickyColumnsClass($element, hasStickyColumns, this.addWidgetPrefix.bind(this)); if (hasStickyColumns) { return deferred.done((() => { this.setStickyOffsets() })) } return deferred } _createCell(options) { const { column: column } = options; const { rowType: rowType } = options; const $cell = super._createCell(options); const hasStickyColumns = this.hasStickyColumns(); const rowIndex = "header" === rowType ? options.rowIndex : null; const isSummary = "groupFooter" === rowType || "totalFooter" === rowType || "group" === rowType; const isExpandColumn = column.command && "expand" === column.command; if (hasStickyColumns && !(0, _utils.needToDisableStickyColumn)(this._columnsController, column)) { this.updateBorderCellClasses($cell, column, rowIndex); if (column.fixed) { const fixedPosition = (0, _utils.getColumnFixedPosition)(this._columnsController, column); _dom.GridCoreStickyColumnsDom.addStickyColumnClass($cell, fixedPosition, this.addWidgetPrefix.bind(this)); if (!isSummary && !isExpandColumn) { switch (fixedPosition) { case _const3.StickyPosition.Right: this._addStickyColumnBorderLeftClass($cell, column, rowIndex, false, _const3.StickyPosition.Right); break; case _const3.StickyPosition.Sticky: this._addStickyColumnBorderLeftClass($cell, column, rowIndex, true); this._addStickyColumnBorderRightClass($cell, column, rowIndex, true); break; default: this._addStickyColumnBorderRightClass($cell, column, rowIndex, false, _const3.StickyPosition.Left) } } } } return $cell } setStickyOffsets(rowIndex, offsets) { const columnsController = this._columnsController; const rtlEnabled = this.option("rtlEnabled"); const showColumnHeaders = this.option("showColumnHeaders"); let widths = this.getColumnWidths(void 0, rowIndex); let columns = this.getColumns(showColumnHeaders ? rowIndex : void 0); columns = (0, _utils.processFixedColumns)(this._columnsController, columns); if (rtlEnabled) { columns = rtlEnabled ? [...columns].reverse() : columns; widths = rtlEnabled ? [...widths].reverse() : widths } columns.forEach(((column, columnIndex) => { if (column.fixed) { const visibleColumnIndex = rtlEnabled ? columns.length - columnIndex - 1 : columnIndex; const offset = (0, _utils.getStickyOffset)(columnsController, columns, widths, columnIndex, offsets); if (offsets) { offsets[column.index] = offset } const styleProps = (0, _utils.normalizeOffset)(offset); this.setCellProperties(styleProps, visibleColumnIndex, rowIndex) } })) } setColumnWidths(options) { const hasStickyColumns = this.hasStickyColumns(); const columnsResizerController = this.getController("columnsResizer"); const isColumnResizing = null === columnsResizerController || void 0 === columnsResizerController ? void 0 : columnsResizerController.isResizing(); super.setColumnWidths(options); if (hasStickyColumns && isColumnResizing) { this.setStickyOffsets() } } _resizeCore() { const hasStickyColumns = this.hasStickyColumns(); const adaptiveColumns = this.getController("adaptiveColumns"); const hidingColumnsQueue = null === adaptiveColumns || void 0 === adaptiveColumns ? void 0 : adaptiveColumns.getHidingColumnsQueue(); super._resizeCore.apply(this, arguments); if (hasStickyColumns) { this.setStickyOffsets(); if (null !== hidingColumnsQueue && void 0 !== hidingColumnsQueue && hidingColumnsQueue.length) { this._updateBorderClasses() } } } hasStickyColumns() { var _this$_columnsControl; const stickyColumns = null === (_this$_columnsControl = this._columnsController) || void 0 === _this$_columnsControl ? void 0 : _this$_columnsControl.getStickyColumns(); return true !== this.option("columnFixing.legacyMode") && !!stickyColumns.length } }; exports.stickyColumnsModule = { extenders: { views: { columnHeadersView: Base => class extends(baseStickyColumns(Base)) { setStickyOffsets() { const offsets = {}; const rows = this._getRows(); for (let rowIndex = 0; rowIndex < rows.length; rowIndex++) { var _rows$rowIndex; const isFilterRow = "filter" === (null === rows || void 0 === rows || null === (_rows$rowIndex = rows[rowIndex]) || void 0 === _rows$rowIndex ? void 0 : _rows$rowIndex.rowType); super.setStickyOffsets(rowIndex, isFilterRow ? void 0 : offsets) } } getContextMenuItems(options) { const { column: column } = options; const columnsController = this._columnsController; const columnFixingOptions = this.option("columnFixing"); let items = super.getContextMenuItems(options); if (options.row && "header" === options.row.rowType) { if (true === columnFixingOptions.enabled && column && column.allowFixing) { const onItemClick = params => { switch (params.itemData.value) { case "none": this._columnsController.columnOption(column.index, "fixed", false); break; case "left": this._columnsController.columnOption(column.index, { fixed: true, fixedPosition: "left" }); break; case "right": this._columnsController.columnOption(column.index, { fixed: true, fixedPosition: "right" }); break; case "sticky": this._columnsController.columnOption(column.index, { fixed: true, fixedPosition: "sticky" }) } }; const fixedPositionItems = [{ text: columnFixingOptions.texts.leftPosition, icon: columnFixingOptions.icons.leftPosition, value: "left", disabled: column.fixed && (!column.fixedPosition || "left" === column.fixedPosition), onItemClick: onItemClick }, { text: columnFixingOptions.texts.rightPosition, icon: columnFixingOptions.icons.rightPosition, value: "right", disabled: column.fixed && "right" === column.fixedPosition, onItemClick: onItemClick }]; if (true !== this.option("columnFixing.legacyMode") && !columnsController.isVirtualMode()) { fixedPositionItems.push({ text: columnFixingOptions.texts.stickyPosition, icon: columnFixingOptions.icons.stickyPosition, value: "sticky", disabled: column.fixed && column.fixedPosition === _const3.StickyPosition.Sticky, onItemClick: onItemClick }) } items = items || []; items.push({ text: columnFixingOptions.texts.fix, icon: columnFixingOptions.icons.fix, beginGroup: true, items: fixedPositionItems }, { text: columnFixingOptions.texts.unfix, icon: columnFixingOptions.icons.unfix, value: "none", disabled: !column.fixed, onItemClick: onItemClick }) } } return items } }, rowsView: Base => class extends(baseStickyColumns(Base)) { _getMasterDetailWidth() { const componentWidth = (0, _size.getWidth)(this.component.$element()) ?? 0; const borderWidth = _m_utils.default.getComponentBorderWidth(this, this._$element); return componentWidth - borderWidth - this.getScrollbarWidth() } _renderMasterDetailCell($row, row, options) { const $detailCell = super._renderMasterDetailCell($row, row, options); if (this.hasStickyColumns()) { $detailCell.addClass(this.addWidgetPrefix(_const3.CLASSES.stickyColumnLeft)); (0, _size.setWidth)($detailCell, this._getMasterDetailWidth()) } return $detailCell } _updateMasterDetailWidths() { const width = this._getMasterDetailWidth(); const $masterDetailCells = this._getRowElements().children(".dx-master-detail-cell"); (0, _size.setWidth)($masterDetailCells, `${width}px`) } setStickyOffsets(rowIndex, offsets) { super.setStickyOffsets(rowIndex, offsets); this.setStickyOffsetsForGroupCells() } setStickyOffsetsForGroupCells() { const groupColumns = this._columnsController.getGroupColumns(); let columns = this.getColumns(); let widths = this.getColumnWidths(); const columnsCountBeforeGroups = this._getColumnsCountBeforeGroups(columns); const rtlEnabled = this.option("rtlEnabled"); if (rtlEnabled) { columns = rtlEnabled ? [...columns].reverse() : columns; widths = rtlEnabled ? [...widths].reverse() : widths } const $tableElement = this.getTableElement(); groupColumns.forEach((column => { const columnIndex = columnsCountBeforeGroups + column.groupIndex + 1; const visibleColumnIndex = rtlEnabled ? columns.length - columnIndex - 1 : columnIndex; const offset = (0, _utils.getStickyOffset)(this._columnsController, columns, widths, visibleColumnIndex); const styleProps = (0, _utils.normalizeOffset)(offset); const $cells = $tableElement.children().children(".dx-group-row").find(`.dx-group-cell[aria-colindex='${columnIndex+1}']`); for (let i = 0; i < $cells.length; i += 1) { const cell = $cells.get(i); const container = (0, _renderer.default)(cell).find(".dx-datagrid-group-row-container").get(0); Object.assign(cell.style, styleProps); Object.assign(container.style, styleProps) } })) } _resizeCore() { const hasStickyColumns = this.hasStickyColumns(); super._resizeCore.apply(this, arguments); if (hasStickyColumns) { this._updateMasterDetailWidths() } } _renderCellContent($cell, options, renderOptions) { if (!(0, _m_rows_view.isGroupRow)(options) || !this.hasStickyColumns()) { return super._renderCellContent($cell, options, renderOptions) } const $container = (0, _renderer.default)("
").addClass(this.addWidgetPrefix(_const3.CLASSES.groupRowContainer)).appendTo($cell); return super._renderCellContent($container, options, renderOptions) } _renderGroupSummaryCellsCore($groupCell, options, groupCellColSpan, alignByColumnCellCount) { super._renderGroupSummaryCellsCore($groupCell, options, groupCellColSpan, alignByColumnCellCount); const stickySummarySelector = `.${this.addWidgetPrefix(_const3.CLASSES.stickyColumn)}`; if ($groupCell.parent().find(stickySummarySelector).length && _dom.GridCoreStickyColumnsDom.doesGroupCellEndInFirstColumn($groupCell)) { _dom.GridCoreStickyColumnsDom.addStickyColumnBorderRightClass($groupCell, this.addWidgetPrefix.bind(this)) } } _handleScroll(e) { const hasStickyColumns = this.hasStickyColumns(); super._handleScroll(e); if (hasStickyColumns) { const editorFactoryController = this.getController("editorFactory"); const hasOverlayElements = editorFactoryController.hasOverlayElements(); if (hasOverlayElements) { const $focusedElement = editorFactoryController.focus(); editorFactoryController.focus($focusedElement) } } } _scrollToElement($element, offset) { let scrollOffset = offset; const scrollable = this.getScrollable(); const hasStickyColumns = this.hasStickyColumns(); if (hasStickyColumns && scrollable) { const isFixedCell = _dom.GridCoreStickyColumnsDom.isFixedCell($element, this.addWidgetPrefix.bind(this)); if (!$element.is("td") || isFixedCell) { return } const $row = null === $element || void 0 === $element ? void 0 : $element.closest("tr"); const $cells = null === $row || void 0 === $row ? void 0 : $row.children(); scrollOffset = _dom.GridCoreStickyColumnsDom.getScrollPadding($cells, (0, _renderer.default)(scrollable.container()), this.addWidgetPrefix.bind(this)) } super._scrollToElement($element, scrollOffset) } }, footerView: Base => class extends(baseStickyColumns(Base)) {} }, controllers: { columnsResizer: Base => class extends Base { getSeparatorOffsetX($cell) { var _this$_columnHeadersV; const hasStickyColumns = null === (_this$_columnHeadersV = this._columnHeadersView) || void 0 === _this$_columnHeadersV ? void 0 : _this$_columnHeadersV.hasStickyColumns(); if (hasStickyColumns) { const $container = (0, _renderer.default)(this._columnHeadersView.getContent()); const isFixedCellPinnedToRight = _dom.GridCoreStickyColumnsDom.isFixedCellPinnedToRight($cell, $container, this.addWidgetPrefix.bind(this)); const isWidgetResizingMode = "widget" === this.option("columnResizingMode"); if (isWidgetResizingMode && isFixedCellPinnedToRight) { var _$cell$offset; return (null === (_$cell$offset = $cell.offset()) || void 0 === _$cell$offset ? void 0 : _$cell$offset.left) ?? 0 } } return super.getSeparatorOffsetX($cell) } _correctColumnIndexForPoint(point, correctionValue, columns) { const rtlEnabled = this.option("rtlEnabled"); const isWidgetResizingMode = "widget" === this.option("columnResizingMode"); const columnIndex = Math.max(point.index - 1, 0); const column = columns[columnIndex]; const nextColumnIndex = this._getNextColumnIndex(columnIndex); const nextColumn = columns[nextColumnIndex]; if (isWidgetResizingMode && !(0, _utils.isFixedEdge)(point, column, nextColumn)) { const $container = (0, _renderer.default)(this._columnHeadersView.getContent()); const isFixedCellPinnedToRight = _dom.GridCoreStickyColumnsDom.isFixedCellPinnedToRight((0, _renderer.default)(point.item), $container, this.addWidgetPrefix.bind(this)); if (isFixedCellPinnedToRight) { point.columnIndex -= rtlEnabled ? 1 : 0; return } } super._correctColumnIndexForPoint(point, correctionValue, columns) } _needToInvertResizing($cell) { const result = super._needToInvertResizing($cell); const isWidgetResizingMode = "widget" === this.option("columnResizingMode"); if (!result && isWidgetResizingMode) { const $container = (0, _renderer.default)(this._columnHeadersView.getContent()); return _dom.GridCoreStickyColumnsDom.isFixedCellPinnedToRight($cell, $container, this.addWidgetPrefix.bind(this)) } return result } _generatePointsByColumns() { var _this$_columnHeadersV2; const hasStickyColumns = null === (_this$_columnHeadersV2 = this._columnHeadersView) || void 0 === _this$_columnHeadersV2 ? void 0 : _this$_columnHeadersV2.hasStickyColumns(); super._generatePointsByColumns(hasStickyColumns) } _pointCreated(point, cellsLength, columns) { var _this$_columnHeadersV3; const hasStickyColumns = null === (_this$_columnHeadersV3 = this._columnHeadersView) || void 0 === _this$_columnHeadersV3 ? void 0 : _this$_columnHeadersV3.hasStickyColumns(); const result = super._pointCreated(point, cellsLength, columns); const needToCheckPoint = hasStickyColumns && cellsLength > 0; if (needToCheckPoint && !result) { const column = columns[point.index - 1]; const nextColumnIndex = this._getNextColumnIndex(point.index - 1); const nextColumn = columns[nextColumnIndex]; return _dom.GridCoreStickyColumnsDom.noNeedToCreateResizingPoint(this._columnHeadersView, { point: point, column: column, nextColumn: nextColumn }, this.addWidgetPrefix.bind(this)) } return result } }, draggingHeader: Base => class extends Base { _generatePointsByColumns(options) { var _this$_columnHeadersV4; const hasStickyColumns = null === (_this$_columnHeadersV4 = this._columnHeadersView) || void 0 === _this$_columnHeadersV4 ? void 0 : _this$_columnHeadersV4.hasStickyColumns(); const { sourceLocation: sourceLocation, sourceColumn: sourceColumn, targetDraggingPanel: targetDraggingPanel } = options; const isDraggingBetweenHeaders = "headers" === sourceLocation && "headers" === (null === targetDraggingPanel || void 0 === targetDraggingPanel ? void 0 : targetDraggingPanel.getName()); if (hasStickyColumns && isDraggingBetweenHeaders) { const columnFixedPosition = (0, _utils.getColumnFixedPosition)(this._columnsController, sourceColumn); switch (true) { case sourceColumn.fixed && columnFixedPosition === _const3.StickyPosition.Left: options.columnElements = _dom.GridCoreStickyColumnsDom.getLeftFixedCells(options.columnElements, this.addWidgetPrefix.bind(this)); options.startColumnIndex = options.columnElements.eq(0).index(); break; case sourceColumn.fixed && columnFixedPosition === _const3.StickyPosition.Right: options.columnElements = _dom.GridCoreStickyColumnsDom.getRightFixedCells(options.columnElements, this.addWidgetPrefix.bind(this)); options.startColumnIndex = options.columnElements.eq(0).index(); break; default: options.columnElements = _dom.GridCoreStickyColumnsDom.getNonFixedAndStickyCells(options.columnElements, this.addWidgetPrefix.bind(this)); options.startColumnIndex = options.columnElements.eq(0).index() } } return super._generatePointsByColumns(options, hasStickyColumns) } _pointCreated(point, columns, location, sourceColumn) { const hasStickyColumns = this._columnHeadersView.hasStickyColumns(); const $cells = this._columnHeadersView.getColumnElements(); const needToCheckPoint = hasStickyColumns && "headers" === location && (null === $cells || void 0 === $cells ? void 0 : $cells.length) && (!sourceColumn.fixed || sourceColumn.fixedPosition === _const3.StickyPosition.Sticky); const result = super._pointCreated(point, columns, location, sourceColumn); if (needToCheckPoint && !result) { return _dom.GridCoreStickyColumnsDom.noNeedToCreateReorderingPoint(point, $cells, (0, _renderer.default)(this._columnHeadersView.getContent()), this.addWidgetPrefix.bind(this)) } return result } }, editorFactory: Base => class extends Base { getOverlayContainerIfNeeded($cell) { const hasFixedColumns = this._rowsView.hasStickyColumns(); const isFixedCell = _dom.GridCoreStickyColumnsDom.isFixedCell($cell, this.addWidgetPrefix.bind(this)); if (hasFixedColumns && isFixedCell) { return $cell.closest(`.${this.addWidgetPrefix(_const3.CLASSES.stickyColumns)}`) } return } updateFocusOverlaySize($element, position) { const hasFixedColumns = this._rowsView.hasStickyColumns(); if (!hasFixedColumns) { super.updateFocusOverlaySize($element, position) } } getFocusOverlaySize($element) { const hasFixedColumns = this._rowsView.hasStickyColumns(); if (hasFixedColumns) { const elementRect = (0, _position.getBoundingRect)($element.get(0)); const isLastCell = _dom.GridCoreStickyColumnsDom.isLastCell($element); const isFixedCell = _dom.GridCoreStickyColumnsDom.isFixedCell($element, this.addWidgetPrefix.bind(this)); return { width: elementRect.right - elementRect.left + (isLastCell || isFixedCell ? 0 : 1), height: elementRect.bottom - elementRect.top } } return super.getFocusOverlaySize($element) } getValidationMessageContainer($cell) { return this.getOverlayContainerIfNeeded($cell) ?? super.getValidationMessageContainer($cell) } getRevertButtonContainer($cell) { return this.getOverlayContainerIfNeeded($cell) ?? super.getRevertButtonContainer($cell) } getFocusOverlayContainer($focusedElement) { return this.getOverlayContainerIfNeeded($focusedElement) ?? super.getFocusOverlayContainer($focusedElement) } overlayPositionedHandler(e, isOverlayVisible) { const columnHeaders = this.getView("columnHeadersView"); const hasStickyColumns = columnHeaders.hasStickyColumns(); super.overlayPositionedHandler(e, isOverlayVisible); if (hasStickyColumns) { const $cell = (0, _renderer.default)(e.element).closest("td"); if (!_dom.GridCoreStickyColumnsDom.isFixedCell($cell, this.addWidgetPrefix.bind(this))) { const $wrapper = e.component.$wrapper(); const $overlayContent = e.component.$content(); const isOutsideVisibleArea = _dom.GridCoreStickyColumnsDom.isOutsideVisibleArea($overlayContent, (0, _renderer.default)(columnHeaders.getColumnElements()), (0, _renderer.default)(columnHeaders.getContent()), this.addWidgetPrefix.bind(this)); $wrapper.css("zIndex", isOutsideVisibleArea ? 1 : (null === this || void 0 === this ? void 0 : this.getOverlayBaseZIndex()) ?? 0) } } } updateFocusOverlay($element) { let isHideBorder = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : false; if (!isHideBorder) { const isFixedCell = _dom.GridCoreStickyColumnsDom.isFixedCell($element, this.addWidgetPrefix.bind(this)); this._$focusOverlay.toggleClass(_const3.CLASSES.focusedFixedElement, isFixedCell); const isGroupElement = (0, _m_keyboard_navigation_utils.isGroupRow)($element); const isGroupFooterRowElement = (0, _m_keyboard_navigation_utils.isGroupFooterRow)($element); const isAdaptiveElement = (0, _m_keyboard_navigation_utils.isAdaptiveItem)($element); if (isFixedCell || isGroupElement || isGroupFooterRowElement || isAdaptiveElement) { this._$focusOverlay.toggleClass(_const3.CLASSES.focusedFixedElement, true) } } super.updateFocusOverlay($element, isHideBorder) } }, resizing: Base => class extends Base { resize() { const result = super.resize(); const hasStickyColumns = this._columnHeadersView.hasStickyColumns(); if (hasStickyColumns && null !== this && void 0 !== this && this.hasResizeTimeout()) { this._rowsView.setStickyOffsets() } return result } }, headersKeyboardNavigation: Base => class extends Base { getContainerBoundingRect($container) { var _this$_columnHeadersV5; const hasStickyColumns = null === (_this$_columnHeadersV5 = this._columnHeadersView) || void 0 === _this$_columnHeadersV5 ? void 0 : _this$_columnHeadersV5.hasStickyColumns(); if (hasStickyColumns) { const $cells = (0, _renderer.default)(this._columnHeadersView.getColumnElements()); return _dom.GridCoreStickyColumnsDom.getNonFixedAreaBoundingRect($cells, $container, this.addWidgetPrefix.bind(this)) } return super.getContainerBoundingRect($container) } tabKeyHandler(_ref) { var _this$_columnHeadersV6, _this$getView; let { originalEvent: originalEvent, shift: shift } = _ref; const hasStickyColumns = null === (_this$_columnHeadersV6 = this._columnHeadersView) || void 0 === _this$_columnHeadersV6 ? void 0 : _this$_columnHeadersV6.hasStickyColumns(); const scrollable = null === (_this$getView = this.getView("rowsView")) || void 0 === _this$getView ? void 0 : _this$getView.getScrollable(); if (!hasStickyColumns || !scrollable) { return } const $cell = (0, _renderer.default)(originalEvent.target).closest("td"); const $nextCell = _dom.GridCoreStickyColumnsDom.getNextHeaderCell($cell, shift ? "previous" : "next"); const isFixedCell = _dom.GridCoreStickyColumnsDom.isFixedCell($nextCell, this.addWidgetPrefix.bind(this)); if (isFixedCell) { return } const nextCellIsOutsideVisibleArea = $nextCell.length && this.isOutsideVisibleArea($nextCell, (0, _renderer.default)(this._columnHeadersView.getContent())); if (nextCellIsOutsideVisibleArea) { this.scrollToColumn($nextCell) } } } } } } }, 24378: /*!************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/grid_core/sticky_columns/utils.js ***! \************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.processFixedColumns = exports.normalizeOffset = exports.needToRemoveColumnBorder = exports.needToDisableStickyColumn = exports.isLastFixedColumn = exports.isFixedEdge = exports.isFirstFixedColumn = exports.getStickyOffset = exports.getColumnFixedPosition = void 0; var _type = __webpack_require__( /*! ../../../../core/utils/type */ 11528); var _m_utils = (e = __webpack_require__( /*! ../../../grids/grid_core/m_utils */ 53226), e && e.__esModule ? e : { default: e }); var e; var _const = __webpack_require__( /*! ../adaptivity/const */ 26854); var _const2 = __webpack_require__( /*! ./const */ 87396); function _extends() { return _extends = Object.assign ? Object.assign.bind() : function(n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) { ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]) } } return n }, _extends.apply(null, arguments) } const getColumnFixedPosition = (that, column) => { const { fixedPosition: fixedPosition } = column; const rtlEnabled = that.option("rtlEnabled"); const isExceptionCommandColumn = column.command && "expand" === column.command; const isDefaultCommandColumn = column.command && !_m_utils.default.isCustomCommandColumn(that._columns, column); if (isDefaultCommandColumn && rtlEnabled && !isExceptionCommandColumn) { return fixedPosition === _const2.StickyPosition.Right ? _const2.StickyPosition.Left : _const2.StickyPosition.Right } return fixedPosition ?? _const2.StickyPosition.Left }; exports.getColumnFixedPosition = getColumnFixedPosition; const needToDisableStickyColumn = function(that, column) { return that.isVirtualMode() && !!column.fixed && column.fixedPosition === _const2.StickyPosition.Sticky }; exports.needToDisableStickyColumn = needToDisableStickyColumn; exports.processFixedColumns = function(that, columns) { return columns.map((column => { if (needToDisableStickyColumn(that, column)) { return _extends({}, column, { fixed: false, fixedPosition: "" }) } return column })) }; const isVisibleColumn = function(that, column) { return column.visibleWidth !== _const.HIDDEN_COLUMNS_WIDTH && (!column.isBand || !!that.getVisibleDataColumnsByBandColumn(column.index).length) }; const areNextOnlyFixedOrHiddenColumns = function(that, columns) { return !columns.some((column => !column.fixed && isVisibleColumn(that, column))) }; const getStickyOffsetCore = function(that, columns, widths, columnIndex, fixedPosition, offsets) { const column = columns[columnIndex]; const isChildColumn = (0, _type.isDefined)(column.ownerBand); const targetColumnIsRight = fixedPosition === _const2.StickyPosition.Right; const targetColumnIsSticky = column.fixedPosition === _const2.StickyPosition.Sticky; const nextOrPrevColumns = targetColumnIsRight ? columns.slice(columnIndex + 1) : columns.slice(0, columnIndex).reverse(); const nextOrPrevColumnWidths = targetColumnIsRight ? widths.slice(columnIndex + 1) : widths.slice(0, columnIndex).reverse(); let offset = 0; let adjacentStickyColumnIndex = 0; let nonSiblingStickyColumnCount = !areNextOnlyFixedOrHiddenColumns(that, nextOrPrevColumns) && targetColumnIsSticky && nextOrPrevColumns.length ? 1 : 0; nextOrPrevColumns.forEach(((col, colIndex) => { if (col.fixed && (!(0, _type.isDefined)(offsets) || column.ownerBand === col.ownerBand)) { const columnIsSticky = col.fixedPosition === _const2.StickyPosition.Sticky; offset += nextOrPrevColumnWidths[colIndex] ?? col.visibleWidth; if (targetColumnIsSticky && columnIsSticky && !areNextOnlyFixedOrHiddenColumns(that, nextOrPrevColumns.slice(colIndex + 1))) { if (colIndex !== adjacentStickyColumnIndex) { nonSiblingStickyColumnCount += 1; adjacentStickyColumnIndex = colIndex + 1 } else { adjacentStickyColumnIndex += 1 } } } else if (!isVisibleColumn(that, col)) { adjacentStickyColumnIndex += 1 } })); if (isChildColumn && (0, _type.isDefined)(offsets)) { var _offsets$column$owner; offset += (null === offsets || void 0 === offsets || null === (_offsets$column$owner = offsets[column.ownerBand]) || void 0 === _offsets$column$owner ? void 0 : _offsets$column$owner[fixedPosition]) ?? 0; return offset } return offset - nonSiblingStickyColumnCount * _const2.STICKY_BORDER_WIDTH }; const isFirstOrLastColumn = function(that, column, rowIndex) { let onlyWithinBandColumn = arguments.length > 3 && void 0 !== arguments[3] ? arguments[3] : false; let isLast = arguments.length > 4 && void 0 !== arguments[4] ? arguments[4] : false; let fixedPosition = arguments.length > 5 ? arguments[5] : void 0; const rtlEnabled = that.option("rtlEnabled"); const methodName = rtlEnabled !== isLast ? "isLastColumn" : "isFirstColumn"; if (column.fixedPosition === _const2.StickyPosition.Sticky) { const parentColumn = that.getParentColumn(column) ?? column; if (that[methodName](parentColumn, 0)) { return false } } return that[methodName](column, rowIndex, onlyWithinBandColumn, fixedPosition) }; exports.getStickyOffset = function(that, columns, widths, columnIndex, offsets) { const result = {}; const column = columns[columnIndex]; if (column) { const fixedPosition = getColumnFixedPosition(that, column); switch (fixedPosition) { case _const2.StickyPosition.Sticky: { const offsetLeft = getStickyOffsetCore(that, columns, widths, columnIndex, _const2.StickyPosition.Left, offsets); const offsetRight = getStickyOffsetCore(that, columns, widths, columnIndex, _const2.StickyPosition.Right, offsets); result.left = offsetLeft; result.right = offsetRight; break } case _const2.StickyPosition.Right: { const offsetRight = getStickyOffsetCore(that, columns, widths, columnIndex, _const2.StickyPosition.Right, offsets); result.right = offsetRight; break } default: { const offsetLeft = getStickyOffsetCore(that, columns, widths, columnIndex, _const2.StickyPosition.Left, offsets); result.left = offsetLeft } } } return result }; const needToRemoveColumnBorderCore = function(that, column, visibleColumns, rowIndex) { const prevColumn = function(that, column, visibleColumns, rowIndex) { const visibleColumnIndex = that.getVisibleIndex(column.index, rowIndex); return null === visibleColumns || void 0 === visibleColumns ? void 0 : visibleColumns.slice(0, visibleColumnIndex).reverse().find((col => isVisibleColumn(that, col))) }(that, column, visibleColumns, rowIndex); const columnFixedPosition = getColumnFixedPosition(that, column); const prevColumnFixedPosition = prevColumn && getColumnFixedPosition(that, prevColumn); return !!(null !== prevColumn && void 0 !== prevColumn && prevColumn.fixed) && !needToDisableStickyColumn(that, prevColumn) && (!column.fixed || columnFixedPosition === _const2.StickyPosition.Sticky || prevColumnFixedPosition === _const2.StickyPosition.Sticky) }; exports.needToRemoveColumnBorder = function(that, column, rowIndex) { let isDataColumn = arguments.length > 3 && void 0 !== arguments[3] ? arguments[3] : false; const visibleColumns = that.getVisibleColumns(isDataColumn ? null : rowIndex); const parentColumn = that.getParentColumn(column); if (parentColumn) { const isFirstColumn = that.isFirstColumn(column, rowIndex, true); return isFirstColumn && needToRemoveColumnBorderCore(that, parentColumn, that.getVisibleColumns(0), 0) } return needToRemoveColumnBorderCore(that, column, visibleColumns, rowIndex) }; exports.normalizeOffset = function(offset) { const styleProps = {}; if ((0, _type.isDefined)(offset.left)) { styleProps.left = `${offset.left}px` } if ((0, _type.isDefined)(offset.right)) { styleProps.right = `${offset.right}px` } return styleProps }; exports.isFirstFixedColumn = function(that, column, rowIndex) { let onlyWithinBandColumn = arguments.length > 3 && void 0 !== arguments[3] ? arguments[3] : false; let fixedPosition = arguments.length > 4 ? arguments[4] : void 0; return isFirstOrLastColumn(that, column, rowIndex, onlyWithinBandColumn, false, fixedPosition) }; exports.isLastFixedColumn = function(that, column, rowIndex) { let onlyWithinBandColumn = arguments.length > 3 && void 0 !== arguments[3] ? arguments[3] : false; let fixedPosition = arguments.length > 4 ? arguments[4] : void 0; return isFirstOrLastColumn(that, column, rowIndex, onlyWithinBandColumn, true, fixedPosition) }; exports.isFixedEdge = function(point, column, nextColumn) { const isSplitPoint = (0, _type.isDefined)(point.isLeftBoundary) || (0, _type.isDefined)(point.isRightBoundary); return !isSplitPoint && !!column && !!nextColumn && column.fixed !== nextColumn.fixed } }, 52932: /*!***************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/grid_core/validating/m_validating.js ***! \***************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.validatingRowsViewExtender = exports.validatingModule = exports.validatingEditorFactoryExtender = exports.validatingEditingExtender = exports.validatingDataControllerExtender = exports.ValidatingController = void 0; var _events_engine = _interopRequireDefault(__webpack_require__( /*! ../../../../common/core/events/core/events_engine */ 92774)); var _pointer = _interopRequireDefault(__webpack_require__( /*! ../../../../common/core/events/pointer */ 89797)); var _message = _interopRequireDefault(__webpack_require__( /*! ../../../../common/core/localization/message */ 4671)); var _array_utils = __webpack_require__( /*! ../../../../common/data/array_utils */ 43792); var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../../../core/renderer */ 64553)); var _browser = _interopRequireDefault(__webpack_require__( /*! ../../../../core/utils/browser */ 48314)); var _common = __webpack_require__( /*! ../../../../core/utils/common */ 17781); var _deferred = __webpack_require__( /*! ../../../../core/utils/deferred */ 87739); var _extend = __webpack_require__( /*! ../../../../core/utils/extend */ 52576); var _iterator = __webpack_require__( /*! ../../../../core/utils/iterator */ 21274); var _size = __webpack_require__( /*! ../../../../core/utils/size */ 57653); var _string = __webpack_require__( /*! ../../../../core/utils/string */ 54497); var _type = __webpack_require__( /*! ../../../../core/utils/type */ 11528); var _button = _interopRequireDefault(__webpack_require__( /*! ../../../../ui/button */ 64973)); var _load_indicator = _interopRequireDefault(__webpack_require__( /*! ../../../../ui/load_indicator */ 11979)); var _ui = _interopRequireDefault(__webpack_require__( /*! ../../../../ui/overlay/ui.overlay */ 89132)); var _themes = __webpack_require__( /*! ../../../../ui/themes */ 52071); var _validation_engine = _interopRequireDefault(__webpack_require__( /*! ../../../../ui/validation_engine */ 19391)); var _validator = _interopRequireDefault(__webpack_require__( /*! ../../../../ui/validator */ 71775)); var _selectors = __webpack_require__( /*! ../../../../ui/widget/selectors */ 35944); var _ui2 = _interopRequireDefault(__webpack_require__( /*! ../../../../ui/widget/ui.errors */ 35185)); var _const = __webpack_require__( /*! ../editing/const */ 69699); var _m_modules = _interopRequireDefault(__webpack_require__( /*! ../m_modules */ 74854)); var _m_utils = _interopRequireDefault(__webpack_require__( /*! ../m_utils */ 53226)); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } const EDIT_MODE_ROW = "row"; const EDIT_MODE_BATCH = "batch"; const EDIT_MODE_CELL = "cell"; const FORM_BASED_MODES = ["popup", "form"]; const VALIDATION_STATUS_valid = "valid", VALIDATION_STATUS_invalid = "invalid", VALIDATION_STATUS_pending = "pending"; const validationResultIsValid = function(result) { return (0, _type.isDefined)(result) && "cancel" !== result }; const cellValueShouldBeValidated = function(value, rowOptions) { return void 0 !== value || void 0 === value && rowOptions && !rowOptions.isNewRow }; class ValidatingController extends _m_modules.default.Controller { constructor() { super(...arguments); this._isValidationInProgress = false; this._disableApplyValidationResults = false } init() { this._editingController = this.getController("editing"); this._editorFactoryController = this.getController("editorFactory"); this._columnsController = this.getController("columns"); this.createAction("onRowValidating"); if (!this._validationState) { this.initValidationState() } } initValidationState() { this._validationState = []; this._validationStateCache = {} } _rowIsValidated(change) { const validationData = this._getValidationData(null === change || void 0 === change ? void 0 : change.key); return !!validationData && !!validationData.validated } _getValidationData(key, create) { const keyHash = (0, _common.getKeyHash)(key); const isObjectKeyHash = (0, _type.isObject)(keyHash); let validationData; if (isObjectKeyHash) { validationData = this._validationState.filter((data => (0, _common.equalByValue)(data.key, key)))[0] } else { validationData = this._validationStateCache[keyHash] } if (!validationData && create) { validationData = { key: key, isValid: true }; this._validationState.push(validationData); if (!isObjectKeyHash) { this._validationStateCache[keyHash] = validationData } } return validationData } _getBrokenRules(validationData, validationResults) { let brokenRules; if (validationResults) { brokenRules = validationResults.brokenRules || validationResults.brokenRule && [validationResults.brokenRule] } else { brokenRules = validationData.brokenRules || [] } return brokenRules } _rowValidating(validationData, validationResults) { const deferred = new _deferred.Deferred; const change = this._editingController.getChangeByKey(null === validationData || void 0 === validationData ? void 0 : validationData.key); const brokenRules = this._getBrokenRules(validationData, validationResults); const isValid = validationResults ? validationResults.isValid : validationData.isValid; const parameters = { brokenRules: brokenRules, isValid: isValid, key: change.key, newData: change.data, oldData: this._editingController._getOldData(change.key), promise: null, errorText: this.getHiddenValidatorsErrorText(brokenRules) }; this.executeAction("onRowValidating", parameters); (0, _deferred.when)((0, _deferred.fromPromise)(parameters.promise)).always((() => { validationData.isValid = parameters.isValid; validationData.errorText = parameters.errorText; deferred.resolve(parameters) })); return deferred.promise() } getHiddenValidatorsErrorText(brokenRules) { const brokenRulesMessages = []; (0, _iterator.each)(brokenRules, ((_, brokenRule) => { const { column: column } = brokenRule; const isGroupExpandColumn = column && void 0 !== column.groupIndex && !column.showWhenGrouped; const isVisibleColumn = column && column.visible; if (!brokenRule.validator.$element().parent().length && (!isVisibleColumn || isGroupExpandColumn)) { brokenRulesMessages.push(brokenRule.message) } })); return brokenRulesMessages.join(", ") } validate(isFull) { let isValid = true; const editingController = this._editingController; const deferred = new _deferred.Deferred; const completeList = []; const editMode = editingController.getEditMode(); isFull = isFull || editMode === EDIT_MODE_ROW; if (this._isValidationInProgress) { return deferred.resolve(false).promise() } this._isValidationInProgress = true; if (isFull) { editingController.addDeferred(deferred); const changes = editingController.getChanges(); (0, _iterator.each)(changes, ((index, _ref) => { let { type: type, key: key } = _ref; if ("remove" !== type) { const validationData = this._getValidationData(key, true); const validationResult = this.validateGroup(validationData); completeList.push(validationResult); validationResult.done((validationResult => { validationData.validated = true; isValid = isValid && validationResult.isValid })) } })) } else if (this._currentCellValidator) { const validationResult = this.validateGroup(this._currentCellValidator._findGroup()); completeList.push(validationResult); validationResult.done((validationResult => { isValid = validationResult.isValid })) }(0, _deferred.when)(...completeList).done((() => { this._isValidationInProgress = false; deferred.resolve(isValid) })); return deferred.promise() } validateGroup(validationData) { var _validationResult; const result = new _deferred.Deferred; const validateGroup = validationData && _validation_engine.default.getGroupConfig(validationData); let validationResult; if (null !== validateGroup && void 0 !== validateGroup && validateGroup.validators.length) { this.resetRowValidationResults(validationData); validationResult = _validation_engine.default.validateGroup(validationData) }(0, _deferred.when)((null === (_validationResult = validationResult) || void 0 === _validationResult ? void 0 : _validationResult.complete) || validationResult).done((validationResult => { (0, _deferred.when)(this._rowValidating(validationData, validationResult)).done(result.resolve) })); return result.promise() } isRowDataModified(change) { return !(0, _type.isEmptyObject)(change.data) } updateValidationState(change) { const editMode = this._editingController.getEditMode(); const { key: key } = change; const validationData = this._getValidationData(key, true); if (!FORM_BASED_MODES.includes(editMode)) { if ("insert" === change.type && !this.isRowDataModified(change)) { validationData.isValid = true; return } this.setDisableApplyValidationResults(true); const groupConfig = _validation_engine.default.getGroupConfig(validationData); if (groupConfig) { const validationResult = _validation_engine.default.validateGroup(validationData); (0, _deferred.when)(validationResult.complete || validationResult).done((validationResult => { validationData.isValid = validationResult.isValid; validationData.brokenRules = validationResult.brokenRules })) } else if (!validationData.brokenRules || !validationData.brokenRules.length) { validationData.isValid = true } this.setDisableApplyValidationResults(false) } else { validationData.isValid = true } } setValidator(validator) { this._currentCellValidator = validator } renderCellPendingIndicator($container) { let $indicator = $container.find(".dx-pending-indicator"); if (!$indicator.length) { const $indicatorContainer = $container; $indicator = (0, _renderer.default)("
").appendTo($indicatorContainer).addClass("dx-pending-indicator"); this._createComponent($indicator, _load_indicator.default); $container.addClass("dx-validation-pending") } } disposeCellPendingIndicator($container) { const $indicator = $container.find(".dx-pending-indicator"); if ($indicator.length) { const indicator = _load_indicator.default.getInstance($indicator); if (indicator) { indicator.dispose(); indicator.$element().remove() } $container.removeClass("dx-validation-pending") } } validationStatusChanged(result) { const { validator: validator } = result; const validationGroup = validator.option("validationGroup"); const { column: column } = validator.option("dataGetter")(); this.updateCellValidationResult({ rowKey: validationGroup.key, columnIndex: column.index, validationResult: result }) } validatorInitialized(arg) { arg.component.on("validating", this.validationStatusChanged.bind(this)); arg.component.on("validated", this.validationStatusChanged.bind(this)) } validatorDisposing(arg) { const validator = arg.component; const validationGroup = validator.option("validationGroup"); const { column: column } = validator.option("dataGetter")(); const result = this.getCellValidationResult({ rowKey: null === validationGroup || void 0 === validationGroup ? void 0 : validationGroup.key, columnIndex: column.index }); if (validationResultIsValid(result) && result.status === VALIDATION_STATUS_pending) { this.cancelCellValidationResult({ change: validationGroup, columnIndex: column.index }) } } applyValidationResult($container, result) { const { validator: validator } = result; const validationGroup = validator.option("validationGroup"); const { column: column } = validator.option("dataGetter")(); result.brokenRules && result.brokenRules.forEach((rule => { rule.columnIndex = column.index; rule.column = column })); if ($container) { const validationResult = this.getCellValidationResult({ rowKey: validationGroup.key, columnIndex: column.index }); const requestIsDisabled = validationResultIsValid(validationResult) && validationResult.disabledPendingId === result.id; if (this._disableApplyValidationResults || requestIsDisabled) { return } if (result.status === VALIDATION_STATUS_invalid) { const $focus = $container.find(":focus"); if (!(0, _selectors.focused)($focus)) { _events_engine.default.trigger($focus, "focus"); _events_engine.default.trigger($focus, _pointer.default.down) } } const editor = !column.editCellTemplate && this._editorFactoryController.getEditorInstance($container); if (result.status === VALIDATION_STATUS_pending) { if (editor) { editor.option("validationStatus", VALIDATION_STATUS_pending) } else { this.renderCellPendingIndicator($container) } } else if (editor) { editor.option("validationStatus", VALIDATION_STATUS_valid) } else { this.disposeCellPendingIndicator($container) } $container.toggleClass(this.addWidgetPrefix("invalid"), result.status === VALIDATION_STATUS_invalid) } } _syncInternalEditingData(parameters) { var _parameters$row; const editingController = this._editingController; const change = editingController.getChangeByKey(parameters.key); const oldDataFromState = editingController._getOldData(parameters.key); const oldData = null === (_parameters$row = parameters.row) || void 0 === _parameters$row ? void 0 : _parameters$row.oldData; if (change && oldData && !oldDataFromState) { editingController._addInternalData({ key: parameters.key, oldData: oldData }) } } createValidator(parameters, $container) { const editingController = this._editingController; const { column: column } = parameters; let { showEditorAlways: showEditorAlways } = column; if ((0, _type.isDefined)(column.command) || !column.validationRules || !Array.isArray(column.validationRules) || !column.validationRules.length) { return } const editIndex = editingController.getIndexByKey(parameters.key, editingController.getChanges()); let needCreateValidator = editIndex > -1; if (!needCreateValidator) { if (!showEditorAlways) { var _this$_columnsControl; const visibleColumns = (null === (_this$_columnsControl = this._columnsController) || void 0 === _this$_columnsControl ? void 0 : _this$_columnsControl.getVisibleColumns()) || []; showEditorAlways = visibleColumns.some((column => column.showEditorAlways)) } const isEditRow = (0, _common.equalByValue)(this.option("editing.editRowKey"), parameters.key); const isCellOrBatchEditingAllowed = editingController.isCellOrBatchEditMode() && editingController.allowUpdating({ row: parameters.row }); needCreateValidator = isEditRow || isCellOrBatchEditingAllowed && showEditorAlways; if (isCellOrBatchEditingAllowed && showEditorAlways) { var _parameters$row2; editingController._addInternalData({ key: parameters.key, oldData: (null === (_parameters$row2 = parameters.row) || void 0 === _parameters$row2 ? void 0 : _parameters$row2.oldData) ?? parameters.data }) } } if (needCreateValidator) { if ($container && !$container.length) { _ui2.default.log("E1050"); return } this._syncInternalEditingData(parameters); const validationData = this._getValidationData(parameters.key, true); const getValue = () => { const change = editingController.getChangeByKey(null === validationData || void 0 === validationData ? void 0 : validationData.key); const value = column.calculateCellValue((null === change || void 0 === change ? void 0 : change.data) || {}); return void 0 !== value ? value : parameters.value }; const useDefaultValidator = $container && $container.hasClass("dx-widget"); $container && $container.addClass(this.addWidgetPrefix("validator")); const validator = new _validator.default($container || (0, _renderer.default)("
"), { name: column.caption, validationRules: (0, _extend.extend)(true, [], column.validationRules), validationGroup: validationData, adapter: useDefaultValidator ? null : { getValue: getValue, applyValidationResults: result => { this.applyValidationResult($container, result) } }, dataGetter() { const key = null === validationData || void 0 === validationData ? void 0 : validationData.key; const change = editingController.getChangeByKey(key); const oldData = editingController._getOldData(key); return { data: (0, _array_utils.createObjectWithChanges)(oldData, null === change || void 0 === change ? void 0 : change.data), column: column } }, onInitialized: this.validatorInitialized.bind(this), onDisposing: this.validatorDisposing.bind(this) }); if (useDefaultValidator) { const adapter = validator.option("adapter"); if (adapter) { const originBypass = adapter.bypass; const defaultAdapterBypass = () => parameters.row.isNewRow && !this._isValidationInProgress && !editingController.isCellModified(parameters); adapter.getValue = getValue; adapter.validationRequestsCallbacks = []; adapter.bypass = () => originBypass.call(adapter) || defaultAdapterBypass() } } return validator } return } setDisableApplyValidationResults(flag) { this._disableApplyValidationResults = flag } getDisableApplyValidationResults() { return this._disableApplyValidationResults } isCurrentValidatorProcessing(_ref2) { let { rowKey: rowKey, columnIndex: columnIndex } = _ref2; return this._currentCellValidator && (0, _common.equalByValue)(this._currentCellValidator.option("validationGroup").key, rowKey) && this._currentCellValidator.option("dataGetter")().column.index === columnIndex } validateCell(validator) { const cellParams = { rowKey: validator.option("validationGroup").key, columnIndex: validator.option("dataGetter")().column.index, validationResult: null }; let validationResult = this.getCellValidationResult(cellParams); const stateRestored = validationResultIsValid(validationResult); const adapter = validator.option("adapter"); if (!stateRestored) { validationResult = validator.validate() } else { const currentCellValue = adapter.getValue(); if (!(0, _common.equalByValue)(currentCellValue, validationResult.value)) { validationResult = validator.validate() } } const deferred = new _deferred.Deferred; if (stateRestored && validationResult.status === VALIDATION_STATUS_pending) { this.updateCellValidationResult(cellParams); adapter.applyValidationResults(validationResult) }(0, _deferred.when)(validationResult.complete || validationResult).done((validationResult => { stateRestored && adapter.applyValidationResults(validationResult); deferred.resolve(validationResult) })); return deferred.promise() } updateCellValidationResult(_ref3) { let { rowKey: rowKey, columnIndex: columnIndex, validationResult: validationResult } = _ref3; const validationData = this._getValidationData(rowKey); if (!validationData) { return } if (!validationData.validationResults) { validationData.validationResults = {} } let result; if (validationResult) { result = (0, _extend.extend)({}, validationResult); validationData.validationResults[columnIndex] = result; if (validationResult.status === VALIDATION_STATUS_pending) { if (this._editingController.getEditMode() === EDIT_MODE_CELL) { result.deferred = new _deferred.Deferred; result.complete.always((() => { result.deferred.resolve() })); this._editingController.addDeferred(result.deferred) } if (this._disableApplyValidationResults) { result.disabledPendingId = validationResult.id; return } } } else { result = validationData.validationResults[columnIndex] } if (result && result.disabledPendingId) { delete result.disabledPendingId } } getCellValidationResult(_ref4) { var _validationData$valid; let { rowKey: rowKey, columnIndex: columnIndex } = _ref4; const validationData = this._getValidationData(rowKey, true); return null === validationData || void 0 === validationData || null === (_validationData$valid = validationData.validationResults) || void 0 === _validationData$valid ? void 0 : _validationData$valid[columnIndex] } removeCellValidationResult(_ref5) { let { change: change, columnIndex: columnIndex } = _ref5; const validationData = this._getValidationData(null === change || void 0 === change ? void 0 : change.key); if (validationData && validationData.validationResults) { this.cancelCellValidationResult({ change: change, columnIndex: columnIndex }); delete validationData.validationResults[columnIndex] } } cancelCellValidationResult(_ref6) { let { change: change, columnIndex: columnIndex } = _ref6; const validationData = this._getValidationData(change.key); if (change && validationData.validationResults) { const result = validationData.validationResults[columnIndex]; if (result) { result.deferred && result.deferred.reject("cancel"); validationData.validationResults[columnIndex] = "cancel" } } } resetRowValidationResults(validationData) { if (validationData) { validationData.validationResults && delete validationData.validationResults; delete validationData.validated } } isInvalidCell(_ref7) { let { rowKey: rowKey, columnIndex: columnIndex } = _ref7; const result = this.getCellValidationResult({ rowKey: rowKey, columnIndex: columnIndex }); return validationResultIsValid(result) && result.status === VALIDATION_STATUS_invalid } getCellValidator(_ref8) { let { rowKey: rowKey, columnIndex: columnIndex } = _ref8; const validationData = this._getValidationData(rowKey); const groupConfig = validationData && _validation_engine.default.getGroupConfig(validationData); const validators = groupConfig && groupConfig.validators; return validators && validators.filter((v => { const { column: column } = v.option("dataGetter")(); return column ? column.index === columnIndex : false }))[0] } setCellValidationStatus(cellOptions) { const validationResult = this.getCellValidationResult({ rowKey: cellOptions.key, columnIndex: cellOptions.column.index }); if ((0, _type.isDefined)(validationResult)) { cellOptions.validationStatus = "cancel" !== validationResult ? validationResult.status : "cancel" } else { delete cellOptions.validationStatus } } } exports.ValidatingController = ValidatingController; const validatingEditingExtender = Base => class extends Base { processDataItemTreeListHack(item) { super.processDataItem.apply(this, arguments) } processItemsTreeListHack(items, e) { return super.processItems.apply(this, arguments) } _addChange(changeParams) { const change = super._addChange.apply(this, arguments); if (change && "remove" !== changeParams.type) { this._validatingController.updateValidationState(change) } return change } _handleChangesChange(args) { super._handleChangesChange.apply(this, arguments); args.value.forEach((change => { if (void 0 === this._validatingController._getValidationData(change.key)) { this._validatingController.updateValidationState(change) } })) } _updateRowAndPageIndices() { const that = this; const startInsertIndex = that.getView("rowsView").getTopVisibleItemIndex(); let rowIndex = startInsertIndex; (0, _iterator.each)(that.getChanges(), ((_, _ref9) => { let { key: key, type: type } = _ref9; const validationData = this._validatingController._getValidationData(key); if (validationData && !validationData.isValid && validationData.pageIndex !== that._pageIndex) { validationData.pageIndex = that._pageIndex; if ("insert" === type) { validationData.rowIndex = startInsertIndex } else { validationData.rowIndex = rowIndex } rowIndex++ } })) } _getValidationGroupsInForm(detailOptions) { const validationData = this._validatingController._getValidationData(detailOptions.key, true); return { validationGroup: validationData } } _validateEditFormAfterUpdate(row, isCustomSetCellValue) { if (isCustomSetCellValue && this._editForm) { this._editForm.validate() } super._validateEditFormAfterUpdate.apply(this, arguments) } _prepareEditCell(params) { const isNotCanceled = super._prepareEditCell.apply(this, arguments); if (isNotCanceled && params.column.showEditorAlways) { this._validatingController.updateValidationState({ key: params.key }) } return isNotCanceled } processItems(items, changeType) { const changes = this.getChanges(); const getIndexByChange = (change, items) => { let index = -1; const isInsert = "insert" === change.type; const { key: key } = change; (0, _iterator.each)(items, ((i, item) => { if ((0, _common.equalByValue)(key, isInsert ? item.key : this._dataController.keyOf(item))) { index = i; return false } return })); return index }; items = super.processItems(items, changeType); const itemsCount = items.length; if (this.getEditMode() === EDIT_MODE_BATCH && "prepend" !== changeType && "append" !== changeType) { changes.forEach((change => { const { key: key } = change; const validationData = this._validatingController._getValidationData(key); if (validationData && change.type && validationData.pageIndex === this._pageIndex && (null === change || void 0 === change ? void 0 : change.pageIndex) !== this._pageIndex) { ! function(change, validationData) { const data = { key: change.key }; const index = getIndexByChange(change, items); if (index >= 0) { return } validationData.rowIndex = validationData.rowIndex > itemsCount ? validationData.rowIndex % itemsCount : validationData.rowIndex; const { rowIndex: rowIndex } = validationData; data.__DX_INSERT_INDEX__ = 1; items.splice(rowIndex, 0, data) }(change, validationData) } })) } return items } processDataItem(item) { const isInserted = item.data.__DX_INSERT_INDEX__; const key = isInserted ? item.data.key : item.key; const editMode = this.getEditMode(); if (editMode === EDIT_MODE_BATCH && isInserted && key) { const changes = this.getChanges(); const editIndex = _m_utils.default.getIndexByKey(key, changes); if (editIndex >= 0) { const change = changes[editIndex]; if ("insert" !== change.type) { const oldData = this._getOldData(change.key); item.data = (0, _extend.extend)(true, {}, oldData, change.data); item.key = key } } } super.processDataItem.apply(this, arguments) } _createInvisibleColumnValidators(changes) { const that = this; const columns = this._columnsController.getColumns(); const invisibleColumns = this._columnsController.getInvisibleColumns().filter((column => !column.isBand)); const groupColumns = this._columnsController.getGroupColumns().filter((column => !column.showWhenGrouped && -1 === invisibleColumns.indexOf(column))); const invisibleColumnValidators = []; const isCellVisible = (column, rowKey) => this._dataController.getRowIndexByKey(rowKey) >= 0 && invisibleColumns.indexOf(column) < 0; invisibleColumns.push(...groupColumns); if (!FORM_BASED_MODES.includes(this.getEditMode())) { (0, _iterator.each)(columns, ((_, column) => { changes.forEach((change => { let data; if (isCellVisible(column, change.key)) { return } if ("insert" === change.type) { data = change.data } else if ("update" === change.type) { const oldData = that._getOldData(change.key); if (!(0, _type.isDefined)(oldData)) { return } data = (0, _array_utils.createObjectWithChanges)(oldData, change.data) } if (data) { const validator = this._validatingController.createValidator({ column: column, key: change.key, value: column.calculateCellValue(data) }); if (validator) { invisibleColumnValidators.push(validator) } } })) })) } return function() { invisibleColumnValidators.forEach((validator => { validator.dispose() })) } } _beforeSaveEditData(change, editIndex) { let result = super._beforeSaveEditData.apply(this, arguments); const validationData = this._validatingController._getValidationData(null === change || void 0 === change ? void 0 : change.key, true); if (change) { const isValid = "remove" === change.type || validationData.isValid; result = result || !isValid } else { const disposeValidators = this._createInvisibleColumnValidators(this.getChanges()); result = new _deferred.Deferred; this.executeOperation(result, (() => { this._validatingController.validate(true).done((isFullValid => { disposeValidators(); this._updateRowAndPageIndices(); switch (this.getEditMode()) { case EDIT_MODE_CELL: if (!isFullValid) { this._focusEditingCell() } break; case EDIT_MODE_BATCH: if (!isFullValid) { this._resetEditRowKey(); this._resetEditColumnName(); this._dataController.updateItems() } } result.resolve(!isFullValid) })) })) } return result.promise ? result.promise() : result } _beforeEditCell(rowIndex, columnIndex, item) { const result = super._beforeEditCell(rowIndex, columnIndex, item); if (this.getEditMode() === EDIT_MODE_CELL) { const $cell = this._rowsView._getCellElement(rowIndex, columnIndex); const validator = $cell && $cell.data("dxValidator"); const rowOptions = $cell && $cell.closest(".dx-row").data("options"); const value = validator && validator.option("adapter").getValue(); if (validator && cellValueShouldBeValidated(value, rowOptions)) { const deferred = new _deferred.Deferred; (0, _deferred.when)(this._validatingController.validateCell(validator), result).done(((validationResult, result) => { deferred.resolve(validationResult.status === VALIDATION_STATUS_valid && result) })); return deferred.promise() } if (!validator) { return result } } return false } _afterSaveEditData(cancel) { let $firstErrorRow; const isCellEditMode = this.getEditMode() === EDIT_MODE_CELL; (0, _iterator.each)(this.getChanges(), ((_, change) => { const $errorRow = this._showErrorRow(change); $firstErrorRow = $firstErrorRow || $errorRow })); if ($firstErrorRow) { const scrollable = this._rowsView.getScrollable(); if (scrollable) { scrollable.update(); scrollable.scrollToElement($firstErrorRow) } } if (cancel && isCellEditMode && this._needUpdateRow()) { const editRowIndex = this.getEditRowIndex(); this._dataController.updateItems({ changeType: "update", rowIndices: [editRowIndex] }); this._focusEditingCell() } else if (!cancel) { let shouldResetValidationState = true; if (isCellEditMode) { const columns = this._columnsController.getColumns(); const columnsWithValidatingEditors = columns.filter((col => { var _col$validationRules; return col.showEditorAlways && (null === (_col$validationRules = col.validationRules) || void 0 === _col$validationRules ? void 0 : _col$validationRules.length) > 0 })).length > 0; shouldResetValidationState = !columnsWithValidatingEditors } if (shouldResetValidationState) { this._validatingController.initValidationState() } } } _handleDataChanged(args) { const validationState = this._validatingController._validationState; if ("standard" === this.option("scrolling.mode")) { this.resetRowAndPageIndices() } if ("prepend" === args.changeType) { (0, _iterator.each)(validationState, ((_, validationData) => { validationData.rowIndex += args.items.length })) } super._handleDataChanged(args) } resetRowAndPageIndices() { const validationState = this._validatingController._validationState; (0, _iterator.each)(validationState, ((_, validationData) => { if (validationData.pageIndex !== this._pageIndex) { delete validationData.pageIndex; delete validationData.rowIndex } })) } _beforeCancelEditData() { this._validatingController.initValidationState(); super._beforeCancelEditData() } _showErrorRow(change) { let $popupContent; const items = this._dataController.items(); const rowIndex = this.getIndexByKey(change.key, items); const validationData = this._validatingController._getValidationData(change.key); if (!(null !== validationData && void 0 !== validationData && validationData.isValid) && null !== validationData && void 0 !== validationData && validationData.errorText && rowIndex >= 0) { $popupContent = this.getPopupContent(); return this._errorHandlingController && this._errorHandlingController.renderErrorRow(null === validationData || void 0 === validationData ? void 0 : validationData.errorText, rowIndex, $popupContent) } } updateFieldValue(e) { const deferred = new _deferred.Deferred; this._validatingController.removeCellValidationResult({ change: this.getChangeByKey(e.key), columnIndex: e.column.index }); super.updateFieldValue.apply(this, arguments).done((() => { const currentValidator = this._validatingController.getCellValidator({ rowKey: e.key, columnIndex: e.column.index }); (0, _deferred.when)(currentValidator && this._validatingController.validateCell(currentValidator)).done((validationResult => { this._editorFactoryController.refocus(); deferred.resolve(validationResult) })) })); return deferred.promise() } highlightDataCell($cell, parameters) { super.highlightDataCell.apply(this, arguments); this._validatingController.setCellValidationStatus(parameters); const isEditableCell = !!parameters.setValue; const cellModified = this.isCellModified(parameters); const isValidated = (0, _type.isDefined)(parameters.validationStatus); const needValidation = cellModified && parameters.column.setCellValue || isEditableCell && !cellModified && !(parameters.row.isNewRow || !isValidated); if (needValidation) { const validator = $cell.data("dxValidator"); if (validator) { (0, _deferred.when)(this._validatingController.validateCell(validator)).done((() => { this._validatingController.setCellValidationStatus(parameters) })) } } } getChangeByKey(key) { const changes = this.getChanges(); return changes[_m_utils.default.getIndexByKey(key, changes)] } isCellModified(parameters) { const cellModified = super.isCellModified(parameters); const change = this.getChangeByKey(parameters.key); const isCellInvalid = !!parameters.row && this._validatingController.isInvalidCell({ rowKey: parameters.key, columnIndex: parameters.column.index }); return cellModified || this._validatingController._rowIsValidated(change) && isCellInvalid } }; exports.validatingEditingExtender = validatingEditingExtender; const validatingEditorFactoryExtender = Base => class extends Base { _showRevertButton($container) { var _this$_revertTooltip, _$tooltipElement2; let $tooltipElement = null === (_this$_revertTooltip = this._revertTooltip) || void 0 === _this$_revertTooltip ? void 0 : _this$_revertTooltip.$element(); if (!$container || !$container.length) { var _$tooltipElement; null === (_$tooltipElement = $tooltipElement) || void 0 === _$tooltipElement || _$tooltipElement.remove(); this._revertTooltip = void 0; return } if ($container.find($tooltipElement).length) { var _this$_revertTooltip2; null === (_this$_revertTooltip2 = this._revertTooltip) || void 0 === _this$_revertTooltip2 || _this$_revertTooltip2.repaint(); return } const $overlayContainer = this.getRevertButtonContainer($container); const revertTooltipClass = this.addWidgetPrefix("revert-tooltip"); null === (_$tooltipElement2 = $tooltipElement) || void 0 === _$tooltipElement2 || _$tooltipElement2.remove(); $tooltipElement = (0, _renderer.default)("
").addClass(revertTooltipClass).appendTo($container); const tooltipOptions = { animation: null, visible: true, width: "auto", height: "auto", shading: false, container: $overlayContainer, propagateOutsideClick: true, hideOnOutsideClick: false, wrapperAttr: { class: revertTooltipClass }, contentTemplate: () => { const $buttonElement = (0, _renderer.default)("
").addClass("dx-revert-button"); const buttonOptions = { icon: "revert", hint: this.option("editing.texts.validationCancelChanges"), elementAttr: { id: "dxRevertButton", "aria-label": _message.default.format("dxDataGrid-ariaRevertButton") }, onClick: () => { this._editingController.cancelEditData() } }; return new _button.default($buttonElement, buttonOptions).$element() }, position: { my: "left top", at: "right top", offset: "1 0", collision: "flip", boundaryOffset: "0 0", boundary: this._rowsView.element(), of: $container }, onPositioned: this.overlayPositionedHandler.bind(this) }; this._revertTooltip = new _ui.default($tooltipElement, tooltipOptions) } _hideFixedGroupCell($cell, overlayOptions) { var _this$_rowsView, _this$_rowsView$isFix; let $nextFixedRowElement; let $groupCellElement; const isFixedColumns = null === (_this$_rowsView = this._rowsView) || void 0 === _this$_rowsView || null === (_this$_rowsView$isFix = _this$_rowsView.isFixedColumns) || void 0 === _this$_rowsView$isFix ? void 0 : _this$_rowsView$isFix.call(_this$_rowsView); const isFormOrPopupEditMode = this._editingController.isFormOrPopupEditMode(); if (isFixedColumns && !isFormOrPopupEditMode) { const nextRowOptions = $cell.closest(".dx-row").next().data("options"); if (nextRowOptions && "group" === nextRowOptions.rowType) { $nextFixedRowElement = (0, _renderer.default)(this._rowsView.getRowElement(nextRowOptions.rowIndex)).last(); $groupCellElement = $nextFixedRowElement.find(".dx-group-cell"); if ($groupCellElement.length && "hidden" !== $groupCellElement.get(0).style.visibility) { $groupCellElement.css("visibility", "hidden"); overlayOptions.onDisposing = function() { $groupCellElement.css("visibility", "") } } } } } _showValidationMessage($cell, messages, alignment) { const editorPopup = $cell.find(".dx-dropdowneditor-overlay").data("dxPopup"); const isOverlayVisible = editorPopup && editorPopup.option("visible"); const myPosition = isOverlayVisible ? "top right" : `top ${alignment}`; const atPosition = isOverlayVisible ? "top left" : `bottom ${alignment}`; const $overlayContainer = this.getValidationMessageContainer($cell); let errorMessageText = ""; messages && messages.forEach((message => { errorMessageText += (errorMessageText.length ? "
" : "") + (0, _string.encodeHtml)(message) })); const invalidMessageClass = this.addWidgetPrefix("invalid-message"); this._rowsView.element().find(`.${invalidMessageClass}`).remove(); const $overlayElement = (0, _renderer.default)("
").addClass("dx-invalid-message").addClass("dx-invalid-message-always").addClass(invalidMessageClass).html(errorMessageText).appendTo($cell); const overlayOptions = { container: $overlayContainer, shading: false, width: "auto", height: "auto", visible: true, animation: false, propagateOutsideClick: true, hideOnOutsideClick: false, wrapperAttr: { id: "dxInvalidMessage", class: `dx-invalid-message dx-invalid-message-always ${invalidMessageClass}` }, position: { collision: "flip", boundary: this._rowsView.element(), boundaryOffset: "0 0", offset: { x: 0, y: !isOverlayVisible && _browser.default.mozilla ? -1 : 0 }, my: myPosition, at: atPosition, of: $cell }, onPositioned: e => { this.overlayPositionedHandler(e, isOverlayVisible); this._shiftValidationMessageIfNeed(e.component.$content(), $cell) } }; this._hideFixedGroupCell($cell, overlayOptions); new _ui.default($overlayElement, overlayOptions) } getValidationMessages() { var _this$_rowsView$eleme; return null === (_this$_rowsView$eleme = this._rowsView.element()) || void 0 === _this$_rowsView$eleme ? void 0 : _this$_rowsView$eleme.find(this._getValidationMessagesSelector()) } getRevertButton() { var _this$_revertTooltip3; return (0, _renderer.default)(null === (_this$_revertTooltip3 = this._revertTooltip) || void 0 === _this$_revertTooltip3 ? void 0 : _this$_revertTooltip3.element()) } _hideValidationMessage() { var _this$_rowsView$eleme2; const validationMessages = null === (_this$_rowsView$eleme2 = this._rowsView.element()) || void 0 === _this$_rowsView$eleme2 ? void 0 : _this$_rowsView$eleme2.find(this._getValidationMessagesSelector()); null === validationMessages || void 0 === validationMessages || validationMessages.remove() } _normalizeValidationMessagePositionAndMaxWidth(options, isRevertButton, isOverlayVisible) { const fixedColumns = this._columnsController.getFixedColumns(); if (!fixedColumns || !fixedColumns.length) { return } let position; const visibleTableWidth = !isRevertButton && function(that, element) { const rowIndex = (0, _renderer.default)(element).closest("tr").index(); const $cellElements = (0, _renderer.default)(that._rowsView.getRowElement(rowIndex)).first().children().filter(":not(.dx-hidden-cell)"); return that._rowsView._getWidths($cellElements).reduce(((w1, w2) => w1 + w2), 0) }(this, options.element); const $overlayContentElement = options.component.$content(); const validationMessageWidth = (0, _size.getOuterWidth)($overlayContentElement, true); const needMaxWidth = !isRevertButton && validationMessageWidth > visibleTableWidth; const columnIndex = this._rowsView.getCellIndex((0, _renderer.default)(options.element).closest("td")); const boundaryNonFixedColumnsInfo = function(fixedColumns) { let firstNonFixedColumnIndex; let lastNonFixedColumnIndex; fixedColumns.some(((column, index) => { if ("transparent" === column.command) { firstNonFixedColumnIndex = 0 === index ? -1 : index; lastNonFixedColumnIndex = index === fixedColumns.length - 1 ? -1 : index + column.colspan - 1; return true } return })); return { startColumnIndex: firstNonFixedColumnIndex, endColumnIndex: lastNonFixedColumnIndex } }(fixedColumns); if (!isRevertButton && (columnIndex === boundaryNonFixedColumnsInfo.startColumnIndex || needMaxWidth)) { position = { collision: "none flip", my: "top left", at: isOverlayVisible ? "top right" : "bottom left" } } else if (columnIndex === boundaryNonFixedColumnsInfo.endColumnIndex) { position = { collision: "none flip", my: "top right", at: isRevertButton || isOverlayVisible ? "top left" : "bottom right" }; if (isRevertButton) { position.offset = "-1 0" } } return position && { position: position, maxWidth: needMaxWidth ? visibleTableWidth - 2 : void 0 } } _shiftValidationMessageIfNeed($content, $cell) { const $revertContent = this._revertTooltip && this._revertTooltip.$content(); if (!$revertContent) { return } const contentOffset = $content.offset(); const revertContentOffset = $revertContent.offset(); if (contentOffset.top === revertContentOffset.top && contentOffset.left + (0, _size.getWidth)($content) > revertContentOffset.left) { const left = (0, _size.getWidth)($revertContent) + 2; $content.css("left", revertContentOffset.left < $cell.offset().left ? -left : left) } } getOverlayBaseZIndex() { return _ui.default.baseZIndex() } overlayPositionedHandler(e, isOverlayVisible) { if (!e.component.__skipPositionProcessing) { const isRevertButton = (0, _renderer.default)(e.element).hasClass(this.addWidgetPrefix("revert-tooltip")); const needRepaint = !isRevertButton && this._rowsView.updateFreeSpaceRowHeight(); const normalizedPosition = this._normalizeValidationMessagePositionAndMaxWidth(e, isRevertButton, isOverlayVisible); e.component.__skipPositionProcessing = !!(needRepaint || normalizedPosition); if (normalizedPosition) { e.component.option(normalizedPosition) } else if (needRepaint) { e.component.repaint() } } } _getRevertTooltipsSelector() { const revertTooltipClass = this.addWidgetPrefix("revert-tooltip"); return `.dx-editor-cell .${revertTooltipClass}` } _getValidationMessagesSelector() { const invalidMessageClass = this.addWidgetPrefix("invalid-message"); return `.dx-editor-cell .${invalidMessageClass}, .dx-cell-modified .${invalidMessageClass}` } loseFocus(skipValidator) { if (!skipValidator) { this._validatingController.setValidator(null) } super.loseFocus() } updateCellState($element, validationResult, isHideBorder) { var _change$data; const $focus = null === $element || void 0 === $element ? void 0 : $element.closest(this._getFocusCellSelector()); const $cell = null !== $focus && void 0 !== $focus && $focus.is("td") ? $focus : null; const rowOptions = null === $focus || void 0 === $focus ? void 0 : $focus.closest(".dx-row").data("options"); const change = rowOptions ? this._editingController.getChangeByKey(rowOptions.key) : null; const column = $cell && this._columnsController.getVisibleColumns()[$cell.index()]; const isCellModified = void 0 !== (null === change || void 0 === change || null === (_change$data = change.data) || void 0 === _change$data ? void 0 : _change$data[null === column || void 0 === column ? void 0 : column.name]) && !this._editingController.isSaving(); const validationDescriptionValues = []; if (this._editingController.getEditMode() === EDIT_MODE_CELL) { if ((null === validationResult || void 0 === validationResult ? void 0 : validationResult.status) === VALIDATION_STATUS_invalid || isCellModified) { this._showRevertButton($focus); validationDescriptionValues.push("dxRevertButton") } else { this._revertTooltip && this._revertTooltip.$element().remove() } } const showValidationMessage = validationResult && validationResult.status === VALIDATION_STATUS_invalid; if (showValidationMessage && $cell && column && validationResult && validationResult.brokenRules) { const errorMessages = []; validationResult.brokenRules.forEach((rule => { if (rule.message) { errorMessages.push(rule.message) } })); if (errorMessages.length) { this._showValidationMessage($focus, errorMessages, column.alignment || "left"); validationDescriptionValues.push("dxInvalidMessage") } } this._updateAriaValidationAttributes($focus, validationDescriptionValues); !isHideBorder && this._rowsView.element() && this._rowsView.updateFreeSpaceRowHeight() } _updateAriaValidationAttributes($focus, inputDescriptionValues) { if (0 === inputDescriptionValues.length) { return } const editMode = this._editingController.getEditMode(); const shouldSetValidationAriaAttributes = [EDIT_MODE_CELL, EDIT_MODE_BATCH, EDIT_MODE_ROW].includes(editMode); if (shouldSetValidationAriaAttributes) { const $focusElement = this._getCurrentFocusElement($focus); $focusElement.attr("aria-labelledby", inputDescriptionValues.join(" ")); $focusElement.attr("aria-invalid", true) } } _getCurrentFocusElement($focus) { if (this._editingController.isEditing()) { return $focus.find(_const.EDITORS_INPUT_SELECTOR).first() } return $focus } focus($element, isHideBorder) { if (!arguments.length) { return super.focus() } this._hideValidationMessage(); if (null !== $element && void 0 !== $element && $element.hasClass("dx-row") || null !== $element && void 0 !== $element && $element.hasClass("dx-master-detail-cell")) { return super.focus($element, isHideBorder) } const $focus = null === $element || void 0 === $element ? void 0 : $element.closest(this._getFocusCellSelector()); const validator = $focus && ($focus.data("dxValidator") || $element.find(`.${this.addWidgetPrefix("validator")}`).eq(0).data("dxValidator")); const rowOptions = $focus && $focus.closest(".dx-row").data("options"); const change = rowOptions ? this._editingController.getChangeByKey(rowOptions.key) : null; let validationResult; if (validator) { this._validatingController.setValidator(validator); const value = validator.option("adapter").getValue(); if (cellValueShouldBeValidated(value, rowOptions) || this._validatingController._rowIsValidated(change)) { this._editingController.waitForDeferredOperations().done((() => { const isDetached = !this._rowsView.isElementInside($element); if (isDetached) { return }(0, _deferred.when)(this._validatingController.validateCell(validator)).done((result => { validationResult = result; const { column: column } = validationResult.validator.option("dataGetter")(); if (change && column && !this._validatingController.isCurrentValidatorProcessing({ rowKey: change.key, columnIndex: column.index })) { return } if (!(0, _themes.isFluent)((0, _themes.current)()) && validationResult.status === VALIDATION_STATUS_invalid) { isHideBorder = true } this.updateCellState($element, validationResult, isHideBorder); super.focus.call(this, $element, isHideBorder) })) })); return super.focus($element, isHideBorder) } } this.updateCellState($element, validationResult, isHideBorder); return super.focus($element, isHideBorder) } getEditorInstance($container) { const $editor = $container.find(".dx-texteditor").eq(0); return _m_utils.default.getWidgetInstance($editor) } getValidationMessageContainer($cell) { return $cell.closest(`.${this.addWidgetPrefix("content")}`) } getRevertButtonContainer($cell) { return $cell.closest(`.${this.addWidgetPrefix("content")}`).parent() } hasOverlayElements() { const $validationMessageElements = this.getValidationMessages(); const $revertButtonElement = this.getRevertButton(); return super.hasOverlayElements() || !!(null !== $validationMessageElements && void 0 !== $validationMessageElements && $validationMessageElements.length) || !!(null !== $revertButtonElement && void 0 !== $revertButtonElement && $revertButtonElement.length) } }; exports.validatingEditorFactoryExtender = validatingEditorFactoryExtender; const validatingDataControllerExtender = Base => class extends Base { _getValidationStatus(validationResult) { const validationStatus = validationResultIsValid(validationResult) ? validationResult.status : validationResult; return validationStatus || VALIDATION_STATUS_valid } _isCellChanged(oldRow, newRow, visibleRowIndex, columnIndex, isLiveUpdate) { var _oldRow$cells, _cell$column$validati; const cell = null === (_oldRow$cells = oldRow.cells) || void 0 === _oldRow$cells ? void 0 : _oldRow$cells[columnIndex]; const oldValidationStatus = this._getValidationStatus({ status: null === cell || void 0 === cell ? void 0 : cell.validationStatus }); const validationResult = this._validatingController.getCellValidationResult({ rowKey: oldRow.key, columnIndex: columnIndex }); const validationData = this._validatingController._getValidationData(oldRow.key); const newValidationStatus = this._getValidationStatus(validationResult); const rowIsModified = JSON.stringify(newRow.modifiedValues) !== JSON.stringify(oldRow.modifiedValues); const validationStatusChanged = oldValidationStatus !== newValidationStatus && rowIsModified; const cellIsMarkedAsInvalid = (0, _renderer.default)(null === cell || void 0 === cell ? void 0 : cell.cellElement).hasClass(this.addWidgetPrefix("invalid")); const hasValidationRules = null === cell || void 0 === cell || null === (_cell$column$validati = cell.column.validationRules) || void 0 === _cell$column$validati ? void 0 : _cell$column$validati.length; const rowEditStateChanged = oldRow.isEditing !== newRow.isEditing && hasValidationRules; const cellValidationStateChanged = validationStatusChanged || validationData.isValid && cellIsMarkedAsInvalid; if (rowEditStateChanged || cellValidationStateChanged) { return true } return super._isCellChanged.apply(this, arguments) } }; exports.validatingDataControllerExtender = validatingDataControllerExtender; const validatingRowsViewExtender = Base => class extends Base { updateFreeSpaceRowHeight($table) { const that = this; let $rowElements; let $freeSpaceRowElement; let $freeSpaceRowElements; const $element = that.element(); const $tooltipContent = $element && $element.find(`.${that.addWidgetPrefix("invalid-message")} .dx-overlay-content`); super.updateFreeSpaceRowHeight($table); if ($tooltipContent && $tooltipContent.length) { $rowElements = that._getRowElements().filter(":visible"); $freeSpaceRowElements = that._getFreeSpaceRowElements($table); $freeSpaceRowElement = $freeSpaceRowElements.first(); const rowElementsHasFocusInside = $rowElements.find(":focus").length > 0; if ($freeSpaceRowElement && 1 === $rowElements.length && (!$freeSpaceRowElement.is(":visible") || (0, _size.getOuterHeight)($tooltipContent) > (0, _size.getOuterHeight)($freeSpaceRowElement)) && rowElementsHasFocusInside) { $freeSpaceRowElements.show(); (0, _size.setHeight)($freeSpaceRowElements, (0, _size.getOuterHeight)($tooltipContent)); return true } } return } _formItemPrepared(cellOptions, $container) { super._formItemPrepared.apply(this, arguments); (0, _common.deferUpdate)((() => { const $editor = $container.find(".dx-widget").first(); const isEditorDisposed = $editor.length && !$editor.children().length; if (!isEditorDisposed) { this._validatingController.createValidator(cellOptions, $editor) } })) } _cellPrepared($cell, parameters) { if (!this._editingController.isFormOrPopupEditMode()) { this._validatingController.createValidator(parameters, $cell) } super._cellPrepared.apply(this, arguments) } _restoreErrorRow(contentTable) { this._editingController && this._editingController.hasChanges() && this._getRowElements(contentTable).each(((_, item) => { const rowOptions = (0, _renderer.default)(item).data("options"); if (rowOptions) { const change = this._editingController.getChangeByKey(rowOptions.key); change && this._editingController._showErrorRow(change) } })) } }; exports.validatingRowsViewExtender = validatingRowsViewExtender; exports.validatingModule = { defaultOptions: () => ({ editing: { texts: { validationCancelChanges: _message.default.format("dxDataGrid-validationCancelChanges") } } }), controllers: { validating: ValidatingController }, extenders: { controllers: { editing: validatingEditingExtender, editorFactory: validatingEditorFactoryExtender, data: validatingDataControllerExtender }, views: { rowsView: validatingRowsViewExtender } } } }, 34049: /*!*****************************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/grid_core/views/a11y_status_container_component.js ***! \*****************************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.A11yStatusContainerComponent = void 0; var _renderer = (e = __webpack_require__( /*! ../../../../core/renderer */ 64553), e && e.__esModule ? e : { default: e }); var e; const CLASSES_container = "dx-gridbase-a11y-status-container"; exports.A11yStatusContainerComponent = _ref => { let { statusText: statusText } = _ref; return (0, _renderer.default)("
").text(statusText ?? "").addClass(CLASSES_container).attr("role", "status") } }, 48921: /*!************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/grid_core/views/m_columns_view.js ***! \************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.normalizeWidth = exports.ColumnsView = void 0; var _click = __webpack_require__( /*! ../../../../common/core/events/click */ 64044); var _events_engine = _interopRequireDefault(__webpack_require__( /*! ../../../../common/core/events/core/events_engine */ 92774)); var _double_click = __webpack_require__( /*! ../../../../common/core/events/double_click */ 5636); var _pointer = _interopRequireDefault(__webpack_require__( /*! ../../../../common/core/events/pointer */ 89797)); var _remove = __webpack_require__( /*! ../../../../common/core/events/remove */ 28630); var _dom_adapter = _interopRequireDefault(__webpack_require__( /*! ../../../../core/dom_adapter */ 64960)); var _element = __webpack_require__( /*! ../../../../core/element */ 61404); var _element_data = __webpack_require__( /*! ../../../../core/element_data */ 74663); var _guid = _interopRequireDefault(__webpack_require__( /*! ../../../../core/guid */ 19427)); var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../../../core/renderer */ 64553)); var _browser = _interopRequireDefault(__webpack_require__( /*! ../../../../core/utils/browser */ 48314)); var _common = __webpack_require__( /*! ../../../../core/utils/common */ 17781); var _deferred = __webpack_require__( /*! ../../../../core/utils/deferred */ 87739); var _extend = __webpack_require__( /*! ../../../../core/utils/extend */ 52576); var iteratorUtils = function(e, r) { if (!r && e && e.__esModule) { return e } if (null === e || "object" != typeof e && "function" != typeof e) { return { default: e } } var t = _getRequireWildcardCache(r); if (t && t.has(e)) { return t.get(e) } var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) { if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u] } } return n.default = e, t && t.set(e, n), n }(__webpack_require__( /*! ../../../../core/utils/iterator */ 21274)); var _position = __webpack_require__( /*! ../../../../core/utils/position */ 41639); var _size = __webpack_require__( /*! ../../../../core/utils/size */ 57653); var _style = __webpack_require__( /*! ../../../../core/utils/style */ 58515); var _type = __webpack_require__( /*! ../../../../core/utils/type */ 11528); var _window = __webpack_require__( /*! ../../../../core/utils/window */ 3104); var _m_support = _interopRequireDefault(__webpack_require__( /*! ../../../core/utils/m_support */ 85991)); var _m_column_state_mixin = __webpack_require__( /*! ../../../grids/grid_core/column_state_mixin/m_column_state_mixin */ 96790); var _m_modules = _interopRequireDefault(__webpack_require__( /*! ../m_modules */ 74854)); var _m_utils = _interopRequireDefault(__webpack_require__( /*! ../m_utils */ 53226)); function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) { return null } var r = new WeakMap, t = new WeakMap; return (_getRequireWildcardCache = function(e) { return e ? t : r })(e) } function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } const appendElementTemplate = { render(options) { options.container.append(options.content) } }; const getWidthStyle = function(width) { if ("auto" === width) { return "" } return (0, _type.isNumeric)(width) ? `${width}px` : width }; const removeHandler = function(templateDeferred) { templateDeferred.resolve() }; const normalizeWidth = width => { if ("number" === typeof width) { return `${width.toFixed(3)}px` } if ("adaptiveHidden" === width) { return "0.0001px" } return width }; exports.normalizeWidth = normalizeWidth; class ColumnsView extends((0, _m_column_state_mixin.ColumnStateMixin)(_m_modules.default.View)) { init() { this._scrollLeft = -1; this._columnsController = this.getController("columns"); this._dataController = this.getController("data"); this._adaptiveColumnsController = this.getController("adaptiveColumns"); this._columnChooserController = this.getController("columnChooser"); this._editorFactoryController = this.getController("editorFactory"); this._selectionController = this.getController("selection"); this._columnChooserView = this.getView("columnChooserView"); this._delayedTemplates = []; this._templateDeferreds = new Set; this._templatesCache = {}; this._templateTimeouts = new Set; this.createAction("onCellClick"); this.createAction("onRowClick"); this.createAction("onCellDblClick"); this.createAction("onRowDblClick"); this.createAction("onCellHoverChanged", { excludeValidators: ["disabled", "readOnly"] }); this.createAction("onCellPrepared", { excludeValidators: ["disabled", "readOnly"], category: "rendering" }); this.createAction("onRowPrepared", { excludeValidators: ["disabled", "readOnly"], category: "rendering", afterExecute: e => { this._afterRowPrepared(e) } }); this._columnsController.columnsChanged.add(this._columnOptionChanged.bind(this)); this._dataController && this._dataController.changed.add(this._handleDataChanged.bind(this)) } dispose() { if ((0, _window.hasWindow)()) { var _this$_templateTimeou, _this$_templateTimeou2; const window = (0, _window.getWindow)(); null === (_this$_templateTimeou = this._templateTimeouts) || void 0 === _this$_templateTimeou || _this$_templateTimeou.forEach((templateTimeout => window.clearTimeout(templateTimeout))); null === (_this$_templateTimeou2 = this._templateTimeouts) || void 0 === _this$_templateTimeou2 || _this$_templateTimeou2.clear() } } optionChanged(args) { super.optionChanged(args); switch (args.name) { case "cellHintEnabled": case "onCellPrepared": case "onRowPrepared": case "onCellHoverChanged": this._invalidate(true, true); args.handled = true; break; case "keyboardNavigation": if ("keyboardNavigation.enabled" === args.fullName) { this._invalidate(true, true) } args.handled = true } } _createScrollableOptions() { const scrollingOptions = this.option("scrolling"); let useNativeScrolling = this.option("scrolling.useNative"); const options = (0, _extend.extend)({}, scrollingOptions, { direction: "both", bounceEnabled: false, useKeyboard: false }); if (void 0 === useNativeScrolling) { useNativeScrolling = true } if ("auto" === useNativeScrolling) { delete options.useNative; delete options.useSimulatedScrollbar } else { options.useNative = !!useNativeScrolling; options.useSimulatedScrollbar = !useNativeScrolling } return options } _updateCell($cell, parameters) { if (parameters.rowType) { this._cellPrepared($cell, parameters) } } _needToSetCellWidths() { return this.option("columnAutoWidth") } _createCell(options) { const { column: column } = options; const alignment = column.alignment || (0, _position.getDefaultAlignment)(this.option("rtlEnabled")); const needToSetCellWidths = this._needToSetCellWidths(); const cell = _dom_adapter.default.createElement("td"); cell.style.textAlign = alignment; const $cell = (0, _renderer.default)(cell); if (column.cssClass) { $cell.addClass(column.cssClass) } if (Array.isArray(column.elementAttr)) { column.elementAttr.forEach((_ref => { let { name: name, value: value } = _ref; $cell.attr(name, value) })) } if ("expand" === column.command) { $cell.addClass(column.cssClass); $cell.addClass(this.addWidgetPrefix("group-space")) } if (column.colspan > 1) { $cell.attr("colSpan", column.colspan) } else if (!column.isBand && "auto" !== column.visibleWidth && needToSetCellWidths) { if (column.width || column.minWidth) { cell.style.minWidth = getWidthStyle(column.minWidth || column.width) } if (column.width) { ! function(cell, column, width) { cell.style.width = cell.style.maxWidth = "auto" === column.width ? "" : width }(cell, column, getWidthStyle(column.width)) } } return $cell } _createRow(rowObject, tagName) { tagName = tagName || "tr"; const $element = (0, _renderer.default)(`<${tagName}>`).addClass("dx-row"); if ("tr" === tagName) { this.setAria("role", "row", $element) } return $element } _isAltRow(row) { return row && row.dataIndex % 2 === 1 } _createTable(columns, isAppend) { const $table = (0, _renderer.default)("").addClass(this.addWidgetPrefix("table")).addClass(this.addWidgetPrefix("table-fixed")); if (columns && !isAppend) { $table.attr("id", `dx-${new _guid.default}`).append(this._createColGroup(columns)); if (_browser.default.safari) { $table.append((0, _renderer.default)("").append("")) } this.setAria("role", "presentation", $table) } else { this.setAria("hidden", true, $table) } this.setAria("role", "presentation", (0, _renderer.default)("").appendTo($table)); if (isAppend) { return $table } if (_browser.default.mozilla) { _events_engine.default.on($table, "mousedown", "td", (e => { if (e.ctrlKey) { e.preventDefault() } })) } if (this.option("cellHintEnabled")) { _events_engine.default.on($table, "mousemove", ".dx-row > td", this.createAction((args => { const e = args.event; const $element = (0, _renderer.default)(e.target); const $cell = (0, _renderer.default)(e.currentTarget); const $row = $cell.parent(); const visibleColumns = this._columnsController.getVisibleColumns(); const rowOptions = $row.data("options"); const columnIndex = $cell.index(); const cellOptions = rowOptions && rowOptions.cells && rowOptions.cells[columnIndex]; const column = cellOptions ? cellOptions.column : visibleColumns[columnIndex]; const isHeaderRow = $row.hasClass("dx-header-row"); const isDataRow = $row.hasClass("dx-data-row"); const isMasterDetailRow = $row.hasClass("dx-master-detail-row"); const isGroupRow = $row.hasClass("dx-group-row"); const isFilterRow = $row.hasClass(this.addWidgetPrefix("filter-row")); const isDataRowWithTemplate = isDataRow && (!column || column.cellTemplate); const isEditorShown = isDataRow && cellOptions && (rowOptions.isEditing || cellOptions.isEditing || (null === column || void 0 === column ? void 0 : column.showEditorAlways)); const isHeaderRowWithTemplate = isHeaderRow && (!column || column.headerCellTemplate); const isGroupCellWithTemplate = isGroupRow && (!column || column.groupIndex && column.groupCellTemplate); const shouldShowHint = !isMasterDetailRow && !isFilterRow && !isEditorShown && !isDataRowWithTemplate && !isHeaderRowWithTemplate && !isGroupCellWithTemplate; if (shouldShowHint) { if ($element.data("dxCellHintVisible")) { $element.removeAttr("title"); $element.data("dxCellHintVisible", false) } const difference = $element[0].scrollWidth - $element[0].clientWidth; if (difference > 0 && !(0, _type.isDefined)($element.attr("title"))) { $element.attr("title", $element.text()); $element.data("dxCellHintVisible", true) } } }))) } const getOptions = event => { const $cell = (0, _renderer.default)(event.currentTarget); const $fieldItemContent = (0, _renderer.default)(event.target).closest(".dx-field-item-content"); const $row = $cell.parent(); const rowOptions = $row.data("options"); const options = rowOptions && rowOptions.cells && rowOptions.cells[$cell.index()]; if (!$cell.closest("table").is(event.delegateTarget)) { return } const resultOptions = (0, _extend.extend)({}, options, { cellElement: (0, _element.getPublicElement)($cell), event: event, eventType: event.type }); resultOptions.rowIndex = this.getRowIndex($row); if ($fieldItemContent.length) { const formItemOptions = $fieldItemContent.data("dx-form-item"); if (formItemOptions.column) { resultOptions.column = formItemOptions.column; resultOptions.columnIndex = this._columnsController.getVisibleIndex(resultOptions.column.index) } } return resultOptions }; _events_engine.default.on($table, "mouseover", ".dx-row > td", (e => { const options = getOptions(e); options && this.executeAction("onCellHoverChanged", options) })); _events_engine.default.on($table, "mouseout", ".dx-row > td", (e => { const options = getOptions(e); options && this.executeAction("onCellHoverChanged", options) })); _events_engine.default.on($table, _click.name, ".dx-row > td", (e => { const options = getOptions(e); options && this.executeAction("onCellClick", options) })); _events_engine.default.on($table, _double_click.name, ".dx-row > td", (e => { const options = getOptions(e); options && this.executeAction("onCellDblClick", options) })); ! function(that, $table) { let touchTarget; let touchCurrentTarget; let timeoutId; function clearTouchTargets(timeout) { return setTimeout((() => { touchTarget = touchCurrentTarget = null }), timeout) } _events_engine.default.on($table, "touchstart touchend", ".dx-row", (e => { clearTimeout(timeoutId); if ("touchstart" === e.type) { touchTarget = e.target; touchCurrentTarget = e.currentTarget; timeoutId = clearTouchTargets(1e3) } else { timeoutId = clearTouchTargets() } })); _events_engine.default.on($table, [_click.name, _double_click.name, _pointer.default.down].join(" "), ".dx-row", that.createAction((e => { const { event: event } = e; if (touchTarget) { event.target = touchTarget; event.currentTarget = touchCurrentTarget } if (!(0, _renderer.default)(event.target).closest("a").length) { e.rowIndex = that.getRowIndex(event.currentTarget); if (e.rowIndex >= 0) { e.rowElement = (0, _element.getPublicElement)((0, _renderer.default)(event.currentTarget)); e.columns = that.getColumns(); if (event.type === _pointer.default.down) { that._rowPointerDown(e) } else if (event.type === _click.name) { that._rowClick(e) } else { that._rowDblClick(e) } } } }))) }(this, $table); return $table } _rowPointerDown(e) {} _rowClick() {} _rowDblClick() {} _createColGroup(columns) { const colgroupElement = (0, _renderer.default)(""); for (let i = 0; i < columns.length; i++) { const colspan = columns[i].colspan || 1; for (let j = 0; j < colspan; j++) { colgroupElement.append(this._createCol(columns[i])) } } return colgroupElement } _createCol(column) { let width = column.visibleWidth || column.width; if ("adaptiveHidden" === width) { width = "0.0001px" } const col = (0, _renderer.default)(""); (0, _style.setWidth)(col, width); return col } renderDelayedTemplates(change) { const delayedTemplates = this._delayedTemplates; const syncTemplates = delayedTemplates.filter((template => !template.async)); const asyncTemplates = delayedTemplates.filter((template => template.async)); this._delayedTemplates = []; this._renderDelayedTemplatesCore(syncTemplates, false, change); this._renderDelayedTemplatesCoreAsync(asyncTemplates) } _renderDelayedTemplatesCoreAsync(templates) { if (templates.length) { const templateTimeout = (0, _window.getWindow)().setTimeout((() => { this._templateTimeouts.delete(templateTimeout); this._renderDelayedTemplatesCore(templates, true) })); this._templateTimeouts.add(templateTimeout) } } _renderDelayedTemplatesCore(templates, isAsync, change) { const date = new Date; while (templates.length) { const templateParameters = templates.shift(); const { options: options } = templateParameters; const doc = _dom_adapter.default.getRootNode((0, _renderer.default)(options.container).get(0)); const needWaitAsyncTemplates = this.needWaitAsyncTemplates(); if (!isAsync || (0, _renderer.default)(options.container).closest(doc).length || needWaitAsyncTemplates) { if (change) { options.change = change } templateParameters.template.render(options) } if (isAsync && new Date - date > 30) { this._renderDelayedTemplatesCoreAsync(templates); break } } if (!templates.length && this._delayedTemplates.length) { this.renderDelayedTemplates() } } _processTemplate(template, options) { const that = this; let renderingTemplate; if (template && template.render && !(0, _type.isRenderer)(template)) { renderingTemplate = { allowRenderToDetachedContainer: template.allowRenderToDetachedContainer, render(options) { template.render(options.container, options.model, options.change); options.deferred && options.deferred.resolve() } } } else if ((0, _type.isFunction)(template)) { renderingTemplate = { render(options) { const renderedTemplate = template((0, _element.getPublicElement)(options.container), options.model, options.change); if (renderedTemplate && (renderedTemplate.nodeType || (0, _type.isRenderer)(renderedTemplate))) { options.container.append(renderedTemplate) } options.deferred && options.deferred.resolve() } } } else { const templateID = (0, _type.isString)(template) ? template : (0, _renderer.default)(template).attr("id"); if (!templateID) { renderingTemplate = that.getTemplate(template) } else { if (!that._templatesCache[templateID]) { that._templatesCache[templateID] = that.getTemplate(template) } renderingTemplate = that._templatesCache[templateID] } } return renderingTemplate } renderTemplate(container, template, options, allowRenderToDetachedContainer, change) { const renderingTemplate = this._processTemplate(template, options); const { column: column } = options; const isDataRow = "data" === options.rowType; const templateDeferred = new _deferred.Deferred; const templateOptions = { container: container, model: options, deferred: templateDeferred, onRendered: () => { if (this.isDisposed()) { templateDeferred.reject() } else { templateDeferred.resolve() } } }; if (renderingTemplate) { options.component = this.component; const columnAsync = column && (column.renderAsync && isDataRow || this.option("renderAsync") && (false !== column.renderAsync && (column.command || column.showEditorAlways) && isDataRow || "filter" === options.rowType)); const async = options.renderAsync ?? columnAsync; if ((renderingTemplate.allowRenderToDetachedContainer || allowRenderToDetachedContainer) && !async) { renderingTemplate.render(templateOptions) } else { this._delayedTemplates.push({ template: renderingTemplate, options: templateOptions, async: async }) } this._templateDeferreds.add(templateDeferred); _events_engine.default.on(container, _remove.removeEvent, removeHandler.bind(null, templateDeferred)) } else { templateDeferred.reject() } return templateDeferred.promise().always((() => { this._templateDeferreds.delete(templateDeferred) })) } _getBodies(tableElement) { return (0, _renderer.default)(tableElement).children("tbody").not(".dx-header").not(".dx-footer") } _needWrapRow($tableElement) { var _this$_getBodies; const hasRowTemplate = !!this.option().rowTemplate; return hasRowTemplate && !!(null !== (_this$_getBodies = this._getBodies($tableElement)) && void 0 !== _this$_getBodies && _this$_getBodies.filter(".dx-row").length) } _wrapRowIfNeed($table, $row, isRefreshing) { const $tableElement = isRefreshing ? $table || this._tableElement : this._tableElement || $table; const needWrapRow = this._needWrapRow($tableElement); if (needWrapRow) { const $tbody = (0, _renderer.default)("").addClass($row.attr("class")); this.setAria("role", "presentation", $tbody); return $tbody.append($row) } return $row } _appendRow($table, $row, appendTemplate) { appendTemplate = appendTemplate || appendElementTemplate; appendTemplate.render({ content: $row, container: $table }) } _resizeCore() { const scrollLeft = this._scrollLeft; if (scrollLeft >= 0) { this._scrollLeft = 0; this.scrollTo({ left: scrollLeft }) } } _renderCore(e) { const $root = this.element().parent(); if (!$root || $root.parent().length) { this.renderDelayedTemplates(e) } return (new _deferred.Deferred).resolve() } _renderTable(options) { options = options || {}; options.columns = this._columnsController.getVisibleColumns(); const changeType = options.change && options.change.changeType; const $table = this._createTable(options.columns, "append" === changeType || "prepend" === changeType || "update" === changeType); this._renderRows($table, options); return $table } _renderRows($table, options) { const that = this; const rows = that._getRows(options.change); const columnIndices = options.change && options.change.columnIndices || []; const changeTypes = options.change && options.change.changeTypes || []; for (let i = 0; i < rows.length; i++) { that._renderRow($table, (0, _extend.extend)({ row: rows[i], columnIndices: columnIndices[i], changeType: changeTypes[i] }, options)) } } _renderRow($table, options) { if (!options.columnIndices) { options.row.cells = [] } const $row = this._createRow(options.row); const $wrappedRow = this._wrapRowIfNeed($table, $row); if ("remove" !== options.changeType) { this._renderCells($row, options) } this._appendRow($table, $wrappedRow); const rowOptions = (0, _extend.extend)({ columns: options.columns }, options.row); this._addWatchMethod(rowOptions, options.row); this._rowPrepared($wrappedRow, rowOptions, options.row) } _needRenderCell(columnIndex, columnIndices) { return !columnIndices || columnIndices.indexOf(columnIndex) >= 0 } _renderCells($row, options) { const that = this; let columnIndex = 0; const { row: row } = options; const { columns: columns } = options; for (let i = 0; i < columns.length; i++) { if (this._needRenderCell(i, options.columnIndices)) { that._renderCell($row, (0, _extend.extend)({ column: columns[i], columnIndex: columnIndex, value: row.values && row.values[columnIndex], oldValue: row.oldValues && row.oldValues[columnIndex] }, options)) } if (columns[i].colspan > 1) { columnIndex += columns[i].colspan } else { columnIndex++ } } } _updateCells($rowElement, $newRowElement, columnIndices, options) { var _options$node; const that = this; const $cells = $rowElement.children(); const $newCells = $newRowElement.children(); const highlightChanges = this.option("highlightChanges"); const cellUpdatedClass = this.addWidgetPrefix("cell-updated-animation"); if (null !== options && void 0 !== options && null !== (_options$node = options.node) && void 0 !== _options$node && _options$node.hasChildren) { $cells.each((function() { that.setAria("expanded", options.isExpanded, (0, _renderer.default)(this)) })) } columnIndices.forEach(((columnIndex, index) => { const $cell = $cells.eq(columnIndex); const $newCell = $newCells.eq(index); $cell.replaceWith($newCell); if (highlightChanges && !$newCell.hasClass("dx-command-expand")) { $newCell.addClass(cellUpdatedClass) } })); ! function(element, newElement) { if (!element || !newElement) { return } const oldAttributes = element.attributes; const newAttributes = newElement.attributes; let i; for (i = 0; i < oldAttributes.length; i++) { const name = oldAttributes[i].nodeName; if (!newElement.hasAttribute(name)) { element.removeAttribute(name) } } for (i = 0; i < newAttributes.length; i++) { element.setAttribute(newAttributes[i].nodeName, newAttributes[i].nodeValue) } }($rowElement.get(0), $newRowElement.get(0)) } _setCellAriaAttributes($cell, cellOptions, options) { var _row$node; const { row: row } = options; const isFreeSpaceRow = "freeSpace" === cellOptions.rowType; const isGroupRow = "group" === cellOptions.rowType; const rowHasChildren = null === row || void 0 === row || null === (_row$node = row.node) || void 0 === _row$node ? void 0 : _row$node.hasChildren; if (isFreeSpaceRow) { return } this.setAria("role", "gridcell", $cell); if (rowHasChildren) { this.setAria("expanded", row.isExpanded, $cell) } const columnIndexOffset = this._columnsController.getColumnIndexOffset(); const ariaColIndex = isGroupRow ? cellOptions.columnIndex + 1 : cellOptions.columnIndex + columnIndexOffset + 1; this.setAria("colindex", ariaColIndex, $cell) } _renderCell($row, options) { const cellOptions = this._getCellOptions(options); if (options.columnIndices) { if (options.row.cells) { const cellIndex = options.row.cells.findIndex((cell => cell.columnIndex === cellOptions.columnIndex)); options.row.cells[cellIndex] = cellOptions } } else { options.row.cells.push(cellOptions) } const $cell = this._createCell(cellOptions); this._setCellAriaAttributes($cell, cellOptions, options); this._renderCellContent($cell, cellOptions, options); $row.get(0).appendChild($cell.get(0)); return $cell } _renderCellContent($cell, options, renderOptions) { const template = this._getCellTemplate(options); (0, _deferred.when)(!template || this.renderTemplate($cell, template, options, void 0, renderOptions.change)).done((() => { this._updateCell($cell, options) })) } _getCellTemplate(options) {} _getRows(change) { return [] } _getCellOptions(options) { const cellOptions = { column: options.column, columnIndex: options.columnIndex, rowType: options.row.rowType, rowIndex: options.row.rowIndex, isAltRow: this._isAltRow(options.row) }; this._addWatchMethod(cellOptions); return cellOptions } _addWatchMethod(options, source) { if (!this.option("repaintChangesOnly")) { return } const watchers = []; source = source || options; source.watch = source.watch || function(getter, updateValueFunc, updateRowFunc) { let oldValue = getter(source.data); const watcher = function(row) { if (row && updateRowFunc) { updateRowFunc(row) } const newValue = getter(source.data); if (JSON.stringify(oldValue) !== JSON.stringify(newValue)) { if (row) { updateValueFunc(newValue) } oldValue = newValue } }; watchers.push(watcher); return function() { const index = watchers.indexOf(watcher); if (index >= 0) { watchers.splice(index, 1) } } }; source.update = source.update || function(row, keepRow) { if (row) { this.data = options.data = row.data; this.rowIndex = options.rowIndex = row.rowIndex; this.dataIndex = options.dataIndex = row.dataIndex; this.isExpanded = options.isExpanded = row.isExpanded; if (options.row && !keepRow) { options.row = row } } watchers.forEach((watcher => { watcher(row) })) }; if (source !== options) { options.watch = source.watch.bind(source) } return options } _cellPrepared(cell, options) { options.cellElement = (0, _element.getPublicElement)((0, _renderer.default)(cell)); this.executeAction("onCellPrepared", options) } _rowPrepared($row, options, row) { (0, _element_data.data)($row.get(0), "options", options); options.rowElement = (0, _element.getPublicElement)($row); this.executeAction("onRowPrepared", options) } _columnOptionChanged(e) { const { optionNames: optionNames } = e; if (_m_utils.default.checkChanges(optionNames, ["width", "visibleWidth"])) { const visibleColumns = this._columnsController.getVisibleColumns(); const widths = visibleColumns.map((column => column.visibleWidth || column.width)); this.setColumnWidths({ widths: widths, optionNames: optionNames }); return } if (!this._requireReady) { this.render() } } getCellIndex($cell, rowIndex) { const cellIndex = $cell.length ? $cell[0].cellIndex : -1; return cellIndex } getTableElements() { return this._tableElement || (0, _renderer.default)() } getTableElement(isFixedTableRendering) { return this._tableElement } setTableElement(tableElement, isFixedTableRendering) { this._tableElement = tableElement } _afterRowPrepared(e) {} _handleDataChanged(e) {} callbackNames() { return ["scrollChanged"] } _updateScrollLeftPosition() { const scrollLeft = this._scrollLeft; if (scrollLeft >= 0) { this._scrollLeft = 0; this.scrollTo({ left: scrollLeft }) } } scrollTo(pos) { const $element = this.element(); const $scrollContainer = $element && $element.children(`.${this.addWidgetPrefix("scroll-container")}`).not(`.${this.addWidgetPrefix("content-fixed")}`); if ((0, _type.isDefined)(pos) && (0, _type.isDefined)(pos.left) && this._scrollLeft !== pos.left) { this._scrollLeft = pos.left; $scrollContainer && $scrollContainer.scrollLeft(pos.left) } } getContent(isFixedTableRendering) { var _this$_tableElement; return null === (_this$_tableElement = this._tableElement) || void 0 === _this$_tableElement ? void 0 : _this$_tableElement.parent() } _removeContent(isFixedTableRendering) { const $scrollContainer = this.getContent(isFixedTableRendering); if (null !== $scrollContainer && void 0 !== $scrollContainer && $scrollContainer.length) { $scrollContainer.remove() } } handleScroll(e) { const scrollLeft = (0, _renderer.default)(e.target).scrollLeft(); if (scrollLeft !== this._scrollLeft) { this.scrollChanged.fire({ left: scrollLeft }, this.name) } } _wrapTableInScrollContainer($table, isFixedTableRendering) { const $scrollContainer = (0, _renderer.default)("
"); const useNative = this.option("scrolling.useNative"); if (false === useNative || "auto" === useNative && !_m_support.default.nativeScrolling) { $scrollContainer.addClass(this.addWidgetPrefix("scrollable-simulated")) } _events_engine.default.on($scrollContainer, "scroll", this.handleScroll.bind(this)); $scrollContainer.addClass(this.addWidgetPrefix("content")).addClass(this.addWidgetPrefix("scroll-container")).append($table).appendTo(this.element()); this.setAria("role", "presentation", $scrollContainer); return $scrollContainer } needWaitAsyncTemplates() { return this.option("templatesRenderAsynchronously") && false === this.option("renderAsync") } waitAsyncTemplates() { let forceWaiting = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : false; const result = new _deferred.Deferred; const needWaitAsyncTemplates = forceWaiting || this.needWaitAsyncTemplates(); if (!needWaitAsyncTemplates || !(0, _type.isDefined)(this._templateDeferreds)) { return result.resolve() } const waitTemplatesRecursion = () => _deferred.when.apply(this, Array.from(this._templateDeferreds)).done((() => { if (this.isDisposed()) { result.reject() } else if (this._templateDeferreds.size > 0) { waitTemplatesRecursion() } else { result.resolve() } })).fail(result.reject); waitTemplatesRecursion(); return result.promise() } _updateContent($newTableElement, change, isFixedTableRendering) { return this.waitAsyncTemplates().done((() => { this._removeContent(isFixedTableRendering); this.setTableElement($newTableElement, isFixedTableRendering); this._wrapTableInScrollContainer($newTableElement, isFixedTableRendering) })) } _findContentElement(isFixedTableRendering) {} _getWidths($cellElements) { if (!$cellElements) { return [] } const result = []; const cellElements = $cellElements.toArray(); cellElements.forEach((cell => { let width = cell.offsetWidth; if (cell.getBoundingClientRect) { const rect = (0, _position.getBoundingRect)(cell); if (rect.width > cell.offsetWidth - 1) { width = rect.width } } result.push(width) })); return result } getColumnWidths($tableElement, rowIndex) { (this.option("forceApplyBindings") || _common.noop)(); $tableElement = $tableElement ?? this.getTableElement(); if ($tableElement) { const $rows = $tableElement.children("tbody:not(.dx-header)").children(); for (let i = 0; i < $rows.length; i++) { const $row = $rows.eq(i); const isGroupRow = $row.hasClass("dx-group-row"); const isDetailRow = $row.hasClass("dx-master-detail-row"); const isErrorRow = $row.hasClass("dx-error-row"); const isRowVisible = "none" !== $row.get(0).style.display && !$row.hasClass("dx-state-invisible"); const isRelevantRow = !isGroupRow && !isDetailRow && !isErrorRow; if (isRowVisible && isRelevantRow) { const $cells = $row.children("td"); const result = this._getWidths($cells); return result } } } return [] } getVisibleColumnIndex(columnIndex, rowIndex) { return columnIndex } setCellPropertiesCore(styleProps, $row, visibleCellIndex) { const $cell = $row.hasClass("dx-group-row") ? $row.find(`td[aria-colindex='${visibleCellIndex+1}']:not(.dx-group-cell)`) : $row.find("td").eq(visibleCellIndex); for (let i = 0; i < $cell.length; i += 1) { const cell = $cell.get(i); Object.assign(cell.style, styleProps) } } setCellProperties(styleProps, columnIndex, rowIndex) { const $tableElement = this.getTableElement(); if (!(null !== $tableElement && void 0 !== $tableElement && $tableElement.length)) { return } const $rows = $tableElement.children().children(".dx-row").not(".dx-master-detail-row"); if ((0, _type.isDefined)(rowIndex)) { this.setCellPropertiesCore(styleProps, $rows.eq(rowIndex), columnIndex) } else { for (let rowIndex = 0; rowIndex < $rows.length; rowIndex++) { const visibleIndex = this.getVisibleColumnIndex(columnIndex, rowIndex); if (visibleIndex >= 0) { this.setCellPropertiesCore(styleProps, $rows.eq(rowIndex), visibleIndex) } } } } setColumnWidths(_ref2) { let { widths: widths, optionNames: optionNames } = _ref2; const $tableElement = this.getTableElement(); if (!(null !== $tableElement && void 0 !== $tableElement && $tableElement.length) || !widths) { return } const columns = this.getColumns(); const needToSetCellWidths = this._needToSetCellWidths(); const $cols = $tableElement.children("colgroup").children("col"); $cols.toArray().forEach((col => col.removeAttribute("style"))); columns.forEach(((column, columnIndex) => { if (needToSetCellWidths && column.width && !column.command) { const styleProps = {}; const width = getWidthStyle(column.visibleWidth || column.width); const minWidth = getWidthStyle(column.minWidth || width); styleProps.width = "auto" === column.width ? "" : width; styleProps.maxWidth = styleProps.width; styleProps.minWidth = minWidth; this.setCellProperties(styleProps, columnIndex) } const colWidth = normalizeWidth(widths[columnIndex]); if ((0, _type.isDefined)(colWidth)) { (0, _style.setWidth)($cols.eq(columnIndex), colWidth) } })) } getCellElements(rowIndex) { return this._getCellElementsCore(rowIndex) } _getCellElementsCore(rowIndex) { if (rowIndex < 0) { return } const $row = this._getRowElements().eq(rowIndex); return $row.children() } _getCellElement(rowIndex, columnIdentifier) { const $cells = this.getCellElements(rowIndex); const columnVisibleIndex = this._getVisibleColumnIndex($cells, rowIndex, columnIdentifier); if (!(null !== $cells && void 0 !== $cells && $cells.length) || columnVisibleIndex < 0) { return } const $cell = $cells.eq(columnVisibleIndex); return $cell.length > 0 ? $cell : void 0 } _getRowElement(rowIndex) { const that = this; let $rowElement = (0, _renderer.default)(); const $tableElements = that.getTableElements(); iteratorUtils.each($tableElements, ((_, tableElement) => { $rowElement = $rowElement.add(that._getRowElements((0, _renderer.default)(tableElement)).eq(rowIndex)) })); if ($rowElement.length) { return $rowElement } return } getCellElement(rowIndex, columnIdentifier) { const $cell = this._getCellElement(rowIndex, columnIdentifier); if ($cell) { return (0, _element.getPublicElement)($cell) } return } getRowElement(rowIndex) { const $rows = this._getRowElement(rowIndex); let elements = []; if ($rows && !(0, _element.getPublicElement)($rows).get) { for (let i = 0; i < $rows.length; i++) { elements.push($rows[i]) } } else { elements = $rows } return elements } _getVisibleColumnIndex($cells, rowIndex, columnIdentifier) { if ((0, _type.isString)(columnIdentifier)) { const columnIndex = this._columnsController.columnOption(columnIdentifier, "index"); return this._columnsController.getVisibleIndex(columnIndex) } return columnIdentifier } getColumnElements() {} getColumns(rowIndex, $tableElement) { return this._columnsController.getVisibleColumns(rowIndex) } getCell(cellPosition, rows, cells) { const $rows = rows || this._getRowElements(); let $cells; if ($rows.length > 0 && cellPosition.rowIndex >= 0) { var _$cells; if ("virtual" !== this.option("scrolling.mode") && "virtual" !== this.option("scrolling.rowRenderingMode")) { cellPosition.rowIndex = cellPosition.rowIndex < $rows.length ? cellPosition.rowIndex : $rows.length - 1 } $cells = cells || this.getCellElements(cellPosition.rowIndex); if ((null === (_$cells = $cells) || void 0 === _$cells ? void 0 : _$cells.length) > 0) { return $cells.eq($cells.length > cellPosition.columnIndex ? cellPosition.columnIndex : $cells.length - 1) } } } getRowsCount() { const tableElement = this.getTableElement(); if (tableElement && 1 === tableElement.length) { return tableElement[0].rows.length } return 0 } _getRowElementsCore(tableElement) { tableElement = tableElement || this.getTableElement(); if (tableElement) { const hasRowTemplate = this.option().rowTemplate || this.option("dataRowTemplate"); const tBodies = hasRowTemplate && tableElement.find("> tbody.dx-row"); return tBodies && tBodies.length ? tBodies : tableElement.find("> tbody > .dx-row, > .dx-row") } return (0, _renderer.default)() } _getRowElements(tableElement) { return this._getRowElementsCore(tableElement) } getRowIndex($row) { return this._getRowElements().index($row) } getBoundingRect() {} getName() {} setScrollerSpacing(width) { const $element = this.element(); const rtlEnabled = this.option("rtlEnabled"); $element && $element.css({ paddingLeft: rtlEnabled ? width : "", paddingRight: !rtlEnabled ? width : "" }) } isScrollbarVisible(isHorizontal) { const $element = this.element(); const $tableElement = this._tableElement; if ($element && $tableElement) { return isHorizontal ? (0, _size.getOuterWidth)($tableElement) - (0, _size.getWidth)($element) > 0 : (0, _size.getOuterHeight)($tableElement) - (0, _size.getHeight)($element) > 0 } return false } isDisposed() { var _this$component; return null === (_this$component = this.component) || void 0 === _this$component ? void 0 : _this$component._disposed } } exports.ColumnsView = ColumnsView }, 33706: /*!*********************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/grid_core/views/m_grid_view.js ***! \*********************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.gridViewModule = exports.SynchronizeScrollingController = exports.ResizingController = exports.GridView = void 0; var _message = _interopRequireDefault(__webpack_require__( /*! ../../../../common/core/localization/message */ 4671)); var _dom_adapter = _interopRequireDefault(__webpack_require__( /*! ../../../../core/dom_adapter */ 64960)); var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../../../core/renderer */ 64553)); var _browser = _interopRequireDefault(__webpack_require__( /*! ../../../../core/utils/browser */ 48314)); var _common = __webpack_require__( /*! ../../../../core/utils/common */ 17781); var _deferred = __webpack_require__( /*! ../../../../core/utils/deferred */ 87739); var _iterator = __webpack_require__( /*! ../../../../core/utils/iterator */ 21274); var _position = __webpack_require__( /*! ../../../../core/utils/position */ 41639); var _size = __webpack_require__( /*! ../../../../core/utils/size */ 57653); var _type = __webpack_require__( /*! ../../../../core/utils/type */ 11528); var _window = __webpack_require__( /*! ../../../../core/utils/window */ 3104); var accessibility = function(e, r) { if (!r && e && e.__esModule) { return e } if (null === e || "object" != typeof e && "function" != typeof e) { return { default: e } } var t = _getRequireWildcardCache(r); if (t && t.has(e)) { return t.get(e) } var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) { if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u] } } return n.default = e, t && t.set(e, n), n }(__webpack_require__( /*! ../../../../ui/shared/accessibility */ 16191)); var _a11y_status_container_component = __webpack_require__( /*! ../../../grids/grid_core/views/a11y_status_container_component */ 34049); var _m_modules = _interopRequireDefault(__webpack_require__( /*! ../m_modules */ 74854)); var _m_utils = _interopRequireDefault(__webpack_require__( /*! ../m_utils */ 53226)); function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) { return null } var r = new WeakMap, t = new WeakMap; return (_getRequireWildcardCache = function(e) { return e ? t : r })(e) } function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } const VIEW_NAMES = ["columnsSeparatorView", "blockSeparatorView", "trackerView", "headerPanel", "columnHeadersView", "rowsView", "footerView", "columnChooserView", "filterPanelView", "pagerView", "draggingHeaderView", "contextMenuView", "errorView", "headerFilterView", "filterBuilderView"]; const E2E_ATTRIBUTES_a11yStatusContainer = "e2e-a11y-general-status-container"; const isPercentWidth = function(width) { return (0, _type.isString)(width) && width.endsWith("%") }; const calculateFreeWidth = function(that, widths) { const contentWidth = that._rowsView.contentWidth(); const totalWidth = that._getTotalWidth(widths, contentWidth); return contentWidth - totalWidth }; const calculateFreeWidthWithCurrentMinWidth = function(that, columnIndex, currentMinWidth, widths) { return calculateFreeWidth(that, widths.map(((width, index) => index === columnIndex ? currentMinWidth : width))) }; class ResizingController extends _m_modules.default.ViewController { callbackNames() { return ["resizeCompleted"] } init() { this._prevContentMinHeight = null; this._dataController = this.getController("data"); this._columnsController = this.getController("columns"); this._columnHeadersView = this.getView("columnHeadersView"); this._adaptiveColumnsController = this.getController("adaptiveColumns"); this._editorFactoryController = this.getController("editorFactory"); this._footerView = this.getView("footerView"); this._rowsView = this.getView("rowsView"); this._gridView = this.getView("gridView") } _initPostRenderHandlers() { if (!this._refreshSizesHandler) { this._refreshSizesHandler = e => { let resizeDeferred = (new _deferred.Deferred).resolve(null); const changeType = null === e || void 0 === e ? void 0 : e.changeType; const isDelayed = null === e || void 0 === e ? void 0 : e.isDelayed; const needFireContentReady = changeType && "updateSelection" !== changeType && "updateFocusedRow" !== changeType && "pageIndex" !== changeType && !isDelayed; this._dataController.changed.remove(this._refreshSizesHandler); if (this._checkSize()) { resizeDeferred = this._refreshSizes(e) } if (needFireContentReady) { (0, _deferred.when)(resizeDeferred).done((() => { this._setAriaLabel(e); this.fireContentReadyAction() })) } }; this._dataController.changed.add((() => { this._dataController.changed.add(this._refreshSizesHandler) })) } } _refreshSizes(e) { let resizeDeferred = (new _deferred.Deferred).resolve(null); const changeType = null === e || void 0 === e ? void 0 : e.changeType; const isDelayed = null === e || void 0 === e ? void 0 : e.isDelayed; const items = this._dataController.items(); if (!e || "refresh" === changeType || "prepend" === changeType || "append" === changeType) { if (!isDelayed) { resizeDeferred = this.resize() } } else if ("update" === changeType) { var _e$changeTypes; if (0 === (null === (_e$changeTypes = e.changeTypes) || void 0 === _e$changeTypes ? void 0 : _e$changeTypes.length)) { return resizeDeferred } if ((items.length > 1 || "insert" !== e.changeTypes[0]) && !(0 === items.length && "remove" === e.changeTypes[0]) && !e.needUpdateDimensions) { resizeDeferred = new _deferred.Deferred; this._waitAsyncTemplates().done((() => { (0, _common.deferUpdate)((() => (0, _common.deferRender)((() => (0, _common.deferUpdate)((() => { this._setScrollerSpacing(); this._rowsView.resize(); resizeDeferred.resolve() })))))) })).fail(resizeDeferred.reject) } else { resizeDeferred = this.resize() } } return resizeDeferred } fireContentReadyAction() { this.component._fireContentReadyAction() } _getWidgetAriaLabel() { return "dxDataGrid-ariaDataGrid" } _setAriaLabel(e) { var _this$_columnsControl; let widgetStatusText = ""; let labelParts = []; const columnCount = (null === (_this$_columnsControl = this._columnsController) || void 0 === _this$_columnsControl || null === (_this$_columnsControl = _this$_columnsControl._columns) || void 0 === _this$_columnsControl ? void 0 : _this$_columnsControl.filter((_ref => { let { visible: visible } = _ref; return !!visible })).length) ?? 0; const totalItemsCount = Math.max(0, this._dataController.totalItemsCount()); const widgetAriaLabel = this._getWidgetAriaLabel(); widgetStatusText = _message.default.format(widgetAriaLabel, totalItemsCount, columnCount); const expandableWidgetAriaLabel = _message.default.format(this._expandableWidgetAriaId); labelParts = [widgetStatusText]; if (expandableWidgetAriaLabel) { labelParts.push(expandableWidgetAriaLabel) } const $ariaLabelElement = this.component.$element().children(".dx-gridbase-container"); this.component.setAria("label", labelParts.join(". "), $ariaLabelElement); if (!(null !== e && void 0 !== e && e.isFirstRender)) { this._gridView.setWidgetA11yStatusText(widgetStatusText) } } _getBestFitWidths() { var _widths; const rowsView = this._rowsView; const columnHeadersView = this._columnHeadersView; let widths = rowsView.getColumnWidths(); if (!(null !== (_widths = widths) && void 0 !== _widths && _widths.length)) { var _rowsView$getTableEle; const headersTableElement = columnHeadersView.getTableElement(); columnHeadersView.setTableElement(null === (_rowsView$getTableEle = rowsView.getTableElement()) || void 0 === _rowsView$getTableEle ? void 0 : _rowsView$getTableEle.children(".dx-header")); widths = columnHeadersView.getColumnWidths(); columnHeadersView.setTableElement(headersTableElement) } return widths } _setVisibleWidths(visibleColumns, widths) { const columnsController = this._columnsController; columnsController.beginUpdate(); (0, _iterator.each)(visibleColumns, ((index, column) => { const columnId = columnsController.getColumnId(column); columnsController.columnOption(columnId, "visibleWidth", widths[index]) })); columnsController.endUpdate() } _toggleBestFitModeForView(view, className, isBestFit) { if (!view || !view.isVisible()) { return } const $rowsTables = this._rowsView.getTableElements(); const $viewTables = view.getTableElements(); (0, _iterator.each)($rowsTables, ((index, tableElement) => { let $tableBody; const $rowsTable = (0, _renderer.default)(tableElement); const $viewTable = $viewTables.eq(index); if ($viewTable && $viewTable.length) { if (isBestFit) { $tableBody = $viewTable.children("tbody").appendTo($rowsTable) } else { $tableBody = $rowsTable.children(`.${className}`).appendTo($viewTable) } $tableBody.toggleClass(className, isBestFit); $tableBody.toggleClass(this.addWidgetPrefix("best-fit"), isBestFit) } })) } _toggleBestFitMode(isBestFit) { const $rowsTable = this._rowsView.getTableElement(); const $rowsFixedTable = this._rowsView.getTableElements().eq(1); if (!$rowsTable) { return } $rowsTable.css("tableLayout", isBestFit ? "auto" : "fixed"); $rowsTable.children("colgroup").css("display", isBestFit ? "none" : ""); (0, _iterator.each)($rowsFixedTable.find("tr.dx-group-row"), ((idx, item) => { (0, _renderer.default)(item).css("display", isBestFit ? "none" : "") })); $rowsFixedTable.toggleClass(this.addWidgetPrefix("table-fixed"), !isBestFit); this._toggleBestFitModeForView(this._columnHeadersView, "dx-header", isBestFit); this._toggleBestFitModeForView(this._footerView, "dx-footer", isBestFit); if (this._needStretch()) { $rowsTable.get(0).style.width = isBestFit ? "auto" : "" } } _toggleContentMinHeight(value) { const scrollable = this._rowsView.getScrollable(); const $contentElement = this._rowsView._findContentElement(); if (false === (null === scrollable || void 0 === scrollable ? void 0 : scrollable.option("useNative"))) { if (true === value) { this._prevContentMinHeight = $contentElement.get(0).style.minHeight } if ((0, _type.isDefined)(this._prevContentMinHeight)) { $contentElement.css({ minHeight: value ? _m_utils.default.getContentHeightLimit(_browser.default) : this._prevContentMinHeight }) } } } _synchronizeColumns() { const columnsController = this._columnsController; const visibleColumns = columnsController.getVisibleColumns(); const columnAutoWidth = this.option("columnAutoWidth"); const wordWrapEnabled = this.option("wordWrapEnabled"); const hasUndefinedColumnWidth = visibleColumns.some((column => !(0, _type.isDefined)(column.width))); let needBestFit = this._needBestFit(); let hasMinWidth = false; let resetBestFitMode; let isColumnWidthsCorrected = false; let resultWidths = []; let focusedElement; let selectionRange; !needBestFit && (0, _iterator.each)(visibleColumns, ((index, column) => { if ("auto" === column.width) { needBestFit = true; return false } return })); (0, _iterator.each)(visibleColumns, ((index, column) => { if (column.minWidth) { hasMinWidth = true; return false } return })); this._setVisibleWidths(visibleColumns, []); const $element = this.component.$element(); if (needBestFit) { focusedElement = _dom_adapter.default.getActiveElement($element.get(0)); selectionRange = _m_utils.default.getSelectionRange(focusedElement); this._toggleBestFitMode(true); resetBestFitMode = true } this._toggleContentMinHeight(wordWrapEnabled); if ($element && $element.get(0) && this._maxWidth) { delete this._maxWidth; $element[0].style.maxWidth = "" }(0, _common.deferUpdate)((() => { if (needBestFit) { resultWidths = this._getBestFitWidths(); (0, _iterator.each)(visibleColumns, ((index, column) => { const columnId = columnsController.getColumnId(column); columnsController.columnOption(columnId, "bestFitWidth", resultWidths[index], true) })) } else if (hasMinWidth) { resultWidths = this._getBestFitWidths() }(0, _iterator.each)(visibleColumns, (function(index) { const { width: width } = this; if ("auto" !== width) { if ((0, _type.isDefined)(width)) { resultWidths[index] = (0, _type.isNumeric)(width) || function(width) { return (0, _type.isString)(width) && width.endsWith("px") }(width) ? parseFloat(width) : width } else if (!columnAutoWidth) { resultWidths[index] = void 0 } } })); if (resetBestFitMode) { this._toggleBestFitMode(false); resetBestFitMode = false; if (focusedElement && focusedElement !== _dom_adapter.default.getActiveElement()) { const isFocusOutsideWindow = (0, _position.getBoundingRect)(focusedElement).bottom < 0; if (!isFocusOutsideWindow) { ! function(focusedElement, selectionRange) { accessibility.hiddenFocus(focusedElement, true); _m_utils.default.setSelectionRange(focusedElement, selectionRange) }(focusedElement, selectionRange) } } } isColumnWidthsCorrected = this._correctColumnWidths(resultWidths, visibleColumns); if (columnAutoWidth) { ! function() { let expandColumnWidth; (0, _iterator.each)(visibleColumns, ((index, column) => { if ("groupExpand" === column.type) { expandColumnWidth = resultWidths[index] } })); (0, _iterator.each)(visibleColumns, ((index, column) => { if ("groupExpand" === column.type && expandColumnWidth) { resultWidths[index] = expandColumnWidth } })) }(); if (this._needStretch()) { this._processStretch(resultWidths, visibleColumns) } }(0, _common.deferRender)((() => { if (needBestFit || isColumnWidthsCorrected || hasUndefinedColumnWidth) { this._setVisibleWidths(visibleColumns, resultWidths) } if (wordWrapEnabled) { this._toggleContentMinHeight(false) } })) })) } _needBestFit() { return this.option("columnAutoWidth") } _needStretch() { return this._columnsController.getVisibleColumns().some((c => "auto" === c.width && !c.command)) } _getAverageColumnsWidth(resultWidths) { const freeWidth = calculateFreeWidth(this, resultWidths); const columnCountWithoutWidth = resultWidths.filter((width => void 0 === width)).length; return freeWidth / columnCountWithoutWidth } _correctColumnWidths(resultWidths, visibleColumns) { const that = this; let i; let hasPercentWidth = false; let hasAutoWidth = false; let isColumnWidthsCorrected = false; const $element = that.component.$element(); const hasWidth = that._hasWidth; for (i = 0; i < visibleColumns.length; i++) { const index = i; const column = visibleColumns[index]; const isHiddenColumn = "adaptiveHidden" === resultWidths[index]; let width = resultWidths[index]; const { minWidth: minWidth } = column; if (minWidth) { if (void 0 === width) { const averageColumnsWidth = that._getAverageColumnsWidth(resultWidths); width = averageColumnsWidth } else if (isPercentWidth(width)) { const freeWidth = calculateFreeWidthWithCurrentMinWidth(that, index, minWidth, resultWidths); if (freeWidth < 0) { width = -1 } } } const realColumnWidth = that._getRealColumnWidth(index, resultWidths.map(((columnWidth, columnIndex) => index === columnIndex ? width : columnWidth))); if (minWidth && !isHiddenColumn && realColumnWidth < minWidth) { resultWidths[index] = minWidth; isColumnWidthsCorrected = true; i = -1 } if (!(0, _type.isDefined)(column.width)) { hasAutoWidth = true } if (isPercentWidth(column.width)) { hasPercentWidth = true } } if (!hasAutoWidth && resultWidths.length) { const $rowsViewElement = that._rowsView.element(); const contentWidth = that._rowsView.contentWidth(); const scrollbarWidth = that._rowsView.getScrollbarWidth(); const totalWidth = that._getTotalWidth(resultWidths, contentWidth); if (totalWidth < contentWidth) { const lastColumnIndex = _m_utils.default.getLastResizableColumnIndex(visibleColumns, resultWidths); if (lastColumnIndex >= 0) { resultWidths[lastColumnIndex] = "auto"; isColumnWidthsCorrected = true; if (false === hasWidth && !hasPercentWidth) { const borderWidth = _m_utils.default.getComponentBorderWidth(this, $rowsViewElement); that._maxWidth = totalWidth + scrollbarWidth + borderWidth; $element.css("maxWidth", that._maxWidth) } } } } return isColumnWidthsCorrected } _processStretch(resultSizes, visibleColumns) { const groupSize = this._rowsView.contentWidth(); const tableSize = this._getTotalWidth(resultSizes, groupSize); const unusedIndexes = { length: 0 }; if (!resultSizes.length) { return }(0, _iterator.each)(visibleColumns, (function(index) { if (this.width || "adaptiveHidden" === resultSizes[index]) { unusedIndexes[index] = true; unusedIndexes.length++ } })); const diff = groupSize - tableSize; const diffElement = Math.floor(diff / (resultSizes.length - unusedIndexes.length)); let onePixelElementsCount = diff - diffElement * (resultSizes.length - unusedIndexes.length); if (diff >= 0) { for (let i = 0; i < resultSizes.length; i++) { if (unusedIndexes[i]) { continue } resultSizes[i] += diffElement; if (onePixelElementsCount > 0) { if (onePixelElementsCount < 1) { resultSizes[i] += onePixelElementsCount; onePixelElementsCount = 0 } else { resultSizes[i]++; onePixelElementsCount-- } } } } } _getRealColumnWidth(columnIndex, columnWidths, groupWidth) { let ratio = 1; const width = columnWidths[columnIndex]; if (!isPercentWidth(width)) { return parseFloat(width) } const percentTotalWidth = columnWidths.reduce(((sum, width, index) => { if (!isPercentWidth(width)) { return sum } return sum + parseFloat(width) }), 0); const pixelTotalWidth = columnWidths.reduce(((sum, width) => { if (!width || "adaptiveHidden" === width || isPercentWidth(width)) { return sum } return sum + parseFloat(width) }), 0); groupWidth = groupWidth || this._rowsView.contentWidth(); const freeSpace = groupWidth - pixelTotalWidth; const percentTotalWidthInPixel = percentTotalWidth * groupWidth / 100; if (pixelTotalWidth > 0 && percentTotalWidthInPixel + pixelTotalWidth >= groupWidth) { ratio = percentTotalWidthInPixel > freeSpace ? freeSpace / percentTotalWidthInPixel : 1 } return parseFloat(width) * groupWidth * ratio / 100 } _getTotalWidth(widths, groupWidth) { let result = 0; for (let i = 0; i < widths.length; i++) { const width = widths[i]; if (width && "adaptiveHidden" !== width) { result += this._getRealColumnWidth(i, widths, groupWidth) } } return Math.ceil(result) } _getGroupElement() { return this.component.$element().children().get(0) } updateSize(rootElement) { const that = this; const $rootElement = (0, _renderer.default)(rootElement); const importantMarginClass = that.addWidgetPrefix("important-margin"); if (void 0 === that._hasHeight && $rootElement && $rootElement.is(":visible") && (0, _size.getWidth)($rootElement)) { const $groupElement = $rootElement.children(`.${that.getWidgetContainerClass()}`); if ($groupElement.length) { $groupElement.detach() } that._hasHeight = !!(0, _size.getHeight)($rootElement); const width = (0, _size.getWidth)($rootElement); $rootElement.addClass(importantMarginClass); that._hasWidth = (0, _size.getWidth)($rootElement) === width; $rootElement.removeClass(importantMarginClass); if ($groupElement.length) { $groupElement.appendTo($rootElement) } } } publicMethods() { return ["resize", "updateDimensions"] } _waitAsyncTemplates() { var _this$_columnHeadersV, _this$_rowsView, _this$_footerView; return (0, _deferred.when)(null === (_this$_columnHeadersV = this._columnHeadersView) || void 0 === _this$_columnHeadersV ? void 0 : _this$_columnHeadersV.waitAsyncTemplates(true), null === (_this$_rowsView = this._rowsView) || void 0 === _this$_rowsView ? void 0 : _this$_rowsView.waitAsyncTemplates(true), null === (_this$_footerView = this._footerView) || void 0 === _this$_footerView ? void 0 : _this$_footerView.waitAsyncTemplates(true)) } resize() { if (this.component._requireResize) { return (new _deferred.Deferred).resolve() } const d = new _deferred.Deferred; this._waitAsyncTemplates().done((() => { (0, _deferred.when)(this.updateDimensions()).done(d.resolve).fail(d.reject) })).fail(d.reject); return d.promise().done((() => { this.resizeCompleted.fire() })) } updateDimensions(checkSize) { const that = this; that._initPostRenderHandlers(); if (!that._checkSize(checkSize)) { return } const prevResult = that._resizeDeferred; const result = that._resizeDeferred = new _deferred.Deferred; (0, _deferred.when)(prevResult).always((() => { (0, _common.deferRender)((() => { if (that._dataController.isLoaded()) { that._synchronizeColumns() } that._resetGroupElementHeight(); (0, _common.deferUpdate)((() => { (0, _common.deferRender)((() => { (0, _common.deferUpdate)((() => { that._updateDimensionsCore() })) })) })) })).done(result.resolve).fail(result.reject) })); return result.promise() } _resetGroupElementHeight() { const groupElement = this._getGroupElement(); const scrollable = this._rowsView.getScrollable(); if (groupElement && groupElement.style.height && (!scrollable || !scrollable.scrollTop())) { groupElement.style.height = "" } } _checkSize(checkSize) { const $rootElement = this.component.$element(); const isWidgetVisible = $rootElement.is(":visible"); const isGridSizeChanged = this._lastWidth !== (0, _size.getWidth)($rootElement) || this._lastHeight !== (0, _size.getHeight)($rootElement) || this._devicePixelRatio !== (0, _window.getWindow)().devicePixelRatio; return isWidgetVisible && (!checkSize || isGridSizeChanged) } _setScrollerSpacingCore() { const that = this; const vScrollbarWidth = that._rowsView.getScrollbarWidth(); const hScrollbarWidth = that._rowsView.getScrollbarWidth(true); (0, _common.deferRender)((() => { that._columnHeadersView && that._columnHeadersView.setScrollerSpacing(vScrollbarWidth); that._footerView && that._footerView.setScrollerSpacing(vScrollbarWidth); that._rowsView.setScrollerSpacing(vScrollbarWidth, hScrollbarWidth) })) } _setScrollerSpacing() { const scrollable = this._rowsView.getScrollable(); const isNativeScrolling = true === this.option("scrolling.useNative"); if (!scrollable || isNativeScrolling) { (0, _common.deferRender)((() => { (0, _common.deferUpdate)((() => { this._setScrollerSpacingCore() })) })) } else { this._setScrollerSpacingCore() } } _setAriaOwns() { var _this$_columnHeadersV2, _this$_footerView2, _this$_rowsView2; const headerTable = null === (_this$_columnHeadersV2 = this._columnHeadersView) || void 0 === _this$_columnHeadersV2 ? void 0 : _this$_columnHeadersV2.getTableElement(); const footerTable = null === (_this$_footerView2 = this._footerView) || void 0 === _this$_footerView2 ? void 0 : _this$_footerView2.getTableElement(); null === (_this$_rowsView2 = this._rowsView) || void 0 === _this$_rowsView2 || _this$_rowsView2.setAriaOwns(null === headerTable || void 0 === headerTable ? void 0 : headerTable.attr("id"), null === footerTable || void 0 === footerTable ? void 0 : footerTable.attr("id")) } _updateDimensionsCore() { const that = this; const dataController = that._dataController; const rowsView = that._rowsView; const $rootElement = that.component.$element(); const groupElement = this._getGroupElement(); const rootElementHeight = (0, _size.getHeight)($rootElement); const height = that.option("height") ?? $rootElement.get(0).style.height; const isHeightSpecified = !!height && "auto" !== height; const maxHeight = parseInt($rootElement.css("maxHeight")); const maxHeightHappened = maxHeight && rootElementHeight >= maxHeight; const isMaxHeightApplied = groupElement && groupElement.scrollHeight === groupElement.offsetHeight; that.updateSize($rootElement); (0, _common.deferRender)((() => { const hasHeight = that._hasHeight || !!maxHeight || isHeightSpecified; rowsView.hasHeight(hasHeight); this._setAriaOwns(); if (maxHeightHappened && !isMaxHeightApplied) { (0, _renderer.default)(groupElement).css("height", maxHeight) } if (!dataController.isLoaded()) { rowsView.setLoading(dataController.isLoading()); return }(0, _common.deferUpdate)((() => { that._updateLastSizes($rootElement); that._setScrollerSpacing(); (0, _iterator.each)(VIEW_NAMES, ((index, viewName) => { const view = that.getView(viewName); if (view) { view.resize() } })); this._editorFactoryController && this._editorFactoryController.resize() })) })) } _updateLastSizes($rootElement) { this._lastWidth = (0, _size.getWidth)($rootElement); this._lastHeight = (0, _size.getHeight)($rootElement); this._devicePixelRatio = (0, _window.getWindow)().devicePixelRatio } optionChanged(args) { switch (args.name) { case "width": case "height": this.component._renderDimensions(); this.resize(); case "renderAsync": args.handled = true; return; default: super.optionChanged(args) } } resetLastResizeTime() {} } exports.ResizingController = ResizingController; class SynchronizeScrollingController extends _m_modules.default.ViewController { _scrollChangedHandler(views, pos, viewName) { for (let j = 0; j < views.length; j++) { if (views[j] && views[j].name !== viewName) { views[j].scrollTo({ left: pos.left, top: pos.top }) } } } init() { const views = [this.getView("columnHeadersView"), this.getView("footerView"), this.getView("rowsView")]; for (let i = 0; i < views.length; i++) { const view = views[i]; if (view) { view.scrollChanged.add(this._scrollChangedHandler.bind(this, views)) } } } } exports.SynchronizeScrollingController = SynchronizeScrollingController; class GridView extends _m_modules.default.View { init() { this._resizingController = this.getController("resizing"); this._dataController = this.getController("data") } _endUpdateCore() { if (this.component._requireResize) { this.component._requireResize = false; this._resizingController.resize() } } getView(name) { return this.component._views[name] } element() { return this._groupElement } optionChanged(args) { const that = this; if ((0, _type.isDefined)(that._groupElement) && "showBorders" === args.name) { that._groupElement.toggleClass(that.addWidgetPrefix("borders"), !!args.value); args.handled = true } else { super.optionChanged(args) } } _renderViews($groupElement) { const that = this; (0, _iterator.each)(VIEW_NAMES, ((index, viewName) => { const view = that.getView(viewName); if (view) { view.render($groupElement) } })) } _getTableRoleName() { return "group" } render($rootElement) { const isFirstRender = !this._groupElement; const $groupElement = this._groupElement || (0, _renderer.default)("
").addClass(this.getWidgetContainerClass()); $groupElement.addClass("dx-gridbase-container"); $groupElement.toggleClass(this.addWidgetPrefix("borders"), !!this.option("showBorders")); this.setAria("role", "presentation", $rootElement); this.component.setAria("role", this._getTableRoleName(), $groupElement); this._rootElement = $rootElement || this._rootElement; if (isFirstRender) { this._groupElement = $groupElement; (0, _window.hasWindow)() && this._resizingController.updateSize($rootElement); $groupElement.appendTo($rootElement) } if (!this._a11yGeneralStatusElement) { this._a11yGeneralStatusElement = (0, _a11y_status_container_component.A11yStatusContainerComponent)({}); this._a11yGeneralStatusElement.attr(E2E_ATTRIBUTES_a11yStatusContainer, "true"); $groupElement.append(this._a11yGeneralStatusElement) } this._renderViews($groupElement) } update() { const that = this; const $rootElement = that._rootElement; const $groupElement = that._groupElement; if ($rootElement && $groupElement) { this._resizingController.resize(); if (that._dataController.isLoaded()) { that._resizingController.fireContentReadyAction() } } } setWidgetA11yStatusText(statusText) { var _this$_a11yGeneralSta; null === (_this$_a11yGeneralSta = this._a11yGeneralStatusElement) || void 0 === _this$_a11yGeneralSta || _this$_a11yGeneralSta.text(statusText) } } exports.GridView = GridView; exports.gridViewModule = { defaultOptions: () => ({ showBorders: false, renderAsync: false }), controllers: { resizing: ResizingController, synchronizeScrolling: SynchronizeScrollingController }, views: { gridView: GridView }, VIEW_NAMES: VIEW_NAMES } }, 77081: /*!*********************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/grid_core/views/m_rows_view.js ***! \*********************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.RowsView = exports.ROW_LINES_CLASS = void 0; exports.isGroupRow = isGroupRow; exports.rowsModule = void 0; var _events_engine = _interopRequireDefault(__webpack_require__( /*! ../../../../common/core/events/core/events_engine */ 92774)); var _remove = __webpack_require__( /*! ../../../../common/core/events/remove */ 28630); var _message = _interopRequireDefault(__webpack_require__( /*! ../../../../common/core/localization/message */ 4671)); var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../../../core/renderer */ 64553)); var _browser = _interopRequireDefault(__webpack_require__( /*! ../../../../core/utils/browser */ 48314)); var _common = __webpack_require__( /*! ../../../../core/utils/common */ 17781); var _data = __webpack_require__( /*! ../../../../core/utils/data */ 31e3); var _extend = __webpack_require__( /*! ../../../../core/utils/extend */ 52576); var _iterator = __webpack_require__( /*! ../../../../core/utils/iterator */ 21274); var _position = __webpack_require__( /*! ../../../../core/utils/position */ 41639); var _size = __webpack_require__( /*! ../../../../core/utils/size */ 57653); var _string = __webpack_require__( /*! ../../../../core/utils/string */ 54497); var _style = __webpack_require__( /*! ../../../../core/utils/style */ 58515); var _type = __webpack_require__( /*! ../../../../core/utils/type */ 11528); var _window = __webpack_require__( /*! ../../../../core/utils/window */ 3104); var _ui = _interopRequireDefault(__webpack_require__( /*! ../../../../ui/scroll_view/ui.scrollable */ 20876)); var _const = __webpack_require__( /*! ../columns_resizing_reordering/const */ 91066); var _m_utils = _interopRequireDefault(__webpack_require__( /*! ../m_utils */ 53226)); var _const2 = __webpack_require__( /*! ../sticky_columns/const */ 87396); var _m_columns_view = __webpack_require__( /*! ./m_columns_view */ 48921); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } function _extends() { return _extends = Object.assign ? Object.assign.bind() : function(n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) { ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]) } } return n }, _extends.apply(null, arguments) } const ROW_LINES_CLASS = exports.ROW_LINES_CLASS = "dx-row-lines"; function getMaxHorizontalScrollOffset(scrollable) { return scrollable ? Math.round(scrollable.scrollWidth() - scrollable.clientWidth()) : 0 } function isGroupRow(_ref) { let { rowType: rowType, column: column } = _ref; return "group" === rowType && (0, _type.isDefined)(column.groupIndex) && !column.showWhenGrouped && !column.command } function setWatcher(_ref2) { let { element: element, watch: watch, getter: getter, callBack: callBack } = _ref2; if (watch) { const dispose = watch(getter, callBack); _events_engine.default.on(element, _remove.removeEvent, dispose) } } const defaultCellTemplate = function($container, options) { const isDataTextEmpty = (0, _string.isEmpty)(options.text) && "data" === options.rowType; const { text: text } = options; const container = $container.get(0); if (isDataTextEmpty) { _m_utils.default.setEmptyText($container) } else if (options.column.encodeHtml) { container.textContent = text } else { container.innerHTML = text } }; class RowsView extends _m_columns_view.ColumnsView { init() { super.init(); this._editingController = this.getController("editing"); this._resizingController = this.getController("resizing"); this._columnsResizerController = this.getController("columnsResizer"); this._focusController = this.getController("focus"); this._keyboardNavigationController = this.getController("keyboardNavigation"); this._validatingController = this.getController("validating"); this._errorHandlingController = this.getController("errorHandling"); this._columnHeadersView = this.getView("columnHeadersView"); this._rowHeight = 0; this._scrollTop = 0; this._scrollLeft = -1; this._scrollRight = 0; this._hasHeight = void 0; this._contentChanges = []; this._dataController.loadingChanged.add(((isLoading, messageText) => { this.setLoading(isLoading, messageText) })); this._dataController.dataSourceChanged.add((() => { if (this._scrollLeft >= 0 && !this._dataController.isLoading()) { this._handleScroll({ component: this.getScrollable(), forceUpdateScrollPosition: true, scrollOffset: { top: this._scrollTop, left: this._scrollLeft } }) } })) } _getDefaultTemplate(column) { if ("empty" === column.command) { return function(container) { container.html(" ") } } else { return defaultCellTemplate } } renderFocusState(params) {} _getDefaultGroupTemplate(column) { const summaryTexts = this.option("summary.texts"); return function($container, options) { const { data: data } = options; let text = `${options.column.caption}: ${options.text}`; const container = $container.get(0); if (options.summaryItems && options.summaryItems.length) { text += ` ${_m_utils.default.getGroupRowSummaryText(options.summaryItems,summaryTexts)}` } if (data) { if (options.groupContinuedMessage && options.groupContinuesMessage) { text += ` (${options.groupContinuedMessage}. ${options.groupContinuesMessage})` } else if (options.groupContinuesMessage) { text += ` (${options.groupContinuesMessage})` } else if (options.groupContinuedMessage) { text += ` (${options.groupContinuedMessage})` } } if (column.encodeHtml) { container.textContent = text } else { container.innerHTML = text } } } _update(change) {} _updateCell($cell, options) { if (isGroupRow(options)) { const isGroupContainer = $cell.is(`.${this.addWidgetPrefix(_const2.CLASSES.groupRowContainer)}`); const $groupCell = isGroupContainer ? $cell.parent() : $cell; $groupCell.addClass("dx-group-cell") } super._updateCell.apply(this, arguments) } _getCellTemplate(options) { const that = this; const { column: column } = options; let template; if (isGroupRow(options)) { template = column.groupCellTemplate || { allowRenderToDetachedContainer: true, render: that._getDefaultGroupTemplate(column) } } else if (("data" === options.rowType || column.command) && column.cellTemplate) { template = column.cellTemplate } else { template = { allowRenderToDetachedContainer: true, render: that._getDefaultTemplate(column) } } return template } _createRow(row, tag) { const $row = super._createRow.apply(this, arguments); if (row) { const isGroup = "group" === row.rowType; const isDataRow = "data" === row.rowType; isDataRow && $row.addClass("dx-data-row"); isDataRow && this.option("showRowLines") && $row.addClass(ROW_LINES_CLASS); this.option("showColumnLines") && $row.addClass("dx-column-lines"); if (false === row.visible) { $row.hide() } if (isGroup) { $row.addClass("dx-group-row"); this.setAriaExpandedAttribute($row, row) } } return $row } _rowPrepared($row, rowOptions, row) { if ("data" === rowOptions.rowType) { if (this.option("rowAlternationEnabled")) { this._isAltRow(row) && $row.addClass("dx-row-alt"); setWatcher({ element: $row.get(0), watch: rowOptions.watch, getter: () => this._isAltRow(row), callBack: value => { $row.toggleClass("dx-row-alt", value) } }) } this._setAriaRowIndex(rowOptions, $row); setWatcher({ element: $row.get(0), watch: rowOptions.watch, getter: () => rowOptions.rowIndex, callBack: () => this._setAriaRowIndex(rowOptions, $row) }) } super._rowPrepared.apply(this, arguments) } _setAriaRowIndex(row, $row) { if (!$row.is("tr")) { return } const { component: component } = this; const isPagerMode = "standard" === component.option("scrolling.mode") && !_m_utils.default.isVirtualRowRendering(component); let rowIndex = row.rowIndex + 1; if (isPagerMode) { rowIndex = component.pageIndex() * component.pageSize() + rowIndex } else { rowIndex += this._dataController.getRowIndexOffset() } this.setAria("rowindex", rowIndex, $row) } setAriaExpandedAttribute($row, row) { const description = row.isExpanded ? this.localize("dxDataGrid-ariaExpandedRow") : this.localize("dxDataGrid-ariaCollapsedRow"); this.setAria("roledescription", description, $row) } _afterRowPrepared(e) { const arg = e.args[0]; const dataController = this._dataController; const row = dataController.getVisibleRows()[arg.rowIndex]; const watch = this.option("integrationOptions.watchMethod"); if (!arg.data || "data" !== arg.rowType || arg.isNewRow || !this.option("twoWayBindingEnabled") || !watch || !row) { return } const dispose = watch((() => dataController.generateDataValues(arg.data, arg.columns)), (() => { dataController.repaintRows([row.rowIndex], this.option("repaintChangesOnly")) }), { deep: true, skipImmediate: true }); _events_engine.default.on(arg.rowElement, _remove.removeEvent, dispose) } _renderScrollable(force) { const that = this; const $element = that.element(); if (!$element.children().length) { $element.append("
") } if (force || !that._loadPanel) { that._renderLoadPanel($element, $element.parent(), that._dataController.isLocalStore()) } if ((force || !that.getScrollable()) && that._dataController.isLoaded()) { const columns = that.getColumns(); let allColumnsHasWidth = true; for (let i = 0; i < columns.length; i++) { if (!columns[i].width && !columns[i].minWidth) { allColumnsHasWidth = false; break } } if (that.option("columnAutoWidth") || that._hasHeight || allColumnsHasWidth || that._columnsController._isColumnFixing()) { that._renderScrollableCore($element) } } } _handleScroll(e) { const rtlEnabled = this.option("rtlEnabled"); const isNativeScrolling = e.component.option("useNative"); this._scrollTop = e.scrollOffset.top; this._scrollLeft = e.scrollOffset.left; let scrollLeft = e.scrollOffset.left; if (rtlEnabled) { this._scrollRight = getMaxHorizontalScrollOffset(e.component) - this._scrollLeft; if (isNativeScrolling) { scrollLeft = -this._scrollRight } if (!this.isScrollbarVisible(true)) { this._scrollLeft = -1 } } this.scrollChanged.fire(_extends({}, e.scrollOffset, { left: scrollLeft }), this.name) } _renderScrollableCore($element) { const dxScrollableOptions = this._createScrollableOptions(); const scrollHandler = this._handleScroll.bind(this); dxScrollableOptions.onScroll = scrollHandler; this._scrollable = this._createComponent($element, _ui.default, dxScrollableOptions); this._scrollableContainer = this._scrollable && (0, _renderer.default)(this._scrollable.container()) } _renderLoadPanel() { for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { args[_key] = arguments[_key] } return _m_utils.default.renderLoadPanel.apply(this, arguments) } _renderContent(contentElement, tableElement, isFixedTableRendering) { contentElement.empty().append(tableElement); return this._findContentElement() } _updateContent(newTableElement, change, isFixedTableRendering) { this._contentChanges.push({ newTableElement: newTableElement, change: change, isFixedTableRendering: isFixedTableRendering }); return this.waitAsyncTemplates().done((() => { const contentChanges = this._contentChanges; this._contentChanges = []; contentChanges.forEach((_ref3 => { let { newTableElement: newTableElement, change: change, isFixedTableRendering: isFixedTableRendering } = _ref3; const tableElement = this.getTableElement(isFixedTableRendering); const contentElement = this._findContentElement(isFixedTableRendering); const changeType = null === change || void 0 === change ? void 0 : change.changeType; const executors = []; const highlightChanges = this.option("highlightChanges"); const rowInsertedClass = this.addWidgetPrefix("row-inserted-animation"); if ("update" === changeType) { (0, _iterator.each)(change.rowIndices, ((index, rowIndex) => { var _change$changeTypes; const $newRowElement = this._getRowElements(newTableElement).eq(index); const dataChangeType = null === (_change$changeTypes = change.changeTypes) || void 0 === _change$changeTypes ? void 0 : _change$changeTypes[index]; const item = change.items && change.items[index]; executors.push((() => { const $rowElements = this._getRowElements(tableElement); const $rowElement = $rowElements.eq(rowIndex); switch (dataChangeType) { case "update": if (item) { var _change$columnIndices; const columnIndices = null === (_change$columnIndices = change.columnIndices) || void 0 === _change$columnIndices ? void 0 : _change$columnIndices[index]; if ((0, _type.isDefined)(item.visible) && item.visible !== $rowElement.is(":visible")) { $rowElement.toggle(item.visible) } else if (columnIndices) { this._updateCells($rowElement, $newRowElement, columnIndices, item) } else { $rowElement.replaceWith($newRowElement) } } break; case "insert": if (!$rowElements.length) { if (tableElement) { const target = $newRowElement.is("tbody") ? tableElement : tableElement.children("tbody"); $newRowElement.prependTo(target) } } else if ($rowElement.length) { $newRowElement.insertBefore($rowElement) } else { $newRowElement.insertAfter($rowElements.last()) } if (highlightChanges && change.isLiveUpdate) { $newRowElement.addClass(rowInsertedClass) } break; case "remove": $rowElement.remove() } })) })); (0, _iterator.each)(executors, (function() { this() })); newTableElement.remove() } else { this.setTableElement(newTableElement, isFixedTableRendering); contentElement.addClass(this.addWidgetPrefix("content")); this._setGridRole(contentElement); this._renderContent(contentElement, newTableElement, isFixedTableRendering) } })) })).fail((() => { this._contentChanges = [] })) } _getGridRoleName() { return "grid" } _setGridRole($element) { var _this$_dataController; const hasData = !(null !== (_this$_dataController = this._dataController) && void 0 !== _this$_dataController && _this$_dataController.isEmpty()); const gridRoleName = this._getGridRoleName(); if (null !== $element && void 0 !== $element && $element.length && hasData) { this.setAria("role", gridRoleName, $element) } } _createEmptyRow(className, isFixed, height) { const that = this; let $cell; const $row = that._createRow(); const columns = isFixed ? this.getFixedColumns() : this.getColumns(); $row.addClass(className).toggleClass("dx-column-lines", that.option("showColumnLines")); for (let i = 0; i < columns.length; i++) { $cell = that._createCell({ column: columns[i], rowType: "freeSpace", columnIndex: i, columns: columns }); (0, _type.isNumeric)(height) && $cell.css("height", height); $row.append($cell) } that.setAria("role", "presentation", $row); return $row } getFixedColumns() { throw new Error("Method not implemented.") } _appendEmptyRow($table, $emptyRow, location) { const $tBodies = this._getBodies($table); const isTableContainer = !$tBodies.length || $emptyRow.is("tbody"); const $container = isTableContainer ? $table : $tBodies; if ("top" === location) { $container.first().prepend($emptyRow); if (isTableContainer) { const $colgroup = $container.children("colgroup"); $container.prepend($colgroup) } } else { $container.last().append($emptyRow) } } _renderFreeSpaceRow($tableElement, change) { let $freeSpaceRowElement = this._createEmptyRow("dx-freespace-row"); $freeSpaceRowElement = this._wrapRowIfNeed($tableElement, $freeSpaceRowElement, "refresh" === (null === change || void 0 === change ? void 0 : change.changeType)); this._appendEmptyRow($tableElement, $freeSpaceRowElement) } _checkRowKeys(options) { const that = this; const rows = that._getRows(options); const keyExpr = that._dataController.store() && that._dataController.store().key(); keyExpr && rows.some((row => { if ("data" === row.rowType && void 0 === row.key) { that._dataController.fireError("E1046", keyExpr); return true } return })) } _needUpdateRowHeight(itemsCount) { return itemsCount > 0 && !this._rowHeight } _getRowsHeight($tableElement) { $tableElement = $tableElement || this._tableElement; const $rowElements = $tableElement.children("tbody").children().not(".dx-virtual-row").not(".dx-freespace-row"); return $rowElements.toArray().reduce(((sum, row) => sum + (0, _position.getBoundingRect)(row).height), 0) } _updateRowHeight() { const that = this; const $tableElement = that.getTableElement(); const itemsCount = that._dataController.items().length; if ($tableElement && that._needUpdateRowHeight(itemsCount)) { const rowsHeight = that._getRowsHeight($tableElement); that._rowHeight = rowsHeight / itemsCount } } _findContentElement(isFixedTableRendering) { let $content = this.element(); const scrollable = this.getScrollable(); if ($content) { if (scrollable) { $content = (0, _renderer.default)(scrollable.content()) } return $content.children().first() } } _getRowElements(tableElement) { const $rows = super._getRowElements(tableElement); return $rows && $rows.not(".dx-freespace-row") } _getFreeSpaceRowElements($table) { const tableElements = $table || this.getTableElements(); return tableElements && tableElements.children("tbody").children(".dx-freespace-row") } _getNoDataText() { return this.option("noDataText") } _rowClick(e) { const item = this._dataController.items()[e.rowIndex] || {}; this.executeAction("onRowClick", (0, _extend.extend)({ evaluate(expr) { const getter = (0, _data.compileGetter)(expr); return getter(item.data) } }, e, item)) } _rowDblClick(e) { const item = this._dataController.items()[e.rowIndex] || {}; this.executeAction("onRowDblClick", (0, _extend.extend)({}, e, item)) } _getColumnsCountBeforeGroups(columns) { for (let i = 0; i < columns.length; i++) { if ("groupExpand" === columns[i].type) { return i } } return 0 } _getGroupCellOptions(options) { const columnsCountBeforeGroups = this._getColumnsCountBeforeGroups(options.columns); const columnIndex = (options.row.groupIndex || 0) + columnsCountBeforeGroups; return { columnIndex: columnIndex, colspan: options.columns.length - columnIndex - 1 } } _needWrapRow() { return super._needWrapRow.apply(this, arguments) || !!this.option("dataRowTemplate") } _renderCells($row, options) { if ("group" === options.row.rowType) { this._renderGroupedCells($row, options) } else if (options.row.values) { super._renderCells($row, options) } } _renderGroupedCells($row, options) { const { row: row } = options; let expandColumn; const { columns: columns } = options; const { rowIndex: rowIndex } = row; let isExpanded; const groupCellOptions = this._getGroupCellOptions(options); for (let i = 0; i <= groupCellOptions.columnIndex; i++) { if (i === groupCellOptions.columnIndex && columns[i].allowCollapsing && "infinite" !== options.scrollingMode) { isExpanded = !!row.isExpanded; expandColumn = columns[i] } else { isExpanded = null; expandColumn = { command: "expand", cssClass: columns[i].cssClass, fixed: columns[i].fixed } } if (this._needRenderCell(i, options.columnIndices)) { this._renderCell($row, { value: isExpanded, row: row, rowIndex: rowIndex, column: expandColumn, columnIndex: i, columnIndices: options.columnIndices, change: options.change }) } } const groupColumnAlignment = (0, _position.getDefaultAlignment)(this.option("rtlEnabled")); const groupColumn = (0, _extend.extend)({}, columns[groupCellOptions.columnIndex], { command: null, type: null, cssClass: null, width: null, showWhenGrouped: false, alignment: groupColumnAlignment }); if (groupCellOptions.colspan > 1) { groupColumn.colspan = groupCellOptions.colspan } if (this._needRenderCell(groupCellOptions.columnIndex + 1, options.columnIndices)) { this._renderCell($row, { value: row.values[row.groupIndex], row: row, rowIndex: rowIndex, column: groupColumn, columnIndex: groupCellOptions.columnIndex + 1, columnIndices: options.columnIndices, change: options.change }) } } _renderRows($table, options) { const that = this; const scrollingMode = that.option("scrolling.mode"); super._renderRows($table, (0, _extend.extend)({ scrollingMode: scrollingMode }, options)); that._checkRowKeys(options.change); that._renderFreeSpaceRow($table, options.change); if (!that._hasHeight) { that.updateFreeSpaceRowHeight($table) } } _renderDataRowByTemplate($table, options, dataRowTemplate) { const { row: row } = options; const rowOptions = (0, _extend.extend)({ columns: options.columns }, row); const $tbody = this._createRow(row, "tbody"); $tbody.appendTo($table); this.renderTemplate($tbody, dataRowTemplate, rowOptions, true, options.change); this._rowPrepared($tbody, rowOptions, options.row) } _renderRow($table, options) { const { row: row } = options; const { rowTemplate: rowTemplate } = this.option(); const dataRowTemplate = this.option("dataRowTemplate"); if ("data" === row.rowType && dataRowTemplate) { this._renderDataRowByTemplate($table, options, dataRowTemplate) } else if (("data" === row.rowType || "group" === row.rowType) && !(0, _type.isDefined)(row.groupIndex) && rowTemplate) { this.renderTemplate($table, rowTemplate, (0, _extend.extend)({ columns: options.columns }, row), true) } else { super._renderRow($table, options) } } _renderTable(options) { const that = this; const $table = super._renderTable(options); const resizeCompletedHandler = function() { const scrollableInstance = that.getScrollable(); if (scrollableInstance && that.element().closest((0, _window.getWindow)().document).length) { that.resizeCompleted.remove(resizeCompletedHandler); scrollableInstance._visibilityChanged(true) } }; if (!(0, _type.isDefined)(that.getTableElement())) { that.setTableElement($table); that._renderScrollable(true); that.resizeCompleted.add(resizeCompletedHandler) } else { that._renderScrollable() } return $table } _createTable() { const $table = super._createTable.apply(this, arguments); if (this.option().rowTemplate || this.option().dataRowTemplate) { $table.appendTo(this.component.$element()) } return $table } _renderCore(change) { const $element = this.element(); $element.addClass(this.addWidgetPrefix("rowsview")).toggleClass(this.addWidgetPrefix("nowrap"), !this.option("wordWrapEnabled")); $element.toggleClass("dx-empty", this._dataController.isEmpty()); this.setAria("role", "presentation", $element); const $table = this._renderTable({ change: change }); const deferred = this._updateContent($table, change); super._renderCore(change); this._lastColumnWidths = null; return deferred } _getRows(change) { return change && change.items || this._dataController.items() } _getCellOptions(options) { const that = this; const { column: column } = options; const { row: row } = options; const { data: data } = row; const summaryCells = row && row.summaryCells; const { value: value } = options; const displayValue = _m_utils.default.getDisplayValue(column, value, data, row.rowType); const parameters = super._getCellOptions(options); parameters.value = value; parameters.oldValue = options.oldValue; parameters.displayValue = displayValue; parameters.row = row; parameters.key = row.key; parameters.data = data; parameters.rowType = row.rowType; parameters.values = row.values; parameters.text = !column.command ? _m_utils.default.formatValue(displayValue, column) : ""; parameters.rowIndex = row.rowIndex; parameters.summaryItems = summaryCells && summaryCells[options.columnIndex]; parameters.resized = column.resizedCallbacks; if ((0, _type.isDefined)(column.groupIndex) && !column.command) { const groupingTextsOptions = that.option("grouping.texts"); const scrollingMode = that.option("scrolling.mode"); if ("virtual" !== scrollingMode && "infinite" !== scrollingMode) { parameters.groupContinuesMessage = data && data.isContinuationOnNextPage && groupingTextsOptions && groupingTextsOptions.groupContinuesMessage; parameters.groupContinuedMessage = data && data.isContinuation && groupingTextsOptions && groupingTextsOptions.groupContinuedMessage } } return parameters } _toggleDraggableSourceColumnClass($rows, visibleColumns, columnIndex, value) { const columnsController = this._columnsController; const columns = columnsController.getColumns(); const column = columns && columns[columnIndex]; const columnID = column && column.isBand && column.index; (0, _iterator.each)($rows, ((rowIndex, row) => { if (!(0, _renderer.default)(row).hasClass("dx-group-row")) { for (let i = 0; i < visibleColumns.length; i++) { if ((0, _type.isNumeric)(columnID) && columnsController.isParentBandColumn(visibleColumns[i].index, columnID) || visibleColumns[i].index === columnIndex) { $rows.eq(rowIndex).children().eq(i).toggleClass(this.addWidgetPrefix(_const.CLASSES.draggableColumn), value); if (!(0, _type.isNumeric)(columnID)) { break } } } } })) } _getDevicePixelRatio() { return (0, _window.getWindow)().devicePixelRatio } renderNoDataText() { return _m_utils.default.renderNoDataText.apply(this, arguments) } getCellOptions(rowIndex, columnIdentifier) { const rowOptions = this._dataController.items()[rowIndex]; let cellOptions; let column; if (rowOptions) { if ((0, _type.isString)(columnIdentifier)) { column = this._columnsController.columnOption(columnIdentifier) } else { column = this._columnsController.getVisibleColumns()[columnIdentifier] } if (column) { cellOptions = this._getCellOptions({ value: column.calculateCellValue(rowOptions.data), rowIndex: rowOptions.rowIndex, row: rowOptions, column: column }) } } return cellOptions } getRow(index) { if (index >= 0) { const rows = this._getRowElements(); if (rows.length > index) { return (0, _renderer.default)(rows[index]) } } return } updateFreeSpaceRowHeight($table) { const dataController = this._dataController; const itemCount = dataController.items(true).length; const contentElement = this._findContentElement(); const freeSpaceRowElements = this._getFreeSpaceRowElements($table); if (freeSpaceRowElements && contentElement && dataController.totalCount() >= 0) { let isFreeSpaceRowVisible = false; if (itemCount > 0) { if (!this._hasHeight) { const freeSpaceRowCount = dataController.pageSize() - itemCount; const scrollingMode = this.option("scrolling.mode"); if (freeSpaceRowCount > 0 && dataController.pageCount() > 1 && "virtual" !== scrollingMode && "infinite" !== scrollingMode) { (0, _style.setHeight)(freeSpaceRowElements, freeSpaceRowCount * this._rowHeight); isFreeSpaceRowVisible = true } if (!isFreeSpaceRowVisible && $table) { (0, _style.setHeight)(freeSpaceRowElements, 0) } else { freeSpaceRowElements.toggle(isFreeSpaceRowVisible) } this._updateLastRowBorder(isFreeSpaceRowVisible) } else { freeSpaceRowElements.hide(); (0, _common.deferUpdate)((() => { const scrollbarWidth = this.getScrollbarWidth(true); const elementHeightWithoutScrollbar = (0, _size.getHeight)(this.element()) - scrollbarWidth; const contentHeight = (0, _size.getOuterHeight)(contentElement); const showFreeSpaceRow = elementHeightWithoutScrollbar - contentHeight > 0; const rowsHeight = this._getRowsHeight(contentElement.children().first()); const $tableElement = $table || this.getTableElements(); const borderTopWidth = Math.ceil(parseFloat($tableElement.css("borderTopWidth"))); const heightCorrection = this._getHeightCorrection(); const resultHeight = elementHeightWithoutScrollbar - rowsHeight - borderTopWidth - heightCorrection; if (showFreeSpaceRow) { (0, _common.deferRender)((() => { freeSpaceRowElements.css("height", resultHeight); isFreeSpaceRowVisible = true; freeSpaceRowElements.show() })) }(0, _common.deferRender)((() => this._updateLastRowBorder(isFreeSpaceRowVisible))) })) } } else { freeSpaceRowElements.css("height", 0); freeSpaceRowElements.show(); this._updateLastRowBorder(true) } } } _getHeightCorrection() { const isZoomedWebkit = _browser.default.webkit && this._getDevicePixelRatio() >= 2; const isChromeLatest = _browser.default.chrome && _browser.default.version >= 91; const hasExtraBorderTop = _browser.default.mozilla && _browser.default.version >= 70 && !this.option("showRowLines"); return isZoomedWebkit || hasExtraBorderTop || isChromeLatest ? 1 : 0 } _columnOptionChanged(e) { const { optionNames: optionNames } = e; if (e.changeTypes.grouping) { return } if (optionNames.width || optionNames.visibleWidth) { super._columnOptionChanged(e); this._fireColumnResizedCallbacks() } } getScrollable() { return this._scrollable } _handleDataChanged(change) { const that = this; switch (change.changeType) { case "refresh": case "prepend": case "append": case "update": that.render(null, change); break; default: that._update(change) } } publicMethods() { return ["isScrollbarVisible", "getTopVisibleRowData", "getScrollbarWidth", "getCellElement", "getRowElement", "getScrollable"] } contentWidth() { return (0, _size.getWidth)(this.element()) - this.getScrollbarWidth() } getScrollbarWidth(isHorizontal) { const scrollableContainer = this._scrollableContainer && this._scrollableContainer.get(0); let scrollbarWidth = 0; if (scrollableContainer) { if (!isHorizontal) { scrollbarWidth = scrollableContainer.clientWidth ? scrollableContainer.offsetWidth - scrollableContainer.clientWidth : 0 } else { scrollbarWidth = scrollableContainer.clientHeight ? scrollableContainer.offsetHeight - scrollableContainer.clientHeight : 0; scrollbarWidth += function(that) { const scrollable = that.getScrollable(); return scrollable ? Math.ceil(parseFloat((0, _renderer.default)(scrollable.content()).css("paddingBottom"))) : 0 }(this) } } return scrollbarWidth > 0 ? scrollbarWidth : 0 } _fireColumnResizedCallbacks() { const lastColumnWidths = this._lastColumnWidths || []; const columnWidths = []; const columns = this.getColumns(); for (let i = 0; i < columns.length; i++) { columnWidths[i] = columns[i].visibleWidth; if (columns[i].resizedCallbacks && !(0, _type.isDefined)(columns[i].groupIndex) && lastColumnWidths[i] !== columnWidths[i]) { columns[i].resizedCallbacks.fire(columnWidths[i]) } } this._lastColumnWidths = columnWidths } _updateLastRowBorder(isFreeSpaceRowVisible) { if (this.option("showBorders") && !isFreeSpaceRowVisible) { this.element().addClass("dx-last-row-border") } else { this.element().removeClass("dx-last-row-border") } } _updateScrollable() { const scrollable = _ui.default.getInstance(this.element()); if (scrollable) { scrollable.update(); if (scrollable.option("useNative") || !(null !== scrollable && void 0 !== scrollable && scrollable.isRenovated())) { this._updateHorizontalScrollPosition() } } } _updateHorizontalScrollPosition() { const scrollable = this.getScrollable(); const scrollLeft = scrollable && scrollable.scrollOffset().left; const rtlEnabled = this.option("rtlEnabled"); if (rtlEnabled) { const maxHorizontalScrollOffset = getMaxHorizontalScrollOffset(scrollable); const scrollRight = maxHorizontalScrollOffset - scrollLeft; if (scrollRight !== this._scrollRight) { this._scrollLeft = maxHorizontalScrollOffset - this._scrollRight } } if (this._scrollLeft >= 0 && scrollLeft !== this._scrollLeft) { scrollable.scrollTo({ x: this._scrollLeft }) } } _resizeCore() { const that = this; that._fireColumnResizedCallbacks(); that._updateRowHeight(); (0, _common.deferRender)((() => { that._renderScrollable(); that.renderNoDataText(); that.updateFreeSpaceRowHeight(); (0, _common.deferUpdate)((() => { that._updateScrollable() })) })) } scrollTo(location) { const $element = this.element(); const dxScrollable = $element && _ui.default.getInstance($element); if (dxScrollable) { dxScrollable.scrollTo(location) } } height(height) { const that = this; const $element = this.element(); if (0 === arguments.length) { return $element ? (0, _size.getOuterHeight)($element, true) : 0 } if ((0, _type.isDefined)(height) && $element) { that.hasHeight("auto" !== height); (0, _style.setHeight)($element, height) } } hasHeight(hasHeight) { if (0 === arguments.length) { return !!this._hasHeight } this._hasHeight = hasHeight; return } setLoading(isLoading, messageText) { const that = this; let loadPanel = that._loadPanel; const dataController = that._dataController; const loadPanelOptions = that.option("loadPanel") || {}; const animation = dataController.isLoaded() ? loadPanelOptions.animation : null; const $element = that.element(); if (!(0, _window.hasWindow)()) { return } if (!loadPanel && void 0 !== messageText && dataController.isLocalStore() && "auto" === loadPanelOptions.enabled && $element) { that._renderLoadPanel($element, $element.parent()); loadPanel = that._loadPanel } if (loadPanel) { const visibilityOptions = { message: messageText || loadPanelOptions.text, animation: animation, visible: isLoading }; if (isLoading) { visibilityOptions.position = _m_utils.default.calculateLoadPanelPosition($element) } clearTimeout(that._hideLoadingTimeoutID); if (loadPanel.option("visible") && !isLoading) { that._hideLoadingTimeoutID = setTimeout((() => { loadPanel.option(visibilityOptions) }), 200) } else { loadPanel.option(visibilityOptions) } } } toggleDraggableColumnClass(columnIndex, value) { const $rows = this._getRowElements().not(".dx-group-row") || []; this._toggleDraggableSourceColumnClass($rows, this.getColumns(), columnIndex, value) } _getCellElementsCore(rowIndex) { const $cells = super._getCellElementsCore.apply(this, arguments); if ($cells) { const groupCellIndex = $cells.filter(".dx-group-cell").index(); if (groupCellIndex >= 0 && $cells.length > groupCellIndex + 1) { return $cells.slice(0, groupCellIndex + 1) } } return $cells } _getBoundaryVisibleItemIndex(isTop, isFloor) { const that = this; let itemIndex = 0; let prevOffset = 0; let offset = 0; let viewportBoundary = that._scrollTop; const $contentElement = that._findContentElement(); const contentElementOffsetTop = $contentElement && $contentElement.offset().top; const items = this._dataController.items(); const tableElement = that.getTableElement(); if (items.length && tableElement) { const rowElements = that._getRowElements(tableElement).filter(":visible"); if (!isTop) { const height = (0, _size.getOuterHeight)(this._hasHeight ? this.element() : (0, _window.getWindow)()); viewportBoundary += height } for (itemIndex = 0; itemIndex < items.length; itemIndex++) { prevOffset = offset; const $rowElement = (0, _renderer.default)(rowElements).eq(itemIndex); if ($rowElement.length) { offset = $rowElement.offset(); offset = (isTop ? offset.top : offset.top + (0, _size.getOuterHeight)($rowElement)) - contentElementOffsetTop; if (offset > viewportBoundary) { if (itemIndex) { if (isFloor || 2 * viewportBoundary < Math.round(offset + prevOffset)) { itemIndex-- } } break } } } if (itemIndex && itemIndex === items.length) { itemIndex-- } } return itemIndex } getTopVisibleItemIndex(isFloor) { return this._getBoundaryVisibleItemIndex(true, isFloor) } getBottomVisibleItemIndex(isFloor) { return this._getBoundaryVisibleItemIndex(false, isFloor) } getTopVisibleRowData() { const itemIndex = this.getTopVisibleItemIndex(); const items = this._dataController.items(); if (items[itemIndex]) { return items[itemIndex].data } return } _scrollToElement($element, offset) { const scrollable = this.getScrollable(); scrollable && scrollable.scrollToElement($element, offset) } optionChanged(args) { const that = this; super.optionChanged(args); switch (args.name) { case "wordWrapEnabled": case "showColumnLines": case "showRowLines": case "rowAlternationEnabled": case "rowTemplate": case "dataRowTemplate": case "twoWayBindingEnabled": that._invalidate(true, true); args.handled = true; break; case "scrolling": that._rowHeight = null; that._tableElement = null; args.handled = true; break; case "rtlEnabled": that._rowHeight = null; that._tableElement = null; break; case "loadPanel": that._tableElement = null; that._invalidate(true, "loadPanel.enabled" !== args.fullName); args.handled = true; break; case "noDataText": that.renderNoDataText(); args.handled = true } } setAriaOwns(headerTableId, footerTableId, isFixed) { const $contentElement = this._findContentElement(); const $tableElement = this.getTableElement(); if (null !== $tableElement && void 0 !== $tableElement && $tableElement.length) { this.setAria("owns", `${headerTableId??""} ${$tableElement.attr("id")??""} ${footerTableId??""}`.trim(), $contentElement) } } dispose() { super.dispose(); clearTimeout(this._hideLoadingTimeoutID); this._scrollable && this._scrollable.dispose() } setScrollerSpacing(vScrollbarWidth, hScrollbarWidth) {} getFixedContentElement() { var _this$element; const fixedContentClass = this.addWidgetPrefix("content-fixed"); return null === (_this$element = this.element()) || void 0 === _this$element ? void 0 : _this$element.children(`.${fixedContentClass}`) } _restoreErrorRow(contentTable) {} isElementInside($element) { const $rowsViewElement = $element.closest(`.${this.addWidgetPrefix("rowsview")}`); return $rowsViewElement.is(this.element()) } } exports.RowsView = RowsView; exports.rowsModule = { defaultOptions: () => ({ hoverStateEnabled: false, scrolling: { useNative: "auto" }, loadPanel: { enabled: "auto", text: _message.default.format("Loading"), width: 200, height: 90, showIndicator: true, indicatorSrc: "", showPane: true }, dataRowTemplate: null, columnAutoWidth: false, noDataText: _message.default.format("dxDataGrid-noDataText"), wordWrapEnabled: false, showColumnLines: true, showRowLines: false, rowAlternationEnabled: false, activeStateEnabled: false, twoWayBindingEnabled: true }), views: { rowsView: RowsView } } }, 20574: /*!************************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/grid_core/views/utils/update_views_borders.js ***! \************************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.updateViewsBorders = void 0; var _type = __webpack_require__( /*! ../../../../../core/utils/type */ 11528); const _excluded = ["rowsView"]; const CLASSES_borderedTop = "dx-bordered-top-view", CLASSES_borderedBottom = "dx-bordered-bottom-view"; const getViewElementWithClass = (viewsWithBorder, className) => { const borderedView = Object.values(viewsWithBorder).find((view => { var _view$element; return null === view || void 0 === view || null === (_view$element = view.element()) || void 0 === _view$element ? void 0 : _view$element.hasClass(className) })); return (null === borderedView || void 0 === borderedView ? void 0 : borderedView.element()) ?? null }; exports.updateViewsBorders = (viewName, viewsWithBorder) => { if (!((viewName, viewsWithBorder) => { var _rowsView$element; if (!Object.keys(viewsWithBorder).includes(viewName)) { return false } const { rowsView: rowsView } = viewsWithBorder, otherViews = function(r, e) { if (null == r) { return {} } var t = {}; for (var n in r) { if ({}.hasOwnProperty.call(r, n)) { if (e.includes(n)) { continue } t[n] = r[n] } } return t }(viewsWithBorder, _excluded); if (!(0, _type.isDefined)(null === rowsView || void 0 === rowsView || null === (_rowsView$element = rowsView.element) || void 0 === _rowsView$element ? void 0 : _rowsView$element.call(rowsView))) { return false } return Object.values(otherViews).filter((view => { var _view$isVisible; return null === view || void 0 === view || null === (_view$isVisible = view.isVisible) || void 0 === _view$isVisible ? void 0 : _view$isVisible.call(view) })).every((view => (0, _type.isDefined)(null === view || void 0 === view ? void 0 : view.element()))) })(viewName, viewsWithBorder)) { return } const $oldFirst = getViewElementWithClass(viewsWithBorder, CLASSES_borderedTop); const $oldLast = getViewElementWithClass(viewsWithBorder, CLASSES_borderedBottom); const $newFirst = (_ref => { let { columnHeadersView: columnHeadersView, rowsView: rowsView } = _ref; if (null !== columnHeadersView && void 0 !== columnHeadersView && columnHeadersView.isVisible()) { return columnHeadersView.element() } return rowsView.element() })(viewsWithBorder); const $newLast = (_ref2 => { let { filterPanelView: filterPanelView, footerView: footerView, rowsView: rowsView } = _ref2; if (null !== filterPanelView && void 0 !== filterPanelView && filterPanelView.isVisible()) { return filterPanelView.element() } if (null !== footerView && void 0 !== footerView && footerView.isVisible()) { return footerView.element() } return rowsView.element() })(viewsWithBorder); if ($oldFirst && !$oldFirst.is($newFirst)) { $oldFirst.removeClass(CLASSES_borderedTop) } if ($oldLast && !$oldLast.is($newLast)) { $oldLast.removeClass(CLASSES_borderedBottom) } if (!$newFirst.hasClass(CLASSES_borderedTop)) { $newFirst.addClass(CLASSES_borderedTop) } if (!$newLast.hasClass(CLASSES_borderedBottom)) { $newLast.addClass(CLASSES_borderedBottom) } } }, 74280: /*!*************************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/grid_core/virtual_columns/m_virtual_columns.js ***! \*************************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.virtualColumnsModule = void 0; var _browser = _interopRequireDefault(__webpack_require__( /*! ../../../../core/utils/browser */ 48314)); var _size = __webpack_require__( /*! ../../../../core/utils/size */ 57653); var _type = __webpack_require__( /*! ../../../../core/utils/type */ 11528); var _window = __webpack_require__( /*! ../../../../core/utils/window */ 3104); var _m_utils = _interopRequireDefault(__webpack_require__( /*! ../m_utils */ 53226)); var _m_virtual_columns_core = __webpack_require__( /*! ./m_virtual_columns_core */ 32760); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } const baseView = Base => class extends Base { _needToSetCellWidths() { let result = super._needToSetCellWidths(); if (!result && this._columnsController.isVirtualMode()) { const columns = this._columnsController.getColumns(); result = columns.some((column => "auto" === column.width)) } return result } }; const getWidths = function(columns) { return columns.map((column => column.visibleWidth || parseFloat(column.width) || 50)) }; exports.virtualColumnsModule = { defaultOptions: () => ({ scrolling: { columnRenderingMode: "standard", columnPageSize: 5, columnRenderingThreshold: 300 } }), extenders: { controllers: { columns: Base => class extends Base { init() { super.init.apply(this, arguments); this._resizingController = this.getController("resizing"); this._beginPageIndex = null; this._endPageIndex = null; this._position ?? (this._position = 0); this._virtualVisibleColumns = {} } dispose() { clearTimeout(this._changedTimeout); super.dispose.apply(this, arguments) } resetColumnsCache() { super.resetColumnsCache(); this._virtualVisibleColumns = {} } getBeginPageIndex(position) { const visibleColumns = this.getVisibleColumns(void 0, true); const widths = getWidths(visibleColumns); let currentPosition = 0; for (let index = 0; index < widths.length; index++) { if (currentPosition >= position) { return Math.floor(index / this.getColumnPageSize()) } currentPosition += widths[index] } return 0 } getTotalWidth() { const width = this.option("width"); if ("number" === typeof width) { return width } return this._resizingController._lastWidth || (0, _size.getOuterWidth)(this.component.$element()) } getEndPageIndex(position) { const visibleColumns = this.getVisibleColumns(void 0, true); const widths = getWidths(visibleColumns); let currentPosition = 0; position += this.getTotalWidth(); for (let index = 0; index < widths.length; index++) { if (currentPosition >= position) { return Math.ceil(index / this.getColumnPageSize()) } currentPosition += widths[index] } return Math.ceil(widths.length / this.getColumnPageSize()) } getColumnPageSize() { return this.option("scrolling.columnPageSize") } _fireColumnsChanged(event) { const date = new Date; this.columnsChanged.fire({ optionNames: { all: true, length: 1 }, changeTypes: { columns: true, virtualColumnsScrolling: true, length: 2, event: event } }); this._renderTime = new Date - date } getScrollingTimeout() { const renderingThreshold = this.option("scrolling.columnRenderingThreshold"); const renderAsync = this.option("scrolling.renderAsync"); let scrollingTimeout = 0; if (!(0, _type.isDefined)(renderAsync) && this._renderTime > renderingThreshold || renderAsync) { scrollingTimeout = this.option("scrolling.timeout") } return scrollingTimeout } setScrollPosition(position, event) { const scrollingTimeout = this.getScrollingTimeout(); if (scrollingTimeout > 0) { clearTimeout(this._changedTimeout); this._changedTimeout = setTimeout((() => { this._setScrollPositionCore(position, event) }), scrollingTimeout) } else { this._setScrollPositionCore(position, event) } } resize() { this._setScrollPositionCore(this._position) } _setScrollPositionCore(position, event) { const needColumnsChanged = this.isNeedToRenderVirtualColumns(position); if (needColumnsChanged) { this._position = position; this._beginPageIndex = this.getBeginPageIndex(position); this._endPageIndex = this.getEndPageIndex(position); this._fireColumnsChanged(event) } } isNeedToRenderVirtualColumns(scrollPosition) { if (this.isVirtualMode()) { if (scrollPosition < this._position) { return this._beginPageIndex > this.getBeginPageIndex(scrollPosition) } return this._endPageIndex < this.getEndPageIndex(scrollPosition) } return false } getFixedColumns(rowIndex, isBase) { const fixedColumns = super.getFixedColumns(rowIndex); if (this.isVirtualMode() && !isBase && fixedColumns.length) { const transparentColumnIndex = fixedColumns.map((c => c.command)).indexOf("transparent"); fixedColumns[transparentColumnIndex].colspan = this.getVisibleColumns().length - super.getFixedColumns().length + 1; return fixedColumns } return fixedColumns } _compileVisibleColumns(rowIndex, isBase) { var _this$_columns; if (isBase || !this.isVirtualMode() || !this._shouldReturnVisibleColumns()) { return super._compileVisibleColumns(rowIndex) } if (null !== (_this$_columns = this._columns) && void 0 !== _this$_columns && _this$_columns.length && !(0, _type.isDefined)(this._beginPageIndex) && !(0, _type.isDefined)(this._endPageIndex)) { this._beginPageIndex = this.getBeginPageIndex(this._position); this._endPageIndex = this.getEndPageIndex(this._position) } const beginPageIndex = this._beginPageIndex; const endPageIndex = this._endPageIndex; const visibleColumnsHash = `${rowIndex}-${beginPageIndex}-${endPageIndex}`; if (this._virtualVisibleColumns[visibleColumnsHash]) { return this._virtualVisibleColumns[visibleColumnsHash] } let visibleColumns = super._compileVisibleColumns(); const rowCount = this.getRowCount(); const pageSize = this.getColumnPageSize(); let startIndex = beginPageIndex * pageSize; let endIndex = endPageIndex * pageSize; const fixedColumns = this.getFixedColumns(void 0, true); const transparentColumnIndex = fixedColumns.map((c => c.command)).indexOf("transparent"); const beginFixedColumnCount = fixedColumns.length ? transparentColumnIndex : 0; let beginFixedColumns = visibleColumns.slice(0, beginFixedColumnCount); const beginColumns = visibleColumns.slice(beginFixedColumnCount, startIndex); const beginWidth = getWidths(beginColumns).reduce(((a, b) => a + b), 0); if (!beginWidth) { startIndex = 0 } const endFixedColumnCount = fixedColumns.length ? fixedColumns.length - transparentColumnIndex - 1 : 0; let endFixedColumns = visibleColumns.slice(visibleColumns.length - endFixedColumnCount); const endColumns = visibleColumns.slice(endIndex, visibleColumns.length - endFixedColumnCount); const endWidth = getWidths(endColumns).reduce(((a, b) => a + b), 0); if (!endWidth) { endIndex = visibleColumns.length } if (rowCount > 1 && "number" === typeof rowIndex) { const columnsInfo = []; for (let i = 0; i <= rowCount; i++) { columnsInfo.push(super._compileVisibleColumns(i)) } beginFixedColumns = (0, _m_virtual_columns_core.createColumnsInfo)(columnsInfo, 0, beginFixedColumns.length)[rowIndex] || []; endFixedColumns = (0, _m_virtual_columns_core.createColumnsInfo)(columnsInfo, visibleColumns.length - endFixedColumns.length, visibleColumns.length)[rowIndex] || []; visibleColumns = (0, _m_virtual_columns_core.createColumnsInfo)(columnsInfo, startIndex, endIndex)[rowIndex] || [] } else { visibleColumns = visibleColumns.slice(startIndex, endIndex) } if (beginWidth) { visibleColumns.unshift({ command: "virtual", type: "virtual", width: beginWidth }); visibleColumns = beginFixedColumns.concat(visibleColumns) } if (endWidth) { visibleColumns.push({ command: "virtual", type: "virtual", width: endWidth }); visibleColumns = visibleColumns.concat(endFixedColumns) } this._virtualVisibleColumns[visibleColumnsHash] = visibleColumns; return visibleColumns } getColumnIndexOffset() { let offset = 0; if (this._beginPageIndex > 0) { const fixedColumns = this.getFixedColumns(); const transparentColumnIndex = fixedColumns.map((c => c.command)).indexOf("transparent"); const leftFixedColumnCount = transparentColumnIndex >= 0 ? transparentColumnIndex : 0; offset = this._beginPageIndex * this.getColumnPageSize() - leftFixedColumnCount - 1 } return offset > 0 ? offset : 0 } isVirtualMode() { return (0, _window.hasWindow)() && "virtual" === this.option("scrolling.columnRenderingMode") } } }, views: { columnHeadersView: Base => class extends(baseView(Base)) { _renderCore() { const deferred = super._renderCore.apply(this, arguments); if (this._columnsController.isVirtualMode()) { this._updateScrollLeftPosition() } return deferred } }, rowsView: Base => class extends(baseView(Base)) { _resizeCore() { super._resizeCore.apply(this, arguments); this._columnsController.resize() } _handleScroll(e) { const scrollable = this.getScrollable(); let { left: left } = e.scrollOffset; this._scrollLeft = left; super._handleScroll.apply(this, arguments); if (this.option("rtlEnabled") && scrollable) { left = (0, _size.getWidth)(scrollable.$content()) - (0, _size.getWidth)(scrollable.$element()) - left } this._columnsController.setScrollPosition(left, e.event) } _renderCore(e) { if (null !== e && void 0 !== e && e.virtualColumnsScrolling) { var _this$_columnsControl, _this$_scrollable; const $contentElement = this._findContentElement(); const fixedColumns = null === (_this$_columnsControl = this._columnsController) || void 0 === _this$_columnsControl ? void 0 : _this$_columnsControl.getFixedColumns(); const useNativeScrolling = null === (_this$_scrollable = this._scrollable) || void 0 === _this$_scrollable ? void 0 : _this$_scrollable.option("useNative"); const legacyMode = this.option("columnFixing.legacyMode"); if (null !== fixedColumns && void 0 !== fixedColumns && fixedColumns.length) { if (legacyMode && !useNativeScrolling) { $contentElement.css({ minHeight: _m_utils.default.getContentHeightLimit(_browser.default) }) } else { $contentElement.css({ minHeight: (0, _size.getHeight)($contentElement) }) } const resizeCompletedHandler = () => { this.resizeCompleted.remove(resizeCompletedHandler); $contentElement.css({ minHeight: "" }) }; this.resizeCompleted.add(resizeCompletedHandler) } } return super._renderCore.apply(this, arguments) } } } } } }, 32760: /*!******************************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/grid_core/virtual_columns/m_virtual_columns_core.js ***! \******************************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.createColumnsInfo = function(info, startIndex, endIndex) { const newInfo = []; foreachColumnInfo(info, ((columnInfo, visibleIndex, rowIndex) => { let cell = columnInfo; let colspan; const cellColspan = cell.colspan || 1; const isVisible = visibleIndex + cellColspan - 1 >= startIndex && visibleIndex < endIndex; newInfo[rowIndex] = newInfo[rowIndex] || []; if (isVisible) { if (visibleIndex < startIndex) { colspan = cellColspan - (startIndex - visibleIndex); visibleIndex = startIndex } else { colspan = cellColspan } if (visibleIndex + colspan > endIndex) { colspan = endIndex - visibleIndex } if (colspan !== cellColspan) { cell = (0, _extend.extend)({}, cell, { colspan: colspan }) } newInfo[rowIndex].push(cell) } else if (visibleIndex > endIndex) { return false } return })); for (let i = 0; i < newInfo.length; i++) { newInfo[i] = newInfo[i] || [] } return newInfo }; exports.foreachColumnInfo = foreachColumnInfo; var _extend = __webpack_require__( /*! ../../../../core/utils/extend */ 52576); function foreachColumnInfo(info, callback, rowIndex, offsets, columnCount, lastProcessedIndexes) { rowIndex = rowIndex || 0; offsets = offsets || []; lastProcessedIndexes = lastProcessedIndexes || []; offsets[rowIndex] = offsets[rowIndex] || 0; const row = info[rowIndex]; const startIndex = lastProcessedIndexes[rowIndex] + 1 || 0; let processedColumnCount = 0; let colIndex; if (!row) { return } for (colIndex = startIndex; colIndex < row.length; colIndex++) { const cell = row[colIndex]; const visibleIndex = colIndex + offsets[rowIndex]; const colspan = cell.colspan || 1; foreachColumnInfo(info, callback, rowIndex + (cell.rowspan || 1), offsets, colspan, lastProcessedIndexes); offsets[rowIndex] += colspan - 1; processedColumnCount += colspan; if (cell.rowspan) { for (let i = rowIndex + 1; i < rowIndex + cell.rowspan; i++) { offsets[i] = offsets[i] || 0; offsets[i] += cell.colspan || 1 } } if (false === callback(cell, visibleIndex, rowIndex, colIndex)) { break } if (void 0 !== columnCount && processedColumnCount >= columnCount) { break } } lastProcessedIndexes[rowIndex] = colIndex } }, 54988: /*!*********************************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/grid_core/virtual_data_loader/m_virtual_data_loader.js ***! \*********************************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.VirtualDataLoader = void 0; var _deferred = __webpack_require__( /*! ../../../../core/utils/deferred */ 87739); var _type = __webpack_require__( /*! ../../../../core/utils/type */ 11528); const needTwoPagesLoading = that => that.option("scrolling.loadTwoPagesOnStart") || that._controller.isVirtual() || that._controller.getViewportItemIndex() > 0; const getBeginPageIndex = that => that._cache.length ? that._cache[0].pageIndex : -1; const getEndPageIndex = that => that._cache.length ? that._cache[that._cache.length - 1].pageIndex : -1; const fireChanged = (that, changed, args) => { that._isChangedFiring = true; changed(args); that._isChangedFiring = false }; const processDelayChanged = (that, changed, args) => { if (that._isDelayChanged) { that._isDelayChanged = false; fireChanged(that, changed, args); return true } }; const getPreloadPageCount = (that, previous) => { const preloadEnabled = that.option("scrolling.preloadEnabled"); let pageCount = (that => { const pageSize = that._dataOptions.pageSize(); const preventPreload = that.option("scrolling.preventPreload"); if (preventPreload) { return 0 } let realViewportSize = that._controller.viewportSize(); if (that._controller.isVirtualMode() && that.option("scrolling.removeInvisiblePages")) { realViewportSize = 0; const viewportSize = that._controller.viewportSize() * that._controller.viewportItemSize(); let offset = that._controller.getContentOffset(); const position = that._controller.getViewportPosition(); const virtualItemsCount = that._controller.virtualItemsCount(); const totalItemsCount = that._dataOptions.totalItemsCount(); for (let itemIndex = virtualItemsCount.begin; itemIndex < totalItemsCount; itemIndex++) { if (offset >= position + viewportSize) { break } const itemSize = that._controller.getItemSizes()[itemIndex] || that._controller.viewportItemSize(); offset += itemSize; if (offset >= position) { realViewportSize++ } } } return pageSize && realViewportSize > 0 ? Math.ceil(realViewportSize / pageSize) : 1 })(that); const isAppendMode = that._controller.isAppendMode(); if (pageCount) { if (previous) { pageCount = preloadEnabled ? 1 : 0 } else { if (preloadEnabled) { pageCount++ } if (isAppendMode || !needTwoPagesLoading(that)) { pageCount-- } } } return pageCount }; const processChanged = (that, changed, changeType, isDelayChanged, removeCacheItem) => { const dataOptions = that._dataOptions; const items = dataOptions.items().slice(); let change = (0, _type.isObject)(changeType) ? changeType : void 0; const isPrepend = "prepend" === changeType; const viewportItems = dataOptions.viewportItems(); if (changeType && (0, _type.isString)(changeType) && !that._isDelayChanged) { change = { changeType: changeType, items: items }; if (removeCacheItem) { change.removeCount = removeCacheItem.itemsCount; if (change.removeCount && dataOptions.correctCount) { change.removeCount = dataOptions.correctCount(viewportItems, change.removeCount, isPrepend) } } } let removeItemCount = removeCacheItem ? removeCacheItem.itemsLength : 0; if (removeItemCount && dataOptions.correctCount) { removeItemCount = dataOptions.correctCount(viewportItems, removeItemCount, isPrepend) } if ("append" === changeType) { viewportItems.push.apply(viewportItems, items); if (removeCacheItem) { viewportItems.splice(0, removeItemCount) } } else if (isPrepend) { viewportItems.unshift.apply(viewportItems, items); if (removeCacheItem) { viewportItems.splice(-removeItemCount) } } else { that._dataOptions.viewportItems(items) } dataOptions.updateLoading(); that._lastPageIndex = that.pageIndex(); that._isDelayChanged = isDelayChanged; if (!isDelayChanged) { fireChanged(that, changed, change) } }; exports.VirtualDataLoader = class { constructor(controller, dataOptions) { this._dataOptions = dataOptions; this._controller = controller; this._pageIndex = this._lastPageIndex = dataOptions.pageIndex(); this._cache = []; this._loadingPageIndexes = {} } option() { return this._controller.option.apply(this._controller, arguments) } viewportItemIndexChanged(itemIndex) { const pageSize = this._dataOptions.pageSize(); const pageCount = this._dataOptions.pageCount(); const virtualMode = this._controller.isVirtualMode(); const appendMode = this._controller.isAppendMode(); const totalItemsCount = this._dataOptions.totalItemsCount(); let newPageIndex; if (pageSize && (virtualMode || appendMode) && totalItemsCount >= 0) { const viewportSize = this._controller.viewportSize(); if (viewportSize && itemIndex + viewportSize >= totalItemsCount && !this._controller.isVirtual()) { if (this._dataOptions.hasKnownLastPage()) { newPageIndex = pageCount - 1; const lastPageSize = totalItemsCount % pageSize; if (newPageIndex > 0 && lastPageSize > 0 && lastPageSize < viewportSize) { newPageIndex-- } } else { newPageIndex = pageCount } } else { newPageIndex = Math.floor(itemIndex / pageSize); const maxPageIndex = pageCount - 1; newPageIndex = Math.max(newPageIndex, 0); newPageIndex = Math.min(newPageIndex, maxPageIndex) } this.pageIndex(newPageIndex); return this.load() } } pageIndex(pageIndex) { const isVirtualMode = this._controller.isVirtualMode(); const isAppendMode = this._controller.isAppendMode(); if (false !== this.option("scrolling.legacyMode") && (isVirtualMode || isAppendMode)) { if (void 0 !== pageIndex) { this._pageIndex = pageIndex } return this._pageIndex } return this._dataOptions.pageIndex(pageIndex) } beginPageIndex(defaultPageIndex) { let index = getBeginPageIndex(this); if (index < 0) { index = void 0 !== defaultPageIndex ? defaultPageIndex : this.pageIndex() } return index } endPageIndex() { const endPageIndex = getEndPageIndex(this); return endPageIndex > 0 ? endPageIndex : this._lastPageIndex } pageSize() { return this._dataOptions.pageSize() } load() { const dataOptions = this._dataOptions; let result; const isVirtualMode = this._controller.isVirtualMode(); const isAppendMode = this._controller.isAppendMode(); if (false !== this.option("scrolling.legacyMode") && (isVirtualMode || isAppendMode)) { const pageIndexForLoad = (that => { let result = -1; const beginPageIndex = getBeginPageIndex(that); const dataOptions = that._dataOptions; if (beginPageIndex < 0) { result = that._pageIndex } else if (!that._cache[that._pageIndex - beginPageIndex]) { result = that._pageIndex } else if (beginPageIndex >= 0 && that._controller.viewportSize() >= 0) { if (beginPageIndex > 0) { const needToLoadPageBeforeLast = getEndPageIndex(that) + 1 === dataOptions.pageCount() && that._cache.length < getPreloadPageCount(that) + 1; const needToLoadPrevPage = needToLoadPageBeforeLast || that._pageIndex === beginPageIndex && getPreloadPageCount(that, true); if (needToLoadPrevPage) { result = beginPageIndex - 1 } } if (result < 0) { const needToLoadNextPage = beginPageIndex + that._cache.length <= that._pageIndex + getPreloadPageCount(that); if (needToLoadNextPage) { result = beginPageIndex + that._cache.length } } } if (that._loadingPageIndexes[result]) { result = -1 } return result })(this); if (pageIndexForLoad >= 0) { const loadResult = ((that, pageIndex) => { const dataOptions = that._dataOptions; if (pageIndex === that.pageIndex() || !dataOptions.isLoading() && pageIndex < dataOptions.pageCount() || !dataOptions.hasKnownLastPage() && pageIndex === dataOptions.pageCount()) { dataOptions.pageIndex(pageIndex); that._loadingPageIndexes[pageIndex] = true; return (0, _deferred.when)(dataOptions.load()).always((() => { that._loadingPageIndexes[pageIndex] = false })) } })(this, pageIndexForLoad); if (loadResult) { result = new _deferred.Deferred; loadResult.done((() => { const delayDeferred = this._delayDeferred; if (delayDeferred) { delayDeferred.done(result.resolve).fail(result.reject) } else { result.resolve() } })).fail(result.reject); dataOptions.updateLoading() } } } else { result = dataOptions.load() } if (!result && this._lastPageIndex !== this.pageIndex()) { this._dataOptions.onChanged({ changeType: "pageIndex" }) } return result || (new _deferred.Deferred).resolve() } loadIfNeed() { const isVirtualMode = this._controller.isVirtualMode(); const isAppendMode = this._controller.isAppendMode(); if ((isVirtualMode || isAppendMode) && !this._dataOptions.isLoading() && (!this._isChangedFiring || this._controller.isVirtual())) { const position = this._controller.getViewportPosition(); if (position > 0) { this._controller._setViewportPositionCore(position) } else { this.load() } } } handleDataChanged(callBase, e) { const dataOptions = this._dataOptions; let lastCacheLength = this._cache.length; let changeType; let removeInvisiblePages; const isVirtualMode = this._controller.isVirtualMode(); const isAppendMode = this._controller.isAppendMode(); if (e && e.changes) { fireChanged(this, callBase, e) } else if (false !== this.option("scrolling.legacyMode") && (isVirtualMode || isAppendMode)) { const beginPageIndex = getBeginPageIndex(this); if (beginPageIndex >= 0) { if (isVirtualMode && beginPageIndex + this._cache.length !== dataOptions.pageIndex() && beginPageIndex - 1 !== dataOptions.pageIndex()) { lastCacheLength = 0; this._cache = [] } if (isAppendMode) { if (0 === dataOptions.pageIndex()) { this._cache = [] } else if (dataOptions.pageIndex() < getEndPageIndex(this)) { fireChanged(this, callBase, { changeType: "append", items: [] }); return } } } const cacheItem = { pageIndex: dataOptions.pageIndex(), itemsLength: dataOptions.items(true).length, itemsCount: this.itemsCount(true) }; if (this.option("scrolling.removeInvisiblePages") && isVirtualMode) { removeInvisiblePages = this._cache.length > Math.max(getPreloadPageCount(this) + (this.option("scrolling.preloadEnabled") ? 1 : 0), 2) } else { processDelayChanged(this, callBase, { isDelayed: true }) } let removeCacheItem; if (beginPageIndex === dataOptions.pageIndex() + 1) { if (removeInvisiblePages) { removeCacheItem = this._cache.pop() } changeType = "prepend"; this._cache.unshift(cacheItem) } else { if (removeInvisiblePages) { removeCacheItem = this._cache.shift() } changeType = "append"; this._cache.push(cacheItem) } const isDelayChanged = isVirtualMode && 0 === lastCacheLength && needTwoPagesLoading(this); processChanged(this, callBase, this._cache.length > 1 ? changeType : void 0, isDelayChanged, removeCacheItem); this._delayDeferred = this.load().done((() => { if (processDelayChanged(this, callBase)) { this.load() } })) } else { processChanged(this, callBase, e) } } getDelayDeferred() { return this._delayDeferred } itemsCount(isBase) { let count = 0; const isVirtualMode = this._controller.isVirtualMode(); if (!isBase && isVirtualMode) { this._cache.forEach((cacheItem => { count += cacheItem.itemsCount })) } else { count = this._dataOptions.itemsCount() } return count } virtualItemsCount() { let pageIndex = getBeginPageIndex(this); if (pageIndex < 0) { pageIndex = this._dataOptions.pageIndex() } const beginItemsCount = pageIndex * this._dataOptions.pageSize(); const itemsCount = this._cache.length * this._dataOptions.pageSize(); const endItemsCount = Math.max(0, this._dataOptions.totalItemsCount() - itemsCount - beginItemsCount); return { begin: beginItemsCount, end: endItemsCount } } reset() { this._loadingPageIndexes = {}; this._cache = [] } } }, 21640: /*!*****************************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/grid_core/virtual_scrolling/m_virtual_scrolling.js ***! \*****************************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.virtualScrollingModule = exports.rowsView = exports.resizing = exports.dataSourceAdapterExtender = exports.data = void 0; var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../../../core/renderer */ 64553)); var _browser = _interopRequireDefault(__webpack_require__( /*! ../../../../core/utils/browser */ 48314)); var _deferred = __webpack_require__( /*! ../../../../core/utils/deferred */ 87739); var _dom = __webpack_require__( /*! ../../../../core/utils/dom */ 86858); var _iterator = __webpack_require__( /*! ../../../../core/utils/iterator */ 21274); var _position = __webpack_require__( /*! ../../../../core/utils/position */ 41639); var _size = __webpack_require__( /*! ../../../../core/utils/size */ 57653); var _type = __webpack_require__( /*! ../../../../core/utils/type */ 11528); var _window = __webpack_require__( /*! ../../../../core/utils/window */ 3104); var _load_indicator = _interopRequireDefault(__webpack_require__( /*! ../../../../ui/load_indicator */ 11979)); var _ui = _interopRequireDefault(__webpack_require__( /*! ../../../../ui/widget/ui.errors */ 35185)); var _m_utils = _interopRequireDefault(__webpack_require__( /*! ../m_utils */ 53226)); var _m_virtual_scrolling_core = __webpack_require__( /*! ./m_virtual_scrolling_core */ 89272); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } const LEGACY_SCROLLING_MODE = "scrolling.legacyMode"; const PAGING_METHOD_NAMES = ["beginPageIndex", "endPageIndex", "pageIndex"]; const isVirtualMode = function(that) { return "virtual" === that.option("scrolling.mode") }; const isAppendMode = function(that) { return "infinite" === that.option("scrolling.mode") }; const isVirtualPaging = function(that) { return isVirtualMode(that) || isAppendMode(that) }; const correctCount = function(items, count, fromEnd, isItemCountableFunc) { for (let i = 0; i < count + 1; i++) { const item = items[fromEnd ? items.length - 1 - i : i]; if (item && !isItemCountableFunc(item, i === count, fromEnd)) { count++ } } return count }; const isItemCountableByDataSource = function(item, dataSource) { return "data" === item.rowType && !item.isNewRow || "group" === item.rowType && dataSource.isGroupItemCountable(item.data) }; const updateLoading = function(that) { const beginPageIndex = that._virtualScrollController.beginPageIndex(-1); if (isVirtualMode(that)) { if (beginPageIndex < 0 || that.viewportSize() >= 0 && that.getViewportItemIndex() >= 0 && (beginPageIndex * that.pageSize() > that.getViewportItemIndex() || beginPageIndex * that.pageSize() + that.itemsCount() < that.getViewportItemIndex() + that.viewportSize()) && that._dataSource.isLoading()) { if (!that._isLoading) { that._isLoading = true; that.loadingChanged.fire(true) } } else if (that._isLoading) { that._isLoading = false; that.loadingChanged.fire(false) } } }; const proxyDataSourceAdapterMethod = function(that, methodName, args) { if (false === that.option(LEGACY_SCROLLING_MODE) && PAGING_METHOD_NAMES.includes(methodName)) { const dataSource = that._dataSource; return dataSource.pageIndex.apply(dataSource, args) } const virtualScrollController = that._virtualScrollController; return virtualScrollController[methodName].apply(virtualScrollController, args) }; const removeEmptyRows = function($emptyRows, className) { const tBodies = $emptyRows.toArray().map((row => (0, _renderer.default)(row).parent(`.${className}`).get(0))).filter((row => row)); if (tBodies.length) { $emptyRows = (0, _renderer.default)(tBodies) } const rowCount = "dx-freespace-row" === className ? $emptyRows.length - 1 : $emptyRows.length; for (let i = 0; i < rowCount; i++) { $emptyRows.eq(i).remove() } }; exports.dataSourceAdapterExtender = Base => class extends Base { init() { super.init.apply(this, arguments); this._items = []; this._totalCount = -1; this._isLoaded = true; this._loadPageCount = 1; this._virtualScrollController = new _m_virtual_scrolling_core.VirtualScrollController(this.component, this._getVirtualScrollDataOptions()) } dispose() { this._virtualScrollController.dispose(); super.dispose.apply(this, arguments) } _getVirtualScrollDataOptions() { const that = this; return { pageSize: () => that.pageSize(), totalItemsCount: () => that.totalItemsCount(), hasKnownLastPage: () => that.hasKnownLastPage(), pageIndex: index => that._dataSource.pageIndex(index), isLoading: () => that._dataSource.isLoading() && !that.isCustomLoading(), pageCount: () => that.pageCount(), load: () => that._dataSource.load(), updateLoading() { updateLoading(that) }, itemsCount: () => that.itemsCount(true), items: () => that._dataSource.items(), viewportItems(items) { if (items) { that._items = items } return that._items }, onChanged(e) { that.changed.fire(e) }, changingDuration() { if (that.isLoading()) { return 300 } return that._renderTime || 0 } } } _handleLoadingChanged(isLoading) { if (false === this.option(LEGACY_SCROLLING_MODE)) { super._handleLoadingChanged.apply(this, arguments); return } if (!isVirtualMode(this) || this._isLoadingAll) { this._isLoading = isLoading; super._handleLoadingChanged.apply(this, arguments) } if (isLoading) { this._startLoadTime = new Date } else { this._startLoadTime = void 0 } } _handleLoadError() { if (false !== this.option(LEGACY_SCROLLING_MODE)) { this._isLoading = false; this.loadingChanged.fire(false) } super._handleLoadError.apply(this, arguments) } _handleDataChanged(e) { if (false === this.option(LEGACY_SCROLLING_MODE)) { this._items = this._dataSource.items().slice(); this._totalCount = this._dataSourceTotalCount(true); super._handleDataChanged.apply(this, arguments); return } const callBase = super._handleDataChanged.bind(this); this._virtualScrollController.handleDataChanged(callBase, e) } _customizeRemoteOperations(options, operationTypes) { const newMode = false === this.option(LEGACY_SCROLLING_MODE); let renderAsync = this.option("scrolling.renderAsync"); if (!(0, _type.isDefined)(renderAsync)) { renderAsync = this._renderTime >= this.option("scrolling.renderingThreshold") } if ((isVirtualMode(this) || isAppendMode(this) && newMode) && !operationTypes.reload && (operationTypes.skip || newMode) && !renderAsync) { options.delay = void 0 } super._customizeRemoteOperations.apply(this, arguments) } items() { return this._items } _dataSourceTotalCount(isBase) { return false === this.option(LEGACY_SCROLLING_MODE) && isVirtualMode(this) && !isBase ? this._totalCount : super._dataSourceTotalCount() } itemsCount(isBase) { if (isBase || false === this.option(LEGACY_SCROLLING_MODE)) { return super.itemsCount() } return this._virtualScrollController.itemsCount() } load(loadOptions) { if (false === this.option(LEGACY_SCROLLING_MODE) || loadOptions) { return super.load(loadOptions) } return this._virtualScrollController.load() } isLoading() { return false === this.option(LEGACY_SCROLLING_MODE) ? this._dataSource.isLoading() : this._isLoading } isLoaded() { return this._dataSource.isLoaded() && this._isLoaded } resetPagesCache(isLiveUpdate) { if (!isLiveUpdate) { this._virtualScrollController.reset(true) } super.resetPagesCache.apply(this, arguments) } _changeRowExpandCore() { const result = super._changeRowExpandCore.apply(this, arguments); if (false === this.option(LEGACY_SCROLLING_MODE)) { return result } this.resetPagesCache(); updateLoading(this); return result } reload() { this._dataSource.pageIndex(this.pageIndex()); const virtualScrollController = this._virtualScrollController; if (false !== this.option(LEGACY_SCROLLING_MODE) && virtualScrollController) { const d = new _deferred.Deferred; super.reload.apply(this, arguments).done((r => { const delayDeferred = virtualScrollController.getDelayDeferred(); if (delayDeferred) { delayDeferred.done(d.resolve).fail(d.reject) } else { d.resolve(r) } })).fail(d.reject); return d } return super.reload.apply(this, arguments) } refresh(options, operationTypes) { if (false !== this.option(LEGACY_SCROLLING_MODE)) { const { storeLoadOptions: storeLoadOptions } = options; const dataSource = this._dataSource; if (operationTypes.reload) { this._virtualScrollController.reset(); dataSource.items().length = 0; this._isLoaded = false; updateLoading(this); this._isLoaded = true; if (isAppendMode(this)) { this.pageIndex(0); dataSource.pageIndex(0); storeLoadOptions.pageIndex = 0; options.pageIndex = 0; storeLoadOptions.skip = 0 } else { dataSource.pageIndex(this.pageIndex()); if (dataSource.paginate()) { options.pageIndex = this.pageIndex(); storeLoadOptions.skip = this.pageIndex() * this.pageSize() } } } else if (isAppendMode(this) && storeLoadOptions.skip && this._totalCountCorrection < 0) { storeLoadOptions.skip += this._totalCountCorrection } } return super.refresh.apply(this, arguments) } loadPageCount(count) { if (!(0, _type.isDefined)(count)) { return this._loadPageCount } this._loadPageCount = count } _handleDataLoading(options) { const loadPageCount = this.loadPageCount(); const pageSize = this.pageSize(); const newMode = false === this.option(LEGACY_SCROLLING_MODE); const { storeLoadOptions: storeLoadOptions } = options; const takeIsDefined = (0, _type.isDefined)(storeLoadOptions.take); options.loadPageCount = loadPageCount; if (!options.isCustomLoading && newMode && takeIsDefined && loadPageCount > 1 && pageSize > 0) { storeLoadOptions.take = loadPageCount * pageSize } super._handleDataLoading.apply(this, arguments) } _loadPageSize() { return super._loadPageSize.apply(this, arguments) * this.loadPageCount() } beginPageIndex() { return proxyDataSourceAdapterMethod(this, "beginPageIndex", [...arguments]) } endPageIndex() { return proxyDataSourceAdapterMethod(this, "endPageIndex", [...arguments]) } pageIndex(pageIndex) { return proxyDataSourceAdapterMethod(this, "pageIndex", [...arguments]) } virtualItemsCount() { return proxyDataSourceAdapterMethod(this, "virtualItemsCount", [...arguments]) } getContentOffset() { return proxyDataSourceAdapterMethod(this, "getContentOffset", [...arguments]) } getVirtualContentSize() { return proxyDataSourceAdapterMethod(this, "getVirtualContentSize", [...arguments]) } setContentItemSizes() { return proxyDataSourceAdapterMethod(this, "setContentItemSizes", [...arguments]) } setViewportPosition() { return proxyDataSourceAdapterMethod(this, "setViewportPosition", [...arguments]) } getViewportItemIndex() { return proxyDataSourceAdapterMethod(this, "getViewportItemIndex", [...arguments]) } setViewportItemIndex(viewportItemIndex) { return proxyDataSourceAdapterMethod(this, "setViewportItemIndex", [...arguments]) } getItemIndexByPosition() { return proxyDataSourceAdapterMethod(this, "getItemIndexByPosition", [...arguments]) } viewportSize() { return proxyDataSourceAdapterMethod(this, "viewportSize", [...arguments]) } viewportItemSize() { return proxyDataSourceAdapterMethod(this, "viewportItemSize", [...arguments]) } getItemSize() { return proxyDataSourceAdapterMethod(this, "getItemSize", [...arguments]) } getItemSizes() { return proxyDataSourceAdapterMethod(this, "getItemSizes", [...arguments]) } loadIfNeed() { return proxyDataSourceAdapterMethod(this, "loadIfNeed", [...arguments]) } }; const data = Base => class extends Base { dispose() { const rowsScrollController = this._rowsScrollController; rowsScrollController && rowsScrollController.dispose(); super.dispose.apply(this, arguments) } _refreshDataSource() { const baseResult = super._refreshDataSource.apply(this, arguments) || (new _deferred.Deferred).resolve().promise(); baseResult.done(this.initVirtualRows.bind(this)); return baseResult } _loadDataSource() { if (this._rowsScrollController && isVirtualPaging(this)) { var _this$_dataSource; const { loadPageCount: loadPageCount } = (0, _type.isDefined)(this._loadViewportParams) ? this.getLoadPageParams(): { loadPageCount: 0 }; loadPageCount >= 1 && (null === (_this$_dataSource = this._dataSource) || void 0 === _this$_dataSource ? void 0 : _this$_dataSource.loadPageCount(loadPageCount)) } return super._loadDataSource.apply(this, arguments) } getRowPageSize() { const rowPageSize = this.option("scrolling.rowPageSize"); const pageSize = this.pageSize(); return pageSize && pageSize < rowPageSize ? pageSize : rowPageSize } reload() { const rowsScrollController = this._rowsScrollController || this._dataSource; const itemIndex = null === rowsScrollController || void 0 === rowsScrollController ? void 0 : rowsScrollController.getItemIndexByPosition(); const result = super.reload.apply(this, arguments); return null === result || void 0 === result ? void 0 : result.done((() => { if (isVirtualMode(this) || _m_utils.default.isVirtualRowRendering(this)) { const rowIndexOffset = this.getRowIndexOffset(); const rowIndex = Math.floor(itemIndex) - rowIndexOffset; const { component: component } = this; const scrollable = component.getScrollable && component.getScrollable(); const isSortingOperation = this.dataSource().operationTypes().sorting; if (scrollable && !isSortingOperation && rowIndex >= 0) { var _$rowElement$position; const rowElement = component.getRowElement(rowIndex); const $rowElement = (null === rowElement || void 0 === rowElement ? void 0 : rowElement[0]) && (0, _renderer.default)(rowElement[0]); let top = null === $rowElement || void 0 === $rowElement || null === (_$rowElement$position = $rowElement.position()) || void 0 === _$rowElement$position ? void 0 : _$rowElement$position.top; const isChromeLatest = _browser.default.chrome && Number(_browser.default.version ?? 0) >= 91; const allowedTopOffset = _browser.default.mozilla || isChromeLatest ? 1 : 0; if (top && top > allowedTopOffset) { top = Math.round(top + (0, _size.getOuterHeight)($rowElement) * (itemIndex % 1)); scrollable.scrollTo({ y: top }) } } } })) } initVirtualRows() { const virtualRowsRendering = _m_utils.default.isVirtualRowRendering(this); this._allItems = null; this._loadViewportParams = null; if ("virtual" !== this.option("scrolling.mode") && !virtualRowsRendering || !virtualRowsRendering || false !== this.option(LEGACY_SCROLLING_MODE) && !this.option("scrolling.rowPageSize")) { this._visibleItems = null; this._rowsScrollController = null; return } const pageIndex = !isVirtualMode(this) && this.pageIndex() >= this.pageCount() ? this.pageCount() - 1 : this.pageIndex(); this._rowPageIndex = Math.ceil(pageIndex * this.pageSize() / this.getRowPageSize()); this._visibleItems = false === this.option(LEGACY_SCROLLING_MODE) ? null : []; this._viewportChanging = false; this._needUpdateViewportAfterLoading = false; if (!this._rowsScrollController) { this._rowsScrollController = new _m_virtual_scrolling_core.VirtualScrollController(this.component, this._getRowsScrollDataOptions(), true); this._rowsScrollController.positionChanged.add((() => { var _this$_dataSource2; if (false === this.option(LEGACY_SCROLLING_MODE)) { this._viewportChanging = true; this.loadViewport(); this._viewportChanging = false; return } null === (_this$_dataSource2 = this._dataSource) || void 0 === _this$_dataSource2 || _this$_dataSource2.setViewportItemIndex(this._rowsScrollController.getViewportItemIndex()) })) } if (false === this.option(LEGACY_SCROLLING_MODE)) { this._updateLoadViewportParams() } if (this.isLoaded() && false !== this.option(LEGACY_SCROLLING_MODE)) { this._rowsScrollController.load() } } isViewportChanging() { return this._viewportChanging } _getRowsScrollDataOptions() { const that = this; const isItemCountable = function(item) { return isItemCountableByDataSource(item, that._dataSource) }; return { pageSize: () => that.getRowPageSize(), loadedOffset() { var _that$_dataSource; return isVirtualMode(that) && (null === (_that$_dataSource = that._dataSource) || void 0 === _that$_dataSource ? void 0 : _that$_dataSource.lastLoadOptions().skip) || 0 }, loadedItemCount: () => that._itemCount, totalItemsCount() { if (isVirtualPaging(that)) { return that.totalItemsCount() } return false === that.option(LEGACY_SCROLLING_MODE) ? that._itemCount : that._items.filter(isItemCountable).length }, hasKnownLastPage: () => false === that.option(LEGACY_SCROLLING_MODE) ? that.hasKnownLastPage() : true, pageIndex(index) { if (void 0 !== index) { that._rowPageIndex = index } return that._rowPageIndex }, isLoading: () => that.isLoading(), pageCount() { const pageCount = Math.ceil(this.totalItemsCount() / this.pageSize()); return pageCount || 1 }, load() { if (that._rowsScrollController.pageIndex() >= this.pageCount()) { that._rowPageIndex = this.pageCount() - 1; that._rowsScrollController.pageIndex(that._rowPageIndex) } if (!this.items().length && this.totalItemsCount()) { return } that._rowsScrollController.handleDataChanged((change => { change = change || {}; change.changeType = change.changeType || "refresh"; change.items = change.items || that._visibleItems; that._visibleItems.forEach(((item, index) => { item.rowIndex = index })); that._fireChanged(change) })) }, updateLoading() {}, itemsCount() { return this.items(true).length }, correctCount: (items, count, fromEnd) => correctCount(items, count, fromEnd, ((item, isNextAfterLast, fromEnd) => { if (item.isNewRow) { return isNextAfterLast && !fromEnd } if (isNextAfterLast && fromEnd) { return !item.isNewRow } return isItemCountable(item) })), items(countableOnly) { let result = that._items; if (that.option(LEGACY_SCROLLING_MODE)) { const dataSource = that.dataSource(); const virtualItemsCount = null === dataSource || void 0 === dataSource ? void 0 : dataSource.virtualItemsCount(); const begin = virtualItemsCount ? virtualItemsCount.begin : 0; const rowPageSize = that.getRowPageSize(); let skip = that._rowPageIndex * rowPageSize - begin; let take = rowPageSize; if (skip < 0) { return [] } if (skip) { skip = this.correctCount(result, skip); result = result.slice(skip) } if (take) { take = this.correctCount(result, take); result = result.slice(0, take) } } return countableOnly ? result.filter(isItemCountable) : result }, viewportItems(items) { if (items && false !== that.option(LEGACY_SCROLLING_MODE)) { that._visibleItems = items } return that._visibleItems }, onChanged() {}, changingDuration() { const dataSource = that.dataSource(); if (null !== dataSource && void 0 !== dataSource && dataSource.isLoading() && false !== that.option(LEGACY_SCROLLING_MODE)) { return 300 } return (null === dataSource || void 0 === dataSource ? void 0 : dataSource._renderTime) || 0 } } } _updateItemsCore(change) { const delta = this.getRowIndexDelta(); super._updateItemsCore.apply(this, arguments); if (false === this.option(LEGACY_SCROLLING_MODE) && _m_utils.default.isVirtualRowRendering(this)) { if ("update" === change.changeType && 0 === change.rowIndices.length && change.cancelEmptyChanges) { change.cancel = true } return } const rowsScrollController = this._rowsScrollController; if (rowsScrollController) { const visibleItems = this._visibleItems; const isRefresh = "refresh" === change.changeType || change.isLiveUpdate; if ("append" === change.changeType && change.items && !change.items.length) { return } if (isRefresh || "append" === change.changeType || "prepend" === change.changeType) { change.cancel = true; isRefresh && rowsScrollController.reset(true); rowsScrollController.load() } else { if ("update" === change.changeType) { change.rowIndices.forEach(((rowIndex, index) => { const changeType = change.changeTypes[index]; const newItem = change.items[index]; if ("update" === changeType) { visibleItems[rowIndex] = newItem } else if ("insert" === changeType) { visibleItems.splice(rowIndex, 0, newItem) } else if ("remove" === changeType) { visibleItems.splice(rowIndex, 1) } })) } else { visibleItems.forEach(((item, index) => { visibleItems[index] = this._items[index + delta] || visibleItems[index] })); change.items = visibleItems }! function(items) { items.forEach(((item, index) => { item.rowIndex = index })); return items }(visibleItems) } } } _updateLoadViewportParams() { const viewportParams = this._rowsScrollController.getViewportParams(); const pageSize = this.pageSize(); if (viewportParams && !isVirtualPaging(this) && pageSize > 0) { const pageOffset = this.pageIndex() * pageSize; viewportParams.skip += pageOffset } this._loadViewportParams = viewportParams } _processItems() { const resultItems = super._processItems.apply(this, arguments); if (false === this.option(LEGACY_SCROLLING_MODE)) { const dataSource = this._dataSource; let currentIndex = (null === dataSource || void 0 === dataSource ? void 0 : dataSource.lastLoadOptions().skip) ?? 0; let prevCountable; let prevRowType; let isPrevRowNew; let wasCountableItem = false; let newRows = []; resultItems.forEach((item => { const { rowType: rowType } = item; const itemCountable = isItemCountableByDataSource(item, dataSource); const isNextGroupItem = "group" === rowType && (prevCountable || itemCountable || "group" !== prevRowType && currentIndex > 0); const isNextDataItem = "data" === rowType && itemCountable && (prevCountable || "group" !== prevRowType); if (!item.isNewRow && (0, _type.isDefined)(prevCountable)) { const isPrevNewRowFirst = isPrevRowNew && !wasCountableItem; if ((isNextGroupItem || isNextDataItem) && !isPrevNewRowFirst) { currentIndex++ } } if (isNextGroupItem || isNextDataItem) { wasCountableItem = true } if (item.isNewRow) { newRows.push(item) } else { newRows.forEach((it => { it.loadIndex = currentIndex })); newRows = [] } item.loadIndex = currentIndex; prevCountable = itemCountable; prevRowType = rowType; isPrevRowNew = item.isNewRow })); newRows.forEach((it => { it.loadIndex = currentIndex })) } return resultItems } _afterProcessItems(items) { this._itemCount = items.filter((item => isItemCountableByDataSource(item, this._dataSource))).length; if ((0, _type.isDefined)(this._loadViewportParams)) { this._updateLoadViewportParams(); let result = items; this._allItems = items; if (items.length) { const { skipForCurrentPage: skipForCurrentPage } = this.getLoadPageParams(true); const skip = items[0].loadIndex + skipForCurrentPage; const { take: take } = this._loadViewportParams; result = items.filter((it => { const isNewRowInEmptyData = it.isNewRow && it.loadIndex === skip && 0 === take; const isLoadIndexGreaterStart = it.loadIndex >= skip; const isLoadIndexLessEnd = it.loadIndex < skip + take || isNewRowInEmptyData; return isLoadIndexGreaterStart && isLoadIndexLessEnd })) } return result } return super._afterProcessItems.apply(this, arguments) } _applyChange(change) { const that = this; const { items: items } = change; const { changeType: changeType } = change; let { removeCount: removeCount } = change; if (removeCount) { const fromEnd = "prepend" === changeType; removeCount = correctCount(that._items, removeCount, fromEnd, ((item, isNextAfterLast) => "data" === item.rowType && !item.isNewRow || "group" === item.rowType && (that._dataSource.isGroupItemCountable(item.data) || isNextAfterLast))); change.removeCount = removeCount } switch (changeType) { case "prepend": that._items.unshift.apply(that._items, items); if (removeCount) { that._items.splice(-removeCount) } break; case "append": that._items.push.apply(that._items, items); if (removeCount) { that._items.splice(0, removeCount) } break; default: super._applyChange(change) } } items(allItems) { return allItems ? this._allItems || this._items : this._visibleItems || this._items } getRowIndexDelta() { let delta = 0; if (this.option(LEGACY_SCROLLING_MODE)) { const visibleItems = this._visibleItems; if (null !== visibleItems && void 0 !== visibleItems && visibleItems[0]) { delta = this._items.indexOf(visibleItems[0]) } } return delta < 0 ? 0 : delta } getRowIndexOffset(byLoadedRows, needGroupOffset) { let offset = 0; const dataSource = this.dataSource(); const rowsScrollController = this._rowsScrollController; const newMode = false === this.option(LEGACY_SCROLLING_MODE); const virtualPaging = isVirtualPaging(this); if (rowsScrollController && !byLoadedRows) { if (newMode && (0, _type.isDefined)(this._loadViewportParams)) { const { skipForCurrentPage: skipForCurrentPage, pageIndex: pageIndex } = this.getLoadPageParams(true); const items = this.items(true); offset = virtualPaging ? pageIndex * this.pageSize() : 0; if (items.length) { const firstLoadIndex = items[0].loadIndex; offset += items.filter((item => item.loadIndex < firstLoadIndex + skipForCurrentPage)).length } } else { offset = rowsScrollController.beginPageIndex() * rowsScrollController.pageSize() } } else if (virtualPaging && newMode && dataSource) { var _lastLoadOptions$skip; const lastLoadOptions = dataSource.lastLoadOptions(); if (needGroupOffset && null !== (_lastLoadOptions$skip = lastLoadOptions.skips) && void 0 !== _lastLoadOptions$skip && _lastLoadOptions$skip.length) { offset = lastLoadOptions.skips.reduce(((res, skip) => res + skip), 0) } else { offset = lastLoadOptions.skip ?? 0 } } else if (isVirtualMode(this) && dataSource) { offset = dataSource.beginPageIndex() * dataSource.pageSize() } return offset } getDataIndex() { if (false === this.option(LEGACY_SCROLLING_MODE)) { return this.getRowIndexOffset(true, true) } return super.getDataIndex.apply(this, arguments) } viewportSize() { const rowsScrollController = this._rowsScrollController; const dataSource = this._dataSource; const result = null === rowsScrollController || void 0 === rowsScrollController ? void 0 : rowsScrollController.viewportSize.apply(rowsScrollController, arguments); if (false === this.option(LEGACY_SCROLLING_MODE)) { return result } return null === dataSource || void 0 === dataSource ? void 0 : dataSource.viewportSize.apply(dataSource, arguments) } viewportHeight(height, scrollTop) { var _this$_rowsScrollCont; null === (_this$_rowsScrollCont = this._rowsScrollController) || void 0 === _this$_rowsScrollCont || _this$_rowsScrollCont.viewportHeight(height, scrollTop) } viewportItemSize() { const rowsScrollController = this._rowsScrollController; const dataSource = this._dataSource; const result = null === rowsScrollController || void 0 === rowsScrollController ? void 0 : rowsScrollController.viewportItemSize.apply(rowsScrollController, arguments); if (false === this.option(LEGACY_SCROLLING_MODE)) { return result } return null === dataSource || void 0 === dataSource ? void 0 : dataSource.viewportItemSize.apply(dataSource, arguments) } setViewportPosition() { const rowsScrollController = this._rowsScrollController; const dataSource = this._dataSource; this._isPaging = false; if (rowsScrollController) { rowsScrollController.setViewportPosition.apply(rowsScrollController, arguments) } else { null === dataSource || void 0 === dataSource || dataSource.setViewportPosition.apply(dataSource, arguments) } } setContentItemSizes(sizes) { const rowsScrollController = this._rowsScrollController; const dataSource = this._dataSource; const result = null === rowsScrollController || void 0 === rowsScrollController ? void 0 : rowsScrollController.setContentItemSizes(sizes); if (false === this.option(LEGACY_SCROLLING_MODE)) { return result } return null === dataSource || void 0 === dataSource ? void 0 : dataSource.setContentItemSizes(sizes) } getPreloadedRowCount() { const preloadCount = this.option("scrolling.preloadedRowCount"); const preloadEnabled = this.option("scrolling.preloadEnabled"); if ((0, _type.isDefined)(preloadCount)) { return preloadCount } const viewportSize = this.viewportSize(); return preloadEnabled ? 2 * viewportSize : viewportSize } getLoadPageParams(byLoadedPage) { var _this$_dataSource3, _this$_dataSource4; const pageSize = this.pageSize(); const viewportParams = this._loadViewportParams; const lastLoadOptions = null === (_this$_dataSource3 = this._dataSource) || void 0 === _this$_dataSource3 ? void 0 : _this$_dataSource3.lastLoadOptions(); const loadedPageIndex = (null === lastLoadOptions || void 0 === lastLoadOptions ? void 0 : lastLoadOptions.pageIndex) || 0; const loadedTake = (null === lastLoadOptions || void 0 === lastLoadOptions ? void 0 : lastLoadOptions.take) || 0; const isScrollingBack = this._rowsScrollController.isScrollingBack(); const topPreloadCount = isScrollingBack ? this.getPreloadedRowCount() : 0; const bottomPreloadCount = isScrollingBack ? 0 : this.getPreloadedRowCount(); const totalCountCorrection = (null === (_this$_dataSource4 = this._dataSource) || void 0 === _this$_dataSource4 ? void 0 : _this$_dataSource4.totalCountCorrection()) || 0; const skipWithPreload = Math.max(0, viewportParams.skip - topPreloadCount); const pageIndex = byLoadedPage ? loadedPageIndex : Math.floor(pageSize ? skipWithPreload / pageSize : 0); const pageOffset = pageIndex * pageSize; const skipForCurrentPage = viewportParams.skip - pageOffset; const loadingTake = viewportParams.take + skipForCurrentPage + bottomPreloadCount - totalCountCorrection; const take = byLoadedPage ? loadedTake : loadingTake; const loadPageCount = Math.ceil(pageSize ? take / pageSize : 0); return { pageIndex: pageIndex, loadPageCount: Math.max(1, loadPageCount), skipForCurrentPage: Math.max(0, skipForCurrentPage) } } _updateVisiblePageIndex(currentPageIndex) { if (!this._rowsScrollController) { return } if ((0, _type.isDefined)(currentPageIndex)) { this._silentOption("paging.pageIndex", currentPageIndex); this.pageChanged.fire(); return } const viewPortItemIndex = this._rowsScrollController.getViewportItemIndex(); const newPageIndex = Math.floor(viewPortItemIndex / this.pageSize()); if (this.pageIndex() !== newPageIndex) { this._silentOption("paging.pageIndex", newPageIndex); this.updateItems({ changeType: "pageIndex" }) } } _getChangedLoadParams() { const loadedPageParams = this.getLoadPageParams(true); const { pageIndex: pageIndex, loadPageCount: loadPageCount } = this.getLoadPageParams(); const pageIndexIsValid = this._pageIndexIsValid(pageIndex); let result = null; if (!this._isLoading && pageIndexIsValid && (pageIndex !== loadedPageParams.pageIndex || loadPageCount !== loadedPageParams.loadPageCount)) { result = { pageIndex: pageIndex, loadPageCount: loadPageCount } } return result } _pageIndexIsValid(pageIndex) { let result = true; if (isAppendMode(this) && this.hasKnownLastPage() || isVirtualMode(this)) { result = pageIndex * this.pageSize() < this.totalItemsCount() } return result } _loadItems(checkLoading, viewportIsFilled) { const virtualPaging = isVirtualPaging(this); const dataSourceAdapter = this._dataSource; const changedParams = this._getChangedLoadParams(); const currentLoadPageCount = (null === dataSourceAdapter || void 0 === dataSourceAdapter ? void 0 : dataSourceAdapter.loadPageCount()) ?? 0; const lastRequiredItemCount = this.pageSize() * currentLoadPageCount; const currentPageIndex = (null === dataSourceAdapter || void 0 === dataSourceAdapter ? void 0 : dataSourceAdapter.pageIndex()) ?? 0; const pageIndexNotChanged = (null === changedParams || void 0 === changedParams ? void 0 : changedParams.pageIndex) === currentPageIndex; const allLoadedInAppendMode = isAppendMode(this) && this.totalItemsCount() < lastRequiredItemCount; const isRepaintMode = "repaint" === this.option("editing.refreshMode"); const pageIndexIncreased = (null === changedParams || void 0 === changedParams ? void 0 : changedParams.pageIndex) > currentPageIndex; let result = false; if (!dataSourceAdapter || virtualPaging && checkLoading && (isRepaintMode && viewportIsFilled || pageIndexIncreased || pageIndexNotChanged && allLoadedInAppendMode)) { return result } if (virtualPaging && this._isLoading) { this._needUpdateViewportAfterLoading = true } if (virtualPaging && changedParams) { result = true; dataSourceAdapter.pageIndex(changedParams.pageIndex); dataSourceAdapter.loadPageCount(changedParams.loadPageCount); this._repaintChangesOnly = true; this._needUpdateDimensions = true; const viewportChanging = this._viewportChanging; this.load().always((() => { this._repaintChangesOnly = void 0; this._needUpdateDimensions = void 0 })).done((() => { const isLastPage = this.pageCount() > 0 && this.pageIndex() === this.pageCount() - 1; (viewportChanging || isLastPage) && this._updateVisiblePageIndex(); if (this._needUpdateViewportAfterLoading) { this._needUpdateViewportAfterLoading = false; this.loadViewport({ checkLoadedParamsOnly: true }) } })) } return result } loadViewport(params) { const { checkLoadedParamsOnly: checkLoadedParamsOnly, checkLoading: checkLoading, viewportIsNotFilled: viewportIsNotFilled } = params ?? {}; const virtualPaging = isVirtualPaging(this); if (virtualPaging || _m_utils.default.isVirtualRowRendering(this)) { var _this$_dataSource5; this._updateLoadViewportParams(); const loadingItemsStarted = this._loadItems(checkLoading, !viewportIsNotFilled); const isCustomLoading = null === (_this$_dataSource5 = this._dataSource) || void 0 === _this$_dataSource5 ? void 0 : _this$_dataSource5.isCustomLoading(); const isLoading = checkLoading && !isCustomLoading && this._isLoading; const needToUpdateItems = !(loadingItemsStarted || isLoading || checkLoadedParamsOnly); if (needToUpdateItems) { var _this$_editingControl; const noPendingChangesInEditing = !(null !== (_this$_editingControl = this._editingController) && void 0 !== _this$_editingControl && null !== (_this$_editingControl = _this$_editingControl.getChanges()) && void 0 !== _this$_editingControl && _this$_editingControl.length); this.updateItems({ repaintChangesOnly: true, needUpdateDimensions: true, useProcessedItemsCache: noPendingChangesInEditing, cancelEmptyChanges: true }) } } } updateViewport() { var _this$_loadViewportPa; const viewportSize = this.viewportSize(); const itemCount = this.items().length; const viewportIsNotFilled = viewportSize > itemCount; const currentTake = (null === (_this$_loadViewportPa = this._loadViewportParams) || void 0 === _this$_loadViewportPa ? void 0 : _this$_loadViewportPa.take) ?? 0; const rowsScrollController = this._rowsScrollController; const newTake = null === rowsScrollController || void 0 === rowsScrollController ? void 0 : rowsScrollController.getViewportParams().take; (viewportIsNotFilled || currentTake < newTake) && !this._isPaging && itemCount && this.loadViewport({ checkLoading: true, viewportIsNotFilled: viewportIsNotFilled }) } loadIfNeed() { if (false === this.option(LEGACY_SCROLLING_MODE)) { return } const rowsScrollController = this._rowsScrollController; rowsScrollController && rowsScrollController.loadIfNeed(); const dataSource = this._dataSource; return null === dataSource || void 0 === dataSource ? void 0 : dataSource.loadIfNeed() } getItemSize() { const rowsScrollController = this._rowsScrollController; if (rowsScrollController) { return rowsScrollController.getItemSize.apply(rowsScrollController, arguments) } const dataSource = this._dataSource; return null === dataSource || void 0 === dataSource ? void 0 : dataSource.getItemSize.apply(dataSource, arguments) } getItemSizes() { const rowsScrollController = this._rowsScrollController; if (rowsScrollController) { return rowsScrollController.getItemSizes.apply(rowsScrollController, arguments) } const dataSource = this._dataSource; return null === dataSource || void 0 === dataSource ? void 0 : dataSource.getItemSizes.apply(dataSource, arguments) } getContentOffset() { const rowsScrollController = this._rowsScrollController; if (rowsScrollController) { return rowsScrollController.getContentOffset.apply(rowsScrollController, arguments) } const dataSource = this._dataSource; return null === dataSource || void 0 === dataSource ? void 0 : dataSource.getContentOffset.apply(dataSource, arguments) } refresh(options) { const dataSource = this._dataSource; if (dataSource && null !== options && void 0 !== options && options.load && isAppendMode(this)) { dataSource.resetCurrentTotalCount() } return super.refresh.apply(this, arguments) } topItemIndex() { var _this$_loadViewportPa2; return null === (_this$_loadViewportPa2 = this._loadViewportParams) || void 0 === _this$_loadViewportPa2 ? void 0 : _this$_loadViewportPa2.skip } bottomItemIndex() { const viewportParams = this._loadViewportParams; return viewportParams && viewportParams.skip + viewportParams.take } virtualItemsCount() { const rowsScrollController = this._rowsScrollController; if (rowsScrollController) { return rowsScrollController.virtualItemsCount.apply(rowsScrollController, arguments) } const dataSource = this._dataSource; return null === dataSource || void 0 === dataSource ? void 0 : dataSource.virtualItemsCount.apply(dataSource, arguments) } pageIndex(pageIndex) { const virtualPaging = isVirtualPaging(this); const rowsScrollController = this._rowsScrollController; if (false === this.option(LEGACY_SCROLLING_MODE) && virtualPaging && rowsScrollController) { if (void 0 === pageIndex) { return this.option("paging.pageIndex") ?? 0 } } return super.pageIndex.apply(this, arguments) } _fireChanged(e) { super._fireChanged.apply(this, arguments); const { operationTypes: operationTypes } = e; if (false === this.option(LEGACY_SCROLLING_MODE) && isVirtualPaging(this) && operationTypes) { const { fullReload: fullReload, pageIndex: pageIndex } = operationTypes; if (e.isDataChanged && !fullReload && pageIndex) { this._updateVisiblePageIndex(this._dataSource.pageIndex()) } } } _getPagingOptionValue(optionName) { let result = super._getPagingOptionValue.apply(this, arguments); if (false === this.option(LEGACY_SCROLLING_MODE) && isVirtualPaging(this)) { result = this[optionName]() } return result } isEmpty() { return false === this.option(LEGACY_SCROLLING_MODE) ? !this.items(true).length : super.isEmpty.apply(this, arguments) } isLastPageLoaded() { let result = false; if (false === this.option(LEGACY_SCROLLING_MODE) && isVirtualPaging(this)) { const { pageIndex: pageIndex, loadPageCount: loadPageCount } = this.getLoadPageParams(true); const pageCount = this.pageCount(); result = pageIndex + loadPageCount >= pageCount } else { result = super.isLastPageLoaded.apply(this, arguments) } return result } reset() { this._itemCount = 0; this._allItems = null; super.reset.apply(this, arguments) } _applyFilter() { var _this$_dataSource6; null === (_this$_dataSource6 = this._dataSource) || void 0 === _this$_dataSource6 || _this$_dataSource6.loadPageCount(1); return super._applyFilter.apply(this, arguments) } getVirtualContentSize() { var _this$_dataSource7; return null === (_this$_dataSource7 = this._dataSource) || void 0 === _this$_dataSource7 ? void 0 : _this$_dataSource7.getVirtualContentSize.apply(this._dataSource, arguments) } setViewportItemIndex() { var _this$_dataSource8; return null === (_this$_dataSource8 = this._dataSource) || void 0 === _this$_dataSource8 ? void 0 : _this$_dataSource8.setViewportItemIndex.apply(this._dataSource, arguments) } }; exports.data = data; const resizing = Base => class extends Base { dispose() { super.dispose.apply(this, arguments); clearTimeout(this._resizeTimeout) } _updateMasterDataGridCore(masterDataGrid) { return (0, _deferred.when)(super._updateMasterDataGridCore.apply(this, arguments)).done((masterDataGridUpdated => { const isNewVirtualMode = isVirtualMode(masterDataGrid) && false === masterDataGrid.option(LEGACY_SCROLLING_MODE); if (!masterDataGridUpdated && isNewVirtualMode) { const scrollable = masterDataGrid.getScrollable(); if (scrollable) { masterDataGrid.updateDimensions() } } })) } hasResizeTimeout() { return (0, _type.isDefined)(this._resizeTimeout) } resetLastResizeTime() { this._lastTime = void 0 } resize() { let result; if (isVirtualMode(this) || _m_utils.default.isVirtualRowRendering(this)) { clearTimeout(this._resizeTimeout); this._resizeTimeout = null; const diff = new Date - this._lastTime; const updateTimeout = this.option("scrolling.updateTimeout"); if (this._lastTime && diff < updateTimeout) { result = new _deferred.Deferred; this._resizeTimeout = setTimeout((() => { this._resizeTimeout = null; super.resize.apply(this).done(result.resolve).fail(result.reject); this._lastTime = new Date }), updateTimeout); this._lastTime = new Date } else { result = super.resize.apply(this); if (this._dataController.isLoaded()) { this._lastTime = new Date } } } else { result = super.resize.apply(this) } return result } }; exports.resizing = resizing; const rowsView = Base => class extends Base { init() { var _this$_dataController; super.init(); this._dataController.pageChanged.add((pageIndex => { const scrollTop = this._scrollTop; this.scrollToPage(pageIndex ?? this._dataController.pageIndex()); if (false === this.option(LEGACY_SCROLLING_MODE) && this._scrollTop === scrollTop) { this._dataController.updateViewport() } })); this._dataController.dataSourceChanged.add((() => { !this._scrollTop && this._scrollToCurrentPageOnResize() })); null === (_this$_dataController = this._dataController.stateLoaded) || void 0 === _this$_dataController || _this$_dataController.add((() => { this._scrollToCurrentPageOnResize() })); this._scrollToCurrentPageOnResize() } dispose() { clearTimeout(this._scrollTimeoutID); super.dispose() } _scrollToCurrentPageOnResize() { if (this._dataController.pageIndex() > 0) { const resizeHandler = () => { this.resizeCompleted.remove(resizeHandler); this.scrollToPage(this._dataController.pageIndex()) }; this.resizeCompleted.add(resizeHandler) } } scrollToPage(pageIndex) { const pageSize = this._dataController ? this._dataController.pageSize() : 0; let scrollPosition; if (isVirtualMode(this) || isAppendMode(this)) { const itemSize = this._dataController.getItemSize(); const itemSizes = this._dataController.getItemSizes(); const itemIndex = pageIndex * pageSize; scrollPosition = itemIndex * itemSize; for (const index in itemSizes) { if (parseInt(index) < itemIndex) { scrollPosition += itemSizes[index] - itemSize } } } else { scrollPosition = 0 } this.scrollTo({ y: scrollPosition, x: this._scrollLeft }) } renderDelayedTemplates() { this.waitAsyncTemplates().done((() => { this._updateContentPosition(true) })); super.renderDelayedTemplates.apply(this, arguments) } _renderCore(e) { const startRenderTime = new Date; const deferred = super._renderCore.apply(this, arguments); const dataSource = this._dataController._dataSource; if (dataSource && e) { const itemCount = e.items ? e.items.length : 20; const viewportSize = this._dataController.viewportSize() || 20; if (_m_utils.default.isVirtualRowRendering(this) && itemCount > 0 && false !== this.option(LEGACY_SCROLLING_MODE)) { dataSource._renderTime = (new Date - startRenderTime) * viewportSize / itemCount } else { dataSource._renderTime = new Date - startRenderTime } } return deferred } _getRowElements(tableElement) { const $rows = super._getRowElements(tableElement); return null === $rows || void 0 === $rows ? void 0 : $rows.not(".dx-virtual-row") } _removeRowsElements(contentTable, removeCount, changeType) { let rowElements = this._getRowElements(contentTable).toArray(); if ("append" === changeType) { rowElements = rowElements.slice(0, removeCount) } else { rowElements = rowElements.slice(-removeCount) } rowElements.map((rowElement => { const $rowElement = (0, _renderer.default)(rowElement); this._errorHandlingController && this._errorHandlingController.removeErrorRow($rowElement.next()); $rowElement.remove() })) } _updateContent(tableElement, change) { let $freeSpaceRowElements; const contentElement = this._findContentElement(); const changeType = null === change || void 0 === change ? void 0 : change.changeType; const d = (0, _deferred.Deferred)(); const contentTable = contentElement.children().first(); if ("append" === changeType || "prepend" === changeType) { this.waitAsyncTemplates().done((() => { const $tBodies = this._getBodies(tableElement); if (1 === $tBodies.length) { this._getBodies(contentTable)["append" === changeType ? "append" : "prepend"]($tBodies.children()) } else { $tBodies["append" === changeType ? "appendTo" : "prependTo"](contentTable) } tableElement.remove(); $freeSpaceRowElements = this._getFreeSpaceRowElements(contentTable); removeEmptyRows($freeSpaceRowElements, "dx-freespace-row"); if (change.removeCount) { this._removeRowsElements(contentTable, change.removeCount, changeType) } this._restoreErrorRow(contentTable); d.resolve() })).fail(d.reject) } else { super._updateContent.apply(this, arguments).done((() => { if ("update" === changeType) { this._restoreErrorRow(contentTable) } d.resolve() })).fail(d.reject) } return d.promise().done((() => { this._updateBottomLoading() })) } _addVirtualRow($table, isFixed, location, position) { if (!position) { return } let $virtualRow = this._createEmptyRow("dx-virtual-row", isFixed, position); $virtualRow = this._wrapRowIfNeed($table, $virtualRow); this._appendEmptyRow($table, $virtualRow, location) } _updateContentItemSizes() { const rowHeights = this._getRowHeights(); const correctedRowHeights = this._correctRowHeights(rowHeights); this._dataController.setContentItemSizes(correctedRowHeights) } _updateViewportSize(viewportHeight, scrollTop) { if (!(0, _type.isDefined)(viewportHeight)) { viewportHeight = this._hasHeight ? (0, _size.getOuterHeight)(this.element()) : (0, _size.getOuterHeight)((0, _window.getWindow)()) } this._dataController.viewportHeight(viewportHeight, scrollTop) } _getRowHeights() { var _this$_editingControl2, _this$_editingControl3; const isPopupEditMode = null === (_this$_editingControl2 = this._editingController) || void 0 === _this$_editingControl2 || null === (_this$_editingControl3 = _this$_editingControl2.isPopupEditMode) || void 0 === _this$_editingControl3 ? void 0 : _this$_editingControl3.call(_this$_editingControl2); let rowElements = this._getRowElements(this._tableElement).toArray(); if (isPopupEditMode) { rowElements = rowElements.filter((row => !(0, _renderer.default)(row).hasClass("dx-row-inserted"))) } return rowElements.map((row => (0, _position.getBoundingRect)(row).height)) } _correctRowHeights(rowHeights) { const dataController = this._dataController; const dataSource = dataController._dataSource; const correctedRowHeights = []; const visibleRows = dataController.getVisibleRows(); let itemSize = 0; let firstCountableItem = true; let lastLoadIndex = -1; for (let i = 0; i < rowHeights.length; i++) { const currentItem = visibleRows[i]; if (!(0, _type.isDefined)(currentItem)) { continue } if (false === this.option(LEGACY_SCROLLING_MODE)) { if (lastLoadIndex >= 0 && lastLoadIndex !== currentItem.loadIndex) { correctedRowHeights.push(itemSize); itemSize = 0 } lastLoadIndex = currentItem.loadIndex } else if (isItemCountableByDataSource(currentItem, dataSource)) { if (firstCountableItem) { firstCountableItem = false } else { correctedRowHeights.push(itemSize); itemSize = 0 } } itemSize += rowHeights[i] } itemSize > 0 && correctedRowHeights.push(itemSize); return correctedRowHeights } _updateContentPosition(isRender) { const rowHeight = this._rowHeight || 20; this._dataController.viewportItemSize(rowHeight); if (isVirtualMode(this) || _m_utils.default.isVirtualRowRendering(this)) { const isEmptyRows = this._dataController.isEmpty(); if (isEmptyRows) { return } if (!isRender) { this._updateContentItemSizes() } const top = this._dataController.getContentOffset("begin"); const bottom = this._dataController.getContentOffset("end"); const $tables = this.getTableElements(); const $virtualRows = $tables.children("tbody").children(".dx-virtual-row"); removeEmptyRows($virtualRows, "dx-virtual-row"); $tables.each(((index, element) => { const isFixed = index > 0; const prevFixed = this._isFixedTableRendering; this._isFixedTableRendering = isFixed; this._addVirtualRow((0, _renderer.default)(element), isFixed, "top", top); this._addVirtualRow((0, _renderer.default)(element), isFixed, "bottom", bottom); this._isFixedTableRendering = prevFixed })) } } _isTableLinesDisplaysCorrect(table) { const hasColumnLines = table.find(".dx-column-lines").length > 0; return hasColumnLines === this.option("showColumnLines") } _isColumnElementsEqual($columns, $virtualColumns) { let result = $columns.length === $virtualColumns.length; if (result) { (0, _iterator.each)($columns, ((index, element) => { if (element.style.width !== $virtualColumns[index].style.width) { result = false; return result } return })) } return result } _getCellClasses(column) { const classes = []; const { cssClass: cssClass } = column; const isExpandColumn = "expand" === column.command; cssClass && classes.push(cssClass); isExpandColumn && classes.push(this.addWidgetPrefix("group-space")); return classes } _findBottomLoadPanel($contentElement) { const $element = $contentElement || this.element(); const $bottomLoadPanel = null === $element || void 0 === $element ? void 0 : $element.find(`.${this.addWidgetPrefix("bottom-load-panel")}`); if (null !== $bottomLoadPanel && void 0 !== $bottomLoadPanel && $bottomLoadPanel.length) { return $bottomLoadPanel } } _updateBottomLoading() { const that = this; const virtualMode = isVirtualMode(this); const appendMode = isAppendMode(this); const showBottomLoading = !that._dataController.hasKnownLastPage() && that._dataController.isLoaded() && (virtualMode || appendMode); const $contentElement = that._findContentElement(); const bottomLoadPanelElement = that._findBottomLoadPanel($contentElement); if (showBottomLoading) { if (!bottomLoadPanelElement) { (0, _renderer.default)("
").addClass(that.addWidgetPrefix("bottom-load-panel")).append(that._createComponent((0, _renderer.default)("
"), _load_indicator.default, { elementAttr: { role: null, "aria-label": null } }).$element()).appendTo($contentElement) } } else if (bottomLoadPanelElement) { bottomLoadPanelElement.remove() } } _handleScroll(e) { const legacyScrollingMode = true === this.option(LEGACY_SCROLLING_MODE); const zeroTopPosition = 0 === e.scrollOffset.top; const isScrollTopChanged = this._scrollTop !== e.scrollOffset.top; const hasScrolled = isScrollTopChanged || e.forceUpdateScrollPosition; const isValidScrollTarget = this._hasHeight || !legacyScrollingMode && zeroTopPosition; if (hasScrolled && isValidScrollTarget && this._rowHeight) { this._scrollTop = e.scrollOffset.top; const isVirtualRowRendering = isVirtualMode(this) || "standard" !== this.option("scrolling.rowRenderingMode"); if (isVirtualRowRendering && false === this.option(LEGACY_SCROLLING_MODE)) { this._updateContentItemSizes(); this._updateViewportSize(null, this._scrollTop) } this._dataController.setViewportPosition(e.scrollOffset.top) } super._handleScroll.apply(this, arguments) } _needUpdateRowHeight(itemsCount) { return super._needUpdateRowHeight.apply(this, arguments) || itemsCount > 0 && isAppendMode(this) && !_m_utils.default.isVirtualRowRendering(this) } _updateRowHeight() { super._updateRowHeight.apply(this, arguments); if (this._rowHeight) { this._updateContentPosition(); const viewportHeight = this._hasHeight ? (0, _size.getOuterHeight)(this.element()) : (0, _size.getOuterHeight)((0, _window.getWindow)()); if (false === this.option(LEGACY_SCROLLING_MODE)) { this._updateViewportSize(viewportHeight); this._dataController.updateViewport() } else { this._dataController.viewportSize(Math.ceil(viewportHeight / this._rowHeight)) } } } updateFreeSpaceRowHeight() { const result = super.updateFreeSpaceRowHeight.apply(this, arguments); if (result) { this._updateContentPosition() } return result } setLoading(isLoading, messageText) { const dataController = this._dataController; const hasBottomLoadPanel = dataController.pageIndex() > 0 && dataController.isLoaded() && !!this._findBottomLoadPanel(); if (false === this.option(LEGACY_SCROLLING_MODE) && isLoading && dataController.isViewportChanging()) { return } if (hasBottomLoadPanel) { isLoading = false } super.setLoading.call(this, isLoading, messageText) } isGridDragging() { return this.component.option("isDragging") } throwHeightWarningIfNeed() { const isGridDragging = this.isGridDragging(); if (void 0 === this._hasHeight || isGridDragging) { return } const needToThrow = !this._hasHeight && isVirtualPaging(this); if (needToThrow && !this._heightWarningIsThrown) { this._heightWarningIsThrown = true; _ui.default.log("W1025") } } _resizeCore() { const that = this; const $element = that.element(); super._resizeCore(); this.throwHeightWarningIfNeed(); if (that.component.$element() && !that._windowScroll && (0, _dom.isElementInDom)($element)) { that._windowScroll = (0, _m_virtual_scrolling_core.subscribeToExternalScrollers)($element, (scrollPos => { if (!that._hasHeight && that._rowHeight) { that._dataController.setViewportPosition(scrollPos) } }), that.component.$element()); that.on("disposing", (() => { that._windowScroll.dispose() })) } if (false !== this.option(LEGACY_SCROLLING_MODE)) { that.loadIfNeed() } } loadIfNeed() { var _this$_dataController2, _this$_dataController3; null === (_this$_dataController2 = this._dataController) || void 0 === _this$_dataController2 || null === (_this$_dataController3 = _this$_dataController2.loadIfNeed) || void 0 === _this$_dataController3 || _this$_dataController3.call(_this$_dataController2) } _restoreErrorRow(contentTable) { if (false === this.option(LEGACY_SCROLLING_MODE)) { var _this$_errorHandlingC; null === (_this$_errorHandlingC = this._errorHandlingController) || void 0 === _this$_errorHandlingC || _this$_errorHandlingC.removeErrorRow() } super._restoreErrorRow.apply(this, arguments) } }; exports.rowsView = rowsView; exports.virtualScrollingModule = { defaultOptions: () => ({ scrolling: { timeout: 300, updateTimeout: 300, minTimeout: 0, renderingThreshold: 100, removeInvisiblePages: true, rowPageSize: 5, prerenderedRowChunkSize: 1, mode: "standard", preloadEnabled: false, rowRenderingMode: "standard", loadTwoPagesOnStart: false, legacyMode: false, prerenderedRowCount: 1 } }), extenders: { controllers: { data: data, resizing: resizing }, views: { rowsView: rowsView } } } }, 89272: /*!**********************************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/grid_core/virtual_scrolling/m_virtual_scrolling_core.js ***! \**********************************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = exports.VirtualScrollController = void 0; exports.subscribeToExternalScrollers = subscribeToExternalScrollers; var _position = _interopRequireDefault(__webpack_require__( /*! ../../../../common/core/animation/position */ 3030)); var _events_engine = _interopRequireDefault(__webpack_require__( /*! ../../../../common/core/events/core/events_engine */ 92774)); var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../../../core/renderer */ 64553)); var _browser = _interopRequireDefault(__webpack_require__( /*! ../../../../core/utils/browser */ 48314)); var _callbacks = _interopRequireDefault(__webpack_require__( /*! ../../../../core/utils/callbacks */ 84718)); var _deferred = __webpack_require__( /*! ../../../../core/utils/deferred */ 87739); var _iterator = __webpack_require__( /*! ../../../../core/utils/iterator */ 21274); var _type = __webpack_require__( /*! ../../../../core/utils/type */ 11528); var _window = __webpack_require__( /*! ../../../../core/utils/window */ 3104); var _m_utils = _interopRequireDefault(__webpack_require__( /*! ../m_utils */ 53226)); var _m_virtual_data_loader = __webpack_require__( /*! ../virtual_data_loader/m_virtual_data_loader */ 54988); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } const isVirtualMode = that => "virtual" === that.option("scrolling.mode") || that._isVirtual; function subscribeToExternalScrollers($element, scrollChangedHandler, $targetElement) { let $scrollElement; const scrollableArray = []; const scrollToArray = []; const disposeArray = []; $targetElement = $targetElement || $element; function getElementOffset(scrollable) { const $scrollableElement = scrollable.element ? scrollable.$element() : scrollable; const scrollableOffset = _position.default.offset($scrollableElement); if (!scrollableOffset) { return $element.offset().top } return scrollable.scrollTop() - (scrollableOffset.top - $element.offset().top) } const widgetScrollStrategy = { on(scrollable, eventName, handler) { scrollable.on("scroll", handler) }, off(scrollable, eventName, handler) { scrollable.off("scroll", handler) } }; function subscribeToScrollEvents($scrollElement) { const isDocument = "#document" === $scrollElement.get(0).nodeName; const isElement = $scrollElement.get(0).nodeType === (0, _window.getWindow)().Node.ELEMENT_NODE; let scrollable = $scrollElement.data("dxScrollable"); let eventsStrategy = widgetScrollStrategy; if (!scrollable) { scrollable = isDocument && (0, _renderer.default)((0, _window.getWindow)()) || isElement && "auto" === $scrollElement.css("overflowY") && $scrollElement; eventsStrategy = _events_engine.default; if (!scrollable) { return } } const handler = function(scrollable) { return function() { let scrollTop = scrollable.scrollTop() - getElementOffset(scrollable); scrollTop = scrollTop > 0 ? scrollTop : 0; scrollChangedHandler(scrollTop) } }(scrollable); eventsStrategy.on(scrollable, "scroll", handler); scrollToArray.push((pos => { const topOffset = getElementOffset(scrollable); const scrollMethod = scrollable.scrollTo ? "scrollTo" : "scrollTop"; if (pos - topOffset >= 0) { scrollable[scrollMethod](pos + topOffset) } })); scrollableArray.push(scrollable); disposeArray.push((() => { eventsStrategy.off(scrollable, "scroll", handler) })) } const getScrollElementParent = $element => (0, _renderer.default)($element.get(0).parentNode ?? $element.get(0).host); for ($scrollElement = $targetElement.parent(); $scrollElement.length; $scrollElement = getScrollElementParent($scrollElement)) { subscribeToScrollEvents($scrollElement) } return { scrollTo(pos) { (0, _iterator.each)(scrollToArray, ((_, scrollTo) => { scrollTo(pos) })) }, dispose() { (0, _iterator.each)(disposeArray, ((_, dispose) => { dispose() })) } } } class VirtualScrollController { constructor(component, dataOptions, isVirtual) { this._dataOptions = dataOptions; this.component = component; this._viewportSize = false === component.option("scrolling.legacyMode") ? 15 : 0; this._viewportItemSize = 20; this._viewportItemIndex = 0; this._position = 0; this._isScrollingBack = false; this._contentSize = 0; this._itemSizes = {}; this._sizeRatio = 1; this._isVirtual = isVirtual; this.positionChanged = (0, _callbacks.default)(); this._dataLoader = new _m_virtual_data_loader.VirtualDataLoader(this, this._dataOptions) } getItemSizes() { return this._itemSizes } option(name, value) { return this.component.option.apply(this.component, arguments) } isVirtual() { return this._isVirtual } virtualItemsCount() { if (isVirtualMode(this)) { const dataOptions = this._dataOptions; const totalItemsCount = dataOptions.totalItemsCount(); if (false === this.option("scrolling.legacyMode") && -1 !== totalItemsCount) { const viewportParams = this.getViewportParams(); const loadedOffset = dataOptions.loadedOffset(); const loadedItemCount = dataOptions.loadedItemCount(); const skip = Math.max(viewportParams.skip, loadedOffset); const take = Math.min(viewportParams.take, loadedItemCount); const endItemsCount = Math.max(totalItemsCount - (skip + take), 0); return { begin: skip, end: endItemsCount } } return this._dataLoader.virtualItemsCount.apply(this._dataLoader, arguments) } return } getScrollingTimeout() { const renderAsync = this.option("scrolling.renderAsync"); let scrollingTimeout = 0; if (!(0, _type.isDefined)(renderAsync)) { scrollingTimeout = Math.min(this.option("scrolling.timeout") || 0, this._dataOptions.changingDuration()); if (scrollingTimeout < this.option("scrolling.renderingThreshold")) { scrollingTimeout = this.option("scrolling.minTimeout") || 0 } } else if (renderAsync) { scrollingTimeout = this.option("scrolling.timeout") ?? 0 } return scrollingTimeout } setViewportPosition(position) { const result = new _deferred.Deferred; const scrollingTimeout = this.getScrollingTimeout(); clearTimeout(this._scrollTimeoutID); if (scrollingTimeout > 0) { this._scrollTimeoutID = setTimeout((() => { this._setViewportPositionCore(position); result.resolve() }), scrollingTimeout) } else { this._setViewportPositionCore(position); result.resolve() } return result.promise() } getViewportPosition() { return this._position } getItemIndexByPosition(position, viewportItemIndex, height) { position = position ?? this._position; const defaultItemSize = this.getItemSize(); let offset = 0; let itemOffset = 0; const itemOffsetsWithSize = Object.keys(this._itemSizes).concat(-1); for (let i = 0; i < itemOffsetsWithSize.length && offset < position; i++) { const itemOffsetWithSize = parseInt(itemOffsetsWithSize[i]); let itemOffsetDiff = (position - offset) / defaultItemSize; if (itemOffsetWithSize < 0 || itemOffset + itemOffsetDiff < itemOffsetWithSize) { itemOffset += itemOffsetDiff; if (this._sizeRatio < 1 && (0, _type.isDefined)(viewportItemIndex)) { itemOffset = viewportItemIndex + height / this._viewportItemSize } break } else { itemOffsetDiff = itemOffsetWithSize - itemOffset; offset += itemOffsetDiff * defaultItemSize; itemOffset += itemOffsetDiff } const itemSize = this._itemSizes[itemOffsetWithSize]; offset += itemSize; itemOffset += offset < position ? 1 : (position - offset + itemSize) / itemSize } return Math.round(50 * itemOffset) / 50 } isScrollingBack() { return this._isScrollingBack } _setViewportPositionCore(position) { const prevPosition = this._position || 0; this._position = position; if (prevPosition !== this._position) { this._isScrollingBack = this._position < prevPosition } const itemIndex = this.getItemIndexByPosition(); const result = this.setViewportItemIndex(itemIndex); this.positionChanged.fire(); return result } setContentItemSizes(sizes) { const virtualItemsCount = this.virtualItemsCount(); this._contentSize = sizes.reduce(((a, b) => a + b), 0); if (virtualItemsCount) { sizes.forEach(((size, index) => { this._itemSizes[virtualItemsCount.begin + index] = size })); const virtualContentSize = (virtualItemsCount.begin + virtualItemsCount.end + this.itemsCount()) * this._viewportItemSize; const contentHeightLimit = _m_utils.default.getContentHeightLimit(_browser.default); if (virtualContentSize > contentHeightLimit) { this._sizeRatio = contentHeightLimit / virtualContentSize } else { this._sizeRatio = 1 } } } getItemSize() { return this._viewportItemSize * this._sizeRatio } getItemOffset(itemIndex, isEnd) { const virtualItemsCount = this.virtualItemsCount(); let itemCount = itemIndex; if (!virtualItemsCount) { return 0 } let offset = 0; const totalItemsCount = this._dataOptions.totalItemsCount(); Object.keys(this._itemSizes).forEach((currentItemIndex => { if (!itemCount) { return } if (isEnd ? currentItemIndex >= totalItemsCount - itemIndex : currentItemIndex < itemIndex) { offset += this._itemSizes[currentItemIndex]; itemCount-- } })); return Math.floor(offset + itemCount * this._viewportItemSize * this._sizeRatio) } getContentOffset(type) { const isEnd = "end" === type; const virtualItemsCount = this.virtualItemsCount(); if (!virtualItemsCount) { return 0 } return this.getItemOffset(isEnd ? virtualItemsCount.end : virtualItemsCount.begin, isEnd) } getVirtualContentSize() { const virtualItemsCount = this.virtualItemsCount(); return virtualItemsCount ? this.getContentOffset("begin") + this.getContentOffset("end") + this._contentSize : 0 } getViewportItemIndex() { return this._viewportItemIndex } setViewportItemIndex(itemIndex) { this._viewportItemIndex = itemIndex; if (false === this.option("scrolling.legacyMode")) { return } return this._dataLoader.viewportItemIndexChanged.apply(this._dataLoader, arguments) } viewportItemSize(size) { if (void 0 !== size) { this._viewportItemSize = size } return this._viewportItemSize } viewportSize(size) { if (void 0 !== size) { this._viewportSize = size } return this._viewportSize } viewportHeight(height, scrollTop) { const position = scrollTop ?? this._position; const begin = this.getItemIndexByPosition(position); const end = this.getItemIndexByPosition(position + height, begin, height); this.viewportSize(Math.ceil(end - begin)); if (!(0, _type.isDefined)(scrollTop) && this._viewportItemIndex !== begin) { this._setViewportPositionCore(position) } } reset(isRefresh) { this._dataLoader.reset(); if (!isRefresh) { this._itemSizes = {} } } subscribeToWindowScrollEvents($element) { this._windowScroll = this._windowScroll || subscribeToExternalScrollers($element, (scrollTop => { if (this.viewportItemSize()) { this.setViewportPosition(scrollTop) } })) } dispose() { clearTimeout(this._scrollTimeoutID); this._windowScroll && this._windowScroll.dispose(); this._windowScroll = null } scrollTo(pos) { this._windowScroll && this._windowScroll.scrollTo(pos) } isVirtualMode() { return isVirtualMode(this) } isAppendMode() { return that = this, "infinite" === that.option("scrolling.mode") && !that._isVirtual; var that } getViewportParams() { const virtualMode = "virtual" === this.option("scrolling.mode"); const totalItemsCount = this._dataOptions.totalItemsCount(); const hasKnownLastPage = this._dataOptions.hasKnownLastPage(); const topIndex = hasKnownLastPage && this._viewportItemIndex > totalItemsCount ? totalItemsCount : this._viewportItemIndex; const bottomIndex = this._viewportSize + topIndex; const maxGap = this.option("scrolling.prerenderedRowChunkSize") || 1; const isScrollingBack = this.isScrollingBack(); const minGap = this.option("scrolling.prerenderedRowCount") ?? 1; const topMinGap = isScrollingBack ? minGap : 0; const bottomMinGap = isScrollingBack ? 0 : minGap; const skip = Math.floor(Math.max(0, topIndex - topMinGap) / maxGap) * maxGap; let take = Math.ceil((bottomIndex + bottomMinGap - skip) / maxGap) * maxGap; if (virtualMode) { const remainedItems = Math.max(0, totalItemsCount - skip); take = Math.min(take, remainedItems) } return { skip: skip, take: take } } itemsCount() { let result = 0; if (this.option("scrolling.legacyMode")) { result = this._dataLoader.itemsCount.apply(this._dataLoader, arguments) } else { result = this._dataOptions.itemsCount() } return result } pageIndex() { return this._dataLoader.pageIndex(...arguments) } beginPageIndex() { return this._dataLoader.beginPageIndex(...arguments) } endPageIndex() { return this._dataLoader.endPageIndex(...arguments) } pageSize() { return this._dataLoader.pageSize(...arguments) } load() { return this._dataLoader.load(...arguments) } loadIfNeed() { return this._dataLoader.loadIfNeed(...arguments) } handleDataChanged() { return this._dataLoader.handleDataChanged(...arguments) } getDelayDeferred() { return this._dataLoader.getDelayDeferred() } } exports.VirtualScrollController = VirtualScrollController; exports.default = { VirtualScrollController: VirtualScrollController } }, 85799: /*!*****************************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/new/card_view/content_view/content/card/caption.js ***! \*****************************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.Caption = void 0; var _inferno = __webpack_require__( /*! inferno */ 76231); var _element = __webpack_require__( /*! ../../../../../../../core/element */ 61404); var _renderer = (e = __webpack_require__( /*! ../../../../../../../core/renderer */ 64553), e && e.__esModule ? e : { default: e }); var e; class Caption extends _inferno.Component { constructor() { super(...arguments); this.ref = (0, _inferno.createRef)(); this.onClick = e => { var _this$props$onClick, _this$props; const args = { event: e, fieldCaptionElement: (0, _element.getPublicElement)((0, _renderer.default)(this.ref.current)), field: this.props.field }; null === (_this$props$onClick = (_this$props = this.props).onClick) || void 0 === _this$props$onClick || _this$props$onClick.call(_this$props, args) }; this.onDblClick = e => { var _this$props$onDblClic, _this$props2; const args = { event: e, fieldCaptionElement: (0, _element.getPublicElement)((0, _renderer.default)(this.ref.current)), field: this.props.field }; null === (_this$props$onDblClic = (_this$props2 = this.props).onDblClick) || void 0 === _this$props$onDblClic || _this$props$onDblClic.call(_this$props2, args) } } render() { const Template = this.props.template; return (0, _inferno.createVNode)(1, "div", "dx-cardview-field-caption", Template ? (0, _inferno.createComponentVNode)(2, Template, { field: this.props.field }) : (0, _inferno.createFragment)([this.props.field.column.caption, (0, _inferno.createTextVNode)(":")], 0), 0, { onClick: this.onClick, onDblClick: this.onDblClick }, null, this.ref) } componentDidMount() { var _this$props$onPrepare, _this$props3; const args = { fieldCaptionElement: (0, _element.getPublicElement)((0, _renderer.default)(this.ref.current)), field: this.props.field }; null === (_this$props$onPrepare = (_this$props3 = this.props).onPrepared) || void 0 === _this$props$onPrepare || _this$props$onPrepare.call(_this$props3, args) } } exports.Caption = Caption }, 46715: /*!**************************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/new/card_view/content_view/content/card/card.js ***! \**************************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.Card = exports.CLASSES = void 0; var _inferno = __webpack_require__( /*! inferno */ 76231); var _index = __webpack_require__( /*! ../../../../../../../common/core/events/utils/index */ 98834); var _element = __webpack_require__( /*! ../../../../../../../core/element */ 61404); var _renderer = (e = __webpack_require__( /*! ../../../../../../../core/renderer */ 64553), e && e.__esModule ? e : { default: e }); var e; var _index2 = __webpack_require__( /*! ../../../../../../../events/index */ 69786); var _m_guid = __webpack_require__( /*! ../../../../../../core/m_guid */ 7201); var _combine_classes = __webpack_require__( /*! ../../../../../../core/utils/combine_classes */ 46190); var _utils = __webpack_require__( /*! ../../../../../../grids/new/grid_core/accessibility/utils */ 94944); var _index3 = __webpack_require__( /*! ../../../../../../grids/new/grid_core/keyboard_navigation/index */ 58529); var _cover = __webpack_require__( /*! ./cover */ 35710); var _field = __webpack_require__( /*! ./field */ 3637); var _header = __webpack_require__( /*! ./header */ 9332); const CLASSES = exports.CLASSES = { card: "dx-cardview-card", cardHover: "dx-cardview-card-hoverable", content: "dx-cardview-card-content", footer: "dx-cardview-card-footer", selectCard: "dx-cardview-card-selection" }; class Card extends _inferno.Component { constructor() { super(...arguments); this.containerRef = (0, _inferno.createRef)(); this.onHoverChanged = event => { var _this$props$onHoverCh, _this$props; const args = { eventType: event.type, card: this.props.card, cardElement: (0, _element.getPublicElement)((0, _renderer.default)(this.containerRef.current)), event: event }; null === (_this$props$onHoverCh = (_this$props = this.props).onHoverChanged) || void 0 === _this$props$onHoverCh || _this$props$onHoverCh.call(_this$props, args) }; this.onClick = event => { var _this$props$onClick, _this$props2; const args = { card: this.props.card, cardElement: (0, _element.getPublicElement)((0, _renderer.default)(this.containerRef.current)), event: event }; null === (_this$props$onClick = (_this$props2 = this.props).onClick) || void 0 === _this$props$onClick || _this$props$onClick.call(_this$props2, args); if (this.props.allowSelectOnClick) { var _this$props$selectCar, _this$props3; null === (_this$props$selectCar = (_this$props3 = this.props).selectCard) || void 0 === _this$props$selectCar || _this$props$selectCar.call(_this$props3, this.props.card, { control: (0, _index.isCommandKeyPressed)(event), shift: event.shiftKey }) } }; this.onDblClick = event => { var _this$props$onDblClic, _this$props4; const args = { card: this.props.card, cardElement: (0, _element.getPublicElement)((0, _renderer.default)(this.containerRef.current)), event: event }; null === (_this$props$onDblClic = (_this$props4 = this.props).onDblClick) || void 0 === _this$props$onDblClic || _this$props$onDblClic.call(_this$props4, args) }; this.onHold = event => { const { onHold: onHold, card: card } = this.props; null === onHold || void 0 === onHold || onHold({ event: event, card: card }); event.stopPropagation() } } render() { var _cover$imageExpr, _cover$altExpr, _this$props$header, _this$props$header2, _this$props$header3, _this$props$cover; if (this.props.elementRef) { this.containerRef = this.props.elementRef } const { hoverStateEnabled: hoverStateEnabled, cover: cover, card: card, footerTemplate: FooterTemplate, template: Template, contentTemplate: ContentTemplate } = this.props; const className = (0, _combine_classes.combineClasses)({ [CLASSES.card]: true, [CLASSES.cardHover]: !!hoverStateEnabled, [CLASSES.selectCard]: !!card.isSelected }); const hasCover = !!(null !== cover && void 0 !== cover && cover.imageExpr); const imageSrc = null === cover || void 0 === cover || null === (_cover$imageExpr = cover.imageExpr) || void 0 === _cover$imageExpr ? void 0 : _cover$imageExpr.call(cover, this.props.card.data); const alt = null === cover || void 0 === cover || null === (_cover$altExpr = cover.altExpr) || void 0 === _cover$altExpr ? void 0 : _cover$altExpr.call(cover, this.props.card.data); const cardRole = Template ? "presentation" : "application"; const coverId = new _m_guid.Guid; const contentId = new _m_guid.Guid; return (0, _inferno.createComponentVNode)(2, _index3.KbnFocusTrap, { elementRef: this.containerRef, enabled: this.props.kbnEnabled, tabIndex: this.props.tabIndex, className: className, onDblClick: this.onDblClick, onMouseEnter: this.onHoverChanged, onMouseLeave: this.onHoverChanged, onContextMenu: this.props.onContextMenu, onKeyDown: this.props.onKeyDown, role: cardRole, "aria-roledescription": (0, _utils.getCardRoleDescription)(this.props.allowUpdating), "aria-label": (0, _utils.getCardStateDescription)(this.props.position, this.props.isCheckBoxesRendered, this.props.card.isSelected), "aria-describedby": (0, _utils.getCardDescriptiveLabel)(hasCover, coverId, contentId), children: Template ? (0, _inferno.createComponentVNode)(2, Template, { card: card }) : (0, _inferno.createFragment)([(0, _inferno.createComponentVNode)(2, _header.CardHeader, { template: null === (_this$props$header = this.props.header) || void 0 === _this$props$header ? void 0 : _this$props$header.template, visible: null === (_this$props$header2 = this.props.header) || void 0 === _this$props$header2 ? void 0 : _this$props$header2.visible, card: card, items: null === (_this$props$header3 = this.props.header) || void 0 === _this$props$header3 ? void 0 : _this$props$header3.items, isCheckBoxesRendered: this.props.isCheckBoxesRendered, selectCard: this.props.selectCard, onEdit: () => { var _this$props$onEdit, _this$props5; null === (_this$props$onEdit = (_this$props5 = this.props).onEdit) || void 0 === _this$props$onEdit || _this$props$onEdit.call(_this$props5, this.props.card.key) }, onDelete: () => { var _this$props$onDelete, _this$props6; null === (_this$props$onDelete = (_this$props6 = this.props).onDelete) || void 0 === _this$props$onDelete || _this$props$onDelete.call(_this$props6, this.props.card.key) }, allowUpdating: this.props.allowUpdating, allowDeleting: this.props.allowDeleting }), hasCover && (0, _inferno.createComponentVNode)(2, _cover.Cover, { id: coverId, card: card, template: null === (_this$props$cover = this.props.cover) || void 0 === _this$props$cover ? void 0 : _this$props$cover.template, imageSrc: imageSrc, alt: alt }), !!this.props.card.fields.length && (0, _inferno.createVNode)(1, "div", CLASSES.content, ContentTemplate ? (0, _inferno.createComponentVNode)(2, ContentTemplate, { card: card }) : this.props.card.fields.map((field => { var _this$props$fieldProp, _this$props$fieldProp2; return (0, _inferno.createComponentVNode)(2, _field.Field, { fieldHintEnabled: this.props.fieldHintEnabled, field: field, template: field.column.fieldTemplate, captionTemplate: field.column.fieldCaptionTemplate, valueTemplate: field.column.fieldValueTemplate, captionProps: null === (_this$props$fieldProp = this.props.fieldProps) || void 0 === _this$props$fieldProp ? void 0 : _this$props$fieldProp.captionProps, valueProps: null === (_this$props$fieldProp2 = this.props.fieldProps) || void 0 === _this$props$fieldProp2 ? void 0 : _this$props$fieldProp2.valueProps }) })), 0, { id: contentId }), FooterTemplate && (0, _inferno.createVNode)(1, "div", CLASSES.footer, (0, _inferno.createComponentVNode)(2, FooterTemplate, { card: card }), 2)], 0) }) } componentDidMount() { var _this$props$onPrepare, _this$props7; const onPreparedArgs = { cardElement: (0, _element.getPublicElement)((0, _renderer.default)(this.containerRef.current)), card: this.props.card }; null === (_this$props$onPrepare = (_this$props7 = this.props).onPrepared) || void 0 === _this$props$onPrepare || _this$props$onPrepare.call(_this$props7, onPreparedArgs); (0, _index2.on)(this.containerRef.current, "dxclick", this.onClick); if (this.props.onHold) { (0, _index2.on)(this.containerRef.current, "dxhold", this.onHold) } } componentWillUnmount() { (0, _index2.off)(this.containerRef.current, "dxclick", this.onClick); if (this.props.onHold) { (0, _index2.off)(this.containerRef.current, "dxhold", this.onHold) } } } exports.Card = Card }, 35710: /*!***************************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/new/card_view/content_view/content/card/cover.js ***! \***************************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.Cover = exports.CLASSES = void 0; var _inferno = __webpack_require__( /*! inferno */ 76231); var _message = (e = __webpack_require__( /*! ../../../../../../../localization/message */ 33881), e && e.__esModule ? e : { default: e }); var e; var _combine_classes = __webpack_require__( /*! ../../../../../../core/utils/combine_classes */ 46190); var _icon = __webpack_require__( /*! ../../../../../../grids/new/grid_core/icon */ 93445); const CLASSES = exports.CLASSES = { cover: "dx-card-cover", image: "dx-card-cover-image", noImage: "dx-card-cover-noimage" }; class Cover extends _inferno.Component { render() { const { id: id, imageSrc: imageSrc, alt: alt, template: Template, card: card } = this.props; const src = imageSrc; const containerClasses = (0, _combine_classes.combineClasses)({ [CLASSES.cover]: true, [CLASSES.noImage]: !src }); return (0, _inferno.createVNode)(1, "div", containerClasses, Template ? (0, _inferno.createComponentVNode)(2, Template, { card: card }) : (0, _inferno.createFragment)([src && (0, _inferno.createVNode)(1, "img", CLASSES.image, null, 1, { src: src, alt: alt }), !src && (0, _inferno.createComponentVNode)(2, _icon.Icon, { name: "imagethumbnail", "aria-label": _message.default.format("dxCardView-cardNoImageAriaLabel") })], 0), 0, { id: id }) } } exports.Cover = Cover }, 3637: /*!***************************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/new/card_view/content_view/content/card/field.js ***! \***************************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.Field = exports.CLASSES = void 0; var _inferno = __webpack_require__( /*! inferno */ 76231); var _caption = __webpack_require__( /*! ./caption */ 85799); var _value_text = __webpack_require__( /*! ./value_text */ 61044); function _extends() { return _extends = Object.assign ? Object.assign.bind() : function(n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) { ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]) } } return n }, _extends.apply(null, arguments) } const CLASSES = exports.CLASSES = { fieldTemplate: "dx-cardview-field-template", overflowHint: "dx-cardview-overflow-hint" }; class Field extends _inferno.Component { constructor(props) { super(props); this.containerRef = this.props.elementRef ?? (0, _inferno.createRef)() } componentDidMount() { var _this$props$onPrepare, _this$props; null === (_this$props$onPrepare = (_this$props = this.props).onPrepared) || void 0 === _this$props$onPrepare || _this$props$onPrepare.call(_this$props, this.containerRef.current) } render() { const Template = this.props.template; if (Template) { return (0, _inferno.createVNode)(1, "div", CLASSES.fieldTemplate, (0, _inferno.createComponentVNode)(2, Template, { field: this.props.field }), 2) } return (0, _inferno.createFragment)([(0, _inferno.normalizeProps)((0, _inferno.createComponentVNode)(2, _caption.Caption, _extends({ field: this.props.field, template: this.props.captionTemplate }, this.props.captionProps))), (0, _inferno.normalizeProps)((0, _inferno.createComponentVNode)(2, _value_text.ValueText, _extends({ fieldHintEnabled: this.props.fieldHintEnabled, field: this.props.field, template: this.props.valueTemplate }, this.props.valueProps)))], 4) } } exports.Field = Field }, 9332: /*!****************************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/new/card_view/content_view/content/card/header.js ***! \****************************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.CardHeader = exports.CLASSES = void 0; var _inferno = __webpack_require__( /*! inferno */ 76231); var _index = __webpack_require__( /*! ../../../../../../../common/core/events/utils/index */ 98834); var _message = (e = __webpack_require__( /*! ../../../../../../../localization/message */ 33881), e && e.__esModule ? e : { default: e }); var e; var _m_type = __webpack_require__( /*! ../../../../../../core/utils/m_type */ 39918); var _toolbar = __webpack_require__( /*! ../../../../../../grids/new/grid_core/inferno_wrappers/toolbar */ 48696); var _utils = __webpack_require__( /*! ../../../../../../grids/new/grid_core/toolbar/utils */ 31895); const CLASSES = exports.CLASSES = { cardHeader: "dx-cardview-card-header", cardSelectCheckBox: "dx-cardview-select-checkbox" }; class CardHeader extends _inferno.Component { getCheckBoxItem() { const { isCheckBoxesRendered: isCheckBoxesRendered, selectCard: selectCard, card: card } = this.props; if (card && isCheckBoxesRendered) { return { location: "before", name: "selectionCheckBox", widget: "dxCheckBox", cssClass: CLASSES.cardSelectCheckBox, options: { elementAttr: { "aria-label": _message.default.format("dxCardView-ariaSelectCard") }, value: card.isSelected, onValueChanged: e => { const event = e.event; null === selectCard || void 0 === selectCard || selectCard(card, { control: (0, _index.isCommandKeyPressed)(event), shift: event.shiftKey, needToUpdateCheckboxes: true }); event.stopPropagation() } } } } return null } getDefaultToolbarItems() { const { captionExpr: captionExpr, card: card, allowUpdating: allowUpdating, allowDeleting: allowDeleting, onEdit: onEdit, onDelete: onDelete } = this.props; const checkBoxItem = this.getCheckBoxItem(); const captionItem = !!captionExpr && (null === card || void 0 === card ? void 0 : card[captionExpr]) && { name: "caption", location: "before", text: card[captionExpr] }; const updateButton = allowUpdating && { name: "updateButton", location: "after", widget: "dxButton", options: { icon: "edit", onClick: onEdit, stylingMode: "text" } }; const deleteButton = allowDeleting && { name: "deleteButton", location: "after", widget: "dxButton", options: { icon: "trash", onClick: onDelete, stylingMode: "text" } }; const items = [checkBoxItem, captionItem, updateButton, deleteButton].filter((item => !!item)); return items } render() { const { visible: visibleProp, items: userToolbarItems, template: Template, card: card } = this.props; const toolbarItems = (0, _utils.normalizeToolbarItems)(this.getDefaultToolbarItems(), userToolbarItems, ["caption", "selectionCheckBox", "updateButton", "deleteButton"]); const visible = (0, _m_type.isDefined)(visibleProp) ? visibleProp : !!toolbarItems.length; if (!visible) { return (0, _inferno.createFragment)() } return (0, _inferno.createVNode)(1, "div", CLASSES.cardHeader, Template ? (0, _inferno.createComponentVNode)(2, Template, { card: card }) : (0, _inferno.createComponentVNode)(2, _toolbar.Toolbar, { items: toolbarItems }), 0) } } exports.CardHeader = CardHeader }, 61044: /*!********************************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/new/card_view/content_view/content/card/value_text.js ***! \********************************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.ValueText = void 0; var _inferno = __webpack_require__( /*! inferno */ 76231); var _element = __webpack_require__( /*! ../../../../../../../core/element */ 61404); var _renderer = (e = __webpack_require__( /*! ../../../../../../../core/renderer */ 64553), e && e.__esModule ? e : { default: e }); var e; const CLASS = { root: "dx-cardview-field-value", textPartHighlighted: "dx-cardview-field-value__text-part--highlighted" }; class ValueText extends _inferno.Component { constructor() { super(...arguments); this.ref = (0, _inferno.createRef)(); this.onClick = e => { var _this$props$onClick, _this$props; const args = { event: e, fieldValueElement: (0, _element.getPublicElement)((0, _renderer.default)(this.ref.current)), field: this.props.field }; null === (_this$props$onClick = (_this$props = this.props).onClick) || void 0 === _this$props$onClick || _this$props$onClick.call(_this$props, args) }; this.onDblClick = e => { var _this$props$onDblClic, _this$props2; const args = { event: e, fieldValueElement: (0, _element.getPublicElement)((0, _renderer.default)(this.ref.current)), field: this.props.field }; null === (_this$props$onDblClic = (_this$props2 = this.props).onDblClick) || void 0 === _this$props$onDblClic || _this$props$onDblClic.call(_this$props2, args) } } render() { const classNames = [CLASS.root, `${CLASS.root}--text-align-${this.props.field.column.alignment}`].join(" "); const content = this.props.field.highlightedText ? this.props.field.highlightedText.map((_ref => { let { type: type, text: textPart } = _ref; return (0, _inferno.createVNode)(1, "span", "highlighted" === type ? CLASS.textPartHighlighted : "", textPart, 0) })) : this.props.field.text; const Template = this.props.template; return (0, _inferno.createVNode)(1, "div", classNames, Template ? (0, _inferno.createComponentVNode)(2, Template, { field: this.props.field }) : content, 0, { onClick: this.onClick, onDblClick: this.onDblClick, title: this.props.fieldHintEnabled ? this.props.field.text : void 0 }, null, this.ref) } componentDidMount() { var _this$props$onPrepare, _this$props3; const args = { fieldValueElement: (0, _element.getPublicElement)((0, _renderer.default)(this.ref.current)), field: this.props.field }; null === (_this$props$onPrepare = (_this$props3 = this.props).onPrepared) || void 0 === _this$props$onPrepare || _this$props$onPrepare.call(_this$props3, args) } } exports.ValueText = ValueText }, 2187: /*!************************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/new/card_view/content_view/content/content.js ***! \************************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.Content = exports.CLASSES = void 0; var _inferno = __webpack_require__( /*! inferno */ 76231); var _utils = __webpack_require__( /*! ../../../../../../common/core/events/utils */ 98834); var _combine_classes = __webpack_require__( /*! ../../../../../core/utils/combine_classes */ 46190); var _utils2 = __webpack_require__( /*! ../../../../../grids/new/grid_core/accessibility/utils */ 94944); var _index = __webpack_require__( /*! ../../../../../grids/new/grid_core/keyboard_navigation/index */ 58529); var _card = __webpack_require__( /*! ./card/card */ 46715); function _extends() { return _extends = Object.assign ? Object.assign.bind() : function(n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) { ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]) } } return n }, _extends.apply(null, arguments) } const CLASSES = exports.CLASSES = { content: "dx-cardview-content", grid: "dx-cardview-content-grid", selectCheckBoxesHidden: "dx-cardview-select-checkboxes-hidden", wrapEnabled: "dx-cardview-word-wrap-enabled" }; const CardWithKbn = (0, _index.withKeyDownHandler)((0, _index.withKbnNavigationItem)(_card.Card)); class Content extends _inferno.Component { constructor() { super(...arguments); this.containerRef = (0, _inferno.createRef)(); this.cardElementRefs = []; this.focusFirstCardAfterReload = false } getCssVariables() { var _this$props$cardProps, _this$props$cardProps3, _this$props$cardProps5, _this$props$cardProps7; const variables = {}; if (this.props.cardsPerRow) { variables["--dx-cardview-cardsperrow"] = this.props.cardsPerRow } if (null !== (_this$props$cardProps = this.props.cardProps) && void 0 !== _this$props$cardProps && _this$props$cardProps.minWidth) { var _this$props$cardProps2; variables["--dx-cardview-card-min-width"] = `${null===(_this$props$cardProps2=this.props.cardProps)||void 0===_this$props$cardProps2?void 0:_this$props$cardProps2.minWidth}px` } if (null !== (_this$props$cardProps3 = this.props.cardProps) && void 0 !== _this$props$cardProps3 && _this$props$cardProps3.maxWidth) { var _this$props$cardProps4; variables["--dx-cardview-card-max-width"] = `${null===(_this$props$cardProps4=this.props.cardProps)||void 0===_this$props$cardProps4?void 0:_this$props$cardProps4.maxWidth}px` } if (null !== (_this$props$cardProps5 = this.props.cardProps) && void 0 !== _this$props$cardProps5 && null !== (_this$props$cardProps5 = _this$props$cardProps5.cover) && void 0 !== _this$props$cardProps5 && _this$props$cardProps5.maxHeight) { var _this$props$cardProps6; variables["--dx-cardview-card-cover-max-height"] = `${null===(_this$props$cardProps6=this.props.cardProps)||void 0===_this$props$cardProps6||null===(_this$props$cardProps6=_this$props$cardProps6.cover)||void 0===_this$props$cardProps6?void 0:_this$props$cardProps6.maxHeight}px` } if (null !== (_this$props$cardProps7 = this.props.cardProps) && void 0 !== _this$props$cardProps7 && null !== (_this$props$cardProps7 = _this$props$cardProps7.cover) && void 0 !== _this$props$cardProps7 && _this$props$cardProps7.ratio) { var _this$props$cardProps8; variables["--dx-cardview-card-cover-ratio"] = `${null===(_this$props$cardProps8=this.props.cardProps)||void 0===_this$props$cardProps8||null===(_this$props$cardProps8=_this$props$cardProps8.cover)||void 0===_this$props$cardProps8?void 0:_this$props$cardProps8.ratio}` } return variables } render() { const className = (0, _combine_classes.combineClasses)({ [CLASSES.content]: true, [CLASSES.grid]: true, [CLASSES.selectCheckBoxesHidden]: !!this.props.needToHiddenCheckBoxes, [CLASSES.wrapEnabled]: !!this.props.wordWrapEnabled }); const CardItem = this.props.kbnEnabled ? CardWithKbn : _card.Card; this.cardElementRefs = new Array(this.props.items.length).fill(void 0).map((() => (0, _inferno.createRef)())); return (0, _inferno.createComponentVNode)(2, _index.KbnNavigationContainer, { enabled: this.props.kbnEnabled, navigationStrategy: this.props.navigationStrategy, onFocusMoved: (newIdx, element) => { this.onCardFocusMoved(newIdx, element) }, children: (0, _inferno.createVNode)(1, "div", className, this.props.items.map(((item, idx) => (0, _inferno.normalizeProps)((0, _inferno.createComponentVNode)(2, CardItem, _extends({}, this.props.cardProps, { elementRef: this.cardElementRefs[idx], navigationIdx: idx, kbnEnabled: this.props.kbnEnabled, navigationStrategy: this.props.navigationStrategy, keyDownConfig: { PageUp: () => { var _this$props$onPageCha, _this$props; null === (_this$props$onPageCha = (_this$props = this.props).onPageChange) || void 0 === _this$props$onPageCha || _this$props$onPageCha.call(_this$props, -1); this.focusFirstCardAfterReload = true }, PageDown: () => { var _this$props$onPageCha2, _this$props2; null === (_this$props$onPageCha2 = (_this$props2 = this.props).onPageChange) || void 0 === _this$props$onPageCha2 || _this$props$onPageCha2.call(_this$props2, 1); this.focusFirstCardAfterReload = true }, Space: event => { var _this$props$cardProps9, _this$props$cardProps10; null === (_this$props$cardProps9 = this.props.cardProps) || void 0 === _this$props$cardProps9 || null === (_this$props$cardProps10 = _this$props$cardProps9.selectCard) || void 0 === _this$props$cardProps10 || _this$props$cardProps10.call(_this$props$cardProps9, item, { control: (0, _utils.isCommandKeyPressed)(event), shift: event.shiftKey, needToUpdateCheckboxes: true }) }, "Space+shift": event => { var _this$props$cardProps11, _this$props$cardProps12; null === (_this$props$cardProps11 = this.props.cardProps) || void 0 === _this$props$cardProps11 || null === (_this$props$cardProps12 = _this$props$cardProps11.selectCard) || void 0 === _this$props$cardProps12 || _this$props$cardProps12.call(_this$props$cardProps11, item, { control: (0, _utils.isCommandKeyPressed)(event), shift: event.shiftKey, needToUpdateCheckboxes: true }) }, "a+ctrl": () => { var _this$props$cardProps13, _this$props$cardProps14; null === (_this$props$cardProps13 = this.props.cardProps) || void 0 === _this$props$cardProps13 || null === (_this$props$cardProps14 = _this$props$cardProps13.onSelectAllCards) || void 0 === _this$props$cardProps14 || _this$props$cardProps14.call(_this$props$cardProps13) }, "f+ctrl": () => { var _this$props$cardProps15, _this$props$cardProps16; null === (_this$props$cardProps15 = this.props.cardProps) || void 0 === _this$props$cardProps15 || null === (_this$props$cardProps16 = _this$props$cardProps15.onSearchFocus) || void 0 === _this$props$cardProps16 || _this$props$cardProps16.call(_this$props$cardProps15) }, "Enter+shift": () => { var _this$props$cardProps17, _this$props$cardProps18; null === (_this$props$cardProps17 = this.props.cardProps) || void 0 === _this$props$cardProps17 || null === (_this$props$cardProps18 = _this$props$cardProps17.onEdit) || void 0 === _this$props$cardProps18 || _this$props$cardProps18.call(_this$props$cardProps17, item.key, this.cardElementRefs[idx].current ?? void 0) }, Delete: () => { var _this$props$cardProps19, _this$props$cardProps20; null === (_this$props$cardProps19 = this.props.cardProps) || void 0 === _this$props$cardProps19 || null === (_this$props$cardProps20 = _this$props$cardProps19.onDelete) || void 0 === _this$props$cardProps20 || _this$props$cardProps20.call(_this$props$cardProps19, item.key, this.cardElementRefs[idx].current ?? void 0) } }, caughtEventPreventDefault: true, card: item, position: (0, _utils2.getPosition)(idx, this.props.cardsPerRow ?? 1), onContextMenu: e => { var _this$props$showCardC, _this$props3; null === (_this$props$showCardC = (_this$props3 = this.props).showCardContextMenu) || void 0 === _this$props$showCardC || _this$props$showCardC.call(_this$props3, e, item, idx) }, onFocusMoved: (newIdx, element) => { this.onCardFocusMoved(newIdx, element) } }), function(card) { if ("string" === typeof card.key || "number" === typeof card.key) { return card.key } return }(item))))), 0, { style: this.getCssVariables() }, null, this.containerRef) }) } updateSizesInfo() { var _this$cardElementRefs, _this$props$onFirstEl, _this$props4, _this$props$onRowHeig, _this$props5, _this$props$onColumnG, _this$props6; const firstCardElement = (null === (_this$cardElementRefs = this.cardElementRefs[0]) || void 0 === _this$cardElementRefs ? void 0 : _this$cardElementRefs.current) ?? void 0; null === (_this$props$onFirstEl = (_this$props4 = this.props).onFirstElementChange) || void 0 === _this$props$onFirstEl || _this$props$onFirstEl.call(_this$props4, firstCardElement); if (!firstCardElement || !this.containerRef.current) { return } const cardHeight = firstCardElement.offsetHeight; const rowGap = parseFloat(getComputedStyle(this.containerRef.current).rowGap); const rowHeight = cardHeight + rowGap; null === (_this$props$onRowHeig = (_this$props5 = this.props).onRowHeightChange) || void 0 === _this$props$onRowHeig || _this$props$onRowHeig.call(_this$props5, rowHeight); const columnGap = parseFloat(getComputedStyle(this.containerRef.current).columnGap); null === (_this$props$onColumnG = (_this$props6 = this.props).onColumnGapChange) || void 0 === _this$props$onColumnG || _this$props$onColumnG.call(_this$props6, columnGap) } componentDidMount() { this.updateSizesInfo() } componentDidUpdate() { this.handleFocusPageChange(); this.updateSizesInfo() } onCardFocusMoved(newIdx, element) { var _cardProps$onFocusedC; const { items: items, cardProps: cardProps } = this.props; null === cardProps || void 0 === cardProps || null === (_cardProps$onFocusedC = cardProps.onFocusedCardChanged) || void 0 === _cardProps$onFocusedC || _cardProps$onFocusedC.call(cardProps, items[newIdx], newIdx, element) } handleFocusPageChange() { const { isLoading: isLoading, navigationStrategy: navigationStrategy } = this.props; if (!isLoading && this.focusFirstCardAfterReload) { this.focusFirstCardAfterReload = false; const [, newActiveItem] = navigationStrategy.getNewActiveItem((() => navigationStrategy.setActiveItem(0, true))); if (newActiveItem) { this.onCardFocusMoved(newActiveItem.idx, newActiveItem.element) } } } } exports.Content = Content }, 75969: /*!*********************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/new/card_view/content_view/content_view.js ***! \*********************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.ContentView = void 0; var _inferno = __webpack_require__( /*! inferno */ 76231); var _content_view = __webpack_require__( /*! ../../../../grids/new/grid_core/content_view/content_view */ 44305); var _content = __webpack_require__( /*! ./content/content */ 2187); function _extends() { return _extends = Object.assign ? Object.assign.bind() : function(n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) { ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]) } } return n }, _extends.apply(null, arguments) } class ContentView extends _inferno.Component { render() { return (0, _inferno.normalizeProps)((0, _inferno.createComponentVNode)(2, _content_view.ContentView, _extends({}, this.props, { children: (0, _inferno.normalizeProps)((0, _inferno.createComponentVNode)(2, _content.Content, _extends({}, this.props.contentProps))) }))) } } exports.ContentView = ContentView }, 87996: /*!**************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/new/card_view/content_view/index.js ***! \**************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); var _exportNames = { View: true }; Object.defineProperty(exports, "View", { enumerable: true, get: function() { return _view.ContentView } }); var _options = __webpack_require__( /*! ./options */ 44930); Object.keys(_options).forEach((function(key) { if ("default" === key || "__esModule" === key) { return } if (Object.prototype.hasOwnProperty.call(_exportNames, key)) { return } if (key in exports && exports[key] === _options[key]) { return } Object.defineProperty(exports, key, { enumerable: true, get: function() { return _options[key] } }) })); var _public_methods = __webpack_require__( /*! ./public_methods */ 6806); Object.keys(_public_methods).forEach((function(key) { if ("default" === key || "__esModule" === key) { return } if (Object.prototype.hasOwnProperty.call(_exportNames, key)) { return } if (key in exports && exports[key] === _public_methods[key]) { return } Object.defineProperty(exports, key, { enumerable: true, get: function() { return _public_methods[key] } }) })); var _view = __webpack_require__( /*! ./view */ 96003) }, 44930: /*!****************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/new/card_view/content_view/options.js ***! \****************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.defaultOptions = void 0; var Base = function(e, r) { if (!r && e && e.__esModule) { return e } if (null === e || "object" != typeof e && "function" != typeof e) { return { default: e } } var t = _getRequireWildcardCache(r); if (t && t.has(e)) { return t.get(e) } var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) { if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u] } } return n.default = e, t && t.set(e, n), n }(__webpack_require__( /*! ../../grid_core/content_view/options */ 3538)); function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) { return null } var r = new WeakMap, t = new WeakMap; return (_getRequireWildcardCache = function(e) { return e ? t : r })(e) } function _extends() { return _extends = Object.assign ? Object.assign.bind() : function(n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) { ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]) } } return n }, _extends.apply(null, arguments) } exports.defaultOptions = _extends({ wordWrapEnabled: false, cardsPerRow: 3, cardMinWidth: 250, cardCover: { aspectRatio: "1 / 1" }, fieldHintEnabled: false }, Base.defaultOptions) }, 6806: /*!***********************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/new/card_view/content_view/public_methods.js ***! \***********************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.PublicMethods = function(GridCore) { return class extends(Base.PublicMethods(GridCore)) { getCardElement(cardIndex) { const card = (0, _renderer.default)(this.element()).find(`.${cardModule.CLASSES.card}`).eq(cardIndex); return (0, _element.getPublicElement)(card) } getVisibleCards() { const itemsController = this.diContext.get(_items_controller.ItemsController); return itemsController.items.peek() } getCardIndexByKey(key) { const itemsController = this.diContext.get(_items_controller.ItemsController); const cards = itemsController.items.peek(); return cards.findIndex((card => card.key === key)) } getKeyByCardIndex(cardIndex) { var _this$getVisibleCards; return null === (_this$getVisibleCards = this.getVisibleCards()[cardIndex]) || void 0 === _this$getVisibleCards ? void 0 : _this$getVisibleCards.key } } }; var _element = __webpack_require__( /*! ../../../../../core/element */ 61404); var _renderer = (e = __webpack_require__( /*! ../../../../../core/renderer */ 64553), e && e.__esModule ? e : { default: e }); var e; var Base = _interopRequireWildcard(__webpack_require__( /*! ../../grid_core/content_view/public_methods */ 19718)); var _items_controller = __webpack_require__( /*! ../../grid_core/items_controller/items_controller */ 58761); var cardModule = _interopRequireWildcard(__webpack_require__( /*! ./content/card/card */ 46715)); function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) { return null } var r = new WeakMap, t = new WeakMap; return (_getRequireWildcardCache = function(e) { return e ? t : r })(e) } function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) { return e } if (null === e || "object" != typeof e && "function" != typeof e) { return { default: e } } var t = _getRequireWildcardCache(r); if (t && t.has(e)) { return t.get(e) } var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) { if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u] } } return n.default = e, t && t.set(e, n), n } }, 72981: /*!**************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/new/card_view/content_view/utils.js ***! \**************************************************************************************************/ function(__unused_webpack_module, exports) { Object.defineProperty(exports, "__esModule", { value: true }); exports.factors = function(n) { const res = []; for (let i = 1; i <= n; i += 1) { if (n % i === 0) { res.push(i) } } return res } }, 96003: /*!*************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/new/card_view/content_view/view.js ***! \*************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.ContentView = void 0; var _data = __webpack_require__( /*! ../../../../../core/utils/data */ 31e3); var _type = __webpack_require__( /*! ../../../../../core/utils/type */ 11528); var _signalsCore = __webpack_require__( /*! @preact/signals-core */ 70037); var _index = __webpack_require__( /*! ../../../../grids/new/grid_core/keyboard_navigation/index */ 58529); var _view = __webpack_require__( /*! ../../grid_core/content_view/view */ 31123); var _content_view = __webpack_require__( /*! ./content_view */ 75969); var _utils = __webpack_require__( /*! ./utils */ 72981); function _extends() { return _extends = Object.assign ? Object.assign.bind() : function(n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) { ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]) } } return n }, _extends.apply(null, arguments) } class ContentView extends _view.ContentView { constructor() { super(...arguments); this.cardMinWidth = this.options.oneWay("cardMinWidth"); this.rowHeight = (0, _signalsCore.signal)(0); this.columnGap = (0, _signalsCore.signal)(0); this.cardsPerRowProp = this.options.oneWay("cardsPerRow"); this.cardsPerRow = (0, _signalsCore.computed)((() => { const width = this.width.value; const cardMinWidth = this.cardMinWidth.value; const pageSize = this.dataController.pageSize.value; const cardsPerRowProp = this.cardsPerRowProp.value; if ("auto" !== cardsPerRowProp) { return cardsPerRowProp } const result = (0, _utils.factors)(pageSize).reverse().find((cardsPerRow => { const cardWidth = (width - this.columnGap.value * (cardsPerRow - 1)) / cardsPerRow; return cardMinWidth <= cardWidth })); return result ?? 1 })); this.navigationStrategy = new _index.NavigationStrategyMatrix(this.cardsPerRow.peek()); this.component = _content_view.ContentView; this.items = (0, _signalsCore.computed)((() => this.itemsController.items.value.filter((item => item.visible)))); (0, _signalsCore.effect)((() => { this.navigationStrategy.updateColumnsCount(this.cardsPerRow.value) })) } getProps() { return (0, _signalsCore.computed)((() => _extends({}, this.getBaseProps(), { contentProps: { items: this.items.value, kbnEnabled: this.keyboardNavigationController.enabled.value, navigationStrategy: this.navigationStrategy, isLoading: this.dataController.isReloading.value, needToHiddenCheckBoxes: this.selectionController.needToHiddenCheckBoxes.value, cardsPerRow: this.cardsPerRow.value, onRowHeightChange: height => { this.rowHeight.value = height }, onFirstElementChange: firstElement => { this.keyboardNavigationController.setFirstCardElement(firstElement) }, onColumnGapChange: gap => { this.columnGap.value = gap }, onPageChange: this.onPageChange.bind(this), showCardContextMenu: this.showCardContextMenu.bind(this), wordWrapEnabled: this.options.oneWay("wordWrapEnabled").value, cardProps: { minWidth: this.cardMinWidth.value, maxWidth: this.options.oneWay("cardMaxWidth").value, fieldHintEnabled: this.options.oneWay("fieldHintEnabled").value, isCheckBoxesRendered: this.selectionController.isCheckBoxesRendered.value, allowSelectOnClick: this.selectionController.allowSelectOnClick.value, onHold: this.onCardHold.bind(this), onClick: this.options.action("onCardClick").value, onDblClick: this.options.action("onCardDblClick").value, onHoverChanged: this.options.action("onCardHoverChanged").value, onPrepared: this.options.action("onCardPrepared").value, fieldProps: { captionProps: { onClick: this.options.action("onFieldCaptionClick").value, onDblClick: this.options.action("onFieldCaptionDblClick").value, onPrepared: this.options.action("onFieldCaptionPrepared").value }, valueProps: { onClick: this.options.action("onFieldValueClick").value, onDblClick: this.options.action("onFieldValueDblClick").value, onPrepared: this.options.action("onFieldValuePrepared").value } }, onEdit: (key, returnFocusTo) => { this.keyboardNavigationController.setReturnFocusTo(returnFocusTo); this.editingController.editCard(key) }, onDelete: (key, returnFocusTo) => { this.keyboardNavigationController.setReturnFocusTo(returnFocusTo); this.editingController.deleteCard(key) }, allowUpdating: this.editingController.allowUpdating.value, allowDeleting: this.editingController.allowDeleting.value, footerTemplate: this.options.template("cardFooterTemplate").value, template: this.options.template("cardTemplate").value, contentTemplate: this.options.template("cardContentTemplate").value, cover: { imageExpr: this.processExpr(this.options.oneWay("cardCover.imageExpr").value), altExpr: this.processExpr(this.options.oneWay("cardCover.altExpr").value), maxHeight: this.options.oneWay("cardCover.maxHeight").value, ratio: this.options.oneWay("cardCover.aspectRatio").value, template: this.options.template("cardCover.template").value }, header: { visible: this.options.oneWay("cardHeader.visible").value, items: this.options.oneWay("cardHeader.items").value, template: this.options.template("cardHeader.template").value }, toolbar: this.options.oneWay("cardHeader.items").value, selectCard: this.selectCard.bind(this), onSelectAllCards: this.onSelectAllCards.bind(this), onSearchFocus: () => { this.searchUIController.doUIAction("focusSearchTextBox") }, onFocusedCardChanged: (card, cardIdx, element) => { this.keyboardNavigationController.onFocusedCardChanged(card, cardIdx, element) } } } }))) } processExpr(expr) { if (!(0, _type.isDefined)(expr)) { return } return (0, _data.compileGetter)(expr) } selectCard(card, options) { if (options.needToUpdateCheckboxes) { this.selectionController.updateSelectionCheckBoxesVisible(true) } this.selectionController.changeCardSelection(card.index, options) } onCardHold(e) { this.selectionController.processLongTap(e.card) } showCardContextMenu(e, card, cardIndex) { this.contextMenuController.show(e, "content", { card: card, cardIndex: cardIndex }) } onSelectAllCards() { this.selectionController.selectAll() } onPageChange(value) { if (value < 0) { this.dataController.decreasePageIndex() } else { this.dataController.increasePageIndex() } } } exports.ContentView = ContentView }, 51914: /*!*******************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/new/card_view/context_menu/controller.js ***! \*******************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.ContextMenuController = void 0; var _index = __webpack_require__( /*! ../../grid_core/columns_controller/index */ 50875); var _controller = __webpack_require__( /*! ../../grid_core/context_menu/controller */ 7194); var _index2 = __webpack_require__( /*! ../../grid_core/sorting_controller/index */ 37386); var _options_controller = __webpack_require__( /*! ../options_controller */ 42015); function _extends() { return _extends = Object.assign ? Object.assign.bind() : function(n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) { ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]) } } return n }, _extends.apply(null, arguments) } class ContextMenuController extends _controller.BaseContextMenuController { constructor(columnsController, options, sortingController) { super(); this.columnsController = columnsController; this.options = options; this.sortingController = sortingController } show(event, view) { let contextInfo = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : {}; let onMenuCloseCallback = arguments.length > 3 ? arguments[3] : void 0; super.show(event, view, contextInfo, onMenuCloseCallback) } getItems(view, targetElement) { let contextInfo = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : {}; const items = []; if ("headerPanel" === view && contextInfo.column) { items.push(...this.getSortingItems(contextInfo.column)) } const event = _extends({ items: items.length > 0 ? items : void 0, target: view, targetElement: targetElement, columnIndex: void 0, card: void 0, cardIndex: void 0, column: void 0 }, contextInfo); const callback = this.options.action("onContextMenuPreparing").peek(); callback(event); return event.items } getSortingItems(column) { const mode = this.sortingController.mode.value; const isDisabled = "none" === mode || !column.allowSorting; const onItemClick = event => { this.handleSortMenuClick(event, mode, column) }; return [{ text: this.options.oneWay("sorting.ascendingText").peek(), value: "asc", disabled: isDisabled || "asc" === column.sortOrder, icon: "sortuptext", onItemClick: onItemClick }, { text: this.options.oneWay("sorting.descendingText").peek(), value: "desc", disabled: isDisabled || "desc" === column.sortOrder, icon: "sortdowntext", onItemClick: onItemClick }, { text: this.options.oneWay("sorting.clearText").peek(), value: void 0, disabled: isDisabled || !column.sortOrder, icon: "none", onItemClick: onItemClick }] } handleSortMenuClick(e, mode, column) { var _e$itemData; const sortOrder = null === (_e$itemData = e.itemData) || void 0 === _e$itemData ? void 0 : _e$itemData.value; switch (mode) { case "single": this.sortingController.onSingleModeSortCore(column, true, sortOrder); break; case "multiple": this.sortingController.onMultipleModeSortCore(column, false, sortOrder) } } } exports.ContextMenuController = ContextMenuController; ContextMenuController.dependencies = [_index.ColumnsController, _options_controller.OptionsController, _index2.SortingController] }, 6024: /*!**************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/new/card_view/context_menu/index.js ***! \**************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); var _controller = __webpack_require__( /*! ./controller */ 51914); Object.keys(_controller).forEach((function(key) { if ("default" === key || "__esModule" === key) { return } if (key in exports && exports[key] === _controller[key]) { return } Object.defineProperty(exports, key, { enumerable: true, get: function() { return _controller[key] } }) })); var _view = __webpack_require__( /*! ./view */ 84103); Object.keys(_view).forEach((function(key) { if ("default" === key || "__esModule" === key) { return } if (key in exports && exports[key] === _view[key]) { return } Object.defineProperty(exports, key, { enumerable: true, get: function() { return _view[key] } }) })) }, 84103: /*!*************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/new/card_view/context_menu/view.js ***! \*************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.ContextMenuView = void 0; var _view = __webpack_require__( /*! ../../grid_core/context_menu/view */ 74743); var _controller = __webpack_require__( /*! ./controller */ 51914); class ContextMenuView extends _view.BaseContextMenuView { constructor(controller) { super(controller); this.controller = controller } } exports.ContextMenuView = ContextMenuView; ContextMenuView.dependencies = [_controller.ContextMenuController] }, 44067: /*!**********************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/new/card_view/di.js ***! \**********************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.register = function(diContext) { (0, _di.register)(diContext); diContext.register(ContentViewModule.View); diContext.addAlias(BaseContentViewModule.View, ContentViewModule.View); diContext.register(_controller3.HeaderPanelController); diContext.register(_view2.HeaderPanelView); diContext.register(_view.ContextMenuView); diContext.register(_controller2.ContextMenuController); diContext.addAlias(_controller.BaseContextMenuController, _controller2.ContextMenuController) }; var BaseContentViewModule = _interopRequireWildcard(__webpack_require__( /*! ../grid_core/content_view/index */ 71967)); var _controller = __webpack_require__( /*! ../grid_core/context_menu/controller */ 7194); var _di = __webpack_require__( /*! ../grid_core/di */ 3955); var ContentViewModule = _interopRequireWildcard(__webpack_require__( /*! ./content_view/index */ 87996)); var _controller2 = __webpack_require__( /*! ./context_menu/controller */ 51914); var _view = __webpack_require__( /*! ./context_menu/view */ 84103); var _controller3 = __webpack_require__( /*! ./header_panel/controller */ 10567); var _view2 = __webpack_require__( /*! ./header_panel/view */ 39706); function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) { return null } var r = new WeakMap, t = new WeakMap; return (_getRequireWildcardCache = function(e) { return e ? t : r })(e) } function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) { return e } if (null === e || "object" != typeof e && "function" != typeof e) { return { default: e } } var t = _getRequireWildcardCache(r); if (t && t.has(e)) { return t.get(e) } var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) { if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u] } } return n.default = e, t && t.set(e, n), n } }, 33847: /*!*******************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/new/card_view/header_panel/a11y/const.js ***! \*******************************************************************************************************/ function(__unused_webpack_module, exports) { Object.defineProperty(exports, "__esModule", { value: true }); exports.I18N_MESSAGE_SEPARATOR = exports.I18N_KEYS = void 0; exports.I18N_KEYS = { common: "dxCardView-ariaHeaderItemLabel", headerFilter: "dxCardView-ariaHeaderHasHeaderFilterLabel", sortingAsc: "dxCardView-ariaHeaderItemSortingAscendingLabel", sortingDesc: "dxCardView-ariaHeaderItemSortingDescendingLabel", sortIndex: "dxCardView-ariaHeaderItemSortingIndexLabel" }; exports.I18N_MESSAGE_SEPARATOR = ", " }, 76444: /*!*******************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/new/card_view/header_panel/a11y/index.js ***! \*******************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "getHeaderItemA11yLabel", { enumerable: true, get: function() { return _utils.getHeaderItemA11yLabel } }); var _utils = __webpack_require__( /*! ./utils */ 30037) }, 30037: /*!*******************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/new/card_view/header_panel/a11y/utils.js ***! \*******************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.getSortingA11yLabel = exports.getSortIndexA11yLabel = exports.getHeaderItemA11yLabel = exports.getHeaderFilterA11yLabel = exports.getCommonA11yLabel = void 0; var _message = (e = __webpack_require__( /*! ../../../../../../common/core/localization/message */ 4671), e && e.__esModule ? e : { default: e }); var e; var _type = __webpack_require__( /*! ../../../../../../core/utils/type */ 11528); var _const = __webpack_require__( /*! ./const */ 33847); const getCommonA11yLabel = columnName => _message.default.format(_const.I18N_KEYS.common, columnName); exports.getCommonA11yLabel = getCommonA11yLabel; const getHeaderFilterA11yLabel = hasHeaderFilterValue => hasHeaderFilterValue ? _message.default.format(_const.I18N_KEYS.headerFilter) : null; exports.getHeaderFilterA11yLabel = getHeaderFilterA11yLabel; const getSortingA11yLabel = sortOrder => { switch (sortOrder) { case "asc": return _message.default.format(_const.I18N_KEYS.sortingAsc); case "desc": return _message.default.format(_const.I18N_KEYS.sortingDesc); default: return null } }; exports.getSortingA11yLabel = getSortingA11yLabel; const getSortIndexA11yLabel = (sortOrder, sortIndex) => sortOrder && (0, _type.isDefined)(sortIndex) ? _message.default.format(_const.I18N_KEYS.sortIndex, sortIndex + 1) : null; exports.getSortIndexA11yLabel = getSortIndexA11yLabel; exports.getHeaderItemA11yLabel = (columnName, _ref) => { let { sortOrder: sortOrder, sortIndex: sortIndex, hasHeaderFilterValue: hasHeaderFilterValue } = _ref; return [getCommonA11yLabel(columnName), getHeaderFilterA11yLabel(hasHeaderFilterValue), getSortingA11yLabel(sortOrder), getSortIndexA11yLabel(sortOrder, sortIndex)].filter((msg => !!msg)).join(_const.I18N_MESSAGE_SEPARATOR) } }, 85992: /*!************************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/new/card_view/header_panel/column_sortable.js ***! \************************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.ColumnSortable = void 0; var _inferno = __webpack_require__( /*! inferno */ 76231); var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../../../../core/renderer */ 64553)); var _message = _interopRequireDefault(__webpack_require__( /*! ../../../../../localization/message */ 33881)); var _combine_classes = __webpack_require__( /*! ../../../../core/utils/combine_classes */ 46190); var _icon = __webpack_require__( /*! ../../grid_core/icon */ 93445); var _sortable = __webpack_require__( /*! ../../grid_core/inferno_wrappers/sortable */ 87819); const _excluded = ["source", "getColumnByIndex", "allowDragging", "onColumnMove", "columnDragTemplate", "dropFeedbackMode"]; function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } function _extends() { return _extends = Object.assign ? Object.assign.bind() : function(n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) { ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]) } } return n }, _extends.apply(null, arguments) } const CLASS_widget = "dx-widget", CLASS_columnSortable = "dx-cardview-column-sortable", CLASS_dropzone = "dx-cardview-dropzone", CLASS_dropzoneVisible = "dx-cardview-dropzone-visible"; class ColumnSortable extends _inferno.Component { constructor() { super(...arguments); this.onDragStart = e => { var _this$props$isColumnD, _this$props, _this$props$onDragSta, _this$props2; const column = this.props.getColumnByIndex(e.fromIndex); const isDraggable = (null === (_this$props$isColumnD = (_this$props = this.props).isColumnDraggable) || void 0 === _this$props$isColumnD ? void 0 : _this$props$isColumnD.call(_this$props, column)) ?? true; if (!isDraggable) { e.cancel = true; return } const { source: source } = this.props; e.itemData = { column: column, status: "moving", source: source, destination: source }; e.itemData = _extends({}, e.itemData, this.getNeighborColumns(e)); null === (_this$props$onDragSta = (_this$props2 = this.props).onDragStart) || void 0 === _this$props$onDragSta || _this$props$onDragSta.call(_this$props2, e) }; this.onDraggableElementShown = e => { (0, _renderer.default)(e.dragElement).addClass(CLASS_widget); (0, _renderer.default)(e.dragElement).addClass(CLASS_columnSortable) }; this.onDragMove = e => { const destination = e.toComponent.option("_source"); const { columnBefore: columnBefore, columnAfter: columnAfter } = this.getNeighborColumns(e); e.itemData.columnBefore = columnBefore; e.itemData.columnAfter = columnAfter; e.itemData.destination = destination; e.itemData.status = this.getDraggingStatus(e); this.renderDragTemplate(e.itemData) }; this.onColumnMove = e => { var _this$props$onColumnM, _this$props3; if ("forbid" === e.itemData.status) { return } null === (_this$props$onColumnM = (_this$props3 = this.props).onColumnMove) || void 0 === _this$props$onColumnM || _this$props$onColumnM.call(_this$props3, e.itemData.column, e.toIndex, e.itemData) }; this.renderDragTemplate = itemData => { if (!itemData || !this.dragItemContainer) { return } const DragTemplate = this.props.columnDragTemplate; (0, _inferno.render)((0, _inferno.createComponentVNode)(2, DragTemplate, { column: itemData.column, status: itemData.status, isDragging: true }), this.dragItemContainer) } } render() { const _this$props4 = this.props, { source: source, allowDragging: allowDragging, columnDragTemplate: columnDragTemplate, dropFeedbackMode: dropFeedbackMode } = _this$props4, restProps = function(r, e) { if (null == r) { return {} } var t = {}; for (var n in r) { if ({}.hasOwnProperty.call(r, n)) { if (e.includes(n)) { continue } t[n] = r[n] } } return t }(_this$props4, _excluded); const needSortable = allowDragging ?? true; if (!needSortable) { return this.props.children } const dragTemplate = columnDragTemplate ? (e, container) => { this.dragItemContainer = (0, _renderer.default)(container).get(0); this.renderDragTemplate(e.itemData) } : void 0; const dropzoneClasses = (0, _combine_classes.combineClasses)({ [CLASS_dropzone]: true, [CLASS_dropzoneVisible]: !!this.props.showDropzone }); return (0, _inferno.normalizeProps)((0, _inferno.createComponentVNode)(2, _sortable.Sortable, _extends({ boundary: "body" }, restProps, { dropFeedbackMode: dropFeedbackMode ?? "indicate", onDragStart: this.onDragStart, group: "dx-cardview-columns", onAdd: this.onColumnMove, onReorder: this.onColumnMove, onDragMove: this.onDragMove, dragTemplate: dragTemplate, _source: source, onPlaceholderPrepared: this.props.onPlaceholderPrepared, onDraggableElementShown: this.onDraggableElementShown, children: [this.props.children, (0, _inferno.createVNode)(1, "div", dropzoneClasses, [(0, _inferno.createComponentVNode)(2, _icon.Icon, { name: "dropzone" }), (0, _inferno.createVNode)(1, "span", null, _message.default.format("dxCardView-headerItemDropZoneText"), 0)], 4)] }))) } getDraggingStatus(e) { const { column: column, source: source, destination: destination, columnBefore: columnBefore, columnAfter: columnAfter } = e.itemData; const containerRect = (0, _renderer.default)(e.element).get(0).getBoundingClientRect(); const mouseX = e.event.clientX; const mouseY = e.event.clientY; const yDistance = Math.min(Math.abs(mouseY - containerRect.y), Math.abs(mouseY - (containerRect.y + containerRect.height))); const isMouseOnSourceContainer = mouseX >= containerRect.x && mouseX <= containerRect.x + containerRect.width && mouseY >= containerRect.y && mouseY <= containerRect.y + containerRect.height; if ("column-chooser" === source && "header-panel-main" === destination) { return "moving" } if ("header-panel-main" === source && "column-chooser" === destination) { return column.allowHiding ? "moving" : "forbid" } if ("header-panel-main" === source && "header-panel-main" === destination) { const isDragCloseEnough = yDistance <= 20; const canReorder = column.allowReordering; const canInsert = !!(null !== columnBefore && void 0 !== columnBefore && columnBefore.allowReordering) || !!(null !== columnAfter && void 0 !== columnAfter && columnAfter.allowReordering); const isMoving = isDragCloseEnough && canInsert && canReorder; return isMoving ? "moving" : "forbid" } if ("column-chooser" === source && "column-chooser" === destination) { const isMoving = isMouseOnSourceContainer; return isMoving ? "moving" : "forbid" } return "forbid" } getNeighborColumns(e) { const { source: source, destination: destination } = e.itemData; if ("header-panel-main" !== destination) { return { columnBefore: void 0, columnAfter: void 0 } } const column = e.itemData.column; const toIndex = e.toIndex ?? column.headerPanelIndex; const { visibleColumns: visibleColumns } = this.props; if ("header-panel-main" === source) { const isMovingLeft = toIndex < column.headerPanelIndex; return isMovingLeft ? { columnBefore: visibleColumns[toIndex - 1], columnAfter: visibleColumns[toIndex] } : { columnBefore: visibleColumns[toIndex], columnAfter: visibleColumns[toIndex + 1] } } if ("column-chooser" === source) { return { columnBefore: visibleColumns[toIndex - 1], columnAfter: visibleColumns[toIndex] } } return { columnBefore: void 0, columnAfter: void 0 } } } exports.ColumnSortable = ColumnSortable }, 10567: /*!*******************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/new/card_view/header_panel/controller.js ***! \*******************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.HeaderPanelController = void 0; var _renderer = (e = __webpack_require__( /*! ../../../../../core/renderer */ 64553), e && e.__esModule ? e : { default: e }); var e; var _index = __webpack_require__( /*! ../../grid_core/column_chooser/index */ 45415); var _index2 = __webpack_require__( /*! ../../grid_core/columns_controller/index */ 50875); function _extends() { return _extends = Object.assign ? Object.assign.bind() : function(n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) { ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]) } } return n }, _extends.apply(null, arguments) } const CLASS_hidden = "dx-hidden"; class HeaderPanelController { constructor(columnsController, columnChooserView) { this.columnsController = columnsController; this.columnChooserView = columnChooserView; this.isColumnDraggable = column => { const canHide = column.allowHiding && this.columnChooserView.dragModeOpened.peek(); const canReorder = this.canReorder(column); return canReorder || canHide }; this.onColumnMove = (column, toIndex, draggingColumnData) => { const { columnAfter: columnAfter } = draggingColumnData; const needPreserveOrder = !this.canReorder(column); if (needPreserveOrder) { this.columnsController.columnOption(column, "visible", true); return } if (void 0 === columnAfter) { const columnsCount = this.columnsController.columns.peek().length; this.columnsController.columnOption(column, "visible", true); this.columnsController.columnOption(column, "visibleIndex", columnsCount); return } this.columnsController.updateColumns((columns => { const newColumns = [...columns]; newColumns.forEach(((oldColumn, index) => { const updatedColumn = _extends({}, oldColumn); if (oldColumn.name === column.name) { updatedColumn.visibleIndex = columnAfter.visibleIndex; updatedColumn.visible = true } else if (oldColumn.visibleIndex >= columnAfter.visibleIndex) { updatedColumn.visibleIndex = oldColumn.visibleIndex + 1 } newColumns[index] = updatedColumn })); return newColumns })) }; this.onPlaceholderPrepared = e => { const $placeholderElement = (0, _renderer.default)(e.placeholderElement); const { column: column } = e.itemData; const canReorder = this.canReorder(column); $placeholderElement.toggleClass(CLASS_hidden, !canReorder) } } canReorder(column) { const allowColumnReordering = this.columnsController.allowColumnReordering.peek(); return allowColumnReordering && column.allowReordering } } exports.HeaderPanelController = HeaderPanelController; HeaderPanelController.dependencies = [_index2.ColumnsController, _index.ColumnChooserView] }, 84531: /*!*********************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/new/card_view/header_panel/header_panel.js ***! \*********************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.HeaderPanel = exports.CLASSES = void 0; var _inferno = __webpack_require__( /*! inferno */ 76231); var _message = (e = __webpack_require__( /*! ../../../../../localization/message */ 33881), e && e.__esModule ? e : { default: e }); var e; var _combine_classes = __webpack_require__( /*! ../../../../core/utils/combine_classes */ 46190); var _m_utils = __webpack_require__( /*! ../../../../filter_builder/m_utils */ 29498); var _scrollable = __webpack_require__( /*! ../../../../grids/new/grid_core/inferno_wrappers/scrollable */ 90882); var _index = __webpack_require__( /*! ../../../../grids/new/grid_core/keyboard_navigation/index */ 58529); var _utils = __webpack_require__( /*! ../../grid_core/filtering/header_filter/utils */ 1261); var _column_sortable = __webpack_require__( /*! ./column_sortable */ 85992); var _item = __webpack_require__( /*! ./item */ 50348); function _extends() { return _extends = Object.assign ? Object.assign.bind() : function(n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) { ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]) } } return n }, _extends.apply(null, arguments) } const CLASSES = exports.CLASSES = { link: "dx-link", headers: "dx-cardview-headers", content: "dx-cardview-headerpanel-content", contentHasHeaderItems: "dx-cardview-headerpanel-content--with-header-items", contentEmpty: "dx-cardview-headerpanel-content--empty", headerPanelTextEmpty: "dx-cardview-headerpanel-text-empty", headerItemContainer: "dx-cardview-header-item-container", sortable: "dx-cardview-sortable", sortablePlaceholder: "dx-cardview-header-item-sort-indicator" }; const ItemWithKbn = (0, _index.withKbnNavigationItem)((0, _index.withKeyDownHandler)(_item.Item)); const EmptyHeaderPanelText = props => { const text = _message.default.format("dxCardView-emptyHeaderPanelText"); const columnChooserText = _message.default.format("dxCardView-emptyHeaderPanelColumnChooserText"); const [leftPart, rightPart] = text.split("{0}"); return (0, _inferno.createVNode)(1, "span", CLASSES.headerPanelTextEmpty, [leftPart, (0, _inferno.createVNode)(1, "a", CLASSES.link, columnChooserText, 0, { onClick: props.openColumnChooser }), rightPart], 0, { role: "menuitem" }) }; class HeaderPanel extends _inferno.Component { render() { const HeaderItem = this.props.kbnEnabled ? ItemWithKbn : _item.Item; if (!this.props.visible) { return (0, _inferno.createFragment)() } const { sortableConfig: sortableConfig } = this.props; const hasHeaderItems = this.props.visibleColumns.length > 0; const contentClassNames = (0, _combine_classes.combineClasses)({ [CLASSES.content]: true, [CLASSES.contentHasHeaderItems]: hasHeaderItems, [CLASSES.contentEmpty]: !hasHeaderItems }); return (0, _inferno.createVNode)(1, "div", CLASSES.headers, (0, _inferno.normalizeProps)((0, _inferno.createComponentVNode)(2, _column_sortable.ColumnSortable, _extends({}, this.props.draggingOptions, { className: CLASSES.sortable, source: "header-panel-main", getColumnByIndex: index => this.props.visibleColumns[index], visibleColumns: this.props.visibleColumns, allowDragging: true, onColumnMove: sortableConfig.onColumnMove, columnDragTemplate: _item.Item, itemOrientation: "horizontal", filter: `.${CLASSES.headerItemContainer}`, isColumnDraggable: sortableConfig.isColumnDraggable, showDropzone: sortableConfig.showDropzone, placeholderClassName: CLASSES.sortablePlaceholder, onPlaceholderPrepared: sortableConfig.onPlaceholderPrepared, children: (0, _inferno.createComponentVNode)(2, _scrollable.Scrollable, { direction: "horizontal", showScrollbar: "never", useNative: false, scrollByContent: true, useKeyboard: false, children: (0, _inferno.createComponentVNode)(2, _index.KbnNavigationContainer, { enabled: this.props.kbnEnabled, navigationStrategy: this.props.navigationStrategy, children: (0, _inferno.createVNode)(1, "div", contentClassNames, [!hasHeaderItems && (0, _inferno.createComponentVNode)(2, EmptyHeaderPanelText, { openColumnChooser: this.props.openColumnChooser }), this.props.visibleColumns.map(((column, idx) => (0, _inferno.createVNode)(1, "div", CLASSES.headerItemContainer, (0, _inferno.createComponentVNode)(2, HeaderItem, { navigationIdx: idx, navigationStrategy: this.props.navigationStrategy, showSortIndexes: this.props.showSortIndexes, column: column, template: this.props.itemTemplate, cssClass: this.props.itemCssClass, hasFilters: this.itemHasFilters(column, this.props.filterSyncValue), keyDownConfig: { Enter: event => { this.props.onColumnSort(column, event) }, "Enter+ctrl": event => { this.props.onColumnSort(column, event) }, "Enter+shift": event => { this.props.onColumnSort(column, event) }, "ArrowDown+alt": (event, ref) => { var _this$props$onHeaderF, _this$props; null === (_this$props$onHeaderF = (_this$props = this.props).onHeaderFilterOpen) || void 0 === _this$props$onHeaderF || _this$props$onHeaderF.call(_this$props, ref.current, column, (() => { var _ref$current; return null === (_ref$current = ref.current) || void 0 === _ref$current ? void 0 : _ref$current.focus() })) } }, caughtEventPreventDefault: true, onSortClick: event => { this.props.onColumnSort(column, event) }, onFilterClick: element => { var _this$props$onHeaderF2, _this$props2; null === (_this$props$onHeaderF2 = (_this$props2 = this.props).onHeaderFilterOpen) || void 0 === _this$props$onHeaderF2 || _this$props$onHeaderF2.call(_this$props2, element, column) }, onContextMenu: (event, ref) => { this.props.showContextMenu(event, column, idx, (() => null === ref || void 0 === ref ? void 0 : ref.focus())) } }), 2)))], 0, { role: "menubar" }) }) }) }))), 2, { onContextMenu: this.props.showContextMenu }) } itemHasFilters(column, filterSyncValue) { const { filterValues: filterValues } = column; const columnId = (0, _utils.getColumnIdentifier)(column); const hasHeaderFilterValue = !!(null !== filterValues && void 0 !== filterValues && filterValues.length); const hasFilterSyncValue = (0, _m_utils.filterHasField)(filterSyncValue, columnId); return hasHeaderFilterValue || hasFilterSyncValue } } exports.HeaderPanel = HeaderPanel }, 6347: /*!**************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/new/card_view/header_panel/index.js ***! \**************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); var _exportNames = { View: true }; Object.defineProperty(exports, "View", { enumerable: true, get: function() { return _view.HeaderPanelView } }); var _options = __webpack_require__( /*! ./options */ 62233); Object.keys(_options).forEach((function(key) { if ("default" === key || "__esModule" === key) { return } if (Object.prototype.hasOwnProperty.call(_exportNames, key)) { return } if (key in exports && exports[key] === _options[key]) { return } Object.defineProperty(exports, key, { enumerable: true, get: function() { return _options[key] } }) })); var _view = __webpack_require__( /*! ./view */ 39706) }, 50348: /*!*************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/new/card_view/header_panel/item.js ***! \*************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.Item = exports.CLASSES = void 0; var _inferno = __webpack_require__( /*! inferno */ 76231); var _icon = __webpack_require__( /*! ../../grid_core/icon */ 93445); var _index = __webpack_require__( /*! ./a11y/index */ 76444); const CLASSES = exports.CLASSES = { item: "dx-cardview-header-item", button: "dx-cardview-header-item-button", sorting: { container: "dx-cardview-header-item-sorting", order: "dx-cardview-header-item-sorting-order" }, headerFilter: { icon: "dx-header-filter-icon", iconFilled: "dx-header-filter-icon--selected" } }; function SortIcon(props) { return (0, _inferno.createVNode)(1, "div", CLASSES.sorting.container, ["asc" === props.sortOrder && (0, _inferno.createComponentVNode)(2, _icon.Icon, { name: "arrowsortup" }), "desc" === props.sortOrder && (0, _inferno.createComponentVNode)(2, _icon.Icon, { name: "arrowsortdown" }), props.showSortIndex && (0, _inferno.createVNode)(1, "div", CLASSES.sorting.order, props.sortIndex, 0)], 0) } class Item extends _inferno.Component { constructor() { super(...arguments); this.onFilterClickHandler = event => { var _this$props$elementRe; event.stopPropagation(); if (null !== (_this$props$elementRe = this.props.elementRef) && void 0 !== _this$props$elementRe && _this$props$elementRe.current) { var _this$props$onFilterC, _this$props; null === (_this$props$onFilterC = (_this$props = this.props).onFilterClick) || void 0 === _this$props$onFilterC || _this$props$onFilterC.call(_this$props, this.props.elementRef.current) } }; this.onContextMenuHandler = event => { var _this$props$elementRe2; if (null !== (_this$props$elementRe2 = this.props.elementRef) && void 0 !== _this$props$elementRe2 && _this$props$elementRe2.current) { var _this$props$onContext, _this$props2; null === (_this$props$onContext = (_this$props2 = this.props).onContextMenu) || void 0 === _this$props$onContext || _this$props$onContext.call(_this$props2, event, this.props.elementRef.current) } } } render() { const { column: column } = this.props; const Template = column.headerItemTemplate ?? this.props.template; const cssClass = `${CLASSES.item} ${column.headerItemCssClass??""} ${this.props.cssClass??""}`; const headerFilterIconClass = [CLASSES.headerFilter.icon, this.props.hasFilters ? CLASSES.headerFilter.iconFilled : ""].join(" "); const icon = this.props.status && { forbid: (0, _inferno.createComponentVNode)(2, _icon.Icon, { name: "cursorprohibition" }), moving: (0, _inferno.createComponentVNode)(2, _icon.Icon, { name: "cursormove" }), none: void 0 } [this.props.status]; const showSortIcon = !this.props.isDragging && void 0 !== column.sortOrder; const showHeaderFilterIcon = !this.props.isDragging && (null === column || void 0 === column ? void 0 : column.allowHeaderFiltering); const ariaLabel = (0, _index.getHeaderItemA11yLabel)(column.caption, { hasHeaderFilterValue: this.props.hasFilters, sortOrder: column.sortOrder, sortIndex: column.sortIndex }); return (0, _inferno.createVNode)(1, "div", cssClass, [icon, Template && (0, _inferno.createComponentVNode)(2, Template, { column: this.props.column }), !Template && this.props.column.caption, showSortIcon && (0, _inferno.createComponentVNode)(2, SortIcon, { sortIndex: this.props.column.sortIndex + 1, sortOrder: this.props.column.sortOrder, showSortIndex: this.props.showSortIndexes ?? false }), showHeaderFilterIcon && (0, _inferno.createComponentVNode)(2, _icon.Icon, { name: "filter", className: headerFilterIconClass, onClick: this.onFilterClickHandler })], 0, { tabindex: this.props.tabIndex, role: this.props.isDragging ? void 0 : "menuitem", "aria-label": ariaLabel, onClick: this.props.onSortClick, onKeyDown: this.props.onKeyDown, onContextMenu: this.onContextMenuHandler }, null, this.props.elementRef) } } exports.Item = Item }, 62233: /*!****************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/new/card_view/header_panel/options.js ***! \****************************************************************************************************/ function(__unused_webpack_module, exports) { Object.defineProperty(exports, "__esModule", { value: true }); exports.defaultOptions = void 0; exports.defaultOptions = { headerPanel: { visible: true } } }, 39706: /*!*************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/new/card_view/header_panel/view.js ***! \*************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.HeaderPanelView = void 0; var _signalsCore = __webpack_require__( /*! @preact/signals-core */ 70037); var _columns_controller = __webpack_require__( /*! ../../../../grids/new/grid_core/columns_controller/columns_controller */ 88195); var _view = __webpack_require__( /*! ../../../../grids/new/grid_core/core/view */ 3455); var _index = __webpack_require__( /*! ../../../../grids/new/grid_core/keyboard_navigation/index */ 58529); var _index2 = __webpack_require__( /*! ../../grid_core/column_chooser/index */ 45415); var _filter_controller = __webpack_require__( /*! ../../grid_core/filtering/filter_controller */ 24628); var _view_controller = __webpack_require__( /*! ../../grid_core/filtering/header_filter/view_controller */ 58814); var _index3 = __webpack_require__( /*! ../../grid_core/sorting_controller/index */ 37386); var _index4 = __webpack_require__( /*! ../context_menu/index */ 6024); var _options_controller = __webpack_require__( /*! ../options_controller */ 42015); var _controller = __webpack_require__( /*! ./controller */ 10567); var _header_panel = __webpack_require__( /*! ./header_panel */ 84531); class HeaderPanelView extends _view.View { constructor(headerPanelController, contextMenuController, sortingController, columnsController, options, headerFilterViewController, keyboardNavigationController, columnChooserController, filterController, columnChooserView) { super(); this.headerPanelController = headerPanelController; this.contextMenuController = contextMenuController; this.sortingController = sortingController; this.columnsController = columnsController; this.options = options; this.headerFilterViewController = headerFilterViewController; this.keyboardNavigationController = keyboardNavigationController; this.columnChooserController = columnChooserController; this.filterController = filterController; this.columnChooserView = columnChooserView; this.component = _header_panel.HeaderPanel; this.navigationStrategy = new _index.NavigationStrategyHorizontalList; this.showDropzone = (0, _signalsCore.computed)((() => { var _this$columnChooserCo; const allowReordering = this.columnsController.allowColumnReordering.value; const column = null === (_this$columnChooserCo = this.columnChooserController.draggingItem.value) || void 0 === _this$columnChooserCo ? void 0 : _this$columnChooserCo.column; if (!column) { return false } const allColumnsHidden = 0 === this.columnsController.visibleColumns.value.length; const canReorder = allowReordering && column.allowReordering; return !canReorder || allColumnsHidden })) } getProps() { return (0, _signalsCore.computed)((() => ({ visibleColumns: this.columnsController.visibleColumns.value, kbnEnabled: this.keyboardNavigationController.enabled.value, navigationStrategy: this.navigationStrategy, showSortIndexes: this.sortingController.showSortIndexes.value, onColumnSort: this.onColumnSort.bind(this), itemTemplate: this.options.template("headerPanel.itemTemplate").value, onHeaderFilterOpen: this.onHeaderFilterOpen.bind(this), itemCssClass: this.options.oneWay("headerPanel.itemCssClass").value, visible: this.options.oneWay("headerPanel.visible").value, draggingOptions: this.options.oneWay("headerPanel.dragging").value, sortableConfig: { onColumnMove: this.headerPanelController.onColumnMove, showDropzone: this.showDropzone.value, isColumnDraggable: this.headerPanelController.isColumnDraggable, onPlaceholderPrepared: this.headerPanelController.onPlaceholderPrepared }, showContextMenu: this.showContextMenu.bind(this), openColumnChooser: () => { this.columnChooserView.show() }, filterSyncValue: this.filterController.filterSyncValue.value }))) } onColumnSort(column, event) { const mode = this.sortingController.mode.peek(); switch (mode) { case "none": return; case "single": this.sortingController.onSingleModeSortClick(column, event); return; case "multiple": this.sortingController.onMultipleModeSortClick(column, event); return; default: throw new Error("Unsupported sorting state") } } onHeaderFilterOpen(element, column, onFilterCloseCallback) { if (!element) { return } this.headerFilterViewController.openPopup(element, column, onFilterCloseCallback) } showContextMenu(event, column, columnIndex, onMenuCloseCallback) { this.contextMenuController.show(event, "headerPanel", { column: column, columnIndex: columnIndex }, onMenuCloseCallback) } } exports.HeaderPanelView = HeaderPanelView; HeaderPanelView.dependencies = [_controller.HeaderPanelController, _index4.ContextMenuController, _index3.SortingController, _columns_controller.ColumnsController, _options_controller.OptionsController, _view_controller.HeaderFilterViewController, _index.KeyboardNavigationController, _index2.ColumnChooserController, _filter_controller.FilterController, _index2.ColumnChooserView] }, 26893: /*!*****************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/new/card_view/main_view.js ***! \*****************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.MainView = void 0; var _inferno = __webpack_require__( /*! inferno */ 76231); var _signalsCore = __webpack_require__( /*! @preact/signals-core */ 70037); var _index = __webpack_require__( /*! ../../../grids/new/grid_core/column_chooser/index */ 45415); var _view = __webpack_require__( /*! ../../../grids/new/grid_core/core/view */ 3455); var _view2 = __webpack_require__( /*! ../../../grids/new/grid_core/filtering/filter_panel/view */ 29326); var _index2 = __webpack_require__( /*! ../../../grids/new/grid_core/filtering/header_filter/index */ 63108); var _index3 = __webpack_require__( /*! ../../../grids/new/grid_core/keyboard_navigation/index */ 58529); var _view3 = __webpack_require__( /*! ../../../grids/new/grid_core/pager/view */ 93825); var _view4 = __webpack_require__( /*! ../../../grids/new/grid_core/toolbar/view */ 5061); var _index4 = __webpack_require__( /*! ../grid_core/accessibility/index */ 8197); var _config_context = __webpack_require__( /*! ../grid_core/core/config_context */ 11024); var _view5 = __webpack_require__( /*! ../grid_core/editing/popup/view */ 32643); var _root_element_updater = __webpack_require__( /*! ../grid_core/inferno_wrappers/root_element_updater */ 16314); var _view6 = __webpack_require__( /*! ./content_view/view */ 96003); var _view7 = __webpack_require__( /*! ./context_menu/view */ 84103); var _view8 = __webpack_require__( /*! ./header_panel/view */ 39706); var _options_controller = __webpack_require__( /*! ./options_controller */ 42015); const CLASSES_cardView = "dx-cardview"; function MainViewComponent(_ref) { let { Toolbar: Toolbar, Content: Content, Pager: Pager, HeaderPanel: HeaderPanel, HeaderFilterPopup: HeaderFilterPopup, FilterPanel: FilterPanel, ColumnChooser: ColumnChooser, ContextMenu: ContextMenu, EditPopup: EditPopup, config: config, rootElementRef: rootElementRef, accessibilityDescription: accessibilityDescription, accessibilityStatus: accessibilityStatus, onKeyDown: onKeyDown } = _ref; return (0, _inferno.createFragment)([(0, _inferno.createComponentVNode)(2, _config_context.ConfigContext.Provider, { value: config, children: (0, _inferno.createComponentVNode)(2, _root_element_updater.RootElementUpdater, { rootElementRef: rootElementRef, className: CLASSES_cardView, children: (0, _inferno.createVNode)(1, "div", "dx-cardview-root-container", [(0, _inferno.createComponentVNode)(2, _index4.A11yStatusContainer, { statusText: accessibilityStatus }), (0, _inferno.createVNode)(1, "div", "dx-cardview-header-container", [(0, _inferno.createComponentVNode)(2, Toolbar), (0, _inferno.createComponentVNode)(2, HeaderPanel)], 4), (0, _inferno.createComponentVNode)(2, Content), (0, _inferno.createComponentVNode)(2, FilterPanel), (0, _inferno.createVNode)(1, "div", null, (0, _inferno.createComponentVNode)(2, Pager), 0), (0, _inferno.createComponentVNode)(2, HeaderFilterPopup), (0, _inferno.createComponentVNode)(2, EditPopup), (0, _inferno.createComponentVNode)(2, ColumnChooser), (0, _inferno.createComponentVNode)(2, ContextMenu)], 4, { role: "group", "aria-label": accessibilityDescription, onKeyDown: onKeyDown }) }) })], 4) } class MainView extends _view.View { constructor(content, pager, toolbar, headerPanel, headerFilterPopup, filterPanel, columnsChooser, editPopup, contextMenu, options, keyboardNavigation, accessibility) { super(); this.content = content; this.pager = pager; this.toolbar = toolbar; this.headerPanel = headerPanel; this.headerFilterPopup = headerFilterPopup; this.filterPanel = filterPanel; this.columnsChooser = columnsChooser; this.editPopup = editPopup; this.contextMenu = contextMenu; this.options = options; this.keyboardNavigation = keyboardNavigation; this.accessibility = accessibility; this.component = MainViewComponent; this.config = (0, _signalsCore.computed)((() => ({ rtlEnabled: this.options.oneWay("rtlEnabled").value, disabled: this.options.oneWay("disabled").value, templatesRenderAsynchronously: this.options.oneWay("templatesRenderAsynchronously").value }))) } getProps() { return (0, _signalsCore.computed)((() => ({ Toolbar: this.toolbar.asInferno(), Content: this.content.asInferno(), Pager: this.pager.asInferno(), HeaderPanel: this.headerPanel.asInferno(), HeaderFilterPopup: this.headerFilterPopup.asInferno(), FilterPanel: this.filterPanel.asInferno(), ColumnChooser: this.columnsChooser.asInferno(), EditPopup: this.editPopup.asInferno(), ContextMenu: this.contextMenu.asInferno(), config: this.config.value, rootElementRef: { current: this.root }, onKeyDown: event => { this.keyboardNavigation.onKeyDown(event) }, accessibilityDescription: this.accessibility.componentDescription.value, accessibilityStatus: this.accessibility.componentStatus.value }))) } } exports.MainView = MainView; MainView.dependencies = [_view6.ContentView, _view3.PagerView, _view4.ToolbarView, _view8.HeaderPanelView, _index2.HeaderFilterPopupView, _view2.FilterPanelView, _index.ColumnChooserView, _view5.EditPopupView, _view7.ContextMenuView, _options_controller.OptionsController, _index3.KeyboardNavigationController, _index4.AccessibilityController] }, 41932: /*!***************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/new/card_view/options.js ***! \***************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.defaultOptions = void 0; var GridCore = _interopRequireWildcard(__webpack_require__( /*! ../../../grids/new/grid_core/options */ 75932)); var ContentView = _interopRequireWildcard(__webpack_require__( /*! ./content_view/index */ 87996)); var HeaderPanel = _interopRequireWildcard(__webpack_require__( /*! ./header_panel/index */ 6347)); function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) { return null } var r = new WeakMap, t = new WeakMap; return (_getRequireWildcardCache = function(e) { return e ? t : r })(e) } function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) { return e } if (null === e || "object" != typeof e && "function" != typeof e) { return { default: e } } var t = _getRequireWildcardCache(r); if (t && t.has(e)) { return t.get(e) } var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) { if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u] } } return n.default = e, t && t.set(e, n), n } function _extends() { return _extends = Object.assign ? Object.assign.bind() : function(n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) { ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]) } } return n }, _extends.apply(null, arguments) } exports.defaultOptions = _extends({}, GridCore.defaultOptions, ContentView.defaultOptions, HeaderPanel.defaultOptions) }, 42015: /*!**************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/new/card_view/options_controller.js ***! \**************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.OptionsController = void 0; var _options_controller_base = __webpack_require__( /*! ../../../grids/new/grid_core/options_controller/options_controller_base */ 83273); class CardViewOptionsController extends _options_controller_base.OptionsController {} exports.OptionsController = CardViewOptionsController }, 67184: /*!**************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/new/card_view/widget.js ***! \**************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = exports.CardViewBase = exports.CardView = void 0; var _component_registrator = _interopRequireDefault(__webpack_require__( /*! ../../../../core/component_registrator */ 92848)); var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../../../core/renderer */ 64553)); var _extend = __webpack_require__( /*! ../../../../core/utils/extend */ 52576); var _main_view = __webpack_require__( /*! ../../../grids/new/grid_core/main_view */ 77565); var _options_controller = __webpack_require__( /*! ../../../grids/new/grid_core/options_controller/options_controller */ 76385); var _widget = __webpack_require__( /*! ../../../grids/new/grid_core/widget */ 58656); var ContentViewModule = _interopRequireWildcard(__webpack_require__( /*! ./content_view/index */ 87996)); var _controller = __webpack_require__( /*! ./context_menu/controller */ 51914); var _view = __webpack_require__( /*! ./context_menu/view */ 84103); var di = _interopRequireWildcard(__webpack_require__( /*! ./di */ 44067)); var _view2 = __webpack_require__( /*! ./header_panel/view */ 39706); var _main_view2 = __webpack_require__( /*! ./main_view */ 26893); var _options = __webpack_require__( /*! ./options */ 41932); var _options_controller2 = __webpack_require__( /*! ./options_controller */ 42015); function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) { return null } var r = new WeakMap, t = new WeakMap; return (_getRequireWildcardCache = function(e) { return e ? t : r })(e) } function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) { return e } if (null === e || "object" != typeof e && "function" != typeof e) { return { default: e } } var t = _getRequireWildcardCache(r); if (t && t.has(e)) { return t.get(e) } var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) { if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u] } } return n.default = e, t && t.set(e, n), n } function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } function _extends() { return _extends = Object.assign ? Object.assign.bind() : function(n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) { ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]) } } return n }, _extends.apply(null, arguments) } class CardViewBase extends _widget.GridCoreNew { _registerDIContext() { super._registerDIContext(); di.register(this.diContext); this.diContext.register(_main_view.MainView, _main_view2.MainView); const optionsController = new _options_controller2.OptionsController(this); this.diContext.registerInstance(_options_controller2.OptionsController, optionsController); this.diContext.registerInstance(_options_controller.OptionsController, optionsController) } _initMarkup() { super._initMarkup(); (0, _renderer.default)(this.$element()).addClass("dx-cardview") } _initDIContext() { super._initDIContext(); this.contentView = this.diContext.get(ContentViewModule.View); this.headerPanel = this.diContext.get(_view2.HeaderPanelView); this.contextMenu = this.diContext.get(_view.ContextMenuView); this.contextMenuController = this.diContext.get(_controller.ContextMenuController) } _getDefaultOptions() { return _extends({}, super._getDefaultOptions(), (0, _extend.extend)(true, {}, _options.defaultOptions)) } } exports.CardViewBase = CardViewBase; class CardView extends(ContentViewModule.PublicMethods(CardViewBase)) {} exports.CardView = CardView; (0, _component_registrator.default)("dxCardView", CardView); exports.default = CardView }, 95569: /*!********************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/new/grid_core/accessibility/controller.js ***! \********************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.AccessibilityController = void 0; var _message = (e = __webpack_require__( /*! ../../../../../localization/message */ 33881), e && e.__esModule ? e : { default: e }); var e; var _signalsCore = __webpack_require__( /*! @preact/signals-core */ 70037); var _columns_controller = __webpack_require__( /*! ../columns_controller/columns_controller */ 88195); var _index = __webpack_require__( /*! ../data_controller/index */ 61124); class AccessibilityController { constructor(columnsController, dataController) { this.columnsController = columnsController; this.dataController = dataController; this.firstRender = (0, _signalsCore.signal)(true); this.description = (0, _signalsCore.computed)((() => _message.default.format("dxCardView-ariaCardView", this.dataController.totalCount.value, this.columnsController.visibleColumns.value.length))); this.componentDescription = (0, _signalsCore.computed)((() => this.description.value)); this.componentStatus = (0, _signalsCore.computed)((() => { if (this.firstRender.value) { return "" } return this.componentDescription.value })); let firstRender = true; (0, _signalsCore.effect)((() => { this.componentDescription.value; if (!firstRender) { this.firstRender.value = false } firstRender = false })) } } exports.AccessibilityController = AccessibilityController; AccessibilityController.dependencies = [_columns_controller.ColumnsController, _index.DataController] }, 8197: /*!***************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/new/grid_core/accessibility/index.js ***! \***************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "A11yStatusContainer", { enumerable: true, get: function() { return _status.A11yStatusContainer } }); Object.defineProperty(exports, "AccessibilityController", { enumerable: true, get: function() { return _controller.AccessibilityController } }); var _controller = __webpack_require__( /*! ./controller */ 95569); var _status = __webpack_require__( /*! ./status */ 54052) }, 54052: /*!****************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/new/grid_core/accessibility/status.js ***! \****************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.A11yStatusContainer = void 0; var _inferno = __webpack_require__( /*! inferno */ 76231); var _const = __webpack_require__( /*! ../const */ 46793); function _extends() { return _extends = Object.assign ? Object.assign.bind() : function(n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) { ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]) } } return n }, _extends.apply(null, arguments) } const CLASSES = _extends({}, _const.CLASSES, { container: "dx-gridbase-a11y-status-container" }); class A11yStatusContainer extends _inferno.Component { render() { return (0, _inferno.createVNode)(1, "div", `${CLASSES.container} ${CLASSES.excludeFlexBox}`, this.props.statusText ?? "", 0, { role: "status" }) } } exports.A11yStatusContainer = A11yStatusContainer }, 94944: /*!***************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/new/grid_core/accessibility/utils.js ***! \***************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.getPosition = exports.getCardStateDescription = exports.getCardRoleDescription = exports.getCardDescriptiveLabel = void 0; var _message = (e = __webpack_require__( /*! ../../../../../localization/message */ 33881), e && e.__esModule ? e : { default: e }); var e; exports.getCardRoleDescription = isEditable => isEditable ? _message.default.format("dxCardView-ariaEditableCard") : _message.default.format("dxCardView-ariaCard"); const getPositionDescription = position => position ? _message.default.format("dxCardView-ariaCardPosition", position.rowIndex + 1, position.columnIndex + 1) : ""; exports.getCardStateDescription = (position, isSelectable, isSelected) => { const parts = [getPositionDescription(position)]; if (isSelectable) { parts.push(isSelected ? _message.default.format("dxCardView-ariaSelectedCardState") : _message.default.format("dxCardView-ariaNotSelectedCardState")) } return parts.join(", ") }; exports.getCardDescriptiveLabel = (hasCover, coverId, contentId) => { const ids = []; if (hasCover) { ids.push(coverId) } ids.push(contentId); return ids.join(" ") }; exports.getPosition = (idx, columnCount) => ({ rowIndex: Math.floor(idx / columnCount), columnIndex: idx % columnCount }) }, 6747: /*!*************************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/new/grid_core/column_chooser/column_chooser.js ***! \*************************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.ColumnChooser = exports.CLASS = void 0; var _inferno = __webpack_require__( /*! inferno */ 76231); var _message = (e = __webpack_require__( /*! ../../../../../localization/message */ 33881), e && e.__esModule ? e : { default: e }); var e; var _column_sortable = __webpack_require__( /*! ../../card_view/header_panel/column_sortable */ 85992); var _item = __webpack_require__( /*! ../../card_view/header_panel/item */ 50348); var _const = __webpack_require__( /*! ../const */ 46793); var _popup = __webpack_require__( /*! ../inferno_wrappers/popup */ 36525); var _tree_view = __webpack_require__( /*! ../inferno_wrappers/tree_view */ 47127); function _extends() { return _extends = Object.assign ? Object.assign.bind() : function(n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) { ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]) } } return n }, _extends.apply(null, arguments) } const CLASS = exports.CLASS = { excludeFlexBox: _const.CLASSES.excludeFlexBox, root: "column-chooser", toolbarBtn: "column-chooser-button", list: "column-chooser-list", plain: "column-chooser-plain", dragMode: "column-chooser-mode-drag", selectMode: "column-chooser-mode-select", treeviewItem: "dx-treeview-item", treeviewExpanderIcon: "dx-treeview-expander-icon-stub" }; class ColumnChooser extends _inferno.Component { constructor() { super(...arguments); this.onShowing = e => { const popup = e.component; if (void 0 === this.props.popupConfig.position) { popup.option("position", { my: "right top", at: "right bottom", of: ".dx-cardview-column-chooser-button", collision: "fit", offset: "-2 -2", boundaryOffset: "2 2" }) } this.setPopupAttributes(popup) }; this.getColumnByIndex = index => { const treeView = this.props.treeViewRef.current; const column = treeView.getNodes()[index].itemData.column; return column } } render() { const { visible: visible, popupConfig: popupConfig, popupRef: popupRef, sortableConfig: sortableConfig } = this.props; if (!visible) { return (0, _inferno.createFragment)() } const treeView = this.getTreeView(); return (0, _inferno.createVNode)(1, "div", CLASS.excludeFlexBox, (0, _inferno.createComponentVNode)(2, _popup.Popup, { componentRef: popupRef, visible: true, shading: false, dragEnabled: true, resizeEnabled: true, showCloseButton: true, _loopFocus: true, toolbarItems: popupConfig.toolbarItems, wrapperAttr: { class: this.getPopupWrapperClass() }, width: popupConfig.width, height: popupConfig.height, container: popupConfig.container, position: popupConfig.position, onHidden: popupConfig.onHidden, onShowing: this.onShowing, children: (0, _inferno.createComponentVNode)(2, _column_sortable.ColumnSortable, { height: "100%", source: "column-chooser", filter: `.${CLASS.treeviewItem}`, getColumnByIndex: this.getColumnByIndex, isColumnDraggable: sortableConfig.isColumnDraggable, visibleColumns: this.props.visibleColumns, allowDragging: !this.isSelectMode(), columnDragTemplate: _item.Item, onColumnMove: this.props.onColumnMove, onDragStart: sortableConfig.onDragStart, onDragEnd: sortableConfig.onDragEnd, onPlaceholderPrepared: sortableConfig.onPlaceholderPrepared, children: treeView }) }), 2) } isSelectMode() { return "select" === this.props.mode } addWidgetPrefix(cssClass) { return `dx-cardview-${cssClass}` } getPopupWrapperClass() { const modeSpecificClass = this.isSelectMode() ? CLASS.selectMode : CLASS.dragMode; return [this.addWidgetPrefix(CLASS.root), this.addWidgetPrefix(modeSpecificClass)].join(" ") } setPopupAttributes(popup) { popup.setAria({ label: _message.default.format("dxDataGrid-columnChooserTitle") }); popup.$content().addClass(this.addWidgetPrefix(CLASS.list)); popup.$content().toggleClass(this.addWidgetPrefix(CLASS.plain), !this.props.isBandColumnsUsed) } getTreeView() { const { treeViewRef: treeViewRef, treeViewConfig: treeViewConfig, treeViewSelectModeConfig: treeViewSelectModeConfig, treeViewDragAndDropModeConfig: treeViewDragAndDropModeConfig } = this.props; return (0, _inferno.normalizeProps)((0, _inferno.createComponentVNode)(2, _tree_view.TreeView, _extends({ componentRef: treeViewRef, dataStructure: "plain", activeStateEnabled: true, focusStateEnabled: true, hoverStateEnabled: true, rootValue: null, searchEditorOptions: treeViewConfig.searchEditorOptions, searchEnabled: treeViewConfig.searchEnabled, searchTimeout: treeViewConfig.searchTimeout, noDataText: treeViewConfig.noDataText, items: treeViewConfig.items }, this.isSelectMode() ? treeViewSelectModeConfig : treeViewDragAndDropModeConfig))) } } exports.ColumnChooser = ColumnChooser }, 87211: /*!*********************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/new/grid_core/column_chooser/controller.js ***! \*********************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.ColumnChooserController = void 0; var _renderer = (e = __webpack_require__( /*! ../../../../../core/renderer */ 64553), e && e.__esModule ? e : { default: e }); var e; var _signalsCore = __webpack_require__( /*! @preact/signals-core */ 70037); var _m_columns_controller_utils = __webpack_require__( /*! ../../../../grids/grid_core/columns_controller/m_columns_controller_utils */ 63904); var _columns_controller = __webpack_require__( /*! ../columns_controller/columns_controller */ 88195); var _utils = __webpack_require__( /*! ../columns_controller/utils */ 26054); var _options_controller = __webpack_require__( /*! ../options_controller/options_controller */ 76385); function _extends() { return _extends = Object.assign ? Object.assign.bind() : function(n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) { ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]) } } return n }, _extends.apply(null, arguments) } const CLASS_hidden = "dx-hidden"; class ColumnChooserController { constructor(columnsController, options) { this.columnsController = columnsController; this.options = options; this.draggingItem = (0, _signalsCore.signal)(null); this.onColumnMove = column => { this.columnsController.columnOption(column, "visible", false) }; this.onDragStart = e => { this.draggingItem.value = e.itemData }; this.onDragEnd = () => { this.draggingItem.value = null }; this.isColumnDraggable = column => column.allowHiding; this.onPlaceholderPrepared = e => { const $placeholderElement = (0, _renderer.default)(e.placeholderElement); $placeholderElement.addClass(CLASS_hidden) }; this.chooserColumns = (0, _signalsCore.computed)((() => { const sortOrder = this.options.oneWay("columnChooser.sortOrder").value; const mode = this.options.oneWay("columnChooser.mode").value; let chooserColumns = this.columnsController.columns.value; if ("dragAndDrop" === mode) { chooserColumns = chooserColumns.filter((column => !column.visible)) } chooserColumns = chooserColumns.filter((column => column.showInColumnChooser)); chooserColumns = (0, _m_columns_controller_utils.sortColumns)(chooserColumns, sortOrder); return chooserColumns })); this.items = (0, _signalsCore.computed)((() => this.chooserColumns.value.map(((column, index) => ({ id: index, columnName: column.name, selected: column.visible, text: column.caption, disabled: !column.allowHiding, column: column }))))) } onSelectionChanged(e) { const nodes = e.component.getNodes(); this.columnsController.updateColumns((columns => { for (const node of nodes) { var _node$itemData; const columnIndex = (0, _utils.getColumnIndexByName)(columns, null === (_node$itemData = node.itemData) || void 0 === _node$itemData ? void 0 : _node$itemData.columnName); const canHide = columns[columnIndex].allowHiding ?? true; const skip = !canHide && !node.selected; if (!skip) { columns[columnIndex] = _extends({}, columns[columnIndex], { visible: node.selected }) } } return [...columns] })) } } exports.ColumnChooserController = ColumnChooserController; ColumnChooserController.dependencies = [_columns_controller.ColumnsController, _options_controller.OptionsController] }, 45415: /*!****************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/new/grid_core/column_chooser/index.js ***! \****************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "ColumnChooserController", { enumerable: true, get: function() { return _controller.ColumnChooserController } }); Object.defineProperty(exports, "ColumnChooserView", { enumerable: true, get: function() { return _view.ColumnChooserView } }); Object.defineProperty(exports, "PublicMethods", { enumerable: true, get: function() { return _public_methods.PublicMethods } }); Object.defineProperty(exports, "defaultOptions", { enumerable: true, get: function() { return _options.defaultOptions } }); var _controller = __webpack_require__( /*! ./controller */ 87211); var _options = __webpack_require__( /*! ./options */ 66013); var _public_methods = __webpack_require__( /*! ./public_methods */ 47383); var _view = __webpack_require__( /*! ./view */ 52670) }, 66013: /*!******************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/new/grid_core/column_chooser/options.js ***! \******************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.defaultOptions = void 0; var _const = __webpack_require__( /*! ../../../grid_core/column_chooser/const */ 71263); exports.defaultOptions = _const.defaultOptions }, 47383: /*!*************************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/new/grid_core/column_chooser/public_methods.js ***! \*************************************************************************************************************/ function(__unused_webpack_module, exports) { Object.defineProperty(exports, "__esModule", { value: true }); exports.PublicMethods = function(GridCore) { return class extends GridCore { showColumnChooser() { this.columnChooserView.show() } hideColumnChooser() { this.columnChooserView.hide() } } } }, 52670: /*!***************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/new/grid_core/column_chooser/view.js ***! \***************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.ColumnChooserView = void 0; var _signalsCore = __webpack_require__( /*! @preact/signals-core */ 70037); var _inferno = __webpack_require__( /*! inferno */ 76231); var _index = __webpack_require__( /*! ../columns_controller/index */ 50875); var _view = __webpack_require__( /*! ../core/view */ 3455); var _options_controller = __webpack_require__( /*! ../options_controller/options_controller */ 76385); var _controller = __webpack_require__( /*! ../toolbar/controller */ 34272); var _common = __webpack_require__( /*! ../utils/common */ 31671); var _column_chooser = __webpack_require__( /*! ./column_chooser */ 6747); var _controller2 = __webpack_require__( /*! ./controller */ 87211); class ColumnChooserView extends _view.View { constructor(toolbarController, columnChooserController, columnsController, options) { super(); this.toolbarController = toolbarController; this.columnChooserController = columnChooserController; this.columnsController = columnsController; this.options = options; this.component = _column_chooser.ColumnChooser; this.popupVisible = (0, _signalsCore.signal)(false); this.popupRef = (0, _inferno.createRef)(); this.treeViewRef = (0, _inferno.createRef)(); this.toolbarButtonElement = void 0; this.selectModeConfig = (0, _signalsCore.computed)((() => ({ showCheckBoxesMode: this.options.oneWay("columnChooser.selection.allowSelectAll").value ? "selectAll" : "normal", selectByClick: this.options.oneWay("columnChooser.selection.selectByClick").value, onSelectionChanged: this.columnChooserController.onSelectionChanged.bind(this.columnChooserController) }))); this.dragAndDropModeConfig = (0, _signalsCore.computed)((() => ({ noDataText: this.options.oneWay("columnChooser.emptyPanelText").value, activeStateEnabled: false }))); this.popupToolbarItems = (0, _signalsCore.computed)((() => { const title = this.options.oneWay("columnChooser.title").value; const items = [{ text: title, toolbar: "top", location: "before" }]; return items })); this.mode = this.options.oneWay("columnChooser.mode"); this.dragModeOpened = (0, _signalsCore.computed)((() => this.popupVisible.value && "dragAndDrop" === this.mode.value)); this.toolbarController.addDefaultItem((0, _signalsCore.signal)({ name: "columnChooserButton", widget: "dxButton", options: { icon: "column-chooser", onContentReady: _ref => { let { element: element } = _ref; this.toolbarButtonElement = element }, onClick: () => { this.popupVisible.value = true }, elementAttr: { "aria-haspopup": "dialog", class: (0, _common.addWidgetPrefix)(_column_chooser.CLASS.toolbarBtn) } }, showText: "inMenu", location: "after", locateInMenu: "auto", visible: true }), this.options.oneWay("columnChooser.enabled")) } show() { this.popupVisible.value = true } hide() { var _this$popupRef$curren; null === (_this$popupRef$curren = this.popupRef.current) || void 0 === _this$popupRef$curren || _this$popupRef$curren.hide() } getProps() { return (0, _signalsCore.computed)((() => ({ popupRef: this.popupRef, treeViewRef: this.treeViewRef, visible: this.popupVisible.value, mode: this.mode.value, title: this.options.oneWay("columnChooser.title").value, chooserColumns: this.columnChooserController.chooserColumns.value, visibleColumns: this.columnsController.visibleColumns.value, isBandColumnsUsed: false, onColumnMove: this.columnChooserController.onColumnMove, popupConfig: { width: this.options.oneWay("columnChooser.width").value, height: this.options.oneWay("columnChooser.height").value, container: this.options.oneWay("columnChooser.container").value, position: this.options.oneWay("columnChooser.position").value, toolbarItems: this.popupToolbarItems.value, onHidden: () => { var _this$toolbarButtonEl; this.popupVisible.value = false; null === (_this$toolbarButtonEl = this.toolbarButtonElement) || void 0 === _this$toolbarButtonEl || _this$toolbarButtonEl.focus() } }, treeViewConfig: { searchEditorOptions: this.options.oneWay("columnChooser.search.editorOptions").value, searchEnabled: this.options.oneWay("columnChooser.search.enabled").value, searchTimeout: this.options.oneWay("columnChooser.search.timeout").value, items: this.columnChooserController.items.value }, treeViewSelectModeConfig: this.selectModeConfig.value, treeViewDragAndDropModeConfig: this.dragAndDropModeConfig.value, sortableConfig: { isColumnDraggable: this.columnChooserController.isColumnDraggable, onDragStart: this.columnChooserController.onDragStart, onDragEnd: this.columnChooserController.onDragEnd, onPlaceholderPrepared: this.columnChooserController.onPlaceholderPrepared } }))) } } exports.ColumnChooserView = ColumnChooserView; ColumnChooserView.dependencies = [_controller.ToolbarController, _controller2.ColumnChooserController, _index.ColumnsController, _options_controller.OptionsController] }, 88195: /*!*********************************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/new/grid_core/columns_controller/columns_controller.js ***! \*********************************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.ColumnsController = void 0; var _signalsCore = __webpack_require__( /*! @preact/signals-core */ 70037); var _utils = __webpack_require__( /*! ../../../../grids/new/grid_core/filtering/header_filter/utils */ 1261); var _options_controller = __webpack_require__( /*! ../options_controller/options_controller */ 76385); var _index = __webpack_require__( /*! ./columns_settings/index */ 31417); var _utils2 = __webpack_require__( /*! ./utils */ 26054); function _extends() { return _extends = Object.assign ? Object.assign.bind() : function(n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) { ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]) } } return n }, _extends.apply(null, arguments) } class ColumnsController { constructor(options) { this.options = options; this.columnsConfiguration = this.options.oneWayWithChanges("columns"); this.headerFilterConfiguration = this.options.oneWay("headerFilter"); this.columnsSettings = (0, _signalsCore.signal)([]); this.columnsConfigurationFromData = (0, _signalsCore.signal)(null); (0, _signalsCore.effect)((() => { var _this$columnsConfigur; const settings = this.columnsSettings.peek() ?? []; const { value: columnsConfigurationFromOptions, changes: changes } = this.columnsConfiguration.value; const newSettings = (0, _index.updateColumnSettings)(settings, changes); if (0 !== newSettings.length) { this.columnsSettings.value = newSettings; return } const columnsConfigurationFromData = null === (_this$columnsConfigur = this.columnsConfigurationFromData.value) || void 0 === _this$columnsConfigur ? void 0 : _this$columnsConfigur.dataFields; const columnsConfiguration = columnsConfigurationFromOptions ?? columnsConfigurationFromData ?? []; this.columnsSettings.value = (0, _utils2.preNormalizeColumns)(columnsConfiguration) })); this.columns = (0, _signalsCore.computed)((() => { var _this$columnsConfigur2; const columnsSettings = this.columnsSettings.value; const headerFilterRootOptions = this.headerFilterConfiguration.value; const columnsFromDataOptions = null === (_this$columnsConfigur2 = this.columnsConfigurationFromData.value) || void 0 === _this$columnsConfigur2 ? void 0 : _this$columnsConfigur2.columns; return (0, _utils2.normalizeColumns)(columnsSettings ?? [], (template => template ? this.options.normalizeTemplate(template) : void 0), columnsFromDataOptions).map((column => (0, _utils.mergeColumnHeaderFilterOptions)(column, headerFilterRootOptions))) })); this.filterableColumns = (0, _signalsCore.computed)((() => this.columns.value.filter((col => (0, _utils.isColumnFilterable)(col))))); this.visibleColumns = (0, _signalsCore.computed)((() => this.columns.value.filter((column => column.visible)).sort(((a, b) => a.visibleIndex - b.visibleIndex)).map(((column, index) => _extends({}, column, { headerPanelIndex: index }))))); this.nonVisibleColumns = (0, _signalsCore.computed)((() => this.columns.value.filter((column => !column.visible)))); this.allowColumnReordering = this.options.oneWay("allowColumnReordering") } addColumn(columnProps) { this.columnsSettings.value = (0, _utils2.preNormalizeColumns)([...this.columnsSettings.peek(), columnProps]) } deleteColumn(column) { this.columnsSettings.value = this.columnsSettings.peek().filter((c => c.name !== column.name)) } columnOption(_ref, option, value) { let { name: name } = _ref; const settings = this.columnsSettings.peek(); const columnIdx = (0, _utils2.getColumnIndexByName)(settings, name); this.columnsSettings.value = (0, _utils2.columnOptionUpdate)(settings, columnIdx, option, value) } updateColumns(func) { let newColumnSettings = func(this.columnsSettings.peek()); newColumnSettings = (0, _utils2.normalizeColumnsVisibleIndexes)(newColumnSettings); this.columnsSettings.value = newColumnSettings } setColumnOptionsFromDataItem(item) { if (this.columnsConfigurationFromData.value) { return } this.columnsConfigurationFromData.value = (0, _utils2.getColumnOptionsFromDataItem)(item) } resetColumnOptionsFromDataItem() { this.columnsConfigurationFromData.value = null } } exports.ColumnsController = ColumnsController; ColumnsController.dependencies = [_options_controller.OptionsController] }, 61704: /*!**************************************************************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/new/grid_core/columns_controller/columns_settings/extract_columns_options_change.js ***! \**************************************************************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.extractColumnsOptionsChange = void 0; var _data = __webpack_require__( /*! ../../../../../../core/utils/data */ 31e3); var _utils = __webpack_require__( /*! ./utils */ 77684); exports.extractColumnsOptionsChange = _ref => { let { fullName: fullName, value: value } = _ref; const updatePath = (0, _data.getPathParts)(fullName); const [rootUpdatePath] = updatePath; switch (true) { case "columns" !== rootUpdatePath: return null; case 1 === updatePath.length && Array.isArray(value): return { type: "allColumns", value: value ?? null }; case 2 === updatePath.length && (0, _utils.isAllowedColumnValue)(value) && (0, _utils.isCorrectColumnIdx)(updatePath[1]): return { type: "column", columnIdx: (0, _utils.getColumnIdxFromPath)(updatePath), value: value }; case updatePath.length > 2 && (0, _utils.isCorrectColumnIdx)(updatePath[1]): return { type: "columnOption", columnIdx: (0, _utils.getColumnIdxFromPath)(updatePath), optionPath: (0, _utils.getColumnOptionPathStr)(updatePath), value: value }; default: return null } } }, 31417: /*!*************************************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/new/grid_core/columns_controller/columns_settings/index.js ***! \*************************************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "updateColumnSettings", { enumerable: true, get: function() { return _strategy.updateColumnSettings } }); var _strategy = __webpack_require__( /*! ./strategy */ 25416) }, 25416: /*!****************************************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/new/grid_core/columns_controller/columns_settings/strategy.js ***! \****************************************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.updateColumnSettings = exports.updateColumnOption = exports.updateColumn = exports.updateAllColumns = void 0; var _utils = __webpack_require__( /*! ../utils */ 26054); var _extract_columns_options_change = __webpack_require__( /*! ./extract_columns_options_change */ 61704); const updateAllColumns = (settings, _ref) => { let { value: value } = _ref; return value ? (0, _utils.preNormalizeColumns)(value) : settings }; exports.updateAllColumns = updateAllColumns; const updateColumn = (settings, _ref2) => { let { columnIdx: columnIdx, value: value } = _ref2; const newSettings = [...settings]; newSettings[columnIdx] = value; return (0, _utils.preNormalizeColumns)(newSettings) }; exports.updateColumn = updateColumn; const updateColumnOption = (settings, _ref3) => { let { columnIdx: columnIdx, optionPath: optionPath, value: value } = _ref3; return (0, _utils.columnOptionUpdate)(settings, columnIdx, optionPath, value) }; exports.updateColumnOption = updateColumnOption; exports.updateColumnSettings = (settings, optionsChange) => { if (!optionsChange) { return settings } const columnsOptionsChange = (0, _extract_columns_options_change.extractColumnsOptionsChange)(optionsChange); switch (null === columnsOptionsChange || void 0 === columnsOptionsChange ? void 0 : columnsOptionsChange.type) { case "allColumns": return updateAllColumns(settings, columnsOptionsChange); case "column": return updateColumn(settings, columnsOptionsChange); case "columnOption": return updateColumnOption(settings, columnsOptionsChange); default: return settings } } }, 77684: /*!*************************************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/new/grid_core/columns_controller/columns_settings/utils.js ***! \*************************************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.isCorrectColumnIdx = exports.isAllowedColumnValue = exports.getColumnOptionPathStr = exports.getColumnIdxFromPath = void 0; var _type = __webpack_require__( /*! ../../../../../../core/utils/type */ 11528); exports.isAllowedColumnValue = value => (0, _type.isObject)(value) || "string" === typeof value; exports.isCorrectColumnIdx = pathIdx => !isNaN(+pathIdx) && null !== pathIdx; exports.getColumnIdxFromPath = path => +path[1]; exports.getColumnOptionPathStr = path => [...path].splice(2).join(".") }, 66551: /*!****************************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/new/grid_core/columns_controller/compatibility.js ***! \****************************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.CompatibilityColumnsController = void 0; var _columns_controller = __webpack_require__( /*! ./columns_controller */ 88195); var _utils = __webpack_require__( /*! ./utils */ 26054); class CompatibilityColumnsController { constructor(realColumnsController) { this.realColumnsController = realColumnsController } getColumns() { return this.realColumnsController.columns.peek() } getFilteringColumns() { return (0, _utils.addDataFieldToComputedColumns)(this.realColumnsController.filterableColumns.peek()) } } exports.CompatibilityColumnsController = CompatibilityColumnsController; CompatibilityColumnsController.dependencies = [_columns_controller.ColumnsController] }, 50875: /*!********************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/new/grid_core/columns_controller/index.js ***! \********************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "ColumnsController", { enumerable: true, get: function() { return _columns_controller.ColumnsController } }); Object.defineProperty(exports, "CompatibilityColumnsController", { enumerable: true, get: function() { return _compatibility.CompatibilityColumnsController } }); Object.defineProperty(exports, "PublicMethods", { enumerable: true, get: function() { return _public_methods.PublicMethods } }); Object.defineProperty(exports, "defaultOptions", { enumerable: true, get: function() { return _options.defaultOptions } }); var _columns_controller = __webpack_require__( /*! ./columns_controller */ 88195); var _compatibility = __webpack_require__( /*! ./compatibility */ 66551); var _options = __webpack_require__( /*! ./options */ 6057); var _public_methods = __webpack_require__( /*! ./public_methods */ 85003) }, 6057: /*!**********************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/new/grid_core/columns_controller/options.js ***! \**********************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.defaultOptions = exports.defaultColumnPropertiesByDataType = exports.defaultColumnProperties = void 0; var _message = _interopRequireDefault(__webpack_require__( /*! ../../../../../localization/message */ 33881)); var _filtering = _interopRequireDefault(__webpack_require__( /*! ../../../../../ui/shared/filtering */ 56417)); var _utils = __webpack_require__( /*! ../editing/utils */ 98140); var _index = __webpack_require__( /*! ../utils/parse_value/index */ 15238); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } exports.defaultColumnProperties = { dataType: "string", calculateFieldValue(data) { const value = data[this.dataField]; return (0, _index.parseValue)(this, value) ?? value }, calculateDisplayValue(data) { return this.calculateFieldValue(data) }, calculateFilterExpression: _filtering.default.defaultCalculateFilterExpression, defaultCalculateFilterExpression: _filtering.default.defaultCalculateFilterExpression, alignment: "left", visible: true, allowReordering: true, allowHiding: true, trueText: _message.default.format("dxDataGrid-trueText"), falseText: _message.default.format("dxDataGrid-falseText"), showInColumnChooser: true, validationRules: [], allowEditing: true, editorOptions: {}, formItem: {}, setFieldValue: _utils.defaultSetFieldValue, defaultSetFieldValue: _utils.defaultSetFieldValue }; exports.defaultColumnPropertiesByDataType = { boolean: { customizeText(_ref) { let { value: value } = _ref; return value ? this.trueText : this.falseText } }, string: {}, date: { format: "shortDate" }, datetime: { format: "shortDateShortTime" }, number: {}, object: {} }; exports.defaultOptions = { allowColumnReordering: false } }, 85003: /*!*****************************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/new/grid_core/columns_controller/public_methods.js ***! \*****************************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.PublicMethods = function(GridCore) { return class extends GridCore { getVisibleColumns() { return this.columnsController.visibleColumns.peek() } addColumn(column) { this.columnsController.addColumn(column) } getVisibleColumnIndex(columnNameOrIndex) { const column = (0, _utils.getColumnByIndexOrName)(this.columnsController.columns.peek(), columnNameOrIndex); return this.columnsController.visibleColumns.peek().findIndex((c => c.name === (null === column || void 0 === column ? void 0 : column.name))) } deleteColumn(columnNameOrIndex) { const column = (0, _utils.getColumnByIndexOrName)(this.columnsController.columns.peek(), columnNameOrIndex); if (!column) { return } this.columnsController.deleteColumn(column) } columnOption(columnNameOrIndex, option, value) { const column = (0, _utils.getColumnByIndexOrName)(this.columnsController.columns.peek(), columnNameOrIndex); if (!column) { return } if (1 === arguments.length) { return column } if (2 === arguments.length) { if ((0, _type.isObject)(option)) { Object.entries(option).forEach((_ref => { let [optionName, optionValue] = _ref; this.columnsController.columnOption(column, optionName, optionValue) })) } else { return column[option] } } if (3 === arguments.length) { this.columnsController.columnOption(column, option, value) } } } }; var _type = __webpack_require__( /*! ../../../../../core/utils/type */ 11528); var _utils = __webpack_require__( /*! ./utils */ 26054) }, 26054: /*!********************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/new/grid_core/columns_controller/utils.js ***! \********************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.addDataFieldToComputedColumns = function(columns) { return columns.map((column => { if (column.dataField) { return column } return _extends({}, column, { dataField: column.name }) })) }; exports.columnOptionUpdate = void 0; exports.getColumnByIndexOrName = function(columns, columnNameOrIndex) { const column = columns.find(((c, i) => { if ((0, _type.isString)(columnNameOrIndex)) { return c.name === columnNameOrIndex } return i === columnNameOrIndex })); return column }; exports.getColumnFormat = void 0; exports.getColumnIndexByName = function(columns, name) { return columns.findIndex((c => c.name === name)) }; exports.getValueDataType = exports.getColumnOptionsFromDataItem = void 0; exports.getVisibleIndexes = getVisibleIndexes; exports.normalizeColumn = normalizeColumn; exports.normalizeColumns = function(columns, templateNormalizationFunc, columnsFromData) { return columns.map((col => { const columnFromDataOptions = null === columnsFromData || void 0 === columnsFromData ? void 0 : columnsFromData[col.name]; return normalizeColumn(col, templateNormalizationFunc, columnFromDataOptions) })) }; exports.normalizeColumnsVisibleIndexes = normalizeColumnsVisibleIndexes; exports.normalizeStringColumn = function(column) { if ("string" === typeof column) { return { dataField: column } } return column }; exports.normalizeVisibleIndexes = normalizeVisibleIndexes; exports.preNormalizeColumns = function(columns) { const normalizedColumns = null === columns || void 0 === columns ? void 0 : columns.map((column => { if ("string" === typeof column) { return { dataField: column } } return column })).map(((column, index) => _extends({}, column, { name: column.name ?? column.dataField ?? `column-${index}` }))); const visibleIndexes = getVisibleIndexes(null === normalizedColumns || void 0 === normalizedColumns ? void 0 : normalizedColumns.map((c => c.visibleIndex))); null === normalizedColumns || void 0 === normalizedColumns || normalizedColumns.forEach(((_, i) => { normalizedColumns[i].visibleIndex = visibleIndexes[i] })); return normalizedColumns }; var _data = __webpack_require__( /*! ../../../../../core/utils/data */ 31e3); var _inflector = __webpack_require__( /*! ../../../../../core/utils/inflector */ 53124); var _type = __webpack_require__( /*! ../../../../../core/utils/type */ 11528); var _index = __webpack_require__( /*! ../../../../grids/new/grid_core/utils/tree/index */ 43614); var _options = __webpack_require__( /*! ./options */ 6057); function _extends() { return _extends = Object.assign ? Object.assign.bind() : function(n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) { ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]) } } return n }, _extends.apply(null, arguments) } function normalizeColumn(column, templateNormalizationFunc, columnFromDataOptions) { const dataType = column.dataType ?? (null === columnFromDataOptions || void 0 === columnFromDataOptions ? void 0 : columnFromDataOptions.dataType) ?? _options.defaultColumnProperties.dataType; const columnDataTypeDefaultOptions = _options.defaultColumnPropertiesByDataType[dataType]; const columnFormat = column.format ?? (null === columnDataTypeDefaultOptions || void 0 === columnDataTypeDefaultOptions ? void 0 : columnDataTypeDefaultOptions.format) ?? (null === columnFromDataOptions || void 0 === columnFromDataOptions ? void 0 : columnFromDataOptions.format); const caption = (0, _inflector.captionize)(column.name); const colWithDefaults = _extends({}, _options.defaultColumnProperties, columnDataTypeDefaultOptions, { caption: caption }, column); const normalizedColumn = _extends({}, colWithDefaults, { dataType: dataType }, !!columnFormat && { format: columnFormat }, { calculateDisplayValue: (0, _type.isString)(colWithDefaults.calculateDisplayValue) ? (0, _data.compileGetter)(colWithDefaults.calculateDisplayValue) : colWithDefaults.calculateDisplayValue, headerItemTemplate: null === templateNormalizationFunc || void 0 === templateNormalizationFunc ? void 0 : templateNormalizationFunc(colWithDefaults.headerItemTemplate), fieldTemplate: null === templateNormalizationFunc || void 0 === templateNormalizationFunc ? void 0 : templateNormalizationFunc(colWithDefaults.fieldTemplate), fieldCaptionTemplate: null === templateNormalizationFunc || void 0 === templateNormalizationFunc ? void 0 : templateNormalizationFunc(colWithDefaults.fieldCaptionTemplate), fieldValueTemplate: null === templateNormalizationFunc || void 0 === templateNormalizationFunc ? void 0 : templateNormalizationFunc(colWithDefaults.fieldValueTemplate), calculateCellValue: colWithDefaults.calculateFieldValue, allowFiltering: colWithDefaults.allowFiltering ?? !!colWithDefaults.dataField, allowHeaderFiltering: colWithDefaults.allowHeaderFiltering ?? colWithDefaults.allowFiltering ?? !!colWithDefaults.dataField, allowSearch: colWithDefaults.allowSearch ?? colWithDefaults.allowFiltering ?? !!colWithDefaults.dataField, allowSorting: colWithDefaults.allowSorting ?? !!colWithDefaults.dataField }); normalizedColumn.selector ?? (normalizedColumn.selector = data => normalizedColumn.calculateFieldValue(data)); return normalizedColumn } function getVisibleIndexes(indexes) { const newIndexes = [...indexes]; let minNonExistingIndex = 0; indexes.forEach(((visibleIndex, index) => { while (newIndexes.includes(minNonExistingIndex)) { minNonExistingIndex += 1 } newIndexes[index] = visibleIndex ?? minNonExistingIndex })); return newIndexes } function normalizeVisibleIndexes(indexes, forceIndex) { const indexMap = indexes.map(((visibleIndex, index) => [index, visibleIndex])); const sortedIndexMap = new Array(indexes.length); if ((0, _type.isDefined)(forceIndex)) { sortedIndexMap[indexes[forceIndex]] = forceIndex } let j = 0; indexMap.sort(((a, b) => a[1] - b[1])).forEach((_ref => { let [index] = _ref; if (index === forceIndex) { return } if ((0, _type.isDefined)(sortedIndexMap[j])) { j += 1 } sortedIndexMap[j] = index; j += 1 })); const returnIndexes = new Array(indexes.length); sortedIndexMap.forEach(((index, visibleIndex) => { returnIndexes[index] = visibleIndex })); return returnIndexes } function normalizeColumnsVisibleIndexes(columns, forceIndex) { const result = [...columns]; const visibleIndexes = normalizeVisibleIndexes(columns.map((c => c.visibleIndex)), forceIndex); visibleIndexes.forEach(((visibleIndex, i) => { result[i].visibleIndex = visibleIndex })); return result } const getValueDataType = value => { const dataType = (0, _type.type)(value); const isUnknownDataType = "string" !== dataType && "boolean" !== dataType && "number" !== dataType && "date" !== dataType && "object" !== dataType; return isUnknownDataType ? void 0 : dataType }; exports.getValueDataType = getValueDataType; const getColumnFormat = column => { if (column.format) { return column.format } if ("date" === column.dataType || "datetime" === column.dataType) { return "shortDate" } return }; exports.getColumnFormat = getColumnFormat; exports.getColumnOptionsFromDataItem = dataItem => { const dataFields = Object.keys(dataItem); return { dataFields: dataFields, columns: Object.entries(dataItem).reduce(((result, _ref2) => { let [key, value] = _ref2; const dataType = getValueDataType(value); const format = getColumnFormat({ dataType: dataType }); result[key] = { dataType: dataType, format: format }; return result }), {}) } }; exports.columnOptionUpdate = (settings, columnIdx, updatePath, value) => { const newSettings = [...settings]; const updatePathParts = (0, _data.getPathParts)(updatePath); const columnTreeNode = (0, _index.getTreeNodeByPath)(newSettings[columnIdx], updatePathParts); if (columnTreeNode === value) { return settings } newSettings[columnIdx] = (0, _index.setTreeNodeByPath)(settings[columnIdx], value, updatePathParts); return normalizeColumnsVisibleIndexes(newSettings, columnIdx) } }, 46793: /*!*************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/new/grid_core/const.js ***! \*************************************************************************************/ function(__unused_webpack_module, exports) { Object.defineProperty(exports, "__esModule", { value: true }); exports.CLASSES = void 0; exports.CLASSES = { excludeFlexBox: "dx-cardview-exclude-flexbox" } }, 44305: /*!*********************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/new/grid_core/content_view/content_view.js ***! \*********************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.ContentView = exports.CLASSES = void 0; var _inferno = __webpack_require__( /*! inferno */ 76231); var _m_resize_observer = __webpack_require__( /*! ../../../../core/m_resize_observer */ 57785); var _error_row = __webpack_require__( /*! ../../../../grids/new/grid_core/content_view/error_row */ 35085); var _no_data_text = __webpack_require__( /*! ../../../../grids/new/grid_core/content_view/no_data_text */ 36568); var _load_panel = __webpack_require__( /*! ../../../../grids/new/grid_core/inferno_wrappers/load_panel */ 57082); var _scrollable = __webpack_require__( /*! ../../../../grids/new/grid_core/inferno_wrappers/scrollable */ 90882); function _extends() { return _extends = Object.assign ? Object.assign.bind() : function(n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) { ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]) } } return n }, _extends.apply(null, arguments) } const CLASSES = exports.CLASSES = { contentView: "dx-gridcore-contentview" }; class ContentView extends _inferno.Component { constructor() { super(...arguments); this.scrollableRef = (0, _inferno.createRef)(); this.containerRef = (0, _inferno.createRef)(); this.resizeObserverTimeout = null } render() { return (0, _inferno.createVNode)(1, "div", CLASSES.contentView, [(0, _inferno.normalizeProps)((0, _inferno.createComponentVNode)(2, _load_panel.LoadPanel, _extends({}, this.props.loadPanelProps))), this.props.noDataTextProps.visible ? (0, _inferno.normalizeProps)((0, _inferno.createComponentVNode)(2, _no_data_text.NoDataText, _extends({}, this.props.noDataTextProps))) : (0, _inferno.normalizeProps)((0, _inferno.createComponentVNode)(2, _scrollable.Scrollable, _extends({ componentRef: this.props.scrollableRef }, this.props.scrollableProps, { children: this.props.children }), null, this.scrollableRef)), (0, _inferno.normalizeProps)((0, _inferno.createComponentVNode)(2, _error_row.ErrorRow, _extends({}, this.props.errorRowProps)))], 0, { oncontextmenu: this.props.showContextMenu }, null, this.containerRef) } updateSizesInfo() { if (this.scrollableRef.current) { var _this$props, _this$props$onViewpor; const clientHeight = this.scrollableRef.current.clientHeight(); null === (_this$props = this.props) || void 0 === _this$props || null === (_this$props$onViewpor = _this$props.onViewportHeightChange) || void 0 === _this$props$onViewpor || _this$props$onViewpor.call(_this$props, clientHeight) } } componentDidMount() { var _this$props$onRendere, _this$props3; this.updateSizesInfo(); _m_resize_observer.resizeObserverSingleton.observe(this.containerRef.current, (entry => { this.resizeObserverTimeout = setTimeout((() => { var _this$props$onWidthCh, _this$props2; this.resizeObserverTimeout = null; null === (_this$props$onWidthCh = (_this$props2 = this.props).onWidthChange) || void 0 === _this$props$onWidthCh || _this$props$onWidthCh.call(_this$props2, entry.contentRect.width) }), 0) })); null === (_this$props$onRendere = (_this$props3 = this.props).onRendered) || void 0 === _this$props$onRendere || _this$props$onRendere.call(_this$props3) } componentDidUpdate() { var _this$props$onRendere2, _this$props4; this.updateSizesInfo(); null === (_this$props$onRendere2 = (_this$props4 = this.props).onRendered) || void 0 === _this$props$onRendere2 || _this$props$onRendere2.call(_this$props4) } componentWillUnmount() { _m_resize_observer.resizeObserverSingleton.unobserve(this.containerRef.current); if (null !== this.resizeObserverTimeout) { clearTimeout(this.resizeObserverTimeout) } } } exports.ContentView = ContentView }, 35085: /*!******************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/new/grid_core/content_view/error_row.js ***! \******************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.ErrorRow = exports.CLASSES = void 0; var _inferno = __webpack_require__( /*! inferno */ 76231); var _index = __webpack_require__( /*! ../../../../core/r1/runtime/inferno/index */ 6257); var _toast = __webpack_require__( /*! ../../../../grids/new/grid_core/inferno_wrappers/toast */ 47836); var _utils = __webpack_require__( /*! ../inferno_wrappers/utils */ 72254); const CLASSES = exports.CLASSES = { errorRow: "dx-gridcore-error-row" }; class ErrorRow extends _index.BaseInfernoComponent { constructor() { super(...arguments); this.ref = (0, _inferno.createRef)(); this.toastRef = (0, _inferno.createRef)() } render() { const lastError = this.props.errors.at(-1); return (0, _inferno.createVNode)(1, "div", CLASSES.errorRow, this.props.enabled && lastError && (0, _inferno.createComponentVNode)(2, _toast.Toast, { componentRef: this.toastRef, visible: true, message: lastError.text, type: "error", position: { my: "bottom", at: "bottom", of: (0, _utils.wrapRef)(this.ref) } }, lastError.id), 0, null, null, this.ref) } } exports.ErrorRow = ErrorRow }, 71967: /*!**************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/new/grid_core/content_view/index.js ***! \**************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); var _exportNames = { View: true }; Object.defineProperty(exports, "View", { enumerable: true, get: function() { return _view.ContentView } }); var _options = __webpack_require__( /*! ./options */ 3538); Object.keys(_options).forEach((function(key) { if ("default" === key || "__esModule" === key) { return } if (Object.prototype.hasOwnProperty.call(_exportNames, key)) { return } if (key in exports && exports[key] === _options[key]) { return } Object.defineProperty(exports, key, { enumerable: true, get: function() { return _options[key] } }) })); var _view = __webpack_require__( /*! ./view */ 31123) }, 36568: /*!*********************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/new/grid_core/content_view/no_data_text.js ***! \*********************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.NoDataText = exports.CLASSES = void 0; var _inferno = __webpack_require__( /*! inferno */ 76231); var _icon = __webpack_require__( /*! ../icon */ 93445); const CLASSES = exports.CLASSES = { container: "dx-gridcore-nodata-container", element: "dx-gridcore-nodata-element", iconContainer: "dx-gridcore-nodata-icon-container", text: "dx-gridcore-nodata-text" }; class NoDataText extends _inferno.Component { render() { const Template = this.props.template; return (0, _inferno.createVNode)(1, "div", CLASSES.container, Template ? (0, _inferno.createComponentVNode)(2, Template, { text: this.props.text }) : (0, _inferno.createVNode)(1, "div", CLASSES.element, [(0, _inferno.createVNode)(1, "div", CLASSES.iconContainer, (0, _inferno.createComponentVNode)(2, _icon.Icon, { name: "cardcontent" }), 2), (0, _inferno.createVNode)(1, "div", CLASSES.text, this.props.text, 0)], 4), 0) } } exports.NoDataText = NoDataText }, 3538: /*!****************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/new/grid_core/content_view/options.js ***! \****************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.defaultOptions = void 0; var _message = (e = __webpack_require__( /*! ../../../../../localization/message */ 33881), e && e.__esModule ? e : { default: e }); var e; exports.defaultOptions = { errorRowEnabled: true, noDataText: _message.default.format("dxDataGrid-noDataText") } }, 19718: /*!***********************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/new/grid_core/content_view/public_methods.js ***! \***********************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.PublicMethods = function(GridCore) { return class extends GridCore { getScrollable() { return this.diContext.get(_view.ContentView).scrollableRef.current } beginCustomLoading(text) { const contentView = this.diContext.get(_view.ContentView); const dataController = this.diContext.get(_index.DataController); if (text) { contentView.loadingText.value = text } dataController.isLoading.value = true } endCustomLoading() { const dataController = this.diContext.get(_index.DataController); dataController.isLoading.value = false } } }; var _index = __webpack_require__( /*! ../../../../grids/new/grid_core/data_controller/index */ 61124); var _view = __webpack_require__( /*! ./view */ 31123) }, 31123: /*!*************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/new/grid_core/content_view/view.js ***! \*************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.ContentView = void 0; var _renderer = (e = __webpack_require__( /*! ../../../../../core/renderer */ 64553), e && e.__esModule ? e : { default: e }); var e; var _signalsCore = __webpack_require__( /*! @preact/signals-core */ 70037); var _columns_controller = __webpack_require__( /*! ../../../../grids/new/grid_core/columns_controller/columns_controller */ 88195); var _controller = __webpack_require__( /*! ../../../../grids/new/grid_core/context_menu/controller */ 7194); var _view = __webpack_require__( /*! ../../../../grids/new/grid_core/core/view */ 3455); var _index = __webpack_require__( /*! ../../../../grids/new/grid_core/data_controller/index */ 61124); var _error_controller = __webpack_require__( /*! ../../../../grids/new/grid_core/error_controller/error_controller */ 67921); var _index2 = __webpack_require__( /*! ../../../../grids/new/grid_core/keyboard_navigation/index */ 58529); var _index3 = __webpack_require__( /*! ../../../../grids/new/grid_core/search/index */ 61519); var _controller2 = __webpack_require__( /*! ../../../../grids/new/grid_core/selection/controller */ 13007); var _inferno = __webpack_require__( /*! inferno */ 76231); var _controller3 = __webpack_require__( /*! ../editing/controller */ 64629); var _items_controller = __webpack_require__( /*! ../items_controller/items_controller */ 58761); var _controller4 = __webpack_require__( /*! ../lifecycle/controller */ 59329); var _options_controller = __webpack_require__( /*! ../options_controller/options_controller */ 76385); function _extends() { return _extends = Object.assign ? Object.assign.bind() : function(n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) { ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]) } } return n }, _extends.apply(null, arguments) } class ContentView extends _view.View { constructor(dataController, options, errorController, columnsController, selectionController, itemsController, editingController, contextMenuController, searchUIController, keyboardNavigationController, lifecycle) { super(); this.dataController = dataController; this.options = options; this.errorController = errorController; this.columnsController = columnsController; this.selectionController = selectionController; this.itemsController = itemsController; this.editingController = editingController; this.contextMenuController = contextMenuController; this.searchUIController = searchUIController; this.keyboardNavigationController = keyboardNavigationController; this.lifecycle = lifecycle; this.isNoData = (0, _signalsCore.computed)((() => { const { isLoading: isLoading, items: items } = this.dataController; const isEmptyDataLoaded = !isLoading.value && 0 === items.value.length; const isNoVisibleColumns = 0 === this.columnsController.visibleColumns.value.length; return isEmptyDataLoaded || isNoVisibleColumns })); this.scrollableRef = (0, _inferno.createRef)(); this.loadingText = this.options.twoWay("loadPanel.message"); this.viewportHeight = (0, _signalsCore.signal)(0); this.scrollTop = (0, _signalsCore.signal)(0); this.width = (0, _signalsCore.signal)(0) } getBaseProps() { const loadPanelConfig = this.options.oneWay("loadPanel"); const noDataTextConfig = this.options.oneWay("noDataText"); const noDataTemplateConfig = this.options.template("noDataTemplate"); const errorRowEnabledConfig = this.options.oneWay("errorRowEnabled"); const scrollByContent = this.options.oneWay("scrolling.scrollByContent"); const scrollByThumb = this.options.oneWay("scrolling.scrollByThumb"); const showScrollbar = this.options.oneWay("scrolling.showScrollbar"); const useNativeConfig = this.options.oneWay("scrolling.useNative"); return { loadPanelProps: _extends({}, loadPanelConfig.value, { visible: this.dataController.isLoading.value }), noDataTextProps: { text: noDataTextConfig.value, template: noDataTemplateConfig.value, visible: this.isNoData.value }, errorRowProps: { enabled: errorRowEnabledConfig.value, errors: this.errorController.errors.value }, onWidthChange: width => { this.width.value = width }, onViewportHeightChange: height => { this.viewportHeight.value = height }, scrollableRef: this.scrollableRef, scrollableProps: { onScroll: this.onScroll.bind(this), direction: "both", scrollTop: this.scrollTop.value, scrollByContent: scrollByContent.value, scrollByThumb: scrollByThumb.value, showScrollbar: showScrollbar.value, useNative: "auto" === useNativeConfig.value ? void 0 : useNativeConfig.value, useKeyboard: false, onInitialized: _ref => { let { component: component } = _ref; const useKeyboardDisabled = false === component.option("useKeyboard"); const useNativeEnabled = true === component.option("useNative"); if (useKeyboardDisabled && useNativeEnabled) { (0, _renderer.default)(component.container()).attr("tabindex", -1) } }, onOptionChanged: _ref2 => { let { fullName: fullName, value: value, component: component } = _ref2; const useKeyboardDisabled = false === component.option("useKeyboard"); if (useKeyboardDisabled && "useNative" === fullName && true === value) { (0, _renderer.default)(component.container()).attr("tabindex", -1) } } }, showContextMenu: this.showContextMenu.bind(this), onRendered: () => { this.lifecycle.contentRendered.trigger() } } } showContextMenu(e) { this.contextMenuController.show(e, "content") } onScroll(e) { this.scrollTop.value = e.scrollOffset.top } } exports.ContentView = ContentView; ContentView.dependencies = [_index.DataController, _options_controller.OptionsController, _error_controller.ErrorController, _columns_controller.ColumnsController, _controller2.SelectionController, _items_controller.ItemsController, _controller3.EditingController, _controller.BaseContextMenuController, _index3.SearchUIController, _index2.KeyboardNavigationController, _controller4.LifeCycleController] }, 72241: /*!*********************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/new/grid_core/context_menu/context_menu.js ***! \*********************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.ContextMenu = function(props) { return (0, _inferno.createVNode)(1, "div", _const.CLASSES.excludeFlexBox, (0, _inferno.createComponentVNode)(2, _context_menu.ContextMenu, { showEvent: void 0, componentRef: props.componentRef, cssClass: props.cssClass, onInitialized: props.onInitialized, onPositioning: props.onPositioning, onItemClick: props.onItemClick }), 2) }; var _inferno = __webpack_require__( /*! inferno */ 76231); var _const = __webpack_require__( /*! ../const */ 46793); var _context_menu = __webpack_require__( /*! ../inferno_wrappers/context_menu */ 24672) }, 7194: /*!*******************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/new/grid_core/context_menu/controller.js ***! \*******************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.BaseContextMenuController = void 0; var _inferno = __webpack_require__( /*! inferno */ 76231); exports.BaseContextMenuController = class { constructor() { this.contextMenuRef = (0, _inferno.createRef)(); this.onPositioning = e => { e.position.of = this.lastEvent } } show(event, view, contextInfo, onMenuCloseCallback) { const contextMenu = this.contextMenuRef.current; const targetElement = event.target; if (event === this.lastEvent || !contextMenu || !targetElement) { return } this.lastEvent = event; const items = this.getItems(view, targetElement, contextInfo); if (!items) { return } event.stopPropagation(); event.preventDefault(); contextMenu.option("items", items); contextMenu.option("onHiding", (() => { null === onMenuCloseCallback || void 0 === onMenuCloseCallback || onMenuCloseCallback() })); contextMenu.show().catch(console.error) } } }, 74743: /*!*************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/new/grid_core/context_menu/view.js ***! \*************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.BaseContextMenuView = void 0; var _signalsCore = __webpack_require__( /*! @preact/signals-core */ 70037); var _view = __webpack_require__( /*! ../core/view */ 3455); var _context_menu = __webpack_require__( /*! ./context_menu */ 72241); const CLASS_contextMenu = "dx-context-menu"; class BaseContextMenuView extends _view.View { constructor(controller) { super(); this.controller = controller; this.component = _context_menu.ContextMenu } getProps() { return (0, _signalsCore.computed)((() => ({ componentRef: this.controller.contextMenuRef, cssClass: this.getWidgetContainerClass(), onInitialized: e => { var _e$component, _e$component2; null === (_e$component = e.component) || void 0 === _e$component || _e$component.setAria("role", "presentation"); null === (_e$component2 = e.component) || void 0 === _e$component2 || _e$component2.$element().addClass(CLASS_contextMenu) }, onItemClick: e => { var _e$itemData, _e$itemData$onItemCli; null === (_e$itemData = e.itemData) || void 0 === _e$itemData || null === (_e$itemData$onItemCli = _e$itemData.onItemClick) || void 0 === _e$itemData$onItemCli || _e$itemData$onItemCli.call(_e$itemData, e) }, onPositioning: this.controller.onPositioning }))) } getWidgetContainerClass() { return "dx-cardview-container" } } exports.BaseContextMenuView = BaseContextMenuView }, 11024: /*!***************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/new/grid_core/core/config_context.js ***! \***************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.ConfigContext = void 0; var _index = __webpack_require__( /*! ../../../../core/r1/runtime/inferno/index */ 6257); exports.ConfigContext = (0, _index.createContext)({ rtlEnabled: void 0, disabled: void 0, templatesRenderAsynchronously: void 0 }) }, 45632: /*!******************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/new/grid_core/core/events/decorators.js ***! \******************************************************************************************************/ function(__unused_webpack_module, exports) { Object.defineProperty(exports, "__esModule", { value: true }); exports.eventHandler = function(target, key, descriptor) { const originFn = descriptor.value; descriptor.value = function(event) { if (event.dxIgnore) { return } null === originFn || void 0 === originFn || originFn.call(this, event) } } }, 92940: /*!*************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/new/grid_core/core/events/index.js ***! \*************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "NativeEventListener", { enumerable: true, get: function() { return _native_event_listener.NativeEventListener } }); Object.defineProperty(exports, "eventHandler", { enumerable: true, get: function() { return _decorators.eventHandler } }); Object.defineProperty(exports, "eventUtils", { enumerable: true, get: function() { return _utils.eventUtils } }); var _decorators = __webpack_require__( /*! ./decorators */ 45632); var _native_event_listener = __webpack_require__( /*! ./native_event_listener */ 3225); var _utils = __webpack_require__( /*! ./utils */ 54885) }, 3225: /*!*****************************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/new/grid_core/core/events/native_event_listener.js ***! \*****************************************************************************************************************/ function(__unused_webpack_module, exports) { Object.defineProperty(exports, "__esModule", { value: true }); exports.NativeEventListener = void 0; exports.NativeEventListener = class { constructor() { this.unsubscribeArray = [] } add(elementRef, eventName, eventHandler) { var _elementRef$current; null === (_elementRef$current = elementRef.current) || void 0 === _elementRef$current || _elementRef$current.addEventListener(eventName, eventHandler); this.unsubscribeArray.push((() => { var _elementRef$current2; null === (_elementRef$current2 = elementRef.current) || void 0 === _elementRef$current2 || _elementRef$current2.removeEventListener(eventName, eventHandler) })); return this } unsubscribe() { this.unsubscribeArray.forEach((fn => fn())) } } }, 54885: /*!*************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/new/grid_core/core/events/utils.js ***! \*************************************************************************************************/ function(__unused_webpack_module, exports) { Object.defineProperty(exports, "__esModule", { value: true }); exports.eventUtils = void 0; exports.eventUtils = { markHandled: event => { event.dxHandled = true }, markIgnored: event => { event.dxIgnore = true } } }, 3455: /*!*****************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/new/grid_core/core/view.js ***! \*****************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.View = void 0; var _inferno = __webpack_require__( /*! inferno */ 76231); var _signalsCore = __webpack_require__( /*! @preact/signals-core */ 70037); var _m_inferno_renderer = __webpack_require__( /*! ../../../../core/m_inferno_renderer */ 21327); var _base_component = __webpack_require__( /*! ../../../../core/r1/runtime/inferno/base_component */ 5428); var _m_window = __webpack_require__( /*! ../../../../core/utils/m_window */ 14470); function _extends() { return _extends = Object.assign ? Object.assign.bind() : function(n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) { ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]) } } return n }, _extends.apply(null, arguments) } exports.View = class { constructor() { this.firstRender = true } render(root) { this.root = root; const ViewComponent = this.component; const props = this.getProps(); return (0, _signalsCore.effect)((() => { this.props = props.value; const content = (0, _inferno.normalizeProps)((0, _inferno.createComponentVNode)(2, ViewComponent, _extends({}, props.value))); _m_inferno_renderer.infernoRenderer.renderIntoContainer(content, root, !this.firstRender); this.firstRender = false })) } asInferno() { return this.inferno ?? (this.inferno = this._asInferno()) } _asInferno() { const view = this; return class extends _base_component.BaseInfernoComponent { constructor() { super(); const props = view.getProps(); this.unsubscribe = (0, _signalsCore.effect)((() => { view.props = props.value; this.state ?? (this.state = { props: props.value }); if (this.state.props !== props.value && (0, _m_window.hasWindow)()) { this.setState({ props: props.value }) } })) } componentWillUnmount() { this.unsubscribe() } render() { const ViewComponent = view.component; return (0, _inferno.normalizeProps)((0, _inferno.createComponentVNode)(2, ViewComponent, _extends({}, this.state.props))) } } } } }, 5860: /*!*************************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/new/grid_core/data_controller/compatibility.js ***! \*************************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.CompatibilityDataController = void 0; var _callbacks = (e = __webpack_require__( /*! ../../../../../core/utils/callbacks */ 84718), e && e.__esModule ? e : { default: e }); var e; var _signalsCore = __webpack_require__( /*! @preact/signals-core */ 70037); var _data_controller = __webpack_require__( /*! ./data_controller */ 22893); class CompatibilityDataController { constructor(realDataController) { this.realDataController = realDataController; this.dataSourceChanged = (0, _callbacks.default)(); (0, _signalsCore.effect)((() => { this.dataSourceChanged.fire(this.realDataController.dataSource.value) })) } dataSource() { return this.realDataController.dataSource.peek() } } exports.CompatibilityDataController = CompatibilityDataController; CompatibilityDataController.dependencies = [_data_controller.DataController] }, 22893: /*!***************************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/new/grid_core/data_controller/data_controller.js ***! \***************************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.DataController = void 0; var _array_store = _interopRequireDefault(__webpack_require__( /*! ../../../../../common/data/array_store */ 80556)); var _deferred = __webpack_require__( /*! ../../../../../core/utils/deferred */ 87739); var _type = __webpack_require__( /*! ../../../../../core/utils/type */ 11528); var _signalsCore = __webpack_require__( /*! @preact/signals-core */ 70037); var _m_common = __webpack_require__( /*! ../../../../core/utils/m_common */ 39315); var _promise = __webpack_require__( /*! ../../../../core/utils/promise */ 51413); var _m_utils = _interopRequireDefault(__webpack_require__( /*! ../../../grid_core/m_utils */ 53226)); var _columns_controller = __webpack_require__( /*! ../columns_controller/columns_controller */ 88195); var _error_controller = __webpack_require__( /*! ../error_controller/error_controller */ 67921); var _filter_controller = __webpack_require__( /*! ../filtering/filter_controller */ 24628); var _utils = __webpack_require__( /*! ../filtering/utils */ 18066); var _controller = __webpack_require__( /*! ../lifecycle/controller */ 59329); var _options_controller = __webpack_require__( /*! ../options_controller/options_controller */ 76385); var _index = __webpack_require__( /*! ../sorting_controller/index */ 37386); var _index2 = __webpack_require__( /*! ./store_load_adapter/index */ 84363); var _utils2 = __webpack_require__( /*! ./utils */ 99277); const _excluded = ["skip", "take"]; function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } function _extends() { return _extends = Object.assign ? Object.assign.bind() : function(n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) { ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]) } } return n }, _extends.apply(null, arguments) } class DataController { constructor(columnsController, options, sortingController, filterController, errorController, lifecycle) { this.columnsController = columnsController; this.options = options; this.sortingController = sortingController; this.filterController = filterController; this.errorController = errorController; this.lifecycle = lifecycle; this.pendingLocalOperations = {}; this.dataSourceConfiguration = this.options.oneWay("dataSource"); this.keyExpr = this.options.oneWay("keyExpr"); this.dataSource = (0, _signalsCore.computed)((() => (0, _utils2.normalizeDataSource)(this.dataSourceConfiguration.value, this.keyExpr.value))); this.previousDisplayFilter = void 0; this.cacheEnabled = this.options.oneWay("cacheEnabled"); this.pagingEnabled = this.options.twoWay("paging.enabled"); this.pageIndex = this.options.twoWay("paging.pageIndex"); this.pageSize = this.options.twoWay("paging.pageSize"); this.remoteOperations = this.options.oneWay("remoteOperations"); this.onDataErrorOccurred = this.options.action("onDataErrorOccurred"); this._items = (0, _signalsCore.signal)([]); this.items = this._items; this._totalCount = (0, _signalsCore.signal)(0); this.totalCount = this._totalCount; this.isLoading = (0, _signalsCore.signal)(false); this.pageCount = (0, _signalsCore.computed)((() => Math.ceil(this.totalCount.value / this.pageSize.value))); this.isLoaded = (0, _signalsCore.signal)(false); this.isReloading = (0, _signalsCore.signal)(false); this.normalizedRemoteOptions = (0, _signalsCore.computed)((() => { const store = this.dataSource.value.store(); return (0, _utils2.normalizeRemoteOptions)(this.remoteOperations.value, (0, _utils2.isLocalStore)(store), (0, _utils2.isCustomStore)(store)) })); this.normalizedLocalOperations = (0, _signalsCore.computed)((() => (0, _utils2.normalizeLocalOptions)(this.normalizedRemoteOptions.value))); this.normalizedDisplayFilter = (0, _signalsCore.computed)((() => (0, _utils.normalizeFilterWithSelectors)(this.filterController.displayFilter.value, this.columnsController.columns.value, !!this.normalizedRemoteOptions.value.filtering))); (0, _signalsCore.effect)((() => { if (this.dataSource.value) { this.columnsController.resetColumnOptionsFromDataItem() } })); (0, _signalsCore.effect)((() => { const dataSource = this.dataSource.value; const changedCallback = e => { this.isLoaded.value = true; this.onChanged(dataSource, e) }; const loadingChangedCallback = () => { this.isLoading.value = dataSource.isLoading(); this.isReloading.value = true }; const loadErrorCallback = error => { const callback = this.onDataErrorOccurred.peek(); callback({ error: error }); this.errorController.showError(error.message ?? error); changedCallback() }; const customizeStoreLoadOptionsCallback = e => { e.storeLoadOptions.filter = this.combineFilterWithDisplayFilter(e.storeLoadOptions.filter); const localOperations = this.normalizedLocalOperations.peek(); this.pendingLocalOperations[e.operationId] = (0, _utils2.getLocalLoadOptions)(e.storeLoadOptions, localOperations); e.storeLoadOptions = (0, _utils2.getStoreLoadOptions)(e.storeLoadOptions, localOperations) }; const dataLoadedCallback = e => { const { operationId: operationId } = e; const localLoadOptions = _extends({}, this.pendingLocalOperations[operationId]); const { skip: skip, take: take } = localLoadOptions; const hasLocalPaging = (0, _type.isDefined)(skip) && (0, _type.isDefined)(take); const localOptionsWithoutPaging = (loadOptions => { const rest = function(r, e) { if (null == r) { return {} } var t = {}; for (var n in r) { if ({}.hasOwnProperty.call(r, n)) { if (e.includes(n)) { continue } t[n] = r[n] } } return t }(loadOptions, _excluded); return rest })(localLoadOptions); new _array_store.default(e.data).load(localOptionsWithoutPaging).done((filteredData => { e.extra = (0, _type.isPlainObject)(e.extra) ? e.extra : {}; if (hasLocalPaging) { e.take = take; e.skip = skip; if (e.storeLoadOptions.requireTotalCount) { e.extra.totalCount = filteredData.length } new _array_store.default(e.data).load(localLoadOptions).done((newData => { e.data = newData })) } else { e.data = filteredData } })).fail((error => { e.data = (new _deferred.Deferred).reject(error) })); this.pendingLocalOperations[operationId] = void 0 }; if (dataSource.isLoaded()) { changedCallback() } dataSource.on("changed", changedCallback); dataSource.on("loadingChanged", loadingChangedCallback); dataSource.on("loadError", loadErrorCallback); dataSource.on("customizeStoreLoadOptions", customizeStoreLoadOptionsCallback); dataSource.on("customizeLoadResult", dataLoadedCallback); return () => { dataSource.off("changed", changedCallback); dataSource.off("loadingChanged", loadingChangedCallback); dataSource.off("loadError", loadErrorCallback); dataSource.off("customizeStoreLoadOptions", customizeStoreLoadOptionsCallback); dataSource.off("customizeLoadResult", dataLoadedCallback) } })); (0, _signalsCore.effect)((() => { this.normalizedRemoteOptions.value; if (this.dataSource.peek().isLoaded()) { this.dataSource.peek().load() } })); (0, _signalsCore.effect)((() => { const initialized = this.options.initialized.value; const dataSource = this.dataSource.value; const pageIndex = this.pageIndex.value; const pageSize = this.pageSize.value; const isLoaded = this.isLoaded.value; const displayFilter = this.filterController.displayFilter.value; const pagingEnabled = this.pagingEnabled.value; const sortParameters = this.sortingController.sortParameters.value; if (!initialized) { return } let someParamChanged = false; if (dataSource.pageIndex() !== pageIndex) { dataSource.pageIndex(pageIndex); someParamChanged || (someParamChanged = true) } if (dataSource.pageSize() !== pageSize) { const newPageIndex = isLoaded ? Math.max(Math.min(this.pageCount.peek() - 1, pageIndex), 0) : pageIndex; dataSource.pageSize(pageSize); dataSource.pageIndex(newPageIndex); someParamChanged || (someParamChanged = true) } if (!dataSource.requireTotalCount()) { dataSource.requireTotalCount(true); someParamChanged || (someParamChanged = true) } const filterChanged = !(0, _m_common.equalByValue)(this.previousDisplayFilter, displayFilter, { maxDepth: 6, strict: true }); if (filterChanged && isLoaded) { this.dataSource.peek().pageIndex(0); someParamChanged || (someParamChanged = true) } this.previousDisplayFilter = displayFilter; if (!(0, _m_common.equalByValue)(dataSource.paginate(), pagingEnabled)) { dataSource.paginate(pagingEnabled); someParamChanged || (someParamChanged = true) } if (sortParameters && !(0, _m_common.equalByValue)(dataSource.sort(), sortParameters)) { dataSource.sort(sortParameters); someParamChanged || (someParamChanged = true) } if (someParamChanged || !dataSource.isLoaded()) { dataSource.load() } })) } getCombinedFilter() { return this.combineFilterWithDisplayFilter(this.dataSource.peek().filter()) } combineFilterWithDisplayFilter(filter) { return _m_utils.default.combineFilters([filter, this.normalizedDisplayFilter.peek()]) } normalizePageIndex(dataSource) { const pageIndex = dataSource.pageIndex(); const totalCount = dataSource.totalCount(); const pageSize = dataSource.pageSize(); const pageCount = Math.ceil(totalCount / pageSize); if (totalCount > 0 && pageIndex >= pageCount) { dataSource.pageIndex(pageCount - 1); return "require-reload" } return "normalized" } onChanged(dataSource, e) { var _this$loadedPromise; const normalizePageIndexResult = this.normalizePageIndex(dataSource); if ("require-reload" === normalizePageIndexResult) { dataSource.load(); return } let items = dataSource.items(); if (null !== e && void 0 !== e && e.changes) { items = this._items.peek(); items = (0, _utils2.updateItemsImmutable)(items, e.changes, dataSource.store()) } const firstItem = items[0]; this.columnsController.setColumnOptionsFromDataItem(firstItem ?? {}); this._items.value = items; this.pageIndex.value = dataSource.pageIndex(); this.pageSize.value = dataSource.pageSize(); this._totalCount.value = dataSource.totalCount(); Promise.resolve().then((() => { this.isReloading.value = false })); null === (_this$loadedPromise = this.loadedPromise) || void 0 === _this$loadedPromise || _this$loadedPromise.resolve(); this.loadedPromise = void 0; this.lifecycle.contentRendered.schedule((() => { this.lifecycle.fireContentReady() })) } getDataKey(data) { return this.dataSource.peek().store().keyOf(data) } waitLoaded() { if (!this.dataSource.peek().isLoading()) { return Promise.resolve() } if (!this.loadedPromise) { this.loadedPromise = (0, _promise.createPromise)() } return this.loadedPromise.promise } getStoreLoadAdapter() { return new _index2.StoreLoadAdapter(this.dataSource, this.normalizedLocalOperations, (data => new _array_store.default(data))) } async update(key, data) { await this.dataSource.peek().store().update(key, data) } async insert(data) { await this.dataSource.peek().store().insert(data) } async remove(key) { await this.dataSource.peek().store().remove(key) } async reload() { await this.dataSource.peek().load() } increasePageIndex() { const currentPageIdx = this.pageIndex.peek(); const totalCount = this.totalCount.peek(); const pageSize = this.pageSize.peek(); const nextPageIdx = currentPageIdx + 1; const maxPageIdx = Math.ceil(totalCount / pageSize) - 1; if (nextPageIdx > maxPageIdx) { return } this.pageIndex.value = nextPageIdx } decreasePageIndex() { const currentPageIdx = this.pageIndex.peek(); const nextPageIdx = currentPageIdx - 1; if (nextPageIdx < 0) { return } this.pageIndex.value = nextPageIdx } } exports.DataController = DataController; DataController.dependencies = [_columns_controller.ColumnsController, _options_controller.OptionsController, _index.SortingController, _filter_controller.FilterController, _error_controller.ErrorController, _controller.LifeCycleController] }, 90780: /*!**************************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/new/grid_core/data_controller/deferred_cache.js ***! \**************************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.deferredCache = void 0; var _common = __webpack_require__( /*! ../../../../../core/utils/common */ 17781); var _deferred = __webpack_require__( /*! ../../../../../core/utils/deferred */ 87739); exports.deferredCache = actionFn => { let lastArgs = null; let cachedResult = null; return function() { const hasPreviousCall = null !== lastArgs && null !== cachedResult; for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { args[_key] = arguments[_key] } const isArgsSame = hasPreviousCall ? (0, _common.equalByValue)(lastArgs, args) : false; if (hasPreviousCall && isArgsSame) { return (new _deferred.Deferred).resolve(cachedResult) } lastArgs = args; return actionFn(...args).then((result => { cachedResult = result; return result })) } } }, 61124: /*!*****************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/new/grid_core/data_controller/index.js ***! \*****************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "CompatibilityDataController", { enumerable: true, get: function() { return _compatibility.CompatibilityDataController } }); Object.defineProperty(exports, "DataController", { enumerable: true, get: function() { return _data_controller.DataController } }); Object.defineProperty(exports, "PublicMethods", { enumerable: true, get: function() { return _public_methods.PublicMethods } }); Object.defineProperty(exports, "defaultOptions", { enumerable: true, get: function() { return _options.defaultOptions } }); var _compatibility = __webpack_require__( /*! ./compatibility */ 5860); var _data_controller = __webpack_require__( /*! ./data_controller */ 22893); var _options = __webpack_require__( /*! ./options */ 29594); var _public_methods = __webpack_require__( /*! ./public_methods */ 79614) }, 29594: /*!*******************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/new/grid_core/data_controller/options.js ***! \*******************************************************************************************************/ function(__unused_webpack_module, exports) { Object.defineProperty(exports, "__esModule", { value: true }); exports.defaultOptions = void 0; exports.defaultOptions = { paging: { enabled: true, pageSize: 6, pageIndex: 0 }, remoteOperations: "auto", cacheEnabled: true } }, 79614: /*!**************************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/new/grid_core/data_controller/public_methods.js ***! \**************************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.PublicMethods = function(GridCore) { return class extends GridCore { getDataSource() { return this.dataController.dataSource.peek() } byKey(key) { const items = this.getDataSource().items(); const store = this.getDataSource().store(); const keyExpr = store.key(); const foundItem = items.find((item => (0, _m_utils.keysEqual)(keyExpr, key, this.keyOf(item)))); if (foundItem) { return Promise.resolve(foundItem) } return store.byKey(key) } getCombinedFilter() { return this.dataController.getCombinedFilter() } keyOf(obj) { return this.dataController.getDataKey(obj) } pageCount() { return this.dataController.pageCount.peek() } pageSize(value) { if (void 0 === value) { return this.dataController.pageSize.peek() } this.dataController.pageSize.value = value } pageIndex(newIndex) { if (void 0 === newIndex) { return this.dataController.pageIndex.peek() } this.dataController.pageIndex.value = newIndex; return this.dataController.waitLoaded() } totalCount() { return this.dataController.totalCount.peek() } } }; var _m_utils = __webpack_require__( /*! ../../../../data/m_utils */ 30912) }, 84363: /*!************************************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/new/grid_core/data_controller/store_load_adapter/index.js ***! \************************************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "StoreLoadAdapter", { enumerable: true, get: function() { return _store_load_adapter.StoreLoadAdapter } }); var _store_load_adapter = __webpack_require__( /*! ./store_load_adapter */ 53961) }, 53961: /*!*************************************************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/new/grid_core/data_controller/store_load_adapter/store_load_adapter.js ***! \*************************************************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.StoreLoadAdapter = void 0; var _deferred = __webpack_require__( /*! ../../../../../../core/utils/deferred */ 87739); var _deferred_cache = __webpack_require__( /*! ../deferred_cache */ 90780); var _utils = __webpack_require__( /*! ../utils */ 99277); exports.StoreLoadAdapter = class { constructor(dataSourceReactive, localLoadOptionsReactive, localStoreFabric) { this.dataSourceReactive = dataSourceReactive; this.localLoadOptionsReactive = localLoadOptionsReactive; this.localStoreFabric = localStoreFabric; this.loadFromStore = (0, _deferred_cache.deferredCache)((loadOptions => { const dataSource = this.dataSourceReactive.peek(); return dataSource.store().load(loadOptions) })) } load() { let loadOptions = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {}; const result = (0, _deferred.Deferred)(); const { localOptions: localOptions, remoteOptions: remoteOptions } = this.getLoadOptions(loadOptions); this.loadFromStore(remoteOptions).done((loadedData => { const localStore = this.localStoreFabric(loadedData); localStore.load(localOptions).done((processedData => { result.resolve(processedData) })).fail(result.reject) })).fail(result.reject); return result } getLocalLoadOperations() { return this.localLoadOptionsReactive.peek() } getLoadOptions(loadOptions) { const localLoadOptions = this.localLoadOptionsReactive.peek(); const localOptions = (0, _utils.getLocalLoadOptions)(loadOptions, localLoadOptions); const remoteOptions = (0, _utils.getStoreLoadOptions)(loadOptions, localLoadOptions); return { localOptions: localOptions, remoteOptions: remoteOptions } } } }, 99277: /*!*****************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/new/grid_core/data_controller/utils.js ***! \*****************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.getLocalLoadOptions = function(originOptions, localOperations) { const localLoadOptions = { langParams: originOptions.langParams }; if (localOperations.sorting) { localLoadOptions.sort = originOptions.sort } if (localOperations.filtering) { localLoadOptions.filter = originOptions.filter } if (localOperations.paging) { localLoadOptions.skip = originOptions.skip; localLoadOptions.take = originOptions.take } if (localOperations.summary) { localLoadOptions.summary = originOptions.summary } if (localOperations.grouping) { localLoadOptions.group = originOptions.group } return localLoadOptions }; exports.getStoreLoadOptions = function(originOptions, localOperations) { const storeLoadOptions = _extends({}, originOptions); if (localOperations.sorting) { delete storeLoadOptions.sort } if (localOperations.filtering) { delete storeLoadOptions.filter } if (localOperations.paging) { delete storeLoadOptions.skip; delete storeLoadOptions.take } if (localOperations.summary) { delete storeLoadOptions.summary } if (localOperations.grouping) { delete storeLoadOptions.group } return storeLoadOptions }; exports.isCustomStore = function(store) { return store instanceof _data.CustomStore }; exports.isLocalStore = function(store) { return store instanceof _data.ArrayStore }; exports.normalizeDataSource = function(dataSourceLike, keyExpr) { if (dataSourceLike instanceof _data_source.default) { return dataSourceLike } if (Array.isArray(dataSourceLike)) { dataSourceLike = { store: { type: "array", data: dataSourceLike, key: keyExpr } } } return new _data_source.default((0, _utils.normalizeDataSourceOptions)(dataSourceLike, void 0)) }; exports.normalizeLocalOptions = function(normalizedRemoteOperations) { return { filtering: !normalizedRemoteOperations.filtering, sorting: !normalizedRemoteOperations.sorting, paging: !normalizedRemoteOperations.paging, grouping: !normalizedRemoteOperations.grouping } }; exports.normalizeRemoteOptions = function(remoteOperations, localStore, customStore) { const allOperationsEnabled = { filtering: true, sorting: true, paging: true, grouping: true }; const allOperationDisabled = { filtering: false, sorting: false, paging: false, grouping: false }; switch (true) { case "auto" === remoteOperations: return localStore || customStore ? allOperationDisabled : allOperationsEnabled; case false === remoteOperations: return allOperationDisabled; case true === remoteOperations: return allOperationsEnabled; default: return remoteOperations } }; exports.updateItemsImmutable = function(data, changes, keyInfo) { return (0, _m_array_utils.applyBatch)({ keyInfo: keyInfo, data: data, changes: changes, immutable: true }) }; var _data = __webpack_require__( /*! ../../../../../common/data */ 11036); var _data_source = (e = __webpack_require__( /*! ../../../../../data/data_source */ 47283), e && e.__esModule ? e : { default: e }); var e; var _utils = __webpack_require__( /*! ../../../../../data/data_source/utils */ 15125); var _m_array_utils = __webpack_require__( /*! ../../../../data/m_array_utils */ 3198); function _extends() { return _extends = Object.assign ? Object.assign.bind() : function(n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) { ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]) } } return n }, _extends.apply(null, arguments) } }, 3955: /*!**********************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/new/grid_core/di.js ***! \**********************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.register = function(diContext) { diContext.register(DataControllerModule.DataController); diContext.register(DataControllerModule.CompatibilityDataController); diContext.register(_items_controller.ItemsController); diContext.register(ColumnsControllerModule.ColumnsController); diContext.register(SelectionControllerModule.Controller); diContext.register(ColumnsControllerModule.CompatibilityColumnsController); diContext.register(SortingControllerModule.SortingController); diContext.register(_controller4.ToolbarController); diContext.register(_view4.ToolbarView); diContext.register(_view2.PagerView); diContext.register(_controller3.SearchController); diContext.register(_view3.SearchView); diContext.register(ColumnChooserModule.ColumnChooserController); diContext.register(ColumnChooserModule.ColumnChooserView); diContext.register(FilterControllerModule.FilterController); diContext.register(FilterControllerModule.FilterPanelView); diContext.register(_index6.HeaderFilterController); diContext.register(_index6.HeaderFilterPopupView); diContext.register(FilterSyncModule.FilterSyncController); diContext.register(FilterSyncModule.CompatibilityFilterSyncController); diContext.register(_index6.CompatibilityHeaderFilterController); diContext.register(_error_controller.ErrorController); diContext.register(_controller2.EditingController); diContext.register(_confirm_controller.ConfirmController); diContext.register(_view.EditPopupView); diContext.register(_index.SearchUIController); diContext.register(_view3.SearchView); diContext.register(_view_controller.HeaderFilterViewController); diContext.register(_index8.KeyboardNavigationController); diContext.register(_controller.AccessibilityController); diContext.register(_index10.OptionsValidationController); diContext.register(Lifecycle.Controller) }; var _index = __webpack_require__( /*! ../../../grids/new/grid_core/search/index */ 61519); var _controller = __webpack_require__( /*! ./accessibility/controller */ 95569); var ColumnChooserModule = _interopRequireWildcard(__webpack_require__( /*! ./column_chooser/index */ 45415)); var ColumnsControllerModule = _interopRequireWildcard(__webpack_require__( /*! ./columns_controller/index */ 50875)); var DataControllerModule = _interopRequireWildcard(__webpack_require__( /*! ./data_controller/index */ 61124)); var _confirm_controller = __webpack_require__( /*! ./editing/confirm_controller */ 17720); var _controller2 = __webpack_require__( /*! ./editing/controller */ 64629); var _view = __webpack_require__( /*! ./editing/popup/view */ 32643); var _error_controller = __webpack_require__( /*! ./error_controller/error_controller */ 67921); var FilterSyncModule = _interopRequireWildcard(__webpack_require__( /*! ./filtering/filter_sync/index */ 69900)); var _index6 = __webpack_require__( /*! ./filtering/header_filter/index */ 63108); var _view_controller = __webpack_require__( /*! ./filtering/header_filter/view_controller */ 58814); var FilterControllerModule = _interopRequireWildcard(__webpack_require__( /*! ./filtering/index */ 92743)); var _items_controller = __webpack_require__( /*! ./items_controller/items_controller */ 58761); var _index8 = __webpack_require__( /*! ./keyboard_navigation/index */ 58529); var Lifecycle = _interopRequireWildcard(__webpack_require__( /*! ./lifecycle/index */ 29589)); var _index10 = __webpack_require__( /*! ./options_validation/index */ 8927); var _view2 = __webpack_require__( /*! ./pager/view */ 93825); var _controller3 = __webpack_require__( /*! ./search/controller */ 28355); var _view3 = __webpack_require__( /*! ./search/view */ 29366); var SelectionControllerModule = _interopRequireWildcard(__webpack_require__( /*! ./selection/index */ 99779)); var SortingControllerModule = _interopRequireWildcard(__webpack_require__( /*! ./sorting_controller/index */ 37386)); var _controller4 = __webpack_require__( /*! ./toolbar/controller */ 34272); var _view4 = __webpack_require__( /*! ./toolbar/view */ 5061); function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) { return null } var r = new WeakMap, t = new WeakMap; return (_getRequireWildcardCache = function(e) { return e ? t : r })(e) } function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) { return e } if (null === e || "object" != typeof e && "function" != typeof e) { return { default: e } } var t = _getRequireWildcardCache(r); if (t && t.has(e)) { return t.get(e) } var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) { if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u] } } return n.default = e, t && t.set(e, n), n } }, 17720: /*!**********************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/new/grid_core/editing/confirm_controller.js ***! \**********************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.ConfirmController = void 0; var _dialog = __webpack_require__( /*! ../../../../../ui/dialog */ 35757); class ConfirmController { confirm(message, title, showTitle) { return (0, _dialog.confirm)(message, title, showTitle) } } exports.ConfirmController = ConfirmController; ConfirmController.dependencies = [] }, 64629: /*!**************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/new/grid_core/editing/controller.js ***! \**************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.EditingController = void 0; var _data = __webpack_require__( /*! ../../../../../common/data */ 11036); var _type = __webpack_require__( /*! ../../../../../core/utils/type */ 11528); var _signalsCore = __webpack_require__( /*! @preact/signals-core */ 70037); var _m_editing_utils = __webpack_require__( /*! ../../../../grids/grid_core/editing/m_editing_utils */ 1414); var _index = __webpack_require__( /*! ../../../../grids/new/grid_core/options_validation/index */ 8927); var _columns_controller = __webpack_require__( /*! ../columns_controller/columns_controller */ 88195); var _data_controller = __webpack_require__( /*! ../data_controller/data_controller */ 22893); var _items_controller = __webpack_require__( /*! ../items_controller/items_controller */ 58761); var _index2 = __webpack_require__( /*! ../keyboard_navigation/index */ 58529); var _options_controller = __webpack_require__( /*! ../options_controller/options_controller */ 76385); var _confirm_controller = __webpack_require__( /*! ./confirm_controller */ 17720); function _extends() { return _extends = Object.assign ? Object.assign.bind() : function(n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) { ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]) } } return n }, _extends.apply(null, arguments) } class EditingController { constructor(options, itemsController, columnController, dataController, kbn, optionsValidationController, confirmController) { this.options = options; this.itemsController = itemsController; this.columnController = columnController; this.dataController = dataController; this.kbn = kbn; this.optionsValidationController = optionsValidationController; this.confirmController = confirmController; this.changes = this.options.twoWay("editing.changes"); this.editCardKey = this.options.twoWay("editing.editCardKey"); this.allowDeleting = this.options.twoWay("editing.allowDeleting"); this.allowUpdating = this.options.twoWay("editing.allowUpdating"); this.allowAdding = this.options.twoWay("editing.allowAdding"); this.needConfirmDelete = this.options.oneWay("editing.confirmDelete"); this.texts = this.options.oneWay("editing.texts"); this.onEditCanceling = this.options.action("onEditCanceling"); this.onEditCanceled = this.options.action("onEditCanceled"); this.onEditingStart = this.options.action("onEditingStart"); this.onInitNewCard = this.options.action("onInitNewCard"); this.onCardInserted = this.options.action("onCardInserted"); this.onCardInserting = this.options.action("onCardInserting"); this.onCardUpdated = this.options.action("onCardUpdated"); this.onCardUpdating = this.options.action("onCardUpdating"); this.onCardRemoved = this.options.action("onCardRemoved"); this.onCardRemoving = this.options.action("onCardRemoving"); this.onSaving = this.options.action("onSaving"); this.onSaved = this.options.action("onSaved"); this.editingCard = (0, _signalsCore.computed)((() => { const editCardKey = this.editCardKey.value; const items = this.itemsController.items.value; const changes = this.changes.value; if (!(0, _type.isDefined)(editCardKey)) { return null } const oldItem = this.itemsController.findItemByKey(items, editCardKey); if (!oldItem) { return null } const insertChange = changes.find((change => change.key === editCardKey && "insert" === change.type)); const oldData = (null === insertChange || void 0 === insertChange ? void 0 : insertChange.data) ?? oldItem.data; const newData = (0, _data.applyChanges)([oldData], changes, { keyExpr: this.dataController.dataSource.peek().key(), immutable: true })[0]; const newItem = this.itemsController.createCardInfo(newData, this.columnController.columns.peek(), oldItem.index, void 0, oldItem.key); return newItem })) } provideValidateMethod(validateMethod) { this.validateMethod = validateMethod } editCard(key) { this.optionsValidationController.validateKeyExpr(); const eventArgs = { cancel: false, key: key, data: this.itemsController.getCardByKey(key).data }; this.onEditingStart.peek()(eventArgs); if (!eventArgs.cancel) { this.editCardKey.value = key } } async validate() { var _this$validateMethod; return (null === (_this$validateMethod = this.validateMethod) || void 0 === _this$validateMethod ? void 0 : _this$validateMethod.call(this)) ?? true } async addCard() { this.optionsValidationController.validateKeyExpr(); const eventArgs = { promise: void 0, data: {} }; this.onInitNewCard.peek()(eventArgs); await eventArgs.promise; const newItemKey = this.dataController.getDataKey(eventArgs.data) ?? (0, _m_editing_utils.generateNewRowTempKey)(); this.itemsController.additionalItems.value = [...this.itemsController.additionalItems.peek(), this.itemsController.createCardInfo(eventArgs.data, this.columnController.columns.peek(), -1, [], newItemKey, false)]; this.changes.value = [...this.changes.peek(), { type: "insert", key: newItemKey, data: {} }]; this.editCardKey.value = newItemKey } async confirmDelete() { if (!this.needConfirmDelete.peek()) { return Promise.resolve(true) } const { confirmDeleteMessage: confirmDeleteMessage, confirmDeleteTitle: confirmDeleteTitle } = this.texts.peek(); const showDialogTitle = (0, _type.isDefined)(confirmDeleteTitle) && confirmDeleteTitle.length > 0; const result = await this.confirmController.confirm(confirmDeleteMessage ?? "", confirmDeleteTitle ?? "", showDialogTitle); return result } async deleteCard(key) { this.optionsValidationController.validateKeyExpr(); const confirmStatus = await this.confirmDelete(); if (!confirmStatus) { this.kbn.returnFocus(); return } this.changes.value = [...this.changes.peek(), { type: "remove", key: key }]; await this.save(); this.kbn.returnFocus() } clear() { this.changes.value = []; this.editCardKey.value = null; this.itemsController.additionalItems.value = [] } async flushChanges() { await this.processChanges(this.changes.peek()); this.clear() } cancel() { const changes = this.changes.peek(); const eventArgs = { changes: changes, cancel: false }; this.onEditCanceling.peek()(eventArgs); if (eventArgs.cancel) { return false } this.clear(); this.onEditCanceled.peek()({ changes: changes }); return true } async save() { const validationSuccessful = await this.validate(); if (!validationSuccessful) { return } const changes = this.changes.peek(); const eventArgs = { promise: void 0, cancel: false, changes: changes }; this.onSaving.peek()(eventArgs); await eventArgs.promise; if (eventArgs.cancel) { return } await this.flushChanges(); this.onSaved.peek()({ changes: changes }) } async processChanges(changes) { const promises = []; for (const change of changes) { switch (change.type) { case "update": { const updatingArgs = { oldData: this.itemsController.getCardByKey(change.key).data, newData: change.data, cancel: false, key: change.key }; this.onCardUpdating.peek()(updatingArgs); if (await updatingArgs.cancel) { break } promises.push(this.dataController.update(change.key, change.data)); this.onCardUpdated.peek()({ data: change.data, key: change.key }); break } case "remove": { const { data: data } = this.itemsController.findItemByKey(this.itemsController.items.peek(), change.key); const removingArgs = { cancel: false, data: data, key: change.key }; this.onCardRemoving.peek()(removingArgs); if (await removingArgs.cancel) { break } promises.push(this.dataController.remove(change.key)); this.onCardRemoved.peek()({ data: data, key: change.key }); break } case "insert": { const insertingArgs = { cancel: false, data: change.data }; this.onCardInserting.peek()(insertingArgs); if (await insertingArgs.cancel) { break } promises.push(this.dataController.insert(change.data)); this.onCardInserted.peek()({ data: change.data }); break } } } await Promise.all(promises); await this.dataController.reload() } addChange(key, newData) { const existingChange = this.changes.peek().find((change => change.key === key && ["insert", "update"].includes(change.type))); const newChange = existingChange ? _extends({}, existingChange, { data: _extends({}, existingChange.data, newData) }) : { key: key, type: "update", data: newData }; this.changes.value = [...this.changes.peek().filter((change => change !== existingChange)), newChange] } } exports.EditingController = EditingController; EditingController.dependencies = [_options_controller.OptionsController, _items_controller.ItemsController, _columns_controller.ColumnsController, _data_controller.DataController, _index2.KeyboardNavigationController, _index.OptionsValidationController, _confirm_controller.ConfirmController] }, 68222: /*!*********************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/new/grid_core/editing/index.js ***! \*********************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "Controller", { enumerable: true, get: function() { return _controller.EditingController } }); Object.defineProperty(exports, "PublicMethods", { enumerable: true, get: function() { return _public_methods.PublicMethods } }); Object.defineProperty(exports, "defaultOptions", { enumerable: true, get: function() { return _options.defaultOptions } }); var _controller = __webpack_require__( /*! ./controller */ 64629); var _options = __webpack_require__( /*! ./options */ 7563); var _public_methods = __webpack_require__( /*! ./public_methods */ 18933) }, 7563: /*!***********************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/new/grid_core/editing/options.js ***! \***********************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.defaultOptions = void 0; var _message = (e = __webpack_require__( /*! ../../../../../localization/message */ 33881), e && e.__esModule ? e : { default: e }); var e; exports.defaultOptions = { editing: { changes: [], allowAdding: false, allowDeleting: false, allowUpdating: false, confirmDelete: true, form: {}, popup: {}, texts: { confirmDeleteMessage: _message.default.format("dxDataGrid-editingConfirmDeleteMessage"), confirmDeleteTitle: "", deleteCard: _message.default.format("dxDataGrid-editingDeleteRow"), editCard: _message.default.format("dxDataGrid-editingEditRow"), saveCard: _message.default.format("dxDataGrid-editingSaveRowChanges"), addCard: _message.default.format("dxDataGrid-editingAddRow"), cancel: _message.default.format("dxDataGrid-editingCancelRowChanges") } } } }, 27821: /*!*****************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/new/grid_core/editing/popup/buttons.js ***! \*****************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.getCancelButtonConfig = function(props) { const config = { toolbar: "bottom", location: "after", widget: "dxButton", options: { text: props.text, onClick: props.onCancel } }; if ((0, _themes.isFluent)((0, _themes.current)())) { config.options.stylingMode = "outlined" } return config }; exports.getSaveButtonConfig = function(props) { const config = { toolbar: "bottom", location: "after", widget: "dxButton", options: { text: props.text, onClick: props.onSave } }; if ((0, _themes.isFluent)((0, _themes.current)())) { config.options.stylingMode = "contained"; config.options.type = "default" } return config }; var _themes = __webpack_require__( /*! ../../../../../../ui/themes */ 52071) }, 93739: /*!*******************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/new/grid_core/editing/popup/component.js ***! \*******************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.EditPopup = void 0; var _inferno = __webpack_require__( /*! inferno */ 76231); var _const = __webpack_require__( /*! ../../const */ 46793); var _form = __webpack_require__( /*! ../../inferno_wrappers/form */ 34553); var _popup = __webpack_require__( /*! ../../inferno_wrappers/popup */ 36525); var _buttons = __webpack_require__( /*! ./buttons */ 27821); function _extends() { return _extends = Object.assign ? Object.assign.bind() : function(n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) { ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]) } } return n }, _extends.apply(null, arguments) } class EditPopup extends _inferno.Component { render() { if (!this.props.visible) { this.props.formRef.current = null; return (0, _inferno.createFragment)() } const toolbarItems = [(0, _buttons.getSaveButtonConfig)({ onSave: this.props.onSave, text: this.props.texts.saveCard }), (0, _buttons.getCancelButtonConfig)({ onCancel: this.props.onCancel, text: this.props.texts.cancel })]; return (0, _inferno.createVNode)(1, "div", _const.CLASSES.excludeFlexBox, (0, _inferno.normalizeProps)((0, _inferno.createComponentVNode)(2, _popup.Popup, _extends({ visible: true, toolbarItems: toolbarItems, onHidden: this.props.onHide, showTitle: false }, this.props.popupProps, { children: (0, _inferno.normalizeProps)((0, _inferno.createComponentVNode)(2, _form.Form, _extends({ componentRef: this.props.formRef, colCount: 2, labelLocation: "top", customizeItem: this.props.customizeItem, items: this.props.items }, this.props.formProps))) }))), 2) } } exports.EditPopup = EditPopup }, 32643: /*!**************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/new/grid_core/editing/popup/view.js ***! \**************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.EditPopupView = void 0; var _renderer = (e = __webpack_require__( /*! ../../../../../../core/renderer */ 64553), e && e.__esModule ? e : { default: e }); var e; var _signalsCore = __webpack_require__( /*! @preact/signals-core */ 70037); var _m_extend = __webpack_require__( /*! ../../../../../core/utils/m_extend */ 96298); var _m_editing_utils = __webpack_require__( /*! ../../../../../grids/grid_core/editing/m_editing_utils */ 1414); var _inferno = __webpack_require__( /*! inferno */ 76231); var _columns_controller = __webpack_require__( /*! ../../columns_controller/columns_controller */ 88195); var _view = __webpack_require__( /*! ../../core/view */ 3455); var _items_controller = __webpack_require__( /*! ../../items_controller/items_controller */ 58761); var _index = __webpack_require__( /*! ../../keyboard_navigation/index */ 58529); var _options_controller = __webpack_require__( /*! ../../options_controller/options_controller */ 76385); var _controller = __webpack_require__( /*! ../../toolbar/controller */ 34272); var _controller2 = __webpack_require__( /*! ../controller */ 64629); var _utils = __webpack_require__( /*! ../utils */ 98140); var _component = __webpack_require__( /*! ./component */ 93739); function _extends() { return _extends = Object.assign ? Object.assign.bind() : function(n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) { ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]) } } return n }, _extends.apply(null, arguments) } const EDITOR_TYPES_BY_DATA_TYPE = { string: "dxTextBox", number: "dxNumberBox", boolean: "dxCheckBox", object: "dxTextBox", date: "dxDateBox", datetime: "dxDateBox" }; class EditPopupView extends _view.View { constructor(options, columnsController, itemsController, editingController, toolbar, kbn) { super(); this.options = options; this.columnsController = columnsController; this.itemsController = itemsController; this.editingController = editingController; this.toolbar = toolbar; this.kbn = kbn; this.promises = new _utils.PendingPromises; this.formRef = (0, _inferno.createRef)(); this.component = _component.EditPopup; this.items = (0, _signalsCore.computed)((() => { const userItems = this.options.oneWay("editing.form.items").value; if (userItems) { return userItems } return this.columnsController.columns.value.map((column => ({ column: column, name: column.name, dataField: column.dataField }))) })); this.customEditorItems = (0, _signalsCore.computed)((() => { const items = this.items.value; const result = []; (0, _m_editing_utils.forEachFormItems)(items, (item => { const itemId = (null === item || void 0 === item ? void 0 : item.name) || (null === item || void 0 === item ? void 0 : item.dataField); if (itemId && !!item.editorType) { result.push(itemId) } })); return result })); this.visible = (0, _signalsCore.computed)((() => !!this.editingController.editingCard.value)); this.customizeItems = item => { var _simpleFormItem$edito, _editingCard$fields$f; const editingCard = this.editingController.editingCard.peek(); const columns = this.columnsController.columns.peek(); const customEditorItems = this.customEditorItems.peek(); if (!editingCard) { return } if ("simple" !== item.itemType) { return } const simpleFormItem = item; const itemId = simpleFormItem.name ?? simpleFormItem.dataField; const column = simpleFormItem.column ?? columns.find((c => c.name === itemId)) ?? columns.find((c => c.dataField === itemId)); if (!column) { return } simpleFormItem.column = column; if (itemId && !customEditorItems.includes(itemId)) { simpleFormItem.editorType = EDITOR_TYPES_BY_DATA_TYPE[column.dataType] }(0, _m_extend.extend)(simpleFormItem, column.formItem); simpleFormItem.dataField ?? (simpleFormItem.dataField = column.dataField); simpleFormItem.validationRules ?? (simpleFormItem.validationRules = column.validationRules); simpleFormItem.label = _extends({ text: column.caption }, column.formItem.label); const originalContentReady = null === simpleFormItem || void 0 === simpleFormItem || null === (_simpleFormItem$edito = simpleFormItem.editorOptions) || void 0 === _simpleFormItem$edito ? void 0 : _simpleFormItem$edito.onContentReady; simpleFormItem.editorOptions = _extends({ stylingMode: "outlined", disabled: !column.allowEditing }, column.editorOptions, column.formItem.editorOptions, simpleFormItem.editorOptions, { onValueChanged: async _ref => { let { value: value } = _ref; const newData = {}; await this.promises.add(Promise.resolve(column.setFieldValue.bind(column)(newData, value, editingCard.data))); this.editingController.addChange(editingCard.key, newData) }, value: (null === editingCard || void 0 === editingCard || null === (_editingCard$fields$f = editingCard.fields.find((c => c.column.name === column.name))) || void 0 === _editingCard$fields$f ? void 0 : _editingCard$fields$f.value) ?? null, onContentReady: e => { setTimeout((() => { var _$$data; null === (_$$data = (0, _renderer.default)(e.element).data("dxValidator")) || void 0 === _$$data || _$$data.option("dataGetter", (() => { var _this$editingControll; return { data: null === (_this$editingControll = this.editingController.editingCard.peek()) || void 0 === _this$editingControll ? void 0 : _this$editingControll.data, column: column } })) })); null === originalContentReady || void 0 === originalContentReady || originalContentReady(e) } }); if ("dxDateBox" === simpleFormItem.editorType) { simpleFormItem.editorOptions.type = column.dataType } }; this.toolbar.addDefaultItem((0, _signalsCore.signal)({ name: "addCardButton", location: "after", widget: "dxButton", options: { icon: "add", onClick: () => this.editingController.addCard() } }), this.editingController.allowAdding); this.editingController.provideValidateMethod((async () => { const form = this.formRef.current; if (!form) { return true } const preValidationResult = form.validate(); const validationResult = await (preValidationResult.complete ?? preValidationResult); return !!validationResult.isValid })) } getProps() { return (0, _signalsCore.computed)((() => ({ visible: this.visible.value, formProps: this.options.oneWay("editing.form").value, popupProps: this.options.oneWay("editing.popup").value, formRef: this.formRef, onSave: () => { this.editingController.save(); this.kbn.returnFocus() }, onCancel: () => { this.editingController.cancel(); this.kbn.returnFocus() }, onHide: () => { this.editingController.cancel(); this.kbn.returnFocus() }, items: this.items.value, customizeItem: this.customizeItems, texts: this.editingController.texts.value }))) } } exports.EditPopupView = EditPopupView; EditPopupView.dependencies = [_options_controller.OptionsController, _columns_controller.ColumnsController, _items_controller.ItemsController, _controller2.EditingController, _controller.ToolbarController, _index.KeyboardNavigationController] }, 18933: /*!******************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/new/grid_core/editing/public_methods.js ***! \******************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.PublicMethods = function(GridCore) { return class extends GridCore { addCard() { const controller = this.diContext.get(_controller.EditingController); return controller.addCard() } cancelEditData() { const controller = this.diContext.get(_controller.EditingController); controller.clear() } deleteCard(cardIndex) { var _itemsController$item; const controller = this.diContext.get(_controller.EditingController); const itemsController = this.diContext.get(_items_controller.ItemsController); const cardKey = null === (_itemsController$item = itemsController.items.peek()[cardIndex]) || void 0 === _itemsController$item ? void 0 : _itemsController$item.key; if ((0, _m_type.isDefined)(cardKey)) { controller.deleteCard(cardKey) } } editCard(cardIndex) { var _itemsController$item2; const controller = this.diContext.get(_controller.EditingController); const itemsController = this.diContext.get(_items_controller.ItemsController); const cardKey = null === (_itemsController$item2 = itemsController.items.peek()[cardIndex]) || void 0 === _itemsController$item2 ? void 0 : _itemsController$item2.key; if ((0, _m_type.isDefined)(cardKey)) { controller.editCard(cardKey) } } hasEditData() { const controller = this.diContext.get(_controller.EditingController); return controller.changes.peek().length > 0 } saveEditData() { const controller = this.diContext.get(_controller.EditingController); return controller.save() } } }; var _m_type = __webpack_require__( /*! ../../../../core/utils/m_type */ 39918); var _items_controller = __webpack_require__( /*! ../items_controller/items_controller */ 58761); var _controller = __webpack_require__( /*! ./controller */ 64629) }, 98140: /*!*********************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/new/grid_core/editing/utils.js ***! \*********************************************************************************************/ function(__unused_webpack_module, exports) { Object.defineProperty(exports, "__esModule", { value: true }); exports.defaultSetFieldValue = exports.PendingPromises = void 0; exports.defaultSetFieldValue = function(newData, value) { const { dataField: dataField } = this; if (!dataField) { return } newData[dataField] = value }; exports.PendingPromises = class { constructor() { this.promises = new Set } waitForAll() { return Promise.all([...this.promises]) } add(p) { this.promises.add(p); p.then((() => { this.promises.delete(p) })); return p } } }, 67921: /*!*****************************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/new/grid_core/error_controller/error_controller.js ***! \*****************************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.ErrorController = void 0; var _signalsCore = __webpack_require__( /*! @preact/signals-core */ 70037); class ErrorController { constructor() { this._errors = (0, _signalsCore.signal)([]); this.errors = this._errors; this.counter = 0 } showError(error) { this._errors.value = [...this._errors.peek(), { text: error, id: this.counter }]; this.counter += 1 } removeError(index) { const newErrors = this._errors.peek().slice(); newErrors.splice(index, 1); this._errors.value = newErrors } } exports.ErrorController = ErrorController; ErrorController.dependencies = [] }, 24628: /*!***********************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/new/grid_core/filtering/filter_controller.js ***! \***********************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.FilterController = void 0; var _signalsCore = __webpack_require__( /*! @preact/signals-core */ 70037); var _m_utils = (e = __webpack_require__( /*! ../../../../grids/grid_core/m_utils */ 53226), e && e.__esModule ? e : { default: e }); var e; var _utils = __webpack_require__( /*! ../../../../grids/new/grid_core/columns_controller/utils */ 26054); var _controller = __webpack_require__( /*! ../../../../grids/new/grid_core/filtering/header_filter/controller */ 67278); var _legacy_filter_custom_operations = __webpack_require__( /*! ../../../../grids/new/grid_core/filtering/legacy_filter_custom_operations */ 3596); var _index = __webpack_require__( /*! ../../../../grids/new/grid_core/search/index */ 61519); var _index2 = __webpack_require__( /*! ../columns_controller/index */ 50875); var _options_controller = __webpack_require__( /*! ../options_controller/options_controller */ 76385); var _utils2 = __webpack_require__( /*! ./utils */ 18066); class FilterController { constructor(options, columnsController, searchController, headerFilterController) { this.options = options; this.columnsController = columnsController; this.searchController = searchController; this.headerFilterController = headerFilterController; this.filterBuilderCustomOperations = this.options.oneWay("filterBuilder.customOperations"); this.filterPanelFilterEnabled = this.options.twoWay("filterPanel.filterEnabled"); this.filterPanelVisible = this.options.oneWay("filterPanel.visible"); this.filterValueOption = this.options.twoWay("filterValue"); this.filterBuilderPopupOptions = this.options.oneWay("filterBuilderPopup"); this.filterPanelOptions = this.options.twoWay("filterPanel"); this.filterBuilderOptions = this.options.twoWay("filterBuilder"); this.filterSyncEnabledOption = this.options.oneWay("_filterSyncEnabled"); this.filterSyncEnabled = (0, _signalsCore.computed)((() => "auto" === this.filterSyncEnabledOption.value ? !!this.filterPanelVisible.value : !!this.filterSyncEnabledOption.value)); this.filterPanelValue = (0, _signalsCore.computed)((() => this.filterPanelFilterEnabled.value ? this.filterValueOption.value : null)); this.filterSyncValue = (0, _signalsCore.computed)((() => this.filterSyncEnabled.value ? this.filterPanelValue.value : null)); this.appliedFilters = (0, _signalsCore.computed)((() => ({ filterPanel: this.filterPanelValue.value, headerFilter: this.headerFilterController.composedHeaderFilter.value, search: this.searchController.searchFilter.value }))); this.customOperations = (0, _signalsCore.computed)((() => { const config = { columnOption: columnName => { const columns = this.columnsController.columns.peek(); return (0, _utils.getColumnByIndexOrName)(columns, columnName) }, getHeaderFilterOptions: () => this.options.oneWay("headerFilter").peek(), getHeaderFilterController: () => this.headerFilterCompatibilityController }; const builtInCustomOperation = [(0, _legacy_filter_custom_operations.anyOf)(config), (0, _legacy_filter_custom_operations.noneOf)(config)]; return builtInCustomOperation.concat(this.filterBuilderCustomOperations.value).filter((o => o)) })); this.displayFilter = (0, _signalsCore.computed)((() => { const appliedFilterExpressions = (0, _utils2.getAppliedFilterExpressions)(this.appliedFilters.value, this.columnsController.filterableColumns.value, this.customOperations.value, this.filterSyncEnabled.value); return _m_utils.default.combineFilters(appliedFilterExpressions) ?? null })); this.headerFilterCompatibilityController = null } } exports.FilterController = FilterController; FilterController.dependencies = [_options_controller.OptionsController, _index2.ColumnsController, _index.SearchController, _controller.HeaderFilterController] }, 98512: /*!*******************************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/new/grid_core/filtering/filter_panel/filter_panel.js ***! \*******************************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.FilterPanelComponent = void 0; var _inferno = __webpack_require__( /*! inferno */ 76231); var _renderer = (e = __webpack_require__( /*! ../../../../../../core/renderer */ 64553), e && e.__esModule ? e : { default: e }); var e; var _const = __webpack_require__( /*! ../../const */ 46793); class FilterPanelComponent extends _inferno.Component { constructor() { super(...arguments); this.filterPanelRef = (0, _inferno.createRef)(); this.filterBuilderRef = (0, _inferno.createRef)() } render() { return (0, _inferno.createFragment)([(0, _inferno.createVNode)(1, "div", null, null, 1, null, null, this.filterPanelRef), (0, _inferno.createVNode)(1, "div", _const.CLASSES.excludeFlexBox, null, 1, null, null, this.filterBuilderRef)], 4) } componentDidMount() { this.props.oldFilterPanelView.render((0, _renderer.default)(this.filterPanelRef.current)); this.props.oldFilterBuilderView.render((0, _renderer.default)(this.filterBuilderRef.current)) } componentDidUpdate() { this.props.oldFilterPanelView.render((0, _renderer.default)(this.filterPanelRef.current)); this.props.oldFilterBuilderView.render((0, _renderer.default)(this.filterBuilderRef.current)) } } exports.FilterPanelComponent = FilterPanelComponent }, 56375: /*!************************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/new/grid_core/filtering/filter_panel/index.js ***! \************************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "FilterPanelView", { enumerable: true, get: function() { return _view.FilterPanelView } }); Object.defineProperty(exports, "defaultOptions", { enumerable: true, get: function() { return _options.defaultOptions } }); var _options = __webpack_require__( /*! ./options */ 93197); var _view = __webpack_require__( /*! ./view */ 29326) }, 93197: /*!**************************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/new/grid_core/filtering/filter_panel/options.js ***! \**************************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.defaultOptions = void 0; var _message = (e = __webpack_require__( /*! ../../../../../../localization/message */ 33881), e && e.__esModule ? e : { default: e }); var e; exports.defaultOptions = { filterBuilder: { groupOperationDescriptions: { and: _message.default.format("dxFilterBuilder-and"), or: _message.default.format("dxFilterBuilder-or"), notAnd: _message.default.format("dxFilterBuilder-notAnd"), notOr: _message.default.format("dxFilterBuilder-notOr") }, filterOperationDescriptions: { between: _message.default.format("dxFilterBuilder-filterOperationBetween"), equal: _message.default.format("dxFilterBuilder-filterOperationEquals"), notEqual: _message.default.format("dxFilterBuilder-filterOperationNotEquals"), lessThan: _message.default.format("dxFilterBuilder-filterOperationLess"), lessThanOrEqual: _message.default.format("dxFilterBuilder-filterOperationLessOrEquals"), greaterThan: _message.default.format("dxFilterBuilder-filterOperationGreater"), greaterThanOrEqual: _message.default.format("dxFilterBuilder-filterOperationGreaterOrEquals"), startsWith: _message.default.format("dxFilterBuilder-filterOperationStartsWith"), contains: _message.default.format("dxFilterBuilder-filterOperationContains"), notContains: _message.default.format("dxFilterBuilder-filterOperationNotContains"), endsWith: _message.default.format("dxFilterBuilder-filterOperationEndsWith"), isBlank: _message.default.format("dxFilterBuilder-filterOperationIsBlank"), isNotBlank: _message.default.format("dxFilterBuilder-filterOperationIsNotBlank") } }, filterPanel: { visible: false, filterEnabled: true, texts: { createFilter: _message.default.format("dxDataGrid-filterPanelCreateFilter"), clearFilter: _message.default.format("dxDataGrid-filterPanelClearFilter"), filterEnabledHint: _message.default.format("dxDataGrid-filterPanelFilterEnabledHint") } }, filterBuilderPopup: {} } }, 29326: /*!***********************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/new/grid_core/filtering/filter_panel/view.js ***! \***********************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.FilterPanelView = void 0; var _signalsCore = __webpack_require__( /*! @preact/signals-core */ 70037); var _m_filter_builder = __webpack_require__( /*! ../../../../../grids/grid_core/filter/m_filter_builder */ 65382); var _m_filter_panel = __webpack_require__( /*! ../../../../../grids/grid_core/filter/m_filter_panel */ 17887); var _view = __webpack_require__( /*! ../../core/view */ 3455); var _widget_mock = __webpack_require__( /*! ../../widget_mock */ 87354); var _filter_controller = __webpack_require__( /*! ../filter_controller */ 24628); var _filter_panel = __webpack_require__( /*! ./filter_panel */ 98512); class FilterPanelView extends _view.View { constructor(filterController, widget) { super(); this.filterController = filterController; this.widget = widget; this.component = _filter_panel.FilterPanelComponent; this.oldFilterPanelView = new _m_filter_panel.FilterPanelView(this.widget); this.oldFilterBuilderView = new _m_filter_builder.FilterBuilderView(this.widget); this.oldFilterPanelView.init(); this.oldFilterBuilderView.init() } getProps() { return (0, _signalsCore.computed)((() => ({ oldFilterBuilderView: this.oldFilterBuilderView, oldFilterPanelView: this.oldFilterPanelView, filterValue: this.filterController.filterValueOption.value, filterPanel: this.filterController.filterPanelOptions.value, filterBuilder: this.filterController.filterBuilderOptions.value, filterBuilderPopup: this.filterController.filterBuilderPopupOptions.value }))) } optionChanged(args) { this.oldFilterBuilderView.optionChanged(args); this.oldFilterPanelView.optionChanged(args) } isCompatibilityMode() { return true } } exports.FilterPanelView = FilterPanelView; FilterPanelView.dependencies = [_filter_controller.FilterController, _widget_mock.WidgetMock] }, 68460: /*!*******************************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/new/grid_core/filtering/filter_sync/compatibility.js ***! \*******************************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.CompatibilityFilterSyncController = void 0; var _filter_controller = __webpack_require__( /*! ../filter_controller */ 24628); var _controller = __webpack_require__( /*! ./controller */ 16550); class CompatibilityFilterSyncController { constructor(realFilterController, realFilterSyncController) { this.realFilterController = realFilterController; this.realFilterSyncController = realFilterSyncController } getCustomFilterOperations() { return this.realFilterController.customOperations.peek() } } exports.CompatibilityFilterSyncController = CompatibilityFilterSyncController; CompatibilityFilterSyncController.dependencies = [_filter_controller.FilterController, _controller.FilterSyncController] }, 16550: /*!****************************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/new/grid_core/filtering/filter_sync/controller.js ***! \****************************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.FilterSyncController = void 0; var _common = __webpack_require__( /*! ../../../../../../core/utils/common */ 17781); var _signalsCore = __webpack_require__( /*! @preact/signals-core */ 70037); var _m_utils = __webpack_require__( /*! ../../../../../filter_builder/m_utils */ 29498); var _index = __webpack_require__( /*! ../../../../../grids/new/grid_core/search/index */ 61519); var _index2 = __webpack_require__( /*! ../../columns_controller/index */ 50875); var _utils = __webpack_require__( /*! ../../columns_controller/utils */ 26054); var _index3 = __webpack_require__( /*! ../header_filter/index */ 63108); var _utils2 = __webpack_require__( /*! ../header_filter/utils */ 1261); var _index4 = __webpack_require__( /*! ../index */ 92743); var _utils3 = __webpack_require__( /*! ./utils */ 27269); function _extends() { return _extends = Object.assign ? Object.assign.bind() : function(n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) { ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]) } } return n }, _extends.apply(null, arguments) } const FILTER_DEEP_COMPARISON_OPTS = { maxDepth: 6, strict: true }; class FilterSyncController { constructor(columnsController, filterController, headerFilterController, searchController) { this.columnsController = columnsController; this.filterController = filterController; this.headerFilterController = headerFilterController; this.searchController = searchController; this.previousFilterPanelValue = null; this.previousFilterPanelEnabled = this.filterController.filterPanelFilterEnabled.peek(); this.previousHeaderFilterInfoArray = []; (0, _signalsCore.effect)((() => { const filterPanelValue = this.filterController.filterValueOption.value; const isFilterPanelEnabled = this.filterController.filterPanelFilterEnabled.value; if ((0, _common.equalByValue)(this.previousFilterPanelValue, filterPanelValue, FILTER_DEEP_COMPARISON_OPTS) && this.previousFilterPanelEnabled === isFilterPanelEnabled) { return } this.previousFilterPanelValue = filterPanelValue; this.previousFilterPanelEnabled = isFilterPanelEnabled; const isSyncEnabled = this.filterController.filterSyncEnabled.peek(); if (!isSyncEnabled) { return } if (!isFilterPanelEnabled || null === filterPanelValue) { this.headerFilterController.clearHeaderFilters(); this.previousHeaderFilterInfoArray = this.headerFilterController.headerFilterInfoArray.peek(); return } this.handleFilterPanelSync(filterPanelValue); this.previousHeaderFilterInfoArray = this.headerFilterController.headerFilterInfoArray.peek() })); (0, _signalsCore.effect)((() => { const headerFilterInfoArray = this.headerFilterController.headerFilterInfoArray.value; if ((0, _common.equalByValue)(this.previousHeaderFilterInfoArray, headerFilterInfoArray, FILTER_DEEP_COMPARISON_OPTS)) { return } this.previousHeaderFilterInfoArray = headerFilterInfoArray; const isSyncEnabled = this.filterController.filterSyncEnabled.peek(); if (!isSyncEnabled) { return } const filterPanelValue = this.filterController.filterPanelValue.peek() ?? []; const newFilterPanelValue = (0, _utils3.mergeFilterPanelWithHeaderFilterValues)(filterPanelValue, headerFilterInfoArray); if ((0, _common.equalByValue)(filterPanelValue, newFilterPanelValue, FILTER_DEEP_COMPARISON_OPTS)) { return } this.handleHeaderFilterSync(newFilterPanelValue); this.previousFilterPanelValue = newFilterPanelValue })) } clearFilters() { (0, _signalsCore.batch)((() => { this.searchController.searchTextOption.value = ""; this.filterController.filterValueOption.value = null; this.headerFilterController.clearHeaderFilters() })) } handleFilterPanelSync(filterPanelValue) { const sourceColumns = this.columnsController.columns.peek(); this.columnsController.updateColumns((columns => columns.map((column => { const sourceColumn = (0, _utils.getColumnByIndexOrName)(sourceColumns, column.name); if (!(0, _utils2.isColumnFilterable)(sourceColumn)) { return column } const columnId = (0, _utils2.getColumnIdentifier)(column); const filterConditions = (0, _m_utils.getMatchedConditions)(filterPanelValue, columnId); const filterType = (0, _utils3.getFilterType)(filterConditions); const filterValues = filterType ? (0, _utils3.getFilterValues)(filterConditions) : void 0; return _extends({}, column, { filterType: filterType, filterValues: filterValues }) })))) } handleHeaderFilterSync(newFilterPanelValue) { const normalizedValue = !(null !== newFilterPanelValue && void 0 !== newFilterPanelValue && newFilterPanelValue.length) ? null : newFilterPanelValue; (0, _signalsCore.batch)((() => { this.filterController.filterValueOption.value = normalizedValue; this.filterController.filterPanelFilterEnabled.value = true })) } } exports.FilterSyncController = FilterSyncController; FilterSyncController.dependencies = [_index2.ColumnsController, _index4.FilterController, _index3.HeaderFilterController, _index.SearchController] }, 69900: /*!***********************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/new/grid_core/filtering/filter_sync/index.js ***! \***********************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "CompatibilityFilterSyncController", { enumerable: true, get: function() { return _compatibility.CompatibilityFilterSyncController } }); Object.defineProperty(exports, "FilterSyncController", { enumerable: true, get: function() { return _controller.FilterSyncController } }); Object.defineProperty(exports, "defaultOptions", { enumerable: true, get: function() { return _options.defaultOptions } }); var _compatibility = __webpack_require__( /*! ./compatibility */ 68460); var _controller = __webpack_require__( /*! ./controller */ 16550); var _options = __webpack_require__( /*! ./options */ 17586) }, 17586: /*!*************************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/new/grid_core/filtering/filter_sync/options.js ***! \*************************************************************************************************************/ function(__unused_webpack_module, exports) { Object.defineProperty(exports, "__esModule", { value: true }); exports.defaultOptions = void 0; exports.defaultOptions = { _filterSyncEnabled: false } }, 27269: /*!***********************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/new/grid_core/filtering/filter_sync/utils.js ***! \***********************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.mergeFilterPanelWithHeaderFilterValues = exports.getFilterValues = exports.getFilterType = exports.getConditionFromHeaderFilter = void 0; var _m_utils = __webpack_require__( /*! ../../../../../filter_builder/m_utils */ 29498); exports.getFilterValues = filterConditions => { if (1 !== filterConditions.length) { return } const filterCondition = filterConditions[0]; if (!filterCondition) { return } const value = filterCondition[2]; const hasArrayValue = Array.isArray(value); return hasArrayValue ? value : [value] }; exports.getFilterType = filterConditions => { if (1 !== filterConditions.length) { return } const filterCondition = filterConditions[0]; if (!filterCondition) { return } const selectedFilterOperation = filterCondition[1]; switch (selectedFilterOperation) { case "anyof": case "=": return "include"; case "noneof": case "<>": return "exclude"; default: return } }; const getConditionFromHeaderFilter = _ref => { let { type: type, columnId: columnId, filterType: filterType, filterValues: filterValues } = _ref; const [firstFilterItem] = filterValues; switch (true) { case "single-value" === type && "exclude" === filterType: return [columnId, "<>", firstFilterItem]; case "single-value" === type && "include" === filterType: return [columnId, "=", firstFilterItem]; case "values-or-condition" === type && "exclude" === filterType: return [columnId, "noneof", filterValues]; case "values-or-condition" === type && "include" === filterType: return [columnId, "anyof", filterValues]; default: return null } }; exports.getConditionFromHeaderFilter = getConditionFromHeaderFilter; exports.mergeFilterPanelWithHeaderFilterValues = (filterPanelValue, headerFilterInfoArray) => headerFilterInfoArray.reduce(((result, info) => { const value = getConditionFromHeaderFilter(info); return value ? (0, _m_utils.syncFilters)(result, value) : (0, _m_utils.removeFieldConditionsFromFilter)(result, info.columnId) }), filterPanelValue) }, 96356: /*!*********************************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/new/grid_core/filtering/header_filter/compatibility.js ***! \*********************************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.CompatibilityHeaderFilterController = void 0; var _index = __webpack_require__( /*! ../../data_controller/index */ 61124); var _options_controller = __webpack_require__( /*! ../../options_controller/options_controller */ 76385); var _filter_controller = __webpack_require__( /*! ../filter_controller */ 24628); var _legacy_header_filter = __webpack_require__( /*! ./legacy_header_filter */ 65518); var _view_controller = __webpack_require__( /*! ./view_controller */ 58814); function _extends() { return _extends = Object.assign ? Object.assign.bind() : function(n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) { ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]) } } return n }, _extends.apply(null, arguments) } class CompatibilityHeaderFilterController { constructor(realFilterController, realHeaderFilterViewController, realDataController, options) { this.realFilterController = realFilterController; this.realHeaderFilterViewController = realHeaderFilterViewController; this.realDataController = realDataController; this.options = options; this.realFilterController.headerFilterCompatibilityController = this } getCustomFilterOperations() { return this.realFilterController.customOperations.peek() } showHeaderFilterMenuBase(args) { this.realHeaderFilterViewController.openPopup(args.columnElement, args.column, args.onHidden, args.customApply, args.isFilterBuilder) } hideHeaderFilterMenu() { this.realHeaderFilterViewController.closePopup() } getDataSource(column) { const adapter = this.realDataController.getStoreLoadAdapter(); const popupOptions = { column: _extends({}, column), filterType: column.filterType, filterValues: column.filterValues }; const rootHeaderFilterOptions = this.options.oneWay("headerFilter").peek(); return (0, _legacy_header_filter.getDataSourceOptions)(adapter, popupOptions, rootHeaderFilterOptions, null) } } exports.CompatibilityHeaderFilterController = CompatibilityHeaderFilterController; CompatibilityHeaderFilterController.dependencies = [_filter_controller.FilterController, _view_controller.HeaderFilterViewController, _index.DataController, _options_controller.OptionsController] }, 67278: /*!******************************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/new/grid_core/filtering/header_filter/controller.js ***! \******************************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.HeaderFilterController = void 0; var _signalsCore = __webpack_require__( /*! @preact/signals-core */ 70037); var _index = __webpack_require__( /*! ../../../../../grids/new/grid_core/columns_controller/index */ 50875); var _utils = __webpack_require__( /*! ./utils */ 1261); class HeaderFilterController { constructor(columnsController) { this.columnsController = columnsController; this.headerFilterInfoArray = (0, _signalsCore.computed)((() => (0, _utils.getHeaderFilterInfoArray)(this.columnsController.visibleColumns.value))); this.composedHeaderFilter = (0, _signalsCore.computed)((() => (0, _utils.getComposedHeaderFilter)(this.headerFilterInfoArray.value))) } clearHeaderFilters() { this.columnsController.updateColumns((columns => columns.map((col => { delete col.filterValues; delete col.filterType; return col })))) } } exports.HeaderFilterController = HeaderFilterController; HeaderFilterController.dependencies = [_index.ColumnsController] }, 63108: /*!*************************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/new/grid_core/filtering/header_filter/index.js ***! \*************************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "CompatibilityHeaderFilterController", { enumerable: true, get: function() { return _compatibility.CompatibilityHeaderFilterController } }); Object.defineProperty(exports, "HeaderFilterController", { enumerable: true, get: function() { return _controller.HeaderFilterController } }); Object.defineProperty(exports, "HeaderFilterPopupView", { enumerable: true, get: function() { return _view.HeaderFilterPopupView } }); Object.defineProperty(exports, "defaultOptions", { enumerable: true, get: function() { return _options.defaultOptions } }); exports.headerFilterUtils = void 0; var headerFilterUtils = function(e, r) { if (!r && e && e.__esModule) { return e } if (null === e || "object" != typeof e && "function" != typeof e) { return { default: e } } var t = _getRequireWildcardCache(r); if (t && t.has(e)) { return t.get(e) } var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) { if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u] } } return n.default = e, t && t.set(e, n), n }(__webpack_require__( /*! ./utils */ 1261)); exports.headerFilterUtils = headerFilterUtils; var _compatibility = __webpack_require__( /*! ./compatibility */ 96356); var _controller = __webpack_require__( /*! ./controller */ 67278); var _options = __webpack_require__( /*! ./options */ 1658); var _view = __webpack_require__( /*! ./view */ 10171); function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) { return null } var r = new WeakMap, t = new WeakMap; return (_getRequireWildcardCache = function(e) { return e ? t : r })(e) } }, 65518: /*!****************************************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/new/grid_core/filtering/header_filter/legacy_header_filter.js ***! \****************************************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.getHeaderItemText = exports.getHeaderFilterListType = exports.getDataSourceOptions = void 0; var _deferred = __webpack_require__( /*! ../../../../../../core/utils/deferred */ 87739); var _type = __webpack_require__( /*! ../../../../../../core/utils/type */ 11528); var _filtering = _interopRequireDefault(__webpack_require__( /*! ../../../../../../ui/shared/filtering */ 56417)); var _m_extend = __webpack_require__( /*! ../../../../../core/utils/m_extend */ 96298); var _m_utils = __webpack_require__( /*! ../../../../../data/data_source/m_utils */ 23923); var _m_header_filter = __webpack_require__( /*! ../../../../../grids/grid_core/header_filter/m_header_filter */ 69952); var _m_header_filter_core = __webpack_require__( /*! ../../../../../grids/grid_core/header_filter/m_header_filter_core */ 83040); var _m_utils2 = _interopRequireDefault(__webpack_require__( /*! ../../../../../grids/grid_core/m_utils */ 53226)); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } function _extends() { return _extends = Object.assign ? Object.assign.bind() : function(n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) { ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]) } } return n }, _extends.apply(null, arguments) } const getHeaderItemText = (displayValue, column, currentLevel, headerFilterOptions) => { let text = _m_utils2.default.formatValue(displayValue, (0, _m_header_filter.getFormatOptions)(displayValue, column, currentLevel)); if (!text) { var _headerFilterOptions$; text = (null === headerFilterOptions || void 0 === headerFilterOptions || null === (_headerFilterOptions$ = headerFilterOptions.texts) || void 0 === _headerFilterOptions$ ? void 0 : _headerFilterOptions$.emptyValue) ?? "(Blank)" } return text }; exports.getHeaderItemText = getHeaderItemText; const _updateSelectedState = (items, column) => { let i = items.length; const isExclude = "exclude" === column.filterType; while (i--) { const item = items[i]; if ("items" in items[i]) { _updateSelectedState(items[i].items, column) }(0, _m_header_filter_core.updateHeaderFilterItemSelectionState)(item, _m_utils2.default.getIndexByKey(items[i].value, column.filterValues, null) > -1, isExclude) } }; const _normalizeGroupItem = (item, currentLevel, options) => { let value; let displayValue; const { path: path } = options; const { valueSelector: valueSelector } = options; const { displaySelector: displaySelector } = options; const { column: column } = options; if (valueSelector && displaySelector) { value = valueSelector(item); displayValue = displaySelector(item) } else { value = item.key; displayValue = value } if (!(0, _type.isObject)(item)) { item = {} } else { item = (0, _m_extend.extend)({}, item) } path.push(value); if (1 === path.length) { item.value = path[0] } else { item.value = path.join("/") } item.text = getHeaderItemText(displayValue, column, currentLevel, options.headerFilterOptions); return item }; const _processGroupItems = (groupItems, currentLevel, path, options) => { const { level: level } = options; path = path || []; currentLevel = currentLevel || 0; for (let i = 0; i < groupItems.length; i++) { groupItems[i] = _normalizeGroupItem(groupItems[i], currentLevel, { column: options.column, headerFilterOptions: options.headerFilterOptions, path: path }); if ("items" in groupItems[i]) { if (currentLevel === level || !(0, _type.isDefined)(groupItems[i].value)) { delete groupItems[i].items } else { _processGroupItems(groupItems[i].items, currentLevel + 1, path, options) } } path.pop() } }; exports.getDataSourceOptions = (storeLoadAdapter, popupOptions, headerFilterOptions, filter) => { var _column$headerFilter; const { column: column } = popupOptions; if (!storeLoadAdapter) { return } const { grouping: localGrouping } = storeLoadAdapter.getLocalLoadOperations(); const remoteGrouping = !localGrouping; const group = _m_utils2.default.getHeaderFilterGroupParameters(column, remoteGrouping); const headerFilterDataSource = null === (_column$headerFilter = column.headerFilter) || void 0 === _column$headerFilter ? void 0 : _column$headerFilter.dataSource; const options = {}; if ((0, _type.isDefined)(headerFilterDataSource) && !(0, _type.isFunction)(headerFilterDataSource)) { options.dataSource = (0, _m_utils.normalizeDataSourceOptions)(headerFilterDataSource) } else { const cutoffLevel = Array.isArray(group) ? group.length - 1 : 0; options.dataSource = { filter: filter, group: group, useDefaultSearch: true, load: loadOptions => { const d = new _deferred.Deferred; loadOptions.dataField = column.dataField || column.name; storeLoadAdapter.load(loadOptions).done((data => { const convertUTCDates = remoteGrouping && (0, _m_header_filter.isUTCFormat)(column.serializationFormat) && cutoffLevel > 3; if (convertUTCDates) { data = (0, _m_header_filter.convertDataFromUTCToLocal)(data, column) } _processGroupItems(data, null, null, { level: cutoffLevel, column: column, headerFilterOptions: headerFilterOptions }); d.resolve(data) })).fail(d.reject); return d } } } if ((0, _type.isFunction)(headerFilterDataSource)) { headerFilterDataSource.call(column, options) } const origPostProcess = options.dataSource.postProcess; options.dataSource.postProcess = data => { let items = data; items = (null === origPostProcess || void 0 === origPostProcess ? void 0 : origPostProcess.call(void 0, items)) || items; _updateSelectedState(items, _extends({}, column, { filterType: popupOptions.filterType, filterValues: popupOptions.filterValues })); return items }; return options.dataSource }; exports.getHeaderFilterListType = column => { const groupInterval = _filtering.default.getGroupInterval(column); return groupInterval && groupInterval.length > 1 ? "tree" : "list" } }, 1658: /*!***************************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/new/grid_core/filtering/header_filter/options.js ***! \***************************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.defaultOptions = void 0; var _message = (e = __webpack_require__( /*! ../../../../../../common/core/localization/message */ 4671), e && e.__esModule ? e : { default: e }); var e; exports.defaultOptions = { headerFilter: { visible: false, width: 252, height: 325, allowSelectAll: true, search: { enabled: false, timeout: 500, mode: "contains", editorOptions: {} }, texts: { emptyValue: _message.default.format("dxDataGrid-headerFilterEmptyValue"), ok: _message.default.format("dxDataGrid-headerFilterOK"), cancel: _message.default.format("dxDataGrid-headerFilterCancel") } } } }, 1261: /*!*************************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/new/grid_core/filtering/header_filter/utils.js ***! \*************************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.needCreateHeaderFilter = exports.mergeColumnHeaderFilterOptions = exports.isColumnFilterable = exports.getHeaderFilterValuesType = exports.getHeaderFilterInfoArray = exports.getHeaderFilterInfo = exports.getFilterOperator = exports.getComposedHeaderFilter = exports.getColumnName = exports.getColumnIdentifier = void 0; var _errors = _interopRequireDefault(__webpack_require__( /*! ../../../../../../core/errors */ 87129)); var _type = __webpack_require__( /*! ../../../../../../core/utils/type */ 11528); var _filtering = _interopRequireDefault(__webpack_require__( /*! ../../../../../../ui/shared/filtering */ 56417)); var _m_utils = _interopRequireDefault(__webpack_require__( /*! ../../../../../grids/grid_core/m_utils */ 53226)); const _excluded = ["texts", "visible"]; function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } function _extends() { return _extends = Object.assign ? Object.assign.bind() : function(n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) { ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]) } } return n }, _extends.apply(null, arguments) } exports.mergeColumnHeaderFilterOptions = (column, rootOptions) => { var _column$headerFilter; const _ref = rootOptions ?? {}, restRootOptions = function(r, e) { if (null == r) { return {} } var t = {}; for (var n in r) { if ({}.hasOwnProperty.call(r, n)) { if (e.includes(n)) { continue } t[n] = r[n] } } return t }(_ref, _excluded); return _extends({}, column, { allowHeaderFiltering: !!(null !== rootOptions && void 0 !== rootOptions && rootOptions.visible) && !!(null !== column && void 0 !== column && column.allowFiltering) && !!(null !== column && void 0 !== column && column.allowHeaderFiltering), headerFilter: _extends({}, restRootOptions, null === column || void 0 === column ? void 0 : column.headerFilter, { search: _extends({}, null === restRootOptions || void 0 === restRootOptions ? void 0 : restRootOptions.search, null === column || void 0 === column || null === (_column$headerFilter = column.headerFilter) || void 0 === _column$headerFilter ? void 0 : _column$headerFilter.search) }) }) }; const getColumnIdentifier = column => column.name ?? column.dataField; exports.getColumnIdentifier = getColumnIdentifier; const getColumnName = column => { const name = getColumnIdentifier(column); if (!(0, _type.isDefined)(name)) { throw _errors.default.Error("E1049", column.caption) } return name }; exports.getColumnName = getColumnName; const getFilterOperator = (values, filterType) => { const isInclude = !filterType || "include" === filterType; const isValueArray = Array.isArray(values); switch (true) { case isValueArray && isInclude: return "anyof"; case isValueArray && !isInclude: return "noneof"; case !isValueArray && isInclude: return "="; case !isValueArray && !isInclude: return "<>"; default: throw new Error("Invalid state") } }; exports.getFilterOperator = getFilterOperator; const isFilteringAllowed = column => column.allowFiltering || column.allowHeaderFiltering; exports.isColumnFilterable = column => isFilteringAllowed(column); exports.needCreateHeaderFilter = column => { const values = column.filterValues; const hasSelectedItems = (0, _type.isDefined)(values) && values.length > 0; return isFilteringAllowed(column) && hasSelectedItems }; const getFilterExpression = (filterValues, column) => { var _column$headerFilter2; const columnName = getColumnName(column); const hasGroupInterval = !!(null !== (_column$headerFilter2 = column.headerFilter) && void 0 !== _column$headerFilter2 && _column$headerFilter2.groupInterval); const needNormalizeFilterValues = 1 === (null === filterValues || void 0 === filterValues ? void 0 : filterValues.length) && !hasGroupInterval; const normalizedFilterValues = needNormalizeFilterValues ? filterValues[0] : filterValues; const filterOperator = getFilterOperator(normalizedFilterValues, column.filterType); return [columnName, filterOperator, normalizedFilterValues] }; const getHeaderFilterValuesType = column => { var _column$headerFilter3; const { filterValues: filterValues } = column; if (!(null !== filterValues && void 0 !== filterValues && filterValues.length)) { return "empty" } const [firstFilterItem] = filterValues; const hasGroupInterval = !!_filtering.default.getGroupInterval(column); const hasCustomDataSource = !!(null !== (_column$headerFilter3 = column.headerFilter) && void 0 !== _column$headerFilter3 && _column$headerFilter3.dataSource); const isSingleValue = 1 === filterValues.length && !Array.isArray(firstFilterItem) && (!hasGroupInterval && !hasCustomDataSource || 1 === filterValues.length && null === firstFilterItem); return isSingleValue ? "single-value" : "values-or-condition" }; exports.getHeaderFilterValuesType = getHeaderFilterValuesType; const getHeaderFilterInfo = column => { if (!isFilteringAllowed(column)) { return null } const columnId = getColumnIdentifier(column); const headerFilterValueType = getHeaderFilterValuesType(column); if ("empty" === headerFilterValueType) { return { type: "empty", columnId: columnId, filterType: "include", filterValues: [], composedFilterValues: [] } } const { filterType: filterType, filterValues: filterValues } = column; const normalizedFilterType = filterType ?? "include"; const normalizedFilterValues = Array.isArray(filterValues) ? filterValues : [filterValues]; const filterValuesWithExpressions = normalizedFilterValues.filter((value => Array.isArray(value))); const filterValuesWithoutExpressions = normalizedFilterValues.filter((value => !Array.isArray(value))); const filterExpression = filterValuesWithoutExpressions.length ? [getFilterExpression(filterValuesWithoutExpressions, column)] : []; const composedFilterValues = _m_utils.default.combineFilters([...filterExpression, ...filterValuesWithExpressions], "or"); return { type: headerFilterValueType, columnId: columnId, filterType: normalizedFilterType, filterValues: filterValues, composedFilterValues: composedFilterValues } }; exports.getHeaderFilterInfo = getHeaderFilterInfo; exports.getHeaderFilterInfoArray = columns => columns.map((column => getHeaderFilterInfo(column))).filter((info => !!info)); exports.getComposedHeaderFilter = headerFilterInfoArray => headerFilterInfoArray.filter((_ref2 => { let { type: type } = _ref2; return "empty" !== type })).reduce(((result, _ref3, idx, infoArray) => { let { composedFilterValues: composedFilterValues } = _ref3; result.push(composedFilterValues); if (idx < infoArray.length - 1) { result.push("and") } return result }), []) }, 10171: /*!************************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/new/grid_core/filtering/header_filter/view.js ***! \************************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.HeaderFilterPopupView = exports.HeaderFilterPopupComponent = void 0; var _inferno = __webpack_require__( /*! inferno */ 76231); var _renderer = (e = __webpack_require__( /*! ../../../../../../core/renderer */ 64553), e && e.__esModule ? e : { default: e }); var e; var _signalsCore = __webpack_require__( /*! @preact/signals-core */ 70037); var _m_header_filter_core = __webpack_require__( /*! ../../../../../grids/grid_core/header_filter/m_header_filter_core */ 83040); var _view = __webpack_require__( /*! ../../../../../grids/new/grid_core/core/view */ 3455); var _widget_mock = __webpack_require__( /*! ../../../../../grids/new/grid_core/widget_mock */ 87354); var _const = __webpack_require__( /*! ../../const */ 46793); var _view_controller = __webpack_require__( /*! ./view_controller */ 58814); class HeaderFilterPopupComponent extends _inferno.Component { constructor() { super(...arguments); this.containerRef = (0, _inferno.createRef)() } render() { return (0, _inferno.createVNode)(1, "div", _const.CLASSES.excludeFlexBox, null, 1, null, null, this.containerRef) } componentDidMount() { this.props.oldHeaderFilterPopup.render((0, _renderer.default)(this.containerRef.current ?? void 0)) } componentDidUpdate() { this.props.oldHeaderFilterPopup.render((0, _renderer.default)(this.containerRef.current ?? void 0)) } componentWillUnmount() { this.props.oldHeaderFilterPopup.dispose() } } exports.HeaderFilterPopupComponent = HeaderFilterPopupComponent; class HeaderFilterPopupView extends _view.View { constructor(widget, headerFilterViewController) { super(); this.widget = widget; this.headerFilterViewController = headerFilterViewController; this.component = HeaderFilterPopupComponent; this.oldHeaderFilterPopup = new _m_header_filter_core.HeaderFilterView(this.widget); this.oldHeaderFilterPopup.init(); (0, _signalsCore.effect)((() => { const popupState = this.headerFilterViewController.popupState.value; if (!popupState) { return } this.oldHeaderFilterPopup.showHeaderFilterMenu((0, _renderer.default)(popupState.element), popupState.options) })) } getProps() { return (0, _signalsCore.computed)((() => ({ oldHeaderFilterPopup: this.oldHeaderFilterPopup }))) } } exports.HeaderFilterPopupView = HeaderFilterPopupView; HeaderFilterPopupView.dependencies = [_widget_mock.WidgetMock, _view_controller.HeaderFilterViewController] }, 58814: /*!***********************************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/new/grid_core/filtering/header_filter/view_controller.js ***! \***********************************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.HeaderFilterViewController = void 0; var _signalsCore = __webpack_require__( /*! @preact/signals-core */ 70037); var _m_utils = __webpack_require__( /*! ../../../../../filter_builder/m_utils */ 29498); var _m_utils2 = (e = __webpack_require__( /*! ../../../../../grids/grid_core/m_utils */ 53226), e && e.__esModule ? e : { default: e }); var e; var _index = __webpack_require__( /*! ../../columns_controller/index */ 50875); var _utils = __webpack_require__( /*! ../../columns_controller/utils */ 26054); var _index2 = __webpack_require__( /*! ../../data_controller/index */ 61124); var _options_controller = __webpack_require__( /*! ../../options_controller/options_controller */ 76385); var _filter_controller = __webpack_require__( /*! ../filter_controller */ 24628); var _utils2 = __webpack_require__( /*! ../utils */ 18066); var _legacy_header_filter = __webpack_require__( /*! ./legacy_header_filter */ 65518); var _utils3 = __webpack_require__( /*! ./utils */ 1261); function _extends() { return _extends = Object.assign ? Object.assign.bind() : function(n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) { ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]) } } return n }, _extends.apply(null, arguments) } class HeaderFilterViewController { constructor(options, dataController, columnsController, filterController) { this.options = options; this.dataController = dataController; this.columnsController = columnsController; this.filterController = filterController; this.popupStateInternal = (0, _signalsCore.signal)(null); this.popupState = this.popupStateInternal } openPopup(element, column, onFilterCloseCallback, customApply, isFilterBuilder) { const rootDataSource = this.dataController.getStoreLoadAdapter(); const rootHeaderFilterOptions = this.options.oneWay("headerFilter").peek(); const filterExpression = this.getFilterExpressionWithoutCurrentColumn(column); const type = (0, _legacy_header_filter.getHeaderFilterListType)(column); const { columnsController: columnsController } = this; const popupOptions = { type: type, column: _extends({}, column), isFilterBuilder: isFilterBuilder, headerFilter: _extends({}, column.headerFilter), filterType: column.filterType, filterValues: Array.isArray(column.filterValues) ? [...column.filterValues] : column.filterValues, apply() { ((filterValues, filterType) => { if (customApply) { customApply(filterValues) } else { columnsController.updateColumns((columns => { const index = (0, _utils.getColumnIndexByName)(columns, column.name); const newColumns = [...columns]; newColumns[index] = _extends({}, newColumns[index], { filterValues: Array.isArray(filterValues) ? [...filterValues] : filterValues, filterType: filterType }); return newColumns })) } null === onFilterCloseCallback || void 0 === onFilterCloseCallback || onFilterCloseCallback() })(this.filterValues, this.filterType) }, hidePopupCallback: () => { this.popupStateInternal.value = null; null === onFilterCloseCallback || void 0 === onFilterCloseCallback || onFilterCloseCallback() } }; popupOptions.dataSource = (0, _legacy_header_filter.getDataSourceOptions)(rootDataSource, popupOptions, { texts: rootHeaderFilterOptions.texts }, filterExpression); this.popupStateInternal.value = { element: element, options: popupOptions } } closePopup() { this.popupStateInternal.value = null } removeColumnFromFilters(appliedFilters, excludedColumn) { const columnId = (0, _utils3.getColumnIdentifier)(excludedColumn); const filterPanel = (0, _m_utils.removeFieldConditionsFromFilter)(appliedFilters.filterPanel, columnId); const headerFilter = (0, _m_utils.removeFieldConditionsFromFilter)(appliedFilters.headerFilter, columnId); return { filterPanel: filterPanel, headerFilter: headerFilter, search: appliedFilters.search } } combineFilterExpressions(filterExpressions) { if (!filterExpressions || 0 === filterExpressions.length) { return } return _m_utils2.default.combineFilters(filterExpressions) } getFilterExpressionWithoutCurrentColumn(column) { const appliedFilters = this.filterController.appliedFilters.peek(); const filtersWithoutCurrentColumn = this.removeColumnFromFilters(appliedFilters, column); const filterableColumns = this.columnsController.filterableColumns.peek(); const customOperations = this.filterController.customOperations.peek(); const filterSyncEnabled = this.filterController.filterSyncEnabled.peek(); const appliedFilterExpresssionsArray = (0, _utils2.getAppliedFilterExpressions)(filtersWithoutCurrentColumn, filterableColumns, customOperations, filterSyncEnabled); return this.combineFilterExpressions(appliedFilterExpresssionsArray) } } exports.HeaderFilterViewController = HeaderFilterViewController; HeaderFilterViewController.dependencies = [_options_controller.OptionsController, _index2.DataController, _index.ColumnsController, _filter_controller.FilterController] }, 92743: /*!***********************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/new/grid_core/filtering/index.js ***! \***********************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "FilterController", { enumerable: true, get: function() { return _filter_controller.FilterController } }); Object.defineProperty(exports, "FilterPanelView", { enumerable: true, get: function() { return filterPanel_1.FilterPanelView } }); Object.defineProperty(exports, "PublicMethods", { enumerable: true, get: function() { return _public_methods.PublicMethods } }); Object.defineProperty(exports, "defaultOptions", { enumerable: true, get: function() { return _options.defaultOptions } }); exports.filterPanel = void 0; var _filter_controller = __webpack_require__( /*! ./filter_controller */ 24628); var filterPanel_1 = function(e, r) { if (!r && e && e.__esModule) { return e } if (null === e || "object" != typeof e && "function" != typeof e) { return { default: e } } var t = _getRequireWildcardCache(r); if (t && t.has(e)) { return t.get(e) } var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) { if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u] } } return n.default = e, t && t.set(e, n), n }(__webpack_require__( /*! ./filter_panel/index */ 56375)); exports.filterPanel = filterPanel_1; var _options = __webpack_require__( /*! ./options */ 75229); var _public_methods = __webpack_require__( /*! ./public_methods */ 86711); function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) { return null } var r = new WeakMap, t = new WeakMap; return (_getRequireWildcardCache = function(e) { return e ? t : r })(e) } }, 3596: /*!*************************************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/new/grid_core/filtering/legacy_filter_custom_operations.js ***! \*************************************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.anyOf = function(config) { return (0, _extend.extend)(baseOperation(config), { name: "anyof", icon: "selectall", caption: _message.default.format("dxFilterBuilder-filterOperationAnyOf") }) }; exports.noneOf = function(config) { const baseOp = baseOperation(config); return (0, _extend.extend)({}, baseOp, { calculateFilterExpression(filterValue, field, fields) { const baseFilter = baseOp.calculateFilterExpression(filterValue, field, fields); if (!baseFilter || 0 === baseFilter.length) { return null } return "!" === baseFilter[0] ? baseFilter : ["!", baseFilter] }, name: "noneof", icon: "unselectall", caption: _message.default.format("dxFilterBuilder-filterOperationNoneOf") }) }; var _message = _interopRequireDefault(__webpack_require__( /*! ../../../../../common/core/localization/message */ 4671)); var _data_source = __webpack_require__( /*! ../../../../../common/data/data_source/data_source */ 68216); var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../../../../core/renderer */ 64553)); var _deferred = __webpack_require__( /*! ../../../../../core/utils/deferred */ 87739); var _extend = __webpack_require__( /*! ../../../../../core/utils/extend */ 52576); var _ui = _interopRequireDefault(__webpack_require__( /*! ../../../../../ui/widget/ui.errors */ 35185)); var _m_utils = __webpack_require__( /*! ../../../../filter_builder/m_utils */ 29498); var _legacy_header_filter = __webpack_require__( /*! ./header_filter/legacy_header_filter */ 65518); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } function baseOperation(config) { const { getHeaderFilterController: getHeaderFilterController } = config; const getFullText = function(itemText, parentText) { return parentText ? `${parentText}/${itemText}` : itemText }; const getSelectedItemsTexts = function(items, parentText) { let result = []; items.forEach((item => { if (item.items) { const selectedItemsTexts = getSelectedItemsTexts(item.items, getFullText(item.text, parentText)); result = result.concat(selectedItemsTexts) } item.selected && result.push(getFullText(item.text, parentText)) })); return result }; return { dataTypes: ["string", "date", "datetime", "number", "boolean", "object"], calculateFilterExpression: function(filterValue, field, fields) { const result = []; const lastIndex = filterValue.length - 1; filterValue && filterValue.forEach(((value, index) => { if ((0, _m_utils.isCondition)(value) || (0, _m_utils.isGroup)(value)) { const filterExpression = (0, _m_utils.getFilterExpression)(value, fields, [], "headerFilter"); result.push(filterExpression) } else { const filterExpression = (0, _m_utils.getFilterExpression)([field.dataField ?? field.name, "=", value], fields, [], "headerFilter"); result.push(filterExpression) } index !== lastIndex && result.push("or") })); if (1 === result.length) { return result[0] } return result }, editorTemplate(conditionInfo, container) { const headerFilterController = getHeaderFilterController(); const div = (0, _renderer.default)("
").addClass("dx-filterbuilder-item-value-text").appendTo(container); const originalColumn = config.columnOption(conditionInfo.field.dataField); const column = (0, _extend.extend)(true, {}, originalColumn); (0, _m_utils.renderValueText)(div, conditionInfo.text && conditionInfo.text.split("|")); column.filterType = "include"; column.filterValues = conditionInfo.value ? conditionInfo.value.slice() : []; headerFilterController.showHeaderFilterMenuBase({ columnElement: div, column: column, customApply(filterValues) { value = filterValues, void conditionInfo.setValue(value); var value; headerFilterController.hideHeaderFilterMenu(); conditionInfo.closeEditor() }, onHidden() { conditionInfo.closeEditor() }, isFilterBuilder: true }); return container }, customizeText: function(fieldInfo, options) { options = options || {}; const headerFilterController = getHeaderFilterController(); const { value: value } = fieldInfo; let column = config.columnOption(fieldInfo.field.dataField); const headerFilter = column && column.headerFilter; const lookup = column && column.lookup; const values = options.values || [value]; if (headerFilter && headerFilter.dataSource || lookup && lookup.dataSource) { const result = new _deferred.Deferred; const itemsDeferred = options.items || new _deferred.Deferred; if (!options.items) { column = (0, _extend.extend)({}, column, { filterType: "include", filterValues: values }); const dataSourceOptions = headerFilterController.getDataSource(column); dataSourceOptions.paginate = false; const dataSource = new _data_source.DataSource(dataSourceOptions); const key = dataSource.store().key(); if (key) { const { values: values } = options; if (values && values.length > 1) { const filter = values.reduce(((result, value) => { if (result.length) { result.push("or") } result.push([key, "=", value]); return result }), []); dataSource.filter(filter) } else { dataSource.filter([key, "=", fieldInfo.value]) } } else if (fieldInfo.field.calculateDisplayValue) { _ui.default.log("W1017") } options.items = itemsDeferred; dataSource.load().done(itemsDeferred.resolve) } itemsDeferred.done((items => { const index = values.indexOf(fieldInfo.value); result.resolve(getSelectedItemsTexts(items, null)[index]) })); return result } const headerFilterOptions = config.getHeaderFilterOptions(); const text = (0, _legacy_header_filter.getHeaderItemText)(value, column, 0, headerFilterOptions); return text } } } }, 75229: /*!*************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/new/grid_core/filtering/options.js ***! \*************************************************************************************************/ function(__unused_webpack_module, exports) { Object.defineProperty(exports, "__esModule", { value: true }); exports.defaultOptions = void 0; exports.defaultOptions = { filterValue: null } }, 86711: /*!********************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/new/grid_core/filtering/public_methods.js ***! \********************************************************************************************************/ function(__unused_webpack_module, exports) { Object.defineProperty(exports, "__esModule", { value: true }); exports.PublicMethods = function(GridCore) { return class extends GridCore { clearFilter() { this.filterSyncController.clearFilters() } getCombinedFilter() { return this.filterController.displayFilter.peek() } } } }, 18066: /*!***********************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/new/grid_core/filtering/utils.js ***! \***********************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.normalizeFilterWithSelectors = exports.getAppliedFilterExpressions = void 0; var _m_type = __webpack_require__( /*! ../../../../core/utils/m_type */ 39918); var _m_utils = __webpack_require__( /*! ../../../../filter_builder/m_utils */ 29498); var _utils = __webpack_require__( /*! ../columns_controller/utils */ 26054); exports.getAppliedFilterExpressions = (appliedFilters, columns, customOperations, filterSyncEnabled) => { const filters = [(0, _m_utils.getFilterExpression)(appliedFilters.filterPanel, (0, _utils.addDataFieldToComputedColumns)(columns), customOperations, "filterBuilder"), appliedFilters.search]; if (!filterSyncEnabled) { filters.push((0, _m_utils.getFilterExpression)(appliedFilters.headerFilter, (0, _utils.addDataFieldToComputedColumns)(columns), customOperations, "headerFilter")) } return filters.filter((filter => filter)) }; const normalizeFilterWithSelectors = (filter, columns, remoteFiltering, columnMap) => { if (!Array.isArray(filter)) { return filter } if (!columnMap) { columnMap = new Map(columns.map((column => [column.dataField ?? column.name, column]))) } const resultFilter = [...filter]; if ((0, _m_type.isString)(resultFilter[0]) && "!" !== resultFilter[0]) { const column = columnMap.get(resultFilter[0]); if (column && !remoteFiltering) { resultFilter[0] = column.calculateFieldValue.bind(column) } } for (let i = 0; i < resultFilter.length; i += 1) { resultFilter[i] = normalizeFilterWithSelectors(resultFilter[i], columns, remoteFiltering, columnMap) } return resultFilter }; exports.normalizeFilterWithSelectors = normalizeFilterWithSelectors }, 93445: /*!************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/new/grid_core/icon.js ***! \************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.Icon = function(props) { const classes = (0, _combine_classes.combineClasses)({ "dx-icon": true, [`dx-icon-${props.name}`]: true, [String(props.className)]: !!props.className }); return (0, _inferno.createVNode)(1, "div", classes, null, 1, { "aria-label": props["aria-label"], role: props["aria-label"] ? "img" : void 0, onClick: props.onClick }) }; var _inferno = __webpack_require__( /*! inferno */ 76231); var _combine_classes = __webpack_require__( /*! ../../../core/utils/combine_classes */ 46190) }, 24672: /*!*************************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/new/grid_core/inferno_wrappers/context_menu.js ***! \*************************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.ContextMenu = void 0; var _context_menu = (e = __webpack_require__( /*! ../../../../../ui/context_menu */ 34378), e && e.__esModule ? e : { default: e }); var e; var _widget_wrapper = __webpack_require__( /*! ./widget_wrapper */ 44831); class ContextMenu extends _widget_wrapper.InfernoWrapper { constructor() { super(...arguments); this.contentRef = {} } getComponentFabric() { return _context_menu.default } } exports.ContextMenu = ContextMenu }, 34553: /*!*****************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/new/grid_core/inferno_wrappers/form.js ***! \*****************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.Form = void 0; var _form = (e = __webpack_require__( /*! ../../../../../ui/form */ 74075), e && e.__esModule ? e : { default: e }); var e; var _widget_wrapper = __webpack_require__( /*! ./widget_wrapper */ 44831); class Form extends _widget_wrapper.InfernoWrapper { getComponentFabric() { return _form.default } } exports.Form = Form }, 57082: /*!***********************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/new/grid_core/inferno_wrappers/load_panel.js ***! \***********************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.LoadPanel = void 0; var _load_panel = (e = __webpack_require__( /*! ../../../../../ui/load_panel */ 31876), e && e.__esModule ? e : { default: e }); var e; var _widget_wrapper = __webpack_require__( /*! ./widget_wrapper */ 44831); class LoadPanel extends _widget_wrapper.InfernoWrapper { getComponentFabric() { return _load_panel.default } } exports.LoadPanel = LoadPanel }, 29720: /*!******************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/new/grid_core/inferno_wrappers/pager.js ***! \******************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.Pager = void 0; var _pagination = (e = __webpack_require__( /*! ../../../../../ui/pagination */ 38389), e && e.__esModule ? e : { default: e }); var e; var _widget_wrapper = __webpack_require__( /*! ./widget_wrapper */ 44831); class Pager extends _widget_wrapper.InfernoWrapper { getComponentFabric() { return _pagination.default } } exports.Pager = Pager }, 36525: /*!******************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/new/grid_core/inferno_wrappers/popup.js ***! \******************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.Popup = void 0; var _inferno = __webpack_require__( /*! inferno */ 76231); var _popup = (e = __webpack_require__( /*! ../../../../../ui/popup */ 97643), e && e.__esModule ? e : { default: e }); var e; var _utils = __webpack_require__( /*! ./utils */ 72254); var _widget_wrapper = __webpack_require__( /*! ./widget_wrapper */ 44831); function _extends() { return _extends = Object.assign ? Object.assign.bind() : function(n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) { ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]) } } return n }, _extends.apply(null, arguments) } class Popup extends _widget_wrapper.InfernoWrapper { constructor() { super(...arguments); this.contentRef = {} } render() { return (0, _inferno.createFragment)([super.render(), this.contentRef.current && (0, _inferno.createPortal)(this.props.children, this.contentRef.current)], 0) } transformRef(props) { var _props; if (null !== (_props = props) && void 0 !== _props && null !== (_props = _props.position) && void 0 !== _props && null !== (_props = _props.of) && void 0 !== _props && _props.current) { props = _extends({}, props, { position: _extends({}, props.position, { of: (0, _utils.wrapRef)(props.position.of) }) }) } return props } createComponent(ref, props) { return super.createComponent(ref, this.transformRef(props)) } updateComponentOptions(prevProps, props) { super.updateComponentOptions(prevProps, this.transformRef(props)) } getComponentFabric() { return _popup.default } componentDidMount() { super.componentDidMount(); this.contentRef.current = this.component.$content().get(0); this.setState({}) } } exports.Popup = Popup }, 16314: /*!*********************************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/new/grid_core/inferno_wrappers/root_element_updater.js ***! \*********************************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.RootElementUpdater = void 0; exports.normalizeEventName = normalizeEventName; var _inferno = __webpack_require__( /*! inferno */ 76231); const _excluded = ["rootElementRef", "ref", "className", "children"]; function normalizeEventName(name) { return name.substring(2).toLowerCase() } class RootElementUpdater extends _inferno.Component { constructor() { super(...arguments); this.previousClasses = []; this.previousAttributes = {} } render() { return this.props.children } updateClasses(element) { const currentClassName = this.props.className; const currentClasses = (null === currentClassName || void 0 === currentClassName ? void 0 : currentClassName.split(" ")) ?? []; const addedClasses = currentClasses.filter((cls => !this.previousClasses.includes(cls))); const removedClasses = this.previousClasses.filter((cls => !currentClasses.includes(cls))); addedClasses.forEach((cls => { element.classList.add(cls) })); removedClasses.forEach((cls => { element.classList.remove(cls) })); this.previousClasses = currentClasses } updateAttributes(element) { const _this$props = this.props, currentAttributes = function(r, e) { if (null == r) { return {} } var t = {}; for (var n in r) { if ({}.hasOwnProperty.call(r, n)) { if (e.includes(n)) { continue } t[n] = r[n] } } return t }(_this$props, _excluded); const currentAttributeKeys = Object.keys(currentAttributes); const previousAttributeKeys = Object.keys(this.previousAttributes); currentAttributeKeys.forEach((attrName => { if (attrName.startsWith("on")) { if (previousAttributeKeys.includes(attrName)) { element.removeEventListener(normalizeEventName(attrName), this.previousAttributes[attrName]) } element.addEventListener(normalizeEventName(attrName), currentAttributes[attrName]) } else { element[attrName] = currentAttributes[attrName] } })); const removedAttrKeys = previousAttributeKeys.filter((attrName => !currentAttributeKeys.includes(attrName))); removedAttrKeys.forEach((attrName => { if (attrName.startsWith("on")) { element.removeEventListener(normalizeEventName(attrName), this.previousAttributes[attrName]) } else { element.removeAttribute(attrName) } })); this.previousAttributes = currentAttributes } updateClassesAndAttributes() { const element = this.props.rootElementRef.current; if (!element) { throw new Error("root element is not provided") } this.updateClasses(element); this.updateAttributes(element) } componentDidMount() { this.updateClassesAndAttributes() } componentDidUpdate() { this.updateClassesAndAttributes() } } exports.RootElementUpdater = RootElementUpdater }, 90882: /*!***********************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/new/grid_core/inferno_wrappers/scrollable.js ***! \***********************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.Scrollable = void 0; var _inferno = __webpack_require__( /*! inferno */ 76231); var _ui = (e = __webpack_require__( /*! ../../../../../ui/scroll_view/ui.scrollable */ 20876), e && e.__esModule ? e : { default: e }); var e; var _widget_wrapper = __webpack_require__( /*! ./widget_wrapper */ 44831); class Scrollable extends _widget_wrapper.InfernoWrapper { constructor() { super(...arguments); this.contentRef = {} } render() { return (0, _inferno.createFragment)([super.render(), this.contentRef.current && (0, _inferno.createPortal)(this.props.children, this.contentRef.current)], 0) } getComponentFabric() { return _ui.default } updateScrollTop() { var _this$component; null === (_this$component = this.component) || void 0 === _this$component || _this$component.scrollTo(this.props.scrollTop) } componentDidMount() { if (void 0 === this.props.useNative) { delete this.props.useNative } super.componentDidMount(); this.contentRef.current = this.component.$content().get(0); this.setState({}); this.updateScrollTop() } componentDidUpdate(prevProps) { super.componentDidUpdate(prevProps); this.updateScrollTop() } clientHeight() { return this.component.clientHeight() } } exports.Scrollable = Scrollable }, 87819: /*!*********************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/new/grid_core/inferno_wrappers/sortable.js ***! \*********************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.Sortable = void 0; var _inferno = __webpack_require__( /*! inferno */ 76231); var _sortable = (e = __webpack_require__( /*! ../../../../../ui/sortable */ 95305), e && e.__esModule ? e : { default: e }); var e; var _widget_wrapper = __webpack_require__( /*! ./widget_wrapper */ 44831); class Sortable extends _widget_wrapper.InfernoWrapper { render() { return (0, _inferno.createVNode)(1, "div", this.props.className, this.props.children, 0, null, null, this.ref) } getComponentFabric() { return _sortable.default } } exports.Sortable = Sortable }, 94681: /*!*****************************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/new/grid_core/inferno_wrappers/template_wrapper.js ***! \*****************************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.TemplateWrapper = function(template) { return class extends _base_component.BaseInfernoComponent { constructor() { super(...arguments); this.ref = (0, _inferno.createRef)() } renderTemplate() { (0, _renderer.default)(this.ref.current).empty(); template.render({ container: (0, _renderer.default)(this.ref.current), model: this.props }) } render() { return (0, _inferno.createVNode)(1, "div", null, null, 1, null, null, this.ref) } componentDidUpdate() { this.renderTemplate() } componentDidMount() { this.renderTemplate() } } }; var _inferno = __webpack_require__( /*! inferno */ 76231); var _renderer = (e = __webpack_require__( /*! ../../../../../core/renderer */ 64553), e && e.__esModule ? e : { default: e }); var e; var _base_component = __webpack_require__( /*! ../../../../core/r1/runtime/inferno/base_component */ 5428) }, 47836: /*!******************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/new/grid_core/inferno_wrappers/toast.js ***! \******************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.Toast = void 0; var _toast = (e = __webpack_require__( /*! ../../../../../ui/toast */ 36574), e && e.__esModule ? e : { default: e }); var e; var _widget_wrapper = __webpack_require__( /*! ./widget_wrapper */ 44831); class Toast extends _widget_wrapper.InfernoWrapper { getComponentFabric() { return _toast.default } } exports.Toast = Toast }, 48696: /*!********************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/new/grid_core/inferno_wrappers/toolbar.js ***! \********************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.Toolbar = void 0; __webpack_require__( /*! ../../../../../ui/button */ 64973); __webpack_require__( /*! ../../../../../ui/check_box */ 94319); var _toolbar = (e = __webpack_require__( /*! ../../../../../ui/toolbar */ 2850), e && e.__esModule ? e : { default: e }); var e; var _widget_wrapper = __webpack_require__( /*! ./widget_wrapper */ 44831); const _excluded = ["items"]; const excludedStateOptions = ["onInput", "inputAttr", "elementAttr"]; class Toolbar extends _widget_wrapper.InfernoWrapper { getComponentFabric() { return _toolbar.default } updateComponentOptions(prevProps, props) { if (Array.isArray(props.items) && Array.isArray(prevProps.items) && props.items.length === prevProps.items.length) { var _props$items; null === (_props$items = props.items) || void 0 === _props$items || _props$items.forEach(((item, index) => { if (props.items[index] !== prevProps.items[index]) { const prevItem = prevProps.items[index]; Object.keys(item).forEach((key => { if (item[key] !== prevItem[key]) { if ("options" !== key) { var _this$component; null === (_this$component = this.component) || void 0 === _this$component || _this$component.option(`items[${index}].${key}`, props.items[index][key]) } else { const prevOptions = prevItem[key]; const currentOptions = item[key]; Object.keys(currentOptions).forEach((option => { const isOptionChanged = !(null !== prevOptions && void 0 !== prevOptions && prevOptions[option]) || (null === currentOptions || void 0 === currentOptions ? void 0 : currentOptions[option]) !== prevOptions[option]; const isExcludedOption = excludedStateOptions.includes(option); if (isOptionChanged && !isExcludedOption) { var _this$component2; null === (_this$component2 = this.component) || void 0 === _this$component2 || _this$component2.option(`items[${index}].${key}.${option}`, props.items[index][key][option]) } })) } } })) } })); const propsToUpdate = function(r, e) { if (null == r) { return {} } var t = {}; for (var n in r) { if ({}.hasOwnProperty.call(r, n)) { if (e.includes(n)) { continue } t[n] = r[n] } } return t }(props, _excluded); super.updateComponentOptions(prevProps, propsToUpdate) } else { super.updateComponentOptions(prevProps, props) } } } exports.Toolbar = Toolbar }, 47127: /*!**********************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/new/grid_core/inferno_wrappers/tree_view.js ***! \**********************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.TreeView = void 0; var _common = __webpack_require__( /*! ../../../../../core/utils/common */ 17781); var _tree_view = (e = __webpack_require__( /*! ../../../../../ui/tree_view */ 4313), e && e.__esModule ? e : { default: e }); var e; var _widget_wrapper = __webpack_require__( /*! ./widget_wrapper */ 44831); const _excluded = ["selected"], _excluded2 = ["selected"]; function _objectWithoutPropertiesLoose(r, e) { if (null == r) { return {} } var t = {}; for (var n in r) { if ({}.hasOwnProperty.call(r, n)) { if (e.includes(n)) { continue } t[n] = r[n] } } return t } function _extends() { return _extends = Object.assign ? Object.assign.bind() : function(n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) { ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]) } } return n }, _extends.apply(null, arguments) } class TreeView extends _widget_wrapper.InfernoWrapper { getComponentFabric() { return _tree_view.default } updateComponentOptions(prevProps, props) { var _this$component, _this$component2; const itemsOnlySelectionChanged = this.isItemsOnlySelectionChanged(prevProps, props); const propsToUpdate = _extends({}, props); if (itemsOnlySelectionChanged) { this.updateSelection(props.items ?? []); delete propsToUpdate.items } const scrollTop = null === (_this$component = this.component) || void 0 === _this$component || null === (_this$component = _this$component.getScrollable()) || void 0 === _this$component ? void 0 : _this$component.scrollTop(); super.updateComponentOptions(prevProps, propsToUpdate); null === (_this$component2 = this.component) || void 0 === _this$component2 || null === (_this$component2 = _this$component2.getScrollable()) || void 0 === _this$component2 || _this$component2.scrollTo({ top: scrollTop }) } isItemsOnlySelectionChanged(prevProps, props) { const oldItems = (prevProps.items ?? []).map((_ref => { let restProps = _objectWithoutPropertiesLoose(_ref, _excluded); return restProps })); const newItems = (props.items ?? []).map((_ref2 => { let restProps = _objectWithoutPropertiesLoose(_ref2, _excluded2); return restProps })); const onlySelectionChanged = (0, _common.equalByValue)(oldItems, newItems); return onlySelectionChanged } updateSelection(items) { const treeView = this.component; if (!treeView) { return } const selectedKeys = treeView.getSelectedNodeKeys(); treeView.beginUpdate(); items.forEach(((item, index) => { const isSelected = selectedKeys.includes(item.id); if (item.selected && !isSelected) { treeView.selectItem(index) } if (!item.selected && isSelected) { treeView.unselectItem(index) } })); treeView.endUpdate() } } exports.TreeView = TreeView }, 72254: /*!******************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/new/grid_core/inferno_wrappers/utils.js ***! \******************************************************************************************************/ function(__unused_webpack_module, exports) { Object.defineProperty(exports, "__esModule", { value: true }); exports.wrapRef = function(ref) { return { dxRenderer: true, get 0() { return ref.current }, get: () => ref.current, length: 1 } } }, 44831: /*!***************************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/new/grid_core/inferno_wrappers/widget_wrapper.js ***! \***************************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.InfernoWrapper = void 0; var _inferno = __webpack_require__( /*! inferno */ 76231); var _config_context = __webpack_require__( /*! ../core/config_context */ 11024); function _extends() { return _extends = Object.assign ? Object.assign.bind() : function(n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) { ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]) } } return n }, _extends.apply(null, arguments) } class InfernoWrapper extends _inferno.Component { constructor() { super(...arguments); this.ref = (0, _inferno.createRef)() } render() { if (this.props.elementRef) { this.ref = this.props.elementRef } return (0, _inferno.createVNode)(1, "div", null, null, 1, { onKeyDown: this.props.onKeyDown }, null, this.ref) } getComponentOptions() { return _extends({}, this.context[_config_context.ConfigContext.id], this.props) } updateComponentRef() { if (this.props.componentRef) { this.props.componentRef.current = this.component } } updateComponentOptions(prevProps, props) { Object.keys(props).forEach((key => { if (props[key] !== prevProps[key]) { var _this$component; null === (_this$component = this.component) || void 0 === _this$component || _this$component.option(key, props[key]) } })) } createComponent(ref, props) { return new(this.getComponentFabric())(ref.current, props) } componentDidMount() { this.component = this.createComponent(this.ref, this.getComponentOptions()); this.updateComponentRef() } componentDidUpdate(prevProps) { this.updateComponentOptions(prevProps, this.getComponentOptions()); this.updateComponentRef() } componentWillUnmount() { var _this$component2; null === (_this$component2 = this.component) || void 0 === _this$component2 || _this$component2.dispose() } } exports.InfernoWrapper = InfernoWrapper }, 58761: /*!*****************************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/new/grid_core/items_controller/items_controller.js ***! \*****************************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.ItemsController = void 0; var _common = __webpack_require__( /*! ../../../../../core/utils/common */ 17781); var _format_helper = (e = __webpack_require__( /*! ../../../../../format_helper */ 2082), e && e.__esModule ? e : { default: e }); var e; var _signalsCore = __webpack_require__( /*! @preact/signals-core */ 70037); var _columns_controller = __webpack_require__( /*! ../../../../grids/new/grid_core/columns_controller/columns_controller */ 88195); var _data_controller = __webpack_require__( /*! ../../../../grids/new/grid_core/data_controller/data_controller */ 22893); var _index = __webpack_require__( /*! ../../../../grids/new/grid_core/search/index */ 61519); var _index2 = __webpack_require__( /*! ../utils/parse_value/index */ 15238); class ItemsController { constructor(dataController, columnsController, searchController) { this.dataController = dataController; this.columnsController = columnsController; this.searchController = searchController; this.selectedCardKeys = (0, _signalsCore.signal)([]); this.additionalItems = (0, _signalsCore.signal)([]); this.items = (0, _signalsCore.computed)((() => { this.searchController.highlightTextOptions.value; return this.dataController.items.value.map(((item, itemIndex) => this.createCardInfo(item, this.columnsController.visibleColumns.value, itemIndex, this.selectedCardKeys.value))).concat(this.additionalItems.value) })) } setSelectionState(keys) { this.selectedCardKeys.value = keys } findItemByKey(items, key) { return items.find((item => (0, _common.equalByValue)(item.key, key))) ?? null } createCardInfo(data, columns, itemIndex, selectedCardKeys, key) { let visible = arguments.length > 5 && void 0 !== arguments[5] ? arguments[5] : true; const itemKey = key ?? this.dataController.getDataKey(data); const fields = columns.map(((column, index) => { const value = column.calculateFieldValue(data); const displayValue = column.calculateDisplayValue(data); const formattedText = _format_helper.default.format((0, _index2.parseValue)(column, displayValue), column.format); const text = column.customizeText ? column.customizeText({ value: displayValue, valueText: formattedText }) : formattedText; const highlightedText = this.searchController.getHighlightedText(text); return { card: {}, index: index, column: column, value: value, displayValue: displayValue, text: text, highlightedText: highlightedText } })); const card = { fields: fields, columns: columns, values: fields.map((f => f.value)), key: itemKey, index: itemIndex, isSelected: !!(null !== selectedCardKeys && void 0 !== selectedCardKeys && selectedCardKeys.includes(itemKey)), data: data, visible: visible }; card.fields.forEach((f => { f.card = card })); return card } getCardByKey(key) { const items = this.items.peek(); return items.find((item => (0, _common.equalByValue)(item.key, key))) } } exports.ItemsController = ItemsController; ItemsController.dependencies = [_data_controller.DataController, _columns_controller.ColumnsController, _index.SearchController] }, 14930: /*!*********************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/new/grid_core/keyboard_navigation/const.js ***! \*********************************************************************************************************/ function(__unused_webpack_module, exports) { Object.defineProperty(exports, "__esModule", { value: true }); exports.ALL_FOCUSABLE_ELEMENTS_SELECTOR = void 0; const notInert = ":not([inert]):not([inert] *)"; const notNegTabIndex = ':not([tabindex^="-"])'; exports.ALL_FOCUSABLE_ELEMENTS_SELECTOR = [`a[href]${notInert}${notNegTabIndex}`, `area[href]${notInert}${notNegTabIndex}`, `input:not([type="hidden"]):not([type="radio"])${notInert}${notNegTabIndex}:not(:disabled)`, `input[type="radio"]${notInert}${notNegTabIndex}:not(:disabled)`, `select${notInert}${notNegTabIndex}:not(:disabled)`, `textarea${notInert}${notNegTabIndex}:not(:disabled)`, `button${notInert}${notNegTabIndex}:not(:disabled)`, `details${notInert} > summary:first-of-type${notNegTabIndex}`, `iframe${notInert}${notNegTabIndex}`, `audio[controls]${notInert}${notNegTabIndex}`, `video[controls]${notInert}${notNegTabIndex}`, `[contenteditable]${notInert}${notNegTabIndex}`, `[tabindex]${notInert}${notNegTabIndex}`].join(",") }, 31941: /*!**************************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/new/grid_core/keyboard_navigation/controller.js ***! \**************************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.KeyboardNavigationController = void 0; var _element = __webpack_require__( /*! ../../../../../core/element */ 61404); var _renderer = (e = __webpack_require__( /*! ../../../../../core/renderer */ 64553), e && e.__esModule ? e : { default: e }); var e; var _options_controller = __webpack_require__( /*! ../../../../grids/new/grid_core/options_controller/options_controller */ 76385); class KeyboardNavigationController { constructor(options) { this.options = options; this.enabled = this.options.oneWay("keyboardNavigation.enabled") } setReturnFocusTo(element) { this.returnFocusTo = element } setFirstCardElement(element) { this.firstCardElement = element } returnFocus() { if (!this.returnFocusTo) { return } if (this.returnFocusTo.isConnected) { this.returnFocusTo.focus() } else { var _this$firstCardElemen; null === (_this$firstCardElemen = this.firstCardElement) || void 0 === _this$firstCardElemen || _this$firstCardElemen.focus() } this.returnFocusTo = void 0 } onKeyDown(event) { const action = this.options.action("onKeyDown").peek(); action({ handled: event.dxHandled ?? false, event: event, element: (0, _element.getPublicElement)((0, _renderer.default)(event.target)) }) } onFocusedCardChanged(card, cardIdx, element) { const action = this.options.action("onFocusedCardChanged").peek(); action({ cardIndex: cardIdx, card: card, cardElement: (0, _element.getPublicElement)((0, _renderer.default)(element)) }) } } exports.KeyboardNavigationController = KeyboardNavigationController; KeyboardNavigationController.dependencies = [_options_controller.OptionsController] }, 58529: /*!*********************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/new/grid_core/keyboard_navigation/index.js ***! \*********************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); var _exportNames = { KeyboardNavigationController: true, KbnFocusTrap: true, KbnNavigationContainer: true, defaultOptions: true, withKeyDownHandler: true, withKbnNavigationItem: true }; Object.defineProperty(exports, "KbnFocusTrap", { enumerable: true, get: function() { return _kbn_focus_trap.KbnFocusTrap } }); Object.defineProperty(exports, "KbnNavigationContainer", { enumerable: true, get: function() { return _kbn_navigation_container.KbnNavigationContainer } }); Object.defineProperty(exports, "KeyboardNavigationController", { enumerable: true, get: function() { return _controller.KeyboardNavigationController } }); Object.defineProperty(exports, "defaultOptions", { enumerable: true, get: function() { return _options.defaultOptions } }); Object.defineProperty(exports, "withKbnNavigationItem", { enumerable: true, get: function() { return _with_navigation_item.withKbnNavigationItem } }); Object.defineProperty(exports, "withKeyDownHandler", { enumerable: true, get: function() { return _with_key_down_handler.withKeyDownHandler } }); var _controller = __webpack_require__( /*! ./controller */ 31941); var _kbn_focus_trap = __webpack_require__( /*! ./kbn_focus_trap */ 32893); var _kbn_navigation_container = __webpack_require__( /*! ./kbn_navigation_container */ 12053); var _index = __webpack_require__( /*! ./navigation_strategy/index */ 71748); Object.keys(_index).forEach((function(key) { if ("default" === key || "__esModule" === key) { return } if (Object.prototype.hasOwnProperty.call(_exportNames, key)) { return } if (key in exports && exports[key] === _index[key]) { return } Object.defineProperty(exports, key, { enumerable: true, get: function() { return _index[key] } }) })); var _options = __webpack_require__( /*! ./options */ 77755); var _with_key_down_handler = __webpack_require__( /*! ./with_key_down_handler */ 40599); var _with_navigation_item = __webpack_require__( /*! ./with_navigation_item */ 45990) }, 32893: /*!******************************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/new/grid_core/keyboard_navigation/kbn_focus_trap.js ***! \******************************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.KbnFocusTrapEnabled = exports.KbnFocusTrapDisabled = exports.KbnFocusTrap = void 0; var _inferno = __webpack_require__( /*! inferno */ 76231); var _index = __webpack_require__( /*! ../../../../grids/new/grid_core/core/events/index */ 92940); var _const = __webpack_require__( /*! ./const */ 14930); const _excluded = ["elementRef", "children"], _excluded2 = ["elementRef", "onKeyDown", "children"], _excluded3 = ["enabled", "ref", "onKeyDown"]; function _extends() { return _extends = Object.assign ? Object.assign.bind() : function(n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) { ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]) } } return n }, _extends.apply(null, arguments) } function _objectWithoutPropertiesLoose(r, e) { if (null == r) { return {} } var t = {}; for (var n in r) { if ({}.hasOwnProperty.call(r, n)) { if (e.includes(n)) { continue } t[n] = r[n] } } return t } var __decorate = (void 0, function(decorators, target, key, desc) { var d, c = arguments.length, r = c < 3 ? target : null === desc ? desc = Object.getOwnPropertyDescriptor(target, key) : desc; if ("object" === typeof Reflect && "function" === typeof Reflect.decorate) { r = Reflect.decorate(decorators, target, key, desc) } else { for (var i = decorators.length - 1; i >= 0; i--) { if (d = decorators[i]) { r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r } } } return c > 3 && r && Object.defineProperty(target, key, r), r }); var __metadata = (void 0, function(k, v) { if ("object" === typeof Reflect && "function" === typeof Reflect.metadata) { return Reflect.metadata(k, v) } }); const KbnFocusTrapDisabled = props => { const { elementRef: elementRef, children: children } = props, restProps = _objectWithoutPropertiesLoose(props, _excluded); return (0, _inferno.normalizeProps)((0, _inferno.createVNode)(1, "div", null, (0, _inferno.createVNode)(1, "div", null, [(0, _inferno.createVNode)(1, "div", null, null, 1, { "data-dx-focus-decoy": false }), children, (0, _inferno.createVNode)(1, "div", null, null, 1, { "data-dx-focus-decoy": false })], 0, { "data-dx-focus-trap-content": false }), 2, _extends({}, restProps), null, elementRef)) }; exports.KbnFocusTrapDisabled = KbnFocusTrapDisabled; class KbnFocusTrapEnabled extends _inferno.Component { constructor() { super(...arguments); this.elementRef = (0, _inferno.createRef)(); this.firstFocusDecoyRef = (0, _inferno.createRef)(); this.lastFocusDecoyRef = (0, _inferno.createRef)(); this.eventListener = new _index.NativeEventListener } componentDidMount() { this.eventListener.add(this.firstFocusDecoyRef, "focusin", this.onFirstDecoyFocusIn.bind(this)).add(this.lastFocusDecoyRef, "focusin", this.onLastDecoyFocusIn.bind(this)) } componentWillUnmount() { this.eventListener.unsubscribe() } render() { const _this$props = this.props, { children: children } = _this$props, restProps = _objectWithoutPropertiesLoose(_this$props, _excluded2); const ref = this.getActualRef(); return (0, _inferno.normalizeProps)((0, _inferno.createVNode)(1, "div", null, (0, _inferno.createVNode)(1, "div", null, [(0, _inferno.createVNode)(1, "div", null, null, 1, { "data-dx-focus-decoy": true, tabindex: 0 }, null, this.firstFocusDecoyRef), children, (0, _inferno.createVNode)(1, "div", null, null, 1, { "data-dx-focus-decoy": true, tabindex: 0 }, null, this.lastFocusDecoyRef)], 0, { "data-dx-focus-trap-content": true, onKeyDown: this.onContentKeyDown.bind(this) }), 2, _extends({ onKeyDown: this.onKeyDown.bind(this) }, restProps), null, ref)) } onKeyDown(event) { var _this$props$onKeyDown, _this$props2; if ("Enter" === event.key && !event.shiftKey) { this.focusLastChild(); _index.eventUtils.markHandled(event) } null === (_this$props$onKeyDown = (_this$props2 = this.props).onKeyDown) || void 0 === _this$props$onKeyDown || _this$props$onKeyDown.call(_this$props2, event) } onContentKeyDown(event) { if ("Escape" === event.key) { var _this$getActualRef$cu; null === (_this$getActualRef$cu = this.getActualRef().current) || void 0 === _this$getActualRef$cu || _this$getActualRef$cu.focus(); _index.eventUtils.markHandled(event) } _index.eventUtils.markIgnored(event) } onFirstDecoyFocusIn() { this.focusLastChild() } onLastDecoyFocusIn() { const firstFocusableElement = this.getInnerFocusableElement("first"); null === firstFocusableElement || void 0 === firstFocusableElement || firstFocusableElement.focus() } focusLastChild() { const lastFocusableElement = this.getInnerFocusableElement("last"); null === lastFocusableElement || void 0 === lastFocusableElement || lastFocusableElement.focus() } getActualRef() { return this.props.elementRef ?? this.elementRef } getInnerFocusableElement(type) { var _elementRef$current; const elementRef = this.getActualRef(); const focusableElements = null === (_elementRef$current = elementRef.current) || void 0 === _elementRef$current ? void 0 : _elementRef$current.querySelectorAll(_const.ALL_FOCUSABLE_ELEMENTS_SELECTOR); const focusableElementsCount = (null === focusableElements || void 0 === focusableElements ? void 0 : focusableElements.length) ?? 0; if (!focusableElements || focusableElementsCount < 3) { return null } return "first" === type ? focusableElements[1] : focusableElements[focusableElementsCount - 2] } } exports.KbnFocusTrapEnabled = KbnFocusTrapEnabled; __decorate([_index.eventHandler, __metadata("design:type", Function), __metadata("design:paramtypes", [Object]), __metadata("design:returntype", void 0)], KbnFocusTrapEnabled.prototype, "onKeyDown", null); __decorate([_index.eventHandler, __metadata("design:type", Function), __metadata("design:paramtypes", [Object]), __metadata("design:returntype", void 0)], KbnFocusTrapEnabled.prototype, "onContentKeyDown", null); __decorate([_index.eventHandler, __metadata("design:type", Function), __metadata("design:paramtypes", []), __metadata("design:returntype", void 0)], KbnFocusTrapEnabled.prototype, "onFirstDecoyFocusIn", null); __decorate([_index.eventHandler, __metadata("design:type", Function), __metadata("design:paramtypes", []), __metadata("design:returntype", void 0)], KbnFocusTrapEnabled.prototype, "onLastDecoyFocusIn", null); exports.KbnFocusTrap = props => { const { enabled: enabled, onKeyDown: onKeyDown } = props, restProps = _objectWithoutPropertiesLoose(props, _excluded3); return enabled ? (0, _inferno.normalizeProps)((0, _inferno.createComponentVNode)(2, KbnFocusTrapEnabled, _extends({}, restProps, { onKeyDown: onKeyDown }))) : (0, _inferno.normalizeProps)((0, _inferno.createComponentVNode)(2, KbnFocusTrapDisabled, _extends({}, restProps, { onKeyDown: onKeyDown }))) } }, 12053: /*!****************************************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/new/grid_core/keyboard_navigation/kbn_navigation_container.js ***! \****************************************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.KbnNavigationContainerEnabled = exports.KbnNavigationContainerDisabled = exports.KbnNavigationContainer = void 0; var _inferno = __webpack_require__( /*! inferno */ 76231); var _index = __webpack_require__( /*! ../../../../grids/new/grid_core/core/events/index */ 92940); const _excluded = ["elementRef", "navigationStrategy", "children"], _excluded2 = ["navigationStrategy", "elementRef", "children"], _excluded3 = ["enabled", "ref"]; function _extends() { return _extends = Object.assign ? Object.assign.bind() : function(n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) { ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]) } } return n }, _extends.apply(null, arguments) } function _objectWithoutPropertiesLoose(r, e) { if (null == r) { return {} } var t = {}; for (var n in r) { if ({}.hasOwnProperty.call(r, n)) { if (e.includes(n)) { continue } t[n] = r[n] } } return t } var __decorate = (void 0, function(decorators, target, key, desc) { var d, c = arguments.length, r = c < 3 ? target : null === desc ? desc = Object.getOwnPropertyDescriptor(target, key) : desc; if ("object" === typeof Reflect && "function" === typeof Reflect.decorate) { r = Reflect.decorate(decorators, target, key, desc) } else { for (var i = decorators.length - 1; i >= 0; i--) { if (d = decorators[i]) { r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r } } } return c > 3 && r && Object.defineProperty(target, key, r), r }); var __metadata = (void 0, function(k, v) { if ("object" === typeof Reflect && "function" === typeof Reflect.metadata) { return Reflect.metadata(k, v) } }); const KbnNavigationContainerDisabled = props => { const { elementRef: elementRef, children: children } = props, restProps = _objectWithoutPropertiesLoose(props, _excluded); return (0, _inferno.normalizeProps)((0, _inferno.createVNode)(1, "div", null, [(0, _inferno.createVNode)(1, "div", null, null, 1, { "data-dx-focus-decoy": false }), children, (0, _inferno.createVNode)(1, "div", null, null, 1, { "data-dx-focus-decoy": false })], 0, _extends({}, restProps, { "data-dx-focus-container": false }), null, elementRef)) }; exports.KbnNavigationContainerDisabled = KbnNavigationContainerDisabled; class KbnNavigationContainerEnabled extends _inferno.Component { constructor() { super(...arguments); this.elementRef = (0, _inferno.createRef)(); this.firstFocusDecoyRef = (0, _inferno.createRef)(); this.lastFocusDecoyRef = (0, _inferno.createRef)(); this.eventListener = new _index.NativeEventListener } componentDidMount() { const elementRef = this.getActualRef(); this.eventListener.add(elementRef, "focusout", this.onFocusOut.bind(this)).add(this.firstFocusDecoyRef, "focusin", this.onDecoyFocusIn.bind(this)).add(this.lastFocusDecoyRef, "focusin", this.onDecoyFocusIn.bind(this)) } componentDidUpdate() { this.props.navigationStrategy.normalizeActiveIdx() } componentWillUnmount() { this.eventListener.unsubscribe() } render() { const _this$props = this.props, { navigationStrategy: navigationStrategy, children: children } = _this$props, restProps = _objectWithoutPropertiesLoose(_this$props, _excluded2); const ref = this.getActualRef(); navigationStrategy.clear(); return (0, _inferno.normalizeProps)((0, _inferno.createVNode)(1, "div", null, [(0, _inferno.createVNode)(1, "div", null, null, 1, { "data-dx-focus-decoy": true, tabindex: 0 }, null, this.firstFocusDecoyRef), children, (0, _inferno.createVNode)(1, "div", null, null, 1, { "data-dx-focus-decoy": true, tabindex: 0 }, null, this.lastFocusDecoyRef)], 0, _extends({}, restProps, { onKeyDown: this.onKeyDown.bind(this), "data-dx-focus-container": true }), null, ref)) } onKeyDown(event) { const { navigationStrategy: navigationStrategy, onKeyDown: onKeyDown } = this.props; const elementRef = this.getActualRef(); if ("Tab" === event.key) { var _elementRef$current; navigationStrategy.setActiveItem(0, false); null === (_elementRef$current = elementRef.current) || void 0 === _elementRef$current || _elementRef$current.setAttribute("inert", ""); _index.eventUtils.markHandled(event) } null === onKeyDown || void 0 === onKeyDown || onKeyDown(event) } onFocusOut() { var _elementRef$current2; const elementRef = this.getActualRef(); null === (_elementRef$current2 = elementRef.current) || void 0 === _elementRef$current2 || _elementRef$current2.removeAttribute("inert") } onDecoyFocusIn() { const { navigationStrategy: navigationStrategy, onFocusMoved: onFocusMoved } = this.props; navigationStrategy.setActiveItem(0, true); const nextActiveItem = navigationStrategy.getActiveItem(); if (nextActiveItem) { null === onFocusMoved || void 0 === onFocusMoved || onFocusMoved(nextActiveItem.idx, nextActiveItem.element) } } getActualRef() { return this.props.elementRef ?? this.elementRef } } exports.KbnNavigationContainerEnabled = KbnNavigationContainerEnabled; __decorate([_index.eventHandler, __metadata("design:type", Function), __metadata("design:paramtypes", [Object]), __metadata("design:returntype", void 0)], KbnNavigationContainerEnabled.prototype, "onKeyDown", null); __decorate([_index.eventHandler, __metadata("design:type", Function), __metadata("design:paramtypes", []), __metadata("design:returntype", void 0)], KbnNavigationContainerEnabled.prototype, "onFocusOut", null); __decorate([_index.eventHandler, __metadata("design:type", Function), __metadata("design:paramtypes", []), __metadata("design:returntype", void 0)], KbnNavigationContainerEnabled.prototype, "onDecoyFocusIn", null); exports.KbnNavigationContainer = props => { const { enabled: enabled } = props, restProps = _objectWithoutPropertiesLoose(props, _excluded3); return enabled ? (0, _inferno.normalizeProps)((0, _inferno.createComponentVNode)(2, KbnNavigationContainerEnabled, _extends({}, restProps))) : (0, _inferno.normalizeProps)((0, _inferno.createComponentVNode)(2, KbnNavigationContainerDisabled, _extends({}, restProps))) } }, 59755: /*!****************************************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/new/grid_core/keyboard_navigation/navigation_strategy/base.js ***! \****************************************************************************************************************************/ function(__unused_webpack_module, exports) { Object.defineProperty(exports, "__esModule", { value: true }); exports.NavigationStrategyBase = void 0; exports.NavigationStrategyBase = class { constructor() { this.items = []; this.activeIdx = 0 } setItem(idx, item) { this.items[idx] = item } clear() { this.items = [] } normalizeActiveIdx() { if (!this.items[this.activeIdx]) { this.activeIdx = 0 } } focusActiveItem() { const activeItem = this.items[this.activeIdx]; null === activeItem || void 0 === activeItem || activeItem.focus() } getActiveItem() { const activeItem = this.items[this.activeIdx]; const element = null === activeItem || void 0 === activeItem ? void 0 : activeItem.getElement(); if (!activeItem || !element) { return null } return { idx: this.activeIdx, element: element } } setActiveItem(idx, focus) { if (!this.items[idx]) { return } this.activeIdx = idx; if (focus) { this.focusActiveItem() } } getNewActiveItem(action) { const prevActiveItem = this.getActiveItem(); const result = action(); const nextActiveItem = this.getActiveItem(); return !!nextActiveItem && (null === prevActiveItem || void 0 === prevActiveItem ? void 0 : prevActiveItem.element) !== (null === nextActiveItem || void 0 === nextActiveItem ? void 0 : nextActiveItem.element) ? [result, nextActiveItem] : [result, null] } } }, 33981: /*!***************************************************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/new/grid_core/keyboard_navigation/navigation_strategy/horizontal_list.js ***! \***************************************************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.NavigationStrategyHorizontalList = void 0; var _base = __webpack_require__( /*! ./base */ 59755); class NavigationStrategyHorizontalList extends _base.NavigationStrategyBase { onKeyDown(event) { switch (event.key) { case "ArrowLeft": this.moveActiveElement(-1); return true; case "ArrowRight": this.moveActiveElement(1); return true; default: return false } } moveActiveElement(idxShift) { const currentIdx = this.activeIdx; if (currentIdx < 0) { this.focusActiveItem(); return } const nextIdx = currentIdx + idxShift; this.setActiveItem(nextIdx, true) } } exports.NavigationStrategyHorizontalList = NavigationStrategyHorizontalList }, 71748: /*!*****************************************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/new/grid_core/keyboard_navigation/navigation_strategy/index.js ***! \*****************************************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "NavigationStrategyBase", { enumerable: true, get: function() { return _base.NavigationStrategyBase } }); Object.defineProperty(exports, "NavigationStrategyHorizontalList", { enumerable: true, get: function() { return _horizontal_list.NavigationStrategyHorizontalList } }); Object.defineProperty(exports, "NavigationStrategyMatrix", { enumerable: true, get: function() { return _matrix.NavigationStrategyMatrix } }); var _base = __webpack_require__( /*! ./base */ 59755); var _horizontal_list = __webpack_require__( /*! ./horizontal_list */ 33981); var _matrix = __webpack_require__( /*! ./matrix */ 1927) }, 1927: /*!******************************************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/new/grid_core/keyboard_navigation/navigation_strategy/matrix.js ***! \******************************************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.NavigationStrategyMatrix = void 0; var _base = __webpack_require__( /*! ./base */ 59755); class NavigationStrategyMatrix extends _base.NavigationStrategyBase { constructor(columnsCount) { super(); this.columnsCount = columnsCount } updateColumnsCount(columnsCount) { this.columnsCount = columnsCount } onKeyDown(event) { return this.activeIdx >= 0 ? this.handleMovement(event) : false } handleMovement(event) { switch (true) { case "ArrowUp" === event.key: this.moveActiveElement(-1, 0); return true; case "ArrowDown" === event.key: this.moveActiveElement(1, 0); return true; case "ArrowLeft" === event.key: this.moveActiveElement(0, -1); return true; case "ArrowRight" === event.key: this.moveActiveElement(0, 1); return true; case event.ctrlKey && "Home" === event.key: this.moveToFirstInFirstRow(); return true; case "Home" === event.key: this.moveToFirstInRow(); return true; case event.ctrlKey && "End" === event.key: this.moveToLastInLastRow(); return true; case "End" === event.key: this.moveToLastInRow(); return true; default: return false } } moveActiveElement(rowShift, columnShift) { const currentIdx = this.activeIdx; const { columnsCount: columnsCount, items: { length: itemsCount } } = this; const rowCount = Math.ceil(itemsCount / columnsCount); const currentColumnIdx = currentIdx % columnsCount; const currentRowIdx = Math.floor(currentIdx / columnsCount); const nextColumnIdx = currentColumnIdx + columnShift; const nextRowIdx = currentRowIdx + rowShift; const nextIdx = currentIdx + columnShift + columnsCount * rowShift; if (nextIdx >= itemsCount || nextColumnIdx < 0 || nextColumnIdx >= columnsCount || nextRowIdx < 0 || nextRowIdx >= rowCount) { this.focusActiveItem(); return } this.setActiveItem(nextIdx, true) } moveToFirstInRow() { const currentIdx = this.activeIdx; const { columnsCount: columnsCount } = this; const currentColumnIdx = currentIdx % columnsCount; if (0 === currentColumnIdx) { return } this.moveActiveElement(0, -currentColumnIdx) } moveToLastInRow() { const currentIdx = this.activeIdx; const { columnsCount: columnsCount } = this; const currentColumnIdx = currentIdx % columnsCount; if (currentColumnIdx === columnsCount - 1) { return } this.moveActiveElement(0, columnsCount - currentColumnIdx - 1) } moveToFirstInFirstRow() { this.setActiveItem(0, true) } moveToLastInLastRow() { const { items: { length: itemsCount } } = this; this.setActiveItem(itemsCount - 1, true) } } exports.NavigationStrategyMatrix = NavigationStrategyMatrix }, 77755: /*!***********************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/new/grid_core/keyboard_navigation/options.js ***! \***********************************************************************************************************/ function(__unused_webpack_module, exports) { Object.defineProperty(exports, "__esModule", { value: true }); exports.defaultOptions = void 0; exports.defaultOptions = { keyboardNavigation: { enabled: true } } }, 50860: /*!*********************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/new/grid_core/keyboard_navigation/utils.js ***! \*********************************************************************************************************/ function(__unused_webpack_module, exports) { Object.defineProperty(exports, "__esModule", { value: true }); exports.normalizeKeyName = exports.getKeyWithModifications = exports.SEPARATOR = exports.KEY_NAMES_MAPPING = exports.KEY_MODIFICATIONS = void 0; const KEY_NAMES_MAPPING = exports.KEY_NAMES_MAPPING = { " ": "Space" }; const KEY_MODIFICATIONS = exports.KEY_MODIFICATIONS = { shift: "shift", alt: "alt", ctrl: "ctrl" }; const SEPARATOR = exports.SEPARATOR = "+"; const normalizeKeyName = keyName => KEY_NAMES_MAPPING[keyName] ?? keyName; exports.normalizeKeyName = normalizeKeyName; exports.getKeyWithModifications = event => { const normalizedKeyName = normalizeKeyName(event.key); switch (true) { case event.altKey: return `${normalizedKeyName}${SEPARATOR}${KEY_MODIFICATIONS.alt}`; case event.shiftKey: return `${normalizedKeyName}${SEPARATOR}${KEY_MODIFICATIONS.shift}`; case event.ctrlKey: case event.metaKey: return `${normalizedKeyName}${SEPARATOR}${KEY_MODIFICATIONS.ctrl}`; default: return normalizedKeyName } } }, 40599: /*!*************************************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/new/grid_core/keyboard_navigation/with_key_down_handler.js ***! \*************************************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.withKeyDownHandler = void 0; var _inferno = __webpack_require__( /*! inferno */ 76231); var _index = __webpack_require__( /*! ../../../../grids/new/grid_core/core/events/index */ 92940); var _utils = __webpack_require__( /*! ./utils */ 50860); const _excluded = ["onKeyDown", "keyDownConfig", "children"]; function _extends() { return _extends = Object.assign ? Object.assign.bind() : function(n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) { ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]) } } return n }, _extends.apply(null, arguments) } var __decorate = (void 0, function(decorators, target, key, desc) { var d, c = arguments.length, r = c < 3 ? target : null === desc ? desc = Object.getOwnPropertyDescriptor(target, key) : desc; if ("object" === typeof Reflect && "function" === typeof Reflect.decorate) { r = Reflect.decorate(decorators, target, key, desc) } else { for (var i = decorators.length - 1; i >= 0; i--) { if (d = decorators[i]) { r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r } } } return c > 3 && r && Object.defineProperty(target, key, r), r }); var __metadata = (void 0, function(k, v) { if ("object" === typeof Reflect && "function" === typeof Reflect.metadata) { return Reflect.metadata(k, v) } }); exports.withKeyDownHandler = WrappedComponent => { class WithKeyDownHandler extends _inferno.Component { constructor() { super(...arguments); this.elementRef = (0, _inferno.createRef)() } render() { const _this$props = this.props, { children: children } = _this$props, restProps = function(r, e) { if (null == r) { return {} } var t = {}; for (var n in r) { if ({}.hasOwnProperty.call(r, n)) { if (e.includes(n)) { continue } t[n] = r[n] } } return t }(_this$props, _excluded); return (0, _inferno.normalizeProps)((0, _inferno.createComponentVNode)(2, WrappedComponent, _extends({}, restProps, { onKeyDown: this.onKeyDown.bind(this), children: children }))) } onKeyDown(event) { const { keyDownConfig: keyDownConfig, onKeyDown: onKeyDown, caughtEventPreventDefault: caughtEventPreventDefault } = this.props; const ref = this.getActualRef(); const fullKeyName = (0, _utils.getKeyWithModifications)(event); const handler = null === keyDownConfig || void 0 === keyDownConfig ? void 0 : keyDownConfig[fullKeyName]; if (handler) { handler(event, ref); _index.eventUtils.markHandled(event) } if (handler && caughtEventPreventDefault) { event.preventDefault() } null === onKeyDown || void 0 === onKeyDown || onKeyDown(event) } getActualRef() { return this.props.elementRef ?? this.elementRef } } __decorate([_index.eventHandler, __metadata("design:type", Function), __metadata("design:paramtypes", [Object]), __metadata("design:returntype", void 0)], WithKeyDownHandler.prototype, "onKeyDown", null); return WithKeyDownHandler } }, 45990: /*!************************************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/new/grid_core/keyboard_navigation/with_navigation_item.js ***! \************************************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.withKbnNavigationItem = void 0; var _inferno = __webpack_require__( /*! inferno */ 76231); var _index = __webpack_require__( /*! ../../../../grids/new/grid_core/core/events/index */ 92940); const _excluded = ["elementRef", "tabIndex", "onKeyDown", "children"]; function _extends() { return _extends = Object.assign ? Object.assign.bind() : function(n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) { ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]) } } return n }, _extends.apply(null, arguments) } var __decorate = (void 0, function(decorators, target, key, desc) { var d, c = arguments.length, r = c < 3 ? target : null === desc ? desc = Object.getOwnPropertyDescriptor(target, key) : desc; if ("object" === typeof Reflect && "function" === typeof Reflect.decorate) { r = Reflect.decorate(decorators, target, key, desc) } else { for (var i = decorators.length - 1; i >= 0; i--) { if (d = decorators[i]) { r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r } } } return c > 3 && r && Object.defineProperty(target, key, r), r }); var __metadata = (void 0, function(k, v) { if ("object" === typeof Reflect && "function" === typeof Reflect.metadata) { return Reflect.metadata(k, v) } }); exports.withKbnNavigationItem = WrappedComponent => { class WithKbnNavigationItem extends _inferno.Component { constructor() { super(...arguments); this.elementRef = (0, _inferno.createRef)(); this.eventListener = new _index.NativeEventListener; this.navigationItem = { focus: () => { var _this$getActualRef$cu; null === (_this$getActualRef$cu = this.getActualRef().current) || void 0 === _this$getActualRef$cu || _this$getActualRef$cu.focus() }, getElement: () => this.getActualRef().current } } componentDidMount() { const elementRef = this.getActualRef(); const { navigationStrategy: navigationStrategy, navigationIdx: navigationIdx } = this.props; navigationStrategy.setItem(navigationIdx, this.navigationItem); this.eventListener.add(elementRef, "focusin", this.onFocusIn.bind(this)) } componentDidUpdate() { this.props.navigationStrategy.setItem(this.props.navigationIdx, this.navigationItem) } componentWillUnmount() { this.eventListener.unsubscribe() } render() { const _this$props = this.props, { children: children } = _this$props, restProps = function(r, e) { if (null == r) { return {} } var t = {}; for (var n in r) { if ({}.hasOwnProperty.call(r, n)) { if (e.includes(n)) { continue } t[n] = r[n] } } return t }(_this$props, _excluded); const ref = this.getActualRef(); return (0, _inferno.normalizeProps)((0, _inferno.createComponentVNode)(2, WrappedComponent, _extends({ elementRef: ref, tabIndex: 0, onKeyDown: this.onKeyDown.bind(this) }, restProps, { children: children }))) } onKeyDown(event) { const { navigationStrategy: navigationStrategy, onKeyDown: onKeyDown, onFocusMoved: onFocusMoved } = this.props; const [eventHandled, newActiveItem] = navigationStrategy.getNewActiveItem((() => navigationStrategy.onKeyDown(event))); if (eventHandled) { event.preventDefault(); _index.eventUtils.markHandled(event) } if (newActiveItem) { null === onFocusMoved || void 0 === onFocusMoved || onFocusMoved(newActiveItem.idx, newActiveItem.element) } null === onKeyDown || void 0 === onKeyDown || onKeyDown(event) } onFocusIn() { const { navigationStrategy: navigationStrategy, navigationIdx: navigationIdx, onFocusMoved: onFocusMoved } = this.props; const [, newActiveItem] = navigationStrategy.getNewActiveItem((() => navigationStrategy.setActiveItem(navigationIdx, false))); if (newActiveItem) { null === onFocusMoved || void 0 === onFocusMoved || onFocusMoved(newActiveItem.idx, newActiveItem.element) } } getActualRef() { return this.props.elementRef ?? this.elementRef } } __decorate([_index.eventHandler, __metadata("design:type", Function), __metadata("design:paramtypes", [Object]), __metadata("design:returntype", void 0)], WithKbnNavigationItem.prototype, "onKeyDown", null); __decorate([_index.eventHandler, __metadata("design:type", Function), __metadata("design:paramtypes", []), __metadata("design:returntype", void 0)], WithKbnNavigationItem.prototype, "onFocusIn", null); return WithKbnNavigationItem } }, 59329: /*!****************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/new/grid_core/lifecycle/controller.js ***! \****************************************************************************************************/ function(__unused_webpack_module, exports) { Object.defineProperty(exports, "__esModule", { value: true }); exports.LifeCycleController = void 0; class LifeCycleEvent { constructor() { this.callbacks = new Set } schedule(cb) { this.callbacks.add(cb) } trigger() { for (const cb of this.callbacks) { cb() } this.callbacks.clear() } } class LifeCycleController { constructor() { this.contentRendered = new LifeCycleEvent } provideContentReadyCallback(cb) { this.contentReadyCallback = cb } fireContentReady() { var _this$contentReadyCal; null === (_this$contentReadyCal = this.contentReadyCallback) || void 0 === _this$contentReadyCal || _this$contentReadyCal.call(this) } } exports.LifeCycleController = LifeCycleController; LifeCycleController.dependencies = [] }, 29589: /*!***********************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/new/grid_core/lifecycle/index.js ***! \***********************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "Controller", { enumerable: true, get: function() { return _controller.LifeCycleController } }); var _controller = __webpack_require__( /*! ./controller */ 59329) }, 77565: /*!*****************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/new/grid_core/main_view.js ***! \*****************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.MainView = void 0; var _view = __webpack_require__( /*! ./core/view */ 3455); class MainView extends _view.View {} exports.MainView = MainView }, 75932: /*!***************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/new/grid_core/options.js ***! \***************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.defaultOptionsRules = exports.defaultOptions = void 0; var _browser = (e = __webpack_require__( /*! ../../../../core/utils/browser */ 48314), e && e.__esModule ? e : { default: e }); var e; var _themes = __webpack_require__( /*! ../../../../ui/themes */ 52071); var columnChooser = _interopRequireWildcard(__webpack_require__( /*! ./column_chooser/index */ 45415)); var columnsController = _interopRequireWildcard(__webpack_require__( /*! ./columns_controller/index */ 50875)); var contentView = _interopRequireWildcard(__webpack_require__( /*! ./content_view/index */ 71967)); var dataController = _interopRequireWildcard(__webpack_require__( /*! ./data_controller/index */ 61124)); var editing = _interopRequireWildcard(__webpack_require__( /*! ./editing/index */ 68222)); var filterSync = _interopRequireWildcard(__webpack_require__( /*! ./filtering/filter_sync/index */ 69900)); var headerFilter = _interopRequireWildcard(__webpack_require__( /*! ./filtering/header_filter/index */ 63108)); var _index8 = _interopRequireWildcard(__webpack_require__( /*! ./filtering/index */ 92743)); var filterController = _index8; var keyboardNavigation = _interopRequireWildcard(__webpack_require__( /*! ./keyboard_navigation/index */ 58529)); var pager = _interopRequireWildcard(__webpack_require__( /*! ./pager/index */ 6730)); var searchPanel = _interopRequireWildcard(__webpack_require__( /*! ./search/index */ 61519)); var selection = _interopRequireWildcard(__webpack_require__( /*! ./selection/index */ 99779)); var sortingController = _interopRequireWildcard(__webpack_require__( /*! ./sorting_controller/index */ 37386)); var toolbar = _interopRequireWildcard(__webpack_require__( /*! ./toolbar/index */ 86326)); function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) { return null } var r = new WeakMap, t = new WeakMap; return (_getRequireWildcardCache = function(e) { return e ? t : r })(e) } function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) { return e } if (null === e || "object" != typeof e && "function" != typeof e) { return { default: e } } var t = _getRequireWildcardCache(r); if (t && t.has(e)) { return t.get(e) } var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) { if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u] } } return n.default = e, t && t.set(e, n), n } function _extends() { return _extends = Object.assign ? Object.assign.bind() : function(n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) { ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]) } } return n }, _extends.apply(null, arguments) } exports.defaultOptions = _extends({}, dataController.defaultOptions, sortingController.defaultOptions, columnsController.defaultOptions, pager.defaultOptions, _index8.filterPanel.defaultOptions, filterController.defaultOptions, headerFilter.defaultOptions, filterSync.defaultOptions, contentView.defaultOptions, searchPanel.defaultOptions, columnChooser.defaultOptions, selection.defaultOptions, toolbar.defaultOptions, editing.defaultOptions, keyboardNavigation.defaultOptions); exports.defaultOptionsRules = [{ device: () => (0, _themes.isMaterialBased)(), options: { headerFilter: { height: 315 }, editing: { useIcons: true }, selection: { showCheckBoxesMode: "always" } } }, { device: () => _browser.default.webkit, options: { loadingTimeout: 30, loadPanel: { animation: { show: { easing: "cubic-bezier(1, 0, 1, 0)", duration: 500, from: { opacity: 0 }, to: { opacity: 1 } } } } } }] }, 76385: /*!*********************************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/new/grid_core/options_controller/options_controller.js ***! \*********************************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.OptionsController = void 0; var _options_controller_base = __webpack_require__( /*! ./options_controller_base */ 83273); class GridCoreOptionsController extends _options_controller_base.OptionsController {} exports.OptionsController = GridCoreOptionsController }, 83273: /*!**************************************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/new/grid_core/options_controller/options_controller_base.js ***! \**************************************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.OptionsController = void 0; var _component = __webpack_require__( /*! ../../../../../core/component */ 17863); var _data = __webpack_require__( /*! ../../../../../core/utils/data */ 31e3); var _signalsCore = __webpack_require__( /*! @preact/signals-core */ 70037); var _m_extend = __webpack_require__( /*! ../../../../core/utils/m_extend */ 96298); var _template_wrapper = __webpack_require__( /*! ../inferno_wrappers/template_wrapper */ 94681); var _index = __webpack_require__( /*! ../utils/tree/index */ 43614); function getOr(cache, key, orElse) { if (cache[key]) { return cache[key] } const value = orElse(); cache[key] = value; return value } class OptionsController { constructor(component) { var _component$_getDefaul; this.component = component; this.cache = { oneWay: {}, oneWayWithChanges: {}, twoWay: {}, action: {}, template: {} }; this.isControlledMode = false; this.initialized = this.component.initialized; this.defaults = (null === (_component$_getDefaul = component._getDefaultOptions) || void 0 === _component$_getDefaul ? void 0 : _component$_getDefaul.call(component)) ?? {}; this.internalOptions = (0, _signalsCore.signal)({ options: (0, _m_extend.extend)(true, {}, component.option()), changes: null }); this.updateIsControlledMode(); component.on("optionChanged", this.onOptionChangedHandler.bind(this)) } updateIsControlledMode() { const isControlledMode = this.component.option("integrationOptions.isControlledMode"); this.isControlledMode = isControlledMode ?? false } onOptionChangedHandler(optionChanges) { const { fullName: fullName } = optionChanges; this.updateIsControlledMode(); this.updateInternalOptionsState(fullName, optionChanges) } updateInternalOptionsState(optionFullName) { let changes = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : null; const pathParts = (0, _data.getPathParts)(optionFullName); this.internalOptions.value = { options: (0, _index.mergeOptionTrees)(this.internalOptions.peek().options, this.component.option(), this.defaults, pathParts), changes: changes } } oneWay(name) { return getOr(this.cache.oneWay, name, (() => { const pathArray = (0, _data.getPathParts)(name); return (0, _signalsCore.computed)((() => (0, _index.getTreeNodeByPath)(this.internalOptions.value.options, pathArray))) })) } oneWayWithChanges(name) { return getOr(this.cache.oneWayWithChanges, name, (() => { const pathArray = (0, _data.getPathParts)(name); return (0, _signalsCore.computed)((() => { const { options: options, changes: changes } = this.internalOptions.value; return { value: (0, _index.getTreeNodeByPath)(options, pathArray), changes: changes } })) })) } twoWay(name) { return getOr(this.cache.twoWay, name, (() => { const that = this; const obs = (0, _signalsCore.signal)(this.component.option(name)); (0, _signalsCore.effect)((() => { obs.value = this.oneWay(name).value })); return { get value() { return obs.value }, set value(value) { const isInitialized = that.initialized.peek(); const callbackName = `on${name}Change`; const callback = that.component.option(callbackName); const isControlled = that.isControlledMode && void 0 !== that.component.option(name); if (isControlled) { null === callback || void 0 === callback || callback(value); return } that.component.option(name, value); if (!isInitialized) { that.updateInternalOptionsState(name) } null === callback || void 0 === callback || callback(value) }, peek: () => obs.peek(), subscribe() { return obs.subscribe(...arguments) }, toJSON() { return obs.toJSON(...arguments) }, valueOf() { return obs.valueOf(...arguments) }, brand: obs.brand } })) } normalizeTemplate(template) { return (0, _template_wrapper.TemplateWrapper)(this.component._getTemplate(template)) } template(name) { return getOr(this.cache.template, name, (() => { const templateOption = this.oneWay(name); return (0, _signalsCore.computed)((() => templateOption.value && this.normalizeTemplate(templateOption.value))) })) } action(name) { return getOr(this.cache.action, name, (() => { const actionOption = this.oneWay(name); return (0, _signalsCore.computed)((() => { actionOption.value; return this.component._createActionByOption(name) })) })) } } exports.OptionsController = OptionsController; OptionsController.dependencies = [_component.Component] }, 67091: /*!*************************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/new/grid_core/options_validation/controller.js ***! \*************************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.OptionsValidationController = void 0; var _type = __webpack_require__( /*! ../../../../../core/utils/type */ 11528); var _index = __webpack_require__( /*! ../../../../grids/new/grid_core/data_controller/index */ 61124); var _utils = __webpack_require__( /*! ./utils */ 84282); class OptionsValidationController { constructor(dataController) { this.dataController = dataController } validateKeyExpr() { const keyExpr = this.dataController.dataSource.peek().key(); if (!(0, _type.isDefined)(keyExpr)) { (0, _utils.throwError)("E1042", "CardView") } } } exports.OptionsValidationController = OptionsValidationController; OptionsValidationController.dependencies = [_index.DataController] }, 8927: /*!********************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/new/grid_core/options_validation/index.js ***! \********************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "OptionsValidationController", { enumerable: true, get: function() { return _controller.OptionsValidationController } }); var _controller = __webpack_require__( /*! ./controller */ 67091) }, 84282: /*!********************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/new/grid_core/options_validation/utils.js ***! \********************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.throwError = void 0; var _ui = (e = __webpack_require__( /*! ../../../../../ui/widget/ui.errors */ 35185), e && e.__esModule ? e : { default: e }); var e; exports.throwError = (errorCode, message) => { throw _ui.default.Error(errorCode, message) } }, 6730: /*!*******************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/new/grid_core/pager/index.js ***! \*******************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "View", { enumerable: true, get: function() { return _view.PagerView } }); Object.defineProperty(exports, "defaultOptions", { enumerable: true, get: function() { return _options.defaultOptions } }); var _options = __webpack_require__( /*! ./options */ 18340); var _view = __webpack_require__( /*! ./view */ 93825) }, 18340: /*!*********************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/new/grid_core/pager/options.js ***! \*********************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.defaultOptions = void 0; var _message = (e = __webpack_require__( /*! ../../../../../localization/message */ 33881), e && e.__esModule ? e : { default: e }); var e; exports.defaultOptions = { pager: { visible: "auto", showPageSizeSelector: false, allowedPageSizes: "auto", label: _message.default.format("dxPager-ariaLabel") } } }, 56825: /*!*******************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/new/grid_core/pager/pager.js ***! \*******************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.PagerView = function(props) { return props.visible ? (0, _inferno.normalizeProps)((0, _inferno.createComponentVNode)(2, _pager.Pager, _extends({}, props))) : (0, _inferno.createFragment)() }; var _inferno = __webpack_require__( /*! inferno */ 76231); var _pager = __webpack_require__( /*! ../inferno_wrappers/pager */ 29720); function _extends() { return _extends = Object.assign ? Object.assign.bind() : function(n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) { ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]) } } return n }, _extends.apply(null, arguments) } }, 95003: /*!*******************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/new/grid_core/pager/utils.js ***! \*******************************************************************************************/ function(__unused_webpack_module, exports) { Object.defineProperty(exports, "__esModule", { value: true }); exports.calculatePageSizes = function(allowedPageSizes, pageSizesConfig, pageSize) { if (Array.isArray(pageSizesConfig)) { return pageSizesConfig } if (Array.isArray(allowedPageSizes) && allowedPageSizes.includes(pageSize)) { return allowedPageSizes } if (pageSizesConfig && pageSize > 1) { return [Math.floor(pageSize / 2), pageSize, 2 * pageSize] } return [] }; exports.isVisible = function(visibleConfig, pageCount) { if ("auto" === visibleConfig) { return pageCount > 1 } return visibleConfig } }, 93825: /*!******************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/new/grid_core/pager/view.js ***! \******************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.PagerView = void 0; var _signalsCore = __webpack_require__( /*! @preact/signals-core */ 70037); var _m_pager = __webpack_require__( /*! ../../../../grids/grid_core/pager/m_pager */ 66040); var _view = __webpack_require__( /*! ../core/view */ 3455); var _index = __webpack_require__( /*! ../data_controller/index */ 61124); var _options_controller = __webpack_require__( /*! ../options_controller/options_controller */ 76385); var _pager = __webpack_require__( /*! ./pager */ 56825); var _utils = __webpack_require__( /*! ./utils */ 95003); class PagerView extends _view.View { constructor(dataController, options) { super(); this.dataController = dataController; this.options = options; this.component = _pager.PagerView; this.pageSizesConfig = this.options.oneWay("pager.allowedPageSizes"); this.allowedPageSizes = (0, _signalsCore.signal)(void 0); this.visibleConfig = this.options.oneWay("pager.visible"); this.visible = (0, _signalsCore.computed)((() => (0, _utils.isVisible)(this.visibleConfig.value, this.dataController.pageCount.value))); (0, _signalsCore.effect)((() => { this.allowedPageSizes.value = (0, _utils.calculatePageSizes)(this.allowedPageSizes.peek(), this.pageSizesConfig.value, this.dataController.pageSize.value) })) } getProps() { return (0, _signalsCore.computed)((() => ({ itemCount: this.dataController.totalCount.value, allowedPageSizes: this.allowedPageSizes.value, visible: this.visible.value, pageIndex: this.dataController.pageIndex.value + 1, pageIndexChanged: value => { this.dataController.pageIndex.value = value - 1 }, pageSize: this.dataController.pageSize.value, pageSizeChanged: value => { this.dataController.pageSize.value = value }, pageCount: this.dataController.pageCount.value, showPageSizeSelector: this.options.oneWay("pager.showPageSizeSelector").value, _skipValidation: true, tabIndex: 0, showInfo: this.options.oneWay("pager.showInfo").value, showNavigationButtons: this.options.oneWay("pager.showNavigationButtons").value, label: this.options.oneWay("pager.label").value, pagesNavigatorVisible: this.options.oneWay("pager.visible").value, displayMode: this.options.oneWay("pager.displayMode").value, maxPagesCount: _m_pager.MAX_PAGES_COUNT }))) } } exports.PagerView = PagerView; PagerView.dependencies = [_index.DataController, _options_controller.OptionsController] }, 28355: /*!*************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/new/grid_core/search/controller.js ***! \*************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.SearchController = void 0; var _signalsCore = __webpack_require__( /*! @preact/signals-core */ 70037); var _columns_controller = __webpack_require__( /*! ../columns_controller/columns_controller */ 88195); var _options_controller = __webpack_require__( /*! ../options_controller/options_controller */ 76385); var _utils = __webpack_require__( /*! ./utils */ 6186); class SearchController { constructor(options, columnsController) { this.options = options; this.columnsController = columnsController; this.highlightTextOptions = (0, _signalsCore.computed)((() => { const searchOptions = this.options.oneWay("searchPanel").value; return { enabled: searchOptions.highlightSearchText, caseSensitive: searchOptions.highlightCaseSensitive, searchStr: searchOptions.text } })); this.searchTextOption = this.options.twoWay("searchPanel.text"); this.searchPlaceholder = this.options.oneWay("searchPanel.placeholder"); this.searchWidth = this.options.oneWay("searchPanel.width"); this.searchVisibleColumnsOnly = this.options.oneWay("searchPanel.searchVisibleColumnsOnly"); this.searchFilter = (0, _signalsCore.computed)((() => { const searchText = this.searchTextOption.value; const columns = this.columnsController.columns.value; const searchVisibleColumnsOnly = this.searchVisibleColumnsOnly.value; return (0, _utils.calculateSearchFilter)(searchText, columns, searchVisibleColumnsOnly) })); this.getHighlightedText = text => (0, _utils.splitHighlightedText)(text, this.highlightTextOptions.peek()); this.updateSearchText = text => { this.searchTextOption.value = text } } } exports.SearchController = SearchController; SearchController.dependencies = [_options_controller.OptionsController, _columns_controller.ColumnsController] }, 83884: /*!****************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/new/grid_core/search/controller_ui.js ***! \****************************************************************************************************/ function(__unused_webpack_module, exports) { Object.defineProperty(exports, "__esModule", { value: true }); exports.SearchUIController = void 0; class SearchUIController { constructor() { this.callbacks = {} } registerCallback(name, callback) { this.callbacks[name] = callback } doUIAction(name) { var _this$callbacks$name, _this$callbacks; null === (_this$callbacks$name = (_this$callbacks = this.callbacks)[name]) || void 0 === _this$callbacks$name || _this$callbacks$name.call(_this$callbacks) } } exports.SearchUIController = SearchUIController; SearchUIController.dependencies = [] }, 61519: /*!********************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/new/grid_core/search/index.js ***! \********************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "PublicMethods", { enumerable: true, get: function() { return _public_methods.PublicMethods } }); Object.defineProperty(exports, "SearchController", { enumerable: true, get: function() { return _controller.SearchController } }); Object.defineProperty(exports, "SearchUIController", { enumerable: true, get: function() { return _controller_ui.SearchUIController } }); Object.defineProperty(exports, "SearchView", { enumerable: true, get: function() { return _view.SearchView } }); Object.defineProperty(exports, "defaultOptions", { enumerable: true, get: function() { return _options.defaultOptions } }); var _controller = __webpack_require__( /*! ./controller */ 28355); var _controller_ui = __webpack_require__( /*! ./controller_ui */ 83884); var _options = __webpack_require__( /*! ./options */ 96597); var _public_methods = __webpack_require__( /*! ./public_methods */ 52255); var _view = __webpack_require__( /*! ./view */ 29366) }, 96597: /*!**********************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/new/grid_core/search/options.js ***! \**********************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.defaultOptions = void 0; var _message = (e = __webpack_require__( /*! ../../../../../localization/message */ 33881), e && e.__esModule ? e : { default: e }); var e; exports.defaultOptions = { searchPanel: { highlightCaseSensitive: false, highlightSearchText: true, placeholder: _message.default.format("dxDataGrid-searchPanelPlaceholder"), searchVisibleColumnsOnly: false, text: "", visible: false, width: 160 } } }, 52255: /*!*****************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/new/grid_core/search/public_methods.js ***! \*****************************************************************************************************/ function(__unused_webpack_module, exports) { Object.defineProperty(exports, "__esModule", { value: true }); exports.PublicMethods = function(GridCore) { return class extends GridCore { searchByText(text) { this.searchController.updateSearchText(text) } } } }, 6186: /*!********************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/new/grid_core/search/utils.js ***! \********************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.splitHighlightedText = exports.createFilterExpression = exports.compareTextPart = exports.calculateSearchFilter = exports.allowSearch = exports.addSearchTextBox = void 0; var _type = __webpack_require__( /*! ../../../../../core/utils/type */ 11528); var _message = _interopRequireDefault(__webpack_require__( /*! ../../../../../localization/message */ 33881)); var _m_utils = _interopRequireDefault(__webpack_require__( /*! ../../../../grids/grid_core/m_utils */ 53226)); var _common = __webpack_require__( /*! ../utils/common */ 31671); var _index = __webpack_require__( /*! ../utils/parse_value/index */ 15238); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } const CLASS_searchPanel = "search-panel"; const compareTextPart = (textPart, searchStr, caseSensitive) => caseSensitive ? textPart === searchStr : textPart.toLowerCase() === searchStr.toLowerCase(); exports.compareTextPart = compareTextPart; exports.splitHighlightedText = (text, _ref) => { var _text$match; let { enabled: enabled, searchStr: searchStr, caseSensitive: caseSensitive } = _ref; if (!enabled || !searchStr) { return null } const normalizedSearchStr = searchStr.replace(/\W|_/g, (match => `\\${match}`)); const regExp = new RegExp(normalizedSearchStr, "g" + (caseSensitive ? "" : "i")); if (!(null !== (_text$match = text.match(regExp)) && void 0 !== _text$match && _text$match.length)) { return null } return text.replace(regExp, (match => `<--|--\x3e${match}<--|--\x3e`)).split("<--|--\x3e").filter((textPart => !!textPart)).map((textPart => ({ type: compareTextPart(textPart, searchStr, caseSensitive) ? "highlighted" : "usual", text: textPart }))) }; const allowSearch = (column, searchVisibleColumnsOnly) => { const allowSearchByVisibility = !searchVisibleColumnsOnly || column.visible; const allowSearchByConfig = column.allowSearch; return allowSearchByVisibility && allowSearchByConfig }; exports.allowSearch = allowSearch; const createFilterExpression = (column, filterValue, selectedFilterOperation, target) => { let result = column.calculateFilterExpression(filterValue, selectedFilterOperation, target); if ((0, _type.isFunction)(result)) { result = [result, "=", true] } return result }; exports.createFilterExpression = createFilterExpression; exports.calculateSearchFilter = (text, columns, searchVisibleColumnsOnly) => { const filters = []; if (!text) { return null } for (const column of columns) { if (allowSearch(column, searchVisibleColumnsOnly)) { const filterValue = (0, _index.parseValue)(column, text); if (void 0 !== filterValue) { const expression = createFilterExpression(column, filterValue, void 0, "search"); filters.push(expression) } } } if (0 === filters.length) { return ["!"] } return _m_utils.default.combineFilters(filters, "or") }; let timer; exports.addSearchTextBox = (props, setTextBoxRef) => ({ name: "searchPanel", showText: "inMenu", location: "after", locateInMenu: "auto", widget: "dxTextBox", options: { onContentReady: _ref2 => { let { component: component } = _ref2; setTextBoxRef(component) }, onInput: e => { clearTimeout(timer); const component = e.component; const newValue = component._input().val(); timer = setTimeout((() => { var _props$onValueChanged; null === (_props$onValueChanged = props.onValueChanged) || void 0 === _props$onValueChanged || _props$onValueChanged.call(props, newValue) }), 700) }, value: props.value, placeholder: props.placeholder, width: props.width, inputAttr: { "aria-label": _message.default.format(`${(0,_common.getName)()}-ariaSearchInGrid`) }, elementAttr: { class: (0, _common.addWidgetPrefix)(CLASS_searchPanel) }, mode: "search", onDisposing: () => { clearTimeout(timer) } } }) }, 29366: /*!*******************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/new/grid_core/search/view.js ***! \*******************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.SearchView = void 0; var _signalsCore = __webpack_require__( /*! @preact/signals-core */ 70037); var _controller = __webpack_require__( /*! ../../../../grids/new/grid_core/toolbar/controller */ 34272); var _options_controller = __webpack_require__( /*! ../options_controller/options_controller */ 76385); var _controller2 = __webpack_require__( /*! ./controller */ 28355); var _controller_ui = __webpack_require__( /*! ./controller_ui */ 83884); var _utils = __webpack_require__( /*! ./utils */ 6186); class SearchView { constructor(options, toolbarController, searchUIController, searchController) { this.options = options; this.toolbarController = toolbarController; this.searchUIController = searchUIController; this.searchController = searchController; this.searchTextBox = (0, _signalsCore.signal)(null); const toolbarItem = (0, _utils.addSearchTextBox)({ placeholder: this.searchController.searchPlaceholder.value, value: this.searchController.searchTextOption.value, width: this.searchController.searchWidth.value, onValueChanged: text => { this.searchController.updateSearchText(text) } }, (component => { this.searchTextBox.value = component })); this.toolbarController.addDefaultItem((0, _signalsCore.signal)(toolbarItem), this.options.oneWay("searchPanel.visible")); (0, _signalsCore.effect)((() => { var _this$searchTextBox$v, _this$searchTextBox$v2, _this$searchTextBox$v3; null === (_this$searchTextBox$v = this.searchTextBox.value) || void 0 === _this$searchTextBox$v || _this$searchTextBox$v.option("value", this.searchController.searchTextOption.value); null === (_this$searchTextBox$v2 = this.searchTextBox.value) || void 0 === _this$searchTextBox$v2 || _this$searchTextBox$v2.option("placeholder", this.searchController.searchPlaceholder.value); null === (_this$searchTextBox$v3 = this.searchTextBox.value) || void 0 === _this$searchTextBox$v3 || _this$searchTextBox$v3.option("width", this.searchController.searchWidth.value) })); this.searchUIController.registerCallback("focusSearchTextBox", (() => { var _this$searchTextBox$v4; null === (_this$searchTextBox$v4 = this.searchTextBox.value) || void 0 === _this$searchTextBox$v4 || _this$searchTextBox$v4.focus() })) } } exports.SearchView = SearchView; SearchView.dependencies = [_options_controller.OptionsController, _controller.ToolbarController, _controller_ui.SearchUIController, _controller2.SearchController] }, 7896: /*!***********************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/new/grid_core/selection/const.js ***! \***********************************************************************************************/ function(__unused_webpack_module, exports) { Object.defineProperty(exports, "__esModule", { value: true }); exports.ShowCheckBoxesMode = exports.SelectionMode = void 0; var SelectionMode; ! function(SelectionMode) { SelectionMode.Multiple = "multiple"; SelectionMode.Single = "single"; SelectionMode.None = "none" }(SelectionMode || (exports.SelectionMode = SelectionMode = {})); var ShowCheckBoxesMode; ! function(ShowCheckBoxesMode) { ShowCheckBoxesMode.Always = "always"; ShowCheckBoxesMode.OnClick = "onClick"; ShowCheckBoxesMode.OnLongTap = "onLongTap"; ShowCheckBoxesMode.None = "none" }(ShowCheckBoxesMode || (exports.ShowCheckBoxesMode = ShowCheckBoxesMode = {})) }, 13007: /*!****************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/new/grid_core/selection/controller.js ***! \****************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.SelectionController = void 0; var _message = _interopRequireDefault(__webpack_require__( /*! ../../../../../localization/message */ 33881)); var _signalsCore = __webpack_require__( /*! @preact/signals-core */ 70037); var _index = __webpack_require__( /*! ../../../../grids/new/grid_core/data_controller/index */ 61124); var _index2 = __webpack_require__( /*! ../../../../grids/new/grid_core/options_validation/index */ 8927); var _const = __webpack_require__( /*! ../../../../grids/new/grid_core/selection/const */ 7896); var _m_selection = _interopRequireDefault(__webpack_require__( /*! ../../../../ui/selection/m_selection */ 53544)); var _items_controller = __webpack_require__( /*! ../items_controller/items_controller */ 58761); var _options_controller = __webpack_require__( /*! ../options_controller/options_controller */ 76385); var _controller = __webpack_require__( /*! ../toolbar/controller */ 34272); var _const2 = __webpack_require__( /*! ./const */ 7896); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } function _extends() { return _extends = Object.assign ? Object.assign.bind() : function(n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) { ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]) } } return n }, _extends.apply(null, arguments) } class SelectionController { constructor(options, dataController, itemsController, toolbarController, optionsValidationController) { this.options = options; this.dataController = dataController; this.itemsController = itemsController; this.toolbarController = toolbarController; this.optionsValidationController = optionsValidationController; this.selectedCardKeys = this.options.twoWay("selectedCardKeys"); this.normalizedSelectedCardKeys = (0, _signalsCore.computed)((() => { const selectedCardKeys = this.selectedCardKeys.value; const isSelectionEnabled = this.selectionOption.value.mode !== _const2.SelectionMode.None; if (isSelectionEnabled && Array.isArray(selectedCardKeys) && selectedCardKeys.length) { this.optionsValidationController.validateKeyExpr() } return this.selectedCardKeys.value })); this.selectionOption = this.options.oneWay("selection"); this._isCheckBoxesRendered = (0, _signalsCore.signal)(false); this.onSelectionChanging = this.options.action("onSelectionChanging"); this.onSelectionChanged = this.options.action("onSelectionChanged"); this.isCheckBoxesRendered = (0, _signalsCore.computed)((() => { const selectionMode = this.options.oneWay("selection.mode").value; const showCheckBoxesMode = this.options.oneWay("selection.showCheckBoxesMode").value; const _isCheckBoxesRendered = this._isCheckBoxesRendered.value; if (selectionMode === _const2.SelectionMode.Multiple) { switch (showCheckBoxesMode) { case _const.ShowCheckBoxesMode.Always: case _const.ShowCheckBoxesMode.OnClick: return true; case _const.ShowCheckBoxesMode.OnLongTap: return _isCheckBoxesRendered; default: return false } } return false })); this._isCheckBoxesVisible = (0, _signalsCore.signal)(false); this.isCheckBoxesVisible = (0, _signalsCore.computed)((() => { const { mode: mode, showCheckBoxesMode: showCheckBoxesMode } = this.selectionOption.value; const _isCheckBoxesVisible = this._isCheckBoxesVisible.value; if (mode === _const2.SelectionMode.Multiple) { return showCheckBoxesMode !== _const.ShowCheckBoxesMode.OnClick || _isCheckBoxesVisible } return false })); this.needToHiddenCheckBoxes = (0, _signalsCore.computed)((() => { const { mode: mode, showCheckBoxesMode: showCheckBoxesMode } = this.selectionOption.value; const isCheckBoxesVisible = this.isCheckBoxesVisible.value; if (mode === _const2.SelectionMode.Multiple && showCheckBoxesMode === _const.ShowCheckBoxesMode.OnClick) { return !isCheckBoxesVisible } return false })); this.allowSelectOnClick = (0, _signalsCore.computed)((() => { const { mode: mode, showCheckBoxesMode: showCheckBoxesMode } = this.selectionOption.value; return mode !== _const2.SelectionMode.Multiple || showCheckBoxesMode !== _const.ShowCheckBoxesMode.Always })); this.needToAddSelectionButtons = (0, _signalsCore.computed)((() => { const selectionMode = this.options.oneWay("selection.mode").value; const allowSelectAll = this.options.oneWay("selection.allowSelectAll").value; return selectionMode === _const2.SelectionMode.Multiple && allowSelectAll })); this.selectionHelper = (0, _signalsCore.computed)((() => { const dataSource = this.dataController.dataSource.value; const selectionOption = this.selectionOption.value; if (selectionOption.mode === _const2.SelectionMode.None) { return } const selectionConfig = this.getSelectionConfig(dataSource, selectionOption); return new _m_selection.default(selectionConfig) })); (0, _signalsCore.effect)((() => { const selectedCardKeys = this.normalizedSelectedCardKeys.value; const selectionOption = this.selectionOption.value; if (selectionOption.mode !== _const2.SelectionMode.None) { this.itemsController.setSelectionState(selectedCardKeys); if (selectedCardKeys.length > 1) { this._isCheckBoxesVisible.value = true } else if (0 === selectedCardKeys.length) { this._isCheckBoxesVisible.value = false } } })); (0, _signalsCore.effect)((() => { const isLoaded = this.dataController.isLoaded.value; if (isLoaded) { const selectedCardKeys = this.selectedCardKeys.peek(); this.selectCards(selectedCardKeys) } })); (0, _signalsCore.effect)((() => { this.dataController.items.value; this.dataController.isLoaded.value; this.updateSelectionToolbarButtons(this.normalizedSelectedCardKeys.value) })) } getSelectionConfig(dataSource, selectionOption) { const selectedCardKeys = this.selectedCardKeys.peek(); return { selectedKeys: selectedCardKeys, mode: selectionOption.mode, maxFilterLengthInRequest: selectionOption.maxFilterLengthInRequest, ignoreDisabledItems: true, key: () => dataSource.key(), keyOf: item => dataSource.store().keyOf(item), dataFields: () => dataSource.select(), load: options => dataSource.store().load(options), plainItems: () => dataSource.items(), filter: () => dataSource.filter(), totalCount: () => dataSource.totalCount(), onSelectionChanging: this.selectionChanging.bind(this), onSelectionChanged: this.selectionChanged.bind(this) } } getSelectionEventArgs(e) { return { currentSelectedCardKeys: [...e.addedItemKeys], currentDeselectedCardKeys: [...e.removedItemKeys], selectedCardKeys: [...e.selectedItemKeys], selectedCardsData: [...e.selectedItems], isSelectAll: false, isDeselectAll: false } } selectionChanging(e) { if (e.addedItemKeys.length || e.removedItemKeys.length) { const onSelectionChanging = this.onSelectionChanging.peek(); const eventArgs = _extends({}, this.getSelectionEventArgs(e), { cancel: false }); null === onSelectionChanging || void 0 === onSelectionChanging || onSelectionChanging(eventArgs); e.cancel = eventArgs.cancel } } selectionChanged(e) { if (e.addedItemKeys.length || e.removedItemKeys.length) { this.optionsValidationController.validateKeyExpr(); const onSelectionChanged = this.onSelectionChanged.peek(); const eventArgs = this.getSelectionEventArgs(e); this.selectedCardKeys.value = [...e.selectedItemKeys]; null === onSelectionChanged || void 0 === onSelectionChanged || onSelectionChanged(eventArgs) } } isOnePageSelectAll() { const selectionOption = this.selectionOption.peek(); return "page" === (null === selectionOption || void 0 === selectionOption ? void 0 : selectionOption.selectAllMode) } isSelectAll() { const selectionHelper = this.selectionHelper.peek(); return null === selectionHelper || void 0 === selectionHelper ? void 0 : selectionHelper.getSelectAllState(this.isOnePageSelectAll()) } updateSelectionToolbarButtons(selectedCardKeys) { const isSelectAll = this.isSelectAll(); const isOnePageSelectAll = this.isOnePageSelectAll(); this.toolbarController.addDefaultItem((0, _signalsCore.signal)({ name: "selectAllButton", widget: "dxButton", options: { icon: "selectall", onClick: () => { this.selectAll() }, disabled: !!isSelectAll, text: _message.default.format("dxCardView-selectAll") }, location: "before", locateInMenu: "auto" }), this.needToAddSelectionButtons); this.toolbarController.addDefaultItem((0, _signalsCore.signal)({ name: "clearSelectionButton", widget: "dxButton", options: { icon: "close", onClick: () => { this.deselectAll() }, disabled: isOnePageSelectAll ? false === isSelectAll : 0 === selectedCardKeys.length, text: _message.default.format("dxCardView-clearSelection") }, location: "before", locateInMenu: "auto" }), this.needToAddSelectionButtons) } getItemKeysByIndexes(indexes) { const items = this.itemsController.items.peek(); return indexes.map((index => { var _items$index; return null === (_items$index = items[index]) || void 0 === _items$index ? void 0 : _items$index.key })).filter((key => void 0 !== key)) } changeCardSelection(cardIndex, options) { var _this$selectionHelper; const selectionHelper = null === (_this$selectionHelper = this.selectionHelper) || void 0 === _this$selectionHelper ? void 0 : _this$selectionHelper.peek(); const isCheckBoxesVisible = this.isCheckBoxesVisible.peek(); const keys = options ?? {}; if (isCheckBoxesVisible) { keys.control = isCheckBoxesVisible } null === selectionHelper || void 0 === selectionHelper || selectionHelper.changeItemSelection(cardIndex, keys, false) } selectCards(keys) { var _this$selectionHelper2; let preserve = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : false; const selectionHelper = null === (_this$selectionHelper2 = this.selectionHelper) || void 0 === _this$selectionHelper2 ? void 0 : _this$selectionHelper2.peek(); return null === selectionHelper || void 0 === selectionHelper ? void 0 : selectionHelper.selectedItemKeys(keys, preserve) } selectCardsByIndexes(indexes) { const keys = this.getItemKeysByIndexes(indexes); return this.selectCards(keys) } deselectCards(keys) { var _this$selectionHelper3; const selectionHelper = null === (_this$selectionHelper3 = this.selectionHelper) || void 0 === _this$selectionHelper3 ? void 0 : _this$selectionHelper3.peek(); return null === selectionHelper || void 0 === selectionHelper ? void 0 : selectionHelper.selectedItemKeys(keys, true, true) } deselectCardsByIndexes(indexes) { const keys = this.getItemKeysByIndexes(indexes); return this.deselectCards(keys) } isCardSelected(key) { const selectedCardKeys = this.normalizedSelectedCardKeys.peek(); return selectedCardKeys.includes(key) } selectAll() { const { mode: mode } = this.selectionOption.peek(); if (mode !== _const2.SelectionMode.Multiple) { return } const selectionHelper = this.selectionHelper.peek(); return null === selectionHelper || void 0 === selectionHelper ? void 0 : selectionHelper.selectAll(this.isOnePageSelectAll()) } deselectAll() { const selectionHelper = this.selectionHelper.peek(); return null === selectionHelper || void 0 === selectionHelper ? void 0 : selectionHelper.deselectAll(this.isOnePageSelectAll()) } clearSelection() { const selectionHelper = this.selectionHelper.peek(); return null === selectionHelper || void 0 === selectionHelper ? void 0 : selectionHelper.clearSelection() } getSelectedCardsData() { const selectedCardKey = this.getSelectedCardKeys(); return selectedCardKey.map((key => this.itemsController.getCardByKey(key))).filter((item => !!item)).map((item => item.data)) } getSelectedCardKeys() { return this.normalizedSelectedCardKeys.peek() } toggleSelectionCheckBoxes() { const isCheckBoxesRendered = this._isCheckBoxesRendered.peek(); this._isCheckBoxesRendered.value = !isCheckBoxesRendered } updateSelectionCheckBoxesVisible(value) { this._isCheckBoxesVisible.value = value } processLongTap(card) { const { mode: mode, showCheckBoxesMode: showCheckBoxesMode } = this.selectionOption.peek(); if (mode !== _const2.SelectionMode.None) { if (showCheckBoxesMode === _const.ShowCheckBoxesMode.OnLongTap) { this.toggleSelectionCheckBoxes() } else { if (showCheckBoxesMode === _const.ShowCheckBoxesMode.OnClick) { this._isCheckBoxesVisible.value = true } if (showCheckBoxesMode !== _const.ShowCheckBoxesMode.Always) { this.changeCardSelection(card.index, { control: true }) } } } } } exports.SelectionController = SelectionController; SelectionController.dependencies = [_options_controller.OptionsController, _index.DataController, _items_controller.ItemsController, _controller.ToolbarController, _index2.OptionsValidationController] }, 99779: /*!***********************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/new/grid_core/selection/index.js ***! \***********************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "Controller", { enumerable: true, get: function() { return _controller.SelectionController } }); Object.defineProperty(exports, "PublicMethods", { enumerable: true, get: function() { return _public_methods.PublicMethods } }); Object.defineProperty(exports, "defaultOptions", { enumerable: true, get: function() { return _options.defaultOptions } }); var _controller = __webpack_require__( /*! ./controller */ 13007); var _options = __webpack_require__( /*! ./options */ 96961); var _public_methods = __webpack_require__( /*! ./public_methods */ 80339) }, 96961: /*!*************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/new/grid_core/selection/options.js ***! \*************************************************************************************************/ function(__unused_webpack_module, exports) { Object.defineProperty(exports, "__esModule", { value: true }); exports.defaultOptions = void 0; exports.defaultOptions = { selectedCardKeys: [], selection: { mode: "none", showCheckBoxesMode: "always", allowSelectAll: true, selectAllMode: "allPages" } } }, 80339: /*!********************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/new/grid_core/selection/public_methods.js ***! \********************************************************************************************************/ function(__unused_webpack_module, exports) { Object.defineProperty(exports, "__esModule", { value: true }); exports.PublicMethods = function(GridCore) { return class extends GridCore { isCardSelected(key) { return this.selectionController.isCardSelected(key) } getSelectedCardKeys() { return this.selectionController.getSelectedCardKeys() } getSelectedCardsData() { return this.selectionController.getSelectedCardsData() } selectCards(keys) { let preserve = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : false; return this.selectionController.selectCards(keys, preserve) } deselectCards(keys) { return this.selectionController.deselectCards(keys) } selectCardsByIndexes(indexes) { return this.selectionController.selectCardsByIndexes(indexes) } deselectCardsByIndexes(indexes) { return this.selectionController.deselectCardsByIndexes(indexes) } selectAll() { return this.selectionController.selectAll() } deselectAll() { return this.selectionController.deselectAll() } clearSelection() { this.selectionController.clearSelection() } } } }, 37868: /*!*************************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/new/grid_core/sorting_controller/controller.js ***! \*************************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.SortingController = void 0; var _signalsCore = __webpack_require__( /*! @preact/signals-core */ 70037); var _index = __webpack_require__( /*! ../columns_controller/index */ 50875); var _utils = __webpack_require__( /*! ../columns_controller/utils */ 26054); var _options_controller = __webpack_require__( /*! ../options_controller/options_controller */ 76385); var _utils2 = __webpack_require__( /*! ./utils */ 97627); function _extends() { return _extends = Object.assign ? Object.assign.bind() : function(n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) { ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]) } } return n }, _extends.apply(null, arguments) } class SortingController { constructor(options, columnsController) { this.options = options; this.columnsController = columnsController; this.ascendingText = this.options.oneWay("sorting.ascendingText"); this.clearText = this.options.oneWay("sorting.clearText"); this.descendingText = this.options.oneWay("sorting.descendingText"); this.mode = this.options.oneWay("sorting.mode"); this._showSortIndexes = this.options.oneWay("sorting.showSortIndexes"); this.sortedColumns = (0, _signalsCore.computed)((() => this.columnsController.visibleColumns.value.filter((column => column.sortOrder)))); this.orderedSortedColumns = (0, _signalsCore.computed)((() => { const columns = this.sortedColumns.value; const mode = this.mode.value; const result = columns.sort(_utils2.sortOrderDelegate); if ("multiple" !== mode && this.areColumnsInitialized) { return result } if (!this.areColumnsInitialized) { this.areColumnsInitialized = true; result.forEach(((col, idx) => { this.columnsController.columnOption(col, "sortIndex", idx) })) } return result })); this.showSortIndexes = (0, _signalsCore.computed)((() => { const _showSortIndexes = this._showSortIndexes.value; const sortedColumns = this.sortedColumns.value; if (!_showSortIndexes) { return _showSortIndexes } return sortedColumns.length > 1 })); this.sortParameters = (0, _signalsCore.computed)((() => { const columns = this.orderedSortedColumns.value; const result = []; columns.forEach((c => { const sortItem = { selector: c.calculateSortValue ?? c.dataField ?? c.selector, desc: "desc" === c.sortOrder }; if (c.sortingMethod) { sortItem.compare = c.sortingMethod.bind(c) } result.push(sortItem) })); return result })); this.areColumnsInitialized = false } clearSorting() { this.columnsController.updateColumns((columns => columns.map((c => { delete c.sortOrder; delete c.sortIndex; return c })))) } onSingleModeSortClick(column, e) { if (!column.allowSorting) { return } const isCtrl = e.ctrlKey || e.metaKey; const isClearSorting = !!column.sortOrder && isCtrl; if (isClearSorting) { this.clearSorting(); return } const isClearSortingRequired = !column.sortOrder && !isCtrl || this.sortedColumns.peek().length > 1; const nextSortOrder = (0, _utils2.getNextSortOrder)(column.sortOrder, isCtrl); this.onSingleModeSortCore(column, isClearSortingRequired, nextSortOrder) } onSingleModeSortCore(column, isClearSortingRequired, nextSortOrder) { (0, _signalsCore.batch)((() => { if (isClearSortingRequired) { this.clearSorting() } this.columnsController.columnOption(column, "sortOrder", nextSortOrder) })) } onMultipleModeSortClick(column, e) { if (!column.allowSorting) { return } const isCtrl = e.ctrlKey || e.metaKey; const hasNothingToChange = !column.sortOrder && isCtrl && !e.shiftKey; if (hasNothingToChange) { return } const nextSortOrder = (0, _utils2.getNextSortOrder)(column.sortOrder, isCtrl); const isClearSortingRequired = !isCtrl && !e.shiftKey; this.onMultipleModeSortCore(column, isClearSortingRequired, nextSortOrder) } onMultipleModeSortCore(column, isClearSortingRequired, nextSortOrder) { (0, _signalsCore.batch)((() => { if (isClearSortingRequired) { this.clearSorting() } this.updateColumnSortOrder(column, nextSortOrder) })) } updateColumnSortOrder(column, nextSortOrder) { const needChanges = "multiple" === this.mode.peek(); if (!needChanges) { return } this.columnsController.updateColumns((columns => { const newColumns = [...columns]; let needNormalizing = false; const orderedSortedColumns = this.orderedSortedColumns.peek(); const orderedIndex = (0, _utils.getColumnIndexByName)(orderedSortedColumns, column.name); const commonIndex = (0, _utils.getColumnIndexByName)(newColumns, column.name); newColumns[commonIndex].sortOrder = nextSortOrder; if (!!nextSortOrder && -1 === orderedIndex) { orderedSortedColumns.push(newColumns[commonIndex]); needNormalizing = true } if (!nextSortOrder && orderedIndex > -1) { delete newColumns[commonIndex].sortOrder; delete newColumns[commonIndex].sortIndex; orderedSortedColumns.splice(orderedIndex, 1); needNormalizing = true } if (needNormalizing) { let counter = 0; orderedSortedColumns.forEach((c => { const index = (0, _utils.getColumnIndexByName)(newColumns, c.name); if (newColumns[index].sortIndex !== counter) { newColumns[index] = _extends({}, newColumns[index], { sortIndex: counter }) } counter += 1 })) } return newColumns })) } } exports.SortingController = SortingController; SortingController.dependencies = [_options_controller.OptionsController, _index.ColumnsController] }, 37386: /*!********************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/new/grid_core/sorting_controller/index.js ***! \********************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "PublicMethods", { enumerable: true, get: function() { return _public_methods.PublicMethods } }); Object.defineProperty(exports, "SortingController", { enumerable: true, get: function() { return _controller.SortingController } }); Object.defineProperty(exports, "defaultOptions", { enumerable: true, get: function() { return _options.defaultOptions } }); var _controller = __webpack_require__( /*! ./controller */ 37868); var _options = __webpack_require__( /*! ./options */ 63684); var _public_methods = __webpack_require__( /*! ./public_methods */ 20371) }, 63684: /*!**********************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/new/grid_core/sorting_controller/options.js ***! \**********************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.defaultOptions = void 0; var _message = (e = __webpack_require__( /*! ../../../../../localization/message */ 33881), e && e.__esModule ? e : { default: e }); var e; exports.defaultOptions = { sorting: { ascendingText: _message.default.format("dxDataGrid-sortingAscendingText"), descendingText: _message.default.format("dxDataGrid-sortingDescendingText"), clearText: _message.default.format("dxDataGrid-sortingClearText"), mode: "single", showSortIndexes: true } } }, 20371: /*!*****************************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/new/grid_core/sorting_controller/public_methods.js ***! \*****************************************************************************************************************/ function(__unused_webpack_module, exports) { Object.defineProperty(exports, "__esModule", { value: true }); exports.PublicMethods = function(GridCore) { return class extends GridCore { clearSorting() { this.sortingController.clearSorting() } } } }, 97627: /*!********************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/new/grid_core/sorting_controller/utils.js ***! \********************************************************************************************************/ function(__unused_webpack_module, exports) { Object.defineProperty(exports, "__esModule", { value: true }); exports.getNextSortOrder = function(currentOrder, ctrlKey) { if (ctrlKey) { return } if ("asc" === currentOrder) { return "desc" } return "asc" }; exports.sortOrderDelegate = function(a, b) { if (void 0 !== a.sortIndex && void 0 === b.sortIndex) { return -1 } if (void 0 !== b.sortIndex && void 0 === a.sortIndex) { return 1 } if (void 0 !== a.sortIndex && void 0 !== b.sortIndex) { return a.sortIndex - b.sortIndex } if (void 0 === a.sortIndex && void 0 === b.sortIndex) { return a.visibleIndex - b.visibleIndex } throw new Error("Invalid state") } }, 61933: /*!*********************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/new/grid_core/toolbar/const.js ***! \*********************************************************************************************/ function(__unused_webpack_module, exports) { Object.defineProperty(exports, "__esModule", { value: true }); exports.DEFAULT_TOOLBAR_ITEMS = void 0; exports.DEFAULT_TOOLBAR_ITEMS = ["selectAllButton", "clearSelectionButton", "addCardButton", "columnChooserButton", "searchPanel"] }, 34272: /*!**************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/new/grid_core/toolbar/controller.js ***! \**************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.ToolbarController = void 0; var _signalsCore = __webpack_require__( /*! @preact/signals-core */ 70037); var _options_controller = __webpack_require__( /*! ../options_controller/options_controller */ 76385); var _const = __webpack_require__( /*! ./const */ 61933); var _utils = __webpack_require__( /*! ./utils */ 31895); function _extends() { return _extends = Object.assign ? Object.assign.bind() : function(n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) { ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]) } } return n }, _extends.apply(null, arguments) } class ToolbarController { constructor(options) { this.options = options; this.itemSubscriptions = {}; this.defaultItems = (0, _signalsCore.signal)({}); this.userItems = this.options.oneWay("toolbar.items"); this.items = (0, _signalsCore.computed)((() => (0, _utils.normalizeToolbarItems)((0, _utils.getSortedToolbarItems)(this.defaultItems.value), this.userItems.value, _const.DEFAULT_TOOLBAR_ITEMS))) } addDefaultItem(item) { let needRender = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : (0, _signalsCore.signal)(true); const { name: name } = item.peek(); this.itemSubscriptions[name] = (0, _signalsCore.effect)((() => { const newDefaultItems = _extends({}, this.defaultItems.peek()); if (needRender.value) { newDefaultItems[name] = item.value } else { delete newDefaultItems[name] } this.defaultItems.value = newDefaultItems })) } } exports.ToolbarController = ToolbarController; ToolbarController.dependencies = [_options_controller.OptionsController] }, 86326: /*!*********************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/new/grid_core/toolbar/index.js ***! \*********************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "Controller", { enumerable: true, get: function() { return _controller.ToolbarController } }); Object.defineProperty(exports, "View", { enumerable: true, get: function() { return _view.ToolbarView } }); Object.defineProperty(exports, "defaultOptions", { enumerable: true, get: function() { return _options.defaultOptions } }); var _controller = __webpack_require__( /*! ./controller */ 34272); var _options = __webpack_require__( /*! ./options */ 94856); var _view = __webpack_require__( /*! ./view */ 5061) }, 94856: /*!***********************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/new/grid_core/toolbar/options.js ***! \***********************************************************************************************/ function(__unused_webpack_module, exports) { Object.defineProperty(exports, "__esModule", { value: true }); exports.defaultOptions = void 0; exports.defaultOptions = { toolbar: { multiline: false, disabled: false } } }, 46905: /*!***********************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/new/grid_core/toolbar/toolbar.js ***! \***********************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.ToolbarView = void 0; var _inferno = __webpack_require__( /*! inferno */ 76231); var _events = __webpack_require__( /*! ../../../../../common/core/events */ 52391); var _index = __webpack_require__( /*! ../../../../grids/new/grid_core/keyboard_navigation/index */ 58529); var _toolbar = __webpack_require__( /*! ../inferno_wrappers/toolbar */ 48696); const ToolbarComponent = (0, _index.withKeyDownHandler)(_toolbar.Toolbar); class ToolbarView extends _inferno.Component { constructor() { super(...arguments); this.containerRef = (0, _inferno.createRef)(); this.onContextMenu = event => { var _this$props$showConte, _this$props; null === (_this$props$showConte = (_this$props = this.props).showContextMenu) || void 0 === _this$props$showConte || _this$props$showConte.call(_this$props, event) } } componentDidMount() { (0, _events.on)(this.containerRef.current, "dxcontextmenu", this.onContextMenu) } componentWillUnmount() { (0, _events.off)(this.containerRef.current, "dxcontextmenu", this.onContextMenu) } render() { const { visible: visible, items: items, disabled: disabled, multiline: multiline } = this.props; if (!visible) { return (0, _inferno.createFragment)() } return (0, _inferno.createComponentVNode)(2, ToolbarComponent, { elementRef: this.containerRef, visible: visible, items: items, disabled: disabled, multiline: multiline, keyDownConfig: { "F10+shift": event => { var _this$props$showConte2, _this$props2; null === (_this$props$showConte2 = (_this$props2 = this.props).showContextMenu) || void 0 === _this$props$showConte2 || _this$props$showConte2.call(_this$props2, event) } } }) } } exports.ToolbarView = ToolbarView }, 31895: /*!*********************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/new/grid_core/toolbar/utils.js ***! \*********************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.getSortedToolbarItems = function(defaultItemsCollection) { return Object.values(defaultItemsCollection).sort(((a, b) => { const aIndex = _const.DEFAULT_TOOLBAR_ITEMS.indexOf(a.name); const bIndex = _const.DEFAULT_TOOLBAR_ITEMS.indexOf(b.name); return aIndex - bIndex })) }; exports.isVisible = function(visibleConfig, items) { if (void 0 === visibleConfig) { return items.length > 0 } return visibleConfig }; exports.normalizeToolbarItems = function(sortedDefaultItems, userItems, defaultItemNames) { if (!(0, _type.isDefined)(userItems)) { return sortedDefaultItems } const defaultButtonsMap = {}; sortedDefaultItems.forEach((button => { defaultButtonsMap[button.name] = button })); return userItems.map((item => function(item, defaultButtonsMap, defaultItemNames) { let button = item; const defaultProps = { location: "after" }; if ((0, _type.isString)(button)) { button = { name: button } } if ((0, _type.isDefined)(button.name)) { if ((0, _type.isDefined)(defaultButtonsMap[button.name])) { button = (0, _extend.extend)(true, {}, defaultButtonsMap[button.name], button) } else if (defaultItemNames.includes(button.name)) { button = _extends({}, button, { visible: false }) } } return (0, _extend.extend)(true, {}, defaultProps, button) }(item, defaultButtonsMap, defaultItemNames))) }; var _extend = __webpack_require__( /*! ../../../../../core/utils/extend */ 52576); var _type = __webpack_require__( /*! ../../../../../core/utils/type */ 11528); var _const = __webpack_require__( /*! ./const */ 61933); function _extends() { return _extends = Object.assign ? Object.assign.bind() : function(n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) { ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]) } } return n }, _extends.apply(null, arguments) } }, 5061: /*!********************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/new/grid_core/toolbar/view.js ***! \********************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.ToolbarView = void 0; var _signalsCore = __webpack_require__( /*! @preact/signals-core */ 70037); var _controller = __webpack_require__( /*! ../context_menu/controller */ 7194); var _view = __webpack_require__( /*! ../core/view */ 3455); var _options_controller = __webpack_require__( /*! ../options_controller/options_controller */ 76385); var _controller2 = __webpack_require__( /*! ./controller */ 34272); var _toolbar = __webpack_require__( /*! ./toolbar */ 46905); var _utils = __webpack_require__( /*! ./utils */ 31895); class ToolbarView extends _view.View { constructor(controller, contextMenuController, options) { super(); this.controller = controller; this.contextMenuController = contextMenuController; this.options = options; this.component = _toolbar.ToolbarView; this.visibleConfig = this.options.oneWay("toolbar.visible"); this.visible = (0, _signalsCore.computed)((() => (0, _utils.isVisible)(this.visibleConfig.value, this.controller.items.value))) } getProps() { return (0, _signalsCore.computed)((() => ({ visible: this.visible.value, items: this.controller.items.value, disabled: this.options.oneWay("toolbar.disabled").value, multiline: this.options.oneWay("toolbar.multiline").value, showContextMenu: this.showContextMenu.bind(this) }))) } showContextMenu(event) { this.contextMenuController.show(event, "toolbar") } } exports.ToolbarView = ToolbarView; ToolbarView.dependencies = [_controller2.ToolbarController, _controller.BaseContextMenuController, _options_controller.OptionsController] }, 31671: /*!********************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/new/grid_core/utils/common.js ***! \********************************************************************************************/ function(__unused_webpack_module, exports) { Object.defineProperty(exports, "__esModule", { value: true }); exports.getName = exports.addWidgetPrefix = void 0; const getName = () => "dxCardView"; exports.getName = getName; exports.addWidgetPrefix = className => `dx-${"dxCardView".slice(2).toLowerCase()}${className?`-${className}`:""}` }, 15238: /*!*******************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/new/grid_core/utils/parse_value/index.js ***! \*******************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "parseValue", { enumerable: true, get: function() { return _parse_value.parseValue } }); var _parse_value = __webpack_require__( /*! ./parse_value */ 33883) }, 33883: /*!*************************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/new/grid_core/utils/parse_value/parse_value.js ***! \*************************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.parseValue = exports.parseNumberValue = exports.parseDateValue = exports.parseBooleanValue = void 0; var _date = _interopRequireDefault(__webpack_require__( /*! ../../../../../../common/core/localization/date */ 38662)); var _type = __webpack_require__( /*! ../../../../../../core/utils/type */ 11528); var _m_columns_controller_utils = __webpack_require__( /*! ../../../../../grids/grid_core/columns_controller/m_columns_controller_utils */ 63904); var _m_utils = _interopRequireDefault(__webpack_require__( /*! ../../../../../grids/grid_core/m_utils */ 53226)); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } const parseNumberValue = (text, format) => { switch (true) { case (0, _type.isString)(text) && !!format: return (0, _m_columns_controller_utils.strictParseNumber)(text.trim(), format); case (0, _type.isDefined)(text) && (0, _type.isNumeric)(text): return Number(text); default: return } }; exports.parseNumberValue = parseNumberValue; const parseBooleanValue = (text, trueText, falseText) => { switch (true) { case text === trueText: return true; case text === falseText: return false; default: return } }; exports.parseBooleanValue = parseBooleanValue; const parseDateValue = (text, format) => { let parsedValue = null; if (format) { try { parsedValue = _date.default.parse(text, format) } catch { parsedValue = null } } if (!parsedValue) { parsedValue = new Date(text) } return isNaN(parsedValue.getTime()) ? text : parsedValue }; exports.parseDateValue = parseDateValue; exports.parseValue = (column, text) => { switch (true) { case "number" === column.dataType: return parseNumberValue(text, column.format); case "boolean" === column.dataType: return parseBooleanValue(text, column.trueText, column.falseText); case _m_utils.default.isDateType(column.dataType): return parseDateValue(text, column.format); default: return text } } }, 43614: /*!************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/new/grid_core/utils/tree/index.js ***! \************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "getTreeNodeByPath", { enumerable: true, get: function() { return _tree.getTreeNodeByPath } }); Object.defineProperty(exports, "mergeOptionTrees", { enumerable: true, get: function() { return _tree.mergeOptionTrees } }); Object.defineProperty(exports, "setTreeNodeByPath", { enumerable: true, get: function() { return _tree.setTreeNodeByPath } }); var _tree = __webpack_require__( /*! ./tree */ 67793) }, 67793: /*!***********************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/new/grid_core/utils/tree/tree.js ***! \***********************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.shallowCopyTree = exports.shallowCopySubtreePath = exports.setTreeNodeByPath = exports.mergeOptionTrees = exports.getTreeNodeParentByPath = exports.getTreeNodeByPath = exports.deepMergeTrees = exports.deepCopyTreeNode = exports.createOrShallowCopySubtreePath = void 0; var _m_extend = __webpack_require__( /*! ../../../../../core/utils/m_extend */ 96298); var _m_type = __webpack_require__( /*! ../../../../../core/utils/m_type */ 39918); function _extends() { return _extends = Object.assign ? Object.assign.bind() : function(n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) { ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]) } } return n }, _extends.apply(null, arguments) } const shallowCopyTree = tree => { if ((0, _m_type.isPlainObject)(tree)) { return _extends({}, tree) } if (Array.isArray(tree)) { return [...tree] } return tree }; exports.shallowCopyTree = shallowCopyTree; const deepCopyTreeNode = treeNode => { switch (true) { case (0, _m_type.isPlainObject)(treeNode): return (0, _m_extend.extend)(true, {}, treeNode); case Array.isArray(treeNode): return (0, _m_extend.extend)(true, [], treeNode); default: return treeNode } }; exports.deepCopyTreeNode = deepCopyTreeNode; const deepMergeTrees = (firstTree, secondTree) => { if ((0, _m_type.isPlainObject)(secondTree) && (0, _m_type.isPlainObject)(firstTree)) { return (0, _m_extend.extend)(true, {}, firstTree, secondTree) } if (void 0 !== secondTree) { return deepCopyTreeNode(secondTree) } return deepCopyTreeNode(firstTree) }; exports.deepMergeTrees = deepMergeTrees; const getTreeNodeParentByPath = (tree, path) => { let currentNode = tree; for (let idx = 0; idx < path.length - 1; idx += 1) { const nextNodePath = path[idx]; currentNode = currentNode[nextNodePath]; if (void 0 === currentNode) { return } } return currentNode }; exports.getTreeNodeParentByPath = getTreeNodeParentByPath; const getTreeNodeByPath = (tree, path) => { const [lastNodePath] = path.slice(-1); const subtree = getTreeNodeParentByPath(tree, path); return null === subtree || void 0 === subtree ? void 0 : subtree[lastNodePath] }; exports.getTreeNodeByPath = getTreeNodeByPath; exports.shallowCopySubtreePath = (tree, path) => { const shallowCopiedTree = shallowCopyTree(tree); let currentNode = shallowCopiedTree; for (let idx = 0; idx < path.length - 1; idx += 1) { var _currentNode; const nextNodePath = path[idx]; const nextNode = null === (_currentNode = currentNode) || void 0 === _currentNode ? void 0 : _currentNode[nextNodePath]; if (void 0 === nextNode) { break } currentNode[nextNodePath] = shallowCopyTree(nextNode); currentNode = nextNode } return shallowCopiedTree }; const createOrShallowCopySubtreePath = (tree, path) => { const shallowCopiedTree = shallowCopyTree(tree); let currentNode = shallowCopiedTree; for (let idx = 0; idx < path.length; idx += 1) { const isLastPath = idx === path.length - 1; const nextNodePath = path[idx]; if (void 0 === currentNode[nextNodePath]) { currentNode[nextNodePath] = !isLastPath ? {} : void 0 } else { currentNode[nextNodePath] = shallowCopyTree(currentNode[nextNodePath]) } currentNode = currentNode[nextNodePath] } return shallowCopiedTree }; exports.createOrShallowCopySubtreePath = createOrShallowCopySubtreePath; exports.mergeOptionTrees = (internalTree, publicTree, defaultTree, pathToMerge) => { const [lastNodePath] = pathToMerge.slice(-1); const result = createOrShallowCopySubtreePath(internalTree, pathToMerge); const targetNodeParent = getTreeNodeParentByPath(result, pathToMerge); const newNodeValue = getTreeNodeByPath(publicTree, pathToMerge); const defaultNodeValue = getTreeNodeByPath(defaultTree, pathToMerge); targetNodeParent[lastNodePath] = deepMergeTrees(defaultNodeValue, newNodeValue); return result }; exports.setTreeNodeByPath = (tree, node, path) => { const [lastNodePath] = path.slice(-1); const shallowCopiedTree = createOrShallowCopySubtreePath(tree, path); const subtree = getTreeNodeParentByPath(shallowCopiedTree, path); subtree[lastNodePath] = node; return shallowCopiedTree } }, 58656: /*!**************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/new/grid_core/widget.js ***! \**************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.GridCoreNewBase = exports.GridCoreNew = void 0; var _extend = __webpack_require__( /*! ../../../../core/utils/extend */ 52576); var _ui = (e = __webpack_require__( /*! ../../../../ui/widget/ui.widget */ 11118), e && e.__esModule ? e : { default: e }); var e; var _signalsCore = __webpack_require__( /*! @preact/signals-core */ 70037); var _index = __webpack_require__( /*! ../../../core/di/index */ 87752); var _m_inferno_renderer = __webpack_require__( /*! ../../../core/m_inferno_renderer */ 21327); var _view = __webpack_require__( /*! ../../../grids/new/grid_core/search/view */ 29366); var _inferno = __webpack_require__( /*! inferno */ 76231); var _index2 = __webpack_require__( /*! ./accessibility/index */ 8197); var ColumnChooserModule = _interopRequireWildcard(__webpack_require__( /*! ./column_chooser/index */ 45415)); var _compatibility = __webpack_require__( /*! ./columns_controller/compatibility */ 66551); var ColumnsControllerModule = _interopRequireWildcard(__webpack_require__( /*! ./columns_controller/index */ 50875)); var DataControllerModule = _interopRequireWildcard(__webpack_require__( /*! ./data_controller/index */ 61124)); var di = _interopRequireWildcard(__webpack_require__( /*! ./di */ 3955)); var EditingModule = _interopRequireWildcard(__webpack_require__( /*! ./editing/index */ 68222)); var _view2 = __webpack_require__( /*! ./editing/popup/view */ 32643); var _error_controller = __webpack_require__( /*! ./error_controller/error_controller */ 67921); var _index7 = __webpack_require__( /*! ./filtering/filter_sync/index */ 69900); var _index8 = __webpack_require__( /*! ./filtering/header_filter/index */ 63108); var _view_controller = __webpack_require__( /*! ./filtering/header_filter/view_controller */ 58814); var FilterControllerModule = _interopRequireWildcard(__webpack_require__( /*! ./filtering/index */ 92743)); var _items_controller = __webpack_require__( /*! ./items_controller/items_controller */ 58761); var _controller = __webpack_require__( /*! ./lifecycle/controller */ 59329); var _main_view = __webpack_require__( /*! ./main_view */ 77565); var _options = __webpack_require__( /*! ./options */ 75932); var _view3 = __webpack_require__( /*! ./pager/view */ 93825); var SearchControllerModule = _interopRequireWildcard(__webpack_require__( /*! ./search/index */ 61519)); var SelectionControllerModule = _interopRequireWildcard(__webpack_require__( /*! ./selection/index */ 99779)); var SortingControllerModule = _interopRequireWildcard(__webpack_require__( /*! ./sorting_controller/index */ 37386)); var _controller2 = __webpack_require__( /*! ./toolbar/controller */ 34272); var _view4 = __webpack_require__( /*! ./toolbar/view */ 5061); var _widget_mock = __webpack_require__( /*! ./widget_mock */ 87354); function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) { return null } var r = new WeakMap, t = new WeakMap; return (_getRequireWildcardCache = function(e) { return e ? t : r })(e) } function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) { return e } if (null === e || "object" != typeof e && "function" != typeof e) { return { default: e } } var t = _getRequireWildcardCache(r); if (t && t.has(e)) { return t.get(e) } var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) { if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u] } } return n.default = e, t && t.set(e, n), n } function _extends() { return _extends = Object.assign ? Object.assign.bind() : function(n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) { ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]) } } return n }, _extends.apply(null, arguments) } class GridCoreNewBase extends _ui.default { _registerDIContext() { this.diContext = new _index.DIContext; di.register(this.diContext) } _initWidgetMock() { this.diContext.registerInstance(_widget_mock.WidgetMock, new _widget_mock.WidgetMock(this, this.diContext.get(DataControllerModule.CompatibilityDataController), this.diContext.get(_compatibility.CompatibilityColumnsController), this.diContext.get(_index8.CompatibilityHeaderFilterController), this.diContext.get(_index7.CompatibilityFilterSyncController))) } _initDIContext() { this.dataController = this.diContext.get(DataControllerModule.DataController); this.columnsController = this.diContext.get(ColumnsControllerModule.ColumnsController); this.sortingController = this.diContext.get(SortingControllerModule.SortingController); this.selectionController = this.diContext.get(SelectionControllerModule.Controller); this.itemsController = this.diContext.get(_items_controller.ItemsController); this.toolbarController = this.diContext.get(_controller2.ToolbarController); this.toolbarView = this.diContext.get(_view4.ToolbarView); this.editingController = this.diContext.get(EditingModule.Controller); this.editPopupView = this.diContext.get(_view2.EditPopupView); this.pagerView = this.diContext.get(_view3.PagerView); this.searchController = this.diContext.get(SearchControllerModule.SearchController); this.columnChooserController = this.diContext.get(ColumnChooserModule.ColumnChooserController); this.columnChooserView = this.diContext.get(ColumnChooserModule.ColumnChooserView); this.errorController = this.diContext.get(_error_controller.ErrorController); this.filterController = this.diContext.get(FilterControllerModule.FilterController); this.headerFilterController = this.diContext.get(_index8.HeaderFilterController); this.filterPanelView = this.diContext.get(FilterControllerModule.FilterPanelView); this.headerFilterViewController = this.diContext.get(_view_controller.HeaderFilterViewController); this.accessibilityController = this.diContext.get(_index2.AccessibilityController); this.filterSyncController = this.diContext.get(_index7.FilterSyncController); this.searchView = this.diContext.get(_view.SearchView) } _initLifeCycleController() { this.lifeCycleController = this.diContext.get(_controller.LifeCycleController); this.lifeCycleController.provideContentReadyCallback((() => { this._fireContentReadyAction() })) } _init() { super._init(); this.initialized = (0, _signalsCore.signal)(false); this._registerDIContext(); this._initWidgetMock(); this._initDIContext(); this._initLifeCycleController() } _getDefaultOptions() { return _extends({}, super._getDefaultOptions(), (0, _extend.extend)(true, {}, _options.defaultOptions)) } _defaultOptionsRules() { return super._defaultOptionsRules().concat(_options.defaultOptionsRules) } _initializeComponent() { super._initializeComponent(); this.initialized.value = true } _renderContent() { this._renderContentImpl() } _initMarkup() { super._initMarkup(); this.renderSubscription = this.diContext.get(_main_view.MainView).render(this.$element().get(0)); (0, _inferno.rerender)() } _optionChanged(args) { [this.filterPanelView].forEach((c => { if (c.isCompatibilityMode()) { c.optionChanged(args) } })); if (!args.handled) { super._optionChanged(args) } } _clean() { var _this$renderSubscript; null === (_this$renderSubscript = this.renderSubscription) || void 0 === _this$renderSubscript || _this$renderSubscript.call(this); _m_inferno_renderer.infernoRenderer.renderIntoContainer(null, this.$element().get(0), true); super._clean() } } exports.GridCoreNewBase = GridCoreNewBase; class GridCoreNew extends(ColumnsControllerModule.PublicMethods(DataControllerModule.PublicMethods(SortingControllerModule.PublicMethods(FilterControllerModule.PublicMethods(ColumnChooserModule.PublicMethods(SelectionControllerModule.PublicMethods(SearchControllerModule.PublicMethods(EditingModule.PublicMethods(GridCoreNewBase))))))))) {} exports.GridCoreNew = GridCoreNew }, 87354: /*!*******************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/new/grid_core/widget_mock.js ***! \*******************************************************************************************/ function(__unused_webpack_module, exports) { Object.defineProperty(exports, "__esModule", { value: true }); exports.WidgetMock = void 0; exports.WidgetMock = class { constructor(widget, data, columns, headerFilter, filterSync) { this.widget = widget; this.data = data; this.columns = columns; this.headerFilter = headerFilter; this.filterSync = filterSync; this.NAME = "dxDataGrid"; this._controllers = { data: this.data, columns: this.columns, headerFilter: this.headerFilter, filterSync: this.filterSync } } option() { return this.widget.option(...arguments) } columnOption() { return this.widget.columnOption(...arguments) } _createActionByOption() { return this.widget._createActionByOption(...arguments) } _createComponent() { return this.widget._createComponent(...arguments) } } }, 96273: /*!**************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/pivot_grid/area_item/m_area_item.js ***! \**************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.getRealElementWidth = exports.default = exports.AreaItem = void 0; var _class = _interopRequireDefault(__webpack_require__( /*! ../../../../core/class */ 55620)); var _dom_adapter = _interopRequireDefault(__webpack_require__( /*! ../../../../core/dom_adapter */ 64960)); var _element = __webpack_require__( /*! ../../../../core/element */ 61404); var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../../../core/renderer */ 64553)); var _extend = __webpack_require__( /*! ../../../../core/utils/extend */ 52576); var _position = __webpack_require__( /*! ../../../../core/utils/position */ 41639); var _size = __webpack_require__( /*! ../../../../core/utils/size */ 57653); var _style = __webpack_require__( /*! ../../../../core/utils/style */ 58515); var _type = __webpack_require__( /*! ../../../../core/utils/type */ 11528); var _scroll = __webpack_require__( /*! ../../../core/utils/scroll */ 11371); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } function _extends() { return _extends = Object.assign ? Object.assign.bind() : function(n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) { ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]) } } return n }, _extends.apply(null, arguments) } const getRealElementWidth = function(element) { let width = 0; const { offsetWidth: offsetWidth } = element; if (element.getBoundingClientRect) { const clientRect = (0, _position.getBoundingRect)(element); width = clientRect.width; if (!width) { width = clientRect.right - clientRect.left } if (width <= offsetWidth - 1) { width = offsetWidth } } return width > 0 ? width : offsetWidth }; exports.getRealElementWidth = getRealElementWidth; function getFakeTableOffset(scrollPos, elementOffset, tableSize, viewPortSize) { let offset = 0; let halfTableCount = 0; const halfTableSize = tableSize / 2; if (scrollPos + viewPortSize - (elementOffset + tableSize) > 1) { if (scrollPos >= elementOffset + tableSize + halfTableSize) { halfTableCount = parseInt((scrollPos - (elementOffset + tableSize)) / halfTableSize, 10) } offset = elementOffset + tableSize + halfTableSize * halfTableCount } else if (scrollPos < elementOffset) { if (scrollPos <= elementOffset - halfTableSize) { halfTableCount = parseInt((scrollPos - (elementOffset - halfTableSize)) / halfTableSize, 10) } offset = elementOffset - (tableSize - halfTableSize * halfTableCount) } else { offset = elementOffset } return offset } const AreaItem = exports.AreaItem = _class.default.inherit({ ctor(component) { this.component = component }, option() { return this.component.option.apply(this.component, arguments) }, _getRowElement(index) { const that = this; if (that._tableElement && that._tableElement.length > 0) { return that._tableElement[0].rows[index] } return null }, _createGroupElement: () => (0, _renderer.default)("
"), _createTableElement: () => (0, _renderer.default)("
"), _getCellText(cell, encodeHtml) { let cellText = cell.isWhiteSpace ? " " : cell.text || " "; if (encodeHtml && (-1 !== cellText.indexOf("<") || -1 !== cellText.indexOf(">"))) { cellText = (0, _renderer.default)("
").text(cellText).html() } return cellText }, _getRowClassNames() {}, _applyCustomStyles(options) { if (options.cell.width) { options.cssArray.push(`min-width:${options.cell.width}px`) } if (options.cell.sorted) { options.classArray.push("dx-pivotgrid-sorted") } }, _getMainElementMarkup: () => _dom_adapter.default.createElement("tbody"), _getCloseMainElementMarkup: () => "", _renderTableContent(tableElement, data) { const that = this; const rowsCount = data.length; let row; let cell; let i; let j; let cellText; const rtlEnabled = that.option("rtlEnabled"); const encodeHtml = that.option("encodeHtml"); let rowClassNames; tableElement.data("area", that._getAreaName()); tableElement.data("data", data); tableElement.css("width", ""); const tbody = this._getMainElementMarkup(); for (i = 0; i < rowsCount; i += 1) { row = data[i]; rowClassNames = []; const tr = _dom_adapter.default.createElement("tr"); for (j = 0; j < row.length; j += 1) { cell = row[j]; this._getRowClassNames(i, cell, rowClassNames); const td = _dom_adapter.default.createElement("td"); if (cell) { cell.rowspan && td.setAttribute("rowspan", cell.rowspan || 1); cell.colspan && td.setAttribute("colspan", cell.colspan || 1); const styleOptions = { cellElement: undefined, cell: cell, cellsCount: row.length, cellIndex: j, rowElement: undefined, rowIndex: i, rowsCount: rowsCount, rtlEnabled: rtlEnabled, classArray: [], cssArray: [] }; that._applyCustomStyles(styleOptions); if (styleOptions.cssArray.length) { (0, _style.setStyle)(td, styleOptions.cssArray.join(";")) } if (styleOptions.classArray.length) { td.setAttribute("class", styleOptions.classArray.join(" ")) } if ((0, _type.isDefined)(cell.expanded)) { const div = _dom_adapter.default.createElement("div"); div.classList.add("dx-expand-icon-container"); const span = _dom_adapter.default.createElement("span"); span.classList.add("dx-expand"); div.appendChild(span); td.appendChild(div) } cellText = this._getCellText(cell, encodeHtml) } else { cellText = "" } const span = _dom_adapter.default.createElement("span"); if ((0, _type.isDefined)(cell.wordWrapEnabled)) { span.style.whiteSpace = cell.wordWrapEnabled ? "normal" : "nowrap" } span.innerHTML = cellText; td.appendChild(span); if (cell.sorted) { const span = _dom_adapter.default.createElement("span"); span.classList.add("dx-icon-sorted"); td.appendChild(span) } tr.appendChild(td) } if (rowClassNames.length) { tr.setAttribute("class", rowClassNames.join(" ")) } tbody.appendChild(tr) } tableElement.append(tbody); this._triggerOnCellPrepared(tableElement, data) }, _triggerOnCellPrepared(tableElement, data) { const that = this; const rowElements = tableElement.find("tr"); const areaName = that._getAreaName(); const onCellPrepared = that.option("onCellPrepared"); const hasEvent = that.component._eventsStrategy.hasEvent("cellPrepared"); let rowElement; let $cellElement; let onCellPreparedArgs; const defaultActionArgs = this.component._defaultActionArgs(); let row; let cell; let rowIndex; let columnIndex; if (onCellPrepared || hasEvent) { for (rowIndex = 0; rowIndex < data.length; rowIndex += 1) { row = data[rowIndex]; rowElement = rowElements.eq(rowIndex); for (columnIndex = 0; columnIndex < row.length; columnIndex += 1) { cell = row[columnIndex]; $cellElement = rowElement.children().eq(columnIndex); onCellPreparedArgs = { area: areaName, rowIndex: rowIndex, columnIndex: columnIndex, cellElement: (0, _element.getPublicElement)($cellElement), cell: cell }; if (hasEvent) { that.component._trigger("onCellPrepared", onCellPreparedArgs) } else { onCellPrepared((0, _extend.extend)(onCellPreparedArgs, defaultActionArgs)) } } } } }, _getRowHeight(index) { const row = this._getRowElement(index); let height = 0; const { offsetHeight: offsetHeight } = row; if (row && row.lastChild) { if (row.getBoundingClientRect) { const clientRect = (0, _position.getBoundingRect)(row); height = clientRect.height; if (height <= offsetHeight - 1) { height = offsetHeight } } return height > 0 ? height : offsetHeight } return 0 }, _setRowHeight(index, value) { const row = this._getRowElement(index); if (row) { row.style.height = `${value}px` } }, getRowsLength() { const that = this; if (that._tableElement && that._tableElement.length > 0) { return that._tableElement[0].rows.length } return 0 }, getRowsHeight() { const that = this; const result = []; const rowsLength = that.getRowsLength(); for (let i = 0; i < rowsLength; i += 1) { result.push(that._getRowHeight(i)) } return result }, setRowsHeight(values) { const that = this; let totalHeight = 0; const valuesLength = values.length; for (let i = 0; i < valuesLength; i += 1) { totalHeight += values[i]; that._setRowHeight(i, values[i]) } this._tableHeight = totalHeight; this._tableElement[0].style.height = `${totalHeight}px` }, getColumnsWidth() { const rowsLength = this.getRowsLength(); let rowIndex; let row; let i; let columnIndex; const processedCells = []; const result = []; const fillCells = function(cells, rowIndex, columnIndex, rowSpan, colSpan) { let rowOffset; let columnOffset; for (rowOffset = 0; rowOffset < rowSpan; rowOffset += 1) { for (columnOffset = 0; columnOffset < colSpan; columnOffset += 1) { cells[rowIndex + rowOffset] = cells[rowIndex + rowOffset] || []; cells[rowIndex + rowOffset][columnIndex + columnOffset] = true } } }; if (rowsLength) { for (rowIndex = 0; rowIndex < rowsLength; rowIndex += 1) { processedCells[rowIndex] = processedCells[rowIndex] || []; row = this._getRowElement(rowIndex); for (i = 0; i < row.cells.length; i += 1) { for (columnIndex = 0; processedCells[rowIndex][columnIndex]; columnIndex += 1) {} fillCells(processedCells, rowIndex, columnIndex, row.cells[i].rowSpan, row.cells[i].colSpan); if (1 === row.cells[i].colSpan) { result[columnIndex] = result[columnIndex] || getRealElementWidth(row.cells[i]) } } } } return result }, setColumnsWidth(values) { let i; const tableElement = this._tableElement[0]; this._colgroupElement.html(""); const columnsCount = this.getColumnsCount(); const columnWidth = []; for (i = 0; i < columnsCount; i += 1) { columnWidth.push(values[i] || 0) } for (i = columnsCount; i < values.length && values; i += 1) { columnWidth[columnsCount - 1] += values[i] } for (i = 0; i < columnsCount; i += 1) { const col = _dom_adapter.default.createElement("col"); col.style.width = `${columnWidth[i]}px`; this._colgroupElement.append(col) } this._tableWidth = columnWidth.reduce(((sum, width) => sum + width), 0); tableElement.style.width = `${this._tableWidth}px`; tableElement.style.tableLayout = "fixed" }, resetColumnsWidth() { (0, _size.setWidth)(this._colgroupElement.find("col"), "auto"); this._tableElement.css({ width: "", tableLayout: "" }) }, setGroupWidth(value) { this._getScrollable().option("width", value) }, setGroupHeight(value) { this._getScrollable().option("height", value) }, getGroupHeight() { return this._getGroupElementSize("height") }, getGroupWidth() { return this._getGroupElementSize("width") }, _getGroupElementSize(dimension) { const size = this.groupElement()[0].style[dimension]; if (size.indexOf("px") > 0) { return parseFloat(size) } return null }, groupElement() { return this._groupElement }, tableElement() { return this._tableElement }, element() { return this._rootElement }, headElement() { return this._tableElement.find("thead") }, _setTableCss(styles) { if (this.option("rtlEnabled")) { styles.right = styles.left; delete styles.left } this.tableElement().css(styles) }, setVirtualContentParams(params) { this._virtualContent.css({ width: params.width, height: params.height }); const scrollable = this._getScrollable(); if (null !== scrollable && void 0 !== scrollable && scrollable.isRenovated()) { this._getScrollable().option("classes", "dx-virtual-mode") } else { this.groupElement().addClass("dx-virtual-mode") } }, disableVirtualMode() { const scrollable = this._getScrollable(); if (null !== scrollable && void 0 !== scrollable && scrollable.isRenovated()) { this._getScrollable().option("classes", "") } else { this.groupElement().removeClass("dx-virtual-mode") } }, _renderVirtualContent() { const that = this; if (!that._virtualContent && "virtual" === that.option("scrolling.mode")) { that._virtualContent = (0, _renderer.default)("
").addClass("dx-virtual-content").insertBefore(that._tableElement) } }, reset() { const tableElement = this._tableElement[0]; this._fakeTable && this._fakeTable.detach(); this._fakeTable = null; this.disableVirtualMode(); this.setGroupWidth("100%"); this.setGroupHeight("auto"); this.resetColumnsWidth(); if (tableElement) { for (let i = 0; i < tableElement.rows.length; i += 1) { tableElement.rows[i].style.height = "" } tableElement.style.height = ""; tableElement.style.width = "100%" } }, _updateFakeTableVisibility() { const that = this; const tableElement = that.tableElement()[0]; const horizontalOffsetName = that.option("rtlEnabled") ? "right" : "left"; const fakeTableElement = that._fakeTable[0]; if (tableElement.style.top === fakeTableElement.style.top && fakeTableElement.style[horizontalOffsetName] === tableElement.style[horizontalOffsetName]) { that._fakeTable.addClass("dx-hidden") } else { that._fakeTable.removeClass("dx-hidden") } }, _moveFakeTableHorizontally(scrollPos) { const that = this; const rtlEnabled = that.option("rtlEnabled"); const offsetStyleName = rtlEnabled ? "right" : "left"; const tableElementOffset = parseFloat(that.tableElement()[0].style[offsetStyleName]); const offset = getFakeTableOffset(scrollPos, tableElementOffset, that._tableWidth, that.getGroupWidth()); if (parseFloat(that._fakeTable[0].style[offsetStyleName]) !== offset) { that._fakeTable[0].style[offsetStyleName] = `${offset}px` } }, _moveFakeTableTop(scrollPos) { const that = this; const tableElementOffsetTop = parseFloat(that.tableElement()[0].style.top); const offsetTop = getFakeTableOffset(scrollPos, tableElementOffsetTop, that._tableHeight, that.getGroupHeight()); if (parseFloat(that._fakeTable[0].style.top) !== offsetTop) { that._fakeTable[0].style.top = `${offsetTop}px` } }, _moveFakeTable() { this._updateFakeTableVisibility() }, _createFakeTable() { const that = this; if (!that._fakeTable) { that._fakeTable = that.tableElement().clone().addClass("dx-pivot-grid-fake-table").appendTo(that._virtualContent) } }, render(rootElement, data) { const that = this; if (that._tableElement) { try { that._tableElement[0].innerHTML = "" } catch (e) { that._tableElement.empty() } that._tableElement.removeAttr("style") } else { that._groupElement = that._createGroupElement(); that._tableElement = that._createTableElement(); that._tableElement.appendTo(that._groupElement); that._groupElement.appendTo(rootElement); that._rootElement = rootElement } that._colgroupElement = (0, _renderer.default)("
").appendTo(that._tableElement); that._renderTableContent(that._tableElement, data); that._renderVirtualContent() }, _getScrollable() { return this.groupElement().data("dxScrollable") }, _getMemoizeScrollTo() { this._memoizeScrollTo = this._memoizeScrollTo ?? (0, _scroll.getMemoizeScrollTo)((() => this._getScrollable())); return this._memoizeScrollTo }, _getMaxLeftOffset(scrollable) { const containerElement = (0, _renderer.default)(scrollable.container()).get(0); return containerElement.scrollWidth - containerElement.clientWidth }, on(eventName, handler) { const that = this; const scrollable = that._getScrollable(); if (scrollable) { scrollable.on(eventName, (e => { if (that.option("rtlEnabled") && (0, _type.isDefined)(e.scrollOffset.left)) { e.scrollOffset.left = that._getMaxLeftOffset(scrollable) - e.scrollOffset.left } handler(e) })) } return this }, off(eventName) { const scrollable = this._getScrollable(); if (scrollable) { scrollable.off(eventName) } return this }, scrollTo(pos) { let force = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : false; const scrollable = this._getScrollable(); if (!scrollable) { return } const rtlEnabled = this.option("rtlEnabled"); const areaName = this._getAreaName(); const scrollablePos = _extends({}, pos, { left: rtlEnabled && ("column" === areaName || "data" === areaName) ? this._getMaxLeftOffset(scrollable) - pos.left : pos.left }); const memoizeScrollTo = this._getMemoizeScrollTo(); memoizeScrollTo(scrollablePos, force); if (this._virtualContent) { this._createFakeTable(); this._moveFakeTable(pos) } }, updateScrollable() { const scrollable = this._getScrollable(); if (scrollable) { return scrollable.update() } return }, getColumnsCount() { let columnCount = 0; const row = this._getRowElement(0); let cells; if (row) { cells = row.cells; for (let i = 0, len = cells.length; i < len; ++i) { columnCount += cells[i].colSpan } } return columnCount }, getData() { const tableElement = this._tableElement; return tableElement ? tableElement.data("data") : [] } }); exports.default = { AreaItem: AreaItem, getRealElementWidth: getRealElementWidth } }, 67705: /*!******************************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/pivot_grid/chart_integration/m_chart_integration.js ***! \******************************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = exports.ChartIntegrationMixin = void 0; var _renderer = (e = __webpack_require__( /*! ../../../../core/renderer */ 64553), e && e.__esModule ? e : { default: e }); var e; var _extend = __webpack_require__( /*! ../../../../core/utils/extend */ 52576); var _iterator = __webpack_require__( /*! ../../../../core/utils/iterator */ 21274); var _m_widget_utils = __webpack_require__( /*! ../m_widget_utils */ 12062); const FORMAT_DICTIONARY = { number: "numeric", date: "datetime" }; const UNBIND_KEY = "dxPivotGridUnbinding"; function getFormattedValue(path, fields) { const value = []; const lastFieldIndex = fields.length - 1; (0, _iterator.each)(path, ((i, item) => { value.push(item.text || (0, _m_widget_utils.formatValue)(item.value, fields[lastFieldIndex - i])) })); return value.reverse() } function getExpandedLevel(node) { let level = 0; (0, _m_widget_utils.foreachTree)(node, (members => { level = Math.max(level, members.length - 1) })); return level } function createChartDataSource(pivotGridDataSource, mapOptions, axisDictionary) { const data = pivotGridDataSource.getData(); const dataSource = []; const dataFields = pivotGridDataSource.getAreaFields("data"); const rowFields = pivotGridDataSource.getAreaFields("row"); const columnFields = pivotGridDataSource.getAreaFields("column"); const columnElements = [{ index: data.grandTotalColumnIndex, children: data.columns }]; const rowElements = [{ index: data.grandTotalRowIndex, children: data.rows }]; const rowLevel = getExpandedLevel(rowElements); const columnLevel = getExpandedLevel(columnElements); let measureIndex; let dataField; let rowMemberIndex; let rowVisibility; let rowPathFormatted; let rowPath; let columnMemberIndex; let columnVisibility; let columnPath; let columnPathFormatted; function createDataItem() { const dataCell = (data.values[rowMemberIndex] || [])[columnMemberIndex] || []; const value = dataCell[measureIndex]; let axis; let processCellArgs = { rowPath: rowPath, maxRowLevel: rowLevel, rowPathFormatted: rowPathFormatted, rowFields: rowFields, columnPathFormatted: columnPathFormatted, maxColumnLevel: columnLevel, columnPath: columnPath, columnFields: columnFields, dataFields: dataFields, dataIndex: measureIndex, dataValues: dataCell, visible: columnVisibility && rowVisibility }; let seriesName = (mapOptions.inverted ? columnPathFormatted : rowPathFormatted).join(" - "); let argument = (mapOptions.inverted ? rowPathFormatted : columnPathFormatted).join("/"); if (dataFields.length > 1) { if ("args" === mapOptions.putDataFieldsInto || "both" === mapOptions.putDataFieldsInto) { argument += ` | ${dataField.caption}` } if ("args" !== mapOptions.putDataFieldsInto) { seriesName += ` | ${dataField.caption}`; if ("singleAxis" !== mapOptions.dataFieldsDisplayMode) { axis = dataField.caption } } } processCellArgs.chartDataItem = { val: void 0 === value ? null : value, series: seriesName, arg: argument }; processCellArgs = function(processCellArgs, processCell) { let { chartDataItem: chartDataItem } = processCellArgs; let processedCell = processCell && processCell(processCellArgs); if (processedCell) { chartDataItem = (0, _extend.extend)({}, chartDataItem, processedCell.chartDataItem); processedCell = (0, _extend.extend)({}, processCellArgs, processedCell, { chartDataItem: chartDataItem }); return processedCell } return processCellArgs }(processCellArgs, mapOptions.processCell); if (processCellArgs.visible) { axisDictionary[processCellArgs.chartDataItem.series] = axisDictionary[processCellArgs.chartDataItem.series] || axis; dataSource.push(processCellArgs.chartDataItem) } } function foreachRowColumn(callBack) { (0, _m_widget_utils.foreachTree)(rowElements, (rowMembers => { rowMemberIndex = rowMembers[0].index; rowMembers = rowMembers.slice(0, rowMembers.length - 1); rowVisibility = rowLevel === rowMembers.length; rowPath = (0, _m_widget_utils.createPath)(rowMembers); rowPathFormatted = getFormattedValue(rowMembers, rowFields); if (0 === rowPath.length) { rowPathFormatted = [mapOptions.grandTotalText] }(0, _m_widget_utils.foreachTree)(columnElements, (columnMembers => { columnMemberIndex = columnMembers[0].index; columnMembers = columnMembers.slice(0, columnMembers.length - 1); columnVisibility = columnLevel === columnMembers.length; columnPath = (0, _m_widget_utils.createPath)(columnMembers); columnPathFormatted = getFormattedValue(columnMembers, columnFields); if (0 === columnPath.length) { columnPathFormatted = [mapOptions.grandTotalText] } callBack() })) })) } function foreachDataField(callback) { (0, _iterator.each)(dataFields, ((index, field) => { dataField = field; measureIndex = index; callback() })) } if (false === mapOptions.alternateDataFields) { foreachDataField((() => { foreachRowColumn(createDataItem) })) } else { foreachRowColumn((() => { foreachDataField(createDataItem) })) } return dataSource } function createValueAxisOptions(dataSource, options) { const dataFields = dataSource.getAreaFields("data"); if ("args" !== options.putDataFieldsInto && "singleAxis" !== options.dataFieldsDisplayMode || 1 === dataFields.length) { const valueAxisSettings = []; (0, _iterator.each)(dataFields, ((_, dataField) => { const valueAxisOptions = { name: dataField.caption, title: dataField.caption, valueType: FORMAT_DICTIONARY[dataField.dataType] || dataField.dataType, label: { format: dataField.format } }; if (dataField.customizeText) { valueAxisOptions.label.customizeText = function(formatObject) { return dataField.customizeText.call(dataField, formatObject) } } if ("splitPanes" === options.dataFieldsDisplayMode) { valueAxisOptions.pane = dataField.caption } valueAxisSettings.push(valueAxisOptions) })); return valueAxisSettings } return [{}] } function createPanesOptions(dataSource, options) { const panes = []; const dataFields = dataSource.getAreaFields("data"); if (dataFields.length > 1 && "splitPanes" === options.dataFieldsDisplayMode && "args" !== options.putDataFieldsInto) { (0, _iterator.each)(dataFields, ((_, dataField) => { panes.push({ name: dataField.caption }) })) } if (!panes.length) { panes.push({}) } return panes } const ChartIntegrationMixin = exports.ChartIntegrationMixin = { bindChart(chart, integrationOptions) { integrationOptions = (0, _extend.extend)({}, integrationOptions); const that = this; const updateChart = function() { integrationOptions.grandTotalText = that.option("texts.grandTotal"); const chartOptions = function(dataSource, options) { const { customizeSeries: customizeSeries } = options; const { customizeChart: customizeChart } = options; let chartOptions = { valueAxis: createValueAxisOptions(dataSource, options), panes: createPanesOptions(dataSource, options) }; const axisDictionary = {}; if (customizeChart) { chartOptions = (0, _extend.extend)(true, {}, chartOptions, customizeChart(chartOptions)) } chartOptions.dataSource = createChartDataSource(dataSource, options, axisDictionary); chartOptions.seriesTemplate = { nameField: "series", customizeSeries(seriesName) { let seriesOptions = {}; if ("splitPanes" === options.dataFieldsDisplayMode) { seriesOptions.pane = axisDictionary[seriesName] } else if ("singleAxis" !== options.dataFieldsDisplayMode) { seriesOptions.axis = axisDictionary[seriesName] } if (customizeSeries) { seriesOptions = (0, _extend.extend)(seriesOptions, customizeSeries(seriesName, seriesOptions)) } return seriesOptions } }; return chartOptions }(that.getDataSource(), integrationOptions); chart.option(chartOptions) }; chart = function(chartElement) { if (!chartElement) { return false } if (chartElement.NAME) { return "dxChart" === chartElement.NAME && chartElement } const element = (0, _renderer.default)(chartElement); return element.data("dxChart") && element.dxChart("instance") }(chart); if (!chart) { return null }! function(chart) { const unbind = chart.$element().data(UNBIND_KEY); unbind && unbind() }(chart); that.on("changed", updateChart); updateChart(); const disposeBinding = function() { chart.$element().removeData(UNBIND_KEY); that.off("changed", updateChart) }; chart.on("disposing", disposeBinding); this.on("disposing", disposeBinding); chart.$element().data(UNBIND_KEY, disposeBinding); return disposeBinding } }; exports.default = { ChartIntegrationMixin: ChartIntegrationMixin } }, 58537: /*!**********************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/pivot_grid/const.js ***! \**********************************************************************************/ function(__unused_webpack_module, exports) { Object.defineProperty(exports, "__esModule", { value: true }); exports.CLASSES = void 0; exports.CLASSES = { scrollBarMeasureElement: "dx-pivotgrid-scrollbar-measure-element" } }, 31045: /*!**************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/pivot_grid/data_area/m_data_area.js ***! \**************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = exports.DataArea = void 0; var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../../../core/renderer */ 64553)); var _m_support = _interopRequireDefault(__webpack_require__( /*! ../../../core/utils/m_support */ 85991)); var _m_area_item = __webpack_require__( /*! ../area_item/m_area_item */ 96273); var _m_widget_utils = __webpack_require__( /*! ../m_widget_utils */ 12062); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } const DataArea = exports.DataArea = _m_area_item.AreaItem.inherit({ _getAreaName: () => "data", _createGroupElement: () => (0, _renderer.default)("
").addClass("dx-pivotgrid-area").addClass("dx-pivotgrid-area-data").css("borderTopWidth", 0), _applyCustomStyles(options) { const { cell: cell } = options; const { classArray: classArray } = options; if ("T" === cell.rowType || "T" === cell.columnType) { classArray.push("dx-total") } if ("GT" === cell.rowType || "GT" === cell.columnType) { classArray.push("dx-grandtotal") } if ("T" === cell.rowType || "GT" === cell.rowType) { classArray.push("dx-row-total") } if (options.rowIndex === options.rowsCount - 1) { options.cssArray.push("border-bottom: 0px") } this.callBase(options) }, _moveFakeTable(scrollPos) { this._moveFakeTableHorizontally(scrollPos.x); this._moveFakeTableTop(scrollPos.y); this.callBase() }, renderScrollable() { this._groupElement.dxScrollable({ useNative: this.getUseNativeValue(), useSimulatedScrollbar: false, rtlEnabled: this.component.option("rtlEnabled"), bounceEnabled: false, updateManually: true }) }, getUseNativeValue() { const { useNative: useNative } = this.component.option("scrolling"); return "auto" === useNative ? !!_m_support.default.nativeScrolling : !!useNative }, getScrollbarWidth() { return this.getUseNativeValue() ? (0, _m_widget_utils.calculateScrollbarWidth)() : 0 }, updateScrollableOptions(_ref) { let { direction: direction, rtlEnabled: rtlEnabled } = _ref; const scrollable = this._getScrollable(); scrollable.option("useNative", this.getUseNativeValue()); scrollable.option({ direction: direction, rtlEnabled: rtlEnabled }) }, getScrollableDirection(horizontal, vertical) { if (horizontal && !vertical) { return "horizontal" } if (!horizontal && vertical) { return "vertical" } return "both" }, reset() { this.callBase(); if (this._virtualContent) { this._virtualContent.parent().css("height", "auto") } }, setVirtualContentParams(params) { this.callBase(params); this._virtualContent.parent().css("height", params.height); this._setTableCss({ top: params.top, left: params.left }) } }); exports.default = { DataArea: DataArea } }, 18509: /*!**************************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/pivot_grid/data_controller/m_data_controller.js ***! \**************************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = exports.DataController__internals = exports.DataController = void 0; var _class = _interopRequireDefault(__webpack_require__( /*! ../../../../core/class */ 55620)); var _callbacks = _interopRequireDefault(__webpack_require__( /*! ../../../../core/utils/callbacks */ 84718)); var _common = __webpack_require__( /*! ../../../../core/utils/common */ 17781); var _deferred = __webpack_require__( /*! ../../../../core/utils/deferred */ 87739); var _extend = __webpack_require__( /*! ../../../../core/utils/extend */ 52576); var _iterator = __webpack_require__( /*! ../../../../core/utils/iterator */ 21274); var _string = __webpack_require__( /*! ../../../../core/utils/string */ 54497); var _type = __webpack_require__( /*! ../../../../core/utils/type */ 11528); var _m_state_storing_core = _interopRequireDefault(__webpack_require__( /*! ../../../grids/grid_core/state_storing/m_state_storing_core */ 93416)); var _m_virtual_columns_core = __webpack_require__( /*! ../../../grids/grid_core/virtual_columns/m_virtual_columns_core */ 32760); var _m_virtual_scrolling_core = _interopRequireDefault(__webpack_require__( /*! ../../../grids/grid_core/virtual_scrolling/m_virtual_scrolling_core */ 89272)); var _m_data_source = __webpack_require__( /*! ../data_source/m_data_source */ 87993); var _m_widget_utils = __webpack_require__( /*! ../m_widget_utils */ 12062); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } const math = Math; const proxyMethod = function(instance, methodName, defaultResult) { if (!instance[methodName]) { instance[methodName] = function() { const dataSource = this._dataSource; return dataSource ? dataSource[methodName].apply(dataSource, arguments) : defaultResult } } }; const DataController = exports.DataController = _class.default.inherit(function() { function formatCellValue(value, dataField, errorText) { return "#N/A" === value ? errorText : (0, _m_widget_utils.formatValue)(value, dataField) } const createHeaderInfo = function() { const addInfoItem = function(info, options) { const breadth = options.lastIndex - options.index || 1; const itemInfo = function(headerItem, breadth, isHorizontal, isTree) { var _headerItem$children; const infoItem = { type: headerItem.type, text: headerItem.text }; if (headerItem.path) { infoItem.path = headerItem.path } if (headerItem.width) { infoItem.width = headerItem.width } if ((0, _type.isDefined)(headerItem.wordWrapEnabled)) { infoItem.wordWrapEnabled = headerItem.wordWrapEnabled } if (headerItem.isLast) { infoItem.isLast = true } if (headerItem.sorted) { infoItem.sorted = true } if (headerItem.isMetric) { infoItem.dataIndex = headerItem.dataIndex } if ((0, _type.isDefined)(headerItem.expanded)) { infoItem.expanded = headerItem.expanded } if (breadth > 1) { infoItem[isHorizontal ? "colspan" : "rowspan"] = breadth } if (headerItem.depthSize && headerItem.depthSize > 1) { infoItem[isHorizontal ? "rowspan" : "colspan"] = headerItem.depthSize } if (headerItem.index >= 0) { infoItem.dataSourceIndex = headerItem.index } if (isTree && null !== (_headerItem$children = headerItem.children) && void 0 !== _headerItem$children && _headerItem$children.length && !headerItem.children[0].isMetric) { infoItem.width = null; infoItem.isWhiteSpace = true } return infoItem }(options.headerItem, breadth, options.isHorizontal, options.isTree); ! function(info, infoItem, itemIndex, depthIndex, isHorizontal) { const index = isHorizontal ? depthIndex : itemIndex; while (!info[index]) { info.push([]) } if (isHorizontal) { info[index].push(infoItem) } else { info[index].unshift(infoItem) } }(info, itemInfo, options.index, options.depth, options.isHorizontal); if (!options.headerItem.children || 0 === options.headerItem.children.length) { return options.lastIndex + 1 } return options.lastIndex }; const getViewHeaderItems = function(headerItems, headerDescriptions, cellDescriptions, depthSize, options) { const cellDescriptionsCount = cellDescriptions.length; const viewHeaderItems = function(headerItems, headerDescriptions) { const headerDescriptionsCount = (null === headerDescriptions || void 0 === headerDescriptions ? void 0 : headerDescriptions.length) || 0; const childrenStack = []; const d = new _deferred.Deferred; let headerItem; (0, _deferred.when)((0, _m_widget_utils.foreachTreeAsync)(headerItems, ((items, index) => { const item = items[0]; const path = (0, _m_widget_utils.createPath)(items); headerItem = createHeaderItem(childrenStack, path.length, index); headerItem.type = "D"; headerItem.value = item.value; headerItem.path = path; headerItem.text = item.text; headerItem.index = item.index; headerItem.displayText = item.displayText; headerItem.key = item.key; headerItem.isEmpty = item.isEmpty; if (path.length < headerDescriptionsCount && (!item.children || 0 !== item.children.length)) { headerItem.expanded = !!item.children } }))).done((() => { d.resolve(createHeaderItem(childrenStack, 0, 0).children || []) })); return d }(headerItems, headerDescriptions); const { dataFields: dataFields } = options; const d = new _deferred.Deferred; (0, _deferred.when)(viewHeaderItems).done((viewHeaderItems => { options.notifyProgress(.5); if (options.showGrandTotals) { viewHeaderItems[!options.showTotalsPrior ? "push" : "unshift"]({ type: "GT", isEmpty: options.isEmptyGrandTotal }) } const hideTotals = false === options.showTotals || dataFields.length > 0 && dataFields.length === options.hiddenTotals.length; const hideData = dataFields.length > 0 && options.hiddenValues.length === dataFields.length; if (hideData && hideTotals) { depthSize = 1 } if (!hideTotals || "tree" === options.layout) { ! function(headerItems, headerDescriptions, showTotalsPrior, isTree) { showTotalsPrior = showTotalsPrior || isTree; (0, _m_widget_utils.foreachTree)(headerItems, ((items, index) => { const item = items[0]; const parentChildren = (items[1] ? items[1].children : headerItems) || []; const dataField = headerDescriptions[items.length - 1]; if ("D" === item.type && item.expanded && (false !== dataField.showTotals || isTree)) { -1 !== index && parentChildren.splice(showTotalsPrior ? index : index + 1, 0, (0, _extend.extend)({}, item, { children: null, type: "T", expanded: showTotalsPrior ? true : null, isAdditionalTotal: true })); if (showTotalsPrior) { item.expanded = null } } })) }(viewHeaderItems, headerDescriptions, options.showTotalsPrior, "tree" === options.layout) }(0, _deferred.when)((0, _m_widget_utils.foreachTreeAsync)(viewHeaderItems, (items => { const item = items[0]; if (!item.children || 0 === item.children.length) { item.depthSize = depthSize - items.length + 1 } }))).done((() => { if (cellDescriptionsCount > 1) { ! function(headerItems, cellDescriptions, options) { (0, _m_widget_utils.foreachTree)(headerItems, (items => { const item = items[0]; let i; if (!item.children || 0 === item.children.length) { item.children = []; for (i = 0; i < cellDescriptions.length; i += 1) { var _item$isEmpty; const isGrandTotal = "GT" === item.type; const isTotal = "T" === item.type; const isValue = "D" === item.type; const columnIsHidden = false === cellDescriptions[i].visible || isGrandTotal && options.hiddenGrandTotals.includes(i) || isTotal && options.hiddenTotals.includes(i) || isValue && options.hiddenValues.includes(i); if (columnIsHidden) { continue } item.children.push({ caption: cellDescriptions[i].caption, path: item.path, type: item.type, value: i, index: item.index, dataIndex: i, isMetric: true, isEmpty: null === (_item$isEmpty = item.isEmpty) || void 0 === _item$isEmpty ? void 0 : _item$isEmpty[i] }) } } })) }(viewHeaderItems, cellDescriptions, options) }!options.showEmpty && function(headerItems) { (0, _m_widget_utils.foreachTree)([{ children: headerItems }], ((items, index) => { var _isEmpty; const item = items[0]; const parentChildren = (items[1] ? items[1].children : headerItems) || []; let { isEmpty: isEmpty } = item; if (null !== (_isEmpty = isEmpty) && void 0 !== _isEmpty && _isEmpty.length) { isEmpty = item.isEmpty.filter((isEmpty => isEmpty)).length === isEmpty.length } if (item && !item.children && isEmpty) { parentChildren.splice(index, 1); removeEmptyParent(items, 1) } })) }(viewHeaderItems); options.notifyProgress(.75); (0, _deferred.when)((0, _m_widget_utils.foreachTreeAsync)(viewHeaderItems, (items => { var _item$children; const item = items[0]; const { isMetric: isMetric } = item; const field = headerDescriptions[items.length - 1] || {}; if ("D" === item.type && !isMetric) { item.width = field.width } if (hideData && "D" === item.type) { const parentChildren = (items[1] ? items[1].children : viewHeaderItems) || []; parentChildren.splice(parentChildren.indexOf(item), 1); return } if (isMetric) { item.wordWrapEnabled = cellDescriptions[item.dataIndex].wordWrapEnabled } else { item.wordWrapEnabled = field.wordWrapEnabled } item.isLast = !(null !== (_item$children = item.children) && void 0 !== _item$children && _item$children.length); if (item.isLast) { (0, _iterator.each)(options.sortBySummaryPaths, ((_, sortBySummaryPath) => { if (!(0, _type.isDefined)(item.dataIndex)) { sortBySummaryPath = sortBySummaryPath.slice(0); sortBySummaryPath.pop() } if (function(items, sortBySummaryPath) { let path; const item = items[0]; const stringValuesUsed = (0, _type.isString)(sortBySummaryPath[0]); const headerItem = item.dataIndex >= 0 ? items[1] : item; if (stringValuesUsed && -1 !== sortBySummaryPath[0].indexOf("&[") && headerItem.key || !headerItem.key) { path = (0, _m_widget_utils.createPath)(items) } else { path = (0, _iterator.map)(items, (item => item.dataIndex >= 0 ? item.value : item.text)).reverse() } if ("GT" === item.type) { path = path.slice(1) } return path.join("/") === sortBySummaryPath.join("/") }(items, sortBySummaryPath)) { item.sorted = true; return false } return })) } item.text = function(item, description, options) { let { text: text } = item; if ((0, _type.isDefined)(item.displayText)) { text = item.displayText } else if ((0, _type.isDefined)(item.caption)) { text = item.caption } else if ("GT" === item.type) { text = options.texts.grandTotal } if (item.isAdditionalTotal) { text = (0, _string.format)(options.texts.total || "", text) } return text }(item, 0, options) }))).done((() => { if (!viewHeaderItems.length) { viewHeaderItems.push({}) } options.notifyProgress(1); d.resolve(viewHeaderItems) })) })) })); return d }; function createHeaderItem(childrenStack, depth, index) { const parent = childrenStack[depth] = childrenStack[depth] || []; const node = parent[index] = {}; if (childrenStack[depth + 1]) { node.children = childrenStack[depth + 1]; for (let i = depth + 1; i < childrenStack.length; i += 1) { childrenStack[i] = void 0 } childrenStack.length = depth + 1 } return node } const removeEmptyParent = function(items, index) { const parent = items[index + 1]; if (!items[index].children.length && null !== parent && void 0 !== parent && parent.children) { parent.children.splice(parent.children.indexOf(items[index]), 1); removeEmptyParent(items, index + 1) } }; return function(headerItems, headerDescriptions, cellDescriptions, isHorizontal, options) { const info = []; const depthSize = function(headerItems) { let depth = 0; (0, _m_widget_utils.foreachTree)(headerItems, (items => { depth = math.max(depth, items.length) })); return depth }(headerItems) || 1; const d = new _deferred.Deferred; getViewHeaderItems(headerItems, headerDescriptions, cellDescriptions, depthSize, options).done((viewHeaderItems => { ! function(info, viewHeaderItems, depthSize, isHorizontal, isTree) { let lastIndex = 0; let index; let depth; const indexesByDepth = [0]; (0, _m_widget_utils.foreachTree)(viewHeaderItems, (items => { const headerItem = items[0]; depth = headerItem.isMetric ? depthSize : items.length - 1; while (indexesByDepth.length - 1 < depth) { indexesByDepth.push(indexesByDepth[indexesByDepth.length - 1]) } index = indexesByDepth[depth] || 0; lastIndex = addInfoItem(info, { headerItem: headerItem, index: index, lastIndex: lastIndex, depth: depth, isHorizontal: isHorizontal, isTree: isTree }); indexesByDepth.length = depth; indexesByDepth.push(lastIndex) })) }(info, viewHeaderItems, depthSize, isHorizontal, "tree" === options.layout); options.notifyProgress(1); d.resolve(info) })); return d } }(); function createSortPaths(headerFields, dataFields) { const sortBySummaryPaths = []; (0, _iterator.each)(headerFields, ((_, headerField) => { const fieldIndex = (0, _m_widget_utils.findField)(dataFields, headerField.sortBySummaryField); if (fieldIndex >= 0) { sortBySummaryPaths.push((headerField.sortBySummaryPath || []).concat([fieldIndex])) } })); return sortBySummaryPaths } function foreachRowInfo(rowsInfo, callback) { let columnOffset = 0; const columnOffsetResetIndexes = []; for (let i = 0; i < rowsInfo.length; i += 1) { for (let j = 0; j < rowsInfo[i].length; j += 1) { const rowSpanOffset = (rowsInfo[i][j].rowspan || 1) - 1; const visibleIndex = i + rowSpanOffset; if (columnOffsetResetIndexes[i]) { columnOffset -= columnOffsetResetIndexes[i]; columnOffsetResetIndexes[i] = 0 } if (false === callback(rowsInfo[i][j], visibleIndex, i, j, columnOffset)) { break } columnOffsetResetIndexes[i + (rowsInfo[i][j].rowspan || 1)] = (columnOffsetResetIndexes[i + (rowsInfo[i][j].rowspan || 1)] || 0) + 1; columnOffset += 1 } } } function getHeaderIndexedItems(headerItems, options) { let visibleIndex = 0; const indexedItems = []; (0, _m_widget_utils.foreachTree)(headerItems, (items => { const headerItem = items[0]; const path = (0, _m_widget_utils.createPath)(items); if (headerItem.children && false === options.showTotals) { return } const indexedItem = (0, _extend.extend)(true, {}, headerItem, { visibleIndex: visibleIndex += 1, path: path }); if ((0, _type.isDefined)(indexedItem.index)) { indexedItems[indexedItem.index] = indexedItem } else { indexedItems.push(indexedItem) } })); return indexedItems } function createScrollController(dataController, component, dataAdapter) { return new _m_virtual_scrolling_core.default.VirtualScrollController(component, (0, _extend.extend)({ hasKnownLastPage: () => true, pageCount() { return math.ceil(this.totalItemsCount() / this.pageSize()) }, updateLoading() {}, itemsCount() { if (this.pageIndex() < this.pageCount() - 1) { return this.pageSize() } return this.totalItemsCount() % this.pageSize() }, items: () => [], viewportItems: () => [], onChanged() {}, isLoading: () => dataController.isLoading(), changingDuration() { const dataSource = dataController._dataSource; if (dataSource.paginate()) { return 300 } return dataController._changingDuration || 0 } }, dataAdapter)) } const members = { ctor(options) { const that = this; const virtualScrollControllerChanged = that._fireChanged.bind(that); options = that._options = options || {}; that.dataSourceChanged = (0, _callbacks.default)(); that._dataSource = that._createDataSource(options); if (options.component && "virtual" === options.component.option("scrolling.mode")) { that._rowsScrollController = createScrollController(that, options.component, { totalItemsCount: () => that.totalRowCount(), pageIndex: index => that.rowPageIndex(index), pageSize: () => that.rowPageSize(), load() { if (that._rowsScrollController.pageIndex() >= this.pageCount()) { that._rowsScrollController.pageIndex(this.pageCount() - 1) } return that._rowsScrollController.handleDataChanged((function() { if (that._dataSource.paginate()) { that._dataSource.load() } else { virtualScrollControllerChanged.apply(this, arguments) } })) } }); that._columnsScrollController = createScrollController(that, options.component, { totalItemsCount: () => that.totalColumnCount(), pageIndex: index => that.columnPageIndex(index), pageSize: () => that.columnPageSize(), load() { if (that._columnsScrollController.pageIndex() >= this.pageCount()) { that._columnsScrollController.pageIndex(this.pageCount() - 1) } return that._columnsScrollController.handleDataChanged((function() { if (that._dataSource.paginate()) { that._dataSource.load() } else { virtualScrollControllerChanged.apply(this, arguments) } })) } }) } that._stateStoringController = new _m_state_storing_core.default.StateStoringController(options.component).init(); that._columnsInfo = []; that._rowsInfo = []; that._cellsInfo = []; that.expandValueChanging = (0, _callbacks.default)(); that.loadingChanged = (0, _callbacks.default)(); that.progressChanged = (0, _callbacks.default)(); that.scrollChanged = (0, _callbacks.default)(); that.load(); that._update(); that.changed = (0, _callbacks.default)() }, _fireChanged() { const startChanging = new Date; this.changed && !this._lockChanged && this.changed.fire(); this._changingDuration = new Date - startChanging }, _correctSkipsTakes(rowIndex, rowSkip, rowSpan, levels, skips, takes) { const endIndex = rowSpan ? rowIndex + rowSpan - 1 : rowIndex; skips[levels.length] = skips[levels.length] || 0; takes[levels.length] = takes[levels.length] || 0; if (endIndex < rowSkip) { skips[levels.length] += 1 } else { takes[levels.length] += 1 } }, _calculatePagingForRowExpandedPaths(options, skips, takes, rowExpandedSkips, rowExpandedTakes) { const rows = this._rowsInfo; const rowCount = Math.min(options.rowSkip + options.rowTake, rows.length); const { rowExpandedPaths: rowExpandedPaths } = options; let levels = []; const expandedPathIndexes = {}; let i; let j; let path; rowExpandedPaths.forEach(((path, index) => { expandedPathIndexes[path] = index })); for (i = 0; i < rowCount; i += 1) { takes.length = skips.length = levels.length + 1; for (j = 0; j < rows[i].length; j += 1) { const cell = rows[i][j]; if ("D" === cell.type) { this._correctSkipsTakes(i, options.rowSkip, cell.rowspan, levels, skips, takes); path = cell.path || path; const expandIndex = path && path.length > 1 ? expandedPathIndexes[path.slice(0, -1)] : -1; if (expandIndex >= 0) { rowExpandedSkips[expandIndex] = skips[levels.length] || 0; rowExpandedTakes[expandIndex] = takes[levels.length] || 0 } if (cell.rowspan) { levels.push(cell.rowspan) } } } levels = levels.map((level => level - 1)).filter((level => level > 0)) } }, _calculatePagingForColumnExpandedPaths(options, skips, takes, expandedSkips, expandedTakes) { const skipByPath = {}; const takeByPath = {}; (0, _m_virtual_columns_core.foreachColumnInfo)(this._columnsInfo, ((columnInfo, columnIndex) => { if ("D" === columnInfo.type && columnInfo.path && void 0 === columnInfo.dataIndex) { const colspan = columnInfo.colspan || 1; const path = columnInfo.path.slice(0, -1).toString(); skipByPath[path] = skipByPath[path] || 0; takeByPath[path] = takeByPath[path] || 0; if (columnIndex + colspan <= options.columnSkip) { skipByPath[path] += 1 } else if (columnIndex < options.columnSkip + options.columnTake) { takeByPath[path] += 1 } } })); skips[0] = skipByPath[""]; takes[0] = takeByPath[""]; options.columnExpandedPaths.forEach(((path, index) => { const skip = skipByPath[path]; const take = takeByPath[path]; if (void 0 !== skip) { expandedSkips[index] = skip } if (void 0 !== take) { expandedTakes[index] = take } })) }, _processPagingForExpandedPaths(options, area, storeLoadOptions, reload) { const expandedPaths = options[`${area}ExpandedPaths`]; const expandedSkips = expandedPaths.map((() => 0)); const expandedTakes = expandedPaths.map((() => reload ? options.pageSize : 0)); const skips = []; const takes = []; if (!reload) { if ("row" === area) { this._calculatePagingForRowExpandedPaths(options, skips, takes, expandedSkips, expandedTakes) } else { this._calculatePagingForColumnExpandedPaths(options, skips, takes, expandedSkips, expandedTakes) } } this._savePagingForExpandedPaths(options, area, storeLoadOptions, skips[0], takes[0], expandedSkips, expandedTakes) }, _savePagingForExpandedPaths(options, area, storeLoadOptions, skip, take, expandedSkips, expandedTakes) { const expandedPaths = options[`${area}ExpandedPaths`]; options[`${area}ExpandedPaths`] = []; options[`${area}Skip`] = void 0 !== skip ? skip : options[`${area}Skip`]; options[`${area}Take`] = void 0 !== take ? take : options[`${area}Take`]; for (let i = 0; i < expandedPaths.length; i += 1) { if (expandedTakes[i]) { const isOppositeArea = options.area && options.area !== area; storeLoadOptions.push((0, _extend.extend)({ area: area, headerName: `${area}s` }, options, { [`${area}Skip`]: expandedSkips[i], [`${area}Take`]: expandedTakes[i], [isOppositeArea ? "oppositePath" : "path"]: expandedPaths[i] })) } } }, _handleCustomizeStoreLoadOptions(storeLoadOptions, reload) { const options = storeLoadOptions[0]; const rowsScrollController = this._rowsScrollController; if (this._dataSource.paginate() && rowsScrollController) { const rowPageSize = rowsScrollController.pageSize(); if ("rows" === options.headerName) { options.rowSkip = 0; options.rowTake = rowPageSize; options.rowExpandedPaths = [] } else { options.rowSkip = rowsScrollController.beginPageIndex() * rowPageSize; options.rowTake = (rowsScrollController.endPageIndex() - rowsScrollController.beginPageIndex() + 1) * rowPageSize; this._processPagingForExpandedPaths(options, "row", storeLoadOptions, reload) } } const columnsScrollController = this._columnsScrollController; if (this._dataSource.paginate() && columnsScrollController) { const columnPageSize = columnsScrollController.pageSize(); storeLoadOptions.forEach((options => { if ("columns" === options.headerName) { options.columnSkip = 0; options.columnTake = columnPageSize; options.columnExpandedPaths = [] } else { options.columnSkip = columnsScrollController.beginPageIndex() * columnPageSize; options.columnTake = (columnsScrollController.endPageIndex() - columnsScrollController.beginPageIndex() + 1) * columnPageSize; this._processPagingForExpandedPaths(options, "column", storeLoadOptions, reload) } })) } }, load() { const that = this; const stateStoringController = this._stateStoringController; if (stateStoringController.isEnabled() && !stateStoringController.isLoaded()) { stateStoringController.load().always((state => { if (state) { that._dataSource.state(state) } else { that._dataSource.load() } })) } else { that._dataSource.load() } }, calculateVirtualContentParams(contentParams) { const that = this; const rowsScrollController = that._rowsScrollController; const columnsScrollController = that._columnsScrollController; if (rowsScrollController && columnsScrollController) { rowsScrollController.viewportItemSize(contentParams.virtualRowHeight); rowsScrollController.viewportSize(contentParams.viewportHeight / rowsScrollController.viewportItemSize()); rowsScrollController.setContentItemSizes(contentParams.itemHeights); columnsScrollController.viewportItemSize(contentParams.virtualColumnWidth); columnsScrollController.viewportSize(contentParams.viewportWidth / columnsScrollController.viewportItemSize()); columnsScrollController.setContentItemSizes(contentParams.itemWidths); (0, _common.deferUpdate)((() => { columnsScrollController.loadIfNeed(); rowsScrollController.loadIfNeed() })); that.scrollChanged.fire({ left: columnsScrollController.getViewportPosition(), top: rowsScrollController.getViewportPosition() }); return { contentTop: rowsScrollController.getContentOffset(), contentLeft: columnsScrollController.getContentOffset(), width: columnsScrollController.getVirtualContentSize(), height: rowsScrollController.getVirtualContentSize() } } return }, setViewportPosition(left, top) { this._rowsScrollController.setViewportPosition(top || 0); this._columnsScrollController.setViewportPosition(left || 0) }, subscribeToWindowScrollEvents($element) { var _this$_rowsScrollCont; null === (_this$_rowsScrollCont = this._rowsScrollController) || void 0 === _this$_rowsScrollCont || _this$_rowsScrollCont.subscribeToWindowScrollEvents($element) }, updateWindowScrollPosition(position) { var _this$_rowsScrollCont2; null === (_this$_rowsScrollCont2 = this._rowsScrollController) || void 0 === _this$_rowsScrollCont2 || _this$_rowsScrollCont2.scrollTo(position) }, updateViewOptions(options) { (0, _extend.extend)(this._options, options); this._update() }, _handleExpandValueChanging(e) { this.expandValueChanging.fire(e) }, _handleLoadingChanged(isLoading) { this.loadingChanged.fire(isLoading) }, _handleProgressChanged(progress) { this.progressChanged.fire(progress) }, _handleFieldsPrepared(e) { var _this$_options$onFiel, _this$_options; null === (_this$_options$onFiel = (_this$_options = this._options).onFieldsPrepared) || void 0 === _this$_options$onFiel || _this$_options$onFiel.call(_this$_options, e) }, _createDataSource(options) { const that = this; const dataSourceOptions = options.dataSource; let dataSource; that._isSharedDataSource = dataSourceOptions instanceof _m_data_source.PivotGridDataSource; if (that._isSharedDataSource) { dataSource = dataSourceOptions } else { dataSource = new _m_data_source.PivotGridDataSource(dataSourceOptions) } that._expandValueChangingHandler = that._handleExpandValueChanging.bind(that); that._loadingChangedHandler = that._handleLoadingChanged.bind(that); that._fieldsPreparedHandler = that._handleFieldsPrepared.bind(that); that._customizeStoreLoadOptionsHandler = that._handleCustomizeStoreLoadOptions.bind(that); that._changedHandler = function() { that._update(); that.dataSourceChanged.fire() }; that._progressChangedHandler = function(progress) { that._handleProgressChanged(.8 * progress) }; dataSource.on("changed", that._changedHandler); dataSource.on("expandValueChanging", that._expandValueChangingHandler); dataSource.on("loadingChanged", that._loadingChangedHandler); dataSource.on("progressChanged", that._progressChangedHandler); dataSource.on("fieldsPrepared", that._fieldsPreparedHandler); dataSource.on("customizeStoreLoadOptions", that._customizeStoreLoadOptionsHandler); return dataSource }, getDataSource() { return this._dataSource }, isLoading() { return this._dataSource.isLoading() }, beginLoading() { this._dataSource.beginLoading() }, endLoading() { this._dataSource.endLoading() }, _update() { const that = this; const dataSource = that._dataSource; const options = that._options; const columnFields = dataSource.getAreaFields("column"); const rowFields = dataSource.getAreaFields("row"); const dataFields = dataSource.getAreaFields("data"); const dataFieldsForRows = "row" === options.dataFieldArea ? dataFields : []; const dataFieldsForColumns = "row" !== options.dataFieldArea ? dataFields : []; const data = dataSource.getData(); const hiddenTotals = function(dataFields) { const result = []; (0, _iterator.each)(dataFields, ((index, field) => { if (false === field.showTotals) { result.push(index) } })); return result }(dataFields); const hiddenValues = function(dataFields) { const result = []; dataFields.forEach(((field, index) => { if (void 0 === field.showValues && false === field.showTotals || false === field.showValues) { result.push(index) } })); return result }(dataFields); const hiddenGrandTotals = function(dataFields, columnFields) { let result = []; (0, _iterator.each)(dataFields, ((index, field) => { if (false === field.showGrandTotals) { result.push(index) } })); if (0 === columnFields.length && result.length === dataFields.length) { result = [] } return result }(dataFields, columnFields); const grandTotalsAreHiddenForNotAllDataFields = dataFields.length > 0 ? hiddenGrandTotals.length !== dataFields.length : true; const commonOptions = { texts: options.texts || {}, hiddenTotals: hiddenTotals, hiddenValues: hiddenValues, hiddenGrandTotals: hiddenGrandTotals, showEmpty: !options.hideEmptySummaryCells, dataFields: dataFields, progress: 0 }; const rowOptions = (0, _extend.extend)({}, commonOptions, { isEmptyGrandTotal: data.isEmptyGrandTotalRow, showTotals: options.showRowTotals, showTotalsPrior: "rows" === options.showTotalsPrior || "both" === options.showTotalsPrior, showGrandTotals: false !== options.showRowGrandTotals && grandTotalsAreHiddenForNotAllDataFields, sortBySummaryPaths: createSortPaths(columnFields, dataFields), layout: options.rowHeaderLayout, fields: rowFields }); const columnOptions = (0, _extend.extend)({}, commonOptions, { isEmptyGrandTotal: data.isEmptyGrandTotalColumn, showTotals: options.showColumnTotals, showTotalsPrior: "columns" === options.showTotalsPrior || "both" === options.showTotalsPrior, showGrandTotals: false !== options.showColumnGrandTotals && grandTotalsAreHiddenForNotAllDataFields, sortBySummaryPaths: createSortPaths(rowFields, dataFields), fields: columnFields }); const notifyProgress = function(progress) { this.progress = progress; that._handleProgressChanged(.8 + .1 * rowOptions.progress + .1 * columnOptions.progress) }; rowOptions.notifyProgress = notifyProgress; columnOptions.notifyProgress = notifyProgress; if (!(0, _type.isDefined)(data.grandTotalRowIndex)) { data.grandTotalRowIndex = getHeaderIndexedItems(data.rows, rowOptions).length } if (!(0, _type.isDefined)(data.grandTotalColumnIndex)) { data.grandTotalColumnIndex = getHeaderIndexedItems(data.columns, columnOptions).length } dataSource._changeLoadingCount(1); (0, _deferred.when)(createHeaderInfo(data.columns, columnFields, dataFieldsForColumns, true, columnOptions), createHeaderInfo(data.rows, rowFields, dataFieldsForRows, false, rowOptions)).always((() => { dataSource._changeLoadingCount(-1) })).done(((columnsInfo, rowsInfo) => { that._columnsInfo = columnsInfo; that._rowsInfo = rowsInfo; if (that._rowsScrollController && that._columnsScrollController && that.changed && !that._dataSource.paginate()) { that._rowsScrollController.reset(true); that._columnsScrollController.reset(true); that._lockChanged = true; that._rowsScrollController.load(); that._columnsScrollController.load(); that._lockChanged = false } })).done((() => { that._fireChanged(); if (that._stateStoringController.isEnabled() && !that._dataSource.isLoading()) { that._stateStoringController.state(that._dataSource.state()); that._stateStoringController.save() } })) }, getRowsInfo(getAllData) { const that = this; const rowsInfo = that._rowsInfo; const scrollController = that._rowsScrollController; let rowspan; const isOnePredefinedRow = 1 === rowsInfo.length && (!rowsInfo[0].type || "GT" === rowsInfo[0].type); if (scrollController && !getAllData && !isOnePredefinedRow) { const startIndex = scrollController.beginPageIndex() * that.rowPageSize(); const endIndex = scrollController.endPageIndex() * that.rowPageSize() + that.rowPageSize(); const summaryFields = that._dataSource.getSummaryFields(); const isRowDataFieldArea = "row" === this._options.dataFieldArea; const newRowsInfo = []; let maxDepth = 1; foreachRowInfo(rowsInfo, ((rowInfo, visibleIndex, rowIndex, _, columnIndex) => { const isVisible = visibleIndex >= startIndex && rowIndex < endIndex; const index = rowIndex < startIndex ? 0 : rowIndex - startIndex; let cell = rowInfo; if (isVisible) { newRowsInfo[index] = newRowsInfo[index] || []; rowspan = rowIndex < startIndex ? rowInfo.rowspan - (startIndex - rowIndex) || 1 : rowInfo.rowspan; if (startIndex + index + rowspan > endIndex) { rowspan = endIndex - (index + startIndex) || 1 } if (rowspan !== rowInfo.rowspan) { cell = (0, _extend.extend)({}, cell, { rowspan: rowspan }) } newRowsInfo[index].push(cell); const isSummaryCell = summaryFields.some((field => field.caption === cell.text)); if (!isRowDataFieldArea || !isSummaryCell) { maxDepth = math.max(maxDepth, columnIndex + 1) } } else { return false } return })); foreachRowInfo(newRowsInfo, ((rowInfo, visibleIndex, rowIndex, columnIndex, realColumnIndex) => { const colspan = rowInfo.colspan || 1; if (realColumnIndex + colspan > maxDepth) { newRowsInfo[rowIndex][columnIndex] = (0, _extend.extend)({}, rowInfo, { colspan: maxDepth - realColumnIndex || 1 }) } })); return newRowsInfo } return rowsInfo }, getColumnsInfo(getAllData) { const that = this; let info = that._columnsInfo; const scrollController = that._columnsScrollController; if (scrollController && !getAllData) { const startIndex = scrollController.beginPageIndex() * that.columnPageSize(); const endIndex = scrollController.endPageIndex() * that.columnPageSize() + that.columnPageSize(); info = (0, _m_virtual_columns_core.createColumnsInfo)(info, startIndex, endIndex) } return info }, totalRowCount() { return this._rowsInfo.length }, rowPageIndex(index) { if (void 0 !== index) { this._rowPageIndex = index } return this._rowPageIndex || 0 }, totalColumnCount() { var _this$_columnsInfo; let count = 0; if (null !== (_this$_columnsInfo = this._columnsInfo) && void 0 !== _this$_columnsInfo && _this$_columnsInfo.length) { for (let i = 0; i < this._columnsInfo[0].length; i += 1) { count += this._columnsInfo[0][i].colspan || 1 } } return count }, rowPageSize(size) { if (void 0 !== size) { this._rowPageSize = size } return this._rowPageSize || 20 }, columnPageSize(size) { if (void 0 !== size) { this._columnPageSize = size } return this._columnPageSize || 20 }, columnPageIndex(index) { if (void 0 !== index) { this._columnPageIndex = index } return this._columnPageIndex || 0 }, getCellsInfo(getAllData) { const rowsInfo = this.getRowsInfo(getAllData); const columnsInfo = this.getColumnsInfo(getAllData); const data = this._dataSource.getData(); const texts = this._options.texts || {}; return function(rowsInfo, columnsInfo, data, dataFields, dataFieldArea, errorText) { const info = []; const dataFieldAreaInRows = "row" === dataFieldArea; const dataSourceCells = data.values; dataSourceCells.length && foreachRowInfo(rowsInfo, ((rowInfo, rowIndex) => { const row = info[rowIndex] = []; const dataRow = dataSourceCells[rowInfo.dataSourceIndex >= 0 ? rowInfo.dataSourceIndex : data.grandTotalRowIndex] || []; rowInfo.isLast && (0, _m_virtual_columns_core.foreachColumnInfo)(columnsInfo, ((columnInfo, columnIndex) => { const dataIndex = (dataFieldAreaInRows ? rowInfo.dataIndex : columnInfo.dataIndex) || 0; const dataField = dataFields[dataIndex]; if (columnInfo.isLast && dataField && false !== dataField.visible) { let cell = dataRow[columnInfo.dataSourceIndex >= 0 ? columnInfo.dataSourceIndex : data.grandTotalColumnIndex]; if (!Array.isArray(cell)) { cell = [cell] } const cellValue = cell[dataIndex]; row[columnIndex] = { text: formatCellValue(cellValue, dataField, errorText), value: cellValue, format: dataField.format, dataType: dataField.dataType, columnType: columnInfo.type, rowType: rowInfo.type, rowPath: rowInfo.path || [], columnPath: columnInfo.path || [], dataIndex: dataIndex }; if (dataField.width) { row[columnIndex].width = dataField.width } } })) })); return info }(rowsInfo, columnsInfo, data, this._dataSource.getAreaFields("data"), this._options.dataFieldArea, texts.dataNotAvailable) }, dispose() { var _that$_columnsScrollC, _that$_rowsScrollCont; const that = this; if (that._isSharedDataSource) { that._dataSource.off("changed", that._changedHandler); that._dataSource.off("expandValueChanging", that._expandValueChangingHandler); that._dataSource.off("loadingChanged", that._loadingChangedHandler); that._dataSource.off("progressChanged", that._progressChangedHandler); that._dataSource.off("fieldsPrepared", that._fieldsPreparedHandler); that._dataSource.off("customizeStoreLoadOptions", that._customizeStoreLoadOptionsHandler) } else { that._dataSource.dispose() } null === (_that$_columnsScrollC = that._columnsScrollController) || void 0 === _that$_columnsScrollC || _that$_columnsScrollC.dispose(); null === (_that$_rowsScrollCont = that._rowsScrollController) || void 0 === _that$_rowsScrollCont || _that$_rowsScrollCont.dispose(); that._stateStoringController.dispose(); that.expandValueChanging.empty(); that.changed.empty(); that.loadingChanged.empty(); that.progressChanged.empty(); that.scrollChanged.empty(); that.dataSourceChanged.empty() } }; proxyMethod(members, "applyPartialDataSource"); proxyMethod(members, "collapseHeaderItem"); proxyMethod(members, "expandHeaderItem"); proxyMethod(members, "getData"); proxyMethod(members, "isEmpty"); return members }()); const DataController__internals = exports.DataController__internals = { NO_DATA_AVAILABLE_TEXT: "#N/A" }; exports.default = { DataController: DataController, DataController__internals: DataController__internals } }, 87993: /*!******************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/pivot_grid/data_source/m_data_source.js ***! \******************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = exports.PivotGridDataSource = void 0; var _utils = __webpack_require__( /*! ../../../../common/data/data_source/utils */ 97169); var _class = _interopRequireDefault(__webpack_require__( /*! ../../../../core/class */ 55620)); var _events_strategy = __webpack_require__( /*! ../../../../core/events_strategy */ 2607); var _array = __webpack_require__( /*! ../../../../core/utils/array */ 94487); var _deferred = __webpack_require__( /*! ../../../../core/utils/deferred */ 87739); var _extend = __webpack_require__( /*! ../../../../core/utils/extend */ 52576); var _iterator = __webpack_require__( /*! ../../../../core/utils/iterator */ 21274); var _type = __webpack_require__( /*! ../../../../core/utils/type */ 11528); var _abstract_store = _interopRequireDefault(__webpack_require__( /*! ../../../../data/abstract_store */ 77735)); var _m_common = _interopRequireDefault(__webpack_require__( /*! ../../../core/utils/m_common */ 39315)); var _m_inflector = _interopRequireDefault(__webpack_require__( /*! ../../../core/utils/m_inflector */ 66122)); var _m_local_store = __webpack_require__( /*! ../local_store/m_local_store */ 47825); var _m_widget_utils = __webpack_require__( /*! ../m_widget_utils */ 12062); var _m_remote_store = __webpack_require__( /*! ../remote_store/m_remote_store */ 81383); var _m_summary_display_modes = _interopRequireDefault(__webpack_require__( /*! ../summary_display_modes/m_summary_display_modes */ 81221)); var _m_xmla_store = _interopRequireDefault(__webpack_require__( /*! ../xmla_store/m_xmla_store */ 48063)); var _m_data_source_utils = __webpack_require__( /*! ./m_data_source_utils */ 11075); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } const DESCRIPTION_NAME_BY_AREA = { row: "rows", column: "columns", data: "values", filter: "filters" }; const STATE_PROPERTIES = ["area", "areaIndex", "sortOrder", "filterType", "filterValues", "sortBy", "sortBySummaryField", "sortBySummaryPath", "expanded", "summaryType", "summaryDisplayMode"]; const CALCULATED_PROPERTIES = ["format", "selector", "customizeText", "caption"]; const ALL_CALCULATED_PROPERTIES = CALCULATED_PROPERTIES.concat(["allowSorting", "allowSortingBySummary", "allowFiltering", "allowExpandAll"]); function resetFieldState(field, properties) { const initialProperties = field._initProperties || {}; (0, _iterator.each)(properties, ((_, prop) => { if (Object.prototype.hasOwnProperty.call(initialProperties, prop)) { field[prop] = initialProperties[prop] } })) } function updateCalculatedFieldProperties(field, calculatedProperties) { resetFieldState(field, calculatedProperties); if (!(0, _type.isDefined)(field.caption)) { (0, _m_widget_utils.setFieldProperty)(field, "caption", function(field) { let caption = field.dataField || field.groupName || ""; let summaryType = (field.summaryType || "").toLowerCase(); if ((0, _type.isString)(field.groupInterval)) { caption += `_${field.groupInterval}` } if (summaryType && "custom" !== summaryType) { summaryType = summaryType.replace(/^./, summaryType[0].toUpperCase()); if (caption.length) { summaryType = ` (${summaryType})` } } else { summaryType = "" } return _m_inflector.default.titleize(caption) + summaryType }(field)) } } function isDataExists(data) { return data.rows.length || data.columns.length || data.values.length } const PivotGridDataSource = exports.PivotGridDataSource = _class.default.inherit(function() { const findHeaderItem = function(headerItems, path) { if (headerItems._cacheByPath) { return headerItems._cacheByPath[path.join(".")] || null } return }; const getHeaderItemsLastIndex = function(headerItems, grandTotalIndex) { let i; let lastIndex = -1; let headerItem; if (headerItems) { for (i = 0; i < headerItems.length; i += 1) { headerItem = headerItems[i]; if (void 0 !== headerItem.index) { lastIndex = Math.max(lastIndex, headerItem.index) } if (headerItem.children) { lastIndex = Math.max(lastIndex, getHeaderItemsLastIndex(headerItem.children)) } else if (headerItem.collapsedChildren) { lastIndex = Math.max(lastIndex, getHeaderItemsLastIndex(headerItem.collapsedChildren)) } } } if ((0, _type.isDefined)(grandTotalIndex)) { lastIndex = Math.max(lastIndex, grandTotalIndex) } return lastIndex }; const updateHeaderItemChildren = function(headerItems, headerItem, children, grandTotalIndex) { const applyingHeaderItemsCount = getHeaderItemsLastIndex(children) + 1; let emptyIndex = getHeaderItemsLastIndex(headerItems, grandTotalIndex) + 1; let index; const applyingItemIndexesToCurrent = []; let needIndexUpdate = false; const d = new _deferred.Deferred; if (headerItem.children && headerItem.children.length === children.length) { for (let i = 0; i < children.length; i += 1) { const child = children[i]; if (void 0 !== child.index) { if (void 0 === headerItem.children[i].index) { child.index = applyingItemIndexesToCurrent[child.index] = emptyIndex++; headerItem.children[i] = child } else { applyingItemIndexesToCurrent[child.index] = headerItem.children[i].index } } } } else { needIndexUpdate = true; for (index = 0; index < applyingHeaderItemsCount; index += 1) { applyingItemIndexesToCurrent[index] = emptyIndex++ } headerItem.children = children }(0, _deferred.when)((0, _m_widget_utils.foreachTreeAsync)(headerItem.children, (items => { if (needIndexUpdate) { items[0].index = applyingItemIndexesToCurrent[items[0].index] } }))).done((() => { d.resolve(applyingItemIndexesToCurrent) })); return d }; const updateHeaderItems = function(headerItems, newHeaderItems, grandTotalIndex) { const d = new _deferred.Deferred; let emptyIndex = grandTotalIndex >= 0 && getHeaderItemsLastIndex(headerItems, grandTotalIndex) + 1; const applyingItemIndexesToCurrent = []; (0, _deferred.when)((0, _m_widget_utils.foreachTreeAsync)(headerItems, (items => { delete items[0].collapsedChildren }))).done((() => { (0, _deferred.when)((0, _m_widget_utils.foreachTreeAsync)(newHeaderItems, ((newItems, index) => { const newItem = newItems[0]; if (newItem.index >= 0) { let headerItem = findHeaderItem(headerItems, (0, _m_widget_utils.createPath)(newItems)); if (headerItem && headerItem.index >= 0) { applyingItemIndexesToCurrent[newItem.index] = headerItem.index } else if (emptyIndex) { const path = (0, _m_widget_utils.createPath)(newItems.slice(1)); headerItem = findHeaderItem(headerItems, path); const parentItems = path.length ? headerItem && headerItem.children : headerItems; if (parentItems) { parentItems[index] = newItem; newItem.index = applyingItemIndexesToCurrent[newItem.index] = emptyIndex++ } } } }))).done((() => { d.resolve(applyingItemIndexesToCurrent) })) })); return d }; const updateDataSourceCells = function(dataSource, newDataSourceCells, newRowItemIndexesToCurrent, newColumnItemIndexesToCurrent) { let newRowIndex; let newColumnIndex; let newRowCells; let newCell; let rowIndex; let columnIndex; const dataSourceCells = dataSource.values; if (newDataSourceCells) { for (newRowIndex = 0; newRowIndex < newDataSourceCells.length; newRowIndex += 1) { newRowCells = newDataSourceCells[newRowIndex]; rowIndex = newRowItemIndexesToCurrent[newRowIndex]; if (!(0, _type.isDefined)(rowIndex)) { rowIndex = dataSource.grandTotalRowIndex } if (newRowCells && (0, _type.isDefined)(rowIndex)) { if (!dataSourceCells[rowIndex]) { dataSourceCells[rowIndex] = [] } for (newColumnIndex = 0; newColumnIndex < newRowCells.length; newColumnIndex += 1) { newCell = newRowCells[newColumnIndex]; columnIndex = newColumnItemIndexesToCurrent[newColumnIndex]; if (!(0, _type.isDefined)(columnIndex)) { columnIndex = dataSource.grandTotalColumnIndex } if ((0, _type.isDefined)(newCell) && (0, _type.isDefined)(columnIndex)) { dataSourceCells[rowIndex][columnIndex] = newCell } } } } } }; function createLocalOrRemoteStore(dataSourceOptions, notifyProgress) { const StoreConstructor = dataSourceOptions.remoteOperations || dataSourceOptions.paginate ? _m_remote_store.RemoteStore : _m_local_store.LocalStore; return new StoreConstructor((0, _extend.extend)((0, _utils.normalizeDataSourceOptions)(dataSourceOptions), { onChanged: null, onLoadingChanged: null, onProgressChanged: notifyProgress })) } function getExpandedPaths(dataSource, loadOptions, dimensionName, prevLoadOptions) { const result = []; const fields = loadOptions && loadOptions[dimensionName] || []; const prevFields = prevLoadOptions && prevLoadOptions[dimensionName] || []; (0, _m_widget_utils.foreachTree)(dataSource[dimensionName], (items => { const item = items[0]; const path = (0, _m_widget_utils.createPath)(items); if (item.children && fields[path.length - 1] && !fields[path.length - 1].expanded) { if (path.length < fields.length && (!prevLoadOptions || function(fields, prevFields, count) { for (let i = 0; i < count; i += 1) { if (!fields[i] || !prevFields[i] || fields[i].index !== prevFields[i].index) { return false } } return true }(fields, prevFields, path.length))) { result.push(path.slice()) } } }), true); return result } function setFieldProperties(field, srcField, skipInitPropertySave, properties) { if (srcField) { (0, _iterator.each)(properties, ((_, name) => { if (skipInitPropertySave) { field[name] = srcField[name] } else { if (("summaryType" === name || "summaryDisplayMode" === name) && void 0 === srcField[name]) { return }(0, _m_widget_utils.setFieldProperty)(field, name, srcField[name]) } })) } else { resetFieldState(field, properties) } return field } function getFieldsState(fields, properties) { const result = []; (0, _iterator.each)(fields, ((_, field) => { result.push(setFieldProperties({ dataField: field.dataField, name: field.name }, field, true, properties)) })); return result } function getFieldStateId(field) { if (field.name) { return field.name } return `${field.dataField}` } function getFieldsById(fields, id) { const result = []; (0, _iterator.each)(fields || [], ((_, field) => { if (getFieldStateId(field) === id) { result.push(field) } })); return result } function setFieldsState(stateFields, fields) { stateFields = stateFields || []; const fieldsById = {}; let id; (0, _iterator.each)(fields, ((_, field) => { id = getFieldStateId(field); if (!fieldsById[id]) { fieldsById[id] = getFieldsById(fields, getFieldStateId(field)) } })); (0, _iterator.each)(fieldsById, ((id, fields) => { ! function(stateFields, fields) { stateFields = stateFields || []; (0, _iterator.each)(fields, ((index, field) => { setFieldProperties(field, stateFields[index], false, STATE_PROPERTIES); updateCalculatedFieldProperties(field, CALCULATED_PROPERTIES) })); return fields }(getFieldsById(stateFields, id), fields) })); return fields } function sortFieldsByAreaIndex(fields) { fields.sort(((field1, field2) => field1.areaIndex - field2.areaIndex || field1.groupIndex - field2.groupIndex)) } function getFieldId(field, retrieveFieldsOptionValue) { const groupName = field.groupName || ""; return (field.dataField || groupName) + (field.groupInterval ? groupName + field.groupInterval : "NOGROUP") + (retrieveFieldsOptionValue ? "" : groupName) } function mergeFields(fields, storeFields, retrieveFieldsOptionValue) { let result = []; const fieldsDictionary = {}; const removedFields = {}; const dataTypes = (0, _m_widget_utils.getFieldsDataType)(fields); if (storeFields) { (0, _iterator.each)(storeFields, ((_, field) => { fieldsDictionary[getFieldId(field, retrieveFieldsOptionValue)] = field })); (0, _iterator.each)(fields, ((_, field) => { const fieldKey = getFieldId(field, retrieveFieldsOptionValue); const storeField = fieldsDictionary[fieldKey] || removedFields[fieldKey]; let mergedField; if (storeField) { if (storeField._initProperties) { resetFieldState(storeField, ALL_CALCULATED_PROPERTIES) } mergedField = (0, _extend.extend)({}, storeField, field, { _initProperties: null }) } else { fieldsDictionary[fieldKey] = mergedField = field } if (!mergedField.dataType && dataTypes[field.dataField]) { mergedField.dataType = dataTypes[field.dataField] } delete fieldsDictionary[fieldKey]; removedFields[fieldKey] = storeField; result.push(mergedField) })); if (retrieveFieldsOptionValue) { (0, _iterator.each)(fieldsDictionary, ((_, field) => { result.push(field) })) } } else { result = fields } result.push.apply(result, []); ! function(fields) { fields.forEach((field => { if (field.groupName && field.groupInterval && void 0 === field.groupIndex) { const maxGroupIndex = fields.filter((f => f.groupName === field.groupName && (0, _type.isNumeric)(f.groupIndex))).map((f => f.groupIndex)).reduce(((prev, current) => Math.max(prev, current)), -1); field.groupIndex = maxGroupIndex + 1 } })) }(result); return result } function getFields(that) { const result = new _deferred.Deferred; const store = that._store; const storeFields = store && store.getFields(that._fields); let mergedFields; (0, _deferred.when)(storeFields).done((storeFields => { that._storeFields = storeFields; mergedFields = mergeFields(that._fields, storeFields, that._retrieveFields); result.resolve(mergedFields) })).fail(result.reject); return result } function formatHeaderItems(data, loadOptions, headerName) { return (0, _m_widget_utils.foreachTreeAsync)(data[headerName], (items => { const item = items[0]; item.text = item.text || (0, _m_widget_utils.formatValue)(item.value, loadOptions[headerName][(0, _m_widget_utils.createPath)(items).length - 1]) })) } function formatHeaders(loadOptions, data) { return (0, _deferred.when)(formatHeaderItems(data, loadOptions, "columns"), formatHeaderItems(data, loadOptions, "rows")) } function updateCache(headerItems) { const d = new _deferred.Deferred; const cacheByPath = {}; (0, _deferred.when)((0, _m_widget_utils.foreachTreeAsync)(headerItems, (items => { const path = (0, _m_widget_utils.createPath)(items).join("."); cacheByPath[path] = items[0] }))).done(d.resolve); headerItems._cacheByPath = cacheByPath; return d } function getAreaFields(fields, area) { const areaFields = []; (0, _iterator.each)(fields, (function() { if (function(field, area) { const canAddFieldInArea = "data" === area || false !== field.visible; return field.area === area && !(0, _type.isDefined)(field.groupIndex) && canAddFieldInArea }(this, area)) { areaFields.push(this) } })); return areaFields } return { ctor(options) { options = options || {}; this._eventsStrategy = new _events_strategy.EventsStrategy(this); const that = this; const store = function(dataSourceOptions, notifyProgress) { let store; let storeOptions; if ((0, _type.isPlainObject)(dataSourceOptions) && dataSourceOptions.load) { store = createLocalOrRemoteStore(dataSourceOptions, notifyProgress) } else { if (dataSourceOptions && !dataSourceOptions.store) { dataSourceOptions = { store: dataSourceOptions } } storeOptions = dataSourceOptions.store; if ("xmla" === storeOptions.type) { store = new _m_xmla_store.default.XmlaStore(storeOptions) } else if ((0, _type.isPlainObject)(storeOptions) && storeOptions.type || storeOptions instanceof _abstract_store.default || Array.isArray(storeOptions)) { store = createLocalOrRemoteStore(dataSourceOptions, notifyProgress) } else if (storeOptions instanceof _class.default) { store = storeOptions } } return store }(options, (progress => { that._eventsStrategy.fireEvent("progressChanged", [progress]) })); that._store = store; that._paginate = !!options.paginate; that._pageSize = options.pageSize || 40; that._data = { rows: [], columns: [], values: [] }; that._loadingCount = 0; that._isFieldsModified = false; (0, _iterator.each)(["changed", "loadError", "loadingChanged", "progressChanged", "fieldsPrepared", "expandValueChanging"], ((_, eventName) => { const optionName = `on${eventName[0].toUpperCase()}${eventName.slice(1)}`; if (Object.prototype.hasOwnProperty.call(options, optionName)) { this.on(eventName, options[optionName]) } })); that._retrieveFields = (0, _type.isDefined)(options.retrieveFields) ? options.retrieveFields : true; that._fields = options.fields || []; that._descriptions = options.descriptions ? (0, _extend.extend)(that._createDescriptions(), options.descriptions) : void 0; if (!store) { (0, _extend.extend)(true, that._data, options.store || options) } }, getData() { return this._data }, getAreaFields(area, collectGroups) { let areaFields = []; let descriptions; if (collectGroups || "data" === area) { areaFields = getAreaFields(this._fields, area); sortFieldsByAreaIndex(areaFields) } else { descriptions = this._descriptions || {}; areaFields = descriptions[DESCRIPTION_NAME_BY_AREA[area]] || [] } return areaFields }, getSummaryFields() { return this.getAreaFields("data").filter((field => (0, _type.isDefined)(field.summaryType))) }, fields(fields) { const that = this; if (fields) { that._fields = mergeFields(fields, that._storeFields, that._retrieveFields); that._fieldsPrepared(that._fields) } return that._fields }, field(id, options) { const that = this; const fields = that._fields; const field = fields && fields[(0, _type.isNumeric)(id) ? id : (0, _m_widget_utils.findField)(fields, id)]; let levels; if (field && options) { (0, _iterator.each)(options, ((optionName, optionValue) => { const isInitialization = !STATE_PROPERTIES.includes(optionName); (0, _m_widget_utils.setFieldProperty)(field, optionName, optionValue, isInitialization); if ("sortOrder" === optionName) { levels = field.levels || []; for (let i = 0; i < levels.length; i += 1) { levels[i][optionName] = optionValue } } })); updateCalculatedFieldProperties(field, CALCULATED_PROPERTIES); that._descriptions = that._createDescriptions(field); that._isFieldsModified = true; that._eventsStrategy.fireEvent("fieldChanged", [field]) } return field }, getFieldValues(index, applyFilters, options) { const that = this; const field = this._fields && this._fields[index]; const store = this.store(); const loadFields = []; const loadOptions = { columns: loadFields, rows: [], values: this.getAreaFields("data"), filters: applyFilters ? this._fields.filter((f => f !== field && f.area && f.filterValues && f.filterValues.length)) : [], skipValues: true }; let searchValue; const d = new _deferred.Deferred; if (options) { searchValue = options.searchValue; loadOptions.columnSkip = options.skip; loadOptions.columnTake = options.take } if (field && store) { (0, _iterator.each)(field.levels || [field], (function() { loadFields.push((0, _extend.extend)({}, this, { expanded: true, filterValues: null, sortOrder: "asc", sortBySummaryField: null, searchValue: searchValue })) })); store.load(loadOptions).done((data => { if (loadOptions.columnSkip) { data.columns = data.columns.slice(loadOptions.columnSkip) } if (loadOptions.columnTake) { data.columns = data.columns.slice(0, loadOptions.columnTake) } formatHeaders(loadOptions, data); if (!loadOptions.columnTake) { that._sort(loadOptions, data) } d.resolve(data.columns) })).fail(d) } else { d.reject() } return d }, reload() { return this.load({ reload: true }) }, filter() { const store = this._store; return store.filter.apply(store, arguments) }, load: function(options) { const that = this; const d = new _deferred.Deferred; options = options || {}; that.beginLoading(); d.fail((e => { that._eventsStrategy.fireEvent("loadError", [e]) })).always((() => { that.endLoading() })); function loadTask() { that._delayedLoadTask = void 0; if (!that._descriptions) { (0, _deferred.when)(getFields(that)).done((fields => { that._fieldsPrepared(fields); that._loadCore(options, d) })).fail(d.reject).fail(that._loadErrorHandler) } else { that._loadCore(options, d) } } if (that.store()) { that._delayedLoadTask = _m_common.default.executeAsync(loadTask) } else { loadTask() } return d }, createDrillDownDataSource(params) { return this._store.createDrillDownDataSource(this._descriptions, params) }, _createDescriptions(currentField) { const fields = this.fields(); const descriptions = { rows: [], columns: [], values: [], filters: [] }; (0, _iterator.each)(["row", "column", "data", "filter"], ((_, areaName) => { (0, _array.normalizeIndexes)(getAreaFields(fields, areaName), "areaIndex", currentField) })); (0, _iterator.each)(fields || [], ((_, field) => { const descriptionName = DESCRIPTION_NAME_BY_AREA[field.area]; const dimension = descriptions[descriptionName]; const { groupName: groupName } = field; if (groupName && !(0, _type.isNumeric)(field.groupIndex)) { field.levels = function(fields, groupingField) { return fields.filter((field => field.groupName === groupingField.groupName && (0, _type.isNumeric)(field.groupIndex) && false !== field.visible)).map((field => (0, _extend.extend)(field, { areaIndex: groupingField.areaIndex, area: groupingField.area, expanded: (0, _type.isDefined)(field.expanded) ? field.expanded : groupingField.expanded, dataField: field.dataField || groupingField.dataField, dataType: field.dataType || groupingField.dataType, sortBy: field.sortBy || groupingField.sortBy, sortOrder: field.sortOrder || groupingField.sortOrder, sortBySummaryField: field.sortBySummaryField || groupingField.sortBySummaryField, sortBySummaryPath: field.sortBySummaryPath || groupingField.sortBySummaryPath, visible: field.visible || groupingField.visible, showTotals: (0, _type.isDefined)(field.showTotals) ? field.showTotals : groupingField.showTotals, showGrandTotals: (0, _type.isDefined)(field.showGrandTotals) ? field.showGrandTotals : groupingField.showGrandTotals }))).sort(((a, b) => a.groupIndex - b.groupIndex)) }(fields, field) } if (!dimension || groupName && (0, _type.isNumeric)(field.groupIndex) || false === field.visible && "data" !== field.area && "filter" !== field.area) { return } if (field.levels && dimension !== descriptions.filters && dimension !== descriptions.values) { dimension.push.apply(dimension, field.levels); if (field.filterValues && field.filterValues.length) { descriptions.filters.push(field) } } else { dimension.push(field) } })); (0, _iterator.each)(descriptions, ((_, fields) => { sortFieldsByAreaIndex(fields) })); const indices = {}; (0, _iterator.each)(descriptions.values, ((_, field) => { const expression = field.calculateSummaryValue; if ((0, _type.isFunction)(expression)) { const summaryCell = _m_summary_display_modes.default.createMockSummaryCell(descriptions, fields, indices); expression(summaryCell) } })); return descriptions }, _fieldsPrepared(fields) { this._fields = fields; (0, _iterator.each)(fields, ((index, field) => { field.index = index; updateCalculatedFieldProperties(field, ALL_CALCULATED_PROPERTIES) })); const currentFieldState = getFieldsState(fields, ["caption"]); this._eventsStrategy.fireEvent("fieldsPrepared", [fields]); for (let i = 0; i < fields.length; i += 1) { if (fields[i].caption !== currentFieldState[i].caption) { (0, _m_widget_utils.setFieldProperty)(fields[i], "caption", fields[i].caption, true) } } this._descriptions = this._createDescriptions() }, isLoading() { return this._loadingCount > 0 }, state(state, skipLoading) { const that = this; if (arguments.length) { state = (0, _extend.extend)({ rowExpandedPaths: [], columnExpandedPaths: [] }, state); if (!that._descriptions) { that.beginLoading(); (0, _deferred.when)(getFields(that)).done((fields => { that._fields = setFieldsState(state.fields, fields); that._fieldsPrepared(fields); !skipLoading && that.load(state) })).always((() => { that.endLoading() })) } else { that._fields = setFieldsState(state.fields, that._fields); that._descriptions = that._createDescriptions(); !skipLoading && that.load(state) } return } return { fields: getFieldsState(that._fields, STATE_PROPERTIES), columnExpandedPaths: getExpandedPaths(that._data, that._descriptions, "columns", that._lastLoadOptions), rowExpandedPaths: getExpandedPaths(that._data, that._descriptions, "rows", that._lastLoadOptions) } }, beginLoading() { this._changeLoadingCount(1) }, endLoading() { this._changeLoadingCount(-1) }, _changeLoadingCount(increment) { const oldLoading = this.isLoading(); this._loadingCount += increment; const newLoading = this.isLoading(); if (oldLoading ^ newLoading) { this._eventsStrategy.fireEvent("loadingChanged", [newLoading]) } }, _hasPagingValues(options, area, oppositeIndex) { const takeField = `${area}Take`; const skipField = `${area}Skip`; const { values: values } = this._data; let items = this._data[`${area}s`]; const oppositeArea = "row" === area ? "column" : "row"; const indices = []; if (options.path && options.area === area) { const headerItem = findHeaderItem(items, options.path); items = headerItem && headerItem.children; if (!items) { return false } } if (options.oppositePath && options.area === oppositeArea) { const headerItem = findHeaderItem(items, options.oppositePath); items = headerItem && headerItem.children; if (!items) { return false } } for (let i = options[skipField]; i < options[skipField] + options[takeField]; i += 1) { if (items[i]) { indices.push(items[i].index) } } return indices.every((index => { if (void 0 !== index) { if ("row" === area) { return (values[index] || [])[oppositeIndex] } return (values[oppositeIndex] || [])[index] } return })) }, _processPagingCacheByArea(options, pageSize, area) { const takeField = `${area}Take`; const skipField = `${area}Skip`; let items = this._data[`${area}s`]; const oppositeArea = "row" === area ? "column" : "row"; let item; if (options[takeField]) { if (options.path && options.area === area) { const headerItem = findHeaderItem(items, options.path); items = headerItem && headerItem.children || [] } if (options.oppositePath && options.area === oppositeArea) { const headerItem = findHeaderItem(items, options.oppositePath); items = headerItem && headerItem.children || [] } do { item = items[options[skipField]]; if (item && void 0 !== item.index) { if (this._hasPagingValues(options, oppositeArea, item.index)) { options[skipField]++; options[takeField]-- } else { break } } } while (item && void 0 !== item.index && options[takeField]); if (options[takeField]) { const start = Math.floor(options[skipField] / pageSize) * pageSize; const end = Math.ceil((options[skipField] + options[takeField]) / pageSize) * pageSize; options[skipField] = start; options[takeField] = end - start } } }, _processPagingCache(storeLoadOptions) { const pageSize = this._pageSize; if (pageSize < 0) { return } for (let i = 0; i < storeLoadOptions.length; i += 1) { this._processPagingCacheByArea(storeLoadOptions[i], pageSize, "row"); this._processPagingCacheByArea(storeLoadOptions[i], pageSize, "column") } }, _loadCore(options, deferred) { const that = this; const store = this._store; const descriptions = this._descriptions; const reload = options.reload || this.paginate() && that._isFieldsModified; const paginate = this.paginate(); const headerName = DESCRIPTION_NAME_BY_AREA[options.area]; options = options || {}; if (store) { (0, _extend.extend)(options, descriptions); options.columnExpandedPaths = options.columnExpandedPaths || getExpandedPaths(this._data, options, "columns", that._lastLoadOptions); options.rowExpandedPaths = options.rowExpandedPaths || getExpandedPaths(this._data, options, "rows", that._lastLoadOptions); if (paginate) { options.pageSize = this._pageSize } if (headerName) { options.headerName = headerName } that.beginLoading(); deferred.always((() => { that.endLoading() })); let storeLoadOptions = [options]; that._eventsStrategy.fireEvent("customizeStoreLoadOptions", [storeLoadOptions, reload]); if (!reload) { that._processPagingCache(storeLoadOptions) } storeLoadOptions = storeLoadOptions.filter((options => !(options.rows.length && 0 === options.rowTake) && !(options.columns.length && 0 === options.columnTake))); if (!storeLoadOptions.length) { that._update(deferred); return } const results = storeLoadOptions.map((options => store.load(options))); _deferred.when.apply(null, results).done((function() { const results = arguments; for (let i = 0; i < results.length; i += 1) { const options = storeLoadOptions[i]; const data = results[i]; const isLast = i === results.length - 1; if (options.path) { that.applyPartialDataSource(options.area, options.path, data, isLast ? deferred : false, options.oppositePath) } else if (paginate && !reload && isDataExists(that._data)) { that.mergePartialDataSource(data, isLast ? deferred : false) } else { (0, _extend.extend)(that._data, data); that._lastLoadOptions = options; that._update(isLast ? deferred : false) } } })).fail(deferred.reject) } else { that._update(deferred) } }, _sort(descriptions, data, getAscOrder) { const store = this._store; if (store && !this._paginate) { (0, _m_data_source_utils.sort)(descriptions, data, getAscOrder) } }, sortLocal() { this._sort(this._descriptions, this._data); this._eventsStrategy.fireEvent("changed") }, paginate() { return this._paginate && this._store && this._store.supportPaging() }, isEmpty() { const dataFields = this.getAreaFields("data").filter((f => false !== f.visible)); const data = this.getData(); return !dataFields.length || !data.values.length }, _update(deferred) { const that = this; const descriptions = that._descriptions; const loadedData = that._data; const dataFields = descriptions.values; const expressionsUsed = function(dataFields) { return dataFields.some((field => field.summaryDisplayMode || field.calculateSummaryValue)) }(dataFields); (0, _deferred.when)(formatHeaders(descriptions, loadedData), updateCache(loadedData.rows), updateCache(loadedData.columns)).done((() => { if (expressionsUsed) { that._sort(descriptions, loadedData, expressionsUsed); !that.isEmpty() && _m_summary_display_modes.default.applyDisplaySummaryMode(descriptions, loadedData) } that._sort(descriptions, loadedData); !that.isEmpty() && function(dataFields) { return dataFields.some((field => !!field.runningTotal)) }(dataFields) && _m_summary_display_modes.default.applyRunningTotal(descriptions, loadedData); that._data = loadedData; false !== deferred && (0, _deferred.when)(deferred).done((() => { that._isFieldsModified = false; that._eventsStrategy.fireEvent("changed"); if ((0, _type.isDefined)(that._data.grandTotalRowIndex)) { loadedData.grandTotalRowIndex = that._data.grandTotalRowIndex } if ((0, _type.isDefined)(that._data.grandTotalColumnIndex)) { loadedData.grandTotalColumnIndex = that._data.grandTotalColumnIndex } })); deferred && deferred.resolve(that._data) })); return deferred }, store() { return this._store }, collapseHeaderItem(area, path) { const that = this; const headerItems = "column" === area ? that._data.columns : that._data.rows; const headerItem = findHeaderItem(headerItems, path); const field = that.getAreaFields(area)[path.length - 1]; if (headerItem && headerItem.children) { that._eventsStrategy.fireEvent("expandValueChanging", [{ area: area, path: path, expanded: false }]); if (field) { field.expanded = false } headerItem.collapsedChildren = headerItem.children; delete headerItem.children; that._update(); if (that.paginate()) { that.load() } return true } return false }, collapseAll(id) { let dataChanged = false; const field = this.field(id) || {}; let areaOffsets = [this.getAreaFields(field.area).indexOf(field)]; field.expanded = false; if (field && field.levels) { areaOffsets = []; field.levels.forEach((f => { areaOffsets.push(this.getAreaFields(field.area).indexOf(f)); f.expanded = false })) }(0, _m_widget_utils.foreachTree)(this._data[`${field.area}s`], (items => { const item = items[0]; const path = (0, _m_widget_utils.createPath)(items); if (item && item.children && areaOffsets.includes(path.length - 1)) { item.collapsedChildren = item.children; delete item.children; dataChanged = true } }), true); dataChanged && this._update() }, expandAll(id) { const field = this.field(id); if (field && field.area) { field.expanded = true; if (field && field.levels) { field.levels.forEach((f => { f.expanded = true })) } this.load() } }, expandHeaderItem(area, path) { const that = this; const headerItems = "column" === area ? that._data.columns : that._data.rows; const headerItem = findHeaderItem(headerItems, path); if (headerItem && !headerItem.children) { const hasCache = !!headerItem.collapsedChildren; const options = { area: area, path: path, expanded: true, needExpandData: !hasCache }; that._eventsStrategy.fireEvent("expandValueChanging", [options]); if (hasCache) { headerItem.children = headerItem.collapsedChildren; delete headerItem.collapsedChildren; that._update() } else if (this.store()) { that.load(options) } return hasCache } return false }, mergePartialDataSource(dataSource, deferred) { const that = this; const loadedData = that._data; let newRowItemIndexesToCurrent; let newColumnItemIndexesToCurrent; if (dataSource && dataSource.values) { dataSource.rows = dataSource.rows || []; dataSource.columns = dataSource.columns || []; newRowItemIndexesToCurrent = updateHeaderItems(loadedData.rows, dataSource.rows, loadedData.grandTotalColumnIndex); newColumnItemIndexesToCurrent = updateHeaderItems(loadedData.columns, dataSource.columns, loadedData.grandTotalColumnIndex); (0, _deferred.when)(newRowItemIndexesToCurrent, newColumnItemIndexesToCurrent).done(((newRowItemIndexesToCurrent, newColumnItemIndexesToCurrent) => { if (newRowItemIndexesToCurrent.length || newColumnItemIndexesToCurrent.length) { updateDataSourceCells(loadedData, dataSource.values, newRowItemIndexesToCurrent, newColumnItemIndexesToCurrent) } that._update(deferred) })) } }, applyPartialDataSource(area, path, dataSource, deferred, oppositePath) { const that = this; const loadedData = that._data; const headerItems = "column" === area ? loadedData.columns : loadedData.rows; let headerItem; const oppositeHeaderItems = "column" === area ? loadedData.rows : loadedData.columns; let oppositeHeaderItem; let newRowItemIndexesToCurrent; let newColumnItemIndexesToCurrent; if (dataSource && dataSource.values) { dataSource.rows = dataSource.rows || []; dataSource.columns = dataSource.columns || []; headerItem = findHeaderItem(headerItems, path); oppositeHeaderItem = oppositePath && findHeaderItem(oppositeHeaderItems, oppositePath); if (headerItem) { if ("column" === area) { newColumnItemIndexesToCurrent = updateHeaderItemChildren(headerItems, headerItem, dataSource.columns, loadedData.grandTotalColumnIndex); if (oppositeHeaderItem) { newRowItemIndexesToCurrent = updateHeaderItemChildren(oppositeHeaderItems, oppositeHeaderItem, dataSource.rows, loadedData.grandTotalRowIndex) } else { newRowItemIndexesToCurrent = updateHeaderItems(loadedData.rows, dataSource.rows, loadedData.grandTotalRowIndex) } } else { newRowItemIndexesToCurrent = updateHeaderItemChildren(headerItems, headerItem, dataSource.rows, loadedData.grandTotalRowIndex); if (oppositeHeaderItem) { newColumnItemIndexesToCurrent = updateHeaderItemChildren(oppositeHeaderItems, oppositeHeaderItem, dataSource.columns, loadedData.grandTotalColumnIndex) } else { newColumnItemIndexesToCurrent = updateHeaderItems(loadedData.columns, dataSource.columns, loadedData.grandTotalColumnIndex) } }(0, _deferred.when)(newRowItemIndexesToCurrent, newColumnItemIndexesToCurrent).done(((newRowItemIndexesToCurrent, newColumnItemIndexesToCurrent) => { if ("row" === area && newRowItemIndexesToCurrent.length || "column" === area && newColumnItemIndexesToCurrent.length) { updateDataSourceCells(loadedData, dataSource.values, newRowItemIndexesToCurrent, newColumnItemIndexesToCurrent) } that._update(deferred) })) } } }, on(eventName, eventHandler) { this._eventsStrategy.on(eventName, eventHandler); return this }, off(eventName, eventHandler) { this._eventsStrategy.off(eventName, eventHandler); return this }, dispose() { const delayedLoadTask = this._delayedLoadTask; this._eventsStrategy.dispose(); if (delayedLoadTask) { delayedLoadTask.abort() } this._isDisposed = true }, isDisposed() { return !!this._isDisposed } } }()); exports.default = { PivotGridDataSource: PivotGridDataSource } }, 11075: /*!************************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/pivot_grid/data_source/m_data_source_utils.js ***! \************************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; exports.sort = sort; var _iterator = __webpack_require__( /*! ../../../../core/utils/iterator */ 21274); var _type = __webpack_require__( /*! ../../../../core/utils/type */ 11528); var _m_widget_utils = __webpack_require__( /*! ../m_widget_utils */ 12062); function sort(loadOptions, dataSource, getAscOrder) { sortDimension(dataSource, loadOptions, "rows", getAscOrder); sortDimension(dataSource, loadOptions, "columns", getAscOrder) } function sortDimension(dataSource, loadOptions, dimensionName, getAscOrder) { const fields = loadOptions[dimensionName] || []; const baseIndex = loadOptions.headerName === dimensionName ? loadOptions.path.length : 0; const sortingMethodByLevel = []; (0, _m_widget_utils.foreachDataLevel)(dataSource[dimensionName], ((item, index) => { const field = fields[index] || {}; const sortingMethod = sortingMethodByLevel[index] = sortingMethodByLevel[index] || function(field, dataSource, loadOptions, dimensionName, getAscOrder) { const sortOrder = getAscOrder ? "asc" : field.sortOrder; const sortBy = function(sortBy, getAscOrder) { let member = "text"; if ("none" === sortBy) { member = "index" } else if (getAscOrder || "displayText" !== sortBy) { member = "value" } return member }(field.sortBy, getAscOrder); const defaultCompare = field.sortingMethod ? function(a, b) { return field.sortingMethod(a, b) } : (0, _m_widget_utils.getCompareFunction)((item => item[sortBy])); const summaryValueSelector = !getAscOrder && function(field, dataSource, loadOptions, dimensionName) { const { values: values } = dataSource; const sortBySummaryFieldIndex = (0, _m_widget_utils.findField)(loadOptions.values, field.sortBySummaryField); const areRows = "rows" === dimensionName; const sortByDimension = areRows ? dataSource.columns : dataSource.rows; const grandTotalIndex = areRows ? dataSource.grandTotalRowIndex : dataSource.grandTotalColumnIndex; const sortBySummaryPath = field.sortBySummaryPath || []; const sliceIndex = sortBySummaryPath.length ? function(items, path) { let index = null; const pathValue = (path || []).join("."); if (pathValue.length) { (0, _m_widget_utils.foreachTree)(items, (items => { const item = items[0]; const itemPath = (0, _m_widget_utils.createPath)(items).join("."); const textPath = (0, _iterator.map)(items, (item => item.text)).reverse().join("."); if (pathValue === itemPath || item.key && textPath === pathValue) { index = items[0].index; return false } return })) } return index }(sortByDimension, sortBySummaryPath) : grandTotalIndex; if (null !== values && void 0 !== values && values.length && sortBySummaryFieldIndex >= 0 && (0, _type.isDefined)(sliceIndex)) { return function(field) { const rowIndex = areRows ? field.index : sliceIndex; const columnIndex = areRows ? sliceIndex : field.index; const value = ((values[rowIndex] || [ [] ])[columnIndex] || [])[sortBySummaryFieldIndex]; return (0, _type.isDefined)(value) ? value : null } } return }(field, dataSource, loadOptions, dimensionName); const summaryCompare = summaryValueSelector && (0, _m_widget_utils.getCompareFunction)(summaryValueSelector); const sortingMethod = function(a, b) { const result = summaryCompare && summaryCompare(a, b) || defaultCompare(a, b); return "desc" === sortOrder ? -result : result }; return sortingMethod }(field, dataSource, loadOptions, dimensionName, getAscOrder); item.sort(sortingMethod) }), baseIndex) } exports.default = { sort: sort } }, 12867: /*!********************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/pivot_grid/export/m_export.js ***! \********************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = exports.PivotGridExport = exports.ExportController = exports.DataProvider = void 0; var _number = _interopRequireDefault(__webpack_require__( /*! ../../../../common/core/localization/number */ 52771)); var _class = _interopRequireDefault(__webpack_require__( /*! ../../../../core/class */ 55620)); var _deferred = __webpack_require__( /*! ../../../../core/utils/deferred */ 87739); var _extend = __webpack_require__( /*! ../../../../core/utils/extend */ 52576); var _iterator = __webpack_require__( /*! ../../../../core/utils/iterator */ 21274); var _position = __webpack_require__( /*! ../../../../core/utils/position */ 41639); var _type = __webpack_require__( /*! ../../../../core/utils/type */ 11528); var _window = __webpack_require__( /*! ../../../../core/utils/window */ 3104); var _format_helper = _interopRequireDefault(__webpack_require__( /*! ../../../../format_helper */ 2082)); var _m_export = __webpack_require__( /*! ../../../grids/grid_core/m_export */ 47197); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } function _extends() { return _extends = Object.assign ? Object.assign.bind() : function(n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) { ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]) } } return n }, _extends.apply(null, arguments) } const ExportController = exports.ExportController = { exportTo() { const onExporting = this._createActionByOption("onExporting"); const eventArgs = { rtlEnabled: this.option("rtlEnabled"), fileName: "PivotGrid", cancel: false }; (0, _type.isFunction)(onExporting) && onExporting(eventArgs) }, _getLength(items) { let i; const itemCount = items[0].length; let cellCount = 0; for (i = 0; i < itemCount; i += 1) { cellCount += items[0][i].colspan || 1 } return cellCount }, _correctCellsInfoItemLengths(cellsInfo, expectedLength) { for (let i = 0; i < cellsInfo.length; i += 1) { while (cellsInfo[i].length < expectedLength) { cellsInfo[i].push({}) } } return cellsInfo }, _calculateCellInfoItemLength(columnsRow) { let result = 0; for (let columnIndex = 0; columnIndex < columnsRow.length; columnIndex += 1) { result += (0, _type.isDefined)(columnsRow[columnIndex].colspan) ? columnsRow[columnIndex].colspan : 1 } return result }, _getEmptyCell: () => ({ text: "", value: void 0, colspan: 1, rowspan: 1 }), _getAllItems(columnsInfo, rowsInfoItems, cellsInfo) { let cellIndex; let rowIndex; let correctedCellsInfo = cellsInfo; const rowsLength = this._getLength(rowsInfoItems); const headerRowsCount = columnsInfo.length; if (columnsInfo.length > 0 && columnsInfo[0].length > 0 && cellsInfo.length > 0 && 0 === cellsInfo[0].length) { const cellInfoItemLength = this._calculateCellInfoItemLength(columnsInfo[0]); if (cellInfoItemLength > 0) { correctedCellsInfo = this._correctCellsInfoItemLengths(cellsInfo, cellInfoItemLength) } } if (0 === correctedCellsInfo.length) { const rowsCount = rowsInfoItems.length; const collapsedColumnCount = columnsInfo.map((headerRowWithColumns => headerRowWithColumns.filter((row => !row.expanded)).length)).reduce(((result, collapsedCount) => result + collapsedCount), 0); for (let rowIdx = 0; rowIdx < rowsCount; rowIdx += 1) { correctedCellsInfo[rowIdx] = []; for (let colIdx = 0; colIdx < collapsedColumnCount; colIdx += 1) { correctedCellsInfo[rowIdx][colIdx] = this._getEmptyCell() } } } const sourceItems = columnsInfo.concat(correctedCellsInfo); for (rowIndex = 0; rowIndex < rowsInfoItems.length; rowIndex += 1) { for (cellIndex = rowsInfoItems[rowIndex].length - 1; cellIndex >= 0; cellIndex -= 1) { if (!(0, _type.isDefined)(sourceItems[rowIndex + headerRowsCount])) { sourceItems[rowIndex + headerRowsCount] = [] } sourceItems[rowIndex + headerRowsCount].splice(0, 0, (0, _extend.extend)({}, rowsInfoItems[rowIndex][cellIndex])) } } sourceItems[0].splice(0, 0, (0, _extend.extend)({}, this._getEmptyCell(), { alignment: (0, _position.getDefaultAlignment)(this._options.rtlEnabled), colspan: rowsLength, rowspan: headerRowsCount })); return (0, _m_export.prepareItems)(sourceItems, this._getEmptyCell()) }, getDataProvider() { return new DataProvider(this) } }; const DataProvider = exports.DataProvider = _class.default.inherit({ ctor(exportController) { this._exportController = exportController }, ready() { this._initOptions(); const options = this._options; return (0, _deferred.when)(options.items).done((items => { const headerSize = items[0][0].rowspan; const columns = items[headerSize - 1]; (0, _iterator.each)(columns, ((_, column) => { column.width = 100 })); options.columns = columns; options.items = items })) }, _initOptions() { const exportController = this._exportController; const dataController = exportController._dataController; const items = new _deferred.Deferred; dataController.beginLoading(); setTimeout((() => { const columnsInfo = (0, _extend.extend)(true, [], dataController.getColumnsInfo(true)); const rowsInfoItems = (0, _extend.extend)(true, [], dataController.getRowsInfo(true)); const cellsInfo = dataController.getCellsInfo(true); items.resolve(exportController._getAllItems(columnsInfo, rowsInfoItems, cellsInfo)); dataController.endLoading() })); this._options = { items: items, rtlEnabled: exportController.option("rtlEnabled"), dataFields: exportController.getDataSource().getAreaFields("data"), rowsArea: exportController._rowsArea, columnsArea: exportController._columnsArea } }, getColumns() { return this._options.columns }, getColumnsWidths() { const colsArea = this._options.columnsArea; const { rowsArea: rowsArea } = this._options; const { columns: columns } = this._options; const useDefaultWidth = !(0, _window.hasWindow)() || "virtual" === colsArea.option("scrolling.mode") || colsArea.element().is(":hidden"); return useDefaultWidth ? columns.map((() => 100)) : rowsArea.getColumnsWidth().concat(colsArea.getColumnsWidth()) }, getRowsCount() { return this._options.items.length }, getGroupLevel: () => 0, getCellMerging(rowIndex, cellIndex) { const { items: items } = this._options; const item = items[rowIndex] && items[rowIndex][cellIndex]; return item ? { colspan: item.colspan - 1, rowspan: item.rowspan - 1 } : { colspan: 0, rowspan: 0 } }, getFrozenArea() { return { x: this.getRowAreaColCount(), y: this.getColumnAreaRowCount() } }, getCellType(rowIndex, cellIndex) { const style = this.getStyles()[this.getStyleId(rowIndex, cellIndex)]; return style && style.dataType || "string" }, getCellData(rowIndex, cellIndex, isExcelJS) { const result = {}; const { items: items } = this._options; const item = items[rowIndex] && items[rowIndex][cellIndex] || {}; if (isExcelJS) { result.cellSourceData = item; const areaName = this._tryGetAreaName(item, rowIndex, cellIndex); if (areaName) { result.cellSourceData.area = areaName } result.cellSourceData.rowIndex = rowIndex; result.cellSourceData.columnIndex = cellIndex } if ("string" === this.getCellType(rowIndex, cellIndex)) { result.value = item.text } else { result.value = item.value } if (result.cellSourceData && result.cellSourceData.isWhiteSpace) { result.value = "" } return result }, _tryGetAreaName(item, rowIndex, cellIndex) { if (this.isColumnAreaCell(rowIndex, cellIndex)) { return "column" } if (this.isRowAreaCell(rowIndex, cellIndex)) { return "row" } if ((0, _type.isDefined)(item.dataIndex)) { return "data" } return }, isRowAreaCell(rowIndex, cellIndex) { return rowIndex >= this.getColumnAreaRowCount() && cellIndex < this.getRowAreaColCount() }, isColumnAreaCell(rowIndex, cellIndex) { return cellIndex >= this.getRowAreaColCount() && rowIndex < this.getColumnAreaRowCount() }, getColumnAreaRowCount() { return this._options.items[0][0].rowspan }, getRowAreaColCount() { return this._options.items[0][0].colspan }, getHeaderStyles() { return [{ alignment: "center", dataType: "string" }, { alignment: (0, _position.getDefaultAlignment)(this._options.rtlEnabled), dataType: "string" }] }, getDataFieldStyles() { const { dataFields: dataFields } = this._options; const dataItemStyle = { alignment: this._options.rtlEnabled ? "left" : "right" }; const dataFieldStyles = []; if (dataFields.length) { dataFields.forEach((dataField => { dataFieldStyles.push(_extends({}, dataItemStyle, { format: dataField.format, dataType: this.getCellDataType(dataField) })) })); return dataFieldStyles } return [dataItemStyle] }, getStyles() { if (this._styles) { return this._styles } this._styles = [...this.getHeaderStyles(), ...this.getDataFieldStyles()]; return this._styles }, getCellDataType(field) { if (field && field.customizeText) { return "string" } if (field.dataType) { return field.dataType } if (field.format) { if (1 === _number.default.parse(_format_helper.default.format(1, field.format))) { return "number" } if (_format_helper.default.format(new Date, field.format)) { return "date" } } return "string" }, getStyleId(rowIndex, cellIndex) { const { items: items } = this._options; const item = items[rowIndex] && items[rowIndex][cellIndex] || {}; if (0 === cellIndex && 0 === rowIndex || this.isColumnAreaCell(rowIndex, cellIndex)) { return 0 } if (this.isRowAreaCell(rowIndex, cellIndex)) { return 1 } return this.getHeaderStyles().length + (item.dataIndex || 0) } }); const PivotGridExport = exports.PivotGridExport = { DEFAUL_COLUMN_WIDTH: 100 }; exports.default = { ExportController: ExportController, PivotGridExport: PivotGridExport, DataProvider: DataProvider } }, 73944: /*!************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/pivot_grid/field_chooser/const.js ***! \************************************************************************************************/ function(__unused_webpack_module, exports) { Object.defineProperty(exports, "__esModule", { value: true }); exports.SORT_ORDER = exports.SORTABLE_CONST = exports.ICONS = exports.CLASSES = exports.ATTRIBUTES = void 0; exports.ATTRIBUTES = { treeViewItem: "tree-view-item", allowScrolling: "allow-scrolling", itemGroup: "item-group" }; exports.CLASSES = { area: { self: "dx-area", box: "dx-area-box", caption: "dx-area-caption", icon: "dx-area-icon", field: "dx-area-field", fieldContainer: "dx-area-field-container", fieldContent: "dx-area-field-content", fieldList: "dx-area-fields", fieldListHeader: "dx-area-fields-header" }, pivotGrid: { dragAction: "dx-pivotgrid-drag-action", fieldsContainer: "dx-pivotgrid-fields-container" }, fieldChooser: { self: "dx-pivotgridfieldchooser", container: "dx-pivotgridfieldchooser-container", contextMenu: "dx-pivotgridfieldchooser-context-menu" }, layout: { zero: "dx-layout-0", second: "dx-layout-2" }, treeView: { self: "dx-treeview", borderVisible: "dx-treeview-border-visible" }, scrollable: { self: "dx-scrollable" }, allFields: "dx-all-fields", col: "dx-col", headerFilter: "dx-header-filter", row: "dx-row", widget: "dx-widget" }; exports.ICONS = { all: "smalliconslayout", column: "columnfield", row: "rowfield", filter: "filter", data: "formula", measure: "formula", hierarchy: "hierarchy", dimension: "detailslayout" }; exports.SORTABLE_CONST = { targets: { drag: "drag" } }; exports.SORT_ORDER = { descending: "desc", ascending: "asc" } }, 47331: /*!**********************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/pivot_grid/field_chooser/dom.js ***! \**********************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.dragAndDropItemRender = function($sourceItem, target) { const $itemArray = function($sourceItem, target) { const isAreaBox = $sourceItem.hasClass(_const.CLASSES.area.box); const isTreeList = $sourceItem.attr(_const.ATTRIBUTES.treeViewItem); if (isAreaBox) { return function($sourceItem, target) { const $itemArray = $sourceItem.clone(); if (target === _const.SORTABLE_CONST.targets.drag) { $sourceItem.each(((idx, sourceItem) => { const width = parseFloat((0, _size.getOuterWidth)(sourceItem)); $itemArray.eq(idx).css("width", width); return true })) } return $itemArray }($sourceItem, target) } if (isTreeList) { return function($sourceItem) { return $sourceItem.clone().addClass(_const.CLASSES.area.box).css("width", parseFloat((0, _size.getOuterWidth)($sourceItem))) }($sourceItem) } return function($sourceItem) { return (0, _renderer.default)("
").addClass(_const.CLASSES.area.field).addClass(_const.CLASSES.area.box).text($sourceItem.text()) }($sourceItem) }($sourceItem, target); if (target === _const.SORTABLE_CONST.targets.drag) { return function($itemArray) { const $wrappedTmpContainer = (0, _renderer.default)("
"); $itemArray.each(((_, item) => { const $wrappedItem = (0, _renderer.default)("
").addClass(_const.CLASSES.pivotGrid.fieldsContainer).addClass(_const.CLASSES.widget).append((0, _renderer.default)(item)); $wrappedTmpContainer.append($wrappedItem); return true })); return $wrappedTmpContainer.children() }($itemArray) } return $itemArray }; var _renderer = (e = __webpack_require__( /*! ../../../../core/renderer */ 64553), e && e.__esModule ? e : { default: e }); var e; var _size = __webpack_require__( /*! ../../../../core/utils/size */ 57653); var _const = __webpack_require__( /*! ./const */ 73944) }, 62989: /*!**********************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/pivot_grid/field_chooser/m_field_chooser.js ***! \**********************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = exports.FieldChooser = void 0; __webpack_require__( /*! ../data_source/m_data_source */ 87993); var _message = _interopRequireDefault(__webpack_require__( /*! ../../../../common/core/localization/message */ 4671)); var _component_registrator = _interopRequireDefault(__webpack_require__( /*! ../../../../core/component_registrator */ 92848)); var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../../../core/renderer */ 64553)); var _extend = __webpack_require__( /*! ../../../../core/utils/extend */ 52576); var _icon = __webpack_require__( /*! ../../../../core/utils/icon */ 69629); var _iterator = __webpack_require__( /*! ../../../../core/utils/iterator */ 21274); var _type = __webpack_require__( /*! ../../../../core/utils/type */ 11528); var _window = __webpack_require__( /*! ../../../../core/utils/window */ 3104); var _context_menu = _interopRequireDefault(__webpack_require__( /*! ../../../../ui/context_menu */ 34378)); var _tree_view = _interopRequireDefault(__webpack_require__( /*! ../../../../ui/tree_view */ 4313)); var _m_widget_utils = __webpack_require__( /*! ../m_widget_utils */ 12062); var _const = __webpack_require__( /*! ./const */ 73944); var _m_field_chooser_base = __webpack_require__( /*! ./m_field_chooser_base */ 70317); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } function _extends() { return _extends = Object.assign ? Object.assign.bind() : function(n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) { ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]) } } return n }, _extends.apply(null, arguments) } const DIV = "
"; const hasWindow = (0, _window.hasWindow)(); function getDimensionFields(item, fields) { const result = []; if (item.items) { for (let i = 0; i < item.items.length; i += 1) { result.push.apply(result, getDimensionFields(item.items[i], fields)) } } else if ((0, _type.isDefined)(item.index)) { result.push(fields[item.index]) } return result } function getFirstItem(item, condition) { if (item.items) { for (let i = 0; i < item.items.length; i += 1) { const childrenItem = getFirstItem(item.items[i], condition); if (childrenItem) { return childrenItem } } } if (condition(item)) { return item } return } const compareOrder = [function(a, b) { const aValue = -!!a.isMeasure; const bValue = +!!b.isMeasure; return aValue + bValue }, function(a, b) { const aValue = -!!(a.items && a.items.length); const bValue = +!!(b.items && b.items.length); return aValue + bValue }, function(a, b) { const aValue = +!!(false === a.isMeasure && a.field && a.field.levels && a.field.levels.length); const bValue = -!!(false === b.isMeasure && b.field && b.field.levels && b.field.levels.length); return aValue + bValue }, (0, _m_widget_utils.getCompareFunction)((item => item.text))]; function compareItems(a, b) { let result = 0; let i = 0; while (!result && compareOrder[i]) { result = compareOrder[i++](a, b) } return result } function getScrollable(container) { return container.find(`.${_const.CLASSES.scrollable.self}`).dxScrollable("instance") } class FieldChooser extends _m_field_chooser_base.FieldChooserBase { _getDefaultOptions() { return _extends({}, super._getDefaultOptions(), { height: 400, layout: 0, dataSource: null, encodeHtml: true, onContextMenuPreparing: null, allowSearch: false, searchTimeout: 500, texts: { columnFields: _message.default.format("dxPivotGrid-columnFields"), rowFields: _message.default.format("dxPivotGrid-rowFields"), dataFields: _message.default.format("dxPivotGrid-dataFields"), filterFields: _message.default.format("dxPivotGrid-filterFields"), allFields: _message.default.format("dxPivotGrid-allFields") } }) } _refreshDataSource() { const that = this; that._expandedPaths = []; that._changedHandler = that._changedHandler || function() { (0, _iterator.each)(that._dataChangedHandlers, ((_, func) => { func() })); that._fireContentReadyAction(); that._skipStateChange = true; that.option("state", that._dataSource.state()); that._skipStateChange = false }; that._disposeDataSource(); super._refreshDataSource(); that._dataSource && that._dataSource.on("changed", that._changedHandler) } _disposeDataSource() { const that = this; const dataSource = that._dataSource; if (dataSource) { dataSource.off("changed", that._changedHandler); that._dataSource = void 0 } } _dispose() { this._disposeDataSource(); super._dispose.apply(this, arguments) } _init() { super._init(); this._refreshDataSource(); this._dataChangedHandlers = []; this._initActions() } _initActions() { this._actions = { onContextMenuPreparing: this._createActionByOption("onContextMenuPreparing") } } _trigger(eventName, eventArg) { this._actions[eventName](eventArg) } _setOptionsByReference() { super._setOptionsByReference(); (0, _extend.extend)(this._optionsByReference, { dataSource: true }) } _optionChanged(args) { const that = this; switch (args.name) { case "dataSource": that._refreshDataSource(); that._invalidate(); break; case "layout": case "texts": case "allowSearch": case "searchTimeout": case "encodeHtml": that._invalidate(); break; case "onContextMenuPreparing": that._actions[args.name] = that._createActionByOption(args.name); break; default: super._optionChanged(args) } } _clean(skipStateSetting) { !skipStateSetting && this._dataSource && this.option("state", this._dataSource.state()); this.$element().children(`.${_const.CLASSES.fieldChooser.container}`).remove() } _renderLayout0($container) { $container.addClass(_const.CLASSES.layout.zero); const $row1 = (0, _renderer.default)(DIV).addClass(_const.CLASSES.row).appendTo($container); const $row2 = (0, _renderer.default)(DIV).addClass(_const.CLASSES.row).appendTo($container); const $col1 = (0, _renderer.default)(DIV).addClass(_const.CLASSES.col).appendTo($row1); const $col2 = (0, _renderer.default)(DIV).addClass(_const.CLASSES.col).appendTo($row1); const $col3 = (0, _renderer.default)(DIV).addClass(_const.CLASSES.col).appendTo($row2); const $col4 = (0, _renderer.default)(DIV).addClass(_const.CLASSES.col).appendTo($row2); this._renderArea($col1, "all"); this._renderArea($col2, "row"); this._renderArea($col2, "column"); this._renderArea($col3, "filter"); this._renderArea($col4, "data") } _renderLayout1($container) { const $col1 = (0, _renderer.default)(DIV).addClass(_const.CLASSES.col).appendTo($container); const $col2 = (0, _renderer.default)(DIV).addClass(_const.CLASSES.col).appendTo($container); this._renderArea($col1, "all"); this._renderArea($col2, "filter"); this._renderArea($col2, "row"); this._renderArea($col2, "column"); this._renderArea($col2, "data") } _renderLayout2($container) { $container.addClass(_const.CLASSES.layout.second); const $row1 = (0, _renderer.default)(DIV).addClass(_const.CLASSES.row).appendTo($container); this._renderArea($row1, "all"); const $row2 = (0, _renderer.default)(DIV).addClass(_const.CLASSES.row).appendTo($container); const $col1 = (0, _renderer.default)(DIV).addClass(_const.CLASSES.col).appendTo($row2); const $col2 = (0, _renderer.default)(DIV).addClass(_const.CLASSES.col).appendTo($row2); this._renderArea($col1, "filter"); this._renderArea($col1, "row"); this._renderArea($col2, "column"); this._renderArea($col2, "data") } _initMarkup() { const that = this; const $element = this.$element(); const $container = (0, _renderer.default)(DIV).addClass(_const.CLASSES.fieldChooser.container).appendTo($element); const layout = that.option("layout"); super._initMarkup(); $element.addClass(_const.CLASSES.fieldChooser.self).addClass(_const.CLASSES.pivotGrid.fieldsContainer); that._dataChangedHandlers = []; const dataSource = this._dataSource; const currentState = "instantly" !== that.option("applyChangesMode") && dataSource && dataSource.state(); currentState && that.option("state") && dataSource.state(that.option("state"), true); if (0 === layout) { that._renderLayout0($container) } else if (1 === layout) { that._renderLayout1($container) } else { that._renderLayout2($container) } currentState && dataSource.state(currentState, true) } _renderContentImpl() { super._renderContentImpl(); this.renderSortable(); this._renderContextMenu(); this.updateDimensions() } _fireContentReadyAction() { if (!this._dataSource || !this._dataSource.isLoading()) { super._fireContentReadyAction() } } _getContextMenuArgs(dxEvent) { const targetFieldElement = (0, _renderer.default)(dxEvent.target).closest(`.${_const.CLASSES.area.field}`); const targetGroupElement = (0, _renderer.default)(dxEvent.target).closest(`.${_const.CLASSES.area.fieldList}`); let field; let area; if (targetFieldElement.length) { const fieldCopy = targetFieldElement.data("field"); if (fieldCopy) { field = this.getDataSource().field(fieldCopy.index) || fieldCopy } } if (targetGroupElement.length) { area = targetGroupElement.attr("group") } return { event: dxEvent, field: field, area: area, items: [] } } _renderContextMenu() { const that = this; const $container = that.$element(); if (that._contextMenu) { that._contextMenu.$element().remove() } that._contextMenu = that._createComponent((0, _renderer.default)(DIV).appendTo($container), _context_menu.default, { onPositioning(actionArgs) { const { event: event } = actionArgs; if (!event) { return } const args = that._getContextMenuArgs(event); that._trigger("onContextMenuPreparing", args); if (args.items && args.items.length) { actionArgs.component.option("items", args.items) } else { actionArgs.cancel = true } }, target: $container, onItemClick(params) { params.itemData.onItemClick && params.itemData.onItemClick(params) }, cssClass: _const.CLASSES.fieldChooser.contextMenu }) } _createTreeItems(fields, groupFieldNames, path) { const that = this; let isMeasure; let resultItems = []; const groupedItems = []; const groupFieldName = groupFieldNames[0]; const fieldsByGroup = {}; if (!groupFieldName) { (0, _iterator.each)(fields, ((_, field) => { let icon; if (true === field.isMeasure) { icon = _const.ICONS.measure } if (false === field.isMeasure) { icon = field.groupName ? _const.ICONS.hierarchy : _const.ICONS.dimension } resultItems.push({ index: field.index, field: field, key: field.dataField, selected: (0, _type.isDefined)(field.area), text: field.caption || field.dataField, icon: icon, isMeasure: field.isMeasure, isDefault: field.isDefault }) })) } else { (0, _iterator.each)(fields, ((_, field) => { const groupName = field[groupFieldName] || ""; fieldsByGroup[groupName] = fieldsByGroup[groupName] || []; fieldsByGroup[groupName].push(field); if (void 0 === isMeasure) { isMeasure = true } isMeasure = isMeasure && true === field.isMeasure })); (0, _iterator.each)(fieldsByGroup, ((groupName, fields) => { const currentPath = path ? `${path}.${groupName}` : groupName; const items = that._createTreeItems(fields, groupFieldNames.slice(1), currentPath); if (groupName) { groupedItems.push({ key: groupName, text: groupName, path: currentPath, isMeasure: items.isMeasure, expanded: that._expandedPaths.includes(currentPath), items: items }) } else { resultItems = items } })); resultItems = groupedItems.concat(resultItems); resultItems.isMeasure = isMeasure } return resultItems } _createFieldsDataSource(dataSource) { let fields = dataSource && dataSource.fields() || []; fields = fields.filter((field => false !== field.visible && !(0, _type.isDefined)(field.groupIndex))); const treeItems = this._createTreeItems(fields, ["dimension", "displayFolder"]); (0, _m_widget_utils.foreachDataLevel)(treeItems, (items => { items.sort(compareItems) }), 0, "items"); return treeItems } _renderFieldsTreeView(container) { const that = this; const dataSource = that._dataSource; const treeView = that._createComponent(container, _tree_view.default, { dataSource: that._createFieldsDataSource(dataSource), showCheckBoxesMode: "normal", expandNodesRecursive: false, searchEnabled: that.option("allowSearch"), searchTimeout: that.option("searchTimeout"), useNativeScrolling: false, itemTemplate(itemData, itemIndex, itemElement) { const $item = (0, _renderer.default)("
").toggleClass(_const.CLASSES.area.field, !itemData.items).attr(_const.ATTRIBUTES.treeViewItem, true).data("field", itemData.field).appendTo(itemElement); if (itemData.icon) { var _getImageContainer; null === (_getImageContainer = (0, _icon.getImageContainer)(itemData.icon)) || void 0 === _getImageContainer || _getImageContainer.appendTo($item) }(0, _renderer.default)("").text(itemData.text).appendTo($item) }, onItemCollapsed(e) { const index = that._expandedPaths.indexOf(e.itemData.path); if (index >= 0) { that._expandedPaths.splice(index, 1) } }, onItemExpanded(e) { const index = that._expandedPaths.indexOf(e.itemData.path); if (index < 0) { that._expandedPaths.push(e.itemData.path) } }, onItemSelectionChanged(e) { const data = e.itemData; let field; let fields; let needSelectDefaultItem = true; let area; if (data.items) { if (data.selected) { treeView.unselectItem(data); return } that._processDemandState((() => { fields = getDimensionFields(data, dataSource.fields()); for (let i = 0; i < fields.length; i += 1) { if (fields[i].area) { needSelectDefaultItem = false; break } } })); if (needSelectDefaultItem) { const item = getFirstItem(data, (item => item.isDefault)) || getFirstItem(data, (item => (0, _type.isDefined)(item.index))); item && treeView.selectItem(item); return } } else { field = dataSource.fields()[data.index]; if (data.selected) { area = field.isMeasure ? "data" : "column" } if (field) { fields = [field] } } that._applyChanges(fields, { area: area, areaIndex: void 0 }) } }); that._dataChangedHandlers.push((function() { let scrollable = getScrollable(container); const scrollTop = scrollable ? scrollable.scrollTop() : 0; treeView.option({ dataSource: that._createFieldsDataSource(dataSource) }); scrollable = getScrollable(container); if (scrollable) { scrollable.scrollTo({ y: scrollTop }); scrollable.update() } })) } _renderAreaFields($container, area) { const that = this; const dataSource = that._dataSource; const fields = dataSource ? (0, _extend.extend)(true, [], dataSource.getAreaFields(area, true)) : []; $container.empty(); (0, _iterator.each)(fields, ((_, field) => { if (false !== field.visible) { that.renderField(field, true).appendTo($container) } })) } _renderArea(container, area) { const that = this; const $areaContainer = (0, _renderer.default)(DIV).addClass(_const.CLASSES.area.self).appendTo(container); const $fieldsHeaderContainer = (0, _renderer.default)(DIV).addClass(_const.CLASSES.area.fieldListHeader).appendTo($areaContainer); const caption = that.option(`texts.${area}Fields`); let $fieldsContent; let render; (0, _renderer.default)("").addClass(_const.CLASSES.area.icon).addClass(`dx-icon-${_const.ICONS[area]}`).appendTo($fieldsHeaderContainer); (0, _renderer.default)("").html(" ").appendTo($fieldsHeaderContainer); (0, _renderer.default)("").addClass(_const.CLASSES.area.caption).text(caption).appendTo($fieldsHeaderContainer); const $fieldsContainer = (0, _renderer.default)(DIV).addClass(_const.CLASSES.area.fieldList).addClass(_const.CLASSES.pivotGrid.dragAction).appendTo($areaContainer); if ("all" !== area) { $fieldsContainer.attr("group", area).attr(_const.ATTRIBUTES.allowScrolling, true); $fieldsContent = (0, _renderer.default)(DIV).addClass(_const.CLASSES.area.fieldContainer).appendTo($fieldsContainer); render = function() { that._renderAreaFields($fieldsContent, area) }; that._dataChangedHandlers.push(render); render(); $fieldsContainer.dxScrollable({ useNative: false }) } else { $areaContainer.addClass(_const.CLASSES.allFields); $fieldsContainer.addClass(_const.CLASSES.treeView.borderVisible); that._renderFieldsTreeView($fieldsContainer) } } _getSortableOptions() { return { direction: "" } } _adjustSortableOnChangedArgs() {} resetTreeView() { const treeView = this.$element().find(`.${_const.CLASSES.treeView.self}`).dxTreeView("instance"); if (treeView) { treeView.option("searchValue", ""); treeView.collapseAll() } } applyChanges() { const state = this.option("state"); if ((0, _type.isDefined)(state)) { this._dataSource.state(state) } } cancelChanges() { const dataSource = this._dataSource; if (!dataSource.isLoading()) { this.option("state", dataSource.state()); return true } return false } getDataSource() { return this._dataSource } updateDimensions() { const $scrollableElements = this.$element().find(`.${_const.CLASSES.area.self} .${_const.CLASSES.scrollable.self}`); $scrollableElements.dxScrollable("update") } _visibilityChanged(visible) { if (visible && hasWindow) { this.updateDimensions() } } } exports.FieldChooser = FieldChooser; (0, _component_registrator.default)("dxPivotGridFieldChooser", FieldChooser); exports.default = { FieldChooser: FieldChooser } }, 70317: /*!***************************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/pivot_grid/field_chooser/m_field_chooser_base.js ***! \***************************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = exports.FieldChooserBase = void 0; var _click = __webpack_require__( /*! ../../../../common/core/events/click */ 64044); var _events_engine = _interopRequireDefault(__webpack_require__( /*! ../../../../common/core/events/core/events_engine */ 92774)); var _message = _interopRequireDefault(__webpack_require__( /*! ../../../../common/core/localization/message */ 4671)); var _array_store = _interopRequireDefault(__webpack_require__( /*! ../../../../common/data/array_store */ 80556)); var _component_registrator = _interopRequireDefault(__webpack_require__( /*! ../../../../core/component_registrator */ 92848)); var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../../../core/renderer */ 64553)); var _deferred = __webpack_require__( /*! ../../../../core/utils/deferred */ 87739); var _extend = __webpack_require__( /*! ../../../../core/utils/extend */ 52576); var _iterator = __webpack_require__( /*! ../../../../core/utils/iterator */ 21274); var _type = __webpack_require__( /*! ../../../../core/utils/type */ 11528); var _ui = _interopRequireDefault(__webpack_require__( /*! ../../../../ui/widget/ui.widget */ 11118)); var _m_column_state_mixin = _interopRequireDefault(__webpack_require__( /*! ../../../grids/grid_core/column_state_mixin/m_column_state_mixin */ 96790)); var _m_header_filter_core = __webpack_require__( /*! ../../../grids/grid_core/header_filter/m_header_filter_core */ 83040); var _m_utils = _interopRequireDefault(__webpack_require__( /*! ../../../grids/grid_core/m_utils */ 53226)); var _m_sorting_mixin = _interopRequireDefault(__webpack_require__( /*! ../../../grids/grid_core/sorting/m_sorting_mixin */ 2242)); var _m_widget_utils = __webpack_require__( /*! ../m_widget_utils */ 12062); var _m_sortable = _interopRequireDefault(__webpack_require__( /*! ../sortable/m_sortable */ 87691)); var _const = __webpack_require__( /*! ./const */ 73944); var _dom = __webpack_require__( /*! ./dom */ 47331); var _utils = __webpack_require__( /*! ./utils */ 56958); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } function _extends() { return _extends = Object.assign ? Object.assign.bind() : function(n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) { ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]) } } return n }, _extends.apply(null, arguments) } const { Sortable: Sortable } = _m_sortable.default; class HeaderFilterView extends _m_header_filter_core.HeaderFilterView { _getSearchExpr(options, headerFilterOptions) { options.useDefaultSearchExpr = true; return super._getSearchExpr(options, headerFilterOptions) } } function getMainGroupField(dataSource, sourceField) { let field = sourceField; if ((0, _type.isDefined)(sourceField.groupIndex)) { field = dataSource.getAreaFields(sourceField.area, true)[sourceField.areaIndex] } return field } function getStringState(state) { state = state || {}; return JSON.stringify([state.fields, state.columnExpandedPaths, state.rowExpandedPaths]) } const mixinWidget = (0, _m_header_filter_core.headerFilterMixin)((0, _m_sorting_mixin.default)((0, _m_column_state_mixin.default)(_ui.default))); class FieldChooserBase extends mixinWidget { _getDefaultOptions() { return _extends({}, super._getDefaultOptions(), { allowFieldDragging: true, applyChangesMode: "instantly", state: null, headerFilter: { width: 252, height: 325, allowSelectAll: true, showRelevantValues: false, search: { enabled: false, timeout: 500, editorOptions: {}, mode: "contains" }, texts: { emptyValue: _message.default.format("dxDataGrid-headerFilterEmptyValue"), ok: _message.default.format("dxDataGrid-headerFilterOK"), cancel: _message.default.format("dxDataGrid-headerFilterCancel") } }, remoteSort: false }) } _init() { super._init(); this._headerFilterView = new HeaderFilterView(this); this._refreshDataSource(); this.subscribeToEvents(); _m_utils.default.logHeaderFilterDeprecatedWarningIfNeed(this) } _refreshDataSource() { const dataSource = this.option("dataSource"); if (null !== dataSource && void 0 !== dataSource && dataSource.fields && dataSource.load) { this._dataSource = dataSource } } _optionChanged(args) { switch (args.name) { case "dataSource": this._refreshDataSource(); break; case "applyChangesMode": case "remoteSort": break; case "state": if (this._skipStateChange || !this._dataSource) { break } if ("instantly" === this.option("applyChangesMode") && getStringState(this._dataSource.state()) !== getStringState(args.value)) { this._dataSource.state(args.value) } else { this._clean(true); this._renderComponent() } break; case "headerFilter": case "allowFieldDragging": this._invalidate(); break; default: super._optionChanged(args) } } renderField(field, showColumnLines) { const that = this; const $fieldContent = (0, _renderer.default)("
").addClass(_const.CLASSES.area.fieldContent).text(field.caption || field.dataField); const $fieldElement = (0, _renderer.default)("
").addClass(_const.CLASSES.area.field).addClass(_const.CLASSES.area.box).data("field", field).append($fieldContent); const mainGroupField = getMainGroupField(that._dataSource, field); if ("data" !== field.area) { if (field.allowSorting) { that._applyColumnState({ name: "sort", rootElement: $fieldElement, column: { alignment: that.option("rtlEnabled") ? "right" : "left", sortOrder: "desc" === field.sortOrder ? "desc" : "asc", allowSorting: field.allowSorting, caption: field.caption || field.dataField }, showColumnLines: showColumnLines }) } that._applyColumnState({ name: "headerFilter", rootElement: $fieldElement, column: { alignment: that.option("rtlEnabled") ? "right" : "left", filterValues: mainGroupField.filterValues, allowFiltering: mainGroupField.allowFiltering && !field.groupIndex, allowSorting: field.allowSorting, caption: field.caption || field.dataField }, showColumnLines: showColumnLines }) } if (field.groupName) { $fieldElement.attr(_const.ATTRIBUTES.itemGroup, field.groupName) } return $fieldElement } _clean(value) {} _render() { super._render(); this._headerFilterView.render(this.$element()) } renderSortable() { const that = this; that._createComponent(that.$element(), Sortable, (0, _extend.extend)({ allowDragging: that.option("allowFieldDragging"), itemSelector: `.${_const.CLASSES.area.field}`, itemContainerSelector: `.${_const.CLASSES.area.fieldContainer}`, groupSelector: `.${_const.CLASSES.area.fieldList}`, groupFilter() { const dataSource = that._dataSource; const $sortable = (0, _renderer.default)(this).closest(".dx-sortable-old"); const pivotGrid = $sortable.data("dxPivotGrid"); const pivotGridFieldChooser = $sortable.data("dxPivotGridFieldChooser"); if (pivotGrid) { return pivotGrid.getDataSource() === dataSource } if (pivotGridFieldChooser) { return pivotGridFieldChooser.option("dataSource") === dataSource } return false }, itemRender: _dom.dragAndDropItemRender, onDragging(e) { const field = e.sourceElement.data("field"); const { targetGroup: targetGroup } = e; e.cancel = false; if (true === field.isMeasure) { if ("column" === targetGroup || "row" === targetGroup || "filter" === targetGroup) { e.cancel = true } } else if (false === field.isMeasure && "data" === targetGroup) { e.cancel = true } }, useIndicator: true, onChanged(e) { const field = e.sourceElement.data("field"); e.removeSourceElement = !!e.sourceGroup; that._adjustSortableOnChangedArgs(e); if (field) { const { targetIndex: targetIndex } = e; let mainGroupField; let invisibleFieldsIndexOffset = 0; that._processDemandState((dataSource => { const fields = dataSource.getAreaFields(field.area, true); mainGroupField = getMainGroupField(dataSource, field); const visibleFields = fields.filter((f => false !== f.visible)); const fieldBeforeTarget = visibleFields[targetIndex - 1]; if (fieldBeforeTarget) { invisibleFieldsIndexOffset = fields.filter((f => false === f.visible && f.areaIndex <= fieldBeforeTarget.areaIndex)).length } })); that._applyChanges([mainGroupField], { area: e.targetGroup, areaIndex: targetIndex + invisibleFieldsIndexOffset }) } } }, that._getSortableOptions())) } _processDemandState(func) { const that = this; const isInstantlyMode = "instantly" === that.option("applyChangesMode"); const dataSource = that._dataSource; if (isInstantlyMode) { func(dataSource, isInstantlyMode) } else { const currentState = dataSource.state(); const pivotGridState = that.option("state"); if (pivotGridState) { dataSource.state(pivotGridState, true) } func(dataSource, isInstantlyMode); dataSource.state(currentState, true) } } _applyChanges(fields, props) { const that = this; that._processDemandState(((dataSource, isInstantlyMode) => { fields.forEach((_ref => { let { index: index } = _ref; dataSource.field(index, props) })); if (isInstantlyMode) { dataSource.load() } else { that._changedHandler() } })) } _applyLocalSortChanges(fieldIdx, sortOrder) { this._processDemandState((dataSource => { dataSource.field(fieldIdx, { sortOrder: sortOrder }); dataSource.sortLocal() })) } _adjustSortableOnChangedArgs(e) { e.removeSourceElement = false; e.removeTargetElement = true; e.removeSourceClass = false } _getSortableOptions() { return { direction: "auto" } } subscribeToEvents(element) { const that = this; const func = function(e) { const field = (0, _renderer.default)(e.currentTarget).data("field"); const mainGroupField = (0, _extend.extend)(true, {}, getMainGroupField(that._dataSource, field)); const isHeaderFilter = (0, _renderer.default)(e.target).hasClass(_const.CLASSES.headerFilter); const dataSource = that._dataSource; const type = mainGroupField.groupName ? "tree" : "list"; const paginate = dataSource.paginate() && "list" === type; if (isHeaderFilter) { that._headerFilterView.showHeaderFilterMenu((0, _renderer.default)(e.currentTarget), (0, _extend.extend)(mainGroupField, { type: type, encodeHtml: that.option("encodeHtml"), dataSource: { useDefaultSearch: !paginate, load(options) { const { userData: userData } = options; if (userData.store) { return userData.store.load(options) } const d = new _deferred.Deferred; dataSource.getFieldValues(mainGroupField.index, that.option("headerFilter.showRelevantValues"), paginate ? options : void 0).done((data => { const emptyValue = that.option("headerFilter.texts.emptyValue"); data.forEach((element => { if (!element.text) { element.text = emptyValue } })); if (paginate) { d.resolve(data) } else { userData.store = new _array_store.default(data); userData.store.load(options).done(d.resolve).fail(d.reject) } })).fail(d.reject); return d }, postProcess(data) { ! function(groupItems, field) { const filterValues = []; const isTree = !!field.groupName; const isExcludeFilterType = "exclude" === field.filterType; if (field.filterValues) { (0, _iterator.each)(field.filterValues, ((_, filterValue) => { filterValues.push(Array.isArray(filterValue) ? filterValue.join("/") : null === filterValue || void 0 === filterValue ? void 0 : filterValue.valueOf()) })) }(0, _m_widget_utils.foreachTree)(groupItems, (items => { var _item$value; const item = items[0]; const path = (0, _m_widget_utils.createPath)(items); const preparedFilterValueByText = isTree ? (0, _iterator.map)(items, (item => item.text)).reverse().join("/") : item.text; item.value = isTree ? path.slice(0) : item.key || item.value; const preparedFilterValue = isTree ? path.join("/") : null === (_item$value = item.value) || void 0 === _item$value ? void 0 : _item$value.valueOf(); if (item.children) { item.items = item.children; item.children = null }(0, _m_header_filter_core.updateHeaderFilterItemSelectionState)(item, item.key && filterValues.includes(preparedFilterValueByText) || filterValues.includes(preparedFilterValue), isExcludeFilterType) })) }(data, mainGroupField); return data } }, apply() { that._applyChanges([mainGroupField], { filterValues: this.filterValues, filterType: this.filterType }) } })) } else if (field.allowSorting && "data" !== field.area) { const isRemoteSort = that.option("remoteSort"); const sortOrder = (0, _utils.reverseSortOrder)(field.sortOrder); if (isRemoteSort) { that._applyChanges([field], { sortOrder: sortOrder }) } else { that._applyLocalSortChanges(field.index, sortOrder) } } }; if (element) { _events_engine.default.on(element, _click.name, `.${_const.CLASSES.area.field}.${_const.CLASSES.area.box}`, func); return } _events_engine.default.on(that.$element(), _click.name, `.${_const.CLASSES.area.field}.${_const.CLASSES.area.box}`, func) } _initTemplates() {} addWidgetPrefix(className) { return `dx-pivotgrid-${className}` } } exports.FieldChooserBase = FieldChooserBase; (0, _component_registrator.default)("dxPivotGridFieldChooserBase", FieldChooserBase); exports.default = { FieldChooserBase: FieldChooserBase } }, 56958: /*!************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/pivot_grid/field_chooser/utils.js ***! \************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.reverseSortOrder = void 0; var _const = __webpack_require__( /*! ./const */ 73944); exports.reverseSortOrder = sortOrder => sortOrder === _const.SORT_ORDER.descending ? _const.SORT_ORDER.ascending : _const.SORT_ORDER.descending }, 2997: /*!******************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/pivot_grid/fields_area/m_fields_area.js ***! \******************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = exports.FieldsArea = void 0; __webpack_require__( /*! ../field_chooser/m_field_chooser_base */ 70317); var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../../../core/renderer */ 64553)); var _common = __webpack_require__( /*! ../../../../core/utils/common */ 17781); var _iterator = __webpack_require__( /*! ../../../../core/utils/iterator */ 21274); var _style = __webpack_require__( /*! ../../../../core/utils/style */ 58515); var _button = _interopRequireDefault(__webpack_require__( /*! ../../../../ui/button */ 64973)); var _ui = _interopRequireDefault(__webpack_require__( /*! ../../../../ui/popup/ui.popup */ 10720)); var _capitalize = __webpack_require__( /*! ../../../core/utils/capitalize */ 72928); var _m_area_item = __webpack_require__( /*! ../area_item/m_area_item */ 96273); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } const DIV = "
"; const FieldsArea = exports.FieldsArea = _m_area_item.AreaItem.inherit({ ctor(component, area) { this.callBase(component); this._area = area }, _getAreaName: () => "fields", _createGroupElement() { return (0, _renderer.default)(DIV).addClass("dx-pivotgrid-fields-area").addClass("dx-area-fields").addClass("dx-pivotgrid-drag-action").attr("group", this._area) }, isVisible() { return !!this.option("fieldPanel.visible") && this.option(`fieldPanel.show${(0,_capitalize.capitalize)(this._area)}Fields`) }, _renderButton(element) { const that = this; const container = (0, _renderer.default)("
").appendTo(element)); const button = that.component._createComponent((0, _renderer.default)(DIV).appendTo(container), _button.default, { text: "Fields", icon: "menu", width: "auto", onClick() { const popup = that.tableElement().find(".dx-fields-area-popup").dxPopup("instance"); if (!popup.option("visible")) { popup.show() } } }); button.$element().addClass("dx-pivotgrid-fields-area-hamburger") }, _getPopupOptions: (row, button) => ({ contentTemplate: () => (0, _renderer.default)("
").appendTo((0, _renderer.default)("
").addClass("dx-area-field-container").append((0, _renderer.default)("").addClass("dx-pivotgrid-fields-area-head").append(row)), height: "auto", width: "auto", position: { at: "left", my: "left", of: button }, dragEnabled: false, animation: { show: { type: "pop", duration: 200 } }, shading: false, showTitle: false, hideOnOutsideClick: true, container: button.parent() }), _renderPopup(tableElement, row) { const that = this; const button = tableElement.find(".dx-button"); const popupOptions = that._getPopupOptions(row, button); const FieldChooserBase = that.component.$element().dxPivotGridFieldChooserBase("instance"); if (that._rowPopup) { that._rowPopup.$element().remove() } that._rowPopup = that.component._createComponent((0, _renderer.default)(DIV).appendTo(tableElement), _ui.default, popupOptions); that._rowPopup.$element().addClass("dx-fields-area-popup"); that._rowPopup.content().addClass("dx-pivotgrid-fields-container"); that._rowPopup.content().parent().attr("group", "row"); FieldChooserBase.subscribeToEvents(that._rowPopup.content()); FieldChooserBase.renderSortable(that._rowPopup.content()) }, _shouldCreateButton: () => false, _renderTableContent(tableElement, data) { const that = this; const groupElement = this.groupElement(); const isVisible = this.isVisible(); const fieldChooserBase = that.component.$element().dxPivotGridFieldChooserBase("instance"); const head = (0, _renderer.default)("").addClass("dx-pivotgrid-fields-area-head").appendTo(tableElement); const area = that._area; const row = (0, _renderer.default)(""); groupElement.toggleClass("dx-hidden", !isVisible); tableElement.addClass("dx-area-field-container"); if (!isVisible) { return }(0, _iterator.each)(data, ((index, field) => { if (field.area === area && false !== field.visible) { const td = (0, _renderer.default)("", setVirtualContentParams(params) { this.callBase(params); this._setTableCss({ left: params.left, top: 0 }); this._virtualContentWidth = params.width }, hasScroll() { const tableWidth = this._virtualContent ? this._virtualContentWidth : this._tableWidth; const groupWidth = this.getGroupWidth(); if (groupWidth && tableWidth) { return tableWidth - groupWidth >= 1 } return false }, renderScrollable() { this._groupElement.dxScrollable({ useNative: false, useSimulatedScrollbar: false, showScrollbar: "never", bounceEnabled: false, direction: "horizontal", rtlEnabled: isRenovatedScrollable ? this.component.option("rtlEnabled") : false, updateManually: true }) }, updateScrollableOptions(_ref) { let { rtlEnabled: rtlEnabled } = _ref; const scrollable = this._getScrollable(); isRenovatedScrollable && scrollable.option({ rtlEnabled: rtlEnabled }) }, processScrollBarSpacing(scrollBarWidth) { const groupAlignment = this.option("rtlEnabled") ? "right" : "left"; const groupWidth = this.getGroupWidth(); if (groupWidth) { this.setGroupWidth(groupWidth - scrollBarWidth) } if (this._scrollBarWidth) { this._groupElement.next().remove() } this._groupElement.toggleClass("dx-vertical-scroll", scrollBarWidth > 0); (0, _size.setWidth)(this._groupElement.css("float", groupAlignment), this.getGroupHeight()); this._scrollBarWidth = scrollBarWidth }, getScrollPath(offset) { const tableElement = this.tableElement(); let cell; offset -= parseInt(tableElement[0].style.left, 10) || 0; (0, _iterator.each)(tableElement.find("td"), ((_, td) => { if (1 === td.colSpan && td.offsetLeft <= offset && td.offsetWidth + td.offsetLeft > offset) { cell = td; return false } return })); return getCellPath(tableElement, cell) }, _moveFakeTable(scrollPos) { this._moveFakeTableHorizontally(scrollPos); this.callBase() } }); const VerticalHeadersArea = exports.VerticalHeadersArea = HorizontalHeadersArea.inherit({ _getAreaClassName: () => "dx-pivotgrid-vertical-headers", _applyCustomStyles(options) { this.callBase(options); if (options.cellIndex === options.cellsCount - 1) { options.classArray.push("dx-last-cell") } if (options.rowIndex === options.rowsCount - 1) { options.cssArray.push("border-bottom: 0px") } if (options.cell.isWhiteSpace) { options.classArray.push("dx-white-space-column") } }, _getAreaName: () => "row", setVirtualContentParams(params) { this.callBase(params); this._setTableCss({ top: params.top, left: 0 }); this._virtualContentHeight = params.height }, hasScroll() { const tableHeight = this._virtualContent ? this._virtualContentHeight : this._tableHeight; const groupHeight = this.getGroupHeight(); if (groupHeight && tableHeight) { return tableHeight - groupHeight >= 1 } return false }, renderScrollable() { this._groupElement.dxScrollable({ useNative: false, useSimulatedScrollbar: false, showScrollbar: "never", bounceEnabled: false, direction: "vertical", updateManually: true }) }, processScrollBarSpacing(scrollBarWidth) { const groupHeight = this.getGroupHeight(); if (groupHeight) { this.setGroupHeight(groupHeight - scrollBarWidth) } if (this._scrollBarWidth) { this._groupElement.next().remove() } if (scrollBarWidth) { const $div = (0, _renderer.default)("
"); (0, _size.setWidth)($div, "100%"); (0, _size.setHeight)($div, scrollBarWidth - 1); this._groupElement.after($div) } this._scrollBarWidth = scrollBarWidth }, getScrollPath(offset) { const tableElement = this.tableElement(); let cell; offset -= parseInt(tableElement[0].style.top, 10) || 0; (0, _iterator.each)(tableElement.find("tr"), ((_, tr) => { const td = tr.childNodes[tr.childNodes.length - 1]; if (td && 1 === td.rowSpan && td.offsetTop <= offset && td.offsetHeight + td.offsetTop > offset) { cell = td; return false } return })); return getCellPath(tableElement, cell) }, _moveFakeTable(scrollPos) { this._moveFakeTableTop(scrollPos); this.callBase() }, _getRowClassNames(rowIndex, cell, rowClassNames) { if (0 !== rowIndex & cell.expanded && !rowClassNames.includes("dx-expand-border")) { rowClassNames.push("dx-expand-border") } }, _getMainElementMarkup() { const tbody = _dom_adapter.default.createElement("tbody"); tbody.classList.add(this._getAreaClassName()); return tbody }, _getCloseMainElementMarkup: () => "", updateColspans(columnCount) { const { rows: rows } = this.tableElement()[0]; let columnOffset = 0; const columnOffsetResetIndexes = []; if (this.getColumnsCount() - columnCount > 0) { return } for (let i = 0; i < rows.length; i += 1) { for (let j = 0; j < rows[i].cells.length; j += 1) { const cell = rows[i].cells[j]; const { rowSpan: rowSpan } = cell; if (columnOffsetResetIndexes[i]) { columnOffset -= columnOffsetResetIndexes[i]; columnOffsetResetIndexes[i] = 0 } const diff = columnCount - (columnOffset + cell.colSpan); if (j === rows[i].cells.length - 1 && diff > 0) { cell.colSpan += diff } columnOffsetResetIndexes[i + rowSpan] = (columnOffsetResetIndexes[i + rowSpan] || 0) + cell.colSpan; columnOffset += cell.colSpan } } } }); exports.default = { HorizontalHeadersArea: HorizontalHeadersArea, VerticalHeadersArea: VerticalHeadersArea } }, 47825: /*!******************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/pivot_grid/local_store/m_local_store.js ***! \******************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = exports.LocalStore = void 0; var _array_store = _interopRequireDefault(__webpack_require__( /*! ../../../../common/data/array_store */ 80556)); var _custom_store = __webpack_require__( /*! ../../../../common/data/custom_store */ 63326); var _data_source = __webpack_require__( /*! ../../../../common/data/data_source/data_source */ 68216); var _query = _interopRequireDefault(__webpack_require__( /*! ../../../../common/data/query */ 30771)); var _utils = __webpack_require__( /*! ../../../../common/data/utils */ 89358); var _class = _interopRequireDefault(__webpack_require__( /*! ../../../../core/class */ 55620)); var _common = __webpack_require__( /*! ../../../../core/utils/common */ 17781); var _data = __webpack_require__( /*! ../../../../core/utils/data */ 31e3); var _date_serialization = _interopRequireDefault(__webpack_require__( /*! ../../../../core/utils/date_serialization */ 71051)); var _deferred = __webpack_require__( /*! ../../../../core/utils/deferred */ 87739); var _iterator = __webpack_require__( /*! ../../../../core/utils/iterator */ 21274); var _type = __webpack_require__( /*! ../../../../core/utils/type */ 11528); var _m_widget_utils = __webpack_require__( /*! ../m_widget_utils */ 12062); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } const LocalStore = exports.LocalStore = _class.default.inherit(function() { const DATE_INTERVAL_SELECTORS = { year: date => date && date.getFullYear(), quarter: date => date && Math.floor(date.getMonth() / 3) + 1, month: date => date && date.getMonth() + 1, day: date => date && date.getDate(), dayOfWeek: date => date && date.getDay() }; function getDataSelector(dataField) { return -1 !== dataField.indexOf(".") ? (0, _data.compileGetter)(dataField) : function(data) { return data[dataField] } } function getDateValue(dataSelector) { return function(data) { let value = dataSelector(data); if (value && !(value instanceof Date)) { value = _date_serialization.default.deserializeDate(value) } return value } } function prepareFields(fields) { (0, _iterator.each)(fields || [], ((_, field) => { let fieldSelector; let intervalSelector; const { dataField: dataField } = field; let groupInterval; const { levels: levels } = field; let dataSelector; if (!field.selector) { if (!dataField) { dataSelector = function(data) { return data } } else { dataSelector = getDataSelector(dataField) } if (levels) { prepareFields(levels) } if ("date" === field.dataType) { intervalSelector = DATE_INTERVAL_SELECTORS[field.groupInterval]; const valueSelector = getDateValue(dataSelector); fieldSelector = function(data) { const value = valueSelector(data); return intervalSelector ? intervalSelector(value) : value } } else if ("number" === field.dataType) { groupInterval = (0, _type.isNumeric)(field.groupInterval) && field.groupInterval > 0 && field.groupInterval; fieldSelector = function(data) { let value = dataSelector(data); if ((0, _type.isString)(value)) { value = Number(value) } return groupInterval ? Math.floor(value / groupInterval) * groupInterval : value } } else { fieldSelector = dataSelector }(0, _m_widget_utils.setDefaultFieldValueFormatting)(field); (0, _m_widget_utils.setFieldProperty)(field, "selector", fieldSelector) } })) } function fillHierarchyItemIndexesCore(indexes, options, children, expandIndex, pathHash) { const dimension = options.dimensions[expandIndex]; const { expandedPathsHash: expandedPathsHash } = options; let dimensionValue; let hierarchyItem; if (dimension) { dimensionValue = dimension.selector(options.data); pathHash = void 0 !== pathHash ? pathHash + "/./" + dimensionValue : `${dimensionValue}`; hierarchyItem = function(value, hierarchyItems, pathHash, childrenHash) { let hierarchyItem = childrenHash[pathHash]; if (!hierarchyItem) { hierarchyItem = { value: value, index: childrenHash.length++ }; childrenHash[pathHash] = hierarchyItem; hierarchyItems.push(hierarchyItem) } return hierarchyItem }(dimensionValue, children, pathHash, options.childrenHash); indexes.push(hierarchyItem.index); if (expandedPathsHash && expandedPathsHash[pathHash] || dimension.expanded) { if (!hierarchyItem.children) { hierarchyItem.children = [] } fillHierarchyItemIndexesCore(indexes, options, hierarchyItem.children, expandIndex + 1, pathHash) } } } function generateHierarchyItems(data, loadOptions, headers, headerName) { const result = [0]; const expandIndex = loadOptions.headerName === headerName ? loadOptions.path.length : 0; const expandedPaths = "rows" === headerName ? loadOptions.rowExpandedPaths : loadOptions.columnExpandedPaths; const options = { data: data, childrenHash: headers[`${headerName}Hash`], dimensions: loadOptions[headerName], expandedPathsHash: loadOptions.headerName !== headerName && expandedPaths && expandedPaths.hash }; fillHierarchyItemIndexesCore(result, options, headers[headerName], expandIndex); return result } function generateAggregationCells(data, cells, headers, options) { const cellSet = []; let x; let y; let rowIndex; let columnIndex; const rowIndexes = generateHierarchyItems(data, options, headers, "rows"); const columnIndexes = generateHierarchyItems(data, options, headers, "columns"); for (y = 0; y < rowIndexes.length; y += 1) { rowIndex = rowIndexes[y]; cells[rowIndex] = cells[rowIndex] || []; for (x = 0; x < columnIndexes.length; x += 1) { columnIndex = columnIndexes[x]; cellSet.push(cells[rowIndex][columnIndex] = cells[rowIndex][columnIndex] || []) } } return cellSet } function fillHashExpandedPath(expandedPaths) { if (expandedPaths) { const hash = expandedPaths.hash = {}; expandedPaths.forEach((path => { const pathValue = path.map((value => `${value}`)).join("/./"); hash[pathValue] = true })) } } function prepareLoadOption(options) { options.rows = options.rows || []; options.columns = options.columns || []; options.filters = options.filters || []; fillHashExpandedPath(options.columnExpandedPaths); fillHashExpandedPath(options.rowExpandedPaths); prepareFields(options.columns); prepareFields(options.rows); prepareFields(options.values); prepareFields(options.filters) } function getAggregator(field) { if ("custom" === field.summaryType) { field.calculateCustomSummary = field.calculateCustomSummary || _common.noop; return { seed() { const options = { summaryProcess: "start", totalValue: void 0 }; field.calculateCustomSummary(options); return options }, step(options, value) { options.summaryProcess = "calculate"; options.value = value; field.calculateCustomSummary(options); return options }, finalize(options) { options.summaryProcess = "finalize"; delete options.value; field.calculateCustomSummary(options); return options.totalValue } } } return _utils.aggregators[field.summaryType] || _utils.aggregators.count } function aggregationStep(measures, aggregationCells, data) { for (let aggregatorIndex = 0; aggregatorIndex < measures.length; aggregatorIndex += 1) { const cellField = measures[aggregatorIndex]; const cellValue = cellField.selector(data); const aggregator = getAggregator(cellField); const isAggregatorSeedFunction = "function" === typeof aggregator.seed; for (let cellSetIndex = 0; cellSetIndex < aggregationCells.length; cellSetIndex += 1) { const cell = aggregationCells[cellSetIndex]; if (cell.length <= aggregatorIndex) { cell[aggregatorIndex] = isAggregatorSeedFunction ? aggregator.seed() : aggregator.seed } if (void 0 === cell[aggregatorIndex]) { cell[aggregatorIndex] = cellValue } else if ((0, _type.isDefined)(cellValue)) { cell[aggregatorIndex] = aggregator.step(cell[aggregatorIndex], cellValue) } } } } function areValuesEqual(filterValue, fieldValue) { let valueOfFilter = filterValue && filterValue.valueOf(); let valueOfField = fieldValue && fieldValue.valueOf(); if (Array.isArray(filterValue)) { fieldValue = fieldValue || []; for (let i = 0; i < filterValue.length; i += 1) { valueOfFilter = filterValue[i] && filterValue[i].valueOf(); valueOfField = fieldValue[i] && fieldValue[i].valueOf(); if (valueOfFilter !== valueOfField) { return false } } return true } return valueOfFilter === valueOfField } function createDimensionFilters(dimension) { const filters = []; (0, _iterator.each)(dimension, ((_, field) => { const filterValues = field.filterValues || []; const { groupName: groupName } = field; if (groupName && (0, _type.isNumeric)(field.groupIndex)) { return } filterValues.length && filters.push((function(dataItem) { const value = field.levels ? function(levels, data) { const value = []; (0, _iterator.each)(levels, ((_, field) => { value.push(field.selector(data)) })); return value }(field.levels, dataItem) : field.selector(dataItem); let result = false; for (let i = 0; i < filterValues.length; i += 1) { if (areValuesEqual(filterValues[i], value)) { result = true; break } } return "exclude" === field.filterType ? !result : result })) })); return filters } function createFilter(options) { const filters = createDimensionFilters(options.rows).concat(createDimensionFilters(options.columns)).concat(createDimensionFilters(options.filters)); const expandedDimensions = options[options.headerName]; const { path: path } = options; if (expandedDimensions) { filters.push((dataItem => { let expandValue; for (let i = 0; i < path.length; i += 1) { expandValue = expandedDimensions[i].selector(dataItem); if ((0, _data.toComparable)(expandValue, true) !== (0, _data.toComparable)(path[i], true)) { return false } } return true })) } return function(dataItem) { for (let i = 0; i < filters.length; i += 1) { if (!filters[i](dataItem)) { return false } } return true } } function loadCore(items, options, notifyProgress) { const headers = { columns: [], rows: [], columnsHash: { length: 1 }, rowsHash: { length: 1 } }; const values = []; let aggregationCells; let data; const d = new _deferred.Deferred; let i = 0; const filter = createFilter(options); ! function processData() { const t = new Date; const startIndex = i; for (; i < items.length; i += 1) { if (i > startIndex && i % 1e4 === 0) { if (new Date - t >= 300) { notifyProgress(i / items.length); setTimeout(processData, 0); return } } data = items[i]; if (filter(data)) { aggregationCells = generateAggregationCells(data, values, headers, options); aggregationStep(options.values, aggregationCells, data) } } measures = options.values, cells = values, void(0, _iterator.each)(measures, ((aggregatorIndex, cellField) => { const aggregator = getAggregator(cellField); if (aggregator.finalize) { (0, _iterator.each)(cells, ((_, row) => { (0, _iterator.each)(row, ((_, cell) => { if (cell && void 0 !== cell[aggregatorIndex]) { cell[aggregatorIndex] = aggregator.finalize(cell[aggregatorIndex]) } })) })) } })); var measures, cells; notifyProgress(1); d.resolve({ rows: headers.rows, columns: headers.columns, values: values, grandTotalRowIndex: 0, grandTotalColumnIndex: 0 }) }(); return d } function filterDataSource(dataSource, fieldSelectors) { let filter = dataSource.filter(); if (dataSource.store() instanceof _custom_store.CustomStore && filter) { filter = processFilter(filter, fieldSelectors); return (0, _query.default)(dataSource.items()).filter(filter).toArray() } return dataSource.items() } function loadDataSource(dataSource, fieldSelectors, reload) { const d = new _deferred.Deferred; const customizeStoreLoadOptionsHandler = function(options) { if (dataSource.store() instanceof _array_store.default) { options.storeLoadOptions.filter = processFilter(options.storeLoadOptions.filter, fieldSelectors) } }; dataSource.on("customizeStoreLoadOptions", customizeStoreLoadOptionsHandler); if (!dataSource.isLoaded() || reload) { const loadDeferred = reload ? dataSource.load() : dataSource.reload(); (0, _deferred.when)(loadDeferred).done((() => { loadDataSource(dataSource, fieldSelectors).done((() => { d.resolve(filterDataSource(dataSource, fieldSelectors)) })).fail(d.reject) })).fail(d.reject) } else { d.resolve(filterDataSource(dataSource, fieldSelectors)) } return d.always((() => { dataSource.off("customizeStoreLoadOptions", customizeStoreLoadOptionsHandler) })) } function fillSelectorsByFields(selectors, fields) { fields.forEach((field => { if (field.dataField && "date" === field.dataType) { const valueSelector = getDateValue(getDataSelector(field.dataField)); selectors[field.dataField] = function(data) { return valueSelector(data) } } })) } function getFieldSelectors(options) { const selectors = {}; if (Array.isArray(options)) { fillSelectorsByFields(selectors, options) } else if (options) { ["rows", "columns", "filters"].forEach((area => { options[area] && fillSelectorsByFields(selectors, options[area]) })) } return selectors } function processFilter(filter, fieldSelectors) { if (!Array.isArray(filter)) { return filter } filter = filter.slice(0); if ((0, _type.isString)(filter[0]) && (filter[1] instanceof Date || filter[2] instanceof Date)) { filter[0] = fieldSelectors[filter[0]] } for (let i = 0; i < filter.length; i += 1) { filter[i] = processFilter(filter[i], fieldSelectors) } return filter } return { ctor(options) { this._progressChanged = options.onProgressChanged || _common.noop; this._dataSource = new _data_source.DataSource(options); this._dataSource.paginate(false) }, getFields(fields) { const dataSource = this._dataSource; const d = new _deferred.Deferred; loadDataSource(dataSource, getFieldSelectors(fields)).done((data => { d.resolve((0, _m_widget_utils.discoverObjectFields)(data, fields)) })).fail(d.reject); return d }, key() { return this._dataSource.key() }, load(options) { const that = this; const dataSource = that._dataSource; const d = new _deferred.Deferred; prepareLoadOption(options); loadDataSource(dataSource, getFieldSelectors(options), options.reload).done((data => { (0, _deferred.when)(loadCore(data, options, that._progressChanged)).done(d.resolve) })).fail(d.reject); return d }, filter() { const dataSource = this._dataSource; return dataSource.filter.apply(dataSource, arguments) }, supportPaging: () => false, getDrillDownItems(loadOptions, params) { loadOptions = loadOptions || {}; params = params || {}; prepareLoadOption(loadOptions); const drillDownItems = []; const items = this._dataSource.items(); let item; const { maxRowCount: maxRowCount } = params; const { customColumns: customColumns } = params; const filter = createFilter(loadOptions); const pathFilter = createFilter({ rows: (0, _m_widget_utils.getFiltersByPath)(loadOptions.rows, params.rowPath), columns: (0, _m_widget_utils.getFiltersByPath)(loadOptions.columns, params.columnPath), filters: [] }); for (let i = 0; i < items.length; i += 1) { if (pathFilter(items[i]) && filter(items[i])) { if (customColumns) { item = {}; for (let j = 0; j < customColumns.length; j += 1) { item[customColumns[j]] = items[i][customColumns[j]] } } else { item = items[i] } drillDownItems.push(item) } if (maxRowCount > 0 && drillDownItems.length === maxRowCount) { break } } return drillDownItems } } }()).include(_m_widget_utils.storeDrillDownMixin); exports.default = { LocalStore: LocalStore } }, 16508: /*!*************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/pivot_grid/m_widget.js ***! \*************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = exports.PivotGrid = void 0; var _click = __webpack_require__( /*! ../../../common/core/events/click */ 64044); var _events_engine = _interopRequireDefault(__webpack_require__( /*! ../../../common/core/events/core/events_engine */ 92774)); var _index = __webpack_require__( /*! ../../../common/core/events/utils/index */ 98834); var _message = _interopRequireDefault(__webpack_require__( /*! ../../../common/core/localization/message */ 4671)); var _component_registrator = _interopRequireDefault(__webpack_require__( /*! ../../../core/component_registrator */ 92848)); var _element = __webpack_require__( /*! ../../../core/element */ 61404); var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../../core/renderer */ 64553)); var _common = __webpack_require__( /*! ../../../core/utils/common */ 17781); var _deferred = __webpack_require__( /*! ../../../core/utils/deferred */ 87739); var _extend = __webpack_require__( /*! ../../../core/utils/extend */ 52576); var _iterator = __webpack_require__( /*! ../../../core/utils/iterator */ 21274); var _size = __webpack_require__( /*! ../../../core/utils/size */ 57653); var _string = __webpack_require__( /*! ../../../core/utils/string */ 54497); var _type = __webpack_require__( /*! ../../../core/utils/type */ 11528); var _window = __webpack_require__( /*! ../../../core/utils/window */ 3104); var _button = _interopRequireDefault(__webpack_require__( /*! ../../../ui/button */ 64973)); var _context_menu = _interopRequireDefault(__webpack_require__( /*! ../../../ui/context_menu */ 34378)); var _ui = _interopRequireDefault(__webpack_require__( /*! ../../../ui/popup/ui.popup */ 10720)); var _themes = __webpack_require__( /*! ../../../ui/themes */ 52071); var _ui2 = _interopRequireDefault(__webpack_require__( /*! ../../../ui/widget/ui.widget */ 11118)); var _m_utils = _interopRequireDefault(__webpack_require__( /*! ../../grids/grid_core/m_utils */ 53226)); var _m_chart_integration = __webpack_require__( /*! ./chart_integration/m_chart_integration */ 67705); var _m_data_area = _interopRequireDefault(__webpack_require__( /*! ./data_area/m_data_area */ 31045)); var _m_data_controller = _interopRequireDefault(__webpack_require__( /*! ./data_controller/m_data_controller */ 18509)); var _m_export = __webpack_require__( /*! ./export/m_export */ 12867); var _m_field_chooser = __webpack_require__( /*! ./field_chooser/m_field_chooser */ 62989); var _m_field_chooser_base = __webpack_require__( /*! ./field_chooser/m_field_chooser_base */ 70317); var _m_fields_area = __webpack_require__( /*! ./fields_area/m_fields_area */ 2997); var _m_headers_area = _interopRequireDefault(__webpack_require__( /*! ./headers_area/m_headers_area */ 77195)); var _m_widget_utils = __webpack_require__( /*! ./m_widget_utils */ 12062); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } const window = (0, _window.getWindow)(); const TR = "
"; const TD = "
").append(fieldChooserBase.renderField(field, "row" === field.area)); const indicators = td.find(".dx-column-indicators"); if (indicators.length && that._shouldCreateButton()) { indicators.insertAfter(indicators.next()) } td.appendTo(row); ! function(field, nextField, prevField, $container) { if (null !== prevField && void 0 !== prevField && prevField.groupName && prevField.groupName === field.groupName) { (0, _renderer.default)(DIV).addClass("dx-group-connector").addClass("dx-group-connector-prev").appendTo($container) } if (null !== nextField && void 0 !== nextField && nextField.groupName && nextField.groupName === field.groupName) { (0, _renderer.default)(DIV).addClass("dx-group-connector").addClass("dx-group-connector-next").appendTo($container) } }(field, data[index + 1], data[index - 1], td) } })); if (!row.children().length) { (0, _renderer.default)("").append((0, _renderer.default)(DIV).addClass("dx-empty-area-text").text(this.option(`fieldPanel.texts.${area}FieldArea`))).appendTo(row) } if (that._shouldCreateButton()) { that._renderButton(head); that._renderPopup(tableElement, row) } else { head.append(row) } }, setGroupWidth(value) { (0, _style.setWidth)(this.groupElement(), value) }, setGroupHeight(value) { (0, _style.setHeight)(this.groupElement(), value) }, reset() { this.callBase(); this.groupElement().css("marginTop", 0) }, _renderVirtualContent: _common.noop }); exports.default = { FieldsArea: FieldsArea } }, 77195: /*!********************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/pivot_grid/headers_area/m_headers_area.js ***! \********************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = exports.VerticalHeadersArea = exports.HorizontalHeadersArea = void 0; var _dom_adapter = _interopRequireDefault(__webpack_require__( /*! ../../../../core/dom_adapter */ 64960)); var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../../../core/renderer */ 64553)); var _iterator = __webpack_require__( /*! ../../../../core/utils/iterator */ 21274); var _size = __webpack_require__( /*! ../../../../core/utils/size */ 57653); var _type = __webpack_require__( /*! ../../../../core/utils/type */ 11528); var _ui = _interopRequireDefault(__webpack_require__( /*! ../../../../ui/scroll_view/ui.scrollable */ 20876)); var _m_area_item = __webpack_require__( /*! ../area_item/m_area_item */ 96273); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } const isRenovatedScrollable = !!_ui.default.IS_RENOVATED_WIDGET; function getCellPath(tableElement, cell) { if (cell) { const { data: data } = tableElement.data(); const { rowIndex: rowIndex } = cell.parentNode; const { cellIndex: cellIndex } = cell; return data[rowIndex] && data[rowIndex][cellIndex] && data[rowIndex][cellIndex].path } return } const HorizontalHeadersArea = exports.HorizontalHeadersArea = _m_area_item.AreaItem.inherit({ ctor(component) { this.callBase(component); this._scrollBarWidth = 0 }, _getAreaName: () => "column", _getAreaClassName: () => "dx-pivotgrid-horizontal-headers", _createGroupElement() { return (0, _renderer.default)("
").addClass(this._getAreaClassName()).addClass("dx-pivotgrid-area") }, _applyCustomStyles(options) { const { cssArray: cssArray } = options; const { cell: cell } = options; const { rowsCount: rowsCount } = options; const { classArray: classArray } = options; if (options.cellIndex === options.cellsCount - 1) { cssArray.push((options.rtlEnabled ? "border-left:" : "border-right:") + "0px") } if (cell.rowspan === rowsCount - options.rowIndex || options.rowIndex + 1 === rowsCount) { cssArray.push("border-bottom-width:0px") } if ("T" === cell.type || "GT" === cell.type) { classArray.push("dx-row-total") } if ("T" === options.cell.type) { classArray.push("dx-total") } if ("GT" === options.cell.type) { classArray.push("dx-grandtotal") } if ((0, _type.isDefined)(cell.expanded)) { classArray.push(cell.expanded ? "dx-pivotgrid-expanded" : "dx-pivotgrid-collapsed") } this.callBase(options) }, _getMainElementMarkup() { const thead = _dom_adapter.default.createElement("thead"); thead.setAttribute("class", this._getAreaClassName()); return thead }, _getCloseMainElementMarkup: () => "
"; const DIV = "
"; const FIELD_CALCULATED_OPTIONS = ["allowSorting", "allowSortingBySummary", "allowFiltering", "allowExpandAll"]; function getArraySum(array) { let sum = 0; (0, _iterator.each)(array, ((_, value) => { sum += value || 0 })); return sum } function adjustSizeArray(sizeArray, space) { const delta = space / sizeArray.length; for (let i = 0; i < sizeArray.length; i += 1) { sizeArray[i] -= delta } } function unsubscribeScrollEvents(area) { area.off("scroll").off("stop") } function getCommonBorderWidth(elements, direction) { const borderStyleNames = "width" === direction ? ["borderLeftWidth", "borderRightWidth"] : ["borderTopWidth", "borderBottomWidth"]; let width = 0; (0, _iterator.each)(elements, ((_, elem) => { const computedStyle = window.getComputedStyle(elem.get(0)); borderStyleNames.forEach((borderStyleName => { width += parseFloat(computedStyle[borderStyleName]) || 0 })) })); return width } const PivotGrid = exports.PivotGrid = _ui2.default.inherit({ _getDefaultOptions() { return (0, _extend.extend)(this.callBase(), { scrolling: { timeout: 300, renderingThreshold: 150, minTimeout: 10, mode: "standard", useNative: "auto", removeInvisiblePages: true, virtualRowHeight: 50, virtualColumnWidth: 100, loadTwoPagesOnStart: true }, encodeHtml: true, dataSource: null, activeStateEnabled: false, fieldChooser: { minWidth: 250, minHeight: 250, enabled: true, allowSearch: false, searchTimeout: 500, layout: 0, title: _message.default.format("dxPivotGrid-fieldChooserTitle"), width: 600, height: 600, applyChangesMode: "instantly" }, onContextMenuPreparing: null, allowSorting: false, allowSortingBySummary: false, allowFiltering: false, allowExpandAll: false, wordWrapEnabled: true, fieldPanel: { showColumnFields: true, showFilterFields: true, showDataFields: true, showRowFields: true, allowFieldDragging: true, visible: false, texts: { columnFieldArea: _message.default.format("dxPivotGrid-columnFieldArea"), rowFieldArea: _message.default.format("dxPivotGrid-rowFieldArea"), filterFieldArea: _message.default.format("dxPivotGrid-filterFieldArea"), dataFieldArea: _message.default.format("dxPivotGrid-dataFieldArea") } }, dataFieldArea: "column", export: { enabled: false, fileName: "PivotGrid" }, showRowTotals: true, showRowGrandTotals: true, showColumnTotals: true, showColumnGrandTotals: true, hideEmptySummaryCells: true, showTotalsPrior: "none", rowHeaderLayout: "standard", loadPanel: { enabled: true, text: _message.default.format("Loading"), width: 200, height: 70, showIndicator: true, indicatorSrc: "", showPane: true }, texts: { grandTotal: _message.default.format("dxPivotGrid-grandTotal"), total: _message.default.getFormatter("dxPivotGrid-total"), noData: _message.default.format("dxDataGrid-noDataText"), showFieldChooser: _message.default.format("dxPivotGrid-showFieldChooser"), expandAll: _message.default.format("dxPivotGrid-expandAll"), collapseAll: _message.default.format("dxPivotGrid-collapseAll"), sortColumnBySummary: _message.default.getFormatter("dxPivotGrid-sortColumnBySummary"), sortRowBySummary: _message.default.getFormatter("dxPivotGrid-sortRowBySummary"), removeAllSorting: _message.default.format("dxPivotGrid-removeAllSorting"), exportToExcel: _message.default.format("dxDataGrid-exportToExcel"), dataNotAvailable: _message.default.format("dxPivotGrid-dataNotAvailable") }, onCellClick: null, onCellPrepared: null, showBorders: false, stateStoring: { enabled: false, storageKey: null, type: "localStorage", customLoad: null, customSave: null, savingTimeout: 2e3 }, onExpandValueChanging: null, renderCellCountLimit: 2e4, onExporting: null, headerFilter: { width: 252, height: 325, allowSelectAll: true, showRelevantValues: false, search: { enabled: false, timeout: 500, editorOptions: {}, mode: "contains" }, texts: { emptyValue: _message.default.format("dxDataGrid-headerFilterEmptyValue"), ok: _message.default.format("dxDataGrid-headerFilterOK"), cancel: _message.default.format("dxDataGrid-headerFilterCancel") } } }) }, _updateCalculatedOptions(fields) { const that = this; (0, _iterator.each)(fields, ((_, field) => { (0, _iterator.each)(FIELD_CALCULATED_OPTIONS, ((_, optionName) => { const isCalculated = field._initProperties && optionName in field._initProperties && void 0 === field._initProperties[optionName]; const needUpdate = void 0 === field[optionName] || isCalculated; if (needUpdate) { (0, _m_widget_utils.setFieldProperty)(field, optionName, that.option(optionName)) } })) })) }, _getDataControllerOptions() { const that = this; return { component: that, dataSource: that.option("dataSource"), texts: that.option("texts"), showRowTotals: that.option("showRowTotals"), showRowGrandTotals: that.option("showRowGrandTotals"), showColumnTotals: that.option("showColumnTotals"), showTotalsPrior: that.option("showTotalsPrior"), showColumnGrandTotals: that.option("showColumnGrandTotals"), dataFieldArea: that.option("dataFieldArea"), rowHeaderLayout: that.option("rowHeaderLayout"), hideEmptySummaryCells: that.option("hideEmptySummaryCells"), onFieldsPrepared(fields) { that._updateCalculatedOptions(fields) } } }, _initDataController() { const that = this; that._dataController && that._dataController.dispose(); that._dataController = new _m_data_controller.default.DataController(that._getDataControllerOptions()); if ((0, _window.hasWindow)()) { that._dataController.changed.add((() => { that._render() })) } that._dataController.scrollChanged.add((options => { that._scrollLeft = options.left; that._scrollTop = options.top })); that._dataController.loadingChanged.add((() => { that._updateLoading() })); that._dataController.progressChanged.add(that._updateLoading.bind(that)); that._dataController.dataSourceChanged.add((() => { that._trigger("onChanged") })); const expandValueChanging = that.option("onExpandValueChanging"); if (expandValueChanging) { that._dataController.expandValueChanging.add((e => { expandValueChanging(e) })) } }, _init() { this.callBase(); this._initDataController(); _m_utils.default.logHeaderFilterDeprecatedWarningIfNeed(this); this._scrollLeft = this._scrollTop = null; this._initActions() }, _initActions() { this._actions = { onChanged: this._createActionByOption("onChanged"), onContextMenuPreparing: this._createActionByOption("onContextMenuPreparing"), onCellClick: this._createActionByOption("onCellClick"), onExporting: this._createActionByOption("onExporting"), onCellPrepared: this._createActionByOption("onCellPrepared") } }, _trigger(eventName, eventArg) { this._actions[eventName](eventArg) }, _optionChanged(args) { const that = this; if (FIELD_CALCULATED_OPTIONS.includes(args.name)) { const fields = this.getDataSource().fields(); this._updateCalculatedOptions(fields) } switch (args.name) { case "dataSource": case "allowSorting": case "allowFiltering": case "allowExpandAll": case "allowSortingBySummary": case "scrolling": case "stateStoring": that._initDataController(); that._fieldChooserPopup.hide(); that._renderFieldChooser(); that._invalidate(); break; case "texts": case "showTotalsPrior": case "showRowTotals": case "showRowGrandTotals": case "showColumnTotals": case "showColumnGrandTotals": case "hideEmptySummaryCells": case "dataFieldArea": that._dataController.updateViewOptions(that._getDataControllerOptions()); break; case "useNativeScrolling": case "encodeHtml": case "renderCellCountLimit": case "onExpandValueChanging": break; case "rtlEnabled": that.callBase(args); that._renderFieldChooser(); that._renderContextMenu(); (0, _window.hasWindow)() && that._renderLoadPanel(that._dataArea.groupElement(), that.$element()); that._invalidate(); break; case "export": that._renderDescriptionArea(); break; case "onCellClick": case "onContextMenuPreparing": case "onExporting": case "onExported": case "onFileSaving": case "onCellPrepared": that._actions[args.name] = that._createActionByOption(args.name); break; case "fieldChooser": that._renderFieldChooser(); that._renderDescriptionArea(); break; case "loadPanel": if ((0, _window.hasWindow)()) { if ("loadPanel.enabled" === args.fullName) { clearTimeout(this._hideLoadingTimeoutID); that._renderLoadPanel(that._dataArea.groupElement(), that.$element()) } else { that._renderLoadPanel(that._dataArea.groupElement(), that.$element()); that._invalidate() } } break; case "fieldPanel": that._renderDescriptionArea(); that._invalidate(); break; case "headerFilter": that._renderFieldChooser(); that._invalidate(); break; case "showBorders": that._tableElement().toggleClass("dx-pivotgrid-border", !!args.value); that.updateDimensions(); break; case "wordWrapEnabled": that._tableElement().toggleClass("dx-word-wrap", !!args.value); that.updateDimensions(); break; case "rowHeaderLayout": that._tableElement().find(".dx-area-row-cell").toggleClass("dx-area-tree-view", "tree" === args.value); that._dataController.updateViewOptions(that._getDataControllerOptions()); break; case "height": case "width": that._hasHeight = null; that.callBase(args); that.resize(); break; default: that.callBase(args) } }, _updateScrollPosition(columnsArea, rowsArea, dataArea) { let force = arguments.length > 3 && void 0 !== arguments[3] ? arguments[3] : false; const that = this; let scrollTop; let scrollLeft; const scrolled = that._scrollTop || that._scrollLeft; if (that._scrollUpdating) { return } that._scrollUpdating = true; if (rowsArea && !rowsArea.hasScroll() && that._hasHeight) { that._scrollTop = null } if (columnsArea && !columnsArea.hasScroll()) { that._scrollLeft = null } if (null !== that._scrollTop || null !== that._scrollLeft || scrolled || that.option("rtlEnabled")) { scrollTop = that._scrollTop || 0; scrollLeft = that._scrollLeft || 0; dataArea.scrollTo({ left: scrollLeft, top: scrollTop }, force); columnsArea.scrollTo({ left: scrollLeft }, force); rowsArea.scrollTo({ top: scrollTop }, force); that._dataController.updateWindowScrollPosition(that._scrollTop) } that._scrollUpdating = false }, _subscribeToEvents(columnsArea, rowsArea, dataArea) { const that = this; (0, _iterator.each)([columnsArea, rowsArea, dataArea], ((_, area) => { ! function(area, handler) { unsubscribeScrollEvents(area); area.on("scroll", handler).on("stop", handler) }(area, (e => function(e, area) { const { scrollOffset: scrollOffset } = e; const scrollable = area._getScrollable(); const leftOffset = "vertical" !== scrollable.option("direction") ? scrollOffset.left : that._scrollLeft; const topOffset = "horizontal" !== scrollable.option("direction") && that._hasHeight ? scrollOffset.top : that._scrollTop; if ((that._scrollLeft || 0) !== (leftOffset || 0) || (that._scrollTop || 0) !== (topOffset || 0)) { that._scrollLeft = leftOffset; that._scrollTop = topOffset; that._updateScrollPosition(columnsArea, rowsArea, dataArea); if ("virtual" === that.option("scrolling.mode")) { that._dataController.setViewportPosition(that._scrollLeft, that._scrollTop) } } }(e, area))) })); !that._hasHeight && that._dataController.subscribeToWindowScrollEvents(dataArea.groupElement()) }, _clean: _common.noop, _needDelayResizing(cellsInfo) { const cellsCount = cellsInfo.length * (cellsInfo.length ? cellsInfo[0].length : 0); return cellsCount > this.option("renderCellCountLimit") }, _renderFieldChooser() { const that = this; const container = that._pivotGridContainer; const fieldChooserOptions = that.option("fieldChooser") || {}; const toolbarItems = "onDemand" === fieldChooserOptions.applyChangesMode ? [{ toolbar: "bottom", location: "after", widget: "dxButton", options: { text: _message.default.format("OK"), onClick() { that._fieldChooserPopup.$content().dxPivotGridFieldChooser("applyChanges"); that._fieldChooserPopup.hide() } } }, { toolbar: "bottom", location: "after", widget: "dxButton", options: { text: _message.default.format("Cancel"), onClick() { that._fieldChooserPopup.hide() } } }] : []; const fieldChooserComponentOptions = { layout: fieldChooserOptions.layout, texts: fieldChooserOptions.texts || {}, dataSource: that.getDataSource(), allowSearch: fieldChooserOptions.allowSearch, searchTimeout: fieldChooserOptions.searchTimeout, width: void 0, height: void 0, headerFilter: that.option("headerFilter"), encodeHtml: that.option("fieldChooser.encodeHtml") ?? that.option("encodeHtml"), applyChangesMode: fieldChooserOptions.applyChangesMode, onContextMenuPreparing(e) { that._trigger("onContextMenuPreparing", e) } }; const popupOptions = { shading: false, title: fieldChooserOptions.title, width: fieldChooserOptions.width, height: fieldChooserOptions.height, showCloseButton: true, resizeEnabled: true, minWidth: fieldChooserOptions.minWidth, minHeight: fieldChooserOptions.minHeight, toolbarItems: toolbarItems, onResize(e) { e.component.$content().dxPivotGridFieldChooser("updateDimensions") }, onShown(e) { that._createComponent(e.component.content(), _m_field_chooser.FieldChooser, fieldChooserComponentOptions) }, onHidden(e) { const fieldChooser = e.component.$content().dxPivotGridFieldChooser("instance"); fieldChooser.resetTreeView(); fieldChooser.cancelChanges() } }; if (that._fieldChooserPopup) { that._fieldChooserPopup.option(popupOptions); that._fieldChooserPopup.$content().dxPivotGridFieldChooser(fieldChooserComponentOptions) } else { that._fieldChooserPopup = that._createComponent((0, _renderer.default)(DIV).addClass("dx-fieldchooser-popup").appendTo(container), _ui.default, popupOptions) } }, _renderContextMenu() { const that = this; const $container = that._pivotGridContainer; if (that._contextMenu) { that._contextMenu.$element().remove() } that._contextMenu = that._createComponent((0, _renderer.default)(DIV).appendTo($container), _context_menu.default, { onPositioning(actionArgs) { const { event: event } = actionArgs; actionArgs.cancel = true; if (!event) { return } const targetElement = event.target.cellIndex >= 0 ? event.target : (0, _renderer.default)(event.target).closest("td").get(0); if (!targetElement) { return } const args = that._createEventArgs(targetElement, event); const items = that._getContextMenuItems(args); if (items) { actionArgs.component.option("items", items); actionArgs.cancel = false } }, onItemClick(params) { params.itemData.onItemClick && params.itemData.onItemClick(params) }, cssClass: "dx-pivotgrid", target: that.$element() }) }, _getContextMenuItems(e) { const that = this; let items = []; const texts = that.option("texts"); if ("row" === e.area || "column" === e.area) { const areaFields = e[`${e.area}Fields`]; const oppositeAreaFields = e["column" === e.area ? "rowFields" : "columnFields"]; const field = e.cell.path && areaFields[e.cell.path.length - 1]; const dataSource = that.getDataSource(); if (field && field.allowExpandAll && e.cell.path.length < e[`${e.area}Fields`].length && !dataSource.paginate()) { items.push({ beginGroup: true, icon: "none", text: texts.expandAll, onItemClick() { dataSource.expandAll(field.index) } }); items.push({ text: texts.collapseAll, icon: "none", onItemClick() { dataSource.collapseAll(field.index) } }) } if (e.cell.isLast && !dataSource.paginate()) { let sortingBySummaryItemCount = 0; (0, _iterator.each)(oppositeAreaFields, ((_, field) => { if (!field.allowSortingBySummary) { return }(0, _iterator.each)(e.dataFields, ((dataIndex, dataField) => { if ((0, _type.isDefined)(e.cell.dataIndex) && e.cell.dataIndex !== dataIndex) { return } const showDataFieldCaption = !(0, _type.isDefined)(e.cell.dataIndex) && e.dataFields.length > 1; const textFormat = "column" === e.area ? texts.sortColumnBySummary : texts.sortRowBySummary; const checked = (0, _m_widget_utils.findField)(e.dataFields, field.sortBySummaryField) === dataIndex && (e.cell.path || []).join("/") === (field.sortBySummaryPath || []).join("/"); const text = (0, _string.format)(textFormat, showDataFieldCaption ? `${field.caption} - ${dataField.caption}` : field.caption); items.push({ beginGroup: 0 === sortingBySummaryItemCount, icon: checked ? "desc" === field.sortOrder ? "sortdowntext" : "sortuptext" : "none", text: text, onItemClick() { dataSource.field(field.index, { sortBySummaryField: dataField.name || dataField.caption || dataField.dataField, sortBySummaryPath: e.cell.path, sortOrder: "desc" === field.sortOrder ? "asc" : "desc" }); dataSource.load() } }); sortingBySummaryItemCount += 1 })) })); (0, _iterator.each)(oppositeAreaFields, ((_, field) => { if (!field.allowSortingBySummary || !(0, _type.isDefined)(field.sortBySummaryField)) { return } items.push({ beginGroup: 0 === sortingBySummaryItemCount, icon: "none", text: texts.removeAllSorting, onItemClick() { (0, _iterator.each)(oppositeAreaFields, ((_, field) => { dataSource.field(field.index, { sortBySummaryField: void 0, sortBySummaryPath: void 0, sortOrder: void 0 }) })); dataSource.load() } }); return false })) } } if (that.option("fieldChooser.enabled")) { items.push({ beginGroup: true, icon: "columnchooser", text: texts.showFieldChooser, onItemClick() { that._fieldChooserPopup.show() } }) } if (that.option("export.enabled")) { items.push({ beginGroup: true, icon: "xlsxfile", text: texts.exportToExcel, onItemClick() { that.exportTo() } }) } e.items = items; that._trigger("onContextMenuPreparing", e); items = e.items; if (items && items.length) { return items } return }, _createEventArgs(targetElement, dxEvent) { const that = this; const dataSource = that.getDataSource(); const args = { rowFields: dataSource.getAreaFields("row"), columnFields: dataSource.getAreaFields("column"), dataFields: dataSource.getAreaFields("data"), event: dxEvent }; if ($targetElement = (0, _renderer.default)(targetElement), $targetElement.closest(".dx-area-fields").length || $targetElement.find(".dx-area-fields").length) { return (0, _extend.extend)(that._createFieldArgs(targetElement), args) } var $targetElement; return (0, _extend.extend)(that._createCellArgs(targetElement), args) }, _createFieldArgs(targetElement) { const field = (0, _renderer.default)(targetElement).children().data("field"); const args = { field: field }; return (0, _type.isDefined)(field) ? args : {} }, _createCellArgs(cellElement) { const $cellElement = (0, _renderer.default)(cellElement); const columnIndex = cellElement.cellIndex; const { rowIndex: rowIndex } = cellElement.parentElement; const $table = $cellElement.closest("table"); const data = $table.data("data"); const cell = data && data[rowIndex] && data[rowIndex][columnIndex]; const args = { area: $table.data("area"), rowIndex: rowIndex, columnIndex: columnIndex, cellElement: (0, _element.getPublicElement)($cellElement), cell: cell }; return args }, _handleCellClick(e) { const that = this; const args = that._createEventArgs(e.currentTarget, e); const { cell: cell } = args; if (!cell || !args.area && (args.rowIndex || args.columnIndex)) { return } that._trigger("onCellClick", args); cell && !args.cancel && (0, _type.isDefined)(cell.expanded) && setTimeout((() => { that._dataController[cell.expanded ? "collapseHeaderItem" : "expandHeaderItem"](args.area, cell.path) })) }, _getNoDataText() { return this.option("texts.noData") }, _renderNoDataText: _m_utils.default.renderNoDataText, _renderLoadPanel: _m_utils.default.renderLoadPanel, _updateLoading(progress) { const that = this; const isLoading = that._dataController.isLoading(); if (!that._loadPanel) { return } const loadPanelVisible = that._loadPanel.option("visible"); if (!loadPanelVisible) { that._startLoadingTime = new Date } if (isLoading) { if (progress) { if (new Date - that._startLoadingTime >= 1e3) { that._loadPanel.option("message", `${Math.floor(100*progress)}%`) } } else { that._loadPanel.option("message", that.option("loadPanel.text")) } } clearTimeout(that._hideLoadingTimeoutID); if (loadPanelVisible && !isLoading) { that._hideLoadingTimeoutID = setTimeout((() => { that._loadPanel.option("visible", false); that.$element().removeClass("dx-overflow-hidden") })) } else { const visibilityOptions = { visible: isLoading }; if (isLoading) { visibilityOptions.position = _m_utils.default.calculateLoadPanelPosition(that._dataArea.groupElement()) } that._loadPanel.option(visibilityOptions); that.$element().toggleClass("dx-overflow-hidden", !isLoading) } }, _renderDescriptionArea() { const $element = this.$element(); const $descriptionCell = $element.find(".dx-area-description-cell"); const $toolbarContainer = (0, _renderer.default)(DIV).addClass("dx-pivotgrid-toolbar"); const fieldPanel = this.option("fieldPanel"); const $filterHeader = $element.find(".dx-filter-header"); const $columnHeader = $element.find(".dx-column-header"); let $targetContainer; if (fieldPanel.visible && fieldPanel.showFilterFields) { $targetContainer = $filterHeader } else if (fieldPanel.visible && (fieldPanel.showDataFields || fieldPanel.showColumnFields)) { $targetContainer = $columnHeader } else { $targetContainer = $descriptionCell } $columnHeader.toggleClass("dx-bottom-border", !!(fieldPanel.visible && (fieldPanel.showDataFields || fieldPanel.showColumnFields))); $filterHeader.toggleClass("dx-bottom-border", !!(fieldPanel.visible && fieldPanel.showFilterFields)); $descriptionCell.toggleClass("dx-pivotgrid-background", fieldPanel.visible && (fieldPanel.showDataFields || fieldPanel.showColumnFields || fieldPanel.showRowFields)); this.$element().find(".dx-pivotgrid-toolbar").remove(); $toolbarContainer.prependTo($targetContainer); const stylingMode = (0, _themes.isFluent)((0, _themes.current)()) ? "text" : "contained"; if (this.option("fieldChooser.enabled")) { const $buttonElement = (0, _renderer.default)(DIV).appendTo($toolbarContainer).addClass("dx-pivotgrid-field-chooser-button"); const buttonOptions = { icon: "columnchooser", hint: this.option("texts.showFieldChooser"), stylingMode: stylingMode, onClick: () => { this.getFieldChooserPopup().show() } }; this._createComponent($buttonElement, _button.default, buttonOptions) } if (this.option("export.enabled")) { const $buttonElement = (0, _renderer.default)(DIV).appendTo($toolbarContainer).addClass("dx-pivotgrid-export-button"); const buttonOptions = { icon: "xlsxfile", hint: this.option("texts.exportToExcel"), stylingMode: stylingMode, onClick: () => { this.exportTo() } }; this._createComponent($buttonElement, _button.default, buttonOptions) } }, _detectHasContainerHeight() { const that = this; const element = that.$element(); if ((0, _type.isDefined)(that._hasHeight)) { const height = that.option("height") || that.$element().get(0).style.height; if (height && that._hasHeight ^ "auto" !== height) { that._hasHeight = null } } if ((0, _type.isDefined)(that._hasHeight) || element.is(":hidden")) { return } that._pivotGridContainer.addClass("dx-hidden"); const testElement = (0, _renderer.default)(DIV); (0, _size.setHeight)(testElement, 66666); element.append(testElement); that._hasHeight = 66666 !== (0, _size.getHeight)(element); that._pivotGridContainer.removeClass("dx-hidden"); testElement.remove() }, _renderHeaders(rowHeaderContainer, columnHeaderContainer, filterHeaderContainer, dataHeaderContainer) { const dataSource = this.getDataSource(); this._rowFields = this._rowFields || new _m_fields_area.FieldsArea(this, "row"); this._rowFields.render(rowHeaderContainer, dataSource.getAreaFields("row")); this._columnFields = this._columnFields || new _m_fields_area.FieldsArea(this, "column"); this._columnFields.render(columnHeaderContainer, dataSource.getAreaFields("column")); this._filterFields = this._filterFields || new _m_fields_area.FieldsArea(this, "filter"); this._filterFields.render(filterHeaderContainer, dataSource.getAreaFields("filter")); this._dataFields = this._dataFields || new _m_fields_area.FieldsArea(this, "data"); this._dataFields.render(dataHeaderContainer, dataSource.getAreaFields("data")); this.$element().dxPivotGridFieldChooserBase("instance").renderSortable() }, _createTableElement() { const $table = (0, _renderer.default)("").css({ width: "100%" }).toggleClass("dx-pivotgrid-border", !!this.option("showBorders")).toggleClass("dx-word-wrap", !!this.option("wordWrapEnabled")); _events_engine.default.on($table, (0, _index.addNamespace)(_click.name, "dxPivotGrid"), "td", this._handleCellClick.bind(this)); return $table }, _renderDataArea(dataAreaElement) { const dataArea = this._dataArea || new _m_data_area.default.DataArea(this); this._dataArea = dataArea; dataArea.render(dataAreaElement, this._dataController.getCellsInfo()); return dataArea }, _renderRowsArea(rowsAreaElement) { const rowsArea = this._rowsArea || new _m_headers_area.default.VerticalHeadersArea(this); this._rowsArea = rowsArea; rowsArea.render(rowsAreaElement, this._dataController.getRowsInfo()); return rowsArea }, _renderColumnsArea(columnsAreaElement) { const columnsArea = this._columnsArea || new _m_headers_area.default.HorizontalHeadersArea(this); this._columnsArea = columnsArea; columnsArea.render(columnsAreaElement, this._dataController.getColumnsInfo()); return columnsArea }, _initMarkup() { this.callBase.apply(this, arguments); this.$element().addClass("dx-pivotgrid") }, _renderContentImpl() { const that = this; let columnsAreaElement; let rowsAreaElement; let dataAreaElement; let tableElement; const isFirstDrawing = !that._pivotGridContainer; let rowHeaderContainer; let columnHeaderContainer; let filterHeaderContainer; let dataHeaderContainer; tableElement = !isFirstDrawing && that._tableElement(); if (!tableElement) { that.$element().addClass("dx-row-lines").addClass("dx-pivotgrid-fields-container"); that._pivotGridContainer = (0, _renderer.default)(DIV).addClass("dx-pivotgrid-container"); that._renderFieldChooser(); that._renderContextMenu(); columnsAreaElement = (0, _renderer.default)(TD).addClass("dx-area-column-cell"); rowsAreaElement = (0, _renderer.default)(TD).addClass("dx-area-row-cell"); dataAreaElement = (0, _renderer.default)(TD).addClass("dx-area-data-cell"); tableElement = that._createTableElement(); dataHeaderContainer = (0, _renderer.default)(TD).addClass("dx-data-header"); filterHeaderContainer = (0, _renderer.default)("").addClass(cssClasses.groupRowClass).append(cells.map(cellIterator))) } const maxCellCount = rows[groupCount - 1].find("th").length; for (let j = 0; j < groupCount; j++) { const $cell = rows[j].find("th"); let colspan = maxCellCount / $cell.length; if (!groupByDate) { colspan *= cellCount } if (colspan > 1 && 1 === repeatByDate || groupByDate && groupCount > 1) { $cell.attr("colSpan", colspan) } } return { elements: rows, cellTemplates: cellTemplates } } _makeGroupedRowCells(group, repeatCount, cssClasses, cellTemplate, repeatByDate) { repeatByDate = repeatByDate || 1; repeatCount *= repeatByDate; const cells = []; const { items: items } = group; const itemCount = items.length; for (let i = 0; i < repeatCount; i++) { for (let j = 0; j < itemCount; j++) { let $container = (0, _renderer.default)("
"); const cell = {}; if (cellTemplate && cellTemplate.render) { const templateOptions = { model: items[j], container: (0, _element.getPublicElement)($container), index: i * itemCount + j }; if (group.data) { templateOptions.model.data = group.data[j] } cell.template = cellTemplate.render.bind(cellTemplate, templateOptions) } else { $container.text(items[j].text); $container = (0, _renderer.default)("
").append($container) } $container.addClass(cssClasses.groupHeaderContentClass); let cssClass; if ((0, _type.isFunction)(cssClasses.groupHeaderClass)) { cssClass = cssClasses.groupHeaderClass(j) } else { cssClass = cssClasses.groupHeaderClass } cell.element = (0, _renderer.default)("
").attr("colspan", "2").addClass("dx-filter-header"); columnHeaderContainer = (0, _renderer.default)(TD).addClass("dx-column-header"); rowHeaderContainer = (0, _renderer.default)(TD).addClass("dx-area-description-cell"); (0, _renderer.default)(TR).append(filterHeaderContainer).appendTo(tableElement); (0, _renderer.default)(TR).append(dataHeaderContainer).append(columnHeaderContainer).appendTo(tableElement); (0, _renderer.default)(TR).append(rowHeaderContainer).append(columnsAreaElement).appendTo(tableElement); (0, _renderer.default)(TR).addClass("dx-bottom-row").append(rowsAreaElement).append(dataAreaElement).appendTo(tableElement); that._pivotGridContainer.append(tableElement); that.$element().append(that._pivotGridContainer); if ("tree" === that.option("rowHeaderLayout")) { rowsAreaElement.addClass("dx-area-tree-view") } } that.$element().addClass("dx-overflow-hidden"); that._createComponent(that.$element(), _m_field_chooser_base.FieldChooserBase, { dataSource: that.getDataSource(), encodeHtml: that.option("encodeHtml"), allowFieldDragging: that.option("fieldPanel.allowFieldDragging"), headerFilter: that.option("headerFilter"), visible: that.option("visible"), remoteSort: "virtual" === that.option("scrolling.mode") }); const dataArea = that._renderDataArea(dataAreaElement); const rowsArea = that._renderRowsArea(rowsAreaElement); const columnsArea = that._renderColumnsArea(columnsAreaElement); dataArea.tableElement().prepend(columnsArea.headElement()); if (isFirstDrawing) { that._renderLoadPanel(dataArea.groupElement().parent(), that.$element()); that._renderDescriptionArea(); rowsArea.renderScrollable(); columnsArea.renderScrollable(); dataArea.renderScrollable() } [dataArea, rowsArea, columnsArea].forEach((area => { unsubscribeScrollEvents(area) })); that._renderHeaders(rowHeaderContainer, columnHeaderContainer, filterHeaderContainer, dataHeaderContainer); that._update(isFirstDrawing) }, _update(isFirstDrawing) { const that = this; const updateHandler = function() { that.updateDimensions() }; if (that._needDelayResizing(that._dataArea.getData()) && isFirstDrawing) { setTimeout(updateHandler) } else { updateHandler() } }, _fireContentReadyAction() { if (!this._dataController.isLoading()) { this.callBase() } }, getScrollPath(area) { const that = this; if ("column" === area) { return that._columnsArea.getScrollPath(that._scrollLeft) } return that._rowsArea.getScrollPath(that._scrollTop) }, getDataSource() { return this._dataController.getDataSource() }, getFieldChooserPopup() { return this._fieldChooserPopup }, hasScroll(area) { return "column" === area ? this._columnsArea.hasScroll() : this._rowsArea.hasScroll() }, _dimensionChanged() { this.updateDimensions() }, _visibilityChanged(visible) { if (visible) { this.updateDimensions() } }, _dispose() { const that = this; clearTimeout(that._hideLoadingTimeoutID); that.callBase.apply(that, arguments); if (that._dataController) { that._dataController.dispose() } }, _tableElement() { return this.$element().find("table").first() }, addWidgetPrefix: className => `dx-pivotgrid-${className}`, resize() { this.updateDimensions() }, isReady() { return this.callBase() && !this._dataController.isLoading() }, updateDimensions() { const that = this; let groupWidth; const tableElement = that._tableElement(); let bordersWidth; let totalWidth = 0; let totalHeight = 0; let rowsAreaWidth = 0; let hasRowsScroll; let hasColumnsScroll; const dataAreaCell = tableElement.find(".dx-area-data-cell"); const rowAreaCell = tableElement.find(".dx-area-row-cell"); const columnAreaCell = tableElement.find(".dx-area-column-cell"); const descriptionCell = tableElement.find(".dx-area-description-cell"); const filterHeaderCell = tableElement.find(".dx-filter-header"); const columnHeaderCell = tableElement.find(".dx-column-header"); const rowFieldsHeader = that._rowFields; const d = new _deferred.Deferred; if (!(0, _window.hasWindow)()) { return } const needSynchronizeFieldPanel = rowFieldsHeader.isVisible() && "tree" !== that.option("rowHeaderLayout"); that._detectHasContainerHeight(); if (!that._dataArea.headElement().length) { that._dataArea.tableElement().prepend(that._columnsArea.headElement()) } if (needSynchronizeFieldPanel) { that._rowsArea.updateColspans(rowFieldsHeader.getColumnsCount()); that._rowsArea.tableElement().prepend(rowFieldsHeader.headElement()) } tableElement.addClass("dx-incompressible-fields"); that._dataArea.reset(); that._rowsArea.reset(); that._columnsArea.reset(); rowFieldsHeader.reset(); const calculateHasScroll = (areaSize, totalSize) => totalSize - areaSize >= 1; const calculateGroupHeight = (dataAreaHeight, totalHeight, hasRowsScroll, hasColumnsScroll, scrollBarWidth) => hasRowsScroll ? dataAreaHeight : totalHeight + (hasColumnsScroll ? scrollBarWidth : 0); (0, _common.deferUpdate)((() => { const rowHeights = that._rowsArea.getRowsHeight(); const descriptionCellHeight = (0, _size.getOuterHeight)(descriptionCell[0], true) + (needSynchronizeFieldPanel ? rowHeights[0] : 0); let filterAreaHeight = 0; let dataAreaHeight = 0; if (that._hasHeight) { filterAreaHeight = (0, _size.getHeight)(filterHeaderCell); const $dataHeader = tableElement.find(".dx-data-header"); const dataHeaderHeight = (0, _size.getHeight)($dataHeader); bordersWidth = getCommonBorderWidth([columnAreaCell, dataAreaCell, tableElement, columnHeaderCell, filterHeaderCell], "height"); dataAreaHeight = (0, _size.getHeight)(that.$element()) - filterAreaHeight - dataHeaderHeight - (Math.max((0, _size.getHeight)(that._dataArea.headElement()), (0, _size.getHeight)(columnAreaCell), descriptionCellHeight) + bordersWidth) } const scrollBarWidth = that._dataArea.getScrollbarWidth(); const correctDataTableHeight = (0, _size.getHeight)(that._dataArea.tableElement()) - (0, _size.getHeight)(that._dataArea.headElement()); const hasVerticalScrollbar = calculateHasScroll(dataAreaHeight, correctDataTableHeight); that._dataArea.tableElement().css({ width: that._hasHeight && hasVerticalScrollbar && scrollBarWidth ? `calc(100% - ${scrollBarWidth}px)` : "100%" }); const resultWidths = that._dataArea.getColumnsWidth(); const rowsAreaHeights = needSynchronizeFieldPanel ? rowHeights.slice(1) : rowHeights; const dataAreaHeights = that._dataArea.getRowsHeight(); const columnsAreaRowCount = that._dataController.getColumnsInfo().length; const resultHeights = (0, _m_widget_utils.mergeArraysByMaxValue)(rowsAreaHeights, dataAreaHeights.slice(columnsAreaRowCount)); const columnsAreaRowHeights = dataAreaHeights.slice(0, columnsAreaRowCount); const columnsAreaHeight = getArraySum(columnsAreaRowHeights); const rowsAreaColumnWidths = that._rowsArea.getColumnsWidth(); totalWidth = (0, _size.getWidth)(that._dataArea.tableElement()); totalHeight = getArraySum(resultHeights); if (!totalWidth || !totalHeight) { d.resolve(); return } rowsAreaWidth = getArraySum(rowsAreaColumnWidths); const elementWidth = (0, _size.getWidth)(that.$element()); bordersWidth = getCommonBorderWidth([rowAreaCell, dataAreaCell, tableElement], "width"); groupWidth = elementWidth - rowsAreaWidth - bordersWidth; groupWidth = groupWidth > 0 ? groupWidth : totalWidth; const diff = totalWidth - groupWidth; const needAdjustWidthOnZoom = diff >= 0 && diff <= 2; if (needAdjustWidthOnZoom) { adjustSizeArray(resultWidths, diff); totalWidth = groupWidth } hasRowsScroll = that._hasHeight && calculateHasScroll(dataAreaHeight, totalHeight); hasColumnsScroll = calculateHasScroll(groupWidth, totalWidth); const groupHeight = calculateGroupHeight(dataAreaHeight, totalHeight, hasRowsScroll, hasColumnsScroll, scrollBarWidth); (0, _common.deferRender)((() => { that._columnsArea.tableElement().append(that._dataArea.headElement()); rowFieldsHeader.tableElement().append(that._rowsArea.headElement()); if (descriptionCellHeight > columnsAreaHeight) { adjustSizeArray(columnsAreaRowHeights, columnsAreaHeight - descriptionCellHeight); that._columnsArea.setRowsHeight(columnsAreaRowHeights) } tableElement.removeClass("dx-incompressible-fields"); columnHeaderCell.children().css("maxWidth", groupWidth); that._columnsArea.setGroupWidth(groupWidth); that._columnsArea.processScrollBarSpacing(hasRowsScroll ? scrollBarWidth : 0); that._columnsArea.setColumnsWidth(resultWidths); that._rowsArea.setGroupHeight(that._hasHeight ? groupHeight : "auto"); that._rowsArea.processScrollBarSpacing(hasColumnsScroll ? scrollBarWidth : 0); that._rowsArea.setColumnsWidth(rowsAreaColumnWidths); that._rowsArea.setRowsHeight(resultHeights); that._dataArea.setColumnsWidth(resultWidths); that._dataArea.setRowsHeight(resultHeights); that._dataArea.setGroupWidth(groupWidth); that._dataArea.setGroupHeight(that._hasHeight ? groupHeight : "auto"); needSynchronizeFieldPanel && rowFieldsHeader.setColumnsWidth(rowsAreaColumnWidths); dataAreaCell.toggleClass("dx-bottom-border", !hasRowsScroll); rowAreaCell.toggleClass("dx-bottom-border", !hasRowsScroll); if (!that._hasHeight && elementWidth !== (0, _size.getWidth)(that.$element())) { const diff = elementWidth - (0, _size.getWidth)(that.$element()); if (!hasColumnsScroll) { adjustSizeArray(resultWidths, diff); that._columnsArea.setColumnsWidth(resultWidths); that._dataArea.setColumnsWidth(resultWidths) } that._dataArea.setGroupWidth(groupWidth - diff); that._columnsArea.setGroupWidth(groupWidth - diff) } if (that._hasHeight && that._filterFields.isVisible() && (0, _size.getHeight)(filterHeaderCell) !== filterAreaHeight) { const diff = (0, _size.getHeight)(filterHeaderCell) - filterAreaHeight; if (diff > 0) { hasRowsScroll = calculateHasScroll(dataAreaHeight - diff, totalHeight); const groupHeight = calculateGroupHeight(dataAreaHeight - diff, totalHeight, hasRowsScroll, hasColumnsScroll, scrollBarWidth); that._dataArea.setGroupHeight(groupHeight); that._rowsArea.setGroupHeight(groupHeight) } } const scrollingOptions = that.option("scrolling"); if ("virtual" === scrollingOptions.mode) { that._setVirtualContentParams(scrollingOptions, resultWidths, resultHeights, groupWidth, groupHeight, that._hasHeight, rowsAreaWidth) } const updateScrollableResults = []; that._dataArea.updateScrollableOptions({ direction: that._dataArea.getScrollableDirection(hasColumnsScroll, hasRowsScroll), rtlEnabled: that.option("rtlEnabled") }); that._columnsArea.updateScrollableOptions({ rtlEnabled: that.option("rtlEnabled") }); (0, _iterator.each)([that._columnsArea, that._rowsArea, that._dataArea], ((_, area) => { updateScrollableResults.push(area && area.updateScrollable()) })); that._updateLoading(); that._renderNoDataText(dataAreaCell); _deferred.when.apply(_renderer.default, updateScrollableResults).done((() => { that._updateScrollPosition(that._columnsArea, that._rowsArea, that._dataArea, true); that._subscribeToEvents(that._columnsArea, that._rowsArea, that._dataArea); d.resolve() })) })) })); return d }, _setVirtualContentParams(scrollingOptions, resultWidths, resultHeights, groupWidth, groupHeight, hasHeight, rowsAreaWidth) { const virtualContentParams = this._dataController.calculateVirtualContentParams({ virtualRowHeight: scrollingOptions.virtualRowHeight, virtualColumnWidth: scrollingOptions.virtualColumnWidth, itemWidths: resultWidths, itemHeights: resultHeights, rowCount: resultHeights.length, columnCount: resultWidths.length, viewportWidth: groupWidth, viewportHeight: hasHeight ? groupHeight : (0, _size.getOuterHeight)(window) }); this._dataArea.setVirtualContentParams({ top: virtualContentParams.contentTop, left: virtualContentParams.contentLeft, width: virtualContentParams.width, height: virtualContentParams.height }); this._rowsArea.setVirtualContentParams({ top: virtualContentParams.contentTop, width: rowsAreaWidth, height: virtualContentParams.height }); this._columnsArea.setVirtualContentParams({ left: virtualContentParams.contentLeft, width: virtualContentParams.width, height: (0, _size.getHeight)(this._columnsArea.groupElement()) }) }, applyPartialDataSource(area, path, dataSource) { this._dataController.applyPartialDataSource(area, path, dataSource) } }).inherit(_m_export.ExportController).include(_m_chart_integration.ChartIntegrationMixin); (0, _component_registrator.default)("dxPivotGrid", PivotGrid); exports.default = { PivotGrid: PivotGrid } }, 12062: /*!*******************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/pivot_grid/m_widget_utils.js ***! \*******************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.calculateScrollbarWidth = void 0; exports.createPath = createPath; exports.default = void 0; exports.discoverObjectFields = discoverObjectFields; exports.findField = findField; exports.foreachDataLevel = foreachDataLevel; exports.foreachTreeAsync = exports.foreachTree = void 0; exports.formatValue = formatValue; exports.getCompareFunction = getCompareFunction; exports.getExpandedLevel = getExpandedLevel; exports.getFieldsDataType = getFieldsDataType; exports.getFiltersByPath = getFiltersByPath; exports.getScrollbarWidth = void 0; exports.mergeArraysByMaxValue = mergeArraysByMaxValue; exports.sendRequest = sendRequest; exports.setDefaultFieldValueFormatting = setDefaultFieldValueFormatting; exports.storeDrillDownMixin = exports.setFieldProperty = void 0; var _date = _interopRequireDefault(__webpack_require__( /*! ../../../common/core/localization/date */ 38662)); var _array_store = _interopRequireDefault(__webpack_require__( /*! ../../../common/data/array_store */ 80556)); var _data_source = __webpack_require__( /*! ../../../common/data/data_source/data_source */ 68216); var _dom_adapter = _interopRequireDefault(__webpack_require__( /*! ../../../core/dom_adapter */ 64960)); var _ajax = _interopRequireDefault(__webpack_require__( /*! ../../../core/utils/ajax */ 78670)); var _call_once = _interopRequireDefault(__webpack_require__( /*! ../../../core/utils/call_once */ 13630)); var _data = __webpack_require__( /*! ../../../core/utils/data */ 31e3); var _deferred = __webpack_require__( /*! ../../../core/utils/deferred */ 87739); var _extend = __webpack_require__( /*! ../../../core/utils/extend */ 52576); var _iterator = __webpack_require__( /*! ../../../core/utils/iterator */ 21274); var _type = __webpack_require__( /*! ../../../core/utils/type */ 11528); var _format_helper = _interopRequireDefault(__webpack_require__( /*! ../../../format_helper */ 2082)); var _const = __webpack_require__( /*! ./const */ 58537); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } const setFieldProperty = function(field, property, value, isInitialization) { const initProperties = field._initProperties = field._initProperties || {}; const initValue = isInitialization ? value : field[property]; const needInitProperty = !Object.prototype.hasOwnProperty.call(initProperties, property) || isInitialization; if (needInitProperty && "_initProperties" !== property) { initProperties[property] = initValue } field[property] = value }; exports.setFieldProperty = setFieldProperty; function sendRequest(options) { return _ajax.default.sendRequest(options) } let foreachTreeAsyncDate = new Date; function createForeachTreeFunc(isAsync) { const foreachTreeFunc = function(items, callback, parentAtFirst, members, index, isChildrenProcessing) { members = members || []; items = items || []; let i; let deferred; index = index || 0; function createForeachTreeAsyncHandler(deferred, i, isChildrenProcessing) { (0, _deferred.when)(foreachTreeFunc(items, callback, parentAtFirst, members, i, isChildrenProcessing)).done(deferred.resolve) } for (i = index; i < items.length; i += 1) { if (isAsync && i > index && i % 1e4 === 0 && new Date - foreachTreeAsyncDate >= 300) { foreachTreeAsyncDate = new Date; deferred = new _deferred.Deferred; createForeachTreeAsyncHandler(deferred, i, false); return deferred } const item = items[i]; if (!isChildrenProcessing) { members.unshift(item); if (parentAtFirst && false === callback(members, i)) { return } if (item.children) { const childrenDeferred = foreachTreeFunc(item.children, callback, parentAtFirst, members); if (isAsync && childrenDeferred) { deferred = new _deferred.Deferred; childrenDeferred.done(createForeachTreeAsyncHandler(deferred, i, true)); return deferred } } } isChildrenProcessing = false; if (!parentAtFirst && false === callback(members, i)) { return } members.shift(); if (items[i] !== item) { i -= 1 } } return }; return foreachTreeFunc } const foreachTree = exports.foreachTree = createForeachTreeFunc(false); const foreachTreeAsync = exports.foreachTreeAsync = createForeachTreeFunc(true); function findField(fields, id) { if (fields && (0, _type.isDefined)(id)) { for (let i = 0; i < fields.length; i += 1) { const field = fields[i]; if (field.name === id || field.caption === id || field.dataField === id || field.index === id) { return i } } } return -1 } function formatValue(value, options) { const valueText = value === value && _format_helper.default.format(value, options.format); const formatObject = { value: value, valueText: valueText || "" }; return options.customizeText ? options.customizeText.call(options, formatObject) : formatObject.valueText } function getCompareFunction(valueSelector) { return function(a, b) { let result = 0; const valueA = valueSelector(a); const valueB = valueSelector(b); const aIsDefined = (0, _type.isDefined)(valueA); const bIsDefined = (0, _type.isDefined)(valueB); if (aIsDefined && bIsDefined) { if (valueA > valueB) { result = 1 } else if (valueA < valueB) { result = -1 } } if (aIsDefined && !bIsDefined) { result = 1 } if (!aIsDefined && bIsDefined) { result = -1 } return result } } function createPath(items) { const result = []; for (let i = items.length - 1; i >= 0; i -= 1) { result.push(items[i].key || items[i].value) } return result } function foreachDataLevel(data, callback, index, childrenField) { index = index || 0; childrenField = childrenField || "children"; if (data.length) { callback(data, index) } for (let i = 0; i < data.length; i += 1) { var _item$childrenField; const item = data[i]; if (null !== (_item$childrenField = item[childrenField]) && void 0 !== _item$childrenField && _item$childrenField.length) { foreachDataLevel(item[childrenField], callback, index + 1, childrenField) } } } function mergeArraysByMaxValue(values1, values2) { const result = []; for (let i = 0; i < values1.length; i += 1) { result.push(Math.max(values1[i] || 0, values2[i] || 0)) } return result } function getExpandedLevel(options, axisName) { const fields = options[axisName]; const expandedPaths = ("columns" === axisName ? options.columnExpandedPaths : options.rowExpandedPaths) || []; let expandedLevel = 0; if (options.headerName === axisName) { expandedLevel = options.path.length } else if (options.headerName && options.headerName !== axisName && options.oppositePath) { expandedLevel = options.oppositePath.length } else { (0, _iterator.each)(expandedPaths, ((_, path) => { expandedLevel = Math.max(expandedLevel, path.length) })) } while (fields[expandedLevel + 1] && fields[expandedLevel].expanded) { expandedLevel += 1 } return expandedLevel } function parseFields(dataSource, fieldsList, path, fieldsDataType) { const result = []; Object.keys(fieldsList || []).forEach((field => { if (field && field.startsWith("__")) { return } let dataIndex = 1; const currentPath = path.length ? `${path}.${field}` : field; let dataType = fieldsDataType[currentPath]; const getter = (0, _data.compileGetter)(currentPath); let value = fieldsList[field]; let items; while (!(0, _type.isDefined)(value) && dataSource[dataIndex]) { value = getter(dataSource[dataIndex]); dataIndex += 1 } if (!dataType && (0, _type.isDefined)(value)) { dataType = (0, _type.type)(value) } items = [{ dataField: currentPath, dataType: dataType, groupName: "date" === dataType ? field : void 0, groupInterval: void 0, displayFolder: path }]; if ("date" === dataType) { items = items.concat((item = items[0], (0, _iterator.map)(["year", "quarter", "month"], ((value, index) => (0, _extend.extend)({}, item, { groupInterval: value, groupIndex: index }))))) } else if ("object" === dataType) { items = parseFields(dataSource, value, currentPath, fieldsDataType) } var item; result.push.apply(result, items) })); return result } function discoverObjectFields(items, fields) { const fieldsDataType = getFieldsDataType(fields); return parseFields(items, items[0], "", fieldsDataType) } function getFieldsDataType(fields) { const result = {}; (0, _iterator.each)(fields, ((_, field) => { result[field.dataField] = result[field.dataField] || field.dataType })); return result } const DATE_INTERVAL_FORMATS = { month: value => _date.default.getMonthNames()[value - 1], quarter: value => _date.default.format(new Date(2e3, 3 * value - 1), "quarter"), dayOfWeek: value => _date.default.getDayNames()[value] }; function setDefaultFieldValueFormatting(field) { if ("date" === field.dataType) { if (!field.format) { setFieldProperty(field, "format", DATE_INTERVAL_FORMATS[field.groupInterval]) } } else if ("number" === field.dataType) { const groupInterval = (0, _type.isNumeric)(field.groupInterval) && field.groupInterval > 0 && field.groupInterval; if (groupInterval && !field.customizeText) { setFieldProperty(field, "customizeText", (formatObject => { const secondValue = formatObject.value + groupInterval; const secondValueText = _format_helper.default.format(secondValue, field.format); return formatObject.valueText && secondValueText ? `${formatObject.valueText} - ${secondValueText}` : "" })) } } } function getFiltersByPath(fields, path) { const result = []; path = path || []; for (let i = 0; i < path.length; i += 1) { result.push((0, _extend.extend)({}, fields[i], { groupIndex: null, groupName: null, filterType: "include", filterValues: [path[i]] })) } return result } const storeDrillDownMixin = exports.storeDrillDownMixin = { createDrillDownDataSource(descriptions, params) { const items = this.getDrillDownItems(descriptions, params); function createCustomStoreMethod(methodName) { return function(options) { let d; if (undefined) { d = undefined[methodName](options) } else { d = new _deferred.Deferred; (0, _deferred.when)(items).done((data => { const arrayStore = new _array_store.default(data); arrayStore[methodName](options).done(d.resolve).fail(d.reject) })).fail(d.reject) } return d } } const dataSource = new _data_source.DataSource({ load: createCustomStoreMethod("load"), totalCount: createCustomStoreMethod("totalCount"), key: this.key() }); return dataSource } }; const getScrollbarWidth = containerElement => containerElement.offsetWidth - containerElement.clientWidth; exports.getScrollbarWidth = getScrollbarWidth; const calculateScrollbarWidth = exports.calculateScrollbarWidth = (0, _call_once.default)((() => { const document = _dom_adapter.default.getDocument(); document.body.insertAdjacentHTML("beforeend", `
`); const scrollbar = document.body.lastElementChild; const scrollbarWidth = getScrollbarWidth(scrollbar); if (scrollbar) { document.body.removeChild(scrollbar) } return scrollbarWidth })); exports.default = { setFieldProperty: setFieldProperty, sendRequest: sendRequest, foreachTree: foreachTree, foreachTreeAsync: foreachTreeAsync, findField: findField, formatValue: formatValue, getCompareFunction: getCompareFunction, createPath: createPath, foreachDataLevel: foreachDataLevel, mergeArraysByMaxValue: mergeArraysByMaxValue, getExpandedLevel: getExpandedLevel, discoverObjectFields: discoverObjectFields, getFieldsDataType: getFieldsDataType, setDefaultFieldValueFormatting: setDefaultFieldValueFormatting, getFiltersByPath: getFiltersByPath, storeDrillDownMixin: storeDrillDownMixin, getScrollbarWidth: getScrollbarWidth, calculateScrollbarWidth: calculateScrollbarWidth } }, 81383: /*!********************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/pivot_grid/remote_store/m_remote_store.js ***! \********************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = exports.RemoteStore = void 0; var _data_source = __webpack_require__( /*! ../../../../common/data/data_source/data_source */ 68216); var _utils = __webpack_require__( /*! ../../../../common/data/data_source/utils */ 97169); var _class = _interopRequireDefault(__webpack_require__( /*! ../../../../core/class */ 55620)); var _date_serialization = _interopRequireDefault(__webpack_require__( /*! ../../../../core/utils/date_serialization */ 71051)); var _deferred = __webpack_require__( /*! ../../../../core/utils/deferred */ 87739); var _extend = __webpack_require__( /*! ../../../../core/utils/extend */ 52576); var _iterator = __webpack_require__( /*! ../../../../core/utils/iterator */ 21274); var _type = __webpack_require__( /*! ../../../../core/utils/type */ 11528); var _capitalize = __webpack_require__( /*! ../../../core/utils/capitalize */ 72928); var _m_widget_utils = function(e, r) { if (!r && e && e.__esModule) { return e } if (null === e || "object" != typeof e && "function" != typeof e) { return { default: e } } var t = _getRequireWildcardCache(r); if (t && t.has(e)) { return t.get(e) } var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) { if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u] } } return n.default = e, t && t.set(e, n), n }(__webpack_require__( /*! ../m_widget_utils */ 12062)); var _m_remote_store_utils = __webpack_require__( /*! ./m_remote_store_utils */ 84265); function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) { return null } var r = new WeakMap, t = new WeakMap; return (_getRequireWildcardCache = function(e) { return e ? t : r })(e) } function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } function createGroupingOptions(fields, useSortOrder) { const groupingOptions = []; (0, _iterator.each)(fields, ((index, field) => { groupingOptions.push({ selector: field.dataField, groupInterval: field.groupInterval, desc: useSortOrder && "desc" === field.sortOrder, isExpanded: index < fields.length - 1 }) })); return groupingOptions } function getIntervalFilterExpression(selector, numericInterval, numericValue, isExcludedFilterType) { const startFilterValue = [selector, isExcludedFilterType ? "<" : ">=", numericValue]; const endFilterValue = [selector, isExcludedFilterType ? ">=" : "<", numericValue + numericInterval]; return [startFilterValue, isExcludedFilterType ? "or" : "and", endFilterValue] } function getFilterExpressionForFilterValue(field, filterValue, filterType) { const selector = function(field) { let selector = field.dataField; let { groupInterval: groupInterval } = field; if ("date" === field.dataType && "string" === typeof groupInterval) { if ("quarter" === groupInterval.toLowerCase()) { groupInterval = "Month" } selector = `${selector}.${(0,_capitalize.capitalize)(groupInterval)}` } return selector }(field); const isExcludedFilterType = "exclude" === (filterType || field.filterType); let expression = [selector, isExcludedFilterType ? "<>" : "=", filterValue]; if ((0, _type.isDefined)(field.groupInterval)) { if ("string" === typeof field.groupInterval && "quarter" === field.groupInterval.toLowerCase()) { expression = getIntervalFilterExpression(selector, 3, 3 * (filterValue - 1) + 1, isExcludedFilterType) } else if ("number" === typeof field.groupInterval && "date" !== field.dataType) { expression = getIntervalFilterExpression(selector, field.groupInterval, filterValue, isExcludedFilterType) } } return expression } function createFieldFilterExpressions(field, operation) { const fieldFilterExpressions = []; if (field.searchValue) { return [field.dataField, "contains", field.searchValue] } if ("exclude" === field.filterType) { operation = operation || "and" } else { operation = operation || "or" }(0, _iterator.each)(field.filterValues, ((index, filterValue) => { let currentExpression = []; if (Array.isArray(filterValue)) { var _field$levels; const parseLevelsRecursive = null === (_field$levels = field.levels) || void 0 === _field$levels ? void 0 : _field$levels.length; if (parseLevelsRecursive) { currentExpression = createFieldFilterExpressions({ filterValues: filterValue, filterType: field.filterType, levels: field.levels }, "and") } } else { const currentField = field.levels ? field.levels[index] : field; currentExpression = getFilterExpressionForFilterValue(currentField, filterValue) } if (!currentExpression.length) { return } if (fieldFilterExpressions.length) { fieldFilterExpressions.push(operation) } fieldFilterExpressions.push(currentExpression) })); return fieldFilterExpressions } function createFilterExpressions(fields) { let filterExpressions = []; (0, _iterator.each)(fields, ((_, field) => { const fieldExpressions = createFieldFilterExpressions(field); if (!fieldExpressions.length) { return [] } if (filterExpressions.length) { filterExpressions.push("and") } filterExpressions.push(fieldExpressions); return })); if (1 === filterExpressions.length) { filterExpressions = filterExpressions[0] } return filterExpressions } function mergeFilters(filters) { let op = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : "and"; const result = []; (0, _iterator.each)(filters, ((_, filter) => { if ((filter => !!(null !== filter && void 0 !== filter && filter.length))(filter)) { result.push(filter, op) } })); result.pop(); if (1 === result.length) { return result[0] } return result } function setValue(valuesArray, value, rowIndex, columnIndex, dataIndex) { valuesArray[rowIndex] = valuesArray[rowIndex] || []; valuesArray[rowIndex][columnIndex] = valuesArray[rowIndex][columnIndex] || []; if (!(0, _type.isDefined)(valuesArray[rowIndex][columnIndex][dataIndex])) { valuesArray[rowIndex][columnIndex][dataIndex] = value } } function parseValue(value, field) { if (field && "number" === field.dataType && (0, _type.isString)(value)) { return Number(value) } if (field && "date" === field.dataType && !field.groupInterval && !(value instanceof Date)) { return _date_serialization.default.deserializeDate(value) } return value } function getFiltersForDimension(fields) { return (null === fields || void 0 === fields ? void 0 : fields.filter((f => { var _f$filterValues; return (null === (_f$filterValues = f.filterValues) || void 0 === _f$filterValues ? void 0 : _f$filterValues.length) || f.searchValue }))) || [] } function getExpandedIndex(options, axis) { if (options.headerName) { if (axis === options.headerName) { return options.path.length } if (options.oppositePath) { return options.oppositePath.length } } return 0 } function getFirstCollapsedIndex(fields) { for (let index = 0; index < fields.length; index += 1) { if (!fields[index].expanded) { return index } } return 0 } function getExpandedPathsFilterExprByLevel(options, axis, level) { if (options.headerName === axis) { return [] } const firstCollapsedFieldIndex = "rows" === axis ? getFirstCollapsedIndex(options.rows) : getFirstCollapsedIndex(options.columns); const startFieldIndex = level <= firstCollapsedFieldIndex ? firstCollapsedFieldIndex : 0; const fields = options[axis].slice(startFieldIndex, level); const paths = ("rows" === axis ? options.rowExpandedPaths : options.columnExpandedPaths) || []; let result = []; (0, _iterator.each)(paths, ((_, path) => { path = path.slice(startFieldIndex); if (!((fields, path) => { if (path.length > level) { return false } let expandedLevel = path.length; while (null !== (_fields$expandedLevel = fields[expandedLevel]) && void 0 !== _fields$expandedLevel && _fields$expandedLevel.expanded) { var _fields$expandedLevel; expandedLevel += 1 } return expandedLevel >= level })(fields, path)) { return } const filters = []; for (let i = 0; i < path.length; i += 1) { const field = fields[i]; if (!(0, _type.isDefined)(field)) { break } const fieldFilterExpression = getFilterExpressionForFilterValue(field, path[i], "include"); filters.push(fieldFilterExpression) } const pathFilterExpression = mergeFilters(filters); result.push(pathFilterExpression) })); result = mergeFilters(result, "or"); return result } function getGrandTotalRequest(options, dimensionName, commonFilters) { const expandedIndex = getExpandedIndex(options, dimensionName); const expandedLevel = (0, _m_widget_utils.getExpandedLevel)(options, dimensionName); const expandedPaths = ("columns" === dimensionName ? options.columnExpandedPaths : options.rowExpandedPaths) || []; const oppositeDimensionName = "columns" === dimensionName ? "rows" : "columns"; const fields = options[dimensionName]; const result = []; if (expandedPaths.length) { for (let i = expandedIndex; i <= expandedLevel; i += 1) { const slicedFields = fields.slice(expandedIndex, i + 1); const filterExpr = getExpandedPathsFilterExprByLevel(options, dimensionName, i); const grandTotalOptions = { filters: commonFilters, filterExpression: filterExpr, [dimensionName]: slicedFields, [oppositeDimensionName]: [] }; result.push((0, _extend.extend)({}, options, grandTotalOptions)) } } else { const slicedFields = fields.slice(expandedIndex, expandedLevel + 1); const grandTotalOptions = { filters: commonFilters, [dimensionName]: slicedFields, [oppositeDimensionName]: [] }; result.push((0, _extend.extend)({}, options, grandTotalOptions)) } result[0].includeTotalSummary = true; return result } function createRequestsOptions(options) { const rowExpandedIndex = getExpandedIndex(options, "rows"); const rowExpandedLevel = (0, _m_widget_utils.getExpandedLevel)(options, "rows"); const columnExpandedIndex = getExpandedIndex(options, "columns"); const columnExpandedLevel = (0, _m_widget_utils.getExpandedLevel)(options, "columns"); const requestsOptions = []; const commonFilters = (options.filters || []).concat(getFiltersForDimension(options.rows), getFiltersForDimension(options.columns), function(options) { const oppositeAxis = "rows" === options.headerName ? "columns" : "rows"; const fields = options[options.headerName]; const oppositeFields = options[oppositeAxis]; const filters = (0, _m_widget_utils.getFiltersByPath)(fields, options.path); const oppositeFieldsFilters = (0, _m_widget_utils.getFiltersByPath)(oppositeFields, options.oppositePath || []); return filters.concat(oppositeFieldsFilters) }(options)); const columnTotalsOptions = getGrandTotalRequest(options, "columns", commonFilters); const rowTotalsOptions = getGrandTotalRequest(options, "rows", commonFilters); if (options.rows.length && options.columns.length) { if ("rows" !== options.headerName) { requestsOptions.push(...columnTotalsOptions) } for (let i = rowExpandedIndex; i <= rowExpandedLevel; i += 1) { const rows = options.rows.slice(rowExpandedIndex, i + 1); const rowsFilterExpr = getExpandedPathsFilterExprByLevel(options, "rows", i); for (let j = columnExpandedIndex; j <= columnExpandedLevel; j += 1) { const columns = options.columns.slice(columnExpandedIndex, j + 1); const columnsFilterExpr = getExpandedPathsFilterExprByLevel(options, "columns", j); const filterExpression = mergeFilters([rowsFilterExpr, columnsFilterExpr]); const requestOptions = (0, _extend.extend)({}, options, { columns: columns, rows: rows, filters: commonFilters, filterExpression: filterExpression }); requestsOptions.push(requestOptions) } } } else { const totalOptions = options.columns.length ? columnTotalsOptions : rowTotalsOptions; requestsOptions.push(...totalOptions) } return requestsOptions } function prepareFields(fields) { (0, _iterator.each)(fields || [], ((_, field) => { const { levels: levels } = field; if (levels) { prepareFields(levels) }(0, _m_widget_utils.setDefaultFieldValueFormatting)(field) })) } const RemoteStore = exports.RemoteStore = _class.default.inherit({ ctor(options) { this._dataSource = new _data_source.DataSource(options); this._store = this._dataSource.store() }, getFields(fields) { const d = new _deferred.Deferred; this._store.load({ skip: 0, take: 20 }).done((data => { const normalizedArguments = (0, _utils.normalizeLoadResult)(data); d.resolve(_m_widget_utils.default.discoverObjectFields(normalizedArguments.data, fields)) })).fail(d.reject); return d }, key() { return this._store.key() }, load(options) { const that = this; const d = new _deferred.Deferred; const result = { rows: [], columns: [], values: [], grandTotalRowIndex: 0, grandTotalColumnIndex: 0, rowHash: {}, columnHash: {}, rowIndex: 1, columnIndex: 1 }; const requestsOptions = createRequestsOptions(options); const deferreds = []; prepareFields(options.rows); prepareFields(options.columns); prepareFields(options.filters); (0, _iterator.each)(requestsOptions, ((_, requestOptions) => { const loadOptions = function(options, externalFilterExpr, hasRows) { const loadOptions = { groupSummary: [], totalSummary: [] }; const rowGroupingOptions = createGroupingOptions(options.rows, options.rowTake); const columnGroupingOptions = createGroupingOptions(options.columns, options.columnTake); const groupingOptions = [...rowGroupingOptions, ...columnGroupingOptions]; if (groupingOptions.length) { loadOptions.group = groupingOptions; loadOptions.take = void 0 } else { loadOptions.group = void 0; loadOptions.take = 1 } if (options.rows.length && options.rowTake) { loadOptions.skip = options.rowSkip; loadOptions.take = options.rowTake; loadOptions.requireGroupCount = true } else if (options.columns.length && options.columnTake && !hasRows) { loadOptions.skip = options.columnSkip; loadOptions.take = options.columnTake; loadOptions.requireGroupCount = true } let filterExpressions = createFilterExpressions(options.filters); filterExpressions = externalFilterExpr ? mergeFilters([filterExpressions, options.filterExpression, externalFilterExpr]) : mergeFilters([filterExpressions, options.filterExpression]); if (filterExpressions.length) { loadOptions.filter = filterExpressions }(0, _iterator.each)(options.values, ((_, value) => { const summaryOption = { selector: value.dataField, summaryType: value.summaryType || "count" }; loadOptions.groupSummary.push(summaryOption); options.includeTotalSummary && loadOptions.totalSummary.push(summaryOption) })); return loadOptions }(requestOptions, that.filter(), options.rows.length); const loadDeferred = that._store.load(loadOptions); deferreds.push(loadDeferred) })); _deferred.when.apply(null, deferreds).done((function() { const args = deferreds.length > 1 ? arguments : [arguments]; (0, _iterator.each)(args, ((index, argument) => { const normalizedArguments = (0, _utils.normalizeLoadResult)(argument[0], argument[1]); ! function(data, total, descriptions, result) { const rowPath = []; let columnPath = []; const { rowHash: rowHash } = result; const { columnHash: columnHash } = result; if (null !== total && void 0 !== total && total.summary) { (0, _iterator.each)(total.summary, ((index, summary) => { setValue(result.values, summary, result.grandTotalRowIndex, result.grandTotalColumnIndex, index) })) } if (total && total.groupCount >= 0) { const skip = descriptions.rows.length ? descriptions.rowSkip : descriptions.columnSkip; data = [...Array(skip)].concat(data); data.length = total.groupCount } function getItem(dataItem, dimensionName, path, level, field) { const dimensionHash = result[`${dimensionName}Hash`]; let parentItem; let parentItemChildren; let item; const pathValue = path.slice(0, level + 1).join("/"); let parentPathValue; if (void 0 !== dimensionHash[pathValue]) { item = dimensionHash[pathValue] } else { item = { value: parseValue(dataItem.key, field), index: result[`${dimensionName}Index`]++, displayText: dataItem.displayText }; parentPathValue = path.slice(0, level).join("/"); if (level > 0 && void 0 !== dimensionHash[parentPathValue]) { parentItem = dimensionHash[parentPathValue]; parentItemChildren = parentItem.children = parentItem.children || [] } else { parentItemChildren = result[`${dimensionName}s`] } parentItemChildren.push(item); dimensionHash[pathValue] = item } return item }(0, _m_remote_store_utils.forEachGroup)(data, ((item, level) => { var _rowItem, _columnItem; const rowLevel = level >= descriptions.rows.length ? descriptions.rows.length : level; const columnLevel = level >= descriptions.rows.length ? level - descriptions.rows.length : 0; let columnItem; let rowItem; if (level >= descriptions.rows.length && columnLevel >= descriptions.columns.length) { return } if (level < descriptions.rows.length) { columnPath = [] } if (level >= descriptions.rows.length) { if (item) { columnPath[columnLevel] = `${item.key}`; columnItem = getItem(item, "column", columnPath, columnLevel, descriptions.columns[columnLevel]); rowItem = rowHash[rowPath.slice(0, rowLevel + 1).join("/")] } else { result.columns.push({}) } } else if (item) { rowPath[rowLevel] = `${item.key}`; rowItem = getItem(item, "row", rowPath, rowLevel, descriptions.rows[rowLevel]); columnItem = columnHash[columnPath.slice(0, columnLevel + 1).join("/")] } else { result.rows.push({}) } const currentRowIndex = (null === (_rowItem = rowItem) || void 0 === _rowItem ? void 0 : _rowItem.index) || result.grandTotalRowIndex; const currentColumnIndex = (null === (_columnItem = columnItem) || void 0 === _columnItem ? void 0 : _columnItem.index) || result.grandTotalColumnIndex; (0, _iterator.each)((null === item || void 0 === item ? void 0 : item.summary) || [], ((i, summary) => { setValue(result.values, summary, currentRowIndex, currentColumnIndex, i) })) })); return result }(normalizedArguments.data, normalizedArguments.extra, requestsOptions[index], result) })); d.resolve({ rows: result.rows, columns: result.columns, values: result.values, grandTotalRowIndex: result.grandTotalRowIndex, grandTotalColumnIndex: result.grandTotalColumnIndex }) })).fail(d.reject); return d }, filter() { return this._dataSource.filter.apply(this._dataSource, arguments) }, supportPaging: () => false, createDrillDownDataSource(loadOptions, params) { loadOptions = loadOptions || {}; params = params || {}; const store = this._store; const filters = (0, _m_widget_utils.getFiltersByPath)(loadOptions.rows, params.rowPath).concat((0, _m_widget_utils.getFiltersByPath)(loadOptions.columns, params.columnPath)).concat(getFiltersForDimension(loadOptions.rows)).concat(loadOptions.filters || []).concat(getFiltersForDimension(loadOptions.columns)); const filterExp = createFilterExpressions(filters); return new _data_source.DataSource({ load(loadOptions) { const filter = mergeFilters([filterExp, loadOptions.filter]); const extendedLoadOptions = (0, _extend.extend)({}, loadOptions, { filter: 0 === filter.length ? void 0 : filter, select: params.customColumns }); return store.load(extendedLoadOptions) } }) } }); exports.default = { RemoteStore: RemoteStore } }, 84265: /*!**************************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/pivot_grid/remote_store/m_remote_store_utils.js ***! \**************************************************************************************************************/ function(__unused_webpack_module, exports) { Object.defineProperty(exports, "__esModule", { value: true }); exports.forEachGroup = exports.default = void 0; const forEachGroup = function(data, callback, level) { data = data || []; level = level || 0; for (let i = 0; i < data.length; i += 1) { const group = data[i]; callback(group, level); if (group && group.items && group.items.length) { forEachGroup(group.items, callback, level + 1) } } }; exports.forEachGroup = forEachGroup; exports.default = { forEachGroup: forEachGroup } }, 87691: /*!************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/pivot_grid/sortable/m_sortable.js ***! \************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = exports.Sortable = void 0; var _events_engine = _interopRequireDefault(__webpack_require__( /*! ../../../../common/core/events/core/events_engine */ 92774)); var _drag = __webpack_require__( /*! ../../../../common/core/events/drag */ 59144); var _index = __webpack_require__( /*! ../../../../common/core/events/utils/index */ 98834); var _component_registrator = _interopRequireDefault(__webpack_require__( /*! ../../../../core/component_registrator */ 92848)); var _dom_adapter = _interopRequireDefault(__webpack_require__( /*! ../../../../core/dom_adapter */ 64960)); var _dom_component = _interopRequireDefault(__webpack_require__( /*! ../../../../core/dom_component */ 97832)); var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../../../core/renderer */ 64553)); var _extend = __webpack_require__( /*! ../../../../core/utils/extend */ 52576); var _iterator = __webpack_require__( /*! ../../../../core/utils/iterator */ 21274); var _size = __webpack_require__( /*! ../../../../core/utils/size */ 57653); var _type = __webpack_require__( /*! ../../../../core/utils/type */ 11528); var _swatch_container = _interopRequireDefault(__webpack_require__( /*! ../../../../ui/widget/swatch_container */ 5080)); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } const { getSwatchContainer: getSwatchContainer } = _swatch_container.default; function checkHorizontalPosition(position, itemOffset, rtl) { if ((0, _type.isDefined)(itemOffset.posHorizontal)) { return rtl ? position > itemOffset.posHorizontal : position < itemOffset.posHorizontal } return true } function getTargetGroup(e, $groups) { let result; (0, _iterator.each)($groups, (function() { if (function(element, x, y) { const $item = (0, _renderer.default)(element); const offset = $item.offset(); if (x >= offset.left && x <= offset.left + (0, _size.getOuterWidth)($item, true)) { if (y >= offset.top && y <= offset.top + (0, _size.getOuterHeight)($item, true)) { return true } } return }(this, e.pageX, e.pageY)) { result = (0, _renderer.default)(this) } })); return result } const Sortable = exports.Sortable = _dom_component.default.inherit({ _getDefaultOptions() { return (0, _extend.extend)(this.callBase(), { onChanged: null, onDragging: null, itemRender: null, groupSelector: null, itemSelector: ".dx-sort-item", itemContainerSelector: ".dx-sortable-old", sourceClass: "dx-drag-source", dragClass: "dx-drag", targetClass: "dx-drag-target", direction: "vertical", allowDragging: true, groupFilter: null, useIndicator: false }) }, _renderItem($sourceItem, target) { const itemRender = this.option("itemRender"); let $item; if (itemRender) { $item = itemRender($sourceItem, target) } else { $item = $sourceItem.clone(); $item.css({ width: (0, _size.getWidth)($sourceItem), height: (0, _size.getHeight)($sourceItem) }) } return $item }, _renderIndicator($item, isVertical, $targetGroup, isLast) { const height = (0, _size.getOuterHeight)($item, true); const width = (0, _size.getOuterWidth)($item, true); const top = $item.offset().top - $targetGroup.offset().top; const left = $item.offset().left - $targetGroup.offset().left; this._indicator.css({ position: "absolute", top: isLast && isVertical ? top + height : top, left: isLast && !isVertical ? left + width : left }).toggleClass("dx-position-indicator-horizontal", !isVertical).toggleClass("dx-position-indicator-vertical", !!isVertical).toggleClass("dx-position-indicator-last", !!isLast).appendTo($targetGroup); (0, _size.setHeight)(this._indicator, ""); (0, _size.setWidth)(this._indicator, ""); if (isVertical) { (0, _size.setWidth)(this._indicator, width) } else { (0, _size.setHeight)(this._indicator, height) } }, _renderDraggable($sourceItem) { this._$draggable && this._$draggable.remove(); this._$draggable = this._renderItem($sourceItem, "drag").addClass(this.option("dragClass")).appendTo(getSwatchContainer($sourceItem)).css({ zIndex: 1e6, position: "absolute" }) }, _detachEventHandlers() { const dragEventsString = [_drag.move, _drag.start, _drag.end, _drag.enter, _drag.leave, _drag.drop].join(" "); _events_engine.default.off(this._getEventListener(), (0, _index.addNamespace)(dragEventsString, "dxSortable"), void 0) }, _getItemOffset(isVertical, itemsOffset, e) { for (let i = 0; i < itemsOffset.length; i += 1) { let shouldInsert; const sameLine = e.pageY < itemsOffset[i].posVertical; if (isVertical) { shouldInsert = sameLine } else if (sameLine) { shouldInsert = checkHorizontalPosition(e.pageX, itemsOffset[i], this.option("rtlEnabled")); if (!shouldInsert && itemsOffset[i + 1] && itemsOffset[i + 1].posVertical > itemsOffset[i].posVertical) { shouldInsert = true } } if (shouldInsert) { return itemsOffset[i] } } return }, _getEventListener() { const groupSelector = this.option("groupSelector"); const element = this.$element(); return groupSelector ? element.find(groupSelector) : element }, _attachEventHandlers() { const that = this; const itemSelector = that.option("itemSelector"); const itemContainerSelector = that.option("itemContainerSelector"); const groupSelector = that.option("groupSelector"); const sourceClass = that.option("sourceClass"); const targetClass = that.option("targetClass"); const onDragging = that.option("onDragging"); const groupFilter = that.option("groupFilter"); let $sourceItem; let sourceIndex; let $targetItem; let $targetGroup; let startPositions; let sourceGroup; const element = that.$element(); let $groups; let scrollWrapper = null; let targetIndex = -1; const disposeScrollWrapper = function() { var _scrollWrapper; null === (_scrollWrapper = scrollWrapper) || void 0 === _scrollWrapper || _scrollWrapper.dispose(); scrollWrapper = null }; that._detachEventHandlers(); if (that.option("allowDragging")) { const $eventListener = that._getEventListener(); _events_engine.default.on($eventListener, (0, _index.addNamespace)(_drag.start, "dxSortable"), itemSelector, (e => { $sourceItem = (0, _renderer.default)(e.currentTarget); const $sourceGroup = $sourceItem.closest(groupSelector); sourceGroup = $sourceGroup.attr("group"); sourceIndex = function($items, $item) { let index = -1; const itemElement = $item.get(0); (0, _iterator.each)($items, ((elementIndex, element) => { const $element = (0, _renderer.default)(element); if (!($element.attr("item-group") && $element.attr("item-group") === $items.eq(elementIndex - 1).attr("item-group"))) { index += 1 } if (element === itemElement) { return false } return })); return index === $items.length ? -1 : index }((groupSelector ? $sourceGroup : element).find(itemSelector), $sourceItem); if ($sourceItem.attr("item-group")) { $sourceItem = $sourceGroup.find(`[item-group='${$sourceItem.attr("item-group")}']`) } that._renderDraggable($sourceItem); $targetItem = that._renderItem($sourceItem, "target").addClass(targetClass); $sourceItem.addClass(sourceClass); ! function() { startPositions = []; (0, _iterator.each)($sourceItem, ((_, item) => { startPositions.push((0, _renderer.default)(item).offset()) })) }(); $groups = function() { const root = _dom_adapter.default.getRootNode(that.$element().get(0)); if (!groupSelector) { return element } return groupFilter ? (0, _renderer.default)(root).find(groupSelector).filter(groupFilter) : element.find(groupSelector) }(); that._indicator = (0, _renderer.default)("
").addClass("dx-position-indicator") })); _events_engine.default.on($eventListener, (0, _index.addNamespace)(_drag.move, "dxSortable"), (e => { let $item; let $lastItem; let $prevItem; if (!$sourceItem) { return } targetIndex = -1; that._indicator.detach(); (0, _iterator.each)(that._$draggable, ((index, draggableElement) => { (0, _renderer.default)(draggableElement).css({ top: startPositions[index].top + e.offset.y, left: startPositions[index].left + e.offset.x }) })); $targetGroup && $targetGroup.removeClass(targetClass); $targetGroup = getTargetGroup(e, $groups); $targetGroup && function() { const draggingArgs = { sourceGroup: sourceGroup, sourceIndex: sourceIndex, sourceElement: $sourceItem, targetGroup: $targetGroup.attr("group"), targetIndex: $targetGroup.find(itemSelector).index($targetItem) }; onDragging && onDragging(draggingArgs); if (draggingArgs.cancel) { $targetGroup = void 0 } }(); if ($targetGroup && scrollWrapper && $targetGroup.get(0) !== scrollWrapper.element().get(0)) { disposeScrollWrapper() } scrollWrapper && scrollWrapper.moveIfNeed(e); if (!$targetGroup) { $targetItem.detach(); return } if (!scrollWrapper && $targetGroup.attr("allow-scrolling")) { scrollWrapper = function(scrollable) { let timeout; let scrollTop = scrollable.scrollTop(); const $element = scrollable.$element(); const { top: top } = $element.offset(); const height = (0, _size.getHeight)($element); let delta = 0; function onScroll(e) { scrollTop = e.scrollOffset.top } scrollable.on("scroll", onScroll); function move() { stop(); scrollable.scrollTo(scrollTop += delta); timeout = setTimeout(move, 10) } function stop() { clearTimeout(timeout) } return { moveIfNeed: function(event) { if (event.pageY <= top + 20) { delta = -2 } else if (event.pageY >= top + height - 20) { delta = 2 } else { delta = 0; stop(); return } move() }, element: () => $element, dispose() { stop(); scrollable.off("scroll", onScroll) } } }($targetGroup.dxScrollable("instance")) } $targetGroup.addClass(targetClass); const $itemContainer = $targetGroup.find(itemContainerSelector); const $items = $itemContainer.find(itemSelector); const targetSortable = $targetGroup.closest(".dx-sortable-old").data("dxSortableOld"); const useIndicator = targetSortable.option("useIndicator"); const isVertical = "vertical" === (targetSortable || that).option("direction"); const itemsOffset = function($elements, isVertical, $itemsContainer) { const result = []; let $item = []; for (let i = 0; i < $elements.length; i += $item.length) { $item = $elements.eq(i); if ($item.attr("item-group")) { $item = $itemsContainer.find(`[item-group='${$item.attr("item-group")}']`) } if ($item.is(":visible")) { const offset = { item: $item, index: result.length, posVertical: isVertical ? ($item.last().offset().top + $item.offset().top + (0, _size.getOuterHeight)($item.last(), true)) / 2 : (0, _size.getOuterHeight)($item.last(), true) + $item.last().offset().top, posHorizontal: isVertical ? void 0 : ((0, _size.getOuterWidth)($item.last(), true) + $item.last().offset().left + $item.offset().left) / 2 }; result.push(offset) } } return result }($items, isVertical, $itemContainer); const itemOffset = that._getItemOffset(isVertical, itemsOffset, e); if (itemOffset) { $item = itemOffset.item; $prevItem = itemsOffset[itemOffset.index - 1] && itemsOffset[itemOffset.index - 1].item; if ($item.hasClass(sourceClass) || $prevItem && $prevItem.hasClass(sourceClass) && $prevItem.is(":visible")) { $targetItem.detach(); return } targetIndex = itemOffset.index; if (!useIndicator) { $targetItem.insertBefore($item); return } const isAnotherGroup = $targetGroup.attr("group") !== sourceGroup; const isSameIndex = targetIndex === sourceIndex; const isNextIndex = targetIndex === sourceIndex + 1; if (isAnotherGroup) { that._renderIndicator($item, isVertical, $targetGroup, that.option("rtlEnabled") && !isVertical); return } if (!isSameIndex && !isNextIndex) { that._renderIndicator($item, isVertical, $targetGroup, that.option("rtlEnabled") && !isVertical) } } else { $lastItem = $items.last(); if ($lastItem.is(":visible") && $lastItem.hasClass(sourceClass)) { return } if ($itemContainer.length) { targetIndex = itemsOffset.length ? itemsOffset[itemsOffset.length - 1].index + 1 : 0 } if (useIndicator) { $items.length && that._renderIndicator($lastItem, isVertical, $targetGroup, !that.option("rtlEnabled") || isVertical) } else { $targetItem.appendTo($itemContainer) } } })); _events_engine.default.on($eventListener, (0, _index.addNamespace)(_drag.end, "dxSortable"), (() => { disposeScrollWrapper(); if (!$sourceItem) { return } const onChanged = that.option("onChanged"); const changedArgs = { sourceIndex: sourceIndex, sourceElement: $sourceItem, sourceGroup: sourceGroup, targetIndex: targetIndex, removeSourceElement: true, removeTargetElement: false, removeSourceClass: true }; if ($targetGroup) { $targetGroup.removeClass(targetClass); changedArgs.targetGroup = $targetGroup.attr("group"); if (sourceGroup !== changedArgs.targetGroup || targetIndex > -1) { onChanged && onChanged(changedArgs); changedArgs.removeSourceElement && $sourceItem.remove() } } that._indicator.detach(); changedArgs.removeSourceClass && $sourceItem.removeClass(sourceClass); $sourceItem = null; that._$draggable.remove(); that._$draggable = null; changedArgs.removeTargetElement && $targetItem.remove(); $targetItem.removeClass(targetClass); $targetItem = null })) } }, _init() { this.callBase(); this._attachEventHandlers() }, _render() { this.callBase(); this.$element().addClass("dx-sortable-old") }, _dispose() { this.callBase.apply(this, arguments); this._$draggable && this._$draggable.detach(); this._indicator && this._indicator.detach() }, _optionChanged(args) { const that = this; switch (args.name) { case "onDragging": case "onChanged": case "itemRender": case "groupSelector": case "itemSelector": case "itemContainerSelector": case "sourceClass": case "targetClass": case "dragClass": case "allowDragging": case "groupFilter": case "useIndicator": that._attachEventHandlers(); break; case "direction": break; default: that.callBase(args) } }, _useTemplates: () => false }); (0, _component_registrator.default)("dxSortableOld", Sortable); exports.default = { Sortable: Sortable } }, 81221: /*!**************************************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/pivot_grid/summary_display_modes/m_summary_display_modes.js ***! \**************************************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.Cell = void 0; exports.applyDisplaySummaryMode = applyDisplaySummaryMode; exports.applyRunningTotal = applyRunningTotal; exports.createMockSummaryCell = createMockSummaryCell; exports.default = void 0; exports.getExpression = getExpression; exports.summaryDictionary = void 0; var _extend = __webpack_require__( /*! ../../../../core/utils/extend */ 52576); var _type = __webpack_require__( /*! ../../../../core/utils/type */ 11528); var _m_widget_utils = function(e, r) { if (!r && e && e.__esModule) { return e } if (null === e || "object" != typeof e && "function" != typeof e) { return { default: e } } var t = _getRequireWildcardCache(r); if (t && t.has(e)) { return t.get(e) } var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) { if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u] } } return n.default = e, t && t.set(e, n), n }(__webpack_require__( /*! ../m_widget_utils */ 12062)); function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) { return null } var r = new WeakMap, t = new WeakMap; return (_getRequireWildcardCache = function(e) { return e ? t : r })(e) } const ROW = "row"; const NULL = null; const calculatePercentValue = function(value, totalValue) { let result = value / totalValue; if (!(0, _type.isDefined)(value) || isNaN(result)) { result = NULL } return result }; const percentOfGrandTotal = function(e, dimension) { return calculatePercentValue(e.value(), e.grandTotal(dimension).value()) }; const percentOfParent = function(e, dimension) { const parent = e.parent(dimension); const parentValue = parent ? parent.value() : e.value(); return calculatePercentValue(e.value(), parentValue) }; const createAbsoluteVariationExp = function(allowCrossGroup) { return function(e) { const prevCell = e.prev("column", allowCrossGroup); const prevValue = prevCell && prevCell.value(); if ((0, _type.isDefined)(prevValue) && (0, _type.isDefined)(e.value())) { return e.value() - prevValue } return NULL } }; const createPercentVariationExp = function(allowCrossGroup) { const absoluteExp = createAbsoluteVariationExp(allowCrossGroup); return function(e) { const absVar = absoluteExp(e); const prevCell = e.prev("column", allowCrossGroup); const prevValue = prevCell && prevCell.value(); return absVar !== NULL && prevValue ? absVar / prevValue : NULL } }; const summaryDictionary = exports.summaryDictionary = { percentOfColumnTotal: e => percentOfParent(e, ROW), percentOfRowTotal: e => percentOfParent(e, "column"), percentOfColumnGrandTotal: e => percentOfGrandTotal(e, ROW), percentOfRowGrandTotal: e => percentOfGrandTotal(e, "column"), percentOfGrandTotal: e => percentOfGrandTotal(e) }; const getPrevCellCrossGroup = function(cell, direction) { if (!cell || !cell.parent(direction)) { return } let prevCell = cell.prev(direction); if (!prevCell) { prevCell = getPrevCellCrossGroup(cell.parent(direction), direction) } return prevCell }; const createRunningTotalExpr = field => { if (!field.runningTotal) { return } const direction = "column" === field.runningTotal ? ROW : "column"; return e => { const prevCell = field.allowCrossGroupCalculation ? getPrevCellCrossGroup(e, direction) : e.prev(direction, false); const calculatedValue = e.value(true); const originalValue = e.value(false); const prevCalculatedValue = null === prevCell || void 0 === prevCell ? void 0 : prevCell.value(true); switch (true) { case (0, _type.isDefined)(calculatedValue) && (0, _type.isDefined)(originalValue) && (0, _type.isDefined)(prevCalculatedValue): return prevCalculatedValue + calculatedValue; case (0, _type.isDefined)(prevCalculatedValue): return prevCalculatedValue; default: return calculatedValue } } }; function getFieldPos(descriptions, field, cache) { let fieldParams = { index: -1 }; if (!(0, _type.isObject)(field)) { if (cache.fields[field]) { field = cache[field] } else { const allFields = descriptions.columns.concat(descriptions.rows).concat(descriptions.values); const fieldIndex = (0, _m_widget_utils.findField)(allFields, field); field = cache[field] = allFields[fieldIndex] } } if (field) { const area = field.area || "data"; fieldParams = cache.positions[field.index] = cache.positions[field.index] || { area: area, index: descriptions["data" === area ? "values" : `${area}s`].indexOf(field) } } return fieldParams } function getPathFieldName(dimension) { return dimension === ROW ? "_rowPath" : "_columnPath" } const SummaryCell = function(columnPath, rowPath, data, descriptions, fieldIndex, fieldsCache) { this._columnPath = columnPath; this._rowPath = rowPath; this._fieldIndex = fieldIndex; this._fieldsCache = fieldsCache || { fields: {}, positions: {} }; this._data = data; this._descriptions = descriptions; const cell = data.values && data.values[rowPath[0].index] && data.values[rowPath[0].index][columnPath[0].index]; if (cell) { cell.originalCell = cell.originalCell || cell.slice(); cell.postProcessedFlags = cell.postProcessedFlags || []; this._cell = cell } }; exports.Cell = SummaryCell; SummaryCell.prototype = (0, _extend.extend)(SummaryCell.prototype, { _getPath(dimension) { return this[getPathFieldName(dimension)] }, _getDimension(dimension) { dimension = dimension === ROW ? "rows" : "columns"; return this._descriptions[dimension] }, _createCell(config) { return new SummaryCell(config._columnPath || this._columnPath, config._rowPath || this._rowPath, this._data, this._descriptions, this._fieldIndex) }, parent(direction) { const path = this._getPath(direction).slice(); const config = {}; path.shift(); if (path.length) { config[getPathFieldName(direction)] = path; return this._createCell(config) } return NULL }, children(direction) { const path = this._getPath(direction).slice(); const item = path[0]; const result = []; const cellConfig = {}; if (item.children) { for (let i = 0; i < item.children.length; i += 1) { cellConfig[getPathFieldName(direction)] = [item.children[i]].concat(path.slice()); result.push(this._createCell(cellConfig)) } } return result }, grandTotal(direction) { const config = {}; const rowPath = this._rowPath; const columnPath = this._columnPath; const dimensionPath = this._getPath(direction); const pathFieldName = getPathFieldName(direction); if (!direction) { config._rowPath = [rowPath[rowPath.length - 1]]; config._columnPath = [columnPath[columnPath.length - 1]] } else { config[pathFieldName] = [dimensionPath[dimensionPath.length - 1]] } return this._createCell(config) }, next(direction, allowCrossGroup) { const currentPath = this._getPath(direction); const item = currentPath[0]; let parent = this.parent(direction); let siblings; if (parent) { const index = currentPath[1].children.indexOf(item); siblings = parent.children(direction); if (siblings[index + 1]) { return siblings[index + 1] } } if (allowCrossGroup && parent) { do { parent = parent.next(direction, allowCrossGroup); siblings = parent ? parent.children(direction) : [] } while (parent && !siblings.length); return siblings[0] || NULL } return NULL }, prev(direction, allowCrossGroup) { const currentPath = this._getPath(direction); const item = currentPath[0]; let parent = this.parent(direction); let siblings; if (parent) { const index = currentPath[1].children.indexOf(item); siblings = parent.children(direction); if (siblings[index - 1]) { return siblings[index - 1] } } if (allowCrossGroup && parent) { do { parent = parent.prev(direction, allowCrossGroup); siblings = parent ? parent.children(direction) : [] } while (parent && !siblings.length); return siblings[siblings.length - 1] || NULL } return NULL }, cell() { return this._cell }, field(area) { if ("data" === area) { return this._descriptions.values[this._fieldIndex] } const path = this._getPath(area); const descriptions = this._getDimension(area); const field = descriptions[path.length - 2]; return field || NULL }, child(direction, fieldValue) { let childLevelField; const children = this.children(direction); for (let i = 0; i < children.length; i += 1) { childLevelField = childLevelField || children[i].field(direction); if (children[i].value(childLevelField) === fieldValue) { return children[i] } } return NULL }, slice(field, value) { const that = this; const config = {}; const fieldPos = getFieldPos(this._descriptions, field, this._fieldsCache); const { area: area } = fieldPos; const fieldIndex = fieldPos.index; let sliceCell = NULL; const newPath = []; if (area === ROW || "column" === area) { const path = this._getPath(area).slice(); const level = -1 !== fieldIndex && path.length - 2 - fieldIndex; if (path[level]) { newPath[path.length - 1] = path[path.length - 1]; for (let i = level; i >= 0; i -= 1) { if (path[i + 1]) { const childItems = path[i + 1].children || []; const currentValue = i === level ? value : path[i].value; path[i] = void 0; for (let childIndex = 0; childIndex < childItems.length; childIndex += 1) { if (childItems[childIndex].value === currentValue) { path[i] = childItems[childIndex]; break } } } if (void 0 === path[i]) { return sliceCell } } config[getPathFieldName(area)] = path; sliceCell = that._createCell(config) } } return sliceCell }, value(arg1, arg2) { const cell = this._cell; let fieldIndex = this._fieldIndex; const fistArgIsBoolean = true === arg1 || false === arg1; const field = !fistArgIsBoolean ? arg1 : NULL; const needCalculatedValue = fistArgIsBoolean && arg1 || arg2; if ((0, _type.isDefined)(field)) { const fieldPos = getFieldPos(this._descriptions, field, this._fieldsCache); fieldIndex = fieldPos.index; if ("data" !== fieldPos.area) { const path = this._getPath(fieldPos.area); const level = -1 !== fieldIndex && path.length - 2 - fieldIndex; return path[level] && path[level].value } } if (cell && cell.originalCell) { return needCalculatedValue ? cell[fieldIndex] : cell.originalCell[fieldIndex] } return NULL }, isPostProcessed(field) { let fieldIndex = this._fieldIndex; if ((0, _type.isDefined)(field)) { const fieldPos = getFieldPos(this._descriptions, field, this._fieldsCache); fieldIndex = fieldPos.index; if ("data" !== fieldPos.area) { return false } } return !!(this._cell && this._cell.postProcessedFlags[fieldIndex]) } }); function getExpression(field) { const { summaryDisplayMode: summaryDisplayMode } = field; const crossGroupCalculation = field.allowCrossGroupCalculation; let expression = NULL; if ((0, _type.isFunction)(field.calculateSummaryValue)) { expression = field.calculateSummaryValue } else if (summaryDisplayMode) { if ("absoluteVariation" === summaryDisplayMode) { expression = createAbsoluteVariationExp(crossGroupCalculation) } else if ("percentVariation" === summaryDisplayMode) { expression = createPercentVariationExp(crossGroupCalculation) } else { expression = summaryDictionary[summaryDisplayMode] } if (expression && !field.format && -1 !== summaryDisplayMode.indexOf("percent")) { _m_widget_utils.default.setFieldProperty(field, "format", "percent") } } return expression } function processDataCell(data, rowIndex, columnIndex, isRunningTotalCalculation) { const values = data.values[rowIndex][columnIndex] = data.values[rowIndex][columnIndex] || []; const { originalCell: originalCell } = values; if (!originalCell) { return } if (values.allowResetting || !isRunningTotalCalculation) { data.values[rowIndex][columnIndex] = originalCell.slice() } data.values[rowIndex][columnIndex].allowResetting = isRunningTotalCalculation } function applyDisplaySummaryMode(descriptions, data) { const expressions = []; const columnElements = [{ index: data.grandTotalColumnIndex, children: data.columns }]; const rowElements = [{ index: data.grandTotalRowIndex, children: data.rows }]; const valueFields = descriptions.values; const fieldsCache = { fields: {}, positions: {} }; data.values = data.values || []; (0, _m_widget_utils.foreachTree)(columnElements, (columnPath => { columnPath[0].isEmpty = [] }), false); (0, _m_widget_utils.foreachTree)(rowElements, (rowPath => { const rowItem = rowPath[0]; rowItem.isEmpty = []; data.values[rowItem.index] = data.values[rowItem.index] || []; (0, _m_widget_utils.foreachTree)(columnElements, (columnPath => { const columnItem = columnPath[0]; let isEmptyCell; processDataCell(data, rowItem.index, columnItem.index, false); for (let i = 0; i < valueFields.length; i += 1) { const field = valueFields[i]; const expression = expressions[i] = void 0 === expressions[i] ? getExpression(field) : expressions[i]; isEmptyCell = false; if (expression) { const expressionArg = new SummaryCell(columnPath, rowPath, data, descriptions, i, fieldsCache); const cell = expressionArg.cell(); const value = cell[i] = expression(expressionArg); cell.postProcessedFlags[i] = true; isEmptyCell = null === value || void 0 === value } if (void 0 === columnItem.isEmpty[i]) { columnItem.isEmpty[i] = true } if (void 0 === rowItem.isEmpty[i]) { rowItem.isEmpty[i] = true } if (!isEmptyCell) { rowItem.isEmpty[i] = columnItem.isEmpty[i] = false } } }), false) }), false); data.isEmptyGrandTotalRow = rowElements[0].isEmpty; data.isEmptyGrandTotalColumn = columnElements[0].isEmpty } function applyRunningTotal(descriptions, data) { const expressions = []; const columnElements = [{ index: data.grandTotalColumnIndex, children: data.columns }]; const rowElements = [{ index: data.grandTotalRowIndex, children: data.rows }]; const valueFields = descriptions.values; const fieldsCache = { fields: {}, positions: {} }; data.values = data.values || []; (0, _m_widget_utils.foreachTree)(rowElements, (rowPath => { const rowItem = rowPath[0]; data.values[rowItem.index] = data.values[rowItem.index] || []; (0, _m_widget_utils.foreachTree)(columnElements, (columnPath => { const columnItem = columnPath[0]; processDataCell(data, rowItem.index, columnItem.index, true); for (let i = 0; i < valueFields.length; i += 1) { const field = valueFields[i]; const expression = expressions[i] = void 0 === expressions[i] ? createRunningTotalExpr(field) : expressions[i]; if (expression) { const expressionArg = new SummaryCell(columnPath, rowPath, data, descriptions, i, fieldsCache); const cell = expressionArg.cell(); cell[i] = expression(expressionArg); cell.postProcessedFlags[i] = true } } }), false) }), false) } function createMockSummaryCell(descriptions, fields, indices) { const summaryCell = new SummaryCell([], [], {}, descriptions, 0); summaryCell.value = function(fieldId) { if ((0, _type.isDefined)(fieldId)) { const index = (0, _m_widget_utils.findField)(fields, fieldId); const field = fields[index]; if (!indices[index] && field && !(0, _type.isDefined)(field.area)) { descriptions.values.push(field); indices[index] = true } } }; summaryCell.grandTotal = function() { return this }; summaryCell.children = function() { return [] }; return summaryCell } exports.default = { Cell: SummaryCell, summaryDictionary: summaryDictionary, getExpression: getExpression, applyRunningTotal: applyRunningTotal, createMockSummaryCell: createMockSummaryCell, applyDisplaySummaryMode: applyDisplaySummaryMode } }, 48063: /*!****************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/pivot_grid/xmla_store/m_xmla_store.js ***! \****************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = exports.XmlaStore = void 0; var _language_codes = __webpack_require__( /*! ../../../../common/core/localization/language_codes */ 64333); var _errors = __webpack_require__( /*! ../../../../common/data/errors */ 82812); var _class = _interopRequireDefault(__webpack_require__( /*! ../../../../core/class */ 55620)); var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../../../core/renderer */ 64553)); var _common = __webpack_require__( /*! ../../../../core/utils/common */ 17781); var _deferred = __webpack_require__( /*! ../../../../core/utils/deferred */ 87739); var _extend = __webpack_require__( /*! ../../../../core/utils/extend */ 52576); var _iterator = __webpack_require__( /*! ../../../../core/utils/iterator */ 21274); var _string = __webpack_require__( /*! ../../../../core/utils/string */ 54497); var _type = __webpack_require__( /*! ../../../../core/utils/type */ 11528); var _window = __webpack_require__( /*! ../../../../core/utils/window */ 3104); var _m_widget_utils = function(e, r) { if (!r && e && e.__esModule) { return e } if (null === e || "object" != typeof e && "function" != typeof e) { return { default: e } } var t = _getRequireWildcardCache(r); if (t && t.has(e)) { return t.get(e) } var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) { if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u] } } return n.default = e, t && t.set(e, n), n }(__webpack_require__( /*! ../m_widget_utils */ 12062)); function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) { return null } var r = new WeakMap, t = new WeakMap; return (_getRequireWildcardCache = function(e) { return e ? t : r })(e) } function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } const window = (0, _window.getWindow)(); const XmlaStore = exports.XmlaStore = _class.default.inherit(function() { const discover = '{2}{0}{1}{0}{3}'; function execXMLA(requestOptions, data) { const deferred = new _deferred.Deferred; const { beforeSend: beforeSend } = requestOptions; const ajaxSettings = { url: requestOptions.url, dataType: "text", data: data, headers: { "Content-Type": "text/xml" }, xhrFields: {}, method: "POST" }; if ((0, _type.isFunction)(beforeSend)) { beforeSend(ajaxSettings) } _m_widget_utils.default.sendRequest(ajaxSettings).fail((function() { deferred.reject(arguments) })).done((text => { const parser = new window.DOMParser; let xml; try { try { xml = parser.parseFromString(text, "text/xml") } catch (e) { xml = void 0 } if (!xml || xml.getElementsByTagName("parsererror").length || 0 === xml.childNodes.length) { throw _errors.errors.Error("E4023", text) } } catch (e) { deferred.reject({ statusText: e.message, stack: e.stack, responseText: text }) } deferred.resolve(xml) })); return deferred } function getLocaleIdProperty() { const languageId = (0, _language_codes.getLanguageId)(); if (void 0 !== languageId) { return (0, _string.format)("{0}", languageId) } return "" } function mdxDescendants(level, levelMember, nextLevel) { const memberExpression = levelMember || level; return `Descendants({${memberExpression}}, ${nextLevel}, SELF_AND_BEFORE)` } function getAllMember(dimension) { return `${dimension.hierarchyName||dimension.dataField}.[All]` } function getAllMembers(field) { let result = `${field.dataField}.allMembers`; let { searchValue: searchValue } = field; if (searchValue) { searchValue = searchValue.replace(/'/g, "''"); result = `Filter(${result}, instr(${field.dataField}.currentmember.member_caption,'${searchValue}') > 0)` } return result } function crossJoinElements(elements) { const elementsString = elements.join(","); return elements.length > 1 ? (0, _string.format)("CrossJoin({0})", elementsString) : elementsString } function generateCrossJoin(path, expandLevel, expandAllCount, expandIndex, slicePath, options, axisName, take) { const crossJoinArgs = []; const dimensions = options[axisName]; const fields = []; let arg; let prevDimension; let member; for (let i = expandIndex; i <= expandLevel; i += 1) { const field = dimensions[i]; const { dataField: dataField } = field; const prevHierarchyName = dimensions[i - 1] && dimensions[i - 1].hierarchyName; const { hierarchyName: hierarchyName } = field; const isLastDimensionInGroup = !hierarchyName || !dimensions[i + 1] || dimensions[i + 1].hierarchyName !== hierarchyName; const expandAllIndex = path.length + expandAllCount + expandIndex; arg = null; fields.push(field); if (i < path.length) { if (isLastDimensionInGroup) { arg = `(${dataField}.${preparePathValue(path[i],dataField)})` } } else if (i <= expandAllIndex) { if (0 === i && 0 === expandAllCount) { const allMember = getAllMember(dimensions[expandIndex]); if (!hierarchyName) { arg = getAllMembers(dimensions[expandIndex]) } else { arg = `${allMember},${dimensions[expandIndex].dataField}` } } else if (hierarchyName) { member = preparePathValue(slicePath[slicePath.length - 1]); if (isLastDimensionInGroup || i === expandAllIndex) { if (prevHierarchyName === hierarchyName) { if (slicePath.length) { prevDimension = dimensions[slicePath.length - 1] } if (!prevDimension || prevDimension.hierarchyName !== hierarchyName) { prevDimension = dimensions[i - 1]; member = "" } arg = mdxDescendants(prevDimension.dataField, member, dataField) } else { arg = getAllMembers(field) } } } else { arg = getAllMembers(field) } } else { const isFirstDimensionInGroup = !hierarchyName || prevHierarchyName !== hierarchyName; if (isFirstDimensionInGroup) { arg = `(${getAllMember(field)})` } } if (arg) { arg = (0, _string.format)("{{0}}", arg); if (take) { const sortBy = (field.hierarchyName || field.dataField) + ("displayText" === field.sortBy ? ".MEMBER_CAPTION" : ".MEMBER_VALUE"); arg = (0, _string.format)("Order({0}, {1}, {2})", arg, sortBy, "desc" === field.sortOrder ? "DESC" : "ASC") } crossJoinArgs.push(arg) } } return crossJoinElements(crossJoinArgs) } function fillCrossJoins(crossJoins, path, expandLevel, expandIndex, slicePath, options, axisName, cellsString, take, totalsOnly) { let expandAllCount = -1; const dimensions = options[axisName]; let dimensionIndex; do { expandAllCount += 1; dimensionIndex = path.length + expandAllCount + expandIndex; let crossJoin = generateCrossJoin(path, expandLevel, expandAllCount, expandIndex, slicePath, options, axisName, take); if (!take && !totalsOnly) { crossJoin = (0, _string.format)("NonEmpty({0}, {1})", crossJoin, cellsString) } crossJoins.push(crossJoin) } while (dimensions[dimensionIndex] && dimensions[dimensionIndex + 1] && dimensions[dimensionIndex].expanded) } function declare(expression, withArray, name, type) { name = name || `[DX_Set_${withArray.length}]`; type = type || "set"; withArray.push((0, _string.format)("{0} {1} as {2}", type, name, expression)); return name } function generateAxisMdx(options, axisName, cells, withArray, parseOptions) { const dimensions = options[axisName]; const crossJoins = []; let path = []; let expandedPaths = []; let expandIndex = 0; let expandLevel = 0; const result = []; const cellsString = (0, _string.format)("{{0}}", cells.join(",")); if (dimensions && dimensions.length) { if (options.headerName === axisName) { path = options.path; expandIndex = path.length } else if (options.headerName && options.oppositePath) { path = options.oppositePath; expandIndex = path.length } else { expandedPaths = ("columns" === axisName ? options.columnExpandedPaths : options.rowExpandedPaths) || expandedPaths } expandLevel = (0, _m_widget_utils.getExpandedLevel)(options, axisName); fillCrossJoins(crossJoins, [], expandLevel, expandIndex, path, options, axisName, cellsString, "rows" === axisName ? options.rowTake : options.columnTake, options.totalsOnly); (0, _iterator.each)(expandedPaths, ((_, expandedPath) => { fillCrossJoins(crossJoins, expandedPath, expandLevel, expandIndex, expandedPath, options, axisName, cellsString) })); for (let i = expandLevel; i >= path.length; i -= 1) { if (dimensions[i].hierarchyName) { parseOptions.visibleLevels[dimensions[i].hierarchyName] = parseOptions.visibleLevels[dimensions[i].hierarchyName] || []; parseOptions.visibleLevels[dimensions[i].hierarchyName].push(dimensions[i].dataField) } } } if (crossJoins.length) { let expression = function(elements) { const elementsString = elements.join(","); return elements.length > 1 ? `Union(${elementsString})` : elementsString }(crossJoins); if ("rows" === axisName && options.rowTake) { expression = (0, _string.format)("Subset({0}, {1}, {2})", expression, options.rowSkip > 0 ? options.rowSkip + 1 : 0, options.rowSkip > 0 ? options.rowTake : options.rowTake + 1) } if ("columns" === axisName && options.columnTake) { expression = (0, _string.format)("Subset({0}, {1}, {2})", expression, options.columnSkip > 0 ? options.columnSkip + 1 : 0, options.columnSkip > 0 ? options.columnTake : options.columnTake + 1) } const axisSet = `[DX_${axisName}]`; result.push(declare(expression, withArray, axisSet)); if (options.totalsOnly) { result.push(declare(`COUNT(${axisSet})`, withArray, `[DX_${axisName}_count]`, "member")) } } if ("columns" === axisName && cells.length && !options.skipValues) { result.push(cellsString) } return (0, _string.format)("{0} DIMENSION PROPERTIES PARENT_UNIQUE_NAME,HIERARCHY_UNIQUE_NAME, MEMBER_VALUE ON {1}", crossJoinElements(result), axisName) } function generateAxisFieldsFilter(fields) { const filterMembers = []; (0, _iterator.each)(fields, ((_, field) => { const { dataField: dataField } = field; const filterExpression = []; const filterValues = field.filterValues || []; let filterStringExpression; if (field.hierarchyName && (0, _type.isNumeric)(field.groupIndex)) { return }(0, _iterator.each)(filterValues, ((_, filterValue) => { let filterMdx = `${dataField}.${preparePathValue(Array.isArray(filterValue)?filterValue[filterValue.length-1]:filterValue,dataField)}`; if ("exclude" === field.filterType) { filterExpression.push(`${filterMdx}.parent`); filterMdx = `Descendants(${filterMdx})` } filterExpression.push(filterMdx) })); if (filterValues.length) { filterStringExpression = (0, _string.format)("{{0}}", filterExpression.join(",")); if ("exclude" === field.filterType) { filterStringExpression = `Except(${getAllMembers(field)},${filterStringExpression})` } filterMembers.push(filterStringExpression) } })); return filterMembers.length ? crossJoinElements(filterMembers) : "" } function generateMdxCore(axisStrings, withArray, columns, rows, filters, slice, cubeName) { let options = arguments.length > 7 && void 0 !== arguments[7] ? arguments[7] : {}; let mdxString = ""; const withString = (withArray.length ? `with ${withArray.join(" ")}` : "") + " "; if (axisStrings.length) { let select; if (options.totalsOnly) { const countMembers = []; if (rows.length) { countMembers.push("[DX_rows_count]") } if (columns.length) { countMembers.push("[DX_columns_count]") } select = `{${countMembers.join(",")}} on columns` } else { select = axisStrings.join(",") } mdxString = withString + (0, _string.format)("SELECT {2} FROM {0} {1} CELL PROPERTIES VALUE, FORMAT_STRING, LANGUAGE, BACK_COLOR, FORE_COLOR, FONT_FLAGS", function(columnsFilter, rowsFilter, filter, cubeName) { let from = `[${cubeName}]`; (0, _iterator.each)([columnsFilter, rowsFilter, filter], ((_, filter) => { if (filter) { from = (0, _string.format)("(SELECT {0} FROM {1})", `${filter}on 0`, from) } })); return from }(generateAxisFieldsFilter(columns), generateAxisFieldsFilter(rows), generateAxisFieldsFilter(filters || []), cubeName), slice.length ? (0, _string.format)("WHERE ({0})", slice.join(",")) : "", select) } return mdxString } function prepareDataFields(withArray, valueFields) { return (0, _iterator.map)(valueFields, (cell => { if ((0, _type.isString)(cell.expression)) { declare(cell.expression, withArray, cell.dataField, "member") } return cell.dataField })) } function addSlices(slices, options, headerName, path) { (0, _iterator.each)(path, ((index, value) => { const dimension = options[headerName][index]; if (!dimension.hierarchyName || dimension.hierarchyName !== options[headerName][index + 1].hierarchyName) { slices.push(`${dimension.dataField}.${preparePathValue(value,dimension.dataField)}`) } })) } function generateMDX(options, cubeName, parseOptions) { const columns = options.columns || []; const rows = options.rows || []; const values = options.values && options.values.length ? options.values : [{ dataField: "[Measures]" }]; const slice = []; const withArray = []; const axisStrings = []; const dataFields = prepareDataFields(withArray, values); parseOptions.measureCount = options.skipValues ? 1 : values.length; parseOptions.visibleLevels = {}; if (options.headerName && options.path) { addSlices(slice, options, options.headerName, options.path) } if (options.headerName && options.oppositePath) { addSlices(slice, options, "rows" === options.headerName ? "columns" : "rows", options.oppositePath) } if (columns.length || dataFields.length) { axisStrings.push(generateAxisMdx(options, "columns", dataFields, withArray, parseOptions)) } if (rows.length) { axisStrings.push(generateAxisMdx(options, "rows", dataFields, withArray, parseOptions)) } return generateMdxCore(axisStrings, withArray, columns, rows, options.filters, slice, cubeName, options) } function createDrillDownAxisSlice(slice, fields, path) { (0, _iterator.each)(path, ((index, value) => { const field = fields[index]; if (field.hierarchyName && (fields[index + 1] || {}).hierarchyName === field.hierarchyName) { return } slice.push(`${field.dataField}.${preparePathValue(value,field.dataField)}`) })) } function getNumber(str) { return parseInt(str, 10) } function getFirstChildText(node, childTagName) { return getNodeText(function(node, tagName) { return (node.getElementsByTagName(tagName) || [])[0] }(node, childTagName)) } function getNodeText(node) { return node && (node.textContent || node.text || node.innerHTML) || "" } function parseCells(xml, axes, measureCount) { const cells = []; let cell = []; let index = 0; const cellsOriginal = []; const cellElements = xml.getElementsByTagName("Cell"); const errorDictionary = {}; for (let i = 0; i < cellElements.length; i += 1) { const xmlCell = cellElements[i]; const valueElement = xmlCell.getElementsByTagName("Value")[0]; const errorElements = valueElement && valueElement.getElementsByTagName("Error") || []; const text = 0 === errorElements.length ? getNodeText(valueElement) : "#N/A"; const value = parseFloat(text); const isNumeric = text - value + 1 > 0; const cellOrdinal = getNumber(xmlCell.getAttribute("CellOrdinal")); if (errorElements.length) { errorDictionary[getNodeText(errorElements[0].getElementsByTagName("ErrorCode")[0])] = getNodeText(errorElements[0].getElementsByTagName("Description")[0]) } cellsOriginal[cellOrdinal] = { value: isNumeric ? value : text || null } }(0, _iterator.each)(axes[1], (() => { const row = []; cells.push(row); (0, _iterator.each)(axes[0], (() => { const measureIndex = index % measureCount; if (0 === measureIndex) { cell = []; row.push(cell) } cell.push(cellsOriginal[index] ? cellsOriginal[index].value : null); index += 1 })) })); Object.keys(errorDictionary).forEach((key => { _errors.errors.log("W4002", errorDictionary[key]) })); return cells } function preparePathValue(pathValue, dataField) { if (pathValue) { const shouldSkipWrappingPathValue = (0, _type.isString)(pathValue) && (pathValue.includes("&") || pathValue.startsWith(`${dataField}.`)); pathValue = shouldSkipWrappingPathValue ? pathValue : `[${pathValue}]`; if (dataField && 0 === pathValue.indexOf(`${dataField}.`)) { pathValue = pathValue.slice(dataField.length + 1, pathValue.length) } } return pathValue } function getItem(hash, name, member, index) { let item = hash[name]; if (!item) { item = {}; hash[name] = item } if (!(0, _type.isDefined)(item.value) && member) { item.text = member.caption; item.value = member.value; item.key = name || ""; item.levelName = member.levelName; item.hierarchyName = member.hierarchyName; item.parentName = member.parentName; item.index = index; item.level = member.level } return item } function getVisibleChildren(item, visibleLevels) { const result = []; const children = item.children && (item.children.length ? item.children : Object.keys(item.children.grandTotalHash || {}).reduce(((result, name) => result.concat(item.children.grandTotalHash[name].children)), [])); const firstChild = children && children[0]; if (firstChild && (visibleLevels[firstChild.hierarchyName] && visibleLevels[firstChild.hierarchyName].includes(firstChild.levelName) || !visibleLevels[firstChild.hierarchyName] || 0 === firstChild.level)) { const newChildren = children.filter((child => child.hierarchyName === firstChild.hierarchyName)); newChildren.grandTotalHash = children.grandTotalHash; return newChildren } if (firstChild) { for (let i = 0; i < children.length; i += 1) { if (children[i].hierarchyName === firstChild.hierarchyName) { result.push.apply(result, getVisibleChildren(children[i], visibleLevels)) } } } return result } function fillDataSourceAxes(dataSourceAxis, axisTuples, measureCount, visibleLevels) { const result = []; (0, _iterator.each)(axisTuples, ((tupleIndex, members) => { let parentItem = { children: result }; const dataIndex = (0, _type.isDefined)(measureCount) ? Math.floor(tupleIndex / measureCount) : tupleIndex; (0, _iterator.each)(members, ((_, member) => { parentItem = function(dataIndex, member, parentItem) { let children = parentItem.children = parentItem.children || []; const hash = children.hash = children.hash || {}; const grandTotalHash = children.grandTotalHash = children.grandTotalHash || {}; if (member.parentName) { parentItem = getItem(hash, member.parentName); children = parentItem.children = parentItem.children || [] } const currentItem = getItem(hash, member.name, member, dataIndex); if (member.hasValue && !currentItem.added) { currentItem.index = dataIndex; currentItem.added = true; children.push(currentItem) } if ((!parentItem.value || !parentItem.parentName) && member.parentName) { grandTotalHash[member.parentName] = parentItem } else if (grandTotalHash[parentItem.name]) { delete grandTotalHash[member.parentName] } return currentItem }(dataIndex, member, parentItem) })) })); const parentItem = { children: result }; parentItem.children = getVisibleChildren(parentItem, visibleLevels); const grandTotalIndex = function(parentItem, visibleLevels) { let grandTotalIndex; if (1 === parentItem.children.length && "" === parentItem.children[0].parentName) { grandTotalIndex = parentItem.children[0].index; const { grandTotalHash: grandTotalHash } = parentItem.children; parentItem.children = parentItem.children[0].children || []; parentItem.children.grandTotalHash = grandTotalHash; parentItem.children = getVisibleChildren(parentItem, visibleLevels) } else if (0 === parentItem.children.length) { grandTotalIndex = 0 } return grandTotalIndex }(parentItem, visibleLevels); (0, _m_widget_utils.foreachTree)(parentItem.children, (items => { const item = items[0]; const children = getVisibleChildren(item, visibleLevels); if (children.length) { item.children = children } else { delete item.children } delete item.levelName; delete item.hierarchyName; delete item.added; delete item.parentName; delete item.level }), true); (0, _iterator.each)(parentItem.children || [], ((_, e) => { dataSourceAxis.push(e) })); return grandTotalIndex } function checkError(xml) { const faultElementNS = xml.getElementsByTagName("soap:Fault"); const faultElement = xml.getElementsByTagName("Fault"); const errorElement = (0, _renderer.default)([].slice.call(faultElement.length ? faultElement : faultElementNS)).find("Error"); if (errorElement.length) { const description = errorElement.attr("Description"); const error = _errors.errors.Error("E4000", description); _errors.errors.log("E4000", description); return error } return null } function parseResult(xml, parseOptions) { const dataSource = { columns: [], rows: [] }; const { measureCount: measureCount } = parseOptions; const axes = function(xml, skipValues) { const axes = []; (0, _iterator.each)(xml.getElementsByTagName("Axis"), ((_, axisElement) => { const name = axisElement.getAttribute("name"); const axis = []; let index = 0; if (0 === name.indexOf("Axis") && (0, _type.isNumeric)(getNumber(name.substr(4)))) { axes.push(axis); (0, _iterator.each)(axisElement.getElementsByTagName("Tuple"), ((_, tupleElement) => { const tupleMembers = tupleElement.childNodes; let levelSum = 0; const members = []; let membersCount = skipValues ? tupleMembers.length : tupleMembers.length - 1; const isAxisWithMeasure = 1 === axes.length; if (isAxisWithMeasure) { membersCount -= 1 } axis.push(members); for (let i = membersCount; i >= 0; i -= 1) { const tuple = tupleMembers[i]; const level = getNumber(getFirstChildText(tuple, "LNum")); members[i] = { caption: getFirstChildText(tuple, "Caption"), value: (valueText = getFirstChildText(tuple, "MEMBER_VALUE"), (0, _type.isNumeric)(valueText) ? parseFloat(valueText) : valueText), level: level, index: index++, hasValue: !levelSum && (!!level || 0 === i), name: getFirstChildText(tuple, "UName"), hierarchyName: tupleMembers[i].getAttribute("Hierarchy"), parentName: getFirstChildText(tuple, "PARENT_UNIQUE_NAME"), levelName: getFirstChildText(tuple, "LName") }; levelSum += level } var valueText })) } })); while (axes.length < 2) { axes.push([ [{ level: 0 }] ]) } return axes }(xml, parseOptions.skipValues); dataSource.grandTotalColumnIndex = fillDataSourceAxes(dataSource.columns, axes[0], measureCount, parseOptions.visibleLevels); dataSource.grandTotalRowIndex = fillDataSourceAxes(dataSource.rows, axes[1], void 0, parseOptions.visibleLevels); dataSource.values = parseCells(xml, axes, measureCount); return dataSource } function parseDiscoverRowSet(xml, schema, dimensions, translatedDisplayFolders) { const result = []; const isMeasure = "MEASURE" === schema; const displayFolderField = isMeasure ? "MEASUREGROUP_NAME" : `${schema}_DISPLAY_FOLDER`; (0, _iterator.each)(xml.getElementsByTagName("row"), ((_, row) => { const hierarchyName = "LEVEL" === schema ? getFirstChildText(row, "HIERARCHY_UNIQUE_NAME") : void 0; const levelNumber = getFirstChildText(row, "LEVEL_NUMBER"); let displayFolder = getFirstChildText(row, displayFolderField); if (isMeasure) { displayFolder = translatedDisplayFolders[displayFolder] || displayFolder } if (("0" !== levelNumber || "true" !== getFirstChildText(row, `${schema}_IS_VISIBLE`)) && "2" !== getFirstChildText(row, "DIMENSION_TYPE")) { const dimension = isMeasure ? "DX_MEASURES" : getFirstChildText(row, "DIMENSION_UNIQUE_NAME"); const dataField = getFirstChildText(row, `${schema}_UNIQUE_NAME`); result.push({ dimension: dimensions.names[dimension] || dimension, groupIndex: levelNumber ? getNumber(levelNumber) - 1 : void 0, dataField: dataField, caption: getFirstChildText(row, `${schema}_CAPTION`), hierarchyName: hierarchyName, groupName: hierarchyName, displayFolder: displayFolder, isMeasure: isMeasure, isDefault: !!dimensions.defaultHierarchies[dataField] }) } })); return result } function parseStringWithUnicodeSymbols(str) { str = str.replace(/_x(....)_/g, ((_, group1) => String.fromCharCode(parseInt(group1, 16)))); const stringArray = str.match(/\[.+?\]/gi); if (stringArray && stringArray.length) { str = stringArray[stringArray.length - 1] } return str.replace(/\[/gi, "").replace(/\]/gi, "").replace(/\$/gi, "").replace(/\./gi, " ") } function sendQuery(storeOptions, mdxString) { mdxString = (0, _renderer.default)("
").text(mdxString).html(); return execXMLA(storeOptions, (0, _string.format)('{0}{1}TrueMicrosoft SQL Server Management Studio3600{2}', mdxString, storeOptions.catalog, getLocaleIdProperty())) } return { ctor(options) { this._options = options }, getFields() { const options = this._options; const { catalog: catalog } = options; const { cube: cube } = options; const localeIdProperty = getLocaleIdProperty(); const dimensionsRequest = execXMLA(options, (0, _string.format)(discover, catalog, cube, "MDSCHEMA_DIMENSIONS", localeIdProperty)); const measuresRequest = execXMLA(options, (0, _string.format)(discover, catalog, cube, "MDSCHEMA_MEASURES", localeIdProperty)); const hierarchiesRequest = execXMLA(options, (0, _string.format)(discover, catalog, cube, "MDSCHEMA_HIERARCHIES", localeIdProperty)); const levelsRequest = execXMLA(options, (0, _string.format)(discover, catalog, cube, "MDSCHEMA_LEVELS", localeIdProperty)); const result = new _deferred.Deferred; (0, _deferred.when)(dimensionsRequest, measuresRequest, hierarchiesRequest, levelsRequest).then(((dimensionsResponse, measuresResponse, hierarchiesResponse, levelsResponse) => { execXMLA(options, (0, _string.format)(discover, catalog, cube, "MDSCHEMA_MEASUREGROUPS", localeIdProperty)).done((measureGroupsResponse => { const dimensions = function(xml) { const result = { names: {}, defaultHierarchies: {} }; (0, _iterator.each)((0, _renderer.default)(xml).find("row"), (function() { const $row = (0, _renderer.default)(this); const type = $row.children("DIMENSION_TYPE").text(); const dimensionName = "2" === type ? "DX_MEASURES" : $row.children("DIMENSION_UNIQUE_NAME").text(); result.names[dimensionName] = $row.children("DIMENSION_CAPTION").text(); result.defaultHierarchies[$row.children("DEFAULT_HIERARCHY").text()] = true })); return result }(dimensionsResponse); const hierarchies = parseDiscoverRowSet(hierarchiesResponse, "HIERARCHY", dimensions); const levels = parseDiscoverRowSet(levelsResponse, "LEVEL", dimensions); const measureGroups = function(xml) { const measureGroups = {}; (0, _iterator.each)(xml.getElementsByTagName("row"), ((_, row) => { measureGroups[getFirstChildText(row, "MEASUREGROUP_NAME")] = getFirstChildText(row, "MEASUREGROUP_CAPTION") })); return measureGroups }(measureGroupsResponse); const fields = parseDiscoverRowSet(measuresResponse, "MEASURE", dimensions, measureGroups).concat(hierarchies); const levelsByHierarchy = {}; (0, _iterator.each)(levels, ((_, level) => { levelsByHierarchy[level.hierarchyName] = levelsByHierarchy[level.hierarchyName] || []; levelsByHierarchy[level.hierarchyName].push(level) })); (0, _iterator.each)(hierarchies, ((_, hierarchy) => { if (levelsByHierarchy[hierarchy.dataField] && levelsByHierarchy[hierarchy.dataField].length > 1) { hierarchy.groupName = hierarchy.hierarchyName = hierarchy.dataField; fields.push.apply(fields, levelsByHierarchy[hierarchy.hierarchyName]) } })); result.resolve(fields) })).fail(result.reject) })).fail(result.reject); return result }, load(options) { const result = new _deferred.Deferred; const storeOptions = this._options; const parseOptions = { skipValues: options.skipValues }; const mdxString = generateMDX(options, storeOptions.cube, parseOptions); let rowCountMdx; if (options.rowSkip || options.rowTake || options.columnTake || options.columnSkip) { rowCountMdx = generateMDX((0, _extend.extend)({}, options, { totalsOnly: true, rowSkip: null, rowTake: null, columnSkip: null, columnTake: null }), storeOptions.cube, {}) } const load = () => { if (mdxString) { (0, _deferred.when)(sendQuery(storeOptions, mdxString), rowCountMdx && sendQuery(storeOptions, rowCountMdx)).done(((executeXml, rowCountXml) => { const error = checkError(executeXml) || rowCountXml && checkError(rowCountXml); if (!error) { const response = parseResult(executeXml, parseOptions); if (rowCountXml) { ! function(data, options, totalCountXml) { const axes = []; const columnOptions = options.columns || []; const rowOptions = options.rows || []; if (columnOptions.length) { axes.push({}) } if (rowOptions.length) { axes.push({}) } const cells = parseCells(totalCountXml, [ [{}], [{}, {}] ], 1); if (!columnOptions.length && rowOptions.length) { data.rowCount = Math.max(cells[0][0][0] - 1, 0) } if (!rowOptions.length && columnOptions.length) { data.columnCount = Math.max(cells[0][0][0] - 1, 0) } if (rowOptions.length && columnOptions.length) { data.rowCount = Math.max(cells[0][0][0] - 1, 0); data.columnCount = Math.max(cells[1][0][0] - 1, 0) } if (void 0 !== data.rowCount && options.rowTake) { data.rows = [...Array(options.rowSkip)].concat(data.rows); data.rows.length = data.rowCount; for (let i = 0; i < data.rows.length; i += 1) { data.rows[i] = data.rows[i] || {} } } if (void 0 !== data.columnCount && options.columnTake) { data.columns = [...Array(options.columnSkip)].concat(data.columns); data.columns.length = data.columnCount; for (let i = 0; i < data.columns.length; i += 1) { data.columns[i] = data.columns[i] || {} } } }(response, options, rowCountXml) } result.resolve(response) } else { result.reject(error) } })).fail(result.reject) } else { result.resolve({ columns: [], rows: [], values: [], grandTotalColumnIndex: 0, grandTotalRowIndex: 0 }) } }; if (options.delay) { setTimeout(load, options.delay) } else { load() } return result }, supportPaging: () => true, getDrillDownItems(options, params) { const result = new _deferred.Deferred; const storeOptions = this._options; const mdxString = function(options, cubeName, params) { const columns = options.columns || []; const rows = options.rows || []; const values = options.values && options.values.length ? options.values : [{ dataField: "[Measures]" }]; const slice = []; const withArray = []; const axisStrings = []; const dataFields = prepareDataFields(withArray, values); const { maxRowCount: maxRowCount } = params; const customColumns = params.customColumns || []; const customColumnsString = customColumns.length > 0 ? ` return ${customColumns.join(",")}` : ""; createDrillDownAxisSlice(slice, columns, params.columnPath || []); createDrillDownAxisSlice(slice, rows, params.rowPath || []); if (columns.length || dataFields.length) { axisStrings.push([`${dataFields[params.dataIndex]||dataFields[0]} on 0`]) } const coreMDX = generateMdxCore(axisStrings, withArray, columns, rows, options.filters, slice, cubeName); return coreMDX ? `drillthrough${maxRowCount>0?` maxrows ${maxRowCount}`:""}${coreMDX}${customColumnsString}` : coreMDX }(options, storeOptions.cube, params); if (mdxString) { (0, _deferred.when)(sendQuery(storeOptions, mdxString)).done((executeXml => { const error = checkError(executeXml); if (!error) { result.resolve(function(xml) { const rows = xml.getElementsByTagName("row"); const result = []; const columnNames = {}; for (let i = 0; i < rows.length; i += 1) { const children = rows[i].childNodes; const item = {}; for (let j = 0; j < children.length; j += 1) { const { tagName: tagName } = children[j]; const name = columnNames[tagName] = columnNames[tagName] || parseStringWithUnicodeSymbols(tagName); item[name] = getNodeText(children[j]) } result.push(item) } return result }(executeXml)) } else { result.reject(error) } })).fail(result.reject) } else { result.resolve([]) } return result }, key: _common.noop, filter: _common.noop } }()).include(_m_widget_utils.storeDrillDownMixin); exports.default = { XmlaStore: XmlaStore } }, 46331: /*!*************************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/tree_list/data_controller/m_data_controller.js ***! \*************************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.TreeListDataController = void 0; var _common = __webpack_require__( /*! ../../../../core/utils/common */ 17781); var _deferred = __webpack_require__( /*! ../../../../core/utils/deferred */ 87739); var _extend = __webpack_require__( /*! ../../../../core/utils/extend */ 52576); var _m_data_controller = __webpack_require__( /*! ../../../grids/grid_core/data_controller/m_data_controller */ 32688); var _m_data_source_adapter = _interopRequireDefault(__webpack_require__( /*! ../data_source_adapter/m_data_source_adapter */ 39051)); var _m_core = _interopRequireDefault(__webpack_require__( /*! ../m_core */ 99477)); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } class TreeListDataController extends _m_data_controller.DataController { _getDataSourceAdapter() { return _m_data_source_adapter.default } _getNodeLevel(node) { let level = -1; while (node.parent) { if (node.visible) { level++ } node = node.parent } return level } _generateDataItem(node, options) { return { rowType: "data", node: node, key: node.key, data: node.data, isExpanded: this.isRowExpanded(node.key, options), level: this._getNodeLevel(node) } } _loadOnOptionChange() { this._dataSource.load() } _isItemEquals(item1, item2) { if (item1.isSelected !== item2.isSelected) { return false } if (item1.node && item2.node && item1.node.hasChildren !== item2.node.hasChildren) { return false } if (item1.level !== item2.level || item1.isExpanded !== item2.isExpanded) { return false } return super._isItemEquals.apply(this, arguments) } _isCellChanged(oldRow, newRow, visibleRowIndex, columnIndex, isLiveUpdate) { const firstDataColumnIndex = this._columnsController.getFirstDataColumnIndex(); if (columnIndex === firstDataColumnIndex && oldRow.isSelected !== newRow.isSelected) { return true } return super._isCellChanged.apply(this, arguments) } init() { this.createAction("onRowExpanding"); this.createAction("onRowExpanded"); this.createAction("onRowCollapsing"); this.createAction("onRowCollapsed"); super.init.apply(this, arguments) } keyOf(data) { const dataSource = this._dataSource; if (dataSource) { return dataSource.keyOf(data) } } key() { const dataSource = this._dataSource; if (dataSource) { return dataSource.getKeyExpr() } } publicMethods() { return super.publicMethods().concat(["expandRow", "collapseRow", "isRowExpanded", "getRootNode", "getNodeByKey", "loadDescendants", "forEachNode"]) } changeRowExpand(key) { if (this._dataSource) { const args = { key: key }; const isExpanded = this.isRowExpanded(key); this.executeAction(isExpanded ? "onRowCollapsing" : "onRowExpanding", args); if (!args.cancel) { return this._dataSource.changeRowExpand(key).done((() => { this.executeAction(isExpanded ? "onRowCollapsed" : "onRowExpanded", args) })) } } return (new _deferred.Deferred).resolve() } isRowExpanded(key, cache) { return this._dataSource && this._dataSource.isRowExpanded(key, cache) } expandRow(key) { if (!this.isRowExpanded(key)) { return this.changeRowExpand(key) } return (new _deferred.Deferred).resolve() } collapseRow(key) { if (this.isRowExpanded(key)) { return this.changeRowExpand(key) } return (new _deferred.Deferred).resolve() } getRootNode() { return this._dataSource && this._dataSource.getRootNode() } optionChanged(args) { switch (args.name) { case "rootValue": case "parentIdExpr": case "itemsExpr": case "filterMode": case "expandNodesOnFiltering": case "autoExpandAll": case "hasItemsExpr": case "dataStructure": this._columnsController.reset(); this._items = []; this._refreshDataSource(); args.handled = true; break; case "expandedRowKeys": case "onNodesInitialized": if (this._dataSource && !this._dataSource._isNodesInitializing && !(0, _common.equalByValue)(args.value, args.previousValue)) { this._loadOnOptionChange() } args.handled = true; break; case "maxFilterLengthInRequest": args.handled = true; break; default: super.optionChanged(args) } } getNodeByKey(key) { if (!this._dataSource) { return } return this._dataSource.getNodeByKey(key) } getChildNodeKeys(parentKey) { if (!this._dataSource) { return } return this._dataSource.getChildNodeKeys(parentKey) } loadDescendants(keys, childrenOnly) { if (!this._dataSource) { return } return this._dataSource.loadDescendants(keys, childrenOnly) } forEachNode() { this._dataSource.forEachNode.apply(this, arguments) } } exports.TreeListDataController = TreeListDataController; _m_core.default.registerModule("data", { defaultOptions: () => (0, _extend.extend)({}, _m_data_controller.dataControllerModule.defaultOptions(), { itemsExpr: "items", parentIdExpr: "parentId", rootValue: 0, dataStructure: "plain", expandedRowKeys: [], filterMode: "withAncestors", expandNodesOnFiltering: true, autoExpandAll: false, onNodesInitialized: null, maxFilterLengthInRequest: 1500, paging: { enabled: false } }), controllers: { data: TreeListDataController } }) }, 39051: /*!*********************************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/tree_list/data_source_adapter/m_data_source_adapter.js ***! \*********************************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _array_store = _interopRequireDefault(__webpack_require__( /*! ../../../../common/data/array_store */ 80556)); var _array_utils = __webpack_require__( /*! ../../../../common/data/array_utils */ 43792); var _query = _interopRequireDefault(__webpack_require__( /*! ../../../../common/data/query */ 30771)); var _store_helper = _interopRequireDefault(__webpack_require__( /*! ../../../../common/data/store_helper */ 66177)); var _common = __webpack_require__( /*! ../../../../core/utils/common */ 17781); var _data = __webpack_require__( /*! ../../../../core/utils/data */ 31e3); var _deferred = __webpack_require__( /*! ../../../../core/utils/deferred */ 87739); var _extend = __webpack_require__( /*! ../../../../core/utils/extend */ 52576); var _iterator = __webpack_require__( /*! ../../../../core/utils/iterator */ 21274); var _type = __webpack_require__( /*! ../../../../core/utils/type */ 11528); var _ui = _interopRequireDefault(__webpack_require__( /*! ../../../../ui/widget/ui.errors */ 35185)); var _m_data_source_adapter = _interopRequireDefault(__webpack_require__( /*! ../../../grids/grid_core/data_source_adapter/m_data_source_adapter */ 3120)); var _m_utils = _interopRequireDefault(__webpack_require__( /*! ../../../grids/grid_core/m_utils */ 53226)); var _m_core = _interopRequireDefault(__webpack_require__( /*! ../m_core */ 99477)); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } const { queryByOptions: queryByOptions } = _store_helper.default; const isFullBranchFilterMode = that => "fullBranch" === that.option("filterMode"); const applySorting = (data, sort) => queryByOptions((0, _query.default)(data), { sort: sort }).toArray(); class DataSourceAdapterTreeList extends _m_data_source_adapter.default { _createKeyGetter() { const keyExpr = this.getKeyExpr(); return (0, _data.compileGetter)(keyExpr) } _createKeySetter() { const keyExpr = this.getKeyExpr(); if ((0, _type.isFunction)(keyExpr)) { return keyExpr } return (0, _data.compileSetter)(keyExpr) } createParentIdGetter() { return (0, _data.compileGetter)(this.option("parentIdExpr")) } createParentIdSetter() { const parentIdExpr = this.option("parentIdExpr"); if ((0, _type.isFunction)(parentIdExpr)) { return parentIdExpr } return (0, _data.compileSetter)(parentIdExpr) } _createItemsGetter() { return (0, _data.compileGetter)(this.option("itemsExpr")) } _createHasItemsGetter() { const hasItemsExpr = this.option("hasItemsExpr"); return hasItemsExpr && (0, _data.compileGetter)(hasItemsExpr) } _createHasItemsSetter() { const hasItemsExpr = this.option("hasItemsExpr"); if ((0, _type.isFunction)(hasItemsExpr)) { return hasItemsExpr } return hasItemsExpr && (0, _data.compileSetter)(hasItemsExpr) } _updateIndexByKeyObject(items) { const that = this; that._indexByKey = {}; (0, _iterator.each)(items, ((index, item) => { that._indexByKey[item.key] = index })) } _calculateHasItems(node, options) { const that = this; const { parentIds: parentIds } = options.storeLoadOptions; let hasItems; const isFullBranch = isFullBranchFilterMode(that); if (that._hasItemsGetter && (parentIds || !options.storeLoadOptions.filter || isFullBranch)) { hasItems = that._hasItemsGetter(node.data) } if (void 0 === hasItems) { if (!that._isChildrenLoaded[node.key] && options.remoteOperations.filtering && (parentIds || isFullBranch)) { hasItems = true } else if (options.loadOptions.filter && !options.remoteOperations.filtering && isFullBranch) { hasItems = node.children.length } else { hasItems = node.hasChildren } } return !!hasItems } _fillVisibleItemsByNodes(nodes, options, result) { for (let i = 0; i < nodes.length; i++) { if (nodes[i].visible) { result.push(nodes[i]) } if ((this.isRowExpanded(nodes[i].key, options) || !nodes[i].visible) && nodes[i].hasChildren && nodes[i].children.length) { this._fillVisibleItemsByNodes(nodes[i].children, options, result) } } } _convertItemToNode(item, rootValue, nodeByKey) { const key = this._keyGetter(item); let parentId = this._parentIdGetter(item); parentId = (0, _type.isDefined)(parentId) ? parentId : rootValue; const parentNode = nodeByKey[parentId] = nodeByKey[parentId] || { key: parentId, children: [] }; const node = nodeByKey[key] = nodeByKey[key] || { key: key, children: [] }; node.data = item; node.parent = parentNode; return node } _createNodesByItems(items, visibleItems) { const that = this; const rootValue = that.option("rootValue"); const visibleByKey = {}; const nodeByKey = that._nodeByKey = {}; let i; if (visibleItems) { for (i = 0; i < visibleItems.length; i++) { visibleByKey[this._keyGetter(visibleItems[i])] = true } } for (i = 0; i < items.length; i++) { const node = that._convertItemToNode(items[i], rootValue, nodeByKey); if (void 0 === node.key) { return } node.visible = !visibleItems || !!visibleByKey[node.key]; if (node.parent) { node.parent.children.push(node) } } const rootNode = nodeByKey[rootValue] || { key: rootValue, children: [] }; rootNode.level = -1; return rootNode } _convertDataToPlainStructure(data, parentId, result) { let key; if (this._itemsGetter && !data.isConverted) { result = result || []; for (let i = 0; i < data.length; i++) { const item = (0, _array_utils.createObjectWithChanges)(data[i]); key = this._keyGetter(item); if (void 0 === key) { key = result.length + 1; this._keySetter(item, key) } this._parentIdSetter(item, void 0 === parentId ? this.option("rootValue") : parentId); result.push(item); const childItems = this._itemsGetter(item); if (childItems && childItems.length) { this._convertDataToPlainStructure(childItems, key, result); const itemsExpr = this.option("itemsExpr"); if (!(0, _type.isFunction)(itemsExpr)) { delete item[itemsExpr] } } } result.isConverted = true; return result } return data } _createIdFilter(field, keys) { const parentIdFilters = []; for (let i = 0; i < keys.length; i++) { parentIdFilters.push([field, "=", keys[i]]) } return _m_utils.default.combineFilters(parentIdFilters, "or") } _customizeRemoteOperations(options, operationTypes) { super._customizeRemoteOperations.apply(this, arguments); options.remoteOperations.paging = false; let expandVisibleNodes = false; if (this.option("autoExpandAll")) { options.remoteOperations.sorting = false; options.remoteOperations.filtering = false; if ((!this._lastLoadOptions || operationTypes.filtering && !options.storeLoadOptions.filter) && !options.isCustomLoading) { expandVisibleNodes = true } } if (!options.isCustomLoading) { this._isReload = this._isReload || operationTypes.reload; if (!options.cachedStoreData) { this._isChildrenLoaded = {}; if (this._isReload) { this._nodeByKey = {} } } if (this.option("expandNodesOnFiltering") && (operationTypes.filtering || this._isReload && options.storeLoadOptions.filter)) { if (options.storeLoadOptions.filter) { expandVisibleNodes = true } else { options.collapseVisibleNodes = true } } } options.expandVisibleNodes = expandVisibleNodes } _getParentIdsToLoad(parentIds) { const parentIdsToLoad = []; for (let i = 0; i < parentIds.length; i++) { const node = this.getNodeByKey(parentIds[i]); if (!node || node.hasChildren && !node.children.length) { parentIdsToLoad.push(parentIds[i]) } } return parentIdsToLoad } _handleCustomizeStoreLoadOptions(options) { const rootValue = this.option("rootValue"); const parentIdExpr = this.option("parentIdExpr"); let { parentIds: parentIds } = options.storeLoadOptions; if (parentIds) { options.isCustomLoading = false } super._handleCustomizeStoreLoadOptions.apply(this, arguments); if (options.remoteOperations.filtering && !options.isCustomLoading) { if (isFullBranchFilterMode(this) && options.cachedStoreData || !options.storeLoadOptions.filter) { const expandedRowKeys = options.collapseVisibleNodes ? [] : this.option("expandedRowKeys"); parentIds = [rootValue].concat(expandedRowKeys).concat(parentIds || []); const parentIdsToLoad = options.data ? this._getParentIdsToLoad(parentIds) : parentIds; if (parentIdsToLoad.length) { options.cachedPagingData = void 0; options.data = void 0; options.mergeStoreLoadData = true; options.delay = this.option("loadingTimeout") } options.storeLoadOptions.parentIds = parentIdsToLoad; options.storeLoadOptions.filter = this._createIdFilter(parentIdExpr, parentIdsToLoad) } } } _generateInfoToLoad(data, needChildren) { const that = this; let key; const keyMap = {}; const resultKeyMap = {}; const resultKeys = []; const rootValue = that.option("rootValue"); let i; for (i = 0; i < data.length; i++) { key = needChildren ? that._parentIdGetter(data[i]) : that._keyGetter(data[i]); keyMap[key] = true } for (i = 0; i < data.length; i++) { key = needChildren ? that._keyGetter(data[i]) : that._parentIdGetter(data[i]); const needToLoad = needChildren ? that.isRowExpanded(key) : key !== rootValue; if (!keyMap[key] && !resultKeyMap[key] && needToLoad) { resultKeyMap[key] = true; resultKeys.push(key) } } return { keyMap: resultKeyMap, keys: resultKeys } } _loadParentsOrChildren(data, options, needChildren) { var _options$storeLoadOpt, _options$loadOptions; let filter; let needLocalFiltering; const { keys: keys, keyMap: keyMap } = this._generateInfoToLoad(data, needChildren); const d = new _deferred.Deferred; const isRemoteFiltering = options.remoteOperations.filtering; const maxFilterLengthInRequest = this.option("maxFilterLengthInRequest"); const sort = (null === (_options$storeLoadOpt = options.storeLoadOptions) || void 0 === _options$storeLoadOpt ? void 0 : _options$storeLoadOpt.sort) ?? (null === (_options$loadOptions = options.loadOptions) || void 0 === _options$loadOptions ? void 0 : _options$loadOptions.sort); let loadOptions = isRemoteFiltering ? options.storeLoadOptions : options.loadOptions; const concatLoadedData = loadedData => { if (isRemoteFiltering) { this._cachedStoreData = applySorting(this._cachedStoreData.concat(loadedData), sort) } return applySorting(data.concat(loadedData), sort) }; if (!keys.length) { return d.resolve(data) } let cachedNodes = keys.map((id => this.getNodeByKey(id))).filter((node => node && node.data)); if (cachedNodes.length === keys.length) { if (needChildren) { cachedNodes = cachedNodes.reduce(((result, node) => result.concat(node.children)), []) } if (cachedNodes.length) { return this._loadParentsOrChildren(concatLoadedData(cachedNodes.map((node => node.data))), options, needChildren) } } const keyExpr = needChildren ? this.option("parentIdExpr") : this.getKeyExpr(); filter = this._createIdFilter(keyExpr, keys); const filterLength = encodeURI(JSON.stringify(filter)).length; if (filterLength > maxFilterLengthInRequest) { filter = itemData => keyMap[needChildren ? this._parentIdGetter(itemData) : this._keyGetter(itemData)]; needLocalFiltering = isRemoteFiltering } loadOptions = (0, _extend.extend)({}, loadOptions, { filter: !needLocalFiltering ? filter : null }); const store = options.fullData ? new _array_store.default(options.fullData) : this._dataSource.store(); this.loadFromStore(loadOptions, store).done((loadedData => { if (loadedData.length) { if (needLocalFiltering) { loadedData = (0, _query.default)(loadedData).filter(filter).toArray() } this._loadParentsOrChildren(concatLoadedData(loadedData), options, needChildren).done(d.resolve).fail(d.reject) } else { d.resolve(data) } })).fail(d.reject); return d } _loadParents(data, options) { return this._loadParentsOrChildren(data, options) } _loadChildrenIfNeed(data, options) { if (isFullBranchFilterMode(this)) { return this._loadParentsOrChildren(data, options, true) } return (0, _deferred.when)(data) } _updateHasItemsMap(options) { const { parentIds: parentIds } = options.storeLoadOptions; if (parentIds) { for (let i = 0; i < parentIds.length; i++) { this._isChildrenLoaded[parentIds[i]] = true } } } _getKeyInfo() { return { key: () => "key", keyOf: data => data.key } } _processChanges(changes) { let processedChanges = []; changes.forEach((change => { if ("insert" === change.type) { processedChanges = processedChanges.concat(this._applyInsert(change)) } else if ("remove" === change.type) { processedChanges = processedChanges.concat(this._applyRemove(change)) } else if ("update" === change.type) { processedChanges.push({ type: change.type, key: change.key, data: { data: change.data } }) } })); return processedChanges } _handleChanging(e) { super._handleChanging.apply(this, arguments); e.postProcessChanges = changes => { const changesToProcess = changes.filter((item => "update" === item.type)); return this._processChanges(changesToProcess) } } _applyBatch(changes) { const processedChanges = this._processChanges(changes); super._applyBatch(processedChanges) } _setHasItems(node, value) { const hasItemsSetter = this._hasItemsSetter; node.hasChildren = value; if (hasItemsSetter && node.data) { hasItemsSetter(node.data, value) } } _applyInsert(change) { const that = this; const baseChanges = []; const parentId = that.parentKeyOf(change.data); const parentNode = that.getNodeByKey(parentId); if (parentNode) { const rootValue = that.option("rootValue"); const node = that._convertItemToNode(change.data, rootValue, that._nodeByKey); node.hasChildren = false; node.level = parentNode.level + 1; node.visible = true; parentNode.children.push(node); that._isChildrenLoaded[node.key] = true; that._setHasItems(parentNode, true); if ((!parentNode.parent || that.isRowExpanded(parentNode.key)) && void 0 !== change.index) { let index = that.items().indexOf(parentNode) + 1; index += change.index >= 0 ? Math.min(change.index, parentNode.children.length) : parentNode.children.length; baseChanges.push({ type: change.type, data: node, index: index }) } } return baseChanges } _needToCopyDataObject() { return false } _applyRemove(change) { let baseChanges = []; const node = this.getNodeByKey(change.key); const parentNode = node && node.parent; if (parentNode) { const index = parentNode.children.indexOf(node); if (index >= 0) { parentNode.children.splice(index, 1); if (!parentNode.children.length) { this._setHasItems(parentNode, false) } baseChanges.push(change); baseChanges = baseChanges.concat(this.getChildNodeKeys(change.key).map((key => ({ type: change.type, key: key })))) } } return baseChanges } _handleDataLoaded(options) { const data = options.data = this._convertDataToPlainStructure(options.data); if (!options.remoteOperations.filtering && options.loadOptions.filter) { options.fullData = queryByOptions((0, _query.default)(options.data), { sort: options.loadOptions && options.loadOptions.sort }).toArray() } this._updateHasItemsMap(options); super._handleDataLoaded(options); if (data.isConverted && this._cachedStoreData) { this._cachedStoreData.isConverted = true } } _fillNodes(nodes, options, expandedRowKeys, level) { const isFullBranch = isFullBranchFilterMode(this); level = level || 0; for (let i = 0; i < nodes.length; i++) { const node = nodes[i]; let needToExpand = false; this._fillNodes(nodes[i].children, options, expandedRowKeys, level + 1); node.level = level; node.hasChildren = this._calculateHasItems(node, options); if (node.visible && node.hasChildren) { if (isFullBranch) { if (node.children.filter((node => node.visible)).length) { needToExpand = true } else if (node.children.length) { _m_core.default.foreachNodes(node.children, (node => { node.visible = true })) } } else { needToExpand = true } if (options.expandVisibleNodes && needToExpand) { expandedRowKeys.push(node.key) } } if (node.visible || node.hasChildren) { node.parent.hasChildren = true } } } _processTreeStructure(options, visibleItems) { let { data: data } = options; const { parentIds: parentIds } = options.storeLoadOptions; const expandedRowKeys = []; if (parentIds && parentIds.length || this._isReload) { if (options.fullData) { data = options.fullData; visibleItems = visibleItems || options.data } this._rootNode = this._createNodesByItems(data, visibleItems); if (!this._rootNode) { options.data = (new _deferred.Deferred).reject(_ui.default.Error("E1046", this.getKeyExpr())); return } this._fillNodes(this._rootNode.children, options, expandedRowKeys); this._isNodesInitializing = true; if (options.collapseVisibleNodes || expandedRowKeys.length) { this.option("expandedRowKeys", expandedRowKeys) } this._isReload = false; this.executeAction("onNodesInitialized", { root: this._rootNode }); this._isNodesInitializing = false } const resultData = []; this._fillVisibleItemsByNodes(this._rootNode.children, options, resultData); options.data = resultData; this._totalItemsCount = resultData.length } _handleDataLoadedCore(options) { const that = this; const { data: data } = options; const filter = options.storeLoadOptions.filter || options.loadOptions.filter; const filterMode = that.option("filterMode"); let visibleItems; const { parentIds: parentIds } = options.storeLoadOptions; const needLoadParents = filter && (!parentIds || !parentIds.length) && "standard" !== filterMode; if (!options.isCustomLoading) { if (needLoadParents) { const d = options.data = new _deferred.Deferred; if ("matchOnly" === filterMode) { visibleItems = data } return that._loadParents(data, options).done((data => { that._loadChildrenIfNeed(data, options).done((data => { options.data = data; that._processTreeStructure(options, visibleItems); super._handleDataLoadedCore.call(that, options); d.resolve(options.data) })) })).fail(d.reject) } that._processTreeStructure(options) } super._handleDataLoadedCore(options) } _handlePush(_ref) { let { changes: changes } = _ref; const reshapeOnPush = this._dataSource._reshapeOnPush; const isNeedReshape = reshapeOnPush && !!changes.length; if (isNeedReshape) { this._isReload = true } changes.forEach((change => { change.index ?? (change.index = -1) })); super._handlePush.apply(this, arguments) } init(dataSource, remoteOperations) { super.init.apply(this, arguments); const dataStructure = this.option("dataStructure"); this._keyGetter = this._createKeyGetter(); this._parentIdGetter = this.createParentIdGetter(); this._hasItemsGetter = this._createHasItemsGetter(); this._hasItemsSetter = this._createHasItemsSetter(); if ("tree" === dataStructure) { this._itemsGetter = this._createItemsGetter(); this._keySetter = this._createKeySetter(); this._parentIdSetter = this.createParentIdSetter() } this._nodeByKey = {}; this._isChildrenLoaded = {}; this._totalItemsCount = 0; this.createAction("onNodesInitialized") } getKeyExpr() { const store = this.store(); const key = store && store.key(); const keyExpr = this.option("keyExpr"); if ((0, _type.isDefined)(key) && (0, _type.isDefined)(keyExpr)) { if (!(0, _common.equalByValue)(key, keyExpr)) { throw _ui.default.Error("E1044") } } return key || keyExpr || "id" } keyOf(data) { return this._keyGetter && this._keyGetter(data) } parentKeyOf(data) { return this._parentIdGetter && this._parentIdGetter(data) } getRootNode() { return this._rootNode } totalItemsCount() { return this._totalItemsCount + this._totalCountCorrection } isRowExpanded(key, cache) { if (cache) { let { isExpandedByKey: isExpandedByKey } = cache; if (!isExpandedByKey) { const expandedRowKeys = this.option("expandedRowKeys") ?? []; isExpandedByKey = cache.isExpandedByKey = {}; expandedRowKeys.forEach((key => { isExpandedByKey[key] = true })) } return !!isExpandedByKey[key] } const indexExpandedNodeKey = _m_utils.default.getIndexByKey(key, this.option("expandedRowKeys"), null); return indexExpandedNodeKey >= 0 } _changeRowExpandCore(key) { const expandedRowKeys = this.option("expandedRowKeys").slice(); const indexExpandedNodeKey = _m_utils.default.getIndexByKey(key, expandedRowKeys, null); if (indexExpandedNodeKey < 0) { expandedRowKeys.push(key) } else { expandedRowKeys.splice(indexExpandedNodeKey, 1) } this.option("expandedRowKeys", expandedRowKeys) } changeRowExpand(key) { this._changeRowExpandCore(key); return this._isNodesInitializing ? (new _deferred.Deferred).resolve() : this.load() } getNodeByKey(key) { if (this._nodeByKey) { return this._nodeByKey[key] } } getNodeLeafKeys() { const that = this; const result = []; const keys = that._rootNode ? [that._rootNode.key] : []; keys.forEach((key => { const node = that.getNodeByKey(key); node && _m_core.default.foreachNodes([node], (childNode => { !childNode.children.length && result.push(childNode.key) })) })); return result } getChildNodeKeys(parentKey) { const node = this.getNodeByKey(parentKey); const childrenKeys = []; node && _m_core.default.foreachNodes(node.children, (childNode => { childrenKeys.push(childNode.key) })); return childrenKeys } loadDescendants(keys, childrenOnly) { const that = this; const d = new _deferred.Deferred; const remoteOperations = that.remoteOperations(); if ((0, _type.isDefined)(keys)) { keys = Array.isArray(keys) ? keys : [keys] } else { keys = that.getNodeLeafKeys() } if (!remoteOperations.filtering || !keys.length) { return d.resolve() } const loadOptions = that._dataSource._createStoreLoadOptions(); loadOptions.parentIds = keys; that.load(loadOptions).done((() => { if (!childrenOnly) { const childKeys = function(that, keys) { const childKeys = []; keys.forEach((key => { const node = that.getNodeByKey(key); node && node.children.forEach((child => { childKeys.push(child.key) })) })); return childKeys }(that, keys); if (childKeys.length) { that.loadDescendants(childKeys, childrenOnly).done(d.resolve).fail(d.reject); return } } d.resolve() })).fail(d.reject); return d.promise() } forEachNode() { let nodes = []; let callback; if (1 === arguments.length) { callback = arguments[0]; const rootNode = this.getRootNode(); nodes = rootNode && rootNode.children || [] } else if (2 === arguments.length) { callback = arguments[1]; nodes = arguments[0]; nodes = Array.isArray(nodes) ? nodes : [nodes] } _m_core.default.foreachNodes(nodes, callback) } } let DataSourceAdapterTreeListType = DataSourceAdapterTreeList; exports.default = { extend(extender) { DataSourceAdapterTreeListType = extender(DataSourceAdapterTreeListType) }, create: component => new DataSourceAdapterTreeListType(component) } }, 53343: /*!*********************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/tree_list/editing/m_editing.js ***! \*********************************************************************************************/ function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { __webpack_require__( /*! ../module_not_extended/editor_factory */ 16109); var _message = _interopRequireDefault(__webpack_require__( /*! ../../../../common/core/localization/message */ 4671)); var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../../../core/renderer */ 64553)); var _deferred = __webpack_require__( /*! ../../../../core/utils/deferred */ 87739); var _extend = __webpack_require__( /*! ../../../../core/utils/extend */ 52576); var _type = __webpack_require__( /*! ../../../../core/utils/type */ 11528); var _ui = _interopRequireDefault(__webpack_require__( /*! ../../../../ui/widget/ui.errors */ 35185)); var _m_editing = __webpack_require__( /*! ../../../grids/grid_core/editing/m_editing */ 13876); var _m_utils = _interopRequireDefault(__webpack_require__( /*! ../../../grids/grid_core/m_utils */ 53226)); var _m_core = _interopRequireDefault(__webpack_require__( /*! ../m_core */ 99477)); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } class EditingController extends _m_editing.editingModule.controllers.editing { _generateNewItem(key) { const item = super._generateNewItem(key); item.data = { key: key }; item.children = []; item.level = 0; item.parentKey = this.option("rootValue"); return item } _isProcessedItem() { return true } _setInsertAfterOrBeforeKey(change, parentKey) { const dataSourceAdapter = this._dataController.dataSource(); const key = parentKey || (null === dataSourceAdapter || void 0 === dataSourceAdapter ? void 0 : dataSourceAdapter.parentKeyOf(change.data)); if (void 0 !== key && key !== this.option("rootValue")) { change.insertAfterKey = key } else { super._setInsertAfterOrBeforeKey.apply(this, arguments) } } _getLoadedRowIndex(items, change) { const dataSourceAdapter = this._dataController.dataSource(); const parentKey = null === dataSourceAdapter || void 0 === dataSourceAdapter ? void 0 : dataSourceAdapter.parentKeyOf(change.data); if (void 0 !== parentKey && parentKey !== this.option("rootValue")) { const rowIndex = _m_utils.default.getIndexByKey(parentKey, items); if (rowIndex >= 0 && this._dataController.isRowExpanded(parentKey)) { return super._getLoadedRowIndex.apply(this, arguments) } return -1 } return super._getLoadedRowIndex.apply(this, arguments) } _isEditColumnVisible() { const result = super._isEditColumnVisible.apply(this, arguments); const editingOptions = this.option("editing"); return result || editingOptions.allowAdding } _isDefaultButtonVisible(button, options) { const result = super._isDefaultButtonVisible.apply(this, arguments); const { row: row } = options; if ("add" === button.name) { return this.allowAdding(options) && row.rowIndex !== this._getVisibleEditRowIndex() && !(row.removed || row.isNewRow) } return result } _getEditingButtons(options) { const buttons = super._getEditingButtons.apply(this, arguments); if (!options.column.buttons) { buttons.unshift(this._getButtonConfig("add", options)) } return buttons } _beforeSaveEditData(change) { const result = super._beforeSaveEditData.apply(this, arguments); if (change && "insert" !== change.type) { var _this$_dataController; const store = null === (_this$_dataController = this._dataController) || void 0 === _this$_dataController ? void 0 : _this$_dataController.store(); const key = null === store || void 0 === store ? void 0 : store.key(); if (!(0, _type.isDefined)(key)) { throw _ui.default.Error("E1045") } } return result } addRowByRowIndex(rowIndex) { const row = this._dataController.getVisibleRows()[rowIndex]; return this.addRow(row ? row.key : void 0) } addRow(key) { if (void 0 === key) { key = this.option("rootValue") } return super.addRow.call(this, key) } _addRowCore(data, parentKey, oldEditRowIndex) { const rootValue = this.option("rootValue"); const dataSourceAdapter = this._dataController.dataSource(); const parentKeyGetter = dataSourceAdapter.createParentIdGetter(); parentKey = parentKeyGetter(data); if (void 0 !== parentKey && parentKey !== rootValue && !this._dataController.isRowExpanded(parentKey)) { const deferred = new _deferred.Deferred; this._dataController.expandRow(parentKey).done((() => { setTimeout((() => { super._addRowCore.call(this, data, parentKey, oldEditRowIndex).done(deferred.resolve).fail(deferred.reject) })) })).fail(deferred.reject); return deferred.promise() } return super._addRowCore.call(this, data, parentKey, oldEditRowIndex) } _initNewRow(options, parentKey) { const dataSourceAdapter = this._dataController.dataSource(); const parentIdSetter = dataSourceAdapter.createParentIdSetter(); parentIdSetter(options.data, parentKey); return super._initNewRow.apply(this, arguments) } allowAdding(options) { return this._allowEditAction("allowAdding", options) } _needToCloseEditableCell($targetElement) { return super._needToCloseEditableCell.apply(this, arguments) || $targetElement.closest(".dx-treelist-icon-container").length && this.isEditing() } getButtonLocalizationNames() { const names = super.getButtonLocalizationNames.apply(this); names.add = "dxTreeList-editingAddRowToNode"; return names } } _m_core.default.registerModule("editing", { defaultOptions: () => (0, _extend.extend)(true, _m_editing.editingModule.defaultOptions(), { editing: { texts: { addRowToNode: _message.default.format("dxTreeList-editingAddRowToNode") } } }), controllers: { editing: EditingController }, extenders: { controllers: { data: Base => class extends((0, _m_editing.dataControllerEditingExtenderMixin)(Base)) { changeRowExpand() { this._editingController.refresh(); return super.changeRowExpand.apply(this, arguments) } } }, views: { rowsView: Base => class extends(_m_editing.editingModule.extenders.views.rowsView(Base)) { _renderCellCommandContent($container, options) { const editingController = this._editingController; const isEditRow = options.row && editingController.isEditRow(options.row.rowIndex); const isEditing = options.isEditing || isEditRow; if (!options.isOnForm && !isEditing) { return super._renderCellCommandContent.apply(this, arguments) } return false } validateClick(e) { const $targetElement = (0, _renderer.default)(e.event.target); const originalClickHandler = "dxdblclick" === e.event.type ? super._rowDblClick : super._rowClick; if ($targetElement.closest(".dx-select-checkbox").length) { return false } return !this.needToCallOriginalClickHandler(e, originalClickHandler) } needToCallOriginalClickHandler(e, originalClickHandler) { const $targetElement = (0, _renderer.default)(e.event.target); if (!$targetElement.closest(".dx-treelist-icon-container").length) { originalClickHandler.call(this, e); return true } return false } _rowClick(e) { if (this.validateClick(e)) { super._rowClickTreeListHack.apply(this, arguments) } } _rowDblClick(e) { if (this.validateClick(e)) { super._rowDblClickTreeListHack.apply(this, arguments) } } }, headerPanel: _m_editing.editingModule.extenders.views.headerPanel } } }) }, 84538: /*!************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/tree_list/m_columns_controller.js ***! \************************************************************************************************/ function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { var _type = __webpack_require__( /*! ../../../core/utils/type */ 11528); var _m_columns_controller = __webpack_require__( /*! ../../grids/grid_core/columns_controller/m_columns_controller */ 17798); var _m_core = (e = __webpack_require__( /*! ./m_core */ 99477), e && e.__esModule ? e : { default: e }); var e; class TreeListColumnsController extends _m_columns_controller.ColumnsController { _getFirstItems(dataSourceAdapter) { return super._getFirstItems(dataSourceAdapter).map((node => node.data)) } getFirstDataColumnIndex() { const visibleColumns = this.getVisibleColumns(); const visibleColumnsLength = visibleColumns.length; let firstDataColumnIndex = 0; for (let i = 0; i <= visibleColumnsLength - 1; i++) { if (!(0, _type.isDefined)(visibleColumns[i].command)) { firstDataColumnIndex = visibleColumns[i].index; break } } return firstDataColumnIndex } } _m_core.default.registerModule("columns", { defaultOptions: _m_columns_controller.columnsControllerModule.defaultOptions, controllers: { columns: TreeListColumnsController } }) }, 99477: /*!**********************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/tree_list/m_core.js ***! \**********************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _extend = __webpack_require__( /*! ../../../core/utils/extend */ 52576); var _m_modules = (e = __webpack_require__( /*! ../../grids/grid_core/m_modules */ 74854), e && e.__esModule ? e : { default: e }); var e; exports.default = (0, _extend.extend)({}, _m_modules.default, { modules: [], foreachNodes(nodes, callBack, ignoreHasChildren) { for (let i = 0; i < nodes.length; i++) { if (false !== callBack(nodes[i]) && (ignoreHasChildren || nodes[i].hasChildren) && nodes[i].children.length) { this.foreachNodes(nodes[i].children, callBack, ignoreHasChildren) } } } }) }, 4788: /*!***********************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/tree_list/m_focus.js ***! \***********************************************************************************/ function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { var _deferred = __webpack_require__( /*! ../../../core/utils/deferred */ 87739); var _m_focus = __webpack_require__( /*! ../../grids/grid_core/focus/m_focus */ 51628); var _m_core = (e = __webpack_require__( /*! ./m_core */ 99477), e && e.__esModule ? e : { default: e }); var e; function _extends() { return _extends = Object.assign ? Object.assign.bind() : function(n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) { ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]) } } return n }, _extends.apply(null, arguments) } _m_core.default.registerModule("focus", _extends({}, _m_focus.focusModule, { extenders: _extends({}, _m_focus.focusModule.extenders, { controllers: _extends({}, _m_focus.focusModule.extenders.controllers, { data: Base => class extends(_m_focus.focusModule.extenders.controllers.data(Base)) { changeRowExpand(key) { if (this.option("focusedRowEnabled") && this.isRowExpanded(key)) { if (this._isFocusedRowInside(key)) { this.option("focusedRowKey", key) } } return super.changeRowExpand.apply(this, arguments) } _isFocusedRowInside(parentKey) { const focusedRowKey = this.option("focusedRowKey"); const rowIndex = this.getRowIndexByKey(focusedRowKey); const focusedRow = rowIndex >= 0 && this.getVisibleRows()[rowIndex]; let parent = focusedRow && focusedRow.node.parent; while (parent) { if (parent.key === parentKey) { return true } parent = parent.parent } return false } getParentKey(key) { const dataSource = this._dataSource; const node = this.getNodeByKey(key); const d = new _deferred.Deferred; if (node) { d.resolve(node.parent ? node.parent.key : void 0) } else { dataSource.load({ filter: [dataSource.getKeyExpr(), "=", key] }).done((items => { const parentData = items[0]; if (parentData) { d.resolve(dataSource.parentKeyOf(parentData)) } else { d.resolve() } })).fail(d.reject) } return d.promise() } expandAscendants(key) { const that = this; const dataSource = that._dataSource; const d = new _deferred.Deferred; that.getParentKey(key).done((parentKey => { if (dataSource && void 0 !== parentKey && parentKey !== that.option("rootValue")) { dataSource._isNodesInitializing = true; that.expandRow(parentKey); dataSource._isNodesInitializing = false; that.expandAscendants(parentKey).done(d.resolve).fail(d.reject) } else { d.resolve() } })).fail(d.reject); return d.promise() } getPageIndexByKey(key) { const that = this; const dataSource = that._dataSource; const d = new _deferred.Deferred; that.expandAscendants(key).done((() => { dataSource.load({ parentIds: [] }).done((nodes => { const offset = function(items, callback) { let result = -1; items.forEach(((node, index) => { if (callback(node)) { result = index } })); return result }(nodes, (node => that.keyOf(node.data) === key)); let pageIndex = -1; if (offset >= 0) { pageIndex = Math.floor(offset / that.pageSize()) } d.resolve(pageIndex) })).fail(d.reject) })).fail(d.reject); return d.promise() } } }) }) })) }, 77188: /*!***************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/tree_list/m_grid_view.js ***! \***************************************************************************************/ function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { var _m_grid_view = __webpack_require__( /*! ../../grids/grid_core/views/m_grid_view */ 33706); var _m_core = (e = __webpack_require__( /*! ./m_core */ 99477), e && e.__esModule ? e : { default: e }); var e; function _extends() { return _extends = Object.assign ? Object.assign.bind() : function(n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) { ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]) } } return n }, _extends.apply(null, arguments) } class TreeListResizingController extends _m_grid_view.ResizingController { constructor() { super(...arguments); this._expandableWidgetAriaId = "dxTreeList-ariaExpandableInstruction" } _getWidgetAriaLabel() { return "dxTreeList-ariaTreeList" } _toggleBestFitMode(isBestFit) { super._toggleBestFitMode(isBestFit); const $rowsTable = this._rowsView.getTableElement(); $rowsTable.find(".dx-treelist-cell-expandable").toggleClass(this.addWidgetPrefix("best-fit"), isBestFit) } } _m_core.default.registerModule("gridView", { defaultOptions: _m_grid_view.gridViewModule.defaultOptions, controllers: _extends({}, _m_grid_view.gridViewModule.controllers, { resizing: TreeListResizingController }), views: _m_grid_view.gridViewModule.views }) }, 90264: /*!*************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/tree_list/m_keyboard_navigation.js ***! \*************************************************************************************************/ function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { var _extend = __webpack_require__( /*! ../../../core/utils/extend */ 52576); var _m_keyboard_navigation = __webpack_require__( /*! ../../grids/grid_core/keyboard_navigation/m_keyboard_navigation */ 4628); var _scrollable_a11y = __webpack_require__( /*! ../../grids/grid_core/keyboard_navigation/scrollable_a11y */ 47526); var _m_core = (e = __webpack_require__( /*! ./m_core */ 99477), e && e.__esModule ? e : { default: e }); var e; _m_core.default.registerModule("keyboardNavigation", (0, _extend.extend)(true, {}, _m_keyboard_navigation.keyboardNavigationModule, { extenders: { controllers: { keyboardNavigation: Base => class extends((0, _scrollable_a11y.keyboardNavigationScrollableA11yExtender)(Base)) { _leftRightKeysHandler(eventArgs, _isEditing) { const rowIndex = this.getVisibleRowIndex(); const dataController = this._dataController; if (eventArgs.ctrl) { const directionCode = this._getDirectionCodeByKey(eventArgs.keyName); const key = dataController.getKeyByRowIndex(rowIndex); if ("nextInRow" === directionCode) { dataController.expandRow(key) } else { dataController.collapseRow(key) } } else { return super._leftRightKeysHandler.apply(this, arguments) } } } } } })) }, 62434: /*!*******************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/tree_list/m_master_detail.js ***! \*******************************************************************************************/ function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { var _extend = __webpack_require__( /*! ../../../core/utils/extend */ 52576); var _m_master_detail = __webpack_require__( /*! ../../grids/grid_core/master_detail/m_master_detail */ 11052); var _m_core = (e = __webpack_require__( /*! ./m_core */ 99477), e && e.__esModule ? e : { default: e }); var e; _m_core.default.registerModule("masterDetail", (0, _extend.extend)(true, {}, _m_master_detail.masterDetailModule, { extenders: { controllers: { data: Base => class extends((0, _m_master_detail.dataMasterDetailExtenderMixin)(Base)) { isRowExpanded() { return this.isRowExpandedHack.apply(this, arguments) } _processItems() { return this._processItemsHack.apply(this, arguments) } _processDataItem() { return this._processDataItemHack.apply(this, arguments) } } } } })) }, 30816: /*!*******************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/tree_list/m_state_storing.js ***! \*******************************************************************************************/ function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { var _m_state_storing = __webpack_require__( /*! ../../grids/grid_core/state_storing/m_state_storing */ 87960); var _m_core = (e = __webpack_require__( /*! ./m_core */ 99477), e && e.__esModule ? e : { default: e }); var e; function _extends() { return _extends = Object.assign ? Object.assign.bind() : function(n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) { ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]) } } return n }, _extends.apply(null, arguments) } _m_core.default.registerModule("stateStoring", _extends({}, _m_state_storing.stateStoringModule, { extenders: _extends({}, _m_state_storing.stateStoringModule.extenders, { controllers: _extends({}, _m_state_storing.stateStoringModule.extenders.controllers, { stateStoring: Base => class extends(_m_state_storing.stateStoringModule.extenders.controllers.stateStoring(Base)) { applyState(state) { super.applyState(state); this.option("expandedRowKeys", state.expandedRowKeys ? state.expandedRowKeys.slice() : []) } }, data: Base => class extends(_m_state_storing.stateStoringModule.extenders.controllers.data(Base)) { getUserState() { const state = super.getUserState(); if (!this.option("autoExpandAll")) { state.expandedRowKeys = this.option("expandedRowKeys") } return state } } }) }) })) }, 52735: /*!****************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/tree_list/m_validating.js ***! \****************************************************************************************/ function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { var _m_validating = __webpack_require__( /*! ../../grids/grid_core/validating/m_validating */ 52932); var _m_core = (e = __webpack_require__( /*! ./m_core */ 99477), e && e.__esModule ? e : { default: e }); var e; _m_core.default.registerModule("validating", { defaultOptions: _m_validating.validatingModule.defaultOptions, controllers: _m_validating.validatingModule.controllers, extenders: { controllers: { editing: Base => class extends(_m_validating.validatingModule.extenders.controllers.editing(Base)) { processDataItem(item) { super.processDataItemTreeListHack.apply(this, arguments) } processItems(items, e) { return super.processItemsTreeListHack.apply(this, arguments) } }, editorFactory: _m_validating.validatingModule.extenders.controllers.editorFactory }, views: _m_validating.validatingModule.extenders.views } }) }, 21291: /*!***********************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/tree_list/m_virtual_scrolling.js ***! \***********************************************************************************************/ function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { var _extend = __webpack_require__( /*! ../../../core/utils/extend */ 52576); var _m_utils = _interopRequireDefault(__webpack_require__( /*! ../../grids/grid_core/m_utils */ 53226)); var _m_virtual_scrolling = __webpack_require__( /*! ../../grids/grid_core/virtual_scrolling/m_virtual_scrolling */ 21640); var _m_data_source_adapter = _interopRequireDefault(__webpack_require__( /*! ./data_source_adapter/m_data_source_adapter */ 39051)); var _m_core = _interopRequireDefault(__webpack_require__( /*! ./m_core */ 99477)); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } function _extends() { return _extends = Object.assign ? Object.assign.bind() : function(n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) { ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]) } } return n }, _extends.apply(null, arguments) } const oldDefaultOptions = _m_virtual_scrolling.virtualScrollingModule.defaultOptions; _m_virtual_scrolling.virtualScrollingModule.extenders.views.rowsView = Base => class extends((0, _m_virtual_scrolling.rowsView)(Base)) { _handleDataChanged(e) { const { operationTypes: operationTypes } = e; if (null !== e && void 0 !== e && e.isDataChanged && _m_utils.default.isVirtualRowRendering(this) && operationTypes) { const { fullReload: fullReload, pageIndex: pageIndex } = operationTypes; if (!fullReload && pageIndex) { this._updateContentPosition() } } super._handleDataChanged(e) } }; _m_virtual_scrolling.virtualScrollingModule.extenders.controllers.data = Base => class extends((0, _m_virtual_scrolling.data)(Base)) { _loadOnOptionChange() { var _this$_dataSource; const virtualScrollController = null === (_this$_dataSource = this._dataSource) || void 0 === _this$_dataSource ? void 0 : _this$_dataSource._virtualScrollController; null === virtualScrollController || void 0 === virtualScrollController || virtualScrollController.reset(); super._loadOnOptionChange() } }; _m_core.default.registerModule("virtualScrolling", _extends({}, _m_virtual_scrolling.virtualScrollingModule, { defaultOptions: () => (0, _extend.extend)(true, oldDefaultOptions(), { scrolling: { mode: "virtual" } }) })); _m_data_source_adapter.default.extend((Base => class extends((0, _m_virtual_scrolling.dataSourceAdapterExtender)(Base)) { changeRowExpand() { return super.changeRowExpand.apply(this, arguments).done((() => { const viewportItemIndex = this.getViewportItemIndex(); viewportItemIndex >= 0 && this.setViewportItemIndex(viewportItemIndex) })) } })) }, 62514: /*!************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/tree_list/m_widget.js ***! \************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _m_widget_base = (e = __webpack_require__( /*! ./m_widget_base */ 7444), e && e.__esModule ? e : { default: e }); var e; __webpack_require__( /*! ./m_state_storing */ 30816); __webpack_require__( /*! ./module_not_extended/column_chooser */ 22697); __webpack_require__( /*! ./m_master_detail */ 62434); __webpack_require__( /*! ./editing/m_editing */ 53343); __webpack_require__( /*! ./module_not_extended/editing_row_based */ 76446); __webpack_require__( /*! ./module_not_extended/editing_form_based */ 99446); __webpack_require__( /*! ./module_not_extended/editing_cell_based */ 56876); __webpack_require__( /*! ./m_validating */ 52735); __webpack_require__( /*! ./m_virtual_scrolling */ 21291); __webpack_require__( /*! ./module_not_extended/filter_row */ 47988); __webpack_require__( /*! ./module_not_extended/header_filter */ 63449); __webpack_require__( /*! ./module_not_extended/filter_sync */ 56065); __webpack_require__( /*! ./module_not_extended/filter_builder */ 49219); __webpack_require__( /*! ./module_not_extended/filter_panel */ 53242); __webpack_require__( /*! ./module_not_extended/pager */ 92906); __webpack_require__( /*! ./module_not_extended/columns_resizing_reordering */ 11956); __webpack_require__( /*! ./module_not_extended/sticky_columns */ 40882); __webpack_require__( /*! ./module_not_extended/column_fixing */ 3967); __webpack_require__( /*! ./module_not_extended/adaptivity */ 73996); __webpack_require__( /*! ./selection/m_selection */ 17463); __webpack_require__( /*! ./module_not_extended/search */ 51565); __webpack_require__( /*! ./m_keyboard_navigation */ 90264); __webpack_require__( /*! ./module_not_extended/headers_keyboard_navigation */ 43644); __webpack_require__( /*! ./module_not_extended/virtual_columns */ 47890); __webpack_require__( /*! ./m_focus */ 4788); __webpack_require__( /*! ./module_not_extended/row_dragging */ 40190); exports.default = _m_widget_base.default }, 7444: /*!*****************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/tree_list/m_widget_base.js ***! \*****************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; __webpack_require__( /*! ./module_not_extended/column_headers */ 62602); __webpack_require__( /*! ./m_columns_controller */ 84538); __webpack_require__( /*! ./data_controller/m_data_controller */ 46331); __webpack_require__( /*! ./module_not_extended/sorting */ 63017); __webpack_require__( /*! ./rows/m_rows */ 86435); __webpack_require__( /*! ./module_not_extended/context_menu */ 72714); __webpack_require__( /*! ./module_not_extended/error_handling */ 60607); __webpack_require__( /*! ./m_grid_view */ 77188); __webpack_require__( /*! ./module_not_extended/header_panel */ 2765); var _component_registrator = _interopRequireDefault(__webpack_require__( /*! ../../../core/component_registrator */ 92848)); var _type = __webpack_require__( /*! ../../../core/utils/type */ 11528); var _themes = __webpack_require__( /*! ../../../ui/themes */ 52071); var _m_utils = _interopRequireDefault(__webpack_require__( /*! ../../grids/grid_core/m_utils */ 53226)); var _m_widget_base = _interopRequireDefault(__webpack_require__( /*! ../../grids/grid_core/m_widget_base */ 99335)); var _m_core = _interopRequireDefault(__webpack_require__( /*! ./m_core */ 99477)); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } _m_core.default.registerModulesOrder(["stateStoring", "columns", "selection", "editorFactory", "columnChooser", "editingRowBased", "editingFormBased", "editingCellBased", "editing", "grouping", "masterDetail", "validating", "adaptivity", "data", "virtualScrolling", "columnHeaders", "filterRow", "headerPanel", "headerFilter", "sorting", "search", "rows", "pager", "columnsResizingReordering", "contextMenu", "keyboardNavigation", "headersKeyboardNavigation", "errorHandling", "summary", "columnFixing", "export", "gridView"]); class TreeList extends _m_widget_base.default { _initMarkup() { super._initMarkup.apply(this, arguments); this.$element().addClass("dx-treelist"); this.getView("gridView").render(this.$element()) } static registerModule() { _m_core.default.registerModule.apply(_m_core.default, arguments) } _defaultOptionsRules() { return super._defaultOptionsRules().concat([{ device: () => (0, _themes.isMaterialBased)(), options: { showRowLines: true, showColumnLines: false, headerFilter: { height: 315 }, editing: { useIcons: true } } }]) } _init() { super._init(); if (!this.option("_disableDeprecationWarnings")) { _m_utils.default.logHeaderFilterDeprecatedWarningIfNeed(this) } _m_core.default.processModules(this, _m_core.default); _m_core.default.callModuleItemsMethod(this, "init") } getGridCoreHelper() { return _m_core.default } focus(element) { super.focus(); if ((0, _type.isDefined)(element)) { this.getController("keyboardNavigation").focus(element) } } }(0, _component_registrator.default)("dxTreeList", TreeList); exports.default = TreeList }, 73996: /*!**********************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/tree_list/module_not_extended/adaptivity.js ***! \**********************************************************************************************************/ function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { var _m_adaptivity = __webpack_require__( /*! ../../../grids/grid_core/adaptivity/m_adaptivity */ 8468); var _m_core = (e = __webpack_require__( /*! ../m_core */ 99477), e && e.__esModule ? e : { default: e }); var e; _m_core.default.registerModule("adaptivity", _m_adaptivity.adaptivityModule) }, 22697: /*!**************************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/tree_list/module_not_extended/column_chooser.js ***! \**************************************************************************************************************/ function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { var _m_column_chooser = __webpack_require__( /*! ../../../grids/grid_core/column_chooser/m_column_chooser */ 69862); var _m_core = (e = __webpack_require__( /*! ../m_core */ 99477), e && e.__esModule ? e : { default: e }); var e; _m_core.default.registerModule("columnChooser", _m_column_chooser.columnChooserModule) }, 3967: /*!*************************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/tree_list/module_not_extended/column_fixing.js ***! \*************************************************************************************************************/ function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { var _m_column_fixing = __webpack_require__( /*! ../../../grids/grid_core/column_fixing/m_column_fixing */ 54704); var _m_core = (e = __webpack_require__( /*! ../m_core */ 99477), e && e.__esModule ? e : { default: e }); var e; _m_core.default.registerModule("columnFixing", _m_column_fixing.columnFixingModule) }, 62602: /*!**************************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/tree_list/module_not_extended/column_headers.js ***! \**************************************************************************************************************/ function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { var _m_column_headers = __webpack_require__( /*! ../../../grids/grid_core/column_headers/m_column_headers */ 88568); var _m_core = (e = __webpack_require__( /*! ../m_core */ 99477), e && e.__esModule ? e : { default: e }); var e; _m_core.default.registerModule("columnHeaders", _m_column_headers.columnHeadersModule) }, 11956: /*!***************************************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/tree_list/module_not_extended/columns_resizing_reordering.js ***! \***************************************************************************************************************************/ function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { var _m_columns_resizing_reordering = __webpack_require__( /*! ../../../grids/grid_core/columns_resizing_reordering/m_columns_resizing_reordering */ 19448); var _m_core = (e = __webpack_require__( /*! ../m_core */ 99477), e && e.__esModule ? e : { default: e }); var e; _m_core.default.registerModule("columnsResizingReordering", _m_columns_resizing_reordering.columnsResizingReorderingModule) }, 72714: /*!************************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/tree_list/module_not_extended/context_menu.js ***! \************************************************************************************************************/ function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { var _m_context_menu = __webpack_require__( /*! ../../../grids/grid_core/context_menu/m_context_menu */ 73680); var _m_core = (e = __webpack_require__( /*! ../m_core */ 99477), e && e.__esModule ? e : { default: e }); var e; _m_core.default.registerModule("contextMenu", _m_context_menu.contextMenuModule) }, 56876: /*!******************************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/tree_list/module_not_extended/editing_cell_based.js ***! \******************************************************************************************************************/ function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { var _m_editing_cell_based = __webpack_require__( /*! ../../../grids/grid_core/editing/m_editing_cell_based */ 48295); var _m_core = (e = __webpack_require__( /*! ../m_core */ 99477), e && e.__esModule ? e : { default: e }); var e; _m_core.default.registerModule("editingCellBased", _m_editing_cell_based.editingCellBasedModule) }, 99446: /*!******************************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/tree_list/module_not_extended/editing_form_based.js ***! \******************************************************************************************************************/ function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { var _m_editing_form_based = __webpack_require__( /*! ../../../grids/grid_core/editing/m_editing_form_based */ 29657); var _m_core = (e = __webpack_require__( /*! ../m_core */ 99477), e && e.__esModule ? e : { default: e }); var e; _m_core.default.registerModule("editingFormBased", _m_editing_form_based.editingFormBasedModule) }, 76446: /*!*****************************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/tree_list/module_not_extended/editing_row_based.js ***! \*****************************************************************************************************************/ function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { var _m_editing_row_based = __webpack_require__( /*! ../../../grids/grid_core/editing/m_editing_row_based */ 56671); var _m_core = (e = __webpack_require__( /*! ../m_core */ 99477), e && e.__esModule ? e : { default: e }); var e; _m_core.default.registerModule("editingRowBased", _m_editing_row_based.editingRowBasedModule) }, 16109: /*!**************************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/tree_list/module_not_extended/editor_factory.js ***! \**************************************************************************************************************/ function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { var _m_editor_factory = __webpack_require__( /*! ../../../grids/grid_core/editor_factory/m_editor_factory */ 77862); var _m_core = (e = __webpack_require__( /*! ../m_core */ 99477), e && e.__esModule ? e : { default: e }); var e; _m_core.default.registerModule("editorFactory", _m_editor_factory.editorFactoryModule) }, 60607: /*!**************************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/tree_list/module_not_extended/error_handling.js ***! \**************************************************************************************************************/ function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { var _m_error_handling = __webpack_require__( /*! ../../../grids/grid_core/error_handling/m_error_handling */ 82358); var _m_core = (e = __webpack_require__( /*! ../m_core */ 99477), e && e.__esModule ? e : { default: e }); var e; _m_core.default.registerModule("errorHandling", _m_error_handling.errorHandlingModule) }, 49219: /*!**************************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/tree_list/module_not_extended/filter_builder.js ***! \**************************************************************************************************************/ function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { var _m_filter_builder = __webpack_require__( /*! ../../../grids/grid_core/filter/m_filter_builder */ 65382); var _m_core = (e = __webpack_require__( /*! ../m_core */ 99477), e && e.__esModule ? e : { default: e }); var e; _m_core.default.registerModule("filterBuilder", _m_filter_builder.filterBuilderModule) }, 53242: /*!************************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/tree_list/module_not_extended/filter_panel.js ***! \************************************************************************************************************/ function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { var _m_filter_panel = __webpack_require__( /*! ../../../grids/grid_core/filter/m_filter_panel */ 17887); var _m_core = (e = __webpack_require__( /*! ../m_core */ 99477), e && e.__esModule ? e : { default: e }); var e; _m_core.default.registerModule("filterPanel", _m_filter_panel.filterPanelModule) }, 47988: /*!**********************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/tree_list/module_not_extended/filter_row.js ***! \**********************************************************************************************************/ function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { var _m_filter_row = __webpack_require__( /*! ../../../grids/grid_core/filter/m_filter_row */ 62289); var _m_core = (e = __webpack_require__( /*! ../m_core */ 99477), e && e.__esModule ? e : { default: e }); var e; _m_core.default.registerModule("filterRow", _m_filter_row.filterRowModule) }, 56065: /*!***********************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/tree_list/module_not_extended/filter_sync.js ***! \***********************************************************************************************************/ function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { var _m_filter_sync = __webpack_require__( /*! ../../../grids/grid_core/filter/m_filter_sync */ 78746); var _m_core = (e = __webpack_require__( /*! ../m_core */ 99477), e && e.__esModule ? e : { default: e }); var e; _m_core.default.registerModule("filterSync", _m_filter_sync.filterSyncModule) }, 63449: /*!*************************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/tree_list/module_not_extended/header_filter.js ***! \*************************************************************************************************************/ function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { var _m_header_filter = __webpack_require__( /*! ../../../grids/grid_core/header_filter/m_header_filter */ 69952); var _m_core = (e = __webpack_require__( /*! ../m_core */ 99477), e && e.__esModule ? e : { default: e }); var e; _m_core.default.registerModule("headerFilter", _m_header_filter.headerFilterModule) }, 2765: /*!************************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/tree_list/module_not_extended/header_panel.js ***! \************************************************************************************************************/ function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { var _m_header_panel = __webpack_require__( /*! ../../../grids/grid_core/header_panel/m_header_panel */ 5542); var _m_core = (e = __webpack_require__( /*! ../m_core */ 99477), e && e.__esModule ? e : { default: e }); var e; _m_core.default.registerModule("headerPanel", _m_header_panel.headerPanelModule) }, 43644: /*!***************************************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/tree_list/module_not_extended/headers_keyboard_navigation.js ***! \***************************************************************************************************************************/ function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { var _m_headers_keyboard_navigation = __webpack_require__( /*! ../../../grids/grid_core/keyboard_navigation/m_headers_keyboard_navigation */ 86421); var _m_core = (e = __webpack_require__( /*! ../m_core */ 99477), e && e.__esModule ? e : { default: e }); var e; _m_core.default.registerModule("headersKeyboardNavigation", _m_headers_keyboard_navigation.headersKeyboardNavigationModule) }, 92906: /*!*****************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/tree_list/module_not_extended/pager.js ***! \*****************************************************************************************************/ function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { var _m_pager = __webpack_require__( /*! ../../../grids/grid_core/pager/m_pager */ 66040); var _m_core = (e = __webpack_require__( /*! ../m_core */ 99477), e && e.__esModule ? e : { default: e }); var e; _m_core.default.registerModule("pager", _m_pager.pagerModule) }, 40190: /*!************************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/tree_list/module_not_extended/row_dragging.js ***! \************************************************************************************************************/ function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { var _m_row_dragging = __webpack_require__( /*! ../../../grids/grid_core/row_dragging/m_row_dragging */ 52714); var _m_core = (e = __webpack_require__( /*! ../m_core */ 99477), e && e.__esModule ? e : { default: e }); var e; _m_core.default.registerModule("rowDragging", _m_row_dragging.rowDraggingModule) }, 51565: /*!******************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/tree_list/module_not_extended/search.js ***! \******************************************************************************************************/ function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { var _m_search = __webpack_require__( /*! ../../../grids/grid_core/search/m_search */ 7370); var _m_core = (e = __webpack_require__( /*! ../m_core */ 99477), e && e.__esModule ? e : { default: e }); var e; _m_core.default.registerModule("search", _m_search.searchModule) }, 63017: /*!*******************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/tree_list/module_not_extended/sorting.js ***! \*******************************************************************************************************/ function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { var _m_sorting = __webpack_require__( /*! ../../../grids/grid_core/sorting/m_sorting */ 8036); var _m_core = (e = __webpack_require__( /*! ../m_core */ 99477), e && e.__esModule ? e : { default: e }); var e; _m_core.default.registerModule("sorting", _m_sorting.sortingModule) }, 40882: /*!**************************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/tree_list/module_not_extended/sticky_columns.js ***! \**************************************************************************************************************/ function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { var _m_sticky_columns = __webpack_require__( /*! ../../../grids/grid_core/sticky_columns/m_sticky_columns */ 67624); var _m_core = (e = __webpack_require__( /*! ../m_core */ 99477), e && e.__esModule ? e : { default: e }); var e; _m_core.default.registerModule("stickyColumns", _m_sticky_columns.stickyColumnsModule) }, 47890: /*!***************************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/tree_list/module_not_extended/virtual_columns.js ***! \***************************************************************************************************************/ function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { var _m_virtual_columns = __webpack_require__( /*! ../../../grids/grid_core/virtual_columns/m_virtual_columns */ 74280); var _m_core = (e = __webpack_require__( /*! ../m_core */ 99477), e && e.__esModule ? e : { default: e }); var e; _m_core.default.registerModule("virtualColumns", _m_virtual_columns.virtualColumnsModule) }, 86435: /*!***************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/tree_list/rows/m_rows.js ***! \***************************************************************************************/ function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { var _events_engine = _interopRequireDefault(__webpack_require__( /*! ../../../../common/core/events/core/events_engine */ 92774)); var _remove = __webpack_require__( /*! ../../../../common/core/events/remove */ 28630); var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../../../core/renderer */ 64553)); var _type = __webpack_require__( /*! ../../../../core/utils/type */ 11528); var _m_rows_view = __webpack_require__( /*! ../../../grids/grid_core/views/m_rows_view */ 77081); var _m_core = _interopRequireDefault(__webpack_require__( /*! ../m_core */ 99477)); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } const createIcon = function(hasIcon, isExpanded) { const $iconElement = (0, _renderer.default)("
").addClass("dx-treelist-empty-space"); if (hasIcon) { $iconElement.toggleClass("dx-treelist-expanded", isExpanded).toggleClass("dx-treelist-collapsed", !isExpanded).append((0, _renderer.default)("")) } return $iconElement }; class TreeListRowsView extends _m_rows_view.RowsView { _renderIconContainer($container, options) { const $iconContainer = (0, _renderer.default)("
").addClass("dx-treelist-icon-container").appendTo($container); if (options.watch) { const dispose = options.watch((() => [options.row.level, options.row.isExpanded, options.row.node.hasChildren]), (() => { $iconContainer.empty(); this._renderIcons($iconContainer, options) })); _events_engine.default.on($iconContainer, _remove.removeEvent, dispose) } $container.addClass("dx-treelist-cell-expandable"); return this._renderIcons($iconContainer, options) } _renderIcons($iconContainer, options) { const { row: row } = options; const { level: level } = row; for (let i = 0; i <= level; i++) { $iconContainer.append(createIcon(i === level && row.node.hasChildren, row.isExpanded)) } return $iconContainer } _renderCellCommandContent(container, model) { this._renderIconContainer(container, model); return true } _processTemplate(template, options) { var _options$column; const that = this; let resultTemplate; const renderingTemplate = super._processTemplate(template); const firstDataColumnIndex = that._columnsController.getFirstDataColumnIndex(); if (renderingTemplate && (null === (_options$column = options.column) || void 0 === _options$column ? void 0 : _options$column.index) === firstDataColumnIndex) { resultTemplate = { render(options) { const $container = options.container; if (that._renderCellCommandContent($container, options.model)) { options.container = function($container) { return (0, _renderer.default)("
").addClass("dx-treelist-text-content").appendTo($container) }($container) } renderingTemplate.render(options) } } } else { resultTemplate = renderingTemplate } return resultTemplate } _updateCell($cell, options) { $cell = $cell.hasClass("dx-treelist-text-content") ? $cell.parent() : $cell; super._updateCell($cell, options) } _rowClick(e) { const dataController = this._dataController; const $targetElement = (0, _renderer.default)(e.event.target); const isExpandIcon = this.isExpandIcon($targetElement); const item = null === dataController || void 0 === dataController ? void 0 : dataController.items()[e.rowIndex]; if (isExpandIcon && item) { dataController.changeRowExpand(item.key) } super._rowClick(e) } _createRow(row) { const node = row && row.node; const $rowElement = super._createRow.apply(this, arguments); if (node) { this.setAria("level", row.level + 1, $rowElement); if (node.hasChildren) { this.setAriaExpandedAttribute($rowElement, row) } } return $rowElement } _getGridRoleName() { return "treegrid" } isExpandIcon($targetElement) { return !!$targetElement.closest(".dx-treelist-expanded, .dx-treelist-collapsed").length } setAriaExpandedAttribute($row, row) { const isRowExpanded = row.isExpanded; this.setAria("expanded", (0, _type.isDefined)(isRowExpanded) && isRowExpanded.toString(), $row) } } _m_core.default.registerModule("rows", { defaultOptions: _m_rows_view.rowsModule.defaultOptions, views: { rowsView: TreeListRowsView } }) }, 17463: /*!*************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/grids/tree_list/selection/m_selection.js ***! \*************************************************************************************************/ function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../../../core/renderer */ 64553)); var _common = __webpack_require__( /*! ../../../../core/utils/common */ 17781); var _extend = __webpack_require__( /*! ../../../../core/utils/extend */ 52576); var _type = __webpack_require__( /*! ../../../../core/utils/type */ 11528); var _m_selection = __webpack_require__( /*! ../../../grids/grid_core/selection/m_selection */ 1620); var _m_core = _interopRequireDefault(__webpack_require__( /*! ../m_core */ 99477)); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } const nodeExists = function(array, currentKey) { return !!array.filter((key => key === currentKey)).length }; _m_core.default.registerModule("selection", (0, _extend.extend)(true, {}, _m_selection.selectionModule, { defaultOptions: () => (0, _extend.extend)(true, _m_selection.selectionModule.defaultOptions(), { selection: { showCheckBoxesMode: "always", recursive: false } }), extenders: { controllers: { data: Base => class extends((0, _m_selection.dataSelectionExtenderMixin)(Base)) { _handleDataChanged(e) { const isRecursiveSelection = this._selectionController.isRecursiveSelection(); if (isRecursiveSelection && (!e || "updateSelectionState" !== e.changeType)) { this._selectionController.updateSelectionState({ selectedItemKeys: this.option("selectedRowKeys") }) } super._handleDataChanged.apply(this, arguments) } loadDescendants() { const that = this; const d = super.loadDescendants.apply(that, arguments); const isRecursiveSelection = this._selectionController.isRecursiveSelection(); if (isRecursiveSelection) { d.done((() => { this._selectionController.updateSelectionState({ selectedItemKeys: that.option("selectedRowKeys") }) })) } return d } }, selection: Base => class extends Base { constructor() { super(...arguments); this._updateSelectColumn = _common.noop } init() { super.init.apply(this, arguments); this._selectionStateByKey = {} } _getSelectionConfig() { const config = super._getSelectionConfig.apply(this, arguments); const { plainItems: plainItems } = config; config.plainItems = cached => { let result; if (cached) { result = this._dataController.getCachedStoreData() } result || (result = plainItems.apply(this, arguments).map((item => item.data))); return result || [] }; config.isItemSelected = item => { const key = this._dataController.keyOf(item); return this.isRowSelected(key) }; config.isSelectableItem = item => !!item; config.getItemData = item => item; config.allowLoadByRange = void 0; return config } renderSelectCheckBoxContainer($container, model) { const rowsView = this.component.getView("rowsView"); const $checkbox = rowsView._renderSelectCheckBox($container, { value: model.row.isSelected, row: model.row, column: model.column }); rowsView._attachCheckBoxClickEvent($checkbox) } _getSelectAllNodeKeys() { const { component: component } = this; const root = component.getRootNode(); const cache = {}; const keys = []; const isRecursiveSelection = this.isRecursiveSelection(); root && _m_core.default.foreachNodes(root.children, (node => { if (void 0 !== node.key && (node.visible || isRecursiveSelection)) { keys.push(node.key) } if (!node.visible) { return true } return isRecursiveSelection ? false : component.isRowExpanded(node.key, cache) })); return keys } isSelectAll() { const selectedRowKeys = this.option("selectedRowKeys") || []; if (0 === selectedRowKeys.length) { return false } const { component: component } = this; const visibleKeys = this._getSelectAllNodeKeys(); const isRecursiveSelection = this.isRecursiveSelection(); let hasIndeterminateState = false; const selectedVisibleKeys = visibleKeys.filter((key => { const isRowSelected = component.isRowSelected(key, isRecursiveSelection); if (void 0 === isRowSelected) { hasIndeterminateState = true } return isRowSelected })); if (!selectedVisibleKeys.length) { return hasIndeterminateState ? void 0 : false } if (selectedVisibleKeys.length === visibleKeys.length) { return true } return } selectAll() { const visibleKeys = this._getSelectAllNodeKeys().filter((key => !this.isRowSelected(key))); this.focusedItemIndex(-1); return this.selectRows(visibleKeys, true) } deselectAll() { const visibleKeys = this._getSelectAllNodeKeys(); this.focusedItemIndex(-1); return this.deselectRows(visibleKeys) } selectedItemKeys(value, preserve, isDeselect, isSelectAll) { const that = this; const selectedRowKeys = that.option("selectedRowKeys"); const isRecursiveSelection = this.isRecursiveSelection(); const normalizedArgs = isRecursiveSelection && that._normalizeSelectionArgs({ keys: (0, _type.isDefined)(value) ? value : [] }, preserve, !isDeselect); if (normalizedArgs && !(0, _common.equalByValue)(normalizedArgs.selectedRowKeys, selectedRowKeys)) { that._isSelectionNormalizing = true; return super.selectedItemKeys(normalizedArgs.selectedRowKeys, false, false, false).always((() => { that._isSelectionNormalizing = false })).done((items => { normalizedArgs.selectedRowsData = items; that._fireSelectionChanged(normalizedArgs) })) } return super.selectedItemKeys(value, preserve, isDeselect, isSelectAll) } changeItemSelection(itemIndex, keyboardKeys, setFocusOnly) { const isRecursiveSelection = this.isRecursiveSelection(); const callBase = super.changeItemSelection.bind(this); if (isRecursiveSelection && !keyboardKeys.shift) { const key = this._dataController.getKeyByRowIndex(itemIndex); return this.selectedItemKeys(key, true, this.isRowSelected(key)).done((() => { this.isRowSelected(key) && callBase(itemIndex, keyboardKeys, true) })) } return super.changeItemSelection.apply(this, arguments) } _updateParentSelectionState(node, isSelected) { const that = this; let state = isSelected; const parentNode = node.parent; if (parentNode) { if (parentNode.children.length > 1) { if (false === isSelected) { const hasSelectedState = parentNode.children.some((childNode => that._selectionStateByKey[childNode.key])); state = hasSelectedState ? void 0 : false } else if (true === isSelected) { const hasNonSelectedState = parentNode.children.some((childNode => !that._selectionStateByKey[childNode.key])); state = hasNonSelectedState ? void 0 : true } } this._selectionStateByKey[parentNode.key] = state; if (parentNode.parent && parentNode.parent.level >= 0) { this._updateParentSelectionState(parentNode, state) } } } _updateChildrenSelectionState(node, isSelected) { const that = this; const { children: children } = node; children && children.forEach((childNode => { that._selectionStateByKey[childNode.key] = isSelected; if (childNode.children.length > 0) { that._updateChildrenSelectionState(childNode, isSelected) } })) } _updateSelectionStateCore(keys, isSelected) { const dataController = this._dataController; this._selectionStateByKey = {}; for (let i = 0; i < keys.length; i++) { this._selectionStateByKey[keys[i]] = isSelected; const node = dataController.getNodeByKey(keys[i]); if (node) { this._updateParentSelectionState(node, isSelected); this._updateChildrenSelectionState(node, isSelected) } } } _getSelectedParentKeys(key, selectedItemKeys, useCash) { let selectedParentNode; const node = this._dataController.getNodeByKey(key); let parentNode = node && node.parent; let result = []; while (parentNode && parentNode.level >= 0) { result.unshift(parentNode.key); const isSelected = useCash ? !nodeExists(selectedItemKeys, parentNode.key) && this.isRowSelected(parentNode.key) : selectedItemKeys.indexOf(parentNode.key) >= 0; if (isSelected) { selectedParentNode = parentNode; result = this._getSelectedParentKeys(selectedParentNode.key, selectedItemKeys, useCash).concat(result); break } else if (useCash) { break } parentNode = parentNode.parent } return selectedParentNode && result || [] } _getSelectedChildKeys(key, keysToIgnore) { const childKeys = []; const node = this._dataController.getNodeByKey(key); node && _m_core.default.foreachNodes(node.children, (childNode => { const ignoreKeyIndex = keysToIgnore.indexOf(childNode.key); if (ignoreKeyIndex < 0) { childKeys.push(childNode.key) } return ignoreKeyIndex > 0 || ignoreKeyIndex < 0 && void 0 === this._selectionStateByKey[childNode.key] })); return childKeys } _normalizeParentKeys(key, args) { const that = this; let keysToIgnore = [key]; const parentNodeKeys = that._getSelectedParentKeys(key, args.selectedRowKeys); if (parentNodeKeys.length) { keysToIgnore = keysToIgnore.concat(parentNodeKeys); keysToIgnore.forEach((key => { const index = args.selectedRowKeys.indexOf(key); if (index >= 0) { args.selectedRowKeys.splice(index, 1) } })); const childKeys = that._getSelectedChildKeys(parentNodeKeys[0], keysToIgnore); args.selectedRowKeys = args.selectedRowKeys.concat(childKeys) } } _normalizeChildrenKeys(key, args) { const node = this._dataController.getNodeByKey(key); node && node.children.forEach((childNode => { const index = args.selectedRowKeys.indexOf(childNode.key); if (index >= 0) { args.selectedRowKeys.splice(index, 1) } this._normalizeChildrenKeys(childNode.key, args) })) } _normalizeSelectedRowKeysCore(keys, args, preserve, isSelect) { const that = this; keys.forEach((key => { if (preserve && that.isRowSelected(key) === isSelect) { return } that._normalizeChildrenKeys(key, args); const index = args.selectedRowKeys.indexOf(key); if (isSelect) { if (index < 0) { args.selectedRowKeys.push(key) } args.currentSelectedRowKeys.push(key) } else { if (index >= 0) { args.selectedRowKeys.splice(index, 1) } args.currentDeselectedRowKeys.push(key); that._normalizeParentKeys(key, args) } })) } _normalizeSelectionArgs(args, preserve, isSelect) { let result; const keys = Array.isArray(args.keys) ? args.keys : [args.keys]; const selectedRowKeys = this.option("selectedRowKeys") || []; if (keys.length) { result = { currentSelectedRowKeys: [], currentDeselectedRowKeys: [], selectedRowKeys: preserve ? selectedRowKeys.slice(0) : [] }; this._normalizeSelectedRowKeysCore(keys, result, preserve, isSelect) } return result } _updateSelectedItems(args) { this.updateSelectionState(args); super._updateSelectedItems(args) } _fireSelectionChanged() { if (!this._isSelectionNormalizing) { super._fireSelectionChanged.apply(this, arguments) } } _isModeLeavesOnly(mode) { return "leavesOnly" === mode } _removeDuplicatedKeys(keys) { const result = []; const processedKeys = {}; keys.forEach((key => { if (!processedKeys[key]) { processedKeys[key] = true; result.push(key) } })); return result } _getAllChildKeys(key) { const childKeys = []; const node = this._dataController.getNodeByKey(key); node && _m_core.default.foreachNodes(node.children, (childNode => { childKeys.push(childNode.key) }), true); return childKeys } _getAllSelectedRowKeys(keys) { let result = []; keys.forEach((key => { const parentKeys = this._getSelectedParentKeys(key, [], true); const childKeys = this._getAllChildKeys(key); result.push.apply(result, parentKeys.concat([key], childKeys)) })); result = this._removeDuplicatedKeys(result); return result } _getParentSelectedRowKeys(keys) { const that = this; const result = []; keys.forEach((key => { const parentKeys = that._getSelectedParentKeys(key, keys); !parentKeys.length && result.push(key) })); return result } _getLeafSelectedRowKeys(keys) { const result = []; const dataController = this._dataController; keys.forEach((key => { const node = dataController.getNodeByKey(key); node && !node.hasChildren && result.push(key) })); return result } isRecursiveSelection() { const selectionMode = this.option("selection.mode"); const isRecursive = this.option("selection.recursive"); return "multiple" === selectionMode && isRecursive } updateSelectionState(options) { const removedItemKeys = options.removedItemKeys || []; const selectedItemKeys = options.selectedItemKeys || []; if (this.isRecursiveSelection()) { this._updateSelectionStateCore(removedItemKeys, false); this._updateSelectionStateCore(selectedItemKeys, true) } } isRowSelected(key, isRecursiveSelection) { const result = super.isRowSelected.apply(this, arguments); isRecursiveSelection = isRecursiveSelection ?? this.isRecursiveSelection(); if (!result && isRecursiveSelection) { if (key in this._selectionStateByKey) { return this._selectionStateByKey[key] } return false } return result } getSelectedRowKeys(mode) { const that = this; if (!that._dataController) { return [] } let selectedRowKeys = super.getSelectedRowKeys.apply(that, arguments); if (mode) { if (this.isRecursiveSelection()) { selectedRowKeys = this._getAllSelectedRowKeys(selectedRowKeys) } if ("all" !== mode) { if ("excludeRecursive" === mode) { selectedRowKeys = that._getParentSelectedRowKeys(selectedRowKeys) } else if (that._isModeLeavesOnly(mode)) { selectedRowKeys = that._getLeafSelectedRowKeys(selectedRowKeys) } } } return selectedRowKeys } getSelectedRowsData(mode) { const dataController = this._dataController; const selectedKeys = this.getSelectedRowKeys(mode) || []; const selectedRowsData = []; selectedKeys.forEach((key => { const node = dataController.getNodeByKey(key); node && selectedRowsData.push(node.data) })); return selectedRowsData } refresh() { this._selectionStateByKey = {}; return super.refresh.apply(this, arguments) } } }, views: { columnHeadersView: Base => class extends((0, _m_selection.columnHeadersSelectionExtenderMixin)(Base)) { _processTemplate(template, options) { const that = this; let resultTemplate; const renderingTemplate = super._processTemplate(template, options); const firstDataColumnIndex = that._columnsController.getFirstDataColumnIndex(); if (renderingTemplate && "header" === options.rowType && options.column.index === firstDataColumnIndex) { resultTemplate = { render(options) { if ("multiple" === that.option("selection.mode")) { that.renderSelectAll(options.container, options.model) } renderingTemplate.render(options) } } } else { resultTemplate = renderingTemplate } return resultTemplate } renderSelectAll($cell, options) { $cell.addClass("dx-treelist-select-all"); this._renderSelectAllCheckBox($cell) } _isSortableElement($target) { return super._isSortableElement($target) && !$target.closest(".dx-select-checkbox").length } }, rowsView: Base => class extends((0, _m_selection.rowsViewSelectionExtenderMixin)(Base)) { _renderIcons($iconContainer, options) { super._renderIcons.apply(this, arguments); if (!options.row.isNewRow && "multiple" === this.option("selection.mode")) { this._selectionController.renderSelectCheckBoxContainer($iconContainer, options) } return $iconContainer } _rowClick(e) { const $targetElement = (0, _renderer.default)(e.event.target); if (this.isExpandIcon($targetElement)) { super._rowClickForTreeList.apply(this, arguments) } else { super._rowClick.apply(this, arguments) } } } } } })) }, 89983: /*!***********************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/m_draggable.js ***! \***********************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _position = _interopRequireDefault(__webpack_require__( /*! ../common/core/animation/position */ 3030)); var _translator = __webpack_require__( /*! ../common/core/animation/translator */ 88603); var _events_engine = _interopRequireDefault(__webpack_require__( /*! ../common/core/events/core/events_engine */ 92774)); var _drag = __webpack_require__( /*! ../common/core/events/drag */ 59144); var _pointer = _interopRequireDefault(__webpack_require__( /*! ../common/core/events/pointer */ 89797)); var _index = __webpack_require__( /*! ../common/core/events/utils/index */ 98834); var _component_registrator = _interopRequireDefault(__webpack_require__( /*! ../core/component_registrator */ 92848)); var _dom_adapter = _interopRequireDefault(__webpack_require__( /*! ../core/dom_adapter */ 64960)); var _element = __webpack_require__( /*! ../core/element */ 61404); var _renderer = _interopRequireDefault(__webpack_require__( /*! ../core/renderer */ 64553)); var _empty_template = __webpack_require__( /*! ../core/templates/empty_template */ 48650); var _common = __webpack_require__( /*! ../core/utils/common */ 17781); var _deferred = __webpack_require__( /*! ../core/utils/deferred */ 87739); var _extend = __webpack_require__( /*! ../core/utils/extend */ 52576); var _inflector = __webpack_require__( /*! ../core/utils/inflector */ 53124); var _position2 = __webpack_require__( /*! ../core/utils/position */ 41639); var _size = __webpack_require__( /*! ../core/utils/size */ 57653); var _string = __webpack_require__( /*! ../core/utils/string */ 54497); var _type = __webpack_require__( /*! ../core/utils/type */ 11528); var _view_port = __webpack_require__( /*! ../core/utils/view_port */ 55355); var _window = __webpack_require__( /*! ../core/utils/window */ 3104); var _dom_component = _interopRequireDefault(__webpack_require__( /*! ./core/widget/dom_component */ 22331)); var _m_animator = _interopRequireDefault(__webpack_require__( /*! ./ui/scroll_view/m_animator */ 99762)); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } function _extends() { return _extends = Object.assign ? Object.assign.bind() : function(n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) { ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]) } } return n }, _extends.apply(null, arguments) } const window = (0, _window.getWindow)(); const DRAGGABLE = "dxDraggable"; const DRAGSTART_EVENT_NAME = (0, _index.addNamespace)(_drag.start, DRAGGABLE); const DRAG_EVENT_NAME = (0, _index.addNamespace)(_drag.move, DRAGGABLE); const DRAGEND_EVENT_NAME = (0, _index.addNamespace)(_drag.end, DRAGGABLE); const DRAG_ENTER_EVENT_NAME = (0, _index.addNamespace)(_drag.enter, DRAGGABLE); const DRAGEND_LEAVE_EVENT_NAME = (0, _index.addNamespace)(_drag.leave, DRAGGABLE); const POINTERDOWN_EVENT_NAME = (0, _index.addNamespace)(_pointer.default.down, DRAGGABLE); const KEYDOWN_EVENT_NAME = (0, _index.addNamespace)("keydown", DRAGGABLE); let targetDraggable; let sourceDraggable; const getMousePosition = event => ({ x: event.pageX - (0, _renderer.default)(window).scrollLeft(), y: event.pageY - (0, _renderer.default)(window).scrollTop() }); class ScrollHelper { constructor(orientation, component) { this._$scrollableAtPointer = null; this._preventScroll = true; this._component = component; if ("vertical" === orientation) { this._scrollValue = "scrollTop"; this._overFlowAttr = "overflowY"; this._sizeAttr = "height"; this._scrollSizeProp = "scrollHeight"; this._clientSizeProp = "clientHeight"; this._limitProps = { start: "top", end: "bottom" } } else { this._scrollValue = "scrollLeft"; this._overFlowAttr = "overflowX"; this._sizeAttr = "width"; this._scrollSizeProp = "scrollWidth"; this._clientSizeProp = "clientWidth"; this._limitProps = { start: "left", end: "right" } } } updateScrollable(elements, mousePosition) { let isScrollableFound = false; elements.some((element => { const $element = (0, _renderer.default)(element); const isTargetOverOverlayWrapper = $element.hasClass("dx-overlay-wrapper"); const isTargetOverOverlayContent = $element.hasClass("dx-overlay-content"); if (isTargetOverOverlayWrapper || isTargetOverOverlayContent) { return true } isScrollableFound = this._trySetScrollable(element, mousePosition); return isScrollableFound })); if (!isScrollableFound) { this._$scrollableAtPointer = null; this._scrollSpeed = 0 } } isScrolling() { return !!this._scrollSpeed } isScrollable($element) { return ("auto" === $element.css(this._overFlowAttr) || $element.hasClass("dx-scrollable-container")) && $element.prop(this._scrollSizeProp) > Math.ceil("width" === this._sizeAttr ? (0, _size.getWidth)($element) : (0, _size.getHeight)($element)) } _trySetScrollable(element, mousePosition) { const that = this; const $element = (0, _renderer.default)(element); let distanceToBorders; const sensitivity = that._component.option("scrollSensitivity"); let isScrollable = that.isScrollable($element); if (isScrollable) { distanceToBorders = that._calculateDistanceToBorders($element, mousePosition); if (sensitivity > distanceToBorders[that._limitProps.start]) { if (!that._preventScroll) { that._scrollSpeed = -that._calculateScrollSpeed(distanceToBorders[that._limitProps.start]); that._$scrollableAtPointer = $element } } else if (sensitivity > distanceToBorders[that._limitProps.end]) { if (!that._preventScroll) { that._scrollSpeed = that._calculateScrollSpeed(distanceToBorders[that._limitProps.end]); that._$scrollableAtPointer = $element } } else { isScrollable = false; that._preventScroll = false } } return isScrollable } _calculateDistanceToBorders($area, mousePosition) { const area = $area.get(0); let areaBoundingRect; if (area) { areaBoundingRect = (0, _position2.getBoundingRect)(area); return { left: mousePosition.x - areaBoundingRect.left, top: mousePosition.y - areaBoundingRect.top, right: areaBoundingRect.right - mousePosition.x, bottom: areaBoundingRect.bottom - mousePosition.y } } return {} } _calculateScrollSpeed(distance) { const component = this._component; const sensitivity = component.option("scrollSensitivity"); const maxSpeed = component.option("scrollSpeed"); return Math.ceil(((sensitivity - distance) / sensitivity) ** 2 * maxSpeed) } scrollByStep() { const that = this; if (that._$scrollableAtPointer && that._scrollSpeed) { if (that._$scrollableAtPointer.hasClass("dx-scrollable-container")) { const $scrollable = that._$scrollableAtPointer.closest(".dx-scrollable"); const scrollableInstance = $scrollable.data("dxScrollable") || $scrollable.data("dxScrollView"); if (scrollableInstance) { const nextScrollPosition = scrollableInstance.scrollOffset()[that._limitProps.start] + that._scrollSpeed; scrollableInstance.scrollTo({ [that._limitProps.start]: nextScrollPosition }) } } else { const nextScrollPosition = that._$scrollableAtPointer[that._scrollValue]() + that._scrollSpeed; that._$scrollableAtPointer[that._scrollValue](nextScrollPosition) } const dragMoveArgs = that._component._dragMoveArgs; if (dragMoveArgs) { that._component._dragMoveHandler(dragMoveArgs) } } } reset() { this._$scrollableAtPointer = null; this._scrollSpeed = 0; this._preventScroll = true } isOutsideScrollable($scrollable, event) { if (!$scrollable) { return false } const scrollableSize = (0, _position2.getBoundingRect)($scrollable.get(0)); const start = scrollableSize[this._limitProps.start]; const size = scrollableSize[this._sizeAttr]; const mousePosition = getMousePosition(event); const location = "width" === this._sizeAttr ? mousePosition.x : mousePosition.y; return location < start || location > start + size } } class ScrollAnimator extends _m_animator.default { ctor(strategy) { super.ctor(); this._strategy = strategy } _step() { const horizontalScrollHelper = this._strategy._horizontalScrollHelper; const verticalScrollHelper = this._strategy._verticalScrollHelper; null === horizontalScrollHelper || void 0 === horizontalScrollHelper || horizontalScrollHelper.scrollByStep(); null === verticalScrollHelper || void 0 === verticalScrollHelper || verticalScrollHelper.scrollByStep() } } class Draggable extends _dom_component.default { reset() {} dragMove(e) {} dragEnter() {} dragLeave() {} dragEnd(sourceEvent) { const sourceDraggable = this._getSourceDraggable(); sourceDraggable._fireRemoveEvent(sourceEvent); return (0, _deferred.Deferred)().resolve() } _fireRemoveEvent(sourceEvent) {} _getDefaultOptions() { return _extends({}, super._getDefaultOptions(), { onDragStart: null, onDragMove: null, onDragEnd: null, onDragEnter: null, onDragLeave: null, onDragCancel: null, onCancelByEsc: false, onDrop: null, immediate: true, dragDirection: "both", boundOffset: 0, allowMoveByClick: false, itemData: null, contentTemplate: "content", handle: "", filter: "", clone: false, autoScroll: true, scrollSpeed: 30, scrollSensitivity: 60 }) } _setOptionsByReference() { super._setOptionsByReference.apply(this, arguments); (0, _extend.extend)(this._optionsByReference, { component: true, group: true, itemData: true, data: true }) } _init() { super._init(); this._attachEventHandlers(); this._scrollAnimator = new ScrollAnimator(this); this._horizontalScrollHelper = new ScrollHelper("horizontal", this); this._verticalScrollHelper = new ScrollHelper("vertical", this); this._initScrollTop = 0; this._initScrollLeft = 0 } _normalizeCursorOffset(offset) { if ((0, _type.isObject)(offset)) { offset = { h: offset.x, v: offset.y } } offset = (0, _common.splitPair)(offset).map((value => parseFloat(value))); return { left: offset[0], top: 1 === offset.length ? offset[0] : offset[1] } } _getNormalizedCursorOffset(offset, options) { if ((0, _type.isFunction)(offset)) { offset = offset.call(this, options) } return this._normalizeCursorOffset(offset) } _calculateElementOffset(options) { let elementOffset; let dragElementOffset; const { event: event } = options; const $element = (0, _renderer.default)(options.itemElement); const $dragElement = (0, _renderer.default)(options.dragElement); const isCloned = this._dragElementIsCloned(); const cursorOffset = this.option("cursorOffset"); let normalizedCursorOffset = { left: 0, top: 0 }; const currentLocate = this._initialLocate = (0, _translator.locate)($dragElement); if (isCloned || options.initialOffset || cursorOffset) { elementOffset = options.initialOffset || $element.offset(); if (cursorOffset) { normalizedCursorOffset = this._getNormalizedCursorOffset(cursorOffset, options); if (isFinite(normalizedCursorOffset.left)) { elementOffset.left = event.pageX } if (isFinite(normalizedCursorOffset.top)) { elementOffset.top = event.pageY } } dragElementOffset = $dragElement.offset(); elementOffset.top -= dragElementOffset.top + (normalizedCursorOffset.top || 0) - currentLocate.top; elementOffset.left -= dragElementOffset.left + (normalizedCursorOffset.left || 0) - currentLocate.left } return elementOffset } _initPosition(options) { const $dragElement = (0, _renderer.default)(options.dragElement); const elementOffset = this._calculateElementOffset(options); if (elementOffset) { this._move(elementOffset, $dragElement) } this._startPosition = (0, _translator.locate)($dragElement) } _startAnimator() { if (!this._scrollAnimator.inProgress()) { this._scrollAnimator.start() } } _stopAnimator() { this._scrollAnimator.stop() } _addWidgetPrefix(className) { const componentName = this.NAME; return (0, _inflector.dasherize)(componentName) + (className ? `-${className}` : "") } _getItemsSelector() { return this.option("filter") || "" } _$content() { const $element = this.$element(); const $wrapper = $element.children(".dx-template-wrapper"); return $wrapper.length ? $wrapper : $element } _attachEventHandlers() { if (this.option("disabled")) { return } let $element = this._$content(); let itemsSelector = this._getItemsSelector(); const allowMoveByClick = this.option("allowMoveByClick"); const data = { direction: this.option("dragDirection"), immediate: this.option("immediate"), checkDropTarget: ($target, event) => { const targetGroup = this.option("group"); const sourceGroup = this._getSourceDraggable().option("group"); const $scrollable = this._getScrollable($target); if (this._verticalScrollHelper.isOutsideScrollable($scrollable, event) || this._horizontalScrollHelper.isOutsideScrollable($scrollable, event)) { return false } return sourceGroup && sourceGroup === targetGroup } }; if (allowMoveByClick) { $element = this._getArea(); _events_engine.default.on($element, POINTERDOWN_EVENT_NAME, data, this._pointerDownHandler.bind(this)) } if (">" === itemsSelector[0]) { itemsSelector = itemsSelector.slice(1) } _events_engine.default.on($element, DRAGSTART_EVENT_NAME, itemsSelector, data, this._dragStartHandler.bind(this)); _events_engine.default.on($element, DRAG_EVENT_NAME, data, this._dragMoveHandler.bind(this)); _events_engine.default.on($element, DRAGEND_EVENT_NAME, data, this._dragEndHandler.bind(this)); _events_engine.default.on($element, DRAG_ENTER_EVENT_NAME, data, this._dragEnterHandler.bind(this)); _events_engine.default.on($element, DRAGEND_LEAVE_EVENT_NAME, data, this._dragLeaveHandler.bind(this)); if (this.option("onCancelByEsc")) { _events_engine.default.on($element, KEYDOWN_EVENT_NAME, this._keydownHandler.bind(this)) } } _dragElementIsCloned() { var _this$_$dragElement; return null === (_this$_$dragElement = this._$dragElement) || void 0 === _this$_$dragElement ? void 0 : _this$_$dragElement.hasClass(this._addWidgetPrefix("clone")) } _getDragTemplateArgs($element, $container) { return { container: (0, _element.getPublicElement)($container), model: { itemData: this.option("itemData"), itemElement: (0, _element.getPublicElement)($element) } } } _createDragElement($element) { let result = $element; const clone = this.option("clone"); const $container = this._getContainer(); let template = this.option("dragTemplate"); if (template) { template = this._getTemplate(template); result = (0, _renderer.default)("
").appendTo($container); template.render(this._getDragTemplateArgs($element, result)) } else if (clone) { result = (0, _renderer.default)("
").appendTo($container); $element.clone().css({ width: $element.css("width"), height: $element.css("height") }).appendTo(result) } return result.toggleClass(this._addWidgetPrefix("clone"), result.get(0) !== $element.get(0)).toggleClass("dx-rtl", this.option("rtlEnabled")) } _resetDragElement() { if (this._dragElementIsCloned()) { var _this$_$dragElement2; null === (_this$_$dragElement2 = this._$dragElement) || void 0 === _this$_$dragElement2 || _this$_$dragElement2.remove() } else { this._toggleDraggingClass(false) } this._$dragElement = null } _resetSourceElement() { this._toggleDragSourceClass(false); this._$sourceElement = null } _detachEventHandlers() { _events_engine.default.off(this._$content(), `.${DRAGGABLE}`); _events_engine.default.off(this._getArea(), `.${DRAGGABLE}`) } _move(position, $element) { (0, _translator.move)($element || this._$dragElement, position) } _getDraggableElement(e) { const $sourceElement = this._getSourceElement(); if ($sourceElement) { return $sourceElement } const allowMoveByClick = this.option("allowMoveByClick"); if (allowMoveByClick) { return this.$element() } let $target = (0, _renderer.default)(null === e || void 0 === e ? void 0 : e.target); const itemsSelector = this._getItemsSelector(); if (">" === itemsSelector[0]) { const $items = this._$content().find(itemsSelector); if (!$items.is($target)) { $target = $target.closest($items) } } return $target } _getSourceElement() { const draggable = this._getSourceDraggable(); return draggable._$sourceElement } _pointerDownHandler(e) { if ((0, _index.needSkipEvent)(e)) { return } const position = {}; const $element = this.$element(); const { dragDirection: dragDirection } = this.option(); if ("horizontal" === dragDirection || "both" === dragDirection) { position.left = e.pageX - $element.offset().left + (0, _translator.locate)($element).left - (0, _size.getWidth)($element) / 2 } if ("vertical" === dragDirection || "both" === dragDirection) { position.top = e.pageY - $element.offset().top + (0, _translator.locate)($element).top - (0, _size.getHeight)($element) / 2 } this._move(position, $element); this._getAction("onDragMove")(this._getEventArgs(e)) } _isValidElement(event, $element) { var _event$originalEvent; const { handle: handle } = this.option(); const $target = (0, _renderer.default)(null === (_event$originalEvent = event.originalEvent) || void 0 === _event$originalEvent ? void 0 : _event$originalEvent.target); if (handle && !$target.closest(handle).length) { return false } if (!$element.length) { return false } return !$element.is(".dx-state-disabled, .dx-state-disabled *") } _dragStartHandler(e) { const $element = this._getDraggableElement(e); this.dragInProgress = true; if (!this._isValidElement(e, $element)) { e.cancel = true; return } if (this._$sourceElement) { return } const dragStartArgs = this._getDragStartArgs(e, $element); this._getAction("onDragStart")(dragStartArgs); if (dragStartArgs.cancel) { e.cancel = true; return } this.option("itemData", dragStartArgs.itemData); this._setSourceDraggable(); this._$sourceElement = $element; let initialOffset = $element.offset(); if (!this._hasClonedDraggable() && this.option("autoScroll")) { this._initScrollTop = this._getScrollableScrollTop(); this._initScrollLeft = this._getScrollableScrollLeft(); initialOffset = this._getDraggableElementOffset(initialOffset.left, initialOffset.top) } const $dragElement = this._$dragElement = this._createDragElement($element); this._toggleDraggingClass(true); this._toggleDragSourceClass(true); this._setGestureCoverCursor($dragElement.children()); const isFixedPosition = "fixed" === $dragElement.css("position"); this._initPosition((0, _extend.extend)({}, dragStartArgs, { dragElement: $dragElement.get(0), initialOffset: isFixedPosition && initialOffset })); this._getAction("onDraggableElementShown")(_extends({}, dragStartArgs, { dragElement: $dragElement })); const $area = this._getArea(); const areaOffset = this._getAreaOffset($area); const boundOffset = this._getBoundOffset(); const areaWidth = (0, _size.getOuterWidth)($area); const areaHeight = (0, _size.getOuterHeight)($area); const elementWidth = (0, _size.getWidth)($dragElement); const elementHeight = (0, _size.getHeight)($dragElement); const startOffset_left = $dragElement.offset().left - areaOffset.left, startOffset_top = $dragElement.offset().top - areaOffset.top; if ($area.length) { e.maxLeftOffset = startOffset_left - boundOffset.left; e.maxRightOffset = areaWidth - startOffset_left - elementWidth - boundOffset.right; e.maxTopOffset = startOffset_top - boundOffset.top; e.maxBottomOffset = areaHeight - startOffset_top - elementHeight - boundOffset.bottom } if (this.option("autoScroll")) { this._startAnimator() } } _getAreaOffset($area) { const offset = $area && _position.default.offset($area); return offset || { left: 0, top: 0 } } _toggleDraggingClass(value) { var _this$_$dragElement3; null === (_this$_$dragElement3 = this._$dragElement) || void 0 === _this$_$dragElement3 || _this$_$dragElement3.toggleClass(this._addWidgetPrefix("dragging"), value) } _toggleDragSourceClass(value, $element) { const $sourceElement = $element || this._$sourceElement; null === $sourceElement || void 0 === $sourceElement || $sourceElement.toggleClass(this._addWidgetPrefix("source"), value) } _setGestureCoverCursor($element) { (0, _renderer.default)(".dx-gesture-cover").css("cursor", $element.css("cursor")) } _getBoundOffset() { let boundOffset = this.option("boundOffset"); if ((0, _type.isFunction)(boundOffset)) { boundOffset = boundOffset.call(this) } return (0, _string.quadToObject)(boundOffset) } _getArea() { let area = this.option("boundary"); if ((0, _type.isFunction)(area)) { area = area.call(this) } return (0, _renderer.default)(area) } _getContainer() { let { container: container } = this.option(); if (void 0 === container) { container = (0, _view_port.value)() } return (0, _renderer.default)(container) } _getDraggableElementOffset(initialOffsetX, initialOffsetY) { var _this$_startPosition, _this$_startPosition2; const initScrollTop = this._initScrollTop; const initScrollLeft = this._initScrollLeft; const scrollTop = this._getScrollableScrollTop(); const scrollLeft = this._getScrollableScrollLeft(); const elementPosition = (0, _renderer.default)(this.element()).css("position"); const isFixedPosition = "fixed" === elementPosition; const result = { left: ((null === (_this$_startPosition = this._startPosition) || void 0 === _this$_startPosition ? void 0 : _this$_startPosition.left) ?? 0) + initialOffsetX, top: ((null === (_this$_startPosition2 = this._startPosition) || void 0 === _this$_startPosition2 ? void 0 : _this$_startPosition2.top) ?? 0) + initialOffsetY }; if (isFixedPosition || this._hasClonedDraggable()) { return result } return { left: (0, _type.isNumeric)(scrollLeft) ? result.left + scrollLeft - initScrollLeft : result.left, top: (0, _type.isNumeric)(scrollTop) ? result.top + scrollTop - initScrollTop : result.top } } _hasClonedDraggable() { return this.option("clone") || this.option("dragTemplate") } _dragMoveHandler(e) { this._dragMoveArgs = e; if (!this._$dragElement) { e.cancel = true; return } const offset = this._getDraggableElementOffset(e.offset.x, e.offset.y); this._move(offset); this._updateScrollable(e); const eventArgs = this._getEventArgs(e); this._getAction("onDragMove")(eventArgs); if (true === eventArgs.cancel) { return } const targetDraggable = this._getTargetDraggable(); targetDraggable.dragMove(e, scrollBy) } _updateScrollable(e) { const that = this; if (that.option("autoScroll")) { const mousePosition = getMousePosition(e); const allObjects = _dom_adapter.default.elementsFromPoint(mousePosition.x, mousePosition.y, this.$element().get(0)); that._verticalScrollHelper.updateScrollable(allObjects, mousePosition); that._horizontalScrollHelper.updateScrollable(allObjects, mousePosition) } } _getScrollable($element) { let $scrollable; $element.parents().toArray().some((parent => { const $parent = (0, _renderer.default)(parent); if (this._horizontalScrollHelper.isScrollable($parent) || this._verticalScrollHelper.isScrollable($parent)) { $scrollable = $parent; return true } return false })); return $scrollable } _getScrollableScrollTop() { var _this$_getScrollable; return (null === (_this$_getScrollable = this._getScrollable((0, _renderer.default)(this.element()))) || void 0 === _this$_getScrollable ? void 0 : _this$_getScrollable.scrollTop()) ?? 0 } _getScrollableScrollLeft() { var _this$_getScrollable2; return (null === (_this$_getScrollable2 = this._getScrollable((0, _renderer.default)(this.element()))) || void 0 === _this$_getScrollable2 ? void 0 : _this$_getScrollable2.scrollLeft()) ?? 0 } _defaultActionArgs() { const args = super._defaultActionArgs.apply(this, arguments); const component = this.option("component"); if (component) { args.component = component; args.element = component.element() } return args } _getEventArgs(e) { const sourceDraggable = this._getSourceDraggable(); const targetDraggable = this._getTargetDraggable(); return { event: e, itemData: sourceDraggable.option("itemData"), itemElement: (0, _element.getPublicElement)(sourceDraggable._$sourceElement), fromComponent: sourceDraggable.option("component") || sourceDraggable, toComponent: targetDraggable.option("component") || targetDraggable, fromData: sourceDraggable.option("data"), toData: targetDraggable.option("data") } } _getDragStartArgs(e, $itemElement) { const args = this._getEventArgs(e); return { event: args.event, itemData: args.itemData, itemElement: $itemElement, fromData: args.fromData } } _revertItemToInitialPosition() { !this._dragElementIsCloned() && this._move(this._initialLocate, this._$sourceElement) } _dragEndHandler(e) { const d = (0, _deferred.Deferred)(); const dragEndEventArgs = this._getEventArgs(e); const dropEventArgs = this._getEventArgs(e); const targetDraggable = this._getTargetDraggable(); let needRevertPosition = true; this.dragInProgress = false; try { this._getAction("onDragEnd")(dragEndEventArgs) } finally { (0, _deferred.when)((0, _deferred.fromPromise)(dragEndEventArgs.cancel)).done((cancel => { if (!cancel) { if (targetDraggable !== this) { targetDraggable._getAction("onDrop")(dropEventArgs) } if (!dropEventArgs.cancel) { needRevertPosition = false; (0, _deferred.when)((0, _deferred.fromPromise)(targetDraggable.dragEnd(dragEndEventArgs))).always(d.resolve); return } } d.resolve() })).fail(d.resolve); d.done((() => { if (needRevertPosition) { this._revertItemToInitialPosition() } this._resetDragOptions(targetDraggable) })) } } _isTargetOverAnotherDraggable(e) { const sourceDraggable = this._getSourceDraggable(); if (this === sourceDraggable) { return false } const $dragElement = sourceDraggable._$dragElement; const $sourceDraggableElement = sourceDraggable.$element(); const $targetDraggableElement = this.$element(); const mousePosition = getMousePosition(e); const elements = _dom_adapter.default.elementsFromPoint(mousePosition.x, mousePosition.y, this.element()); const firstWidgetElement = elements.filter((element => { const $element = (0, _renderer.default)(element); if ($element.hasClass(this._addWidgetPrefix())) { return !$element.closest($dragElement).length } return false }))[0]; const $sourceElement = this._getSourceElement(); const isTargetOverItself = firstWidgetElement === $sourceDraggableElement.get(0); const isTargetOverNestedDraggable = (0, _renderer.default)(firstWidgetElement).closest($sourceElement).length; return !firstWidgetElement || firstWidgetElement === $targetDraggableElement.get(0) && !isTargetOverItself && !isTargetOverNestedDraggable } _dragEnterHandler(e) { this._fireDragEnterEvent(e); if (this._isTargetOverAnotherDraggable(e)) { this._setTargetDraggable() } const sourceDraggable = this._getSourceDraggable(); sourceDraggable.dragEnter(e) } _dragLeaveHandler(e) { this._fireDragLeaveEvent(e); this._resetTargetDraggable(); if (this !== this._getSourceDraggable()) { this.reset() } const sourceDraggable = this._getSourceDraggable(); sourceDraggable.dragLeave(e) } _keydownHandler(e) { if (this.dragInProgress && "Escape" === e.key) { this._keydownEscapeHandler(e) } } _keydownEscapeHandler(e) { var _sourceDraggable; const $sourceElement = this._getSourceElement(); if (!$sourceElement) { return } const dragCancelEventArgs = this._getEventArgs(e); this._getAction("onDragCancel")(dragCancelEventArgs); if (dragCancelEventArgs.cancel) { return } this.dragInProgress = false; null === (_sourceDraggable = sourceDraggable) || void 0 === _sourceDraggable || _sourceDraggable._toggleDraggingClass(false); this._detachEventHandlers(); this._revertItemToInitialPosition(); const targetDraggable = this._getTargetDraggable(); this._resetDragOptions(targetDraggable); this._attachEventHandlers() } _getAction(name) { return this[`_${name}Action`] || this._createActionByOption(name) } _getAnonymousTemplateName() { return "content" } _initTemplates() { if (!this.option("contentTemplate")) { return } this._templateManager.addDefaultTemplates({ content: new _empty_template.EmptyTemplate }); super._initTemplates.apply(this, arguments) } _render() { super._render(); this.$element().addClass(this._addWidgetPrefix()); const transclude = this._templateManager.anonymousTemplateName === this.option("contentTemplate"); const template = this._getTemplateByOption("contentTemplate"); if (template) { (0, _renderer.default)(template.render({ container: this.element(), transclude: transclude })) } } _optionChanged(args) { const { name: name } = args; switch (name) { case "onDragStart": case "onDragMove": case "onDragEnd": case "onDrop": case "onDragEnter": case "onDragLeave": case "onDragCancel": case "onDraggableElementShown": this[`_${name}Action`] = this._createActionByOption(name); break; case "dragTemplate": case "contentTemplate": case "container": case "clone": case "scrollSensitivity": case "scrollSpeed": case "boundOffset": case "handle": case "group": case "data": case "itemData": break; case "allowMoveByClick": case "dragDirection": case "disabled": case "boundary": case "filter": case "immediate": this._resetDragElement(); this._detachEventHandlers(); this._attachEventHandlers(); break; case "onCancelByEsc": this._keydownHandler(); break; case "autoScroll": this._verticalScrollHelper.reset(); this._horizontalScrollHelper.reset(); break; default: super._optionChanged(args) } } _getTargetDraggable() { return targetDraggable || this } _getSourceDraggable() { return sourceDraggable || this } _setTargetDraggable() { const currentGroup = this.option("group"); const sourceDraggable = this._getSourceDraggable(); if (currentGroup && currentGroup === sourceDraggable.option("group")) { targetDraggable = this } } _setSourceDraggable() { sourceDraggable = this } _resetSourceDraggable() { sourceDraggable = null } _resetTargetDraggable() { targetDraggable = null } _resetDragOptions(targetDraggable) { this.reset(); targetDraggable.reset(); this._stopAnimator(); this._horizontalScrollHelper.reset(); this._verticalScrollHelper.reset(); this._resetDragElement(); this._resetSourceElement(); this._resetTargetDraggable(); this._resetSourceDraggable() } _dispose() { super._dispose(); this._detachEventHandlers(); this._resetDragElement(); this._resetTargetDraggable(); this._resetSourceDraggable(); this._$sourceElement = null; this._stopAnimator() } _fireDragEnterEvent(sourceEvent) { const args = this._getEventArgs(sourceEvent); this._getAction("onDragEnter")(args) } _fireDragLeaveEvent(sourceEvent) { const args = this._getEventArgs(sourceEvent); this._getAction("onDragLeave")(args) } }(0, _component_registrator.default)(DRAGGABLE, Draggable); exports.default = Draggable }, 96334: /*!**********************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/m_sortable.js ***! \**********************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _animation = __webpack_require__( /*! ../common/core/animation */ 16826); var _translator = __webpack_require__( /*! ../common/core/animation/translator */ 88603); var _events_engine = _interopRequireDefault(__webpack_require__( /*! ../common/core/events/core/events_engine */ 92774)); var _component_registrator = _interopRequireDefault(__webpack_require__( /*! ../core/component_registrator */ 92848)); var _element = __webpack_require__( /*! ../core/element */ 61404); var _renderer = _interopRequireDefault(__webpack_require__( /*! ../core/renderer */ 64553)); var _deferred = __webpack_require__( /*! ../core/utils/deferred */ 87739); var _extend = __webpack_require__( /*! ../core/utils/extend */ 52576); var _position = __webpack_require__( /*! ../core/utils/position */ 41639); var _size = __webpack_require__( /*! ../core/utils/size */ 57653); var _window = __webpack_require__( /*! ../core/utils/window */ 3104); var _m_draggable = _interopRequireDefault(__webpack_require__( /*! ./m_draggable */ 89983)); var _type = __webpack_require__( /*! ../core/utils/type */ 11528); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } function _extends() { return _extends = Object.assign ? Object.assign.bind() : function(n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) { ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]) } } return n }, _extends.apply(null, arguments) } const window = (0, _window.getWindow)(); const isElementVisible = itemElement => (0, _renderer.default)(itemElement).is(":visible"); const animate = (element, config) => { var _config$to, _config$to2; if (!element) { return } const left = (null === (_config$to = config.to) || void 0 === _config$to ? void 0 : _config$to.left) || 0; const top = (null === (_config$to2 = config.to) || void 0 === _config$to2 ? void 0 : _config$to2.top) || 0; element.style.transform = `translate(${left}px,${top}px)`; element.style.transition = _animation.fx.off ? "" : `transform ${config.duration}ms ${config.easing}` }; const stopAnimation = element => { if (!element) { return } element.style.transform = ""; element.style.transition = "" }; class Sortable extends _m_draggable.default { _init() { super._init(); this._sourceScrollHandler = this._handleSourceScroll.bind(this); this._sourceScrollableInfo = null } _getDefaultOptions() { return _extends({}, super._getDefaultOptions(), { clone: true, filter: "> *", itemOrientation: "vertical", dropFeedbackMode: "push", allowDropInsideItem: false, allowReordering: true, moveItemOnDrop: false, onDragChange: null, onAdd: null, onRemove: null, onReorder: null, onPlaceholderPrepared: null, placeholderClassName: "", animation: { type: "slide", duration: 300, easing: "ease" }, fromIndex: null, toIndex: null, dropInsideItem: false, itemPoints: null, fromIndexOffset: 0, offset: 0, autoUpdate: false, draggableElementSize: 0 }) } reset() { this.option({ dropInsideItem: false, toIndex: null, fromIndex: null, itemPoints: null, fromIndexOffset: 0, draggableElementSize: 0 }); if (this._$placeholderElement) { this._$placeholderElement.remove() } this._$placeholderElement = null; if (!this._isIndicateMode() && this._$modifiedItem) { this._$modifiedItem.css("marginBottom", this._modifiedItemMargin); this._$modifiedItem = null } } _getPrevVisibleItem(items, index) { return items.slice(0, index).reverse().filter(isElementVisible)[0] } _dragStartHandler(e) { super._dragStartHandler.apply(this, arguments); if (true === e.cancel) { return } const $sourceElement = this._getSourceElement(); this._updateItemPoints(); this._subscribeToSourceScroll(e); this.option("fromIndex", this._getElementIndex($sourceElement)); this.option("fromIndexOffset", this.option("offset")) } _subscribeToSourceScroll(e) { const $scrollable = this._getScrollable((0, _renderer.default)(e.target)); if ($scrollable) { this._sourceScrollableInfo = { element: $scrollable, scrollLeft: $scrollable.scrollLeft(), scrollTop: $scrollable.scrollTop() }; _events_engine.default.off($scrollable, "scroll", this._sourceScrollHandler); _events_engine.default.on($scrollable, "scroll", this._sourceScrollHandler) } } _unsubscribeFromSourceScroll() { if (this._sourceScrollableInfo) { _events_engine.default.off(this._sourceScrollableInfo.element, "scroll", this._sourceScrollHandler); this._sourceScrollableInfo = null } } _handleSourceScroll(e) { const sourceScrollableInfo = this._sourceScrollableInfo; if (sourceScrollableInfo) { ["scrollLeft", "scrollTop"].forEach((scrollProp => { if (e.target[scrollProp] !== sourceScrollableInfo[scrollProp]) { const scrollBy = e.target[scrollProp] - sourceScrollableInfo[scrollProp]; this._correctItemPoints(scrollBy); this._movePlaceholder(); sourceScrollableInfo[scrollProp] = e.target[scrollProp] } })) } } _dragEnterHandler(e) { super._dragEnterHandler.apply(this, arguments); if (this === this._getSourceDraggable()) { return } this._subscribeToSourceScroll(e); this._updateItemPoints(); this.option("fromIndex", -1); if (!this._isIndicateMode()) { const itemPoints = this.option("itemPoints"); const lastItemPoint = itemPoints[itemPoints.length - 1]; if (lastItemPoint) { const $element = this.$element(); const $sourceElement = this._getSourceElement(); const isVertical = this._isVerticalOrientation(); const sourceElementSize = isVertical ? (0, _size.getOuterHeight)($sourceElement, true) : (0, _size.getOuterWidth)($sourceElement, true); const scrollSize = $element.get(0)[isVertical ? "scrollHeight" : "scrollWidth"]; const scrollPosition = $element.get(0)[isVertical ? "scrollTop" : "scrollLeft"]; const positionProp = isVertical ? "top" : "left"; const lastPointPosition = lastItemPoint[positionProp]; const elementPosition = $element.offset()[positionProp]; const freeSize = elementPosition + scrollSize - scrollPosition - lastPointPosition; if (freeSize < sourceElementSize) { if (isVertical) { const items = this._getItems(); const $lastItem = (0, _renderer.default)(this._getPrevVisibleItem(items)); this._$modifiedItem = $lastItem; this._modifiedItemMargin = $lastItem.get(0).style.marginBottom; $lastItem.css("marginBottom", sourceElementSize - freeSize); const $sortable = $lastItem.closest(".dx-sortable"); const sortable = $sortable.data("dxScrollable") || $sortable.data("dxScrollView"); null === sortable || void 0 === sortable || sortable.update() } } } } } _dragLeaveHandler() { super._dragLeaveHandler.apply(this, arguments); if (this !== this._getSourceDraggable()) { this._unsubscribeFromSourceScroll() } } dragEnter() { if (this !== this._getTargetDraggable()) { this.option("toIndex", -1) } } dragLeave() { if (this !== this._getTargetDraggable()) { this.option("toIndex", this.option("fromIndex")) } } _allowDrop(event) { const targetDraggable = this._getTargetDraggable(); const $targetDraggable = targetDraggable.$element(); const $scrollable = this._getScrollable($targetDraggable); if ($scrollable) { const { left: left, right: right, top: top, bottom: bottom } = function($scrollable) { const offset = $scrollable.offset(); const { style: style } = $scrollable[0]; const paddingLeft = parseFloat(style.paddingLeft) || 0; const paddingRight = parseFloat(style.paddingRight) || 0; const paddingTop = parseFloat(style.paddingTop) || 0; const width = $scrollable[0].clientWidth - (paddingLeft + paddingRight); const height = (0, _size.getHeight)($scrollable); const left = offset.left + paddingLeft; const top = offset.top + paddingTop; return { left: left, right: left + width, top: top, bottom: top + height } }($scrollable); const toIndex = this.option("toIndex"); const itemPoints = this.option("itemPoints"); const itemPoint = null === itemPoints || void 0 === itemPoints ? void 0 : itemPoints.filter((item => item.index === toIndex))[0]; if (itemPoint && void 0 !== itemPoint.top) { const isVertical = this._isVerticalOrientation(); if (isVertical) { return top <= Math.ceil(itemPoint.top) && Math.floor(itemPoint.top) <= bottom } return left <= Math.ceil(itemPoint.left) && Math.floor(itemPoint.left) <= right } } return true } dragEnd(sourceEvent) { this._unsubscribeFromSourceScroll(); const $sourceElement = this._getSourceElement(); const sourceDraggable = this._getSourceDraggable(); const isSourceDraggable = sourceDraggable.NAME !== this.NAME; const toIndex = this.option("toIndex"); const { event: event } = sourceEvent; const allowDrop = this._allowDrop(event); if (null !== toIndex && toIndex >= 0 && allowDrop) { let cancelAdd; let cancelRemove; if (sourceDraggable !== this) { cancelAdd = this._fireAddEvent(event); if (!cancelAdd) { cancelRemove = this._fireRemoveEvent(event) } } if (isSourceDraggable) { (0, _translator.resetPosition)($sourceElement) } if (this.option("moveItemOnDrop")) { !cancelAdd && this._moveItem($sourceElement, toIndex, cancelRemove) } if (sourceDraggable === this) { return this._fireReorderEvent(event) } } return (0, _deferred.Deferred)().resolve() } dragMove(e) { const itemPoints = this.option("itemPoints"); if (!itemPoints) { return } const isVertical = this._isVerticalOrientation(); const axisName = isVertical ? "top" : "left"; const cursorPosition = isVertical ? e.pageY : e.pageX; const rtlEnabled = this.option("rtlEnabled"); let itemPoint; for (let i = itemPoints.length - 1; i >= 0; i--) { const centerPosition = itemPoints[i + 1] && (itemPoints[i][axisName] + itemPoints[i + 1][axisName]) / 2; if ((!isVertical && rtlEnabled ? cursorPosition > centerPosition : centerPosition > cursorPosition) || void 0 === centerPosition) { itemPoint = itemPoints[i] } else { break } } if (itemPoint) { this._updatePlaceholderPosition(e, itemPoint); if (this._verticalScrollHelper.isScrolling() && this._isIndicateMode()) { this._movePlaceholder() } } } _isIndicateMode() { return "indicate" === this.option("dropFeedbackMode") || this.option("allowDropInsideItem") } _createPlaceholder() { if (!this._isIndicateMode()) { return } const customCssClass = this.option("placeholderClassName"); this._$placeholderElement = (0, _renderer.default)("
").addClass(this._addWidgetPrefix("placeholder")).addClass(customCssClass ?? "").insertBefore(this._getSourceDraggable()._$dragElement); return this._$placeholderElement } _getItems() { const itemsSelector = this._getItemsSelector(); return this._$content().find(itemsSelector).not(`.${this._addWidgetPrefix("placeholder")}`).not(`.${this._addWidgetPrefix("clone")}`).toArray() } _allowReordering() { const sourceDraggable = this._getSourceDraggable(); const targetDraggable = this._getTargetDraggable(); return sourceDraggable !== targetDraggable || this.option("allowReordering") } _isValidPoint(visibleIndex, draggableVisibleIndex, dropInsideItem) { const allowDropInsideItem = this.option("allowDropInsideItem"); const allowReordering = dropInsideItem || this._allowReordering(); if (!allowReordering && (0 !== visibleIndex || !allowDropInsideItem)) { return false } if (!this._isIndicateMode()) { return true } return -1 === draggableVisibleIndex || visibleIndex !== draggableVisibleIndex && (dropInsideItem || visibleIndex !== draggableVisibleIndex + 1) } _getItemPoints() { const that = this; let result = []; let $item; let offset; let itemWidth; const { rtlEnabled: rtlEnabled } = that.option(); const isVertical = that._isVerticalOrientation(); const itemElements = that._getItems(); const visibleItemElements = itemElements.filter(isElementVisible); const visibleItemCount = visibleItemElements.length; const $draggableItem = this._getDraggableElement(); const draggableVisibleIndex = visibleItemElements.indexOf($draggableItem.get(0)); if (visibleItemCount) { for (let i = 0; i <= visibleItemCount; i++) { const needCorrectLeftPosition = !isVertical && rtlEnabled ^ i === visibleItemCount; const needCorrectTopPosition = isVertical && i === visibleItemCount; if (i < visibleItemCount) { $item = (0, _renderer.default)(visibleItemElements[i]); offset = $item.offset(); itemWidth = (0, _size.getOuterWidth)($item) } result.push({ dropInsideItem: false, left: offset.left + (needCorrectLeftPosition ? itemWidth : 0), top: offset.top + (needCorrectTopPosition ? result[i - 1].height : 0), index: i === visibleItemCount ? itemElements.length : itemElements.indexOf($item.get(0)), $item: $item, width: (0, _size.getOuterWidth)($item), height: (0, _size.getOuterHeight)($item), isValid: that._isValidPoint(i, draggableVisibleIndex) }) } if (this.option("allowDropInsideItem")) { const points = result; result = []; for (let i = 0; i < points.length; i++) { result.push(points[i]); if (points[i + 1]) { result.push((0, _extend.extend)({}, points[i], { dropInsideItem: true, top: Math.floor((points[i].top + points[i + 1].top) / 2), left: Math.floor((points[i].left + points[i + 1].left) / 2), isValid: this._isValidPoint(i, draggableVisibleIndex, true) })) } } } } else { result.push({ dropInsideItem: false, index: 0, isValid: true }) } return result } _updateItemPoints(forceUpdate) { if (forceUpdate || this.option("autoUpdate") || !this.option("itemPoints")) { this.option("itemPoints", this._getItemPoints()) } } _correctItemPoints(scrollBy) { const itemPoints = this.option("itemPoints"); if (scrollBy && itemPoints && !this.option("autoUpdate")) { const isVertical = this._isVerticalOrientation(); const positionPropName = isVertical ? "top" : "left"; itemPoints.forEach((itemPoint => { itemPoint[positionPropName] -= scrollBy })) } } _getElementIndex($itemElement) { return this._getItems().indexOf($itemElement.get(0)) } _getDragTemplateArgs($element) { const args = super._getDragTemplateArgs.apply(this, arguments); args.model.fromIndex = this._getElementIndex($element); return args } _togglePlaceholder(value) { var _this$_$placeholderEl; null === (_this$_$placeholderEl = this._$placeholderElement) || void 0 === _this$_$placeholderEl || _this$_$placeholderEl.toggle(value) } _isVerticalOrientation() { const { itemOrientation: itemOrientation } = this.option(); return "vertical" === itemOrientation } _normalizeToIndex(toIndex, skipOffsetting) { const isAnotherDraggable = this._getSourceDraggable() !== this._getTargetDraggable(); const fromIndex = this._getActualFromIndex(); if (null === toIndex) { return fromIndex } return Math.max(isAnotherDraggable || fromIndex >= toIndex || skipOffsetting ? toIndex : toIndex - 1, 0) } _updatePlaceholderPosition(e, itemPoint) { const sourceDraggable = this._getSourceDraggable(); const toIndex = this._normalizeToIndex(itemPoint.index, itemPoint.dropInsideItem); const eventArgs = (0, _extend.extend)(this._getEventArgs(e), { toIndex: toIndex, dropInsideItem: itemPoint.dropInsideItem }); itemPoint.isValid && this._getAction("onDragChange")(eventArgs); if (eventArgs.cancel || !itemPoint.isValid) { if (!itemPoint.isValid) { this.option({ dropInsideItem: false, toIndex: null }) } return } this.option({ dropInsideItem: itemPoint.dropInsideItem, toIndex: itemPoint.index }); this._getAction("onPlaceholderPrepared")((0, _extend.extend)(this._getEventArgs(e), { placeholderElement: (0, _element.getPublicElement)(this._$placeholderElement), dragElement: (0, _element.getPublicElement)(sourceDraggable._$dragElement) })); this._updateItemPoints() } _makeWidthCorrection($item, width) { this._$scrollable = this._getScrollable($item); if (this._$scrollable) { const scrollableWidth = (0, _size.getWidth)(this._$scrollable); const overflowLeft = this._$scrollable.offset().left - $item.offset().left; const overflowRight = (0, _size.getOuterWidth)($item) - overflowLeft - scrollableWidth; if (overflowLeft > 0) { width -= overflowLeft } if (overflowRight > 0) { width -= overflowRight } } return width } _updatePlaceholderSizes($placeholderElement, $itemElement) { const dropInsideItem = this.option("dropInsideItem"); const isVertical = this._isVerticalOrientation(); let width = ""; let height = ""; $placeholderElement.toggleClass(this._addWidgetPrefix("placeholder-inside"), dropInsideItem); if (isVertical || dropInsideItem) { width = (0, _size.getOuterWidth)($itemElement) } if (!isVertical || dropInsideItem) { height = (0, _size.getOuterHeight)($itemElement) } width = this._makeWidthCorrection($itemElement, width); $placeholderElement.css({ width: width, height: height }) } _moveItem($itemElement, index, cancelRemove) { let $prevTargetItemElement; const $itemElements = this._getItems(); const $targetItemElement = $itemElements[index]; const sourceDraggable = this._getSourceDraggable(); if (cancelRemove) { $itemElement = $itemElement.clone(); sourceDraggable._toggleDragSourceClass(false, $itemElement) } if (!$targetItemElement) { $prevTargetItemElement = $itemElements[index - 1] } this._moveItemCore($itemElement, $targetItemElement, $prevTargetItemElement) } _moveItemCore($targetItem, item, prevItem) { if (!item && !prevItem) { $targetItem.appendTo(this.$element()) } else if (prevItem) { $targetItem.insertAfter((0, _renderer.default)(prevItem)) } else { $targetItem.insertBefore((0, _renderer.default)(item)) } } _getDragStartArgs(e, $itemElement) { return (0, _extend.extend)(super._getDragStartArgs.apply(this, arguments), { fromIndex: this._getElementIndex($itemElement) }) } _getEventArgs(e) { const sourceDraggable = this._getSourceDraggable(); const targetDraggable = this._getTargetDraggable(); const dropInsideItem = targetDraggable.option("dropInsideItem"); return (0, _extend.extend)(super._getEventArgs.apply(this, arguments), { fromIndex: sourceDraggable.option("fromIndex"), toIndex: this._normalizeToIndex(targetDraggable.option("toIndex"), dropInsideItem), dropInsideItem: dropInsideItem }) } _optionChanged(args) { const { name: name } = args; switch (name) { case "onDragChange": case "onPlaceholderPrepared": case "onAdd": case "onRemove": case "onReorder": this[`_${name}Action`] = this._createActionByOption(name); break; case "fromIndex": [false, true].forEach((isDragSource => { const fromIndex = isDragSource ? args.value : args.previousValue; if (null !== fromIndex) { const $fromElement = (0, _renderer.default)(this._getItems()[fromIndex]); this._toggleDragSourceClass(isDragSource, $fromElement) } })); break; case "dropInsideItem": this._optionChangedDropInsideItem(args); break; case "toIndex": this._optionChangedToIndex(args); break; case "itemOrientation": case "allowDropInsideItem": case "moveItemOnDrop": case "dropFeedbackMode": case "itemPoints": case "animation": case "allowReordering": case "fromIndexOffset": case "offset": case "draggableElementSize": case "autoUpdate": case "placeholderClassName": break; default: super._optionChanged(args) } } _optionChangedDropInsideItem() { if (this._isIndicateMode() && this._$placeholderElement) { this._movePlaceholder() } } _isPositionVisible(position) { const $element = this.$element(); let scrollContainer; if ("hidden" !== $element.css("overflow")) { scrollContainer = $element.get(0) } else { $element.parents().each((function() { if ("visible" !== (0, _renderer.default)(this).css("overflow")) { scrollContainer = this; return false } return })) } if (scrollContainer) { const clientRect = (0, _position.getBoundingRect)(scrollContainer); const isVerticalOrientation = this._isVerticalOrientation(); const start = isVerticalOrientation ? "top" : "left"; const end = isVerticalOrientation ? "bottom" : "right"; const pageOffset = isVerticalOrientation ? window.pageYOffset : window.pageXOffset; if (position[start] < clientRect[start] + pageOffset || position[start] > clientRect[end] + pageOffset) { return false } } return true } _optionChangedToIndex(args) { const toIndex = args.value; if (this._isIndicateMode()) { const showPlaceholder = null !== toIndex && toIndex >= 0; this._togglePlaceholder(showPlaceholder); if (showPlaceholder) { this._movePlaceholder() } } else { this._moveItems(args.previousValue, args.value, args.fullUpdate) } } update() { if (null === this.option("fromIndex") && null === this.option("toIndex")) { return } this._updateItemPoints(true); this._updateDragSourceClass(); const toIndex = this.option("toIndex"); this._optionChangedToIndex({ value: toIndex, fullUpdate: true }) } _updateDragSourceClass() { const fromIndex = this._getActualFromIndex(); const $fromElement = (0, _renderer.default)(this._getItems()[fromIndex]); if ($fromElement.length) { this._$sourceElement = $fromElement; this._toggleDragSourceClass(true, $fromElement) } } _makeLeftCorrection(left) { const $scrollable = this._$scrollable; if ($scrollable && this._isVerticalOrientation()) { const overflowLeft = $scrollable.offset().left - left; if (overflowLeft > 0) { left += overflowLeft } } return left } _movePlaceholder() { const that = this; const $placeholderElement = that._$placeholderElement || that._createPlaceholder(); if (!$placeholderElement) { return } const items = that._getItems(); const toIndex = that.option("toIndex"); const isVerticalOrientation = that._isVerticalOrientation(); const rtlEnabled = this.option("rtlEnabled"); const dropInsideItem = that.option("dropInsideItem"); let position = null; let itemElement = items[toIndex]; if (itemElement) { const $itemElement = (0, _renderer.default)(itemElement); position = $itemElement.offset(); if (!isVerticalOrientation && rtlEnabled && !dropInsideItem) { position.left += (0, _size.getOuterWidth)($itemElement, true) } } else { const prevVisibleItemElement = itemElement = this._getPrevVisibleItem(items, toIndex); if (prevVisibleItemElement) { position = (0, _renderer.default)(prevVisibleItemElement).offset(); if (isVerticalOrientation) { position.top += (0, _size.getOuterHeight)(prevVisibleItemElement, true) } else if (!rtlEnabled) { position.left += (0, _size.getOuterWidth)(prevVisibleItemElement, true) } } } that._updatePlaceholderSizes($placeholderElement, (0, _renderer.default)(itemElement)); if (position && !that._isPositionVisible(position)) { position = null } if (position) { const isLastVerticalPosition = isVerticalOrientation && toIndex === items.length; const outerPlaceholderHeight = (0, _size.getOuterHeight)($placeholderElement); position.left = that._makeLeftCorrection(position.left); position.top = isLastVerticalPosition && position.top >= outerPlaceholderHeight ? position.top - outerPlaceholderHeight : position.top; that._move(position, $placeholderElement) } $placeholderElement.toggle(!!position) } _getPositions(items, elementSize, fromIndex, toIndex) { const positions = []; for (let i = 0; i < items.length; i++) { let position = 0; if (null === toIndex || null === fromIndex) { positions.push(position); continue } if (-1 === fromIndex) { if (i >= toIndex) { position = elementSize } } else if (-1 === toIndex) { if (i > fromIndex) { position = -elementSize } } else if (fromIndex < toIndex) { if (i > fromIndex && i < toIndex) { position = -elementSize } } else if (fromIndex > toIndex) { if (i >= toIndex && i < fromIndex) { position = elementSize } } positions.push(position) } return positions } _getDraggableElementSize(isVerticalOrientation) { const $draggableItem = this._getDraggableElement(); let size = this.option("draggableElementSize"); if (!size) { size = isVerticalOrientation ? ((0, _size.getOuterHeight)($draggableItem) + (0, _size.getOuterHeight)($draggableItem, true)) / 2 : ((0, _size.getOuterWidth)($draggableItem) + (0, _size.getOuterWidth)($draggableItem, true)) / 2; if (!this.option("autoUpdate")) { this.option("draggableElementSize", size) } } return size } _getActualFromIndex() { const { fromIndex: fromIndex, fromIndexOffset: fromIndexOffset, offset: offset } = this.option(); return null == fromIndex ? null : fromIndex + fromIndexOffset - offset } _moveItems(prevToIndex, toIndex, fullUpdate) { const fromIndex = this._getActualFromIndex(); const isVerticalOrientation = this._isVerticalOrientation(); const positionPropName = isVerticalOrientation ? "top" : "left"; const elementSize = this._getDraggableElementSize(isVerticalOrientation); const items = this._getItems(); const prevPositions = this._getPositions(items, elementSize, fromIndex, prevToIndex); const positions = this._getPositions(items, elementSize, fromIndex, toIndex); const animationConfig = this.option("animation"); const rtlEnabled = this.option("rtlEnabled"); for (let i = 0; i < items.length; i++) { const itemElement = items[i]; const prevPosition = prevPositions[i]; const position = positions[i]; if (null === toIndex || null === fromIndex) { stopAnimation(itemElement) } else if (prevPosition !== position || fullUpdate && (0, _type.isDefined)(position)) { animate(itemElement, (0, _extend.extend)({}, animationConfig, { to: { [positionPropName]: !isVerticalOrientation && rtlEnabled ? -position : position } })) } } } _toggleDragSourceClass(value, $element) { const $sourceElement = $element || this._$sourceElement; super._toggleDragSourceClass.apply(this, arguments); if (!this._isIndicateMode()) { null === $sourceElement || void 0 === $sourceElement || $sourceElement.toggleClass(this._addWidgetPrefix("source-hidden"), value) } } _dispose() { this.reset(); super._dispose() } _fireAddEvent(sourceEvent) { const args = this._getEventArgs(sourceEvent); this._getAction("onAdd")(args); return args.cancel } _fireRemoveEvent(sourceEvent) { const sourceDraggable = this._getSourceDraggable(); const args = this._getEventArgs(sourceEvent); sourceDraggable._getAction("onRemove")(args); return args.cancel } _fireReorderEvent(sourceEvent) { const args = this._getEventArgs(sourceEvent); this._getAction("onReorder")(args); return args.promise || (0, _deferred.Deferred)().resolve() } }(0, _component_registrator.default)("dxSortable", Sortable); exports.default = Sortable }, 48500: /*!***************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/pagination/common/base_pagination_props.js ***! \***************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.BasePaginationDefaultProps = void 0; var _base_props = __webpack_require__( /*! ../../core/r1/base_props */ 28112); var _message = (e = __webpack_require__( /*! ../../../common/core/localization/message */ 4671), e && e.__esModule ? e : { default: e }); var e; function _extends() { return _extends = Object.assign ? Object.assign.bind() : function(n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) { ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]) } } return n }, _extends.apply(null, arguments) } exports.BasePaginationDefaultProps = _extends({}, _base_props.BaseWidgetDefaultProps, { isGridCompatibilityMode: false, showInfo: false, displayMode: "adaptive", maxPagesCount: 10, pageCount: 1, visible: true, hasKnownLastPage: true, pagesNavigatorVisible: "auto", showPageSizeSelector: true, allowedPageSizes: [5, 10], showNavigationButtons: false, itemCount: 1, label: _message.default.format("dxPagination-ariaLabel") }) }, 54623: /*!************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/pagination/common/consts.js ***! \************************************************************************************/ function(__unused_webpack_module, exports) { Object.defineProperty(exports, "__esModule", { value: true }); exports.PAGINATION_SELECTION_CLASS = exports.PAGINATION_SELECTED_PAGE_SIZE_CLASS = exports.PAGINATION_PAGE_SIZE_CLASS = exports.PAGINATION_PAGE_SIZES_CLASS = exports.PAGINATION_PAGE_INDEXES_CLASS = exports.PAGINATION_PAGE_CLASS = exports.PAGINATION_PAGES_CLASS = exports.PAGINATION_CLASS = exports.PAGER_CLASS = exports.LIGHT_MODE_CLASS = exports.FIRST_CHILD_CLASS = void 0; exports.PAGER_CLASS = "dx-pager"; exports.PAGINATION_CLASS = "dx-pagination"; exports.LIGHT_MODE_CLASS = "dx-light-mode"; exports.PAGINATION_PAGES_CLASS = "dx-pages"; exports.PAGINATION_PAGE_INDEXES_CLASS = "dx-page-indexes"; exports.PAGINATION_PAGE_CLASS = "dx-page"; const PAGINATION_SELECTION_CLASS = exports.PAGINATION_SELECTION_CLASS = "dx-selection"; const PAGINATION_PAGE_SIZE_CLASS = exports.PAGINATION_PAGE_SIZE_CLASS = "dx-page-size"; exports.PAGINATION_PAGE_SIZES_CLASS = "dx-page-sizes"; exports.PAGINATION_SELECTED_PAGE_SIZE_CLASS = `${PAGINATION_PAGE_SIZE_CLASS} ${PAGINATION_SELECTION_CLASS}`; exports.FIRST_CHILD_CLASS = "dx-first-child" }, 5655: /*!*****************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/pagination/common/keyboard_action_context.js ***! \*****************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.KeyboardActionContext = void 0; var _index = __webpack_require__( /*! ../../core/r1/runtime/inferno/index */ 6257); exports.KeyboardActionContext = (0, _index.createContext)(void 0) }, 17286: /*!******************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/pagination/common/light_button.js ***! \******************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.LightButtonDefaultProps = exports.LightButton = void 0; var _inferno = __webpack_require__( /*! inferno */ 76231); var _index = __webpack_require__( /*! ../../core/r1/runtime/inferno/index */ 6257); var _subscribe_to_event = __webpack_require__( /*! ../../core/r1/utils/subscribe_to_event */ 28677); var _keyboard_action_context = __webpack_require__( /*! ./keyboard_action_context */ 5655); const LightButtonDefaultProps = exports.LightButtonDefaultProps = { className: "", label: "", tabIndex: 0, selected: false }; class LightButton extends _index.InfernoComponent { constructor(props) { super(props); this.state = {}; this.refs = null; this.widgetRef = (0, _inferno.createRef)(); this.keyboardEffect = this.keyboardEffect.bind(this); this.subscribeToClick = this.subscribeToClick.bind(this) } getComponentProps() { return this.props } getKeyboardContext() { if (this.context[_keyboard_action_context.KeyboardActionContext.id]) { return this.context[_keyboard_action_context.KeyboardActionContext.id] } return _keyboard_action_context.KeyboardActionContext.defaultValue } componentWillUpdate(nextProps, nextState, context) { super.componentWillUpdate(nextProps, nextState, context) } createEffects() { return [new _index.InfernoEffect(this.keyboardEffect, [this.getKeyboardContext(), this.props.onClick]), new _index.InfernoEffect(this.subscribeToClick, [this.props.onClick])] } updateEffects() { var _this$_effects$, _this$_effects$2; null === (_this$_effects$ = this._effects[0]) || void 0 === _this$_effects$ || _this$_effects$.update([this.getKeyboardContext(), this.props.onClick]); null === (_this$_effects$2 = this._effects[1]) || void 0 === _this$_effects$2 || _this$_effects$2.update([this.props.onClick]) } keyboardEffect() { return this.getKeyboardContext().registerKeyboardAction(this.widgetRef.current, this.props.onClick) } subscribeToClick() { return (0, _subscribe_to_event.subscribeToClickEvent)(this.widgetRef.current, this.props.onClick) } render() { return (0, _inferno.createVNode)(1, "div", this.props.className, this.props.children, 0, { tabindex: this.props.tabIndex, role: "button", "aria-label": this.props.label, "aria-current": this.props.selected ? "page" : void 0 }, null, this.widgetRef) } } exports.LightButton = LightButton; LightButton.defaultProps = LightButtonDefaultProps }, 32576: /*!*******************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/pagination/common/pagination_config_context.js ***! \*******************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.PaginationConfigContext = void 0; var _index = __webpack_require__( /*! ../../core/r1/runtime/inferno/index */ 6257); exports.PaginationConfigContext = (0, _index.createContext)(void 0) }, 62502: /*!********************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/pagination/common/pagination_config_provider.js ***! \********************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.PaginationConfigProviderDefaultProps = exports.PaginationConfigProvider = void 0; var _index = __webpack_require__( /*! ../../core/r1/runtime/inferno/index */ 6257); var _pagination_config_context = __webpack_require__( /*! ./pagination_config_context */ 32576); function _extends() { return _extends = Object.assign ? Object.assign.bind() : function(n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) { ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]) } } return n }, _extends.apply(null, arguments) } const PaginationConfigProviderDefaultProps = exports.PaginationConfigProviderDefaultProps = {}; class PaginationConfigProvider extends _index.BaseInfernoComponent { constructor() { super(...arguments); this.state = {} } getConfig() { return { isGridCompatibilityMode: this.props.isGridCompatibilityMode } } getChildContext() { return _extends({}, this.context, { [_pagination_config_context.PaginationConfigContext.id]: this.getConfig() || _pagination_config_context.PaginationConfigContext.defaultValue }) } render() { return this.props.children } } exports.PaginationConfigProvider = PaginationConfigProvider; PaginationConfigProvider.defaultProps = PaginationConfigProviderDefaultProps }, 64522: /*!**********************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/pagination/common/pagination_props.js ***! \**********************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.PaginationDefaultProps = void 0; var _base_pagination_props = __webpack_require__( /*! ./base_pagination_props */ 48500); function _extends() { return _extends = Object.assign ? Object.assign.bind() : function(n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) { ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]) } } return n }, _extends.apply(null, arguments) } exports.PaginationDefaultProps = _extends({}, _base_pagination_props.BasePaginationDefaultProps, { pageSize: 5, pageIndex: 1, pageIndexChangedInternal: () => {}, pageSizeChangedInternal: () => {} }) }, 62388: /*!******************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/pagination/content.js ***! \******************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.PaginationContentDefaultProps = exports.PaginationContent = void 0; var _inferno = __webpack_require__( /*! inferno */ 76231); var _index = __webpack_require__( /*! ../core/r1/runtime/inferno/index */ 6257); var _widget = __webpack_require__( /*! ../core/r1/widget */ 93796); var _accessibility = __webpack_require__( /*! ../../ui/shared/accessibility */ 16191); var _render_utils = __webpack_require__( /*! ../core/r1/utils/render_utils */ 71312); var _consts = __webpack_require__( /*! ./common/consts */ 54623); var _keyboard_action_context = __webpack_require__( /*! ./common/keyboard_action_context */ 5655); var _pagination_config_provider = __webpack_require__( /*! ./common/pagination_config_provider */ 62502); var _pagination_props = __webpack_require__( /*! ./common/pagination_props */ 64522); var _info = __webpack_require__( /*! ./info */ 49329); var _selector = __webpack_require__( /*! ./page_size/selector */ 1542); var _page_index_selector = __webpack_require__( /*! ./pages/page_index_selector */ 33494); function _extends() { return _extends = Object.assign ? Object.assign.bind() : function(n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) { ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]) } } return n }, _extends.apply(null, arguments) } const PaginationContentDefaultProps = exports.PaginationContentDefaultProps = _extends({}, _pagination_props.PaginationDefaultProps, { infoTextVisible: true, isLargeDisplayMode: true }); class PaginationContent extends _index.InfernoComponent { constructor(props) { super(props); this.state = {}; this.refs = null; this.widgetElementRef = (0, _inferno.createRef)(); this.widgetRootElementRef = (0, _inferno.createRef)(); this.pagesRef = (0, _inferno.createRef)(); this.infoTextRef = (0, _inferno.createRef)(); this.__getterCache = { keyboardAction: void 0 }; this.state = {}; this.__getterCache = {}; this.setRootElementRef = this.setRootElementRef.bind(this); this.createFakeInstance = this.createFakeInstance.bind(this) } createEffects() { return [new _index.InfernoEffect(this.setRootElementRef, [])] } getChildContext() { return _extends({}, this.context, { [_keyboard_action_context.KeyboardActionContext.id]: this.getKeyboardAction() || _keyboard_action_context.KeyboardActionContext.defaultValue }) } setRootElementRef() { const { rootElementRef: rootElementRef } = this.props; if (rootElementRef && this.widgetRootElementRef) { rootElementRef.current = this.widgetRootElementRef.current } } getWidgetRootElement() { var _this$widgetRootEleme; return null === (_this$widgetRootEleme = this.widgetRootElementRef) || void 0 === _this$widgetRootEleme ? void 0 : _this$widgetRootEleme.current } createFakeInstance() { return { option: () => false, element: () => this.getWidgetRootElement(), component: this.props._getParentComponentRootNode ? { element: () => { var _this$props$_getParen, _this$props; return null === (_this$props$_getParen = (_this$props = this.props)._getParentComponentRootNode) || void 0 === _this$props$_getParen ? void 0 : _this$props$_getParen.call(_this$props) } } : { element: () => this.getWidgetRootElement() }, _createActionByOption: () => e => { var _this$props$onKeyDown, _this$props2; null === (_this$props$onKeyDown = (_this$props2 = this.props).onKeyDown) || void 0 === _this$props$onKeyDown || _this$props$onKeyDown.call(_this$props2, e) } } } getKeyboardAction() { return { registerKeyboardAction: (element, action) => { const fakePaginationInstance = this.createFakeInstance(); return (0, _accessibility.registerKeyboardAction)("pager", fakePaginationInstance, element, void 0, action) } } } getInfoVisible() { const { infoTextVisible: infoTextVisible, showInfo: showInfo } = this.props; return !!showInfo && infoTextVisible } getPageIndexSelectorVisible() { return 0 !== this.props.pageSize } getNormalizedDisplayMode() { const { displayMode: displayMode, lightModeEnabled: lightModeEnabled } = this.props; if ("adaptive" === displayMode && void 0 !== lightModeEnabled) { return lightModeEnabled ? "compact" : "full" } return displayMode ?? "adaptive" } getPagesContainerVisible() { return !!this.props.pagesNavigatorVisible && this.props.pageCount > 0 } getPagesContainerVisibility() { if ("auto" === this.props.pagesNavigatorVisible && 1 === this.props.pageCount && this.props.hasKnownLastPage) { return "hidden" } return } getIsLargeDisplayMode() { const displayMode = this.getNormalizedDisplayMode(); let result = false; if ("adaptive" === displayMode) { result = this.props.isLargeDisplayMode } else { result = "full" === displayMode } return result } getClasses() { const classesMap = { [`${this.props.className}`]: !!this.props.className, [_consts.PAGER_CLASS]: !!this.props.isGridCompatibilityMode, [_consts.PAGINATION_CLASS]: !this.props.isGridCompatibilityMode, [_consts.LIGHT_MODE_CLASS]: !this.getIsLargeDisplayMode() }; return (0, _render_utils.combineClasses)(classesMap) } getAria() { return { role: "navigation", label: this.props.label ?? "" } } componentWillUpdate(nextProps) { super.componentWillUpdate(); if (this.props.onKeyDown !== nextProps.onKeyDown) { this.__getterCache.keyboardAction = void 0 } } render() { const { isGridCompatibilityMode: isGridCompatibilityMode, rtlEnabled: rtlEnabled, visible: visible, showPageSizeSelector: showPageSizeSelector, allowedPageSizesRef: allowedPageSizesRef, pageSize: pageSize, pageSizeChangedInternal: pageSizeChangedInternal, allowedPageSizes: allowedPageSizes, infoTextRef: infoTextRef, infoText: infoText, pageCount: pageCount, pageIndex: pageIndex, itemCount: itemCount, pagesRef: pagesRef, hasKnownLastPage: hasKnownLastPage, maxPagesCount: maxPagesCount, pageIndexChangedInternal: pageIndexChangedInternal, pagesCountText: pagesCountText, showNavigationButtons: showNavigationButtons, style: style, width: width, height: height, elementAttr: elementAttr, hint: hint, disabled: disabled, tabIndex: tabIndex, accessKey: accessKey, activeStateEnabled: activeStateEnabled, focusStateEnabled: focusStateEnabled, hoverStateEnabled: hoverStateEnabled } = this.props; const content = (0, _inferno.normalizeProps)((0, _inferno.createComponentVNode)(2, _widget.Widget, _extends({ rootElementRef: this.widgetRootElementRef, rtlEnabled: rtlEnabled, classes: this.getClasses(), visible: visible, aria: this.getAria(), style: style, width: width, height: height, hint: hint, disabled: disabled, tabIndex: tabIndex, accessKey: accessKey, activeStateEnabled: activeStateEnabled, focusStateEnabled: focusStateEnabled, hoverStateEnabled: hoverStateEnabled }, elementAttr, { children: [showPageSizeSelector && (0, _inferno.createComponentVNode)(2, _selector.PageSizeSelector, { rootElementRef: allowedPageSizesRef, isLargeDisplayMode: this.getIsLargeDisplayMode(), itemCount: itemCount, pageSize: pageSize, pageSizeChangedInternal: pageSizeChangedInternal, allowedPageSizes: allowedPageSizes }), this.getPagesContainerVisible() && (0, _inferno.createVNode)(1, "div", _consts.PAGINATION_PAGES_CLASS, [this.getInfoVisible() && (0, _inferno.createComponentVNode)(2, _info.InfoText, { rootElementRef: infoTextRef, infoText: infoText, pageCount: pageCount, pageIndex: pageIndex, itemCount: itemCount }), this.getPageIndexSelectorVisible() && (0, _inferno.createVNode)(1, "div", _consts.PAGINATION_PAGE_INDEXES_CLASS, (0, _inferno.createComponentVNode)(2, _page_index_selector.PageIndexSelector, { hasKnownLastPage: hasKnownLastPage, isLargeDisplayMode: this.getIsLargeDisplayMode(), maxPagesCount: maxPagesCount, pageCount: pageCount, pageIndex: pageIndex, pageIndexChangedInternal: pageIndexChangedInternal, pagesCountText: pagesCountText, showNavigationButtons: showNavigationButtons, itemCount: itemCount }), 2, null, null, pagesRef)], 0, { style: { visibility: this.getPagesContainerVisibility() } })] }))); return (0, _inferno.createComponentVNode)(2, _pagination_config_provider.PaginationConfigProvider, { isGridCompatibilityMode: isGridCompatibilityMode, children: content }) } } exports.PaginationContent = PaginationContent; PaginationContent.defaultProps = PaginationContentDefaultProps }, 567: /*!***************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/pagination/drop_down_editors/select_box.js ***! \***************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.SelectBox = exports.NumberBoxDefaultProps = void 0; var _inferno = __webpack_require__( /*! inferno */ 76231); var _index = __webpack_require__( /*! ../../core/r1/runtime/inferno/index */ 6257); var _select_box = (e = __webpack_require__( /*! ../../../ui/select_box */ 60695), e && e.__esModule ? e : { default: e }); var e; var _dom_component_wrapper = __webpack_require__( /*! ../../core/r1/dom_component_wrapper */ 10922); var _editor_label_props = __webpack_require__( /*! ../editors/common/editor_label_props */ 71027); var _editor_props = __webpack_require__( /*! ../editors/common/editor_props */ 90650); var _editor_state_props = __webpack_require__( /*! ../editors/common/editor_state_props */ 49916); function _extends() { return _extends = Object.assign ? Object.assign.bind() : function(n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) { ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]) } } return n }, _extends.apply(null, arguments) } const NumberBoxDefaultProps = exports.NumberBoxDefaultProps = _extends({}, _editor_props.EditorDefaultProps, _editor_state_props.EditorStateDefaultProps, _editor_label_props.EditorLabelDefaultProps, { placeholder: "", hoverStateEnabled: true, searchEnabled: false, value: null, isReactComponentWrapper: true }); class SelectBox extends _index.BaseInfernoComponent { constructor() { super(...arguments); this.state = {}; this.refs = null } get componentProps() { return this.props } render() { return (0, _inferno.createComponentVNode)(2, _dom_component_wrapper.DomComponentWrapper, { componentType: _select_box.default, componentProps: this.componentProps, templateNames: ["dropDownButtonTemplate", "groupTemplate", "itemTemplate"] }) } } exports.SelectBox = SelectBox; SelectBox.defaultProps = NumberBoxDefaultProps }, 25435: /*!*******************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/pagination/editors/common/base_widget_props.js ***! \*******************************************************************************************************/ function(__unused_webpack_module, exports) { Object.defineProperty(exports, "__esModule", { value: true }); exports.BaseWidgetDefaultProps = void 0; exports.BaseWidgetDefaultProps = { className: "", activeStateEnabled: false, disabled: false, focusStateEnabled: false, hoverStateEnabled: false, tabIndex: 0, visible: true, rtlEnabled: false } }, 71027: /*!********************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/pagination/editors/common/editor_label_props.js ***! \********************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.EditorLabelDefaultProps = void 0; var _themes = __webpack_require__( /*! ../../../../ui/themes */ 52071); exports.EditorLabelDefaultProps = { label: "", labelMode: (0, _themes.isMaterial)((0, _themes.current)()) ? "floating" : "static" } }, 90650: /*!**************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/pagination/editors/common/editor_props.js ***! \**************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.EditorDefaultProps = void 0; var _base_widget_props = __webpack_require__( /*! ./base_widget_props */ 25435); var _widget_props = __webpack_require__( /*! ./widget_props */ 34211); function _extends() { return _extends = Object.assign ? Object.assign.bind() : function(n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) { ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]) } } return n }, _extends.apply(null, arguments) } exports.EditorDefaultProps = _extends({}, _base_widget_props.BaseWidgetDefaultProps, { aria: _widget_props.WidgetDefaultProps.aria, classes: _widget_props.WidgetDefaultProps.classes, readOnly: false, name: "", value: null, validationError: null, validationErrors: null, validationMessageMode: "auto", validationMessagePosition: "bottom", validationStatus: "valid", isValid: true, isDirty: false, inputAttr: {} }) }, 49916: /*!********************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/pagination/editors/common/editor_state_props.js ***! \********************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.EditorStateDefaultProps = void 0; var _devices = (e = __webpack_require__( /*! ../../../../core/devices */ 65951), e && e.__esModule ? e : { default: e }); var e; exports.EditorStateDefaultProps = { hoverStateEnabled: true, activeStateEnabled: true, focusStateEnabled: "desktop" === _devices.default.real().deviceType && !_devices.default.isSimulator() } }, 34211: /*!**************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/pagination/editors/common/widget_props.js ***! \**************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.WidgetDefaultProps = void 0; var _base_props = __webpack_require__( /*! ../../../core/r1/base_props */ 28112); function _extends() { return _extends = Object.assign ? Object.assign.bind() : function(n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) { ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]) } } return n }, _extends.apply(null, arguments) } exports.WidgetDefaultProps = _extends({}, _base_props.BaseWidgetDefaultProps, { _feedbackHideTimeout: 400, _feedbackShowTimeout: 30, cssText: "", aria: {}, classes: "", name: "", addWidgetClass: true }) }, 71897: /*!*****************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/pagination/editors/number_box.js ***! \*****************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.NumberBoxDefaultProps = exports.NumberBox = void 0; var _inferno = __webpack_require__( /*! inferno */ 76231); var _index = __webpack_require__( /*! ../../core/r1/runtime/inferno/index */ 6257); var _number_box = (e = __webpack_require__( /*! ../../../ui/number_box */ 48042), e && e.__esModule ? e : { default: e }); var e; var _dom_component_wrapper = __webpack_require__( /*! ../../core/r1/dom_component_wrapper */ 10922); var _editor_label_props = __webpack_require__( /*! ./common/editor_label_props */ 71027); var _editor_props = __webpack_require__( /*! ./common/editor_props */ 90650); var _editor_state_props = __webpack_require__( /*! ./common/editor_state_props */ 49916); function _extends() { return _extends = Object.assign ? Object.assign.bind() : function(n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) { ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]) } } return n }, _extends.apply(null, arguments) } const NumberBoxDefaultProps = exports.NumberBoxDefaultProps = _extends({}, _editor_props.EditorDefaultProps, _editor_state_props.EditorStateDefaultProps, _editor_label_props.EditorLabelDefaultProps, { value: 0, isReactComponentWrapper: true }); class NumberBox extends _index.BaseInfernoComponent { constructor() { super(...arguments); this.state = {}; this.refs = null } get componentProps() { return this.props } render() { return (0, _inferno.createComponentVNode)(2, _dom_component_wrapper.DomComponentWrapper, { componentType: _number_box.default, componentProps: this.componentProps, templateNames: [] }) } } exports.NumberBox = NumberBox; NumberBox.defaultProps = NumberBoxDefaultProps }, 49329: /*!***************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/pagination/info.js ***! \***************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.PAGER_INFO_CLASS = exports.InfoText = void 0; var _inferno = __webpack_require__( /*! inferno */ 76231); var _index = __webpack_require__( /*! ../core/r1/runtime/inferno/index */ 6257); var _string = __webpack_require__( /*! ../../core/utils/string */ 54497); var _pagination_props = __webpack_require__( /*! ./common/pagination_props */ 64522); var _compatibility_utils = __webpack_require__( /*! ./utils/compatibility_utils */ 4917); const PAGER_INFO_CLASS = exports.PAGER_INFO_CLASS = "dx-info"; const InfoTextDefaultProps = { pageCount: _pagination_props.PaginationDefaultProps.pageCount, pageIndex: _pagination_props.PaginationDefaultProps.pageIndex, itemCount: _pagination_props.PaginationDefaultProps.itemCount }; class InfoText extends _index.BaseInfernoComponent { constructor() { super(...arguments); this.state = {}; this.refs = null; this.rootElementRef = (0, _inferno.createRef)() } getInfoText() { return this.props.infoText ?? (0, _compatibility_utils.getLocalizationMessage)(this.context, "dxPagination-infoText") } getText() { const { pageCount: pageCount, pageIndex: pageIndex, itemCount: itemCount } = this.props; return (0, _string.format)(this.getInfoText(), (pageIndex + 1).toString(), null === pageCount || void 0 === pageCount ? void 0 : pageCount.toString(), null === itemCount || void 0 === itemCount ? void 0 : itemCount.toString()) } render() { return (0, _inferno.createVNode)(1, "div", PAGER_INFO_CLASS, this.getText(), 0, null, null, this.props.rootElementRef) } } exports.InfoText = InfoText; InfoText.defaultProps = InfoTextDefaultProps }, 40340: /*!**************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/pagination/page_size/large.js ***! \**************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.PageSizeLargeDefaultProps = exports.PageSizeLarge = void 0; var _inferno = __webpack_require__( /*! inferno */ 76231); var _index = __webpack_require__( /*! ../../core/r1/runtime/inferno/index */ 6257); var _string = __webpack_require__( /*! ../../../core/utils/string */ 54497); var _render_utils = __webpack_require__( /*! ../../core/r1/utils/render_utils */ 71312); var _consts = __webpack_require__( /*! ../common/consts */ 54623); var _light_button = __webpack_require__( /*! ../common/light_button */ 17286); var _pagination_props = __webpack_require__( /*! ../common/pagination_props */ 64522); var _compatibility_utils = __webpack_require__( /*! ../utils/compatibility_utils */ 4917); const PageSizeLargeDefaultProps = exports.PageSizeLargeDefaultProps = { allowedPageSizes: [], pageSize: _pagination_props.PaginationDefaultProps.pageSize, pageSizeChangedInternal: _pagination_props.PaginationDefaultProps.pageSizeChangedInternal }; class PageSizeLarge extends _index.BaseInfernoComponent { constructor(props) { super(props); this.state = {}; this.refs = null; this.__getterCache = { pageSizesText: void 0 }; this.state = {}; this.onPageSizeChange = this.onPageSizeChange.bind(this) } getPageSizesText() { if (void 0 !== this.__getterCache.pageSizesText) { return this.__getterCache.pageSizesText } const result = (() => { const { pageSize: pageSize, allowedPageSizes: allowedPageSizes } = this.props; return allowedPageSizes.map(((_ref3, index) => { const { text: text, value: processedPageSize } = _ref3; const selected = processedPageSize === pageSize; const className = (0, _render_utils.combineClasses)({ [selected ? _consts.PAGINATION_SELECTED_PAGE_SIZE_CLASS : _consts.PAGINATION_PAGE_SIZE_CLASS]: true, [_consts.FIRST_CHILD_CLASS]: 0 === index }); return { className: className, click: this.onPageSizeChange(processedPageSize), label: (0, _string.format)((0, _compatibility_utils.getLocalizationMessage)(this.context, "dxPagination-pageSize"), processedPageSize || (0, _compatibility_utils.getLocalizationMessage)(this.context, "dxPagination-pageSizesAllText")), text: text } })) })(); this.__getterCache.pageSizesText = result; return result } onPageSizeChange(processedPageSize) { return () => { this.props.pageSizeChangedInternal(processedPageSize); return this.props.pageSize } } componentWillUpdate(nextProps) { const componentChanged = this.props.pageSize !== nextProps.pageSize || this.props.allowedPageSizes !== nextProps.allowedPageSizes || this.props.pageSizeChangedInternal !== nextProps.pageSizeChangedInternal; if (componentChanged) { this.__getterCache.pageSizesText = void 0 } } render() { return (0, _inferno.createFragment)(this.getPageSizesText().map((_ref => { let { text: text, className: className, label: label, click: click } = _ref; return (0, _inferno.createComponentVNode)(2, _light_button.LightButton, { className: className, label: label, onClick: click, children: text }, text) })), 0) } } exports.PageSizeLarge = PageSizeLarge; PageSizeLarge.defaultProps = PageSizeLargeDefaultProps }, 1542: /*!*****************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/pagination/page_size/selector.js ***! \*****************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.PageSizeSelector = void 0; var _inferno = __webpack_require__( /*! inferno */ 76231); var _index = __webpack_require__( /*! ../../core/r1/runtime/inferno/index */ 6257); var _consts = __webpack_require__( /*! ../common/consts */ 54623); var _pagination_props = __webpack_require__( /*! ../common/pagination_props */ 64522); var _compatibility_utils = __webpack_require__( /*! ../utils/compatibility_utils */ 4917); var _large = __webpack_require__( /*! ./large */ 40340); var _small = __webpack_require__( /*! ./small */ 54892); const PageSizeSelectorDefaultProps = { isLargeDisplayMode: true, pageSize: _pagination_props.PaginationDefaultProps.pageSize, pageSizeChangedInternal: _pagination_props.PaginationDefaultProps.pageSizeChangedInternal, allowedPageSizes: _pagination_props.PaginationDefaultProps.allowedPageSizes }; class PageSizeSelector extends _index.InfernoComponent { constructor(props) { super(props); this.state = {}; this.refs = null; this.rootElementRef = (0, _inferno.createRef)(); this.htmlRef = (0, _inferno.createRef)(); this.__getterCache = { normalizedPageSizes: void 0 }; this.setRootElementRef = this.setRootElementRef.bind(this) } createEffects() { return [new _index.InfernoEffect(this.setRootElementRef, [])] } setRootElementRef() { const { rootElementRef: rootElementRef } = this.props; if (rootElementRef) { rootElementRef.current = this.htmlRef.current } } getAllText() { return (0, _compatibility_utils.getLocalizationMessage)(this.context, "dxPagination-pageSizesAllText") } getNormalizedPageSizes() { if (void 0 !== this.__getterCache.normalizedPageSizes) { return this.__getterCache.normalizedPageSizes } const result = this.props.allowedPageSizes.map((p => "all" === p || 0 === p ? { text: this.getAllText(), value: 0 } : { text: String(p), value: p })); this.__getterCache.normalizedPageSizes = result; return result } componentWillUpdate(nextProps) { super.componentWillUpdate(); if (this.props.allowedPageSizes !== nextProps.allowedPageSizes) { this.__getterCache.normalizedPageSizes = void 0 } } render() { const normalizedPageSizes = this.getNormalizedPageSizes(); const { pageSize: pageSize, pageSizeChangedInternal: pageSizeChangedInternal, isLargeDisplayMode: isLargeDisplayMode } = this.props; return (0, _inferno.createVNode)(1, "div", _consts.PAGINATION_PAGE_SIZES_CLASS, [isLargeDisplayMode && (0, _inferno.createComponentVNode)(2, _large.PageSizeLarge, { allowedPageSizes: normalizedPageSizes, pageSize: pageSize, pageSizeChangedInternal: pageSizeChangedInternal }), !isLargeDisplayMode && (0, _inferno.createComponentVNode)(2, _small.PageSizeSmall, { parentRef: this.htmlRef, allowedPageSizes: normalizedPageSizes, pageSize: pageSize, pageSizeChangedInternal: pageSizeChangedInternal })], 0, null, null, this.htmlRef) } } exports.PageSizeSelector = PageSizeSelector; PageSizeSelector.defaultProps = PageSizeSelectorDefaultProps }, 54892: /*!**************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/pagination/page_size/small.js ***! \**************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.PageSizeSmall = void 0; var _inferno = __webpack_require__( /*! inferno */ 76231); var _index = __webpack_require__( /*! ../../core/r1/runtime/inferno/index */ 6257); var _pagination_props = __webpack_require__( /*! ../common/pagination_props */ 64522); var _select_box = __webpack_require__( /*! ../drop_down_editors/select_box */ 567); var _calculate_values_fitted_width = __webpack_require__( /*! ../utils/calculate_values_fitted_width */ 19e3); var _compatibility_utils = __webpack_require__( /*! ../utils/compatibility_utils */ 4917); var _get_element_width = __webpack_require__( /*! ../utils/get_element_width */ 70267); function _extends() { return _extends = Object.assign ? Object.assign.bind() : function(n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) { ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]) } } return n }, _extends.apply(null, arguments) } const PageSizeSmallDefaultProps = _extends({}, { allowedPageSizes: [] }, { pageSize: _pagination_props.PaginationDefaultProps.pageSize, pageSizeChangedInternal: _pagination_props.PaginationDefaultProps.pageSizeChangedInternal }); class PageSizeSmall extends _index.InfernoComponent { constructor(props) { super(props); this.state = { minWidth: 10 }; this.refs = null; this.updateWidth = this.updateWidth.bind(this) } componentWillUpdate(nextProps, nextState, context) { super.componentWillUpdate(nextProps, nextState, context) } createEffects() { const dependency = [this.props, this.state.minWidth, this.props.pageSize, this.props.pageSizeChangedInternal, this.props.allowedPageSizes]; return [new _index.InfernoEffect(this.updateWidth, dependency)] } updateEffects() { var _this$_effects$; const dependency = [this.props, this.state.minWidth, this.props.pageSize, this.props.pageSizeChangedInternal, this.props.allowedPageSizes]; null === (_this$_effects$ = this._effects[0]) || void 0 === _this$_effects$ || _this$_effects$.update(dependency) } updateWidth() { var _this$props$parentRef; const minWidth = (0, _get_element_width.getElementMinWidth)(null === (_this$props$parentRef = this.props.parentRef) || void 0 === _this$props$parentRef ? void 0 : _this$props$parentRef.current); this.setState((state => ({ minWidth: minWidth > 0 ? minWidth : state.minWidth }))) } getWidth() { var _this$props$allowedPa; return (0, _calculate_values_fitted_width.calculateValuesFittedWidth)(this.state.minWidth, null === (_this$props$allowedPa = this.props.allowedPageSizes) || void 0 === _this$props$allowedPa ? void 0 : _this$props$allowedPa.map((p => p.value))) } getInputAttributes() { return { "aria-label": (0, _compatibility_utils.getLocalizationMessage)(this.context, "dxPagination-ariaPageSize") } } render() { const { allowedPageSizes: allowedPageSizes, pageSize: pageSize, pageSizeChangedInternal: pageSizeChangedInternal } = this.props; return (0, _inferno.createComponentVNode)(2, _select_box.SelectBox, { displayExpr: "text", valueExpr: "value", dataSource: allowedPageSizes, value: pageSize, valueChange: pageSizeChangedInternal, width: this.getWidth(), inputAttr: this.getInputAttributes() }) } } exports.PageSizeSmall = PageSizeSmall; PageSizeSmall.defaultProps = PageSizeSmallDefaultProps }, 35853: /*!**********************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/pagination/pages/large.js ***! \**********************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.PagesLarge = void 0; var _inferno = __webpack_require__( /*! inferno */ 76231); var _index = __webpack_require__( /*! ../../core/r1/runtime/inferno/index */ 6257); var _config_context = __webpack_require__( /*! ../../core/r1/config_context */ 12274); var _pagination_props = __webpack_require__( /*! ../common/pagination_props */ 64522); var _page = __webpack_require__( /*! ./page */ 12363); const PagesLargeDefaultProps = { maxPagesCount: _pagination_props.PaginationDefaultProps.maxPagesCount, pageCount: _pagination_props.PaginationDefaultProps.pageCount, pageIndex: _pagination_props.PaginationDefaultProps.pageIndex, pageIndexChangedInternal: _pagination_props.PaginationDefaultProps.pageIndexChangedInternal }; function getDelimiterType(startIndex, slidingWindowSize, pageCount) { switch (true) { case 1 === startIndex: return "high"; case startIndex + slidingWindowSize === pageCount - 1: return "low"; default: return "both" } } function createPageIndexesBySlidingWindowIndexes(slidingWindowIndexes, pageCount, delimiter) { let pageIndexes = []; let indexesForReuse = []; switch (delimiter) { case "none": pageIndexes = [...slidingWindowIndexes]; break; case "both": pageIndexes = [0, "low", ...slidingWindowIndexes, "high", pageCount - 1]; indexesForReuse = slidingWindowIndexes.slice(1, -1); break; case "high": pageIndexes = [0, ...slidingWindowIndexes, "high", pageCount - 1]; indexesForReuse = slidingWindowIndexes.slice(0, -1); break; case "low": pageIndexes = [0, "low", ...slidingWindowIndexes, pageCount - 1]; indexesForReuse = slidingWindowIndexes.slice(1) } return { slidingWindowIndexes: slidingWindowIndexes, indexesForReuse: indexesForReuse, pageIndexes: pageIndexes } } function createPageIndexes(startIndex, slidingWindowSize, pageCount, delimiter) { const slidingWindowIndexes = []; for (let i = 0; i < slidingWindowSize; i += 1) { slidingWindowIndexes.push(i + startIndex) } return createPageIndexesBySlidingWindowIndexes(slidingWindowIndexes, pageCount, delimiter) } class PagesLarge extends _index.BaseInfernoComponent { constructor(props) { super(props); this.state = {}; this.refs = null; this.canReuseSlidingWindow = this.canReuseSlidingWindow.bind(this); this.generatePageIndexes = this.generatePageIndexes.bind(this); this.isSlidingWindowMode = this.isSlidingWindowMode.bind(this); this.onPageClick = this.onPageClick.bind(this) } getConfig() { if (this.context[_config_context.ConfigContext.id]) { return this.context[_config_context.ConfigContext.id] } return _config_context.ConfigContext.defaultValue } getSlidingWindowState() { const slidingWindowState = this.slidingWindowStateHolder; if (!slidingWindowState) { return { indexesForReuse: [], slidingWindowIndexes: [] } } return slidingWindowState } canReuseSlidingWindow(currentPageCount, pageIndex) { const { indexesForReuse: indexesForReuse } = this.getSlidingWindowState(); const lastPageIsFartherThanWindow = indexesForReuse.slice(-1)[0] < currentPageCount - 1; const pageIndexExistInIndexes = indexesForReuse.includes(pageIndex); return lastPageIsFartherThanWindow && pageIndexExistInIndexes } generatePageIndexes() { const { pageCount: pageCount, pageIndex: pageIndex } = this.props; let startIndex = 0; const { slidingWindowIndexes: slidingWindowIndexes } = this.getSlidingWindowState(); if (pageIndex === slidingWindowIndexes[0]) { startIndex = pageIndex - 1 } else if (pageIndex === slidingWindowIndexes[slidingWindowIndexes.length - 1]) { startIndex = pageIndex + 2 - 4 } else if (pageIndex < 4) { startIndex = 1 } else if (pageIndex >= pageCount - 4) { startIndex = pageCount - 4 - 1 } else { startIndex = pageIndex - 1 } const delimiter = getDelimiterType(startIndex, 4, pageCount); const indexes = createPageIndexes(startIndex, 4, pageCount, delimiter); const { pageIndexes: pageIndexes } = indexes; this.slidingWindowStateHolder = indexes; return pageIndexes } isSlidingWindowMode() { const { maxPagesCount: maxPagesCount, pageCount: pageCount } = this.props; return pageCount <= 4 || pageCount <= maxPagesCount } onPageClick(pageIndex) { this.props.pageIndexChangedInternal(pageIndex) } getPageIndexes() { const { pageCount: pageCount } = this.props; if (this.isSlidingWindowMode()) { return createPageIndexes(0, pageCount, pageCount, "none").pageIndexes } if (this.canReuseSlidingWindow(pageCount, this.props.pageIndex)) { const { slidingWindowIndexes: slidingWindowIndexes } = this.getSlidingWindowState(); const delimiter = getDelimiterType(slidingWindowIndexes[0], 4, pageCount); return createPageIndexesBySlidingWindowIndexes(slidingWindowIndexes, pageCount, delimiter).pageIndexes } return this.generatePageIndexes() } getPages() { var _this$getConfig; const { pageIndex: pageIndex } = this.props; const createPage = index => { const paginationProps = "low" === index || "high" === index ? null : { index: index, onClick: () => this.onPageClick(index), selected: pageIndex === index }; return { key: index.toString(), pageProps: paginationProps } }; const indices = this.getPageIndexes(); const rtlPageIndexes = null !== (_this$getConfig = this.getConfig()) && void 0 !== _this$getConfig && _this$getConfig.rtlEnabled ? [...indices].reverse() : indices; return rtlPageIndexes.map((index => createPage(index))) } render() { const PagesMarkup = this.getPages().map((_ref => { let { key: key, pageProps: pageProps } = _ref; return pageProps ? (0, _inferno.createComponentVNode)(2, _page.Page, { index: pageProps.index, selected: pageProps.selected, onClick: pageProps.onClick }, key) : (0, _inferno.createVNode)(1, "div", "dx-separator", ". . .", 16, null, key) })); return (0, _inferno.createFragment)(PagesMarkup, 0) } } exports.PagesLarge = PagesLarge; PagesLarge.defaultProps = PagesLargeDefaultProps }, 12363: /*!*********************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/pagination/pages/page.js ***! \*********************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.PageDefaultProps = exports.Page = void 0; var _inferno = __webpack_require__( /*! inferno */ 76231); var _index = __webpack_require__( /*! ../../core/r1/runtime/inferno/index */ 6257); var _string = __webpack_require__( /*! ../../../core/utils/string */ 54497); var _render_utils = __webpack_require__( /*! ../../core/r1/utils/render_utils */ 71312); var _consts = __webpack_require__( /*! ../common/consts */ 54623); var _light_button = __webpack_require__( /*! ../common/light_button */ 17286); var _compatibility_utils = __webpack_require__( /*! ../utils/compatibility_utils */ 4917); const PageDefaultProps = exports.PageDefaultProps = { index: 0, selected: false, className: _consts.PAGINATION_PAGE_CLASS }; class Page extends _index.BaseInfernoComponent { constructor() { super(...arguments); this.state = {}; this.refs = null } getLabel() { return (0, _string.format)((0, _compatibility_utils.getLocalizationMessage)(this.context, "dxPagination-page"), this.getValue()) } getValue() { return this.props.index + 1 } getClassName() { return (0, _render_utils.combineClasses)({ [`${this.props.className}`]: !!this.props.className, [_consts.PAGINATION_SELECTION_CLASS]: !!this.props.selected }) } render() { return (0, _inferno.createComponentVNode)(2, _light_button.LightButton, { className: this.getClassName(), label: this.getLabel(), onClick: this.props.onClick, selected: this.props.selected, children: this.getValue() }) } } exports.Page = Page; Page.defaultProps = PageDefaultProps }, 33494: /*!************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/pagination/pages/page_index_selector.js ***! \************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.PageIndexSelector = exports.PAGER_BUTTON_DISABLE_CLASS = void 0; var _inferno = __webpack_require__( /*! inferno */ 76231); var _index = __webpack_require__( /*! ../../core/r1/runtime/inferno/index */ 6257); var _config_context = __webpack_require__( /*! ../../core/r1/config_context */ 12274); var _light_button = __webpack_require__( /*! ../common/light_button */ 17286); var _pagination_props = __webpack_require__( /*! ../common/pagination_props */ 64522); var _compatibility_utils = __webpack_require__( /*! ../utils/compatibility_utils */ 4917); var _large = __webpack_require__( /*! ./large */ 35853); var _small = __webpack_require__( /*! ./small */ 70057); const PAGER_BUTTON_DISABLE_CLASS = exports.PAGER_BUTTON_DISABLE_CLASS = "dx-button-disable"; const classNames = { nextEnabledClass: "dx-navigate-button dx-next-button", prevEnabledClass: "dx-navigate-button dx-prev-button", nextDisabledClass: `${PAGER_BUTTON_DISABLE_CLASS} dx-navigate-button dx-next-button`, prevDisabledClass: `${PAGER_BUTTON_DISABLE_CLASS} dx-navigate-button dx-prev-button` }; const reverseDirections = { next: "prev", prev: "next" }; const PageIndexSelectorDefaultProps = { isLargeDisplayMode: true, maxPagesCount: _pagination_props.PaginationDefaultProps.maxPagesCount, pageCount: _pagination_props.PaginationDefaultProps.pageCount, pageIndex: _pagination_props.PaginationDefaultProps.pageIndex, pageIndexChangedInternal: _pagination_props.PaginationDefaultProps.pageIndexChangedInternal, showNavigationButtons: _pagination_props.PaginationDefaultProps.showNavigationButtons, itemCount: _pagination_props.PaginationDefaultProps.itemCount }; class PageIndexSelector extends _index.BaseInfernoComponent { constructor(props) { super(props); this.state = {}; this.refs = null; this.__getterCache = { prevButtonProps: void 0, nextButtonProps: void 0 }; this.pageIndexChangedInternal = this.pageIndexChangedInternal.bind(this); this.getButtonProps = this.getButtonProps.bind(this); this.canNavigateToPage = this.canNavigateToPage.bind(this); this.getNextPageIndex = this.getNextPageIndex.bind(this); this.canNavigateTo = this.canNavigateTo.bind(this); this.navigateToPage = this.navigateToPage.bind(this) } getConfig() { if (this.context[_config_context.ConfigContext.id]) { return this.context[_config_context.ConfigContext.id] } return _config_context.ConfigContext.defaultValue } pageIndexChangedInternal(pageIndex) { if (this.canNavigateToPage(pageIndex)) { this.props.pageIndexChangedInternal(pageIndex) } } getButtonProps(direction) { var _this$getConfig; const rtlAwareDirection = null !== (_this$getConfig = this.getConfig()) && void 0 !== _this$getConfig && _this$getConfig.rtlEnabled ? reverseDirections[direction] : direction; const canNavigate = this.canNavigateTo(rtlAwareDirection); const className = classNames[`${direction}${canNavigate?"Enabled":"Disabled"}Class`]; return { className: className, tabIndex: canNavigate ? 0 : -1, navigate: () => this.navigateToPage(rtlAwareDirection) } } canNavigateToPage(pageIndex) { if (!this.props.hasKnownLastPage) { return pageIndex >= 0 } return pageIndex >= 0 && pageIndex <= this.props.pageCount - 1 } getNextPageIndex(direction) { return this.props.pageIndex + function(direction) { return "next" === direction ? 1 : -1 }(direction) } canNavigateTo(direction) { return this.canNavigateToPage(this.getNextPageIndex(direction)) } navigateToPage(direction) { this.pageIndexChangedInternal(this.getNextPageIndex(direction)) } getRenderPrevButton() { const { isLargeDisplayMode: isLargeDisplayMode, showNavigationButtons: showNavigationButtons } = this.props; return (!isLargeDisplayMode || showNavigationButtons) ?? false } getRenderNextButton() { return this.getRenderPrevButton() || !this.props.hasKnownLastPage } getPrevButtonProps() { if (void 0 !== this.__getterCache.prevButtonProps) { return this.__getterCache.prevButtonProps } const result = (() => this.getButtonProps("prev"))(); this.__getterCache.prevButtonProps = result; return result } getNextButtonProps() { if (void 0 !== this.__getterCache.nextButtonProps) { return this.__getterCache.nextButtonProps } const result = (() => this.getButtonProps("next"))(); this.__getterCache.nextButtonProps = result; return result } componentWillUpdate(nextProps, nextState, context) { const isComponentUpdated = this.context[_config_context.ConfigContext.id] !== context[_config_context.ConfigContext.id] || this.props.hasKnownLastPage !== nextProps.hasKnownLastPage || this.props.pageCount !== nextProps.pageCount || this.props.pageIndex !== nextProps.pageIndex || this.props.pageIndexChangedInternal !== nextProps.pageIndexChangedInternal; if (isComponentUpdated) { this.__getterCache.prevButtonProps = void 0; this.__getterCache.nextButtonProps = void 0 } } getPrevButtonLabel() { return (0, _compatibility_utils.getLocalizationMessage)(this.context, "dxPagination-prevPage") } getNextButtonLabel() { return (0, _compatibility_utils.getLocalizationMessage)(this.context, "dxPagination-nextPage") } render() { const { className: className, tabIndex: tabIndex, navigate: navigate } = this.getPrevButtonProps(); const { isLargeDisplayMode: isLargeDisplayMode, maxPagesCount: maxPagesCount, pageCount: pageCount, pageIndex: pageIndex, pagesCountText: pagesCountText } = this.props; return (0, _inferno.createFragment)([this.getRenderPrevButton() && (0, _inferno.createComponentVNode)(2, _light_button.LightButton, { label: this.getPrevButtonLabel(), className: className, tabIndex: tabIndex, onClick: navigate }), isLargeDisplayMode && (0, _inferno.createComponentVNode)(2, _large.PagesLarge, { maxPagesCount: maxPagesCount, pageCount: pageCount, pageIndex: pageIndex, pageIndexChangedInternal: this.pageIndexChangedInternal }), !isLargeDisplayMode && (0, _inferno.createComponentVNode)(2, _small.PagesSmall, { pageCount: pageCount, pageIndex: pageIndex, pageIndexChangedInternal: this.pageIndexChangedInternal, pagesCountText: pagesCountText }), this.getRenderNextButton() && (0, _inferno.createComponentVNode)(2, _light_button.LightButton, { label: this.getNextButtonLabel(), className: this.getNextButtonProps().className, tabIndex: this.getNextButtonProps().tabIndex, onClick: this.getNextButtonProps().navigate })], 0) } } exports.PageIndexSelector = PageIndexSelector; PageIndexSelector.defaultProps = PageIndexSelectorDefaultProps }, 70057: /*!**********************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/pagination/pages/small.js ***! \**********************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.PaginationSmallDefaultProps = exports.PagesSmall = void 0; var _inferno = __webpack_require__( /*! inferno */ 76231); var _index = __webpack_require__( /*! ../../core/r1/runtime/inferno/index */ 6257); var _pagination_props = __webpack_require__( /*! ../common/pagination_props */ 64522); var _number_box = __webpack_require__( /*! ../editors/number_box */ 71897); var _info = __webpack_require__( /*! ../info */ 49329); var _calculate_values_fitted_width = __webpack_require__( /*! ../utils/calculate_values_fitted_width */ 19e3); var _compatibility_utils = __webpack_require__( /*! ../utils/compatibility_utils */ 4917); var _get_element_width = __webpack_require__( /*! ../utils/get_element_width */ 70267); var _page = __webpack_require__( /*! ./page */ 12363); const PAGER_INFO_TEXT_CLASS = `${_info.PAGER_INFO_CLASS} dx-info-text`; const PaginationSmallDefaultProps = exports.PaginationSmallDefaultProps = { pageIndex: _pagination_props.PaginationDefaultProps.pageIndex, pageCount: _pagination_props.PaginationDefaultProps.pageCount, pageIndexChangedInternal: _pagination_props.PaginationDefaultProps.pageIndexChangedInternal }; class PagesSmall extends _index.InfernoComponent { constructor(props) { super(props); this.state = { minWidth: 10 }; this.refs = null; this.pageIndexRef = (0, _inferno.createRef)(); this.updateWidth = this.updateWidth.bind(this); this.selectLastPageIndex = this.selectLastPageIndex.bind(this); this.valueChange = this.valueChange.bind(this) } componentWillUpdate(nextProps, nextState, context) { super.componentWillUpdate(nextProps, nextState, context) } createEffects() { return [new _index.InfernoEffect(this.updateWidth, [this.state.minWidth])] } updateEffects() { var _this$_effects$; null === (_this$_effects$ = this._effects[0]) || void 0 === _this$_effects$ || _this$_effects$.update([this.state.minWidth]) } updateWidth() { var _this$pageIndexRef$cu; const el = null === (_this$pageIndexRef$cu = this.pageIndexRef.current) || void 0 === _this$pageIndexRef$cu ? void 0 : _this$pageIndexRef$cu.querySelector(".dx-page-index"); const minWidth = el ? (0, _get_element_width.getElementMinWidth)(el) : 0; this.setState((state => ({ minWidth: minWidth > 0 ? minWidth : state.minWidth }))) } getValue() { return this.props.pageIndex + 1 } getWidth() { return (0, _calculate_values_fitted_width.calculateValuesFittedWidth)(this.state.minWidth, [this.props.pageCount]) } getPagesCountText() { return (this.props.pagesCountText ?? "") || (0, _compatibility_utils.getLocalizationMessage)(this.context, "dxPagination-pagesCountText") } getInputAttributes() { return { "aria-label": (0, _compatibility_utils.getLocalizationMessage)(this.context, "dxPagination-ariaPageNumber") } } selectLastPageIndex() { this.props.pageIndexChangedInternal(this.props.pageCount - 1) } valueChange(value) { this.props.pageIndexChangedInternal(value - 1) } render() { return (0, _inferno.createVNode)(1, "div", "dx-light-pages", [(0, _inferno.createComponentVNode)(2, _number_box.NumberBox, { className: "dx-page-index", min: 1, max: Math.max(this.props.pageCount, this.getValue()), width: this.getWidth(), value: this.getValue(), valueChange: this.valueChange, inputAttr: this.getInputAttributes() }), (0, _inferno.createVNode)(1, "span", PAGER_INFO_TEXT_CLASS, this.getPagesCountText(), 0), (0, _inferno.createComponentVNode)(2, _page.Page, { className: "dx-pages-count", selected: false, index: this.props.pageCount - 1, onClick: this.selectLastPageIndex })], 4, null, null, this.pageIndexRef) } } exports.PagesSmall = PagesSmall; PagesSmall.defaultProps = PaginationSmallDefaultProps }, 94585: /*!*********************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/pagination/pagination.js ***! \*********************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.Pagination = void 0; var _inferno = __webpack_require__( /*! inferno */ 76231); var _index = __webpack_require__( /*! ../core/r1/runtime/inferno/index */ 6257); var _render_utils = __webpack_require__( /*! ../core/r1/utils/render_utils */ 71312); var _pagination_props = __webpack_require__( /*! ./common/pagination_props */ 64522); var _content = __webpack_require__( /*! ./content */ 62388); var _resizable_container = __webpack_require__( /*! ./resizable_container */ 30980); var _compatibility_utils = __webpack_require__( /*! ./utils/compatibility_utils */ 4917); function _extends() { return _extends = Object.assign ? Object.assign.bind() : function(n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) { ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]) } } return n }, _extends.apply(null, arguments) } class Pagination extends _index.InfernoWrapperComponent { constructor(props) { super(props); this.__getterCache = {}; this.pageIndexChangedInternal = this.pageIndexChangedInternal.bind(this); this.pageSizeChangedInternal = this.pageSizeChangedInternal.bind(this) } createEffects() { return [(0, _index.createReRenderEffect)()] } pageIndexChangedInternal(newPageIndex) { const newValue = newPageIndex + 1; this.setState((() => ({ pageIndex: newValue }))); this.props.pageIndexChangedInternal(newValue) } getPageIndex() { return this.props.pageIndex - 1 } pageSizeChangedInternal(newPageSize) { this.setState((() => ({ pageSize: newPageSize }))); this.props.pageSizeChangedInternal(newPageSize) } getClassName() { return (0, _render_utils.combineClasses)({ "dx-datagrid-pager": (0, _compatibility_utils.isGridCompatibilityMode)(this.context), [`${this.props.className}`]: !!this.props.className }) } getPaginationProps() { return _extends({}, this.props, { className: this.getClassName(), pageIndex: this.getPageIndex(), pageIndexChangedInternal: pageIndex => this.pageIndexChangedInternal(pageIndex), pageSizeChangedInternal: pageSize => this.pageSizeChangedInternal(pageSize) }) } render() { return (0, _inferno.createComponentVNode)(2, _resizable_container.ResizableContainer, { contentTemplate: _content.PaginationContent, paginationProps: this.getPaginationProps() }) } } exports.Pagination = Pagination; Pagination.defaultProps = _pagination_props.PaginationDefaultProps }, 30980: /*!******************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/pagination/resizable_container.js ***! \******************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.ResizableContainerDefaultProps = exports.ResizableContainer = void 0; exports.calculateInfoTextVisible = calculateInfoTextVisible; exports.calculateLargeDisplayMode = calculateLargeDisplayMode; var _inferno = __webpack_require__( /*! inferno */ 76231); var _index = __webpack_require__( /*! ../core/r1/runtime/inferno/index */ 6257); var _resize_callbacks = (e = __webpack_require__( /*! ../../core/utils/resize_callbacks */ 63283), e && e.__esModule ? e : { default: e }); var e; var _type = __webpack_require__( /*! ../../core/utils/type */ 11528); var _pagination_props = __webpack_require__( /*! ./common/pagination_props */ 64522); var _get_element_width = __webpack_require__( /*! ./utils/get_element_width */ 70267); function _extends() { return _extends = Object.assign ? Object.assign.bind() : function(n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) { ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]) } } return n }, _extends.apply(null, arguments) } function calculateLargeDisplayMode(_ref) { let { parent: parentWidth, allowedPageSizes: pageSizesWidth, pages: pagesWidth } = _ref; return parentWidth - (pageSizesWidth + pagesWidth) > 0 } function calculateInfoTextVisible(_ref2) { let { parent: parentWidth, allowedPageSizes: pageSizesWidth, pages: pagesWidth, info: infoWidth } = _ref2; const minimalWidth = pageSizesWidth + pagesWidth + infoWidth; return parentWidth - minimalWidth > 0 } const ResizableContainerDefaultProps = exports.ResizableContainerDefaultProps = { paginationProps: _extends({}, _pagination_props.PaginationDefaultProps) }; class ResizableContainer extends _index.InfernoComponent { constructor(props) { super(props); this.state = { infoTextVisible: true, isLargeDisplayMode: true }; this.refs = null; this.parentRef = (0, _inferno.createRef)(); this.infoTextRef = (0, _inferno.createRef)(); this.pagesRef = (0, _inferno.createRef)(); this.allowedPageSizesRef = (0, _inferno.createRef)(); this.elementsWidth = {}; this.actualIsLargeDisplayMode = true; this.actualInfoTextVisible = true; this.subscribeToResize = this.subscribeToResize.bind(this); this.effectUpdateChildProps = this.effectUpdateChildProps.bind(this); this.updateAdaptivityProps = this.updateAdaptivityProps.bind(this) } componentWillUpdate(nextProps, nextState, context) { super.componentWillUpdate(nextProps, nextState, context) } createEffects() { return [new _index.InfernoEffect(this.subscribeToResize, [this.state.infoTextVisible, this.state.isLargeDisplayMode]), new _index.InfernoEffect(this.effectUpdateChildProps, [this.props, this.state.infoTextVisible, this.state.isLargeDisplayMode, this.props.paginationProps, this.props.contentTemplate])] } updateEffects() { var _this$_effects$, _this$_effects$2; null === (_this$_effects$ = this._effects[0]) || void 0 === _this$_effects$ || _this$_effects$.update([this.state.infoTextVisible, this.state.isLargeDisplayMode]); null === (_this$_effects$2 = this._effects[1]) || void 0 === _this$_effects$2 || _this$_effects$2.update([this.props, this.state.infoTextVisible, this.state.isLargeDisplayMode, this.props.paginationProps, this.props.contentTemplate]) } subscribeToResize() { const callback = () => { if (this.getParentWidth() > 0) { this.updateAdaptivityProps() } }; _resize_callbacks.default.add(callback); return () => { _resize_callbacks.default.remove(callback) } } effectUpdateChildProps() { if (this.getParentWidth() > 0) { this.updateAdaptivityProps() } } getContentAttributes() { const { className: className, displayMode: displayMode, isGridCompatibilityMode: isGridCompatibilityMode, _getParentComponentRootNode: _getParentComponentRootNode, hasKnownLastPage: hasKnownLastPage, infoText: infoText, label: label, lightModeEnabled: lightModeEnabled, maxPagesCount: maxPagesCount, onKeyDown: onKeyDown, pageCount: pageCount, pageIndex: pageIndex, pageIndexChangedInternal: pageIndexChangedInternal, pageSize: pageSize, pageSizeChangedInternal: pageSizeChangedInternal, allowedPageSizes: allowedPageSizes, pagesCountText: pagesCountText, pagesNavigatorVisible: pagesNavigatorVisible, rtlEnabled: rtlEnabled, showInfo: showInfo, showNavigationButtons: showNavigationButtons, showPageSizeSelector: showPageSizeSelector, itemCount: itemCount, visible: visible, style: style, width: width, height: height, elementAttr: elementAttr, hint: hint, disabled: disabled, tabIndex: tabIndex, accessKey: accessKey, activeStateEnabled: activeStateEnabled, focusStateEnabled: focusStateEnabled, hoverStateEnabled: hoverStateEnabled } = this.props.paginationProps; return { pageSize: pageSize, pageIndex: pageIndex, pageIndexChangedInternal: pageIndexChangedInternal, pageSizeChangedInternal: pageSizeChangedInternal, isGridCompatibilityMode: isGridCompatibilityMode, _getParentComponentRootNode: _getParentComponentRootNode, className: className, showInfo: showInfo, infoText: infoText, lightModeEnabled: lightModeEnabled, displayMode: displayMode, maxPagesCount: maxPagesCount, pageCount: pageCount, pagesCountText: pagesCountText, visible: visible, hasKnownLastPage: hasKnownLastPage, pagesNavigatorVisible: pagesNavigatorVisible, showPageSizeSelector: showPageSizeSelector, allowedPageSizes: allowedPageSizes, rtlEnabled: rtlEnabled, showNavigationButtons: showNavigationButtons, itemCount: itemCount, onKeyDown: onKeyDown, label: label, style: style, width: width, height: height, elementAttr: elementAttr, hint: hint, disabled: disabled, tabIndex: tabIndex, accessKey: accessKey, activeStateEnabled: activeStateEnabled, focusStateEnabled: focusStateEnabled, hoverStateEnabled: hoverStateEnabled } } getParentWidth() { var _this$parentRef; return null !== (_this$parentRef = this.parentRef) && void 0 !== _this$parentRef && _this$parentRef.current ? (0, _get_element_width.getElementWidth)(this.parentRef.current) : 0 } updateAdaptivityProps() { var _this$parentRef2, _this$allowedPageSize, _this$infoTextRef, _this$pagesRef; const currentElementsWidth = function(_ref3) { let { parent: parent, allowedPageSizes: allowedPageSizes, pages: pages, info: info } = _ref3; const parentWidth = (0, _get_element_width.getElementContentWidth)(parent); const pageSizesWidth = (0, _get_element_width.getElementWidth)(allowedPageSizes); const infoWidth = (0, _get_element_width.getElementWidth)(info); const pagesHtmlWidth = (0, _get_element_width.getElementWidth)(pages); return { parent: parentWidth, allowedPageSizes: pageSizesWidth, info: infoWidth + (0, _get_element_width.getElementStyle)("marginLeft", info) + (0, _get_element_width.getElementStyle)("marginRight", info), pages: pagesHtmlWidth } }({ parent: null === (_this$parentRef2 = this.parentRef) || void 0 === _this$parentRef2 ? void 0 : _this$parentRef2.current, allowedPageSizes: null === (_this$allowedPageSize = this.allowedPageSizesRef) || void 0 === _this$allowedPageSize ? void 0 : _this$allowedPageSize.current, info: null === (_this$infoTextRef = this.infoTextRef) || void 0 === _this$infoTextRef ? void 0 : _this$infoTextRef.current, pages: null === (_this$pagesRef = this.pagesRef) || void 0 === _this$pagesRef ? void 0 : _this$pagesRef.current }); if (this.actualInfoTextVisible !== this.state.infoTextVisible || this.actualIsLargeDisplayMode !== this.state.isLargeDisplayMode) { return } const isEmpty = !(0, _type.isDefined)(this.elementsWidth); if (isEmpty) { this.elementsWidth = {} } if (isEmpty || this.state.isLargeDisplayMode) { this.elementsWidth.allowedPageSizes = currentElementsWidth.allowedPageSizes; this.elementsWidth.pages = currentElementsWidth.pages } if (isEmpty || this.state.infoTextVisible) { this.elementsWidth.info = currentElementsWidth.info } this.actualIsLargeDisplayMode = calculateLargeDisplayMode({ parent: currentElementsWidth.parent, allowedPageSizes: this.elementsWidth.allowedPageSizes, pages: this.elementsWidth.pages }); this.actualInfoTextVisible = calculateInfoTextVisible(_extends({}, currentElementsWidth, { info: this.elementsWidth.info })); this.setState((() => ({ infoTextVisible: this.actualInfoTextVisible }))); this.setState((() => ({ isLargeDisplayMode: this.actualIsLargeDisplayMode }))) } render() { const { infoTextVisible: infoTextVisible, isLargeDisplayMode: isLargeDisplayMode } = this.state; const { props: { contentTemplate: Content } } = this; return (0, _inferno.normalizeProps)((0, _inferno.createComponentVNode)(2, Content, _extends({ rootElementRef: this.parentRef, allowedPageSizesRef: this.allowedPageSizesRef, infoTextRef: this.infoTextRef, pagesRef: this.pagesRef, infoTextVisible: infoTextVisible, isLargeDisplayMode: isLargeDisplayMode }, this.getContentAttributes()))) } } exports.ResizableContainer = ResizableContainer; ResizableContainer.defaultProps = ResizableContainerDefaultProps }, 19e3: /*!**********************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/pagination/utils/calculate_values_fitted_width.js ***! \**********************************************************************************************************/ function(__unused_webpack_module, exports) { Object.defineProperty(exports, "__esModule", { value: true }); exports.calculateValuesFittedWidth = function(minWidth, values) { return minWidth + oneDigitWidth * Math.max(...values).toString().length }; exports.oneDigitWidth = void 0; const oneDigitWidth = exports.oneDigitWidth = 10 }, 4917: /*!************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/pagination/utils/compatibility_utils.js ***! \************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.getLocalizationMessage = function(context, key) { let actualKey = key; if (isGridCompatibilityMode(context)) { actualKey = key.replace("dxPagination", "dxPager") } return _message.default.getFormatter(actualKey)() }; exports.isGridCompatibilityMode = isGridCompatibilityMode; var _message = (e = __webpack_require__( /*! ../../../common/core/localization/message */ 4671), e && e.__esModule ? e : { default: e }); var e; var _pagination_config_context = __webpack_require__( /*! ../common/pagination_config_context */ 32576); function isGridCompatibilityMode(context) { var _getPaginationConfig; return !!(null !== (_getPaginationConfig = function(context) { if (context[_pagination_config_context.PaginationConfigContext.id]) { return context[_pagination_config_context.PaginationConfigContext.id] } return _pagination_config_context.PaginationConfigContext.defaultValue }(context)) && void 0 !== _getPaginationConfig && _getPaginationConfig.isGridCompatibilityMode) } }, 70267: /*!**********************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/pagination/utils/get_element_width.js ***! \**********************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.getElementContentWidth = function(element) { const padding = getElementStyle("paddingLeft", element) + getElementStyle("paddingRight", element); const width = getElementStyle("width", element); return width - padding }; exports.getElementMinWidth = function(element) { return getElementStyle("minWidth", element) }; exports.getElementStyle = getElementStyle; exports.getElementWidth = function(element) { const margin = getElementStyle("marginLeft", element) + getElementStyle("marginRight", element); const width = getElementStyle("width", element); return margin + width }; var _get_computed_style = (e = __webpack_require__( /*! ../../core/r1/utils/get_computed_style */ 31006), e && e.__esModule ? e : { default: e }); var e; var _type_conversion = __webpack_require__( /*! ../../core/r1/utils/type_conversion */ 7529); function getElementStyle(name, element) { const computedStyle = (0, _get_computed_style.default)(element) ?? {}; return (0, _type_conversion.toNumber)(computedStyle[name]) } }, 28462: /*!*********************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/pagination/utils/validation_utils.js ***! \*********************************************************************************************/ function(__unused_webpack_module, exports) { Object.defineProperty(exports, "__esModule", { value: true }); exports.validateOptions = function(oldPageSize, oldPageIndex, oldItemCount) { const pageSize = function(pageSize) { if (pageSize < 0) { return 1 } return pageSize }(oldPageSize); const itemCount = function(itemCount) { if (itemCount < 0) { return 0 } return itemCount }(oldItemCount); const pageCount = getPageCount(pageSize, oldItemCount); const pageIndex = function(pageIndex, pageSize, itemCount) { if (pageIndex < 1) { return 1 } const pageCount = getPageCount(pageSize, itemCount); return Math.min(pageIndex, pageCount) }(oldPageIndex, pageSize, itemCount); return { pageSize: pageSize, pageIndex: pageIndex, itemCount: itemCount, pageCount: pageCount } }; function getPageCount(pageSize, itemCount) { if (pageSize > 0 && itemCount > 0) { return Math.max(1, Math.ceil(itemCount / pageSize)) } return 1 } }, 76988: /*!******************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/pagination/wrappers/pagination.js ***! \******************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _pagination = __webpack_require__( /*! ../pagination */ 94585); var _pagination_wrapper = __webpack_require__( /*! ./pagination_wrapper */ 16952); class Pagination extends _pagination_wrapper.PaginationWrapper { getProps() { const props = super.getProps(); props.onKeyDown = this._wrapKeyDownHandler(props.onKeyDown); return props } get _propsInfo() { return { twoWay: [ ["pageSize", "defaultPageSize", "pageSizeChangedInternal", "pageSizeChanged"], ["pageIndex", "defaultPageIndex", "pageIndexChangedInternal", "pageIndexChanged"] ], allowNull: [], elements: [], templates: [], props: ["defaultPageSize", "pageSizeChanged", "pageSizeChangedInternal", "defaultPageIndex", "pageIndexChanged", "pageIndexChangedInternal", "isGridCompatibilityMode", "className", "showInfo", "infoText", "lightModeEnabled", "displayMode", "maxPagesCount", "pageCount", "pagesCountText", "visible", "hasKnownLastPage", "pagesNavigatorVisible", "showPageSizeSelector", "allowedPageSizes", "rtlEnabled", "showNavigationButtons", "itemCount", "label", "onKeyDown", "pageSize", "pageIndex", "width", "height", "elementAttr", "hint", "disabled", "tabIndex", "accessKey", "activeStateEnabled", "focusStateEnabled", "hoverStateEnabled", "_skipValidation", "_getParentComponentRootNode"] } } get _viewComponent() { return _pagination.Pagination } } exports.default = Pagination }, 16952: /*!**************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/pagination/wrappers/pagination_wrapper.js ***! \**************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.PaginationWrapper = void 0; var _component_wrapper = __webpack_require__( /*! ../../core/r1/component_wrapper */ 34993); var _validation_utils = __webpack_require__( /*! ../utils/validation_utils */ 28462); const _excluded = ["pageSize", "pageIndex", "itemCount"]; function _extends() { return _extends = Object.assign ? Object.assign.bind() : function(n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) { ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]) } } return n }, _extends.apply(null, arguments) } class PaginationWrapper extends _component_wrapper.ComponentWrapper { _optionChanged(args) { switch (args.name) { case "pageIndex": { const pageIndexChanged = this.option("pageIndexChanged"); if (pageIndexChanged) { pageIndexChanged(args.value) } break } case "pageSize": { const pageSizeChanged = this.option("pageSizeChanged"); if (pageSizeChanged) { pageSizeChanged(args.value) } break } } super._optionChanged(args) } getPageCount() { return this.option("pageCount") } _validateOptions(options) { if (options._skipValidation || this.option("_skipValidation")) { return options } const initialOptions = super._validateOptions(options); let { pageSize: pageSize, pageIndex: pageIndex, itemCount: itemCount } = initialOptions, rest = function(r, e) { if (null == r) { return {} } var t = {}; for (var n in r) { if ({}.hasOwnProperty.call(r, n)) { if (e.includes(n)) { continue } t[n] = r[n] } } return t }(initialOptions, _excluded); if (void 0 === pageSize) { pageSize = this.option("pageSize") } if (void 0 === pageIndex) { pageIndex = this.option("pageIndex") } if (void 0 === itemCount) { itemCount = this.option("itemCount") } const validatedOptions = (0, _validation_utils.validateOptions)(pageSize, pageIndex, itemCount); return _extends({}, rest, validatedOptions) } } exports.PaginationWrapper = PaginationWrapper }, 24988: /*!****************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/scheduler/a11y_status/a11y_status_render.js ***! \****************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.createA11yStatusContainer = void 0; var _renderer = (e = __webpack_require__( /*! ../../../core/renderer */ 64553), e && e.__esModule ? e : { default: e }); var e; const CLASSES_container = "dx-scheduler-a11y-status-container"; exports.createA11yStatusContainer = function() { let statusText = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : ""; return (0, _renderer.default)("
").text(statusText).addClass(CLASSES_container).attr("role", "status") } }, 71883: /*!**************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/scheduler/a11y_status/a11y_status_text.js ***! \**************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.getA11yStatusText = void 0; var _date = _interopRequireDefault(__webpack_require__( /*! ../../../common/core/localization/date */ 38662)); var _message = _interopRequireDefault(__webpack_require__( /*! ../../../common/core/localization/message */ 4671)); var _type = __webpack_require__( /*! ../../../core/utils/type */ 11528); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } const KEYS_dateRange = "dxScheduler-dateRange", KEYS_label = "dxScheduler-ariaLabel", KEYS_indicatorPresent = "dxScheduler-ariaLabel-currentIndicator-present", KEYS_indicatorNotPresent = "dxScheduler-ariaLabel-currentIndicator-not-present"; const viewTypeLocalization = { agenda: "dxScheduler-switcherAgenda", day: "dxScheduler-switcherDay", month: "dxScheduler-switcherMonth", week: "dxScheduler-switcherWeek", workWeek: "dxScheduler-switcherWorkWeek", timelineDay: "dxScheduler-switcherTimelineDay", timelineMonth: "dxScheduler-switcherTimelineMonth", timelineWeek: "dxScheduler-switcherTimelineWeek", timelineWorkWeek: "dxScheduler-switcherTimelineWorkWeek" }; const localizeMonth = date => String(_date.default.format(date, "monthAndYear")); const localizeDate = date => `${_date.default.format(date,"monthAndDay")}, ${_date.default.format(date,"year")}`; exports.getA11yStatusText = (view, startDate, endDate, appointmentCount, indicatorTime) => { const viewType = (0, _type.isObject)(view) ? view.type : view; const viewName = (0, _type.isObject)(view) ? view.name : void 0; const viewTypeLabel = ((viewName, viewType) => { if (viewName) { return viewName } if (viewType) { return _message.default.format(viewTypeLocalization[viewType]) } return "" })(viewName, viewType); const isMonth = "month" === viewType || "timelineMonth" === viewType; const startDateText = isMonth ? localizeMonth(startDate) : localizeDate(startDate); const endDateText = isMonth ? localizeMonth(endDate) : localizeDate(endDate); const intervalText = startDateText === endDateText ? `${startDateText}` : _message.default.format(KEYS_dateRange, startDateText, endDateText); const statusText = _message.default.format(KEYS_label, viewTypeLabel, intervalText, appointmentCount); if (indicatorTime) { const indicatorStatus = ((date, startDate, endDate) => _message.default.format(date >= startDate && date < endDate ? KEYS_indicatorPresent : KEYS_indicatorNotPresent))(indicatorTime, startDate, endDate); return `${statusText}. ${indicatorStatus}` } return statusText } }, 8107: /*!**********************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/scheduler/appointment_popup/m_form.js ***! \**********************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.AppointmentForm = exports.APPOINTMENT_FORM_GROUP_NAMES = void 0; __webpack_require__( /*! ../m_recurrence_editor */ 84056); __webpack_require__( /*! ../../../ui/text_area */ 23116); __webpack_require__( /*! ../../../ui/tag_box */ 4575); __webpack_require__( /*! ../../../ui/switch */ 91029); __webpack_require__( /*! ../../../ui/select_box */ 60695); var _message = _interopRequireDefault(__webpack_require__( /*! ../../../common/core/localization/message */ 4671)); var _data_source = _interopRequireDefault(__webpack_require__( /*! ../../../common/data/data_source */ 14479)); var _devices = _interopRequireDefault(__webpack_require__( /*! ../../../core/devices */ 65951)); var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../../core/renderer */ 64553)); var _date = _interopRequireDefault(__webpack_require__( /*! ../../../core/utils/date */ 41380)); var _date_serialization = _interopRequireDefault(__webpack_require__( /*! ../../../core/utils/date_serialization */ 71051)); var _extend = __webpack_require__( /*! ../../../core/utils/extend */ 52576); var _form = _interopRequireDefault(__webpack_require__( /*! ../../../ui/form */ 74075)); var _themes = __webpack_require__( /*! ../../../ui/themes */ 52071); var _m_utils_time_zone = _interopRequireDefault(__webpack_require__( /*! ../m_utils_time_zone */ 18648)); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } function _extends() { return _extends = Object.assign ? Object.assign.bind() : function(n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) { ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]) } } return n }, _extends.apply(null, arguments) } const APPOINTMENT_FORM_GROUP_NAMES = exports.APPOINTMENT_FORM_GROUP_NAMES = { Main: "mainGroup", Recurrence: "recurrenceGroup" }; const E2E_TEST_CLASSES_form = "e2e-dx-scheduler-form", E2E_TEST_CLASSES_textEditor = "e2e-dx-scheduler-form-text", E2E_TEST_CLASSES_descriptionEditor = "e2e-dx-scheduler-form-description", E2E_TEST_CLASSES_startDateEditor = "e2e-dx-scheduler-form-start-date", E2E_TEST_CLASSES_endDateEditor = "e2e-dx-scheduler-form-end-date", E2E_TEST_CLASSES_startDateTimeZoneEditor = "e2e-dx-scheduler-form-start-date-timezone", E2E_TEST_CLASSES_endDateTimeZoneEditor = "e2e-dx-scheduler-form-end-date-timezone", E2E_TEST_CLASSES_allDaySwitch = "e2e-dx-scheduler-form-all-day-switch", E2E_TEST_CLASSES_recurrenceSwitch = "e2e-dx-scheduler-form-recurrence-switch"; const getStylingModeFunc = () => (0, _themes.isFluent)((0, _themes.current)()) ? "filled" : void 0; exports.AppointmentForm = class { constructor(scheduler) { this.isFormUpdating = false; this.scheduler = scheduler; this.form = null } get dxForm() { return this.form } set readOnly(value) { this.form.option("readOnly", value); const { recurrenceRuleExpr: recurrenceRuleExpr } = this.scheduler.getDataAccessors().expr; const recurrenceEditor = this.form.getEditor(recurrenceRuleExpr); null === recurrenceEditor || void 0 === recurrenceEditor || recurrenceEditor.option("readOnly", value) } get formData() { return this.form.option("formData") } set formData(value) { this.form.option("formData", value) } create(triggerResize, changeSize, formData) { const { allowTimeZoneEditing: allowTimeZoneEditing } = this.scheduler.getEditingConfig(); const dataAccessors = this.scheduler.getDataAccessors(); const { expr: expr } = dataAccessors; const isRecurrence = Boolean(dataAccessors.get("recurrenceRule", formData)); const colSpan = isRecurrence ? 1 : 2; const mainItems = [...this._createMainItems(expr, triggerResize, changeSize, allowTimeZoneEditing), ...this.scheduler.createResourceEditorModel()]; changeSize(isRecurrence); const items = [{ itemType: "group", name: APPOINTMENT_FORM_GROUP_NAMES.Main, colCountByScreen: { lg: 2, xs: 1 }, colSpan: colSpan, items: mainItems }, { itemType: "group", name: APPOINTMENT_FORM_GROUP_NAMES.Recurrence, visible: isRecurrence, colSpan: colSpan, items: this._createRecurrenceEditor(expr) }]; const element = (0, _renderer.default)("
"); this.scheduler.createComponent(element, _form.default, { items: items, showValidationSummary: true, scrollingEnabled: true, colCount: "auto", colCountByScreen: { lg: 2, xs: 1 }, formData: formData, showColonAfterLabel: false, labelLocation: "top", onInitialized: e => { this.form = e.component }, screenByWidth: width => width < 600 || "desktop" !== _devices.default.current().deviceType ? "xs" : "lg", elementAttr: { class: E2E_TEST_CLASSES_form } }) } _dateBoxValueChanged(args, dateExpr, isNeedCorrect) { ((editor, value, previousValue) => { const isCurrentDateCorrect = null === value || !!value; const isPreviousDateCorrect = null === previousValue || !!previousValue; if (!isCurrentDateCorrect && isPreviousDateCorrect) { editor.option("value", previousValue) } })(args.component, args.value, args.previousValue); const value = _date_serialization.default.deserializeDate(args.value); const previousValue = _date_serialization.default.deserializeDate(args.previousValue); const dateEditor = this.form.getEditor(dateExpr); const dateValue = _date_serialization.default.deserializeDate(dateEditor.option("value")); if (!this.isFormUpdating && dateValue && value && isNeedCorrect(dateValue, value)) { const duration = previousValue ? dateValue.getTime() - previousValue.getTime() : 0; dateEditor.option("value", new Date(value.getTime() + duration)) } } _createTimezoneEditor(timeZoneExpr, secondTimeZoneExpr, visibleIndex, colSpan, isMainTimeZone, cssClass) { let visible = arguments.length > 6 && void 0 !== arguments[6] ? arguments[6] : false; const noTzTitle = _message.default.format("dxScheduler-noTimezoneTitle"); return { name: this.normalizeEditorName(timeZoneExpr), dataField: timeZoneExpr, editorType: "dxSelectBox", visibleIndex: visibleIndex, colSpan: colSpan, cssClass: cssClass, label: { text: " " }, editorOptions: { displayExpr: "title", valueExpr: "id", placeholder: noTzTitle, searchEnabled: true, dataSource: new _data_source.default({ store: _m_utils_time_zone.default.getTimeZonesCache(), paginate: true, pageSize: 10 }), onValueChanged: args => { const { form: form } = this; const secondTimezoneEditor = form.getEditor(secondTimeZoneExpr); if (isMainTimeZone) { secondTimezoneEditor.option("value", args.value) } } }, visible: visible } } _createDateBoxItems(dataExprs, allowTimeZoneEditing) { const colSpan = allowTimeZoneEditing ? 2 : 1; const firstDayOfWeek = this.scheduler.getFirstDayOfWeek(); return [this.createDateBoxEditor(dataExprs.startDateExpr, colSpan, firstDayOfWeek, "dxScheduler-editorLabelStartDate", E2E_TEST_CLASSES_startDateEditor, (args => { this._dateBoxValueChanged(args, dataExprs.endDateExpr, ((endValue, startValue) => endValue < startValue)) })), this._createTimezoneEditor(dataExprs.startDateTimeZoneExpr, dataExprs.endDateTimeZoneExpr, 1, colSpan, true, E2E_TEST_CLASSES_startDateTimeZoneEditor, allowTimeZoneEditing), this.createDateBoxEditor(dataExprs.endDateExpr, colSpan, firstDayOfWeek, "dxScheduler-editorLabelEndDate", E2E_TEST_CLASSES_endDateEditor, (args => { this._dateBoxValueChanged(args, dataExprs.startDateExpr, ((startValue, endValue) => endValue < startValue)) })), this._createTimezoneEditor(dataExprs.endDateTimeZoneExpr, dataExprs.startDateTimeZoneExpr, 3, colSpan, false, E2E_TEST_CLASSES_endDateTimeZoneEditor, allowTimeZoneEditing)] } _changeFormItemDateType(name, groupName, isAllDay) { const editorPath = this.getEditorPath(name, groupName); const itemEditorOptions = this.form.itemOption(editorPath).editorOptions; const type = isAllDay ? "date" : "datetime"; const newEditorOption = _extends({}, itemEditorOptions, { type: type }); this.form.itemOption(editorPath, "editorOptions", newEditorOption) } _createMainItems(dataExprs, triggerResize, changeSize, allowTimeZoneEditing) { return [{ name: this.normalizeEditorName(dataExprs.textExpr), dataField: dataExprs.textExpr, cssClass: E2E_TEST_CLASSES_textEditor, editorType: "dxTextBox", colSpan: 2, label: { text: _message.default.format("dxScheduler-editorLabelTitle") }, editorOptions: { stylingMode: getStylingModeFunc() } }, { itemType: "group", colSpan: 2, colCountByScreen: { lg: 2, xs: 1 }, items: this._createDateBoxItems(dataExprs, allowTimeZoneEditing) }, { itemType: "group", colSpan: 2, colCountByScreen: { lg: 2, xs: 2 }, items: [{ name: this.normalizeEditorName(dataExprs.allDayExpr), dataField: dataExprs.allDayExpr, cssClass: `dx-appointment-form-switch ${E2E_TEST_CLASSES_allDaySwitch}`, editorType: "dxSwitch", label: { text: _message.default.format("dxScheduler-allDay"), location: "right" }, editorOptions: { onValueChanged: args => { const { value: value } = args; const startDateEditor = this.form.getEditor(dataExprs.startDateExpr); const endDateEditor = this.form.getEditor(dataExprs.endDateExpr); const startDate = _date_serialization.default.deserializeDate(startDateEditor.option("value")); if (!this.isFormUpdating && startDate) { if (value) { const allDayStartDate = _date.default.trimTime(startDate); startDateEditor.option("value", new Date(allDayStartDate)); endDateEditor.option("value", new Date(allDayStartDate)) } else { const startDateWithStartHour = ((startDate, startDayHour) => new Date(new Date(startDate).setHours(startDayHour)))(startDate, this.scheduler.getStartDayHour()); const endDate = this.scheduler.getCalculatedEndDate(startDateWithStartHour); startDateEditor.option("value", startDateWithStartHour); endDateEditor.option("value", endDate) } } this._changeFormItemDateType(dataExprs.startDateExpr, "Main", value); this._changeFormItemDateType(dataExprs.endDateExpr, "Main", value) } } }, { editorType: "dxSwitch", dataField: "repeat", cssClass: `dx-appointment-form-switch ${E2E_TEST_CLASSES_recurrenceSwitch}`, name: "visibilityChanged", label: { text: _message.default.format("dxScheduler-editorLabelRecurrence"), location: "right" }, editorOptions: { onValueChanged: args => { const { form: form } = this; const colSpan = args.value ? 1 : 2; form.itemOption(APPOINTMENT_FORM_GROUP_NAMES.Main, "colSpan", colSpan); form.itemOption(APPOINTMENT_FORM_GROUP_NAMES.Recurrence, "colSpan", colSpan); ((recurrenceRuleExpr, value, form) => { var _form$getEditor; form.itemOption(APPOINTMENT_FORM_GROUP_NAMES.Recurrence, "visible", value); null === (_form$getEditor = form.getEditor(recurrenceRuleExpr)) || void 0 === _form$getEditor || _form$getEditor.changeValueByVisibility(value) })(dataExprs.recurrenceRuleExpr, args.value, form); changeSize(args.value); triggerResize() } } }] }, { itemType: "empty", colSpan: 2 }, { name: this.normalizeEditorName(dataExprs.descriptionExpr), dataField: dataExprs.descriptionExpr, cssClass: E2E_TEST_CLASSES_descriptionEditor, editorType: "dxTextArea", colSpan: 2, label: { text: _message.default.format("dxScheduler-editorLabelDescription") }, editorOptions: { stylingMode: getStylingModeFunc() } }, { itemType: "empty", colSpan: 2 }] } _createRecurrenceEditor(dataExprs) { return [{ name: this.normalizeEditorName(dataExprs.recurrenceRuleExpr), dataField: dataExprs.recurrenceRuleExpr, editorType: "dxRecurrenceEditor", editorOptions: { firstDayOfWeek: this.scheduler.getFirstDayOfWeek(), timeZoneCalculator: this.scheduler.getTimeZoneCalculator(), getStartDateTimeZone: () => this.scheduler.getDataAccessors().get("startDateTimeZone", this.formData) }, label: { text: " ", visible: false } }] } setEditorsType(allDay) { const { startDateExpr: startDateExpr, endDateExpr: endDateExpr } = this.scheduler.getDataAccessors().expr; const startDateItemPath = this.getEditorPath(startDateExpr, "Main"); const endDateItemPath = this.getEditorPath(endDateExpr, "Main"); const startDateFormItem = this.form.itemOption(startDateItemPath); const endDateFormItem = this.form.itemOption(endDateItemPath); if (startDateFormItem && endDateFormItem) { const startDateEditorOptions = startDateFormItem.editorOptions; const endDateEditorOptions = endDateFormItem.editorOptions; startDateEditorOptions.type = endDateEditorOptions.type = allDay ? "date" : "datetime"; this.form.itemOption(startDateItemPath, "editorOptions", startDateEditorOptions); this.form.itemOption(endDateItemPath, "editorOptions", endDateEditorOptions) } } updateRecurrenceEditorStartDate(date, expression) { const options = { startDate: date }; this.setEditorOptions(expression, "Recurrence", options) } setEditorOptions(name, groupName, options) { const editorPath = this.getEditorPath(name, groupName); const editor = this.form.itemOption(editorPath); editor && this.form.itemOption(editorPath, "editorOptions", (0, _extend.extend)({}, editor.editorOptions, options)) } updateFormData(formData) { this.isFormUpdating = true; this.form.option("formData", formData); const dataAccessors = this.scheduler.getDataAccessors(); const { expr: expr } = dataAccessors; const rawStartDate = dataAccessors.get("startDate", formData); const allDay = dataAccessors.get("allDay", formData); const startDate = new Date(rawStartDate); this.updateRecurrenceEditorStartDate(startDate, expr.recurrenceRuleExpr); this.setEditorsType(allDay); this.isFormUpdating = false } createDateBoxEditor(dataField, colSpan, firstDayOfWeek, label, cssClass, onValueChanged) { return { editorType: "dxDateBox", name: this.normalizeEditorName(dataField), dataField: dataField, colSpan: colSpan, cssClass: cssClass, label: { text: _message.default.format(label) }, validationRules: [{ type: "required" }], editorOptions: { stylingMode: getStylingModeFunc(), width: "100%", calendarOptions: { firstDayOfWeek: firstDayOfWeek }, onValueChanged: onValueChanged, useMaskBehavior: true } } } getEditorPath(name, groupName) { const normalizedName = this.normalizeEditorName(name); return `${APPOINTMENT_FORM_GROUP_NAMES[groupName]}.${normalizedName}` } normalizeEditorName(name) { return name ? name.replace(/\./g, "_") : name } } }, 27483: /*!***********************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/scheduler/appointment_popup/m_popup.js ***! \***********************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.AppointmentPopup = exports.ACTION_TO_APPOINTMENT = void 0; var _visibility_change = __webpack_require__( /*! ../../../common/core/events/visibility_change */ 18029); var _message = _interopRequireDefault(__webpack_require__( /*! ../../../common/core/localization/message */ 4671)); var _devices = _interopRequireDefault(__webpack_require__( /*! ../../../core/devices */ 65951)); var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../../core/renderer */ 64553)); var _date = _interopRequireDefault(__webpack_require__( /*! ../../../core/utils/date */ 41380)); var _deferred = __webpack_require__( /*! ../../../core/utils/deferred */ 87739); var _ui = _interopRequireDefault(__webpack_require__( /*! ../../../ui/popup/ui.popup */ 10720)); var _index = __webpack_require__( /*! ../../scheduler/r1/appointment_popup/index */ 8181); var _m_loading = __webpack_require__( /*! ../m_loading */ 73922); var _appointment_adapter = __webpack_require__( /*! ../utils/appointment_adapter/appointment_adapter */ 36791); var _appointment_groups_utils = __webpack_require__( /*! ../utils/resource_manager/appointment_groups_utils */ 11649); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } function _extends() { return _extends = Object.assign ? Object.assign.bind() : function(n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) { ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]) } } return n }, _extends.apply(null, arguments) } const toMs = _date.default.dateToMilliseconds; const DAY_IN_MS = toMs("day"); const POPUP_CONFIG = { height: "auto", maxHeight: "100%", showCloseButton: false, showTitle: false, preventScrollEvents: false, enableBodyScroll: false, defaultOptionsRules: [{ device: () => _devices.default.current().android, options: { showTitle: false } }], _ignorePreventScrollEventsDeprecation: true }; const ACTION_TO_APPOINTMENT = exports.ACTION_TO_APPOINTMENT = { CREATE: 0, UPDATE: 1, EXCLUDE_FROM_SERIES: 2 }; exports.AppointmentPopup = class { constructor(scheduler, form) { this.scheduler = scheduler; this.form = form; this.popup = null; this.state = { action: null, lastEditData: null, saveChangesLocker: false, appointment: { data: null } } } get visible() { return this.popup ? this.popup.option("visible") : false } show(appointment, config) { this.state.appointment.data = appointment; this.state.action = config.action; this.state.excludeInfo = config.excludeInfo; if (!this.popup) { const popupConfig = this._createPopupConfig(); this.popup = this._createPopup(popupConfig) } this.popup.option("toolbarItems", (0, _index.getPopupToolbarItems)(config.isToolbarVisible, (e => this._doneButtonClickHandler(e)))); this.popup.show() } hide() { this.popup.hide() } dispose() { var _this$popup; null === (_this$popup = this.popup) || void 0 === _this$popup || _this$popup.$element().remove() } _createPopup(options) { const popupElement = (0, _renderer.default)("
").addClass("dx-scheduler-appointment-popup").appendTo(this.scheduler.getElement()); return this.scheduler.createComponent(popupElement, _ui.default, options) } _createPopupConfig() { return _extends({}, POPUP_CONFIG, { onHiding: () => this.scheduler.focus(), contentTemplate: () => this._createPopupContent(), onShowing: e => this._onShowing(e), wrapperAttr: { class: "dx-scheduler-appointment-popup" } }) } _onShowing(e) { this._updateForm(); e.component.$overlayContent().attr("aria-label", _message.default.format("dxScheduler-ariaEditForm")); const arg = { form: this.form.dxForm, popup: this.popup, appointmentData: this.state.appointment.data, cancel: false }; this.scheduler.getAppointmentFormOpening()(arg); this.scheduler.processActionResult(arg, (canceled => { if (canceled) { e.cancel = true } else { this.updatePopupFullScreenMode() } })) } _createPopupContent() { this._createForm(); return this.form.dxForm.$element() } _createFormData(rawAppointment) { const appointment = this._createAppointmentAdapter(rawAppointment); const resourceManager = this.scheduler.getResourceManager(); const rawAppointmentGroupValues = (0, _appointment_groups_utils.getRawAppointmentGroupValues)(rawAppointment, resourceManager.resources); return _extends({}, rawAppointment, rawAppointmentGroupValues, { repeat: !!appointment.recurrenceRule }) } _createForm() { const rawAppointment = this.state.appointment.data; const formData = this._createFormData(rawAppointment); this.form.create(this.triggerResize.bind(this), this.changeSize.bind(this), formData) } _isReadOnly(rawAppointment) { const appointment = this._createAppointmentAdapter(rawAppointment); if (rawAppointment && appointment.disabled) { return true } if (this.state.action === ACTION_TO_APPOINTMENT.CREATE) { return false } return !this.scheduler.getEditingConfig().allowUpdating } _createAppointmentAdapter(rawAppointment) { return new _appointment_adapter.AppointmentAdapter(rawAppointment, this.scheduler.getDataAccessors()) } _updateForm() { const { data: data } = this.state.appointment; const appointment = this._createFormData(data); const formData = this._createAppointmentAdapter(appointment).clone().calculateDates(this.scheduler.getTimeZoneCalculator(), "toAppointment").source; this.form.readOnly = this._isReadOnly(formData); this.form.updateFormData(formData) } triggerResize() { if (this.popup) { (0, _visibility_change.triggerResizeEvent)(this.popup.$element()) } } changeSize(isRecurrence) { if (this.popup) { const isFullScreen = (0, _index.isPopupFullScreenNeeded)(); const maxWidth = isFullScreen ? "100%" : (0, _index.getMaxWidth)(isRecurrence); this.popup.option("fullScreen", isFullScreen); this.popup.option("maxWidth", maxWidth) } } updatePopupFullScreenMode() { if (this.form.dxForm && this.visible) { const { formData: formData } = this.form; const dataAccessors = this.scheduler.getDataAccessors(); const isRecurrence = dataAccessors.get("recurrenceRule", formData); this.changeSize(isRecurrence) } } saveChangesAsync(isShowLoadPanel) { const deferred = new _deferred.Deferred; const validation = this.form.dxForm.validate(); isShowLoadPanel && this._showLoadPanel(); (0, _deferred.when)((null === validation || void 0 === validation ? void 0 : validation.complete) || validation).done((validation => { if (validation && !validation.isValid) { (0, _m_loading.hide)(); deferred.resolve(false); return } const { repeat: repeat } = this.form.formData; const adapter = this._createAppointmentAdapter(this.form.formData); const clonedAdapter = adapter.clone().calculateDates(this.scheduler.getTimeZoneCalculator(), "fromAppointment"); const shouldClearRecurrenceRule = !repeat && !!clonedAdapter.recurrenceRule; this._addMissingDSTTime(adapter, clonedAdapter); if (shouldClearRecurrenceRule) { clonedAdapter.recurrenceRule = "" } const appointment = clonedAdapter.source; delete appointment.repeat; switch (this.state.action) { case ACTION_TO_APPOINTMENT.CREATE: this.scheduler.addAppointment(appointment).done(deferred.resolve); break; case ACTION_TO_APPOINTMENT.UPDATE: this.scheduler.updateAppointment(this.state.appointment.data, appointment).done(deferred.resolve); break; case ACTION_TO_APPOINTMENT.EXCLUDE_FROM_SERIES: this.scheduler.updateAppointment(this.state.excludeInfo.sourceAppointment, this.state.excludeInfo.updatedAppointment); this.scheduler.addAppointment(appointment).done(deferred.resolve) } deferred.done((() => { (0, _m_loading.hide)(); this.state.lastEditData = appointment })) })); return deferred.promise() } _doneButtonClickHandler(e) { e.cancel = true; this.saveEditDataAsync() } saveEditDataAsync() { const deferred = new _deferred.Deferred; if (this._tryLockSaveChanges()) { (0, _deferred.when)(this.saveChangesAsync(true)).done((() => { if (this.state.lastEditData) { const adapter = this._createAppointmentAdapter(this.state.lastEditData); const { startDate: startDate, endDate: endDate, allDay: allDay } = adapter; const startTime = startDate.getTime(); const endTime = endDate.getTime(); const inAllDayRow = allDay || endTime - startTime >= DAY_IN_MS; const resourceManager = this.scheduler.getResourceManager(); const appointmentGroupValues = (0, _appointment_groups_utils.getAppointmentGroupValues)(this.state.lastEditData, resourceManager.resources); this.scheduler.updateScrollPosition(startDate, appointmentGroupValues, inAllDayRow); this.state.lastEditData = null } this._unlockSaveChanges(); deferred.resolve() })) } return deferred.promise() } _showLoadPanel() { const container = this.popup.$overlayContent(); (0, _m_loading.show)({ container: container, position: { of: container } }) } _tryLockSaveChanges() { if (false === this.state.saveChangesLocker) { this.state.saveChangesLocker = true; return true } return false } _unlockSaveChanges() { this.state.saveChangesLocker = false } _addMissingDSTTime(formAppointmentAdapter, clonedAppointmentAdapter) { const timeZoneCalculator = this.scheduler.getTimeZoneCalculator(); clonedAppointmentAdapter.startDate = this._addMissingDSTShiftToDate(timeZoneCalculator, formAppointmentAdapter.startDate, clonedAppointmentAdapter.startDate); if (clonedAppointmentAdapter.endDate) { clonedAppointmentAdapter.endDate = this._addMissingDSTShiftToDate(timeZoneCalculator, formAppointmentAdapter.endDate, clonedAppointmentAdapter.endDate) } } _addMissingDSTShiftToDate(timeZoneCalculator, originFormDate, clonedDate) { var _timeZoneCalculator$g, _timeZoneCalculator$g2; const originTimezoneShift = null === (_timeZoneCalculator$g = timeZoneCalculator.getOffsets(originFormDate)) || void 0 === _timeZoneCalculator$g ? void 0 : _timeZoneCalculator$g.common; const clonedTimezoneShift = null === (_timeZoneCalculator$g2 = timeZoneCalculator.getOffsets(clonedDate)) || void 0 === _timeZoneCalculator$g2 ? void 0 : _timeZoneCalculator$g2.common; const shiftDifference = originTimezoneShift - clonedTimezoneShift; return shiftDifference ? new Date(clonedDate.getTime() + shiftDifference * toMs("hour")) : clonedDate } } }, 12901: /*!*****************************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/scheduler/appointments/appointment/agenda_appointment.js ***! \*****************************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.AgendaAppointment = void 0; var _renderer = (e = __webpack_require__( /*! ../../../../core/renderer */ 64553), e && e.__esModule ? e : { default: e }); var e; var _m_classes = __webpack_require__( /*! ../../m_classes */ 80126); var _m_appointment = __webpack_require__( /*! ./m_appointment */ 198); class AgendaAppointment extends _m_appointment.Appointment { get coloredElement() { return this.$element().find(`.${_m_classes.APPOINTMENT_CONTENT_CLASSES.AGENDA_MARKER}`) } _renderResourceList() { const resourceManager = this.option("getResourceManager")(); void resourceManager.getAppointmentResourcesValues(this.rawAppointment).then((list => { const parent = this.$element().find(`.${_m_classes.APPOINTMENT_CONTENT_CLASSES.APPOINTMENT_CONTENT_DETAILS}`); const container = (0, _renderer.default)("
").addClass(_m_classes.APPOINTMENT_CONTENT_CLASSES.AGENDA_RESOURCE_LIST).appendTo(parent); list.forEach((item => { const itemContainer = (0, _renderer.default)("
").addClass(_m_classes.APPOINTMENT_CONTENT_CLASSES.AGENDA_RESOURCE_LIST_ITEM).appendTo(container); (0, _renderer.default)("
").text(`${item.label}:`).appendTo(itemContainer); (0, _renderer.default)("
").addClass(_m_classes.APPOINTMENT_CONTENT_CLASSES.AGENDA_RESOURCE_LIST_ITEM_VALUE).text(item.values.join(", ")).appendTo(itemContainer) })) })) } _render() { super._render(); this._renderResourceList() } } exports.AgendaAppointment = AgendaAppointment }, 198: /*!************************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/scheduler/appointments/appointment/m_appointment.js ***! \************************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.Appointment = void 0; var _translator = __webpack_require__( /*! ../../../../common/core/animation/translator */ 88603); var _events_engine = _interopRequireDefault(__webpack_require__( /*! ../../../../common/core/events/core/events_engine */ 92774)); var _pointer = _interopRequireDefault(__webpack_require__( /*! ../../../../common/core/events/pointer */ 89797)); var _index = __webpack_require__( /*! ../../../../common/core/events/utils/index */ 98834); var _component_registrator = _interopRequireDefault(__webpack_require__( /*! ../../../../core/component_registrator */ 92848)); var _dom_component = _interopRequireDefault(__webpack_require__( /*! ../../../../core/dom_component */ 97832)); var _guid = _interopRequireDefault(__webpack_require__( /*! ../../../../core/guid */ 19427)); var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../../../core/renderer */ 64553)); var _extend = __webpack_require__( /*! ../../../../core/utils/extend */ 52576); var _resizable = _interopRequireDefault(__webpack_require__( /*! ../../../../ui/resizable */ 28416)); var _m_tooltip = __webpack_require__( /*! ../../../ui/tooltip/m_tooltip */ 33476); var _m_classes = __webpack_require__( /*! ../../m_classes */ 80126); var _m_recurrence = __webpack_require__( /*! ../../m_recurrence */ 55122); var _text_utils = __webpack_require__( /*! ./text_utils */ 46942); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } const REDUCED_APPOINTMENT_POINTERENTER_EVENT_NAME = (0, _index.addNamespace)(_pointer.default.enter, "dxSchedulerAppointment"); const REDUCED_APPOINTMENT_POINTERLEAVE_EVENT_NAME = (0, _index.addNamespace)(_pointer.default.leave, "dxSchedulerAppointment"); class Appointment extends _dom_component.default { get coloredElement() { return this.$element() } get rawAppointment() { return this.option("data") } get dataAccessors() { return this.option("dataAccessors") } _getDefaultOptions() { return (0, _extend.extend)(super._getDefaultOptions(), { data: {}, groupIndex: -1, groups: [], geometry: { top: 0, left: 0, width: 0, height: 0 }, allowDrag: true, allowResize: true, reduced: null, isCompact: false, direction: "vertical", resizableConfig: { keepAspectRatio: false }, cellHeight: 0, cellWidth: 0, isDragSource: false }) } notifyObserver(subject, args) { const observer = this.option("observer"); if (observer) { observer.fire(subject, args) } } invoke(funcName) { const observer = this.option("observer"); if (observer) { return observer.fire.apply(observer, arguments) } } _optionChanged(args) { switch (args.name) { case "data": case "groupIndex": case "groupTexts": case "geometry": case "allowDrag": case "allowResize": case "reduced": case "sortedIndex": case "isCompact": case "direction": case "resizableConfig": case "cellHeight": case "cellWidth": this._invalidate(); break; case "isDragSource": this._renderDragSourceClass(); break; default: super._optionChanged(args) } } _getHorizontalResizingRule() { const reducedHandles = { head: this.option("rtlEnabled") ? "right" : "left", body: "", tail: this.option("rtlEnabled") ? "left" : "right" }; const getResizableStep = this.option("getResizableStep"); const step = getResizableStep ? getResizableStep() : 0; return { handles: this.option("reduced") ? reducedHandles[this.option("reduced")] : "left right", minHeight: 0, minWidth: this.invoke("getCellWidth"), step: step, roundStepValue: false } } _getVerticalResizingRule() { const height = Math.round(this.invoke("getCellHeight")); return { handles: "top bottom", minWidth: 0, minHeight: height, step: height, roundStepValue: true } } _render() { super._render(); this._renderAppointmentGeometry(); this._renderAriaLabel(); this._renderEmptyClass(); this._renderReducedAppointment(); this._renderAllDayClass(); this._renderDragSourceClass(); this._renderDirection(); this.$element().data("dxAppointmentStartDate", this.option("startDate")); this.$element().attr("role", "button"); this._renderRecurrenceClass(); this._renderResizable(); this._setResourceColor() } _setResourceColor() { const appointmentConfig = { itemData: this.rawAppointment, groupIndex: this.option("groupIndex") ?? 0 }; const resourceManager = this.option("getResourceManager")(); resourceManager.getAppointmentColor(appointmentConfig).then((color => { if (color) { this.coloredElement.css("backgroundColor", color); this.coloredElement.addClass(_m_classes.APPOINTMENT_HAS_RESOURCE_COLOR_CLASS) } })) } _renderAriaLabel() { const $element = this.$element(); $element.attr("aria-label", (0, _text_utils.getAriaLabel)(this.option())); void(0, _text_utils.getAriaDescription)(this.option()).then((text => { if (text) { const id = `dx-${new _guid.default}`; const $description = $element.find(`.${_m_classes.APPOINTMENT_CONTENT_CLASSES.ARIA_DESCRIPTION}`); if ($description) { $element.attr("aria-describedby", id); $description.text(text).attr("id", id) } } })) } _renderAppointmentGeometry() { const geometry = this.option("geometry"); const $element = this.$element(); (0, _translator.move)($element, { top: geometry.top, left: geometry.left }); $element.css({ width: geometry.width < 0 ? 0 : geometry.width, height: geometry.height < 0 ? 0 : geometry.height }) } _renderEmptyClass() { const geometry = this.option("geometry"); if (geometry.empty || this.option("isCompact")) { this.$element().addClass(_m_classes.EMPTY_APPOINTMENT_CLASS) } } _renderReducedAppointment() { const reducedPart = this.option("reduced"); if (!reducedPart) { return } this.$element().toggleClass(_m_classes.REDUCED_APPOINTMENT_CLASS, true).toggleClass(_m_classes.REDUCED_APPOINTMENT_PARTS_CLASSES[reducedPart], true); this._renderAppointmentReducedIcon() } _renderAppointmentReducedIcon() { const $icon = (0, _renderer.default)("
").addClass(_m_classes.REDUCED_APPOINTMENT_ICON).appendTo(this.$element()); _events_engine.default.off($icon, REDUCED_APPOINTMENT_POINTERENTER_EVENT_NAME); _events_engine.default.on($icon, REDUCED_APPOINTMENT_POINTERENTER_EVENT_NAME, (() => { (0, _m_tooltip.show)({ target: $icon, content: (0, _text_utils.getReducedIconTooltip)(this.option()) }) })); _events_engine.default.off($icon, REDUCED_APPOINTMENT_POINTERLEAVE_EVENT_NAME); _events_engine.default.on($icon, REDUCED_APPOINTMENT_POINTERLEAVE_EVENT_NAME, (() => { (0, _m_tooltip.hide)() })) } _renderAllDayClass() { this.$element().toggleClass(_m_classes.ALL_DAY_APPOINTMENT_CLASS, !!this.option("allDay")) } _renderDragSourceClass() { this.$element().toggleClass(_m_classes.APPOINTMENT_DRAG_SOURCE_CLASS, !!this.option("isDragSource")) } _renderRecurrenceClass() { const rule = this.dataAccessors.get("recurrenceRule", this.rawAppointment); if ((0, _m_recurrence.getRecurrenceProcessor)().isValidRecurrenceRule(rule)) { this.$element().addClass(_m_classes.RECURRENCE_APPOINTMENT_CLASS) } } _renderDirection() { this.$element().addClass(_m_classes.DIRECTION_APPOINTMENT_CLASSES[this.option("direction")]) } _createResizingConfig() { const config = "vertical" === this.option("direction") ? this._getVerticalResizingRule() : this._getHorizontalResizingRule(); if (!this.invoke("isGroupedByDate")) { config.stepPrecision = "strict" } return config } _renderResizable() { if (this.option("allowResize")) { this._createComponent(this.$element(), _resizable.default, (0, _extend.extend)(this._createResizingConfig(), this.option("resizableConfig"))) } } _useTemplates() { return false } } exports.Appointment = Appointment; (0, _component_registrator.default)("dxSchedulerAppointment", Appointment) }, 46942: /*!*********************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/scheduler/appointments/appointment/text_utils.js ***! \*********************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.getReducedIconTooltip = exports.getAriaLabel = exports.getAriaDescription = void 0; var _date = _interopRequireDefault(__webpack_require__( /*! ../../../../common/core/localization/date */ 38662)); var _message = _interopRequireDefault(__webpack_require__( /*! ../../../../common/core/localization/message */ 4671)); var _type = __webpack_require__( /*! ../../../../core/utils/type */ 11528); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } const localizeDate = date => `${_date.default.format(date,"monthAndDay")}, ${_date.default.format(date,"year")}`; const localizeTime = date => `${_date.default.format(date,"shorttime")}`; const getDate = (options, propName) => { var _options$timeZoneCalc; const result = options.dataAccessors.get(propName, options.data); if (!result) { return result } const date = new Date(result); const gridDate = null === (_options$timeZoneCalc = options.timeZoneCalculator) || void 0 === _options$timeZoneCalc ? void 0 : _options$timeZoneCalc.createDate(date, "toGrid"); return gridDate ?? date }; exports.getAriaLabel = options => { const name = options.dataAccessors.get("text", options.data) ?? ""; const dates = (options => { const startDate = getDate(options, "startDate"); const endDate = getDate(options, "endDate"); const startDateText = localizeDate(startDate); const endDateText = localizeDate(endDate); const startTimeText = localizeTime(startDate); const endTimeText = localizeTime(endDate); const isAllDay = options.dataAccessors.get("allDay", options.data); const allDayText = _message.default.format("dxScheduler-allDay"); if (startDateText === endDateText) { return isAllDay ? `${startDateText}, ${allDayText}` : `${startDateText}, ${startTimeText} - ${endTimeText}` } return isAllDay ? `${startDateText} - ${endDateText}, ${allDayText}` : `${startDateText}, ${startTimeText} - ${endDateText}, ${endTimeText}` })(options); const parts = (_ref => { let { partIndex: partIndex, partTotalCount: partTotalCount } = _ref; return (0, _type.isDefined)(partIndex) ? ` (${partIndex+1}/${partTotalCount})` : "" })(options); return `${name}: ${dates}${parts}` }; exports.getReducedIconTooltip = options => { const tooltipLabel = _message.default.format("dxScheduler-editorLabelEndDate"); const endDateText = localizeDate(getDate(options, "endDate")); return `${tooltipLabel}: ${endDateText}` }; const getGroupText = options => { if (!options.groupTexts.length) { return "" } const groupText = options.groupTexts.join(", "); return _message.default.format("dxScheduler-appointmentAriaLabel-group", groupText) }; exports.getAriaDescription = async options => { const resources = await (async options => { const resourceManager = options.getResourceManager(); const list = await resourceManager.getAppointmentResourcesValues(options.data); return list.map((item => `${item.label}: ${item.values.join(", ")}`)) })(options); const texts = [getGroupText(options), ...resources].filter(Boolean); return texts.join("; ") } }, 64836: /*!****************************************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/scheduler/appointments/data_provider/m_appointment_data_provider.js ***! \****************************************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.AppointmentDataProvider = void 0; var _config = (e = __webpack_require__( /*! ../../../../core/config */ 66636), e && e.__esModule ? e : { default: e }); var e; var _index = __webpack_require__( /*! ../../r1/filterting/index */ 78133); var _m_appointment_data_source = __webpack_require__( /*! ./m_appointment_data_source */ 12524); var _m_appointment_filter = __webpack_require__( /*! ./m_appointment_filter */ 42648); var _m_appointment_filter_virtual = __webpack_require__( /*! ./m_appointment_filter_virtual */ 55964); const FilterStrategyMap = { [_m_appointment_filter_virtual.AppointmentFilterVirtualStrategy.strategyName]: _m_appointment_filter_virtual.AppointmentFilterVirtualStrategy, [_m_appointment_filter.AppointmentFilterBaseStrategy.strategyName]: _m_appointment_filter.AppointmentFilterBaseStrategy }; exports.AppointmentDataProvider = class { constructor(options) { this.options = options; this.dataSource = this.options.dataSource; this.dataAccessors = this.options.dataAccessors; this.timeZoneCalculator = this.options.timeZoneCalculator; this.appointmentDataSource = new _m_appointment_data_source.AppointmentDataSource(this.dataSource); this.initFilterStrategy() } get keyName() { return this.appointmentDataSource.keyName } get isDataSourceInit() { return !!this.dataSource } get filterStrategyName() { return this.options.getIsVirtualScrolling() ? _m_appointment_filter_virtual.AppointmentFilterVirtualStrategy.strategyName : _m_appointment_filter.AppointmentFilterBaseStrategy.strategyName } getFilterStrategy() { if (!this.filterStrategy || this.filterStrategy.constructor.strategyName !== this.filterStrategyName) { this.initFilterStrategy() } return this.filterStrategy } initFilterStrategy() { const filterOptions = { resources: this.options.resources, getResourceManager: this.options.getResourceManager, dataAccessors: this.dataAccessors, startDayHour: this.options.startDayHour, endDayHour: this.options.endDayHour, viewOffset: this.options.viewOffset, showAllDayPanel: this.options.showAllDayPanel, timeZoneCalculator: this.options.timeZoneCalculator, loadedResources: this.options.getLoadedResources(), supportAllDayRow: this.options.getSupportAllDayRow, viewType: this.options.getViewType, viewDirection: this.options.getViewDirection, dateRange: this.options.getDateRange, groupCount: this.options.getGroupCount, viewDataProvider: this.options.getViewDataProvider, allDayPanelMode: this.options.allDayPanelMode }; const strategy = new FilterStrategyMap[this.filterStrategyName](filterOptions); this.filterStrategy = strategy } setDataSource(dataSource) { this.dataSource = dataSource; this.initFilterStrategy(); this.appointmentDataSource.setDataSource(this.dataSource) } updateDataAccessors(dataAccessors) { this.dataAccessors = dataAccessors; this.initFilterStrategy() } filter(preparedItems) { return this.getFilterStrategy().filter(preparedItems) } filterByDate(min, max, remoteFiltering, dateSerializationFormat) { if (!this.dataSource || !remoteFiltering) { return } const dataSourceFilter = this.dataSource.filter(); const filter = (0, _index.combineRemoteFilter)({ dataSourceFilter: dataSourceFilter, dataAccessors: this.dataAccessors, min: min, max: max, dateSerializationFormat: dateSerializationFormat, forceIsoDateParsing: (0, _config.default)().forceIsoDateParsing }); this.dataSource.filter(filter) } hasAllDayAppointments(filteredItems, preparedItems) { return this.getFilterStrategy().hasAllDayAppointments(filteredItems, preparedItems) } filterLoadedAppointments(filterOption, preparedItems) { return this.getFilterStrategy().filterLoadedAppointments(filterOption, preparedItems) } cleanState() { this.appointmentDataSource.cleanState() } getUpdatedAppointment() { return this.appointmentDataSource._updatedAppointment } getUpdatedAppointmentKeys() { return this.appointmentDataSource._updatedAppointmentKeys } add(rawAppointment) { return this.appointmentDataSource.add(rawAppointment) } update(target, rawAppointment) { return this.appointmentDataSource.update(target, rawAppointment) } remove(rawAppointment) { return this.appointmentDataSource.remove(rawAppointment) } destroy() { this.appointmentDataSource.destroy() } } }, 12524: /*!**************************************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/scheduler/appointments/data_provider/m_appointment_data_source.js ***! \**************************************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.AppointmentDataSource = void 0; var _deferred = __webpack_require__( /*! ../../../../core/utils/deferred */ 87739); const STORE_EVENTS_updating = "updating", STORE_EVENTS_push = "push"; exports.AppointmentDataSource = class { constructor(dataSource) { this.setDataSource(dataSource); this._updatedAppointmentKeys = [] } get keyName() { const store = this._dataSource.store(); return store.key() } get isDataSourceInit() { return !!this._dataSource } _getStoreKey(target) { const store = this._dataSource.store(); return store.keyOf(target) } setDataSource(dataSource) { this._dataSource = dataSource; this.cleanState(); this._initStoreChangeHandlers() } _initStoreChangeHandlers() { const dataSource = this._dataSource; const store = null === dataSource || void 0 === dataSource ? void 0 : dataSource.store(); if (store) { store.on(STORE_EVENTS_updating, (key => { const keyName = store.key(); if (keyName) { this._updatedAppointmentKeys.push({ key: keyName, value: key }) } else { this._updatedAppointment = key } })); store.on(STORE_EVENTS_push, (pushItems => { const items = dataSource.items(); const keyName = store.key(); pushItems.forEach((pushItem => { const itemExists = 0 !== items.filter((item => item[keyName] === pushItem.key)).length; if (itemExists) { this._updatedAppointmentKeys.push({ key: keyName, value: pushItem.key }) } else { const { data: data } = pushItem; data && items.push(data) } })); dataSource.load() })) } } getUpdatedAppointment() { return this._updatedAppointment } getUpdatedAppointmentKeys() { return this._updatedAppointmentKeys } cleanState() { this._updatedAppointment = null; this._updatedAppointmentKeys = [] } add(rawAppointment) { return this._dataSource.store().insert(rawAppointment).done((() => this._dataSource.load())) } update(target, data) { const key = this._getStoreKey(target); const d = new _deferred.Deferred; this._dataSource.store().update(key, data).done((result => this._dataSource.load().done((() => d.resolve(result))).fail(d.reject))).fail(d.reject); return d.promise() } remove(rawAppointment) { const key = this._getStoreKey(rawAppointment); return this._dataSource.store().remove(key).done((() => this._dataSource.load())) } destroy() { var _this$_dataSource; const store = null === (_this$_dataSource = this._dataSource) || void 0 === _this$_dataSource ? void 0 : _this$_dataSource.store(); if (store) { store.off(STORE_EVENTS_updating); store.off(STORE_EVENTS_push) } } } }, 42648: /*!*********************************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/scheduler/appointments/data_provider/m_appointment_filter.js ***! \*********************************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.AppointmentFilterBaseStrategy = void 0; var _query = _interopRequireDefault(__webpack_require__( /*! ../../../../common/data/query */ 30771)); var _common = __webpack_require__( /*! ../../../../core/utils/common */ 17781); var _date = _interopRequireDefault(__webpack_require__( /*! ../../../../core/utils/date */ 41380)); var _type = __webpack_require__( /*! ../../../../core/utils/type */ 11528); var _date2 = __webpack_require__( /*! ../../../core/utils/date */ 55594); var _m_recurrence = __webpack_require__( /*! ../../m_recurrence */ 55122); var _index = __webpack_require__( /*! ../../r1/utils/index */ 34396); var _appointment_adapter = __webpack_require__( /*! ../../utils/appointment_adapter/appointment_adapter */ 36791); var _appointment_groups_utils = __webpack_require__( /*! ../../utils/resource_manager/appointment_groups_utils */ 11649); var _m_utils = __webpack_require__( /*! ./m_utils */ 2807); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } function _extends() { return _extends = Object.assign ? Object.assign.bind() : function(n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) { ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]) } } return n }, _extends.apply(null, arguments) } const toMs = _date.default.dateToMilliseconds; class AppointmentFilterBaseStrategy { constructor(options) { this.options = options; this.dataAccessors = this.options.dataAccessors } get timeZoneCalculator() { return this.options.timeZoneCalculator } get viewStartDayHour() { return this.options.startDayHour } get viewEndDayHour() { return this.options.endDayHour } get timezone() { return this.options.timezone } get firstDayOfWeek() { return this.options.firstDayOfWeek } get showAllDayPanel() { return this.options.showAllDayPanel } get loadedResources() { return this._resolveOption("loadedResources") } get supportAllDayRow() { return this._resolveOption("supportAllDayRow") } get viewType() { return this._resolveOption("viewType") } get viewDirection() { return this._resolveOption("viewDirection") } get dateRange() { return this._resolveOption("dateRange") } get groupCount() { return this._resolveOption("groupCount") } get viewDataProvider() { return this._resolveOption("viewDataProvider") } get allDayPanelMode() { return this._resolveOption("allDayPanelMode") } _resolveOption(name) { const result = this.options[name]; return "function" === typeof result ? result() : result } filter(preparedItems) { const [min, max] = this.dateRange; const { viewOffset: viewOffset } = this.options; const allDay = !this.showAllDayPanel && this.supportAllDayRow ? false : void 0; return this.filterLoadedAppointments({ startDayHour: this.viewStartDayHour, endDayHour: this.viewEndDayHour, viewOffset: viewOffset, viewStartDayHour: this.viewStartDayHour, viewEndDayHour: this.viewEndDayHour, min: min, max: max, resources: this.loadedResources, allDay: allDay, supportMultiDayAppointments: (0, _index.isTimelineView)(this.viewType), firstDayOfWeek: this.firstDayOfWeek }, preparedItems) } hasAllDayAppointments(filteredItems, preparedItems) { return filteredItems.map((item => new _appointment_adapter.AppointmentAdapter(item, this.dataAccessors))).some((item => (0, _index.isAppointmentTakesAllDay)(item, this.allDayPanelMode))) } _createAllDayAppointmentFilter() { return [ [appointment => (0, _index.isAppointmentTakesAllDay)(appointment, this.allDayPanelMode)] ] } _createCombinedFilter(filterOptions) { const min = new Date(filterOptions.min); const max = new Date(filterOptions.max); const { startDayHour: startDayHour, endDayHour: endDayHour, viewOffset: viewOffset, viewStartDayHour: viewStartDayHour, viewEndDayHour: viewEndDayHour, resources: resources, firstDayOfWeek: firstDayOfWeek, checkIntersectViewport: checkIntersectViewport, supportMultiDayAppointments: supportMultiDayAppointments } = filterOptions; const [trimMin, trimMax] = (0, _index.getDatesWithoutTime)(min, max); const useRecurrence = this.dataAccessors.has("recurrenceRule"); return [ [appointment => { const appointmentVisible = appointment.visible ?? true; if (!appointmentVisible) { return false } const { allDay: isAllDay, hasRecurrenceRule: hasRecurrenceRule } = appointment; const startDate = _date2.dateUtilsTs.addOffsets(appointment.startDate, [-viewOffset]); const endDate = _date2.dateUtilsTs.addOffsets(appointment.endDate, [-viewOffset]); const appointmentTakesAllDay = (0, _index.isAppointmentTakesAllDay)(appointment, this.allDayPanelMode); if (!hasRecurrenceRule) { if (!(endDate >= trimMin && startDate < trimMax || _date.default.sameDate(endDate, trimMin) && _date.default.sameDate(startDate, trimMin))) { return false } } const appointmentTakesSeveralDays = (0, _m_utils.getAppointmentTakesSeveralDays)(appointment); const isLongAppointment = appointmentTakesSeveralDays || appointmentTakesAllDay; if (null !== resources && void 0 !== resources && resources.length && !this._filterAppointmentByResources(appointment.rawAppointment, resources)) { return false } if (appointmentTakesAllDay && false === filterOptions.allDay) { return false } if (hasRecurrenceRule) { const recurrenceException = (0, _m_utils.getRecurrenceException)(appointment, this.timeZoneCalculator, this.timezone); if (!this._filterAppointmentByRRule(_extends({}, appointment, { recurrenceException: recurrenceException, allDay: appointmentTakesAllDay }), min, max, startDayHour, endDayHour, firstDayOfWeek)) { return false } } if (!isAllDay && supportMultiDayAppointments && isLongAppointment) { if (endDate < min && (!useRecurrence || useRecurrence && !hasRecurrenceRule)) { return false } } if (!isAllDay && (0, _type.isDefined)(startDayHour) && (!useRecurrence || !filterOptions.isVirtualScrolling)) { if (!(0, _m_utils.compareDateWithStartDayHour)(startDate, endDate, startDayHour, appointmentTakesAllDay, appointmentTakesSeveralDays)) { return false } } if (!isAllDay && (0, _type.isDefined)(endDayHour)) { if (!(0, _m_utils.compareDateWithEndDayHour)({ startDate: startDate, endDate: endDate, startDayHour: startDayHour, endDayHour: endDayHour, viewOffset: viewOffset, viewStartDayHour: viewStartDayHour, viewEndDayHour: viewEndDayHour, allDay: appointmentTakesAllDay, severalDays: appointmentTakesSeveralDays, min: min, max: max, checkIntersectViewport: checkIntersectViewport })) { return false } } if (!isAllDay && (!isLongAppointment || supportMultiDayAppointments)) { if (endDate < min && useRecurrence && !hasRecurrenceRule) { return false } } return true }] ] } _filterAppointmentByResources(appointment, groupsResources) { const appointmentGroupValues = (0, _appointment_groups_utils.getAppointmentGroupValues)(appointment, groupsResources); return groupsResources.every((resource => { const value = appointmentGroupValues[resource.resourceIndex]; return null === value || void 0 === value ? void 0 : value.some((id => resource.items.some((item => (0, _common.equalByValue)(id, item.id))))) })) } _filterAppointmentByRRule(appointment, min, max, startDayHour, endDayHour, firstDayOfWeek) { const { recurrenceRule: recurrenceRule } = appointment; const { recurrenceException: recurrenceException } = appointment; const { allDay: allDay } = appointment; let result = true; const appointmentStartDate = appointment.startDate; const appointmentEndDate = appointment.endDate; const recurrenceProcessor = (0, _m_recurrence.getRecurrenceProcessor)(); if (allDay || (0, _m_utils._appointmentPartInInterval)(appointmentStartDate, appointmentEndDate, startDayHour, endDayHour)) { const [trimMin, trimMax] = (0, _index.getDatesWithoutTime)(min, max); min = trimMin; max = new Date(trimMax.getTime() - toMs("minute")) } if (recurrenceRule && !recurrenceProcessor.isValidRecurrenceRule(recurrenceRule)) { result = appointmentEndDate > min && appointmentStartDate <= max } if (result && recurrenceProcessor.isValidRecurrenceRule(recurrenceRule)) { const { viewOffset: viewOffset } = this.options; result = recurrenceProcessor.hasRecurrence({ rule: recurrenceRule, exception: recurrenceException, start: appointmentStartDate, end: appointmentEndDate, min: _date2.dateUtilsTs.addOffsets(min, [viewOffset]), max: _date2.dateUtilsTs.addOffsets(max, [viewOffset]), firstDayOfWeek: firstDayOfWeek, appointmentTimezoneOffset: this.timeZoneCalculator.getOriginStartDateOffsetInMs(appointmentStartDate, appointment.startDateTimeZone, false) }) } return result } filterLoadedAppointments(filterOptions, preparedItems) { const filteredItems = this.filterPreparedItems(filterOptions, preparedItems); return filteredItems.map((_ref => { let { rawAppointment: rawAppointment } = _ref; return rawAppointment })) } filterPreparedItems(filterOptions, preparedItems) { const combinedFilter = this._createCombinedFilter(filterOptions); return (0, _query.default)(preparedItems).filter(combinedFilter).toArray() } filterAllDayAppointments(preparedItems) { const combinedFilter = this._createAllDayAppointmentFilter(); return (0, _query.default)(preparedItems).filter(combinedFilter).toArray().map((_ref2 => { let { rawAppointment: rawAppointment } = _ref2; return rawAppointment })) } } exports.AppointmentFilterBaseStrategy = AppointmentFilterBaseStrategy; AppointmentFilterBaseStrategy.strategyName = "standard" }, 55964: /*!*****************************************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/scheduler/appointments/data_provider/m_appointment_filter_virtual.js ***! \*****************************************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.AppointmentFilterVirtualStrategy = void 0; var _query = _interopRequireDefault(__webpack_require__( /*! ../../../../common/data/query */ 30771)); var _date = _interopRequireDefault(__webpack_require__( /*! ../../../../core/utils/date */ 41380)); var _date2 = __webpack_require__( /*! ../../../core/utils/date */ 55594); var _index = __webpack_require__( /*! ../../../scheduler/r1/utils/index */ 34396); var _group_utils = __webpack_require__( /*! ../../../scheduler/utils/resource_manager/group_utils */ 76131); var _m_appointment_filter = __webpack_require__( /*! ./m_appointment_filter */ 42648); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } const toMs = _date.default.dateToMilliseconds; class AppointmentFilterVirtualStrategy extends _m_appointment_filter.AppointmentFilterBaseStrategy { get resources() { return this.options.resources } filter(preparedItems) { const { viewOffset: viewOffset } = this.options; const hourMs = toMs("hour"); const isCalculateStartAndEndDayHour = (0, _index.isDateAndTimeView)(this.viewType); const checkIntersectViewport = isCalculateStartAndEndDayHour && "horizontal" === this.viewDirection; const isAllDayWorkspace = !this.supportAllDayRow; const showAllDayAppointments = this.showAllDayPanel || isAllDayWorkspace; const endViewDate = this.viewDataProvider.getLastViewDateByEndDayHour(this.viewEndDayHour); const shiftedEndViewDate = _date2.dateUtilsTs.addOffsets(endViewDate, [viewOffset]); const filterOptions = []; const groupsInfo = this.viewDataProvider.getCompletedGroupsInfo(); groupsInfo.forEach((item => { const { groupIndex: groupIndex } = item; const groupStartDate = item.startDate; const groupEndDate = new Date(Math.min(item.endDate.getTime(), shiftedEndViewDate.getTime())); const startDayHour = isCalculateStartAndEndDayHour ? groupStartDate.getHours() : this.viewStartDayHour; const endDayHour = isCalculateStartAndEndDayHour ? startDayHour + groupStartDate.getMinutes() / 60 + (groupEndDate.getTime() - groupStartDate.getTime()) / hourMs : this.viewEndDayHour; const resources = this._getPrerenderFilterResources(groupIndex); const hasAllDayPanel = this.viewDataProvider.hasGroupAllDayPanel(groupIndex); const supportAllDayAppointment = isAllDayWorkspace || !!showAllDayAppointments && hasAllDayPanel; filterOptions.push({ isVirtualScrolling: true, startDayHour: startDayHour, endDayHour: endDayHour, viewOffset: viewOffset, viewStartDayHour: this.viewStartDayHour, viewEndDayHour: this.viewEndDayHour, min: _date2.dateUtilsTs.addOffsets(groupStartDate, [-viewOffset]), max: _date2.dateUtilsTs.addOffsets(groupEndDate, [-viewOffset]), supportMultiDayAppointments: (0, _index.isTimelineView)(this.viewType), allDay: supportAllDayAppointment, resources: resources, firstDayOfWeek: this.firstDayOfWeek, checkIntersectViewport: checkIntersectViewport }) })); return this.filterLoadedAppointments({ filterOptions: filterOptions, groupCount: this.groupCount }, preparedItems) } filterPreparedItems(_ref, preparedItems) { let { filterOptions: filterOptions, groupCount: groupCount } = _ref; const combinedFilters = []; let itemsToFilter = preparedItems; const needPreFilter = groupCount > 0; if (needPreFilter) { itemsToFilter = itemsToFilter.filter((_ref2 => { let { rawAppointment: rawAppointment } = _ref2; for (let i = 0; i < filterOptions.length; ++i) { const { resources: resources } = filterOptions[i]; if (this._filterAppointmentByResources(rawAppointment, resources)) { return true } } })) } filterOptions.forEach((option => { combinedFilters.length && combinedFilters.push("or"); const filter = this._createCombinedFilter(option); combinedFilters.push(filter) })); return (0, _query.default)(itemsToFilter).filter(combinedFilters).toArray() } hasAllDayAppointments(filteredItems, preparedItems) { return this.filterAllDayAppointments(preparedItems).length > 0 } _getPrerenderFilterResources(groupIndex) { const resourceManager = this.options.getResourceManager(); return (0, _group_utils.getResourcesByGroupIndex)(resourceManager.groupsLeafs, resourceManager.resourceById, groupIndex) } } exports.AppointmentFilterVirtualStrategy = AppointmentFilterVirtualStrategy; AppointmentFilterVirtualStrategy.strategyName = "virtual" }, 2807: /*!********************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/scheduler/appointments/data_provider/m_utils.js ***! \********************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.sortAppointmentsByStartDate = exports.getRecurrenceException = exports.getAppointmentTakesSeveralDays = exports.compareDateWithStartDayHour = exports.compareDateWithEndDayHour = exports._convertRecurrenceException = exports._appointmentPartInInterval = void 0; var _date = _interopRequireDefault(__webpack_require__( /*! ../../../../core/utils/date */ 41380)); var _date_serialization = _interopRequireDefault(__webpack_require__( /*! ../../../../core/utils/date_serialization */ 71051)); var _m_utils_time_zone = _interopRequireDefault(__webpack_require__( /*! ../../m_utils_time_zone */ 18648)); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } const toMs = _date.default.dateToMilliseconds; exports.compareDateWithStartDayHour = (startDate, endDate, startDayHour, allDay, severalDays) => { const startTime = _date.default.dateTimeFromDecimal(startDayHour); const result = startDate.getHours() >= startTime.hours && startDate.getMinutes() >= startTime.minutes || endDate.getHours() === startTime.hours && endDate.getMinutes() > startTime.minutes || endDate.getHours() > startTime.hours || severalDays || allDay; return result }; exports.compareDateWithEndDayHour = options => { const { startDate: startDate, endDate: endDate, startDayHour: startDayHour, endDayHour: endDayHour, viewStartDayHour: viewStartDayHour, viewEndDayHour: viewEndDayHour, allDay: allDay, severalDays: severalDays, min: min, max: max, checkIntersectViewport: checkIntersectViewport } = options; const hiddenInterval = (24 - viewEndDayHour + viewStartDayHour) * toMs("hour"); const apptDuration = endDate.getTime() - startDate.getTime(); const delta = (hiddenInterval - apptDuration) / toMs("hour"); const apptStartHour = startDate.getHours(); const apptStartMinutes = startDate.getMinutes(); let result; const endTime = _date.default.dateTimeFromDecimal(endDayHour); const startTime = _date.default.dateTimeFromDecimal(startDayHour); const apptIntersectViewport = startDate < max && endDate > min; result = checkIntersectViewport && apptIntersectViewport || apptStartHour < endTime.hours || apptStartHour === endTime.hours && apptStartMinutes < endTime.minutes || allDay && startDate <= max || severalDays && apptIntersectViewport && (apptStartHour < endTime.hours || 60 * endDate.getHours() + endDate.getMinutes() > 60 * startTime.hours); if (apptDuration < hiddenInterval) { if (apptStartHour > endTime.hours && apptStartMinutes > endTime.minutes && delta <= apptStartHour - endDayHour) { result = false } } return result }; exports.getAppointmentTakesSeveralDays = dates => !_date.default.sameDate(dates.startDate, dates.endDate); exports._appointmentPartInInterval = (startDate, endDate, startDayHour, endDayHour) => { const apptStartDayHour = startDate.getHours(); const apptEndDayHour = endDate.getHours(); return apptStartDayHour <= startDayHour && apptEndDayHour <= endDayHour && apptEndDayHour >= startDayHour || apptEndDayHour >= endDayHour && apptStartDayHour <= endDayHour && apptStartDayHour >= startDayHour }; exports.getRecurrenceException = (appointmentAdapter, timeZoneCalculator, timeZone) => { const { recurrenceException: recurrenceException } = appointmentAdapter; if (recurrenceException) { const exceptions = recurrenceException.split(","); for (let i = 0; i < exceptions.length; i++) { exceptions[i] = _convertRecurrenceException(exceptions[i], appointmentAdapter.startDate, timeZoneCalculator, timeZone) } return exceptions.join() } return recurrenceException }; const _convertRecurrenceException = (exceptionString, startDate, timeZoneCalculator, timeZone) => { exceptionString = exceptionString.replace(/\s/g, ""); const getConvertedToTimeZone = date => timeZoneCalculator.createDate(date, "toGrid"); const exceptionDate = _date_serialization.default.deserializeDate(exceptionString); const convertedStartDate = getConvertedToTimeZone(startDate); let convertedExceptionDate = getConvertedToTimeZone(exceptionDate); convertedExceptionDate = _m_utils_time_zone.default.correctRecurrenceExceptionByTimezone(convertedExceptionDate, convertedStartDate, timeZone); exceptionString = _date_serialization.default.serializeDate(convertedExceptionDate, "yyyyMMddTHHmmss"); return exceptionString }; exports._convertRecurrenceException = _convertRecurrenceException; exports.sortAppointmentsByStartDate = (appointments, dataAccessors) => { appointments.sort(((a, b) => { const firstDate = dataAccessors.get("startDate", a.settings || a); const secondDate = dataAccessors.get("startDate", b.settings || b); return Math.sign(firstDate.getTime() - secondDate.getTime()) })) } }, 5311: /*!***********************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/scheduler/appointments/m_appointment_collection.js ***! \***********************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _translator = __webpack_require__( /*! ../../../common/core/animation/translator */ 88603); var _events_engine = _interopRequireDefault(__webpack_require__( /*! ../../../common/core/events/core/events_engine */ 92774)); var _double_click = __webpack_require__( /*! ../../../common/core/events/double_click */ 5636); var _index = __webpack_require__( /*! ../../../common/core/events/utils/index */ 98834); var _component_registrator = _interopRequireDefault(__webpack_require__( /*! ../../../core/component_registrator */ 92848)); var _dom_adapter = _interopRequireDefault(__webpack_require__( /*! ../../../core/dom_adapter */ 64960)); var _element = __webpack_require__( /*! ../../../core/element */ 61404); var _element_data = __webpack_require__( /*! ../../../core/element_data */ 74663); var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../../core/renderer */ 64553)); var _common = __webpack_require__( /*! ../../../core/utils/common */ 17781); var _date = _interopRequireDefault(__webpack_require__( /*! ../../../core/utils/date */ 41380)); var _dom = __webpack_require__( /*! ../../../core/utils/dom */ 86858); var _extend = __webpack_require__( /*! ../../../core/utils/extend */ 52576); var _iterator = __webpack_require__( /*! ../../../core/utils/iterator */ 21274); var _object = __webpack_require__( /*! ../../../core/utils/object */ 22263); var _position = __webpack_require__( /*! ../../../core/utils/position */ 41639); var _size = __webpack_require__( /*! ../../../core/utils/size */ 57653); var _type = __webpack_require__( /*! ../../../core/utils/type */ 11528); var _uiCollection_widget = _interopRequireDefault(__webpack_require__( /*! ../../../ui/collection/ui.collection_widget.edit */ 7607)); var _date2 = __webpack_require__( /*! ../../core/utils/date */ 55594); var _constants = __webpack_require__( /*! ../constants */ 25307); var _m_classes = __webpack_require__( /*! ../m_classes */ 80126); var _m_recurrence = __webpack_require__( /*! ../m_recurrence */ 55122); var _m_utils_time_zone = _interopRequireDefault(__webpack_require__( /*! ../m_utils_time_zone */ 18648)); var _appointment_adapter = __webpack_require__( /*! ../utils/appointment_adapter/appointment_adapter */ 36791); var _appointment_groups_utils = __webpack_require__( /*! ../utils/resource_manager/appointment_groups_utils */ 11649); var _group_utils = __webpack_require__( /*! ../utils/resource_manager/group_utils */ 76131); var _agenda_appointment = __webpack_require__( /*! ./appointment/agenda_appointment */ 12901); var _m_appointment = __webpack_require__( /*! ./appointment/m_appointment */ 198); var _m_utils = __webpack_require__( /*! ./data_provider/m_utils */ 2807); var _m_appointment_layout = __webpack_require__( /*! ./m_appointment_layout */ 18413); var _m_core = __webpack_require__( /*! ./resizing/m_core */ 57498); var _countVisibleAppointments = __webpack_require__( /*! ./utils/countVisibleAppointments */ 78882); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } const DBLCLICK_EVENT_NAME = (0, _index.addNamespace)(_double_click.name, "dxSchedulerAppointment"); const toMs = _date.default.dateToMilliseconds; class SchedulerAppointments extends _uiCollection_widget.default { get isAgendaView() { return this.invoke("isCurrentViewAgenda") } get isVirtualScrolling() { return this.invoke("isVirtualScrolling") } get appointmentDataProvider() { return this.option("getAppointmentDataProvider")() } get dataAccessors() { return this.option("dataAccessors") } get appointmentsCount() { return (0, _countVisibleAppointments.countVisibleAppointments)(this.option("items") ?? []) } constructor(element, options) { super(element, options); this._virtualAppointments = {} } option(optionName, value) { return super.option(...arguments) } notifyObserver(subject, args) { const observer = this.option("observer"); if (observer) { observer.fire(subject, args) } } invoke(funcName) { for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { args[_key - 1] = arguments[_key] } const observer = this.option("observer"); if (observer) { return observer.fire.apply(observer, arguments) } } _dispose() { clearTimeout(this._appointmentClickTimeout); super._dispose() } _supportedKeys() { const parent = super._supportedKeys(); const currentAppointment = this._$currentAppointment; return (0, _extend.extend)(parent, { escape: function() { if (this.resizeOccur) { var _currentAppointment$d, _currentAppointment$d2, _currentAppointment$d3; this.moveAppointmentBack(); this.resizeOccur = false; null === (_currentAppointment$d = currentAppointment.dxResizable("instance")) || void 0 === _currentAppointment$d || _currentAppointment$d._detachEventHandlers(); null === (_currentAppointment$d2 = currentAppointment.dxResizable("instance")) || void 0 === _currentAppointment$d2 || _currentAppointment$d2._attachEventHandlers(); null === (_currentAppointment$d3 = currentAppointment.dxResizable("instance")) || void 0 === _currentAppointment$d3 || _currentAppointment$d3._toggleResizingClass(false) } }.bind(this), del: function(e) { if (this.option("allowDelete")) { e.preventDefault(); const data = this._getItemData(e.target); this.notifyObserver("onDeleteButtonPress", { data: data, target: e.target }) } }.bind(this), tab: function(e) { const navigatableItems = this._getNavigatableItems(); const focusedItem = navigatableItems.filter(".dx-state-focused"); let index = focusedItem.data(_constants.APPOINTMENT_SETTINGS_KEY).sortedIndex; const lastIndex = navigatableItems.length - 1; if (index > 0 && e.shiftKey || index < lastIndex && !e.shiftKey) { e.preventDefault(); e.shiftKey ? index-- : index++; const $nextAppointment = this._getNavigatableItemByIndex(index); this._resetTabIndex($nextAppointment); _events_engine.default.trigger($nextAppointment, "focus") } } }) } _getNavigatableItemByIndex(sortedIndex) { const appointments = this._getNavigatableItems(); return appointments.filter(((_, $item) => (0, _element_data.data)($item, _constants.APPOINTMENT_SETTINGS_KEY).sortedIndex === sortedIndex)).eq(0) } _getNavigatableItems() { const appts = this._itemElements().filter(":visible").not(".dx-state-disabled"); const apptCollectors = this.$element().find(".dx-scheduler-appointment-collector"); return appts.add(apptCollectors) } _resetTabIndex($appointment) { this._focusTarget().attr("tabIndex", -1); $appointment.attr("tabIndex", this.option("tabIndex")) } _moveFocus() {} _focusTarget() { return this._getNavigatableItems() } _renderFocusTarget() { const $appointment = this._getNavigatableItemByIndex(0); this._resetTabIndex($appointment) } _focusInHandler(e) { super._focusInHandler(e); this._$currentAppointment = (0, _renderer.default)(e.target); this.option("focusedElement", (0, _element.getPublicElement)((0, _renderer.default)(e.target))) } _focusOutHandler(e) { const $appointment = this._getNavigatableItemByIndex(0); this.option("focusedElement", (0, _element.getPublicElement)($appointment)); super._focusOutHandler(e) } _eventBindingTarget() { return this._itemContainer() } _getDefaultOptions() { return (0, _extend.extend)(super._getDefaultOptions(), { noDataText: null, activeStateEnabled: true, hoverStateEnabled: true, tabIndex: 0, fixedContainer: null, allDayContainer: null, allowDrag: true, allowResize: true, allowAllDayResize: true, onAppointmentDblClick: null, _collectorOffset: 0, groups: [], resources: [] }) } _optionChanged(args) { switch (args.name) { case "items": this._cleanFocusState(); this._clearDropDownItems(); this._clearDropDownItemsElements(); this._repaintAppointments(args.value); this._renderDropDownAppointments(); this._attachAppointmentsEvents(); break; case "fixedContainer": case "allDayContainer": case "onAppointmentDblClick": case "allowDelete": break; case "allowDrag": case "allowResize": case "allowAllDayResize": this._invalidate(); break; case "focusedElement": this._resetTabIndex((0, _renderer.default)(args.value)); super._optionChanged(args); break; case "focusStateEnabled": this._clearDropDownItemsElements(); this._renderDropDownAppointments(); super._optionChanged(args); break; default: super._optionChanged(args) } } _isRepaintAll(appointments) { return this.isAgendaView || appointments.every((item => item.needRepaint)) } _applyFragment(fragment, allDay) { if (fragment.children().length > 0) { this._getAppointmentContainer(allDay).append(fragment) } } _repaintAppointments(appointments) { this._renderByFragments((($commonFragment, $allDayFragment) => { const isRepaintAll = this._isRepaintAll(appointments); if (isRepaintAll) { this._getAppointmentContainer(true).html(""); this._getAppointmentContainer(false).html("") } if (!appointments.length) { this._cleanItemContainer() } appointments.forEach(((appointment, index) => { const container = (appointment => { var _appointment$settings; return Boolean(null === (_appointment$settings = appointment.settings[0]) || void 0 === _appointment$settings ? void 0 : _appointment$settings.allDay) })(appointment) ? $allDayFragment : $commonFragment; if (appointment.needRemove) { this._clearItem(appointment) } else if (isRepaintAll || appointment.needRepaint) { appointment.needRepaint = false; this._clearItem(appointment); this._renderItem(index, appointment, container) } })) })) } _renderByFragments(renderFunction) { if (this.isVirtualScrolling) { const $commonFragment = (0, _renderer.default)(_dom_adapter.default.createDocumentFragment()); const $allDayFragment = (0, _renderer.default)(_dom_adapter.default.createDocumentFragment()); renderFunction($commonFragment, $allDayFragment); this._applyFragment($commonFragment, false); this._applyFragment($allDayFragment, true) } else { renderFunction(this._getAppointmentContainer(false), this._getAppointmentContainer(true)) } } _refreshActiveDescendant() {} _attachAppointmentsEvents() { this._attachClickEvent(); this._attachHoldEvent(); this._attachContextMenuEvent(); this._attachAppointmentDblClick(); this._renderFocusState(); this._attachFeedbackEvents(); this._attachHoverEvents() } _clearItem(item) { const $items = this._findItemElementByItem(item.itemData); if (!$items.length) { return }(0, _iterator.each)($items, ((_, $item) => { $item.detach(); $item.remove() })) } _clearDropDownItems() { this._virtualAppointments = {} } _clearDropDownItemsElements() { this.invoke("clearCompactAppointments") } _findItemElementByItem(item) { const result = []; const that = this; this.itemElements().each((function() { const $item = (0, _renderer.default)(this); if ($item.data(that._itemDataKey()) === item) { result.push($item) } })); return result } _itemClass() { return _m_classes.APPOINTMENT_ITEM_CLASS } _itemContainer() { const $container = super._itemContainer(); let $result = $container; const $allDayContainer = this.option("allDayContainer"); if ($allDayContainer) { $result = $container.add($allDayContainer) } return $result } _cleanItemContainer() { super._cleanItemContainer(); const $allDayContainer = this.option("allDayContainer"); if ($allDayContainer) { $allDayContainer.empty() } this._virtualAppointments = {} } _clean() { super._clean(); delete this._$currentAppointment; delete this._initialSize; delete this._initialCoordinates } _init() { super._init(); this.$element().addClass("dx-scheduler-scrollable-appointments"); this._preventSingleAppointmentClick = false } _renderAppointmentTemplate($container, appointment, model) { var _this$_currentAppoint; const config = { isAllDay: appointment.allDay, isRecurrence: appointment.recurrenceRule, html: (0, _type.isPlainObject)(appointment) && appointment.html ? appointment.html : void 0 }; const formatText = this.invoke("getTextAndFormatDate", model.appointmentData, (null === (_this$_currentAppoint = this._currentAppointmentSettings) || void 0 === _this$_currentAppoint ? void 0 : _this$_currentAppoint.agendaSettings) || model.targetedAppointmentData, "TIME"); $container.append(this.isAgendaView ? (0, _m_appointment_layout.createAgendaAppointmentLayout)(formatText, config) : (0, _m_appointment_layout.createAppointmentLayout)(formatText, config)); if (!this.isAgendaView) { $container.parent().prepend((0, _renderer.default)("
").addClass(_m_classes.APPOINTMENT_CONTENT_CLASSES.STRIP)) } } _executeItemRenderAction(index, itemData, itemElement) { const action = this._getItemRenderAction(); if (action) { action(this.invoke("mapAppointmentFields", { itemData: itemData, itemElement: itemElement })) } delete this._currentAppointmentSettings } _itemClickHandler(e) { super._itemClickHandler(e, {}, { afterExecute: function(e) { this._processItemClick(e.args[0].event) }.bind(this) }) } _processItemClick(e) { const $target = (0, _renderer.default)(e.currentTarget); const data = this._getItemData($target); if ($target.is(".dx-scheduler-appointment-collector")) { return } if ("keydown" === e.type || (0, _index.isFakeClickEvent)(e)) { this.notifyObserver("showEditAppointmentPopup", { data: data, target: $target }); return } this._appointmentClickTimeout = setTimeout((() => { if (!this._preventSingleAppointmentClick && (0, _dom.isElementInDom)($target)) { this.notifyObserver("showAppointmentTooltip", { data: data, target: $target }) } this._preventSingleAppointmentClick = false }), 300) } _extendActionArgs($itemElement) { const args = super._extendActionArgs($itemElement); return this.invoke("mapAppointmentFields", args) } _render() { super._render(); this._attachAppointmentDblClick() } _attachAppointmentDblClick() { const that = this; const itemSelector = that._itemSelector(); const itemContainer = this._itemContainer(); _events_engine.default.off(itemContainer, DBLCLICK_EVENT_NAME, itemSelector); _events_engine.default.on(itemContainer, DBLCLICK_EVENT_NAME, itemSelector, (e => { that._itemDXEventHandler(e, "onAppointmentDblClick", {}, { afterExecute(e) { that._dblClickHandler(e.args[0].event) } }) })) } _dblClickHandler(e) { const $targetAppointment = (0, _renderer.default)(e.currentTarget); const appointmentData = this._getItemData($targetAppointment); clearTimeout(this._appointmentClickTimeout); this._preventSingleAppointmentClick = true; this.notifyObserver("showEditAppointmentPopup", { data: appointmentData, target: $targetAppointment }) } _renderItem(index, item, container) { const { itemData: itemData } = item; const $items = []; for (let i = 0; i < item.settings.length; i++) { const setting = item.settings[i]; this._currentAppointmentSettings = setting; const $item = super._renderItem(index, itemData, container); $item.data(_constants.APPOINTMENT_SETTINGS_KEY, setting); $items.push($item) } return $items } _getItemContent($itemFrame) { $itemFrame.data(_constants.APPOINTMENT_SETTINGS_KEY, this._currentAppointmentSettings); const $itemContent = super._getItemContent($itemFrame); return $itemContent } _createItemByTemplate(itemTemplate, renderArgs) { const { itemData: itemData, container: container, index: index } = renderArgs; const parent = (0, _renderer.default)(container).parent(); parent.prepend((0, _renderer.default)("").addClass(_m_classes.APPOINTMENT_CONTENT_CLASSES.ARIA_DESCRIPTION).attr("hidden", true)); return itemTemplate.render({ model: { appointmentData: itemData, targetedAppointmentData: this.invoke("getTargetedAppointmentData", itemData, parent) }, container: container, index: index }) } _getAppointmentContainer(allDay) { const $allDayContainer = this.option("allDayContainer"); const $container = this.itemsContainer().not($allDayContainer); return allDay && $allDayContainer ? $allDayContainer : $container } _postprocessRenderItem(args) { this._renderAppointment(args.itemElement, this._currentAppointmentSettings) } _renderAppointment(element, settings) { element.data(_constants.APPOINTMENT_SETTINGS_KEY, settings); this._applyResourceDataAttr(element); const rawAppointment = this._getItemData(element); const geometry = this.invoke("getAppointmentGeometry", settings); const allowResize = this.option("allowResize") && (!(0, _type.isDefined)(settings.skipResizing) || (0, _type.isString)(settings.skipResizing)); const allowDrag = this.option("allowDrag"); const { allDay: allDay } = settings; this.invoke("setCellDataCacheAlias", this._currentAppointmentSettings, geometry); if (settings.virtual) { const appointmentConfig = { itemData: rawAppointment, groupIndex: settings.groupIndex, groups: this.option("groups") }; const deferredColor = this.option("getAppointmentColor")(appointmentConfig); this._processVirtualAppointment(settings, element, rawAppointment, deferredColor) } else { var _settings$info; const { groups: groups, groupsLeafs: groupsLeafs, resourceById: resourceById } = this.option("getResourceManager")(); const config = { data: rawAppointment, groupIndex: settings.groupIndex, groupTexts: (0, _group_utils.getGroupTexts)(groups, groupsLeafs, resourceById, settings.groupIndex), observer: this.option("observer"), geometry: geometry, direction: settings.direction || "vertical", allowResize: allowResize, allowDrag: allowDrag, allDay: allDay, reduced: settings.appointmentReduced, isCompact: settings.isCompact, startDate: new Date(null === (_settings$info = settings.info) || void 0 === _settings$info ? void 0 : _settings$info.appointment.startDate), cellWidth: this.invoke("getCellWidth"), cellHeight: this.invoke("getCellHeight"), resizableConfig: this._resizableConfig(rawAppointment, settings), groups: this.option("groups"), partIndex: settings.partIndex, partTotalCount: settings.partTotalCount, dataAccessors: this.dataAccessors, timeZoneCalculator: this.option("timeZoneCalculator"), getResizableStep: this.option("getResizableStep"), getResourceManager: this.option("getResourceManager") }; this._createComponent(element, this.isAgendaView ? _agenda_appointment.AgendaAppointment : _m_appointment.Appointment, config) } } _applyResourceDataAttr($appointment) { const { resources: resources } = this.option("getResourceManager")(); const rawAppointment = this._getItemData($appointment); const appointmentGroups = (0, _appointment_groups_utils.getAppointmentGroupValues)(rawAppointment, resources); Object.entries(appointmentGroups).forEach((_ref => { let [resourceIndex, resourceIds] = _ref; if (resourceIds.length) { const prefix = `data-${(0,_common.normalizeKey)(resourceIndex.toLowerCase())}-`; resourceIds.forEach((value => $appointment.attr(prefix + (0, _common.normalizeKey)(value), true))) } })) } _resizableConfig(appointmentData, itemSetting) { return { area: this._calculateResizableArea(itemSetting, appointmentData), onResizeStart: function(e) { this.resizeOccur = true; this._$currentAppointment = (0, _renderer.default)(e.element); if (this.invoke("needRecalculateResizableArea")) { const updatedArea = this._calculateResizableArea(this._$currentAppointment.data(_constants.APPOINTMENT_SETTINGS_KEY), this._$currentAppointment.data("dxItemData")); e.component.option("area", updatedArea); e.component._renderDragOffsets(e.event) } this._initialSize = { width: e.width, height: e.height }; this._initialCoordinates = (0, _translator.locate)(this._$currentAppointment) }.bind(this), onResizeEnd: function(e) { this.resizeOccur = false; this._resizeEndHandler(e) }.bind(this) } } _calculateResizableArea(itemSetting, appointmentData) { const area = this.$element().closest(".dx-scrollable-content"); return this.invoke("getResizableAppointmentArea", { coordinates: { left: itemSetting.left, top: 0, groupIndex: itemSetting.groupIndex }, allDay: itemSetting.allDay }) || area } _resizeEndHandler(e) { const $element = (0, _renderer.default)(e.element); const { allDay: allDay, info: info } = $element.data(_constants.APPOINTMENT_SETTINGS_KEY); const sourceAppointment = this._getItemData($element); const viewOffset = this.invoke("getViewOffsetMs"); let dateRange; if (allDay) { dateRange = this.resizeAllDay(e) } else { const startDate = this._getEndResizeAppointmentStartDate(e, sourceAppointment, info.appointment); const { endDate: endDate } = info.appointment; const shiftedStartDate = _date2.dateUtilsTs.addOffsets(startDate, [-viewOffset]); const shiftedEndDate = _date2.dateUtilsTs.addOffsets(endDate, [-viewOffset]); dateRange = this._getDateRange(e, shiftedStartDate, shiftedEndDate); dateRange.startDate = _date2.dateUtilsTs.addOffsets(dateRange.startDate, [viewOffset]); dateRange.endDate = _date2.dateUtilsTs.addOffsets(dateRange.endDate, [viewOffset]) } this.updateResizedAppointment($element, dateRange, this.dataAccessors, this.option("timeZoneCalculator")) } resizeAllDay(e) { const $element = (0, _renderer.default)(e.element); const timeZoneCalculator = this.option("timeZoneCalculator"); return (0, _m_core.getAppointmentDateRange)({ handles: e.handles, appointmentSettings: $element.data(_constants.APPOINTMENT_SETTINGS_KEY), isVerticalViewDirection: this.option("isVerticalViewDirection")(), isVerticalGroupedWorkSpace: this.option("isVerticalGroupedWorkSpace")(), appointmentRect: (0, _position.getBoundingRect)($element[0]), parentAppointmentRect: (0, _position.getBoundingRect)($element.parent()[0]), viewDataProvider: this.option("getViewDataProvider")(), isDateAndTimeView: this.option("isDateAndTimeView")(), startDayHour: this.invoke("getStartDayHour"), endDayHour: this.invoke("getEndDayHour"), timeZoneCalculator: timeZoneCalculator, dataAccessors: this.dataAccessors, rtlEnabled: this.option("rtlEnabled"), DOMMetaData: this.option("getDOMElementsMetaData")(), viewOffset: this.invoke("getViewOffsetMs") }) } updateResizedAppointment($element, dateRange, dataAccessors, timeZoneCalculator) { const sourceAppointment = this._getItemData($element); const gridAdapter = new _appointment_adapter.AppointmentAdapter(sourceAppointment, dataAccessors).clone(); gridAdapter.startDate = new Date(dateRange.startDate); gridAdapter.endDate = new Date(dateRange.endDate); const convertedBackAdapter = gridAdapter.clone().calculateDates(timeZoneCalculator, "fromGrid").calculateDates(timeZoneCalculator, "toGrid"); const startDateDelta = gridAdapter.startDate.getTime() - convertedBackAdapter.startDate.getTime(); const endDateDelta = gridAdapter.endDate.getTime() - convertedBackAdapter.endDate.getTime(); gridAdapter.startDate = _date2.dateUtilsTs.addOffsets(gridAdapter.startDate, [startDateDelta]); gridAdapter.endDate = _date2.dateUtilsTs.addOffsets(gridAdapter.endDate, [endDateDelta]); const data = gridAdapter.calculateDates(timeZoneCalculator, "fromGrid").source; this.notifyObserver("updateAppointmentAfterResize", { target: sourceAppointment, data: data, $appointment: $element }) } _getEndResizeAppointmentStartDate(e, rawAppointment, appointmentInfo) { const timeZoneCalculator = this.option("timeZoneCalculator"); const appointmentAdapter = new _appointment_adapter.AppointmentAdapter(rawAppointment, this.dataAccessors); let { startDate: startDate } = appointmentInfo; const { startDateTimeZone: startDateTimeZone, isRecurrent: isRecurrent } = appointmentAdapter; const isAllDay = this.invoke("isAllDay", rawAppointment); if (!e.handles.top && !isRecurrent && !isAllDay) { startDate = timeZoneCalculator.createDate(appointmentAdapter.startDate, "toGrid", startDateTimeZone) } return startDate } _getDateRange(e, startDate, endDate) { const itemData = this._getItemData(e.element); const deltaTime = this.invoke("getDeltaTime", e, this._initialSize, itemData); const renderingStrategyDirection = this.invoke("getRenderingStrategyDirection"); let isStartDateChanged = false; const isAllDay = this.invoke("isAllDay", itemData); const needCorrectDates = this.invoke("needCorrectAppointmentDates") && !isAllDay; let startTime; let endTime; if ("vertical" !== renderingStrategyDirection || isAllDay) { isStartDateChanged = this.option("rtlEnabled") ? e.handles.right : e.handles.left } else { isStartDateChanged = e.handles.top } if (isStartDateChanged) { startTime = needCorrectDates ? this._correctStartDateByDelta(startDate, deltaTime) : startDate.getTime() - deltaTime; startTime += _m_utils_time_zone.default.getTimezoneOffsetChangeInMs(startDate, endDate, startTime, endDate); endTime = endDate.getTime() } else { startTime = startDate.getTime(); endTime = needCorrectDates ? this._correctEndDateByDelta(endDate, deltaTime) : endDate.getTime() + deltaTime; endTime -= _m_utils_time_zone.default.getTimezoneOffsetChangeInMs(startDate, endDate, startDate, endTime) } return { startDate: new Date(startTime), endDate: new Date(endTime) } } _correctEndDateByDelta(endDate, deltaTime) { const endDayHour = this.invoke("getEndDayHour"); const startDayHour = this.invoke("getStartDayHour"); const maxDate = new Date(endDate); const minDate = new Date(endDate); const correctEndDate = new Date(endDate); minDate.setHours(startDayHour, 0, 0, 0); maxDate.setHours(endDayHour, 0, 0, 0); if (correctEndDate > maxDate) { correctEndDate.setHours(endDayHour, 0, 0, 0) } let result = correctEndDate.getTime() + deltaTime; const visibleDayDuration = (endDayHour - startDayHour) * toMs("hour"); const daysCount = deltaTime > 0 ? Math.ceil(deltaTime / visibleDayDuration) : Math.floor(deltaTime / visibleDayDuration); if (result > maxDate.getTime() || result <= minDate.getTime()) { const tailOfCurrentDay = maxDate.getTime() - correctEndDate.getTime(); const tailOfPrevDays = deltaTime - tailOfCurrentDay; const correctedEndDate = new Date(correctEndDate).setDate(correctEndDate.getDate() + daysCount); const lastDay = new Date(correctedEndDate); lastDay.setHours(startDayHour, 0, 0, 0); result = lastDay.getTime() + tailOfPrevDays - visibleDayDuration * (daysCount - 1) } return result } _correctStartDateByDelta(startDate, deltaTime) { const endDayHour = this.invoke("getEndDayHour"); const startDayHour = this.invoke("getStartDayHour"); const maxDate = new Date(startDate); const minDate = new Date(startDate); const correctStartDate = new Date(startDate); minDate.setHours(startDayHour, 0, 0, 0); maxDate.setHours(endDayHour, 0, 0, 0); if (correctStartDate < minDate) { correctStartDate.setHours(startDayHour, 0, 0, 0) } let result = correctStartDate.getTime() - deltaTime; const visibleDayDuration = (endDayHour - startDayHour) * toMs("hour"); const daysCount = deltaTime > 0 ? Math.ceil(deltaTime / visibleDayDuration) : Math.floor(deltaTime / visibleDayDuration); if (result < minDate.getTime() || result >= maxDate.getTime()) { const tailOfCurrentDay = correctStartDate.getTime() - minDate.getTime(); const tailOfPrevDays = deltaTime - tailOfCurrentDay; const firstDay = new Date(correctStartDate.setDate(correctStartDate.getDate() - daysCount)); firstDay.setHours(endDayHour, 0, 0, 0); result = firstDay.getTime() - tailOfPrevDays + visibleDayDuration * (daysCount - 1) } return result } _processVirtualAppointment(appointmentSetting, $appointment, appointmentData, color) { const virtualAppointment = appointmentSetting.virtual; const virtualGroupIndex = virtualAppointment.index; if (!(0, _type.isDefined)(this._virtualAppointments[virtualGroupIndex])) { this._virtualAppointments[virtualGroupIndex] = { coordinates: { top: virtualAppointment.top, left: virtualAppointment.left }, items: { data: [], colors: [], settings: [] }, isAllDay: !!virtualAppointment.isAllDay, buttonColor: color, sortedIndex: appointmentSetting.sortedIndex } } appointmentSetting.targetedAppointmentData = this.invoke("getTargetedAppointmentData", appointmentData, $appointment); this._virtualAppointments[virtualGroupIndex].items.settings.push(appointmentSetting); this._virtualAppointments[virtualGroupIndex].items.data.push(appointmentData); this._virtualAppointments[virtualGroupIndex].items.colors.push(color); $appointment.remove() } _renderContentImpl() { super._renderContentImpl(); this._renderDropDownAppointments() } _renderDropDownAppointments() { this._renderByFragments((($commonFragment, $allDayFragment) => { (0, _iterator.each)(this._virtualAppointments, (groupIndex => { const virtualGroup = this._virtualAppointments[groupIndex]; const virtualItems = virtualGroup.items; const virtualCoordinates = virtualGroup.coordinates; const $fragment = virtualGroup.isAllDay ? $allDayFragment : $commonFragment; const { left: left } = virtualCoordinates; const buttonWidth = this.invoke("getDropDownAppointmentWidth", virtualGroup.isAllDay); const buttonHeight = this.invoke("getDropDownAppointmentHeight"); const rtlOffset = this.option("rtlEnabled") ? buttonWidth : 0; this.notifyObserver("renderCompactAppointments", { $container: $fragment, coordinates: { top: virtualCoordinates.top, left: left + rtlOffset }, items: virtualItems, buttonColor: virtualGroup.buttonColor, sortedIndex: virtualGroup.sortedIndex, width: buttonWidth - this.option("_collectorOffset"), height: buttonHeight, onAppointmentClick: this.option("onItemClick"), allowDrag: this.option("allowDrag"), cellWidth: this.invoke("getCellWidth"), isCompact: this.invoke("isAdaptive") || this._isGroupCompact(virtualGroup) }) })) })) } _isGroupCompact(virtualGroup) { return !virtualGroup.isAllDay && this.invoke("supportCompactDropDownAppointments") } _sortAppointmentsByStartDate(appointments) { return (0, _m_utils.sortAppointmentsByStartDate)(appointments, this.dataAccessors) } _processRecurrenceAppointment(appointment, index, skipLongAppointments) { const recurrenceRule = this.dataAccessors.get("recurrenceRule", appointment); const result = { parts: [], indexes: [] }; if (recurrenceRule) { const dates = appointment.settings || appointment; const startDate = this.dataAccessors.get("startDate", dates); const startDateTimeZone = this.dataAccessors.get("startDateTimeZone", appointment); const endDate = this.dataAccessors.get("endDate", dates); const appointmentDuration = endDate.getTime() - startDate.getTime(); const recurrenceException = this.dataAccessors.get("recurrenceException", appointment); const startViewDate = this.invoke("getStartViewDate"); const endViewDate = this.invoke("getEndViewDate"); const timezoneCalculator = this.option("timeZoneCalculator"); const recurrentDates = (0, _m_recurrence.getRecurrenceProcessor)().generateDates({ rule: recurrenceRule, exception: recurrenceException, start: startDate, end: endDate, min: startViewDate, max: endViewDate, appointmentTimezoneOffset: timezoneCalculator.getOriginStartDateOffsetInMs(startDate, startDateTimeZone, false) }); const recurrentDateCount = appointment.settings ? 1 : recurrentDates.length; for (let i = 0; i < recurrentDateCount; i++) { const appointmentPart = (0, _extend.extend)({}, appointment, true); if (recurrentDates[i]) { const appointmentSettings = this._applyStartDateToObj(recurrentDates[i], {}); this._applyEndDateToObj(new Date(recurrentDates[i].getTime() + appointmentDuration), appointmentSettings); appointmentPart.settings = appointmentSettings } else { appointmentPart.settings = dates } result.parts.push(appointmentPart); if (!skipLongAppointments) { this._processLongAppointment(appointmentPart, result) } } result.indexes.push(index) } return result } _processLongAppointment(appointment, result) { const parts = this.splitAppointmentByDay(appointment); const partCount = parts.length; const endViewDate = this.invoke("getEndViewDate").getTime(); const startViewDate = this.invoke("getStartViewDate").getTime(); const timeZoneCalculator = this.option("timeZoneCalculator"); result = result || { parts: [] }; if (partCount > 1) { (0, _extend.extend)(appointment, parts[0]); for (let i = 1; i < partCount; i++) { let startDate = this.dataAccessors.get("startDate", parts[i].settings); startDate = timeZoneCalculator.createDate(startDate.getTime(), "toGrid"); if (startDate < endViewDate && startDate > startViewDate) { result.parts.push(parts[i]) } } } return result } _reduceRecurrenceAppointments(recurrenceIndexes, appointments) { (0, _iterator.each)(recurrenceIndexes, ((i, index) => { appointments.splice(index - i, 1) })) } _combineAppointments(appointments, additionalAppointments) { if (additionalAppointments.length) { appointments.push(...additionalAppointments) } this._sortAppointmentsByStartDate(appointments) } _applyStartDateToObj(startDate, obj) { this.dataAccessors.set("startDate", obj, startDate); return obj } _applyEndDateToObj(endDate, obj) { this.dataAccessors.set("endDate", obj, endDate); return obj } moveAppointmentBack(dragEvent) { const $appointment = this._$currentAppointment; const size = this._initialSize; const coords = this._initialCoordinates; if (dragEvent) { this._removeDragSourceClassFromDraggedAppointment(); if ((0, _type.isDeferred)(dragEvent.cancel)) { dragEvent.cancel.resolve(true) } else { dragEvent.cancel = true } } if ($appointment && !dragEvent) { if (coords) { (0, _translator.move)($appointment, coords); delete this._initialSize } if (size) { (0, _size.setOuterWidth)($appointment, size.width); (0, _size.setOuterHeight)($appointment, size.height); delete this._initialCoordinates } } } focus() { if (this._$currentAppointment) { const focusedElement = (0, _element.getPublicElement)(this._$currentAppointment); this.option("focusedElement", focusedElement); _events_engine.default.trigger(focusedElement, "focus") } } splitAppointmentByDay(appointment) { const dates = appointment.settings || appointment; const originalStartDate = this.dataAccessors.get("startDate", dates); let startDate = _date.default.makeDate(originalStartDate); let endDate = _date.default.makeDate(this.dataAccessors.get("endDate", dates)); const maxAllowedDate = this.invoke("getEndViewDate"); const startDayHour = this.invoke("getStartDayHour"); const endDayHour = this.invoke("getEndDayHour"); const timeZoneCalculator = this.option("timeZoneCalculator"); const adapter = new _appointment_adapter.AppointmentAdapter(appointment, this.dataAccessors); const appointmentIsLong = (0, _m_utils.getAppointmentTakesSeveralDays)(adapter); const result = []; startDate = timeZoneCalculator.createDate(startDate, "toGrid"); endDate = timeZoneCalculator.createDate(endDate, "toGrid"); if (startDate.getHours() <= endDayHour && startDate.getHours() >= startDayHour && !appointmentIsLong) { result.push(this._applyStartDateToObj(new Date(startDate), { appointmentData: appointment })); startDate.setDate(startDate.getDate() + 1) } while (appointmentIsLong && startDate.getTime() < endDate.getTime() && startDate < maxAllowedDate) { const currentStartDate = new Date(startDate); const currentEndDate = new Date(startDate); this._checkStartDate(currentStartDate, originalStartDate, startDayHour); this._checkEndDate(currentEndDate, endDate, endDayHour); const appointmentData = (0, _object.deepExtendArraySafe)({}, appointment, true); const appointmentSettings = {}; this._applyStartDateToObj(currentStartDate, appointmentSettings); this._applyEndDateToObj(currentEndDate, appointmentSettings); appointmentData.settings = appointmentSettings; result.push(appointmentData); startDate = _date.default.trimTime(startDate); startDate.setDate(startDate.getDate() + 1); startDate.setHours(startDayHour) } return result } _checkStartDate(currentDate, originalDate, startDayHour) { if (!_date.default.sameDate(currentDate, originalDate) || currentDate.getHours() <= startDayHour) { currentDate.setHours(startDayHour, 0, 0, 0) } else { currentDate.setHours(originalDate.getHours(), originalDate.getMinutes(), originalDate.getSeconds(), originalDate.getMilliseconds()) } } _checkEndDate(currentDate, originalDate, endDayHour) { if (!_date.default.sameDate(currentDate, originalDate) || currentDate.getHours() > endDayHour) { currentDate.setHours(endDayHour, 0, 0, 0) } else { currentDate.setHours(originalDate.getHours(), originalDate.getMinutes(), originalDate.getSeconds(), originalDate.getMilliseconds()) } } _removeDragSourceClassFromDraggedAppointment() { const $appointments = this._itemElements().filter(`.${_m_classes.APPOINTMENT_DRAG_SOURCE_CLASS}`); $appointments.each(((_, element) => { const appointmentInstance = (0, _renderer.default)(element).dxSchedulerAppointment("instance"); appointmentInstance.option("isDragSource", false) })) } _setDragSourceAppointment(appointment, settings) { const $appointments = this._findItemElementByItem(appointment); const { startDate: startDate, endDate: endDate } = settings.info.sourceAppointment; const { groupIndex: groupIndex } = settings; $appointments.forEach(($item => { const { info: itemInfo, groupIndex: itemGroupIndex } = $item.data(_constants.APPOINTMENT_SETTINGS_KEY); const { startDate: itemStartDate, endDate: itemEndDate } = itemInfo.sourceAppointment; const appointmentInstance = $item.dxSchedulerAppointment("instance"); const isDragSource = startDate.getTime() === itemStartDate.getTime() && endDate.getTime() === itemEndDate.getTime() && groupIndex === itemGroupIndex; appointmentInstance.option("isDragSource", isDragSource) })) } updateResizableArea() { const $allResizableElements = this.$element().find(".dx-scheduler-appointment.dx-resizable"); const horizontalResizables = (0, _common.grep)($allResizableElements, (el => { const $el = (0, _renderer.default)(el); const resizableInst = $el.dxResizable("instance"); const { area: area, handles: handles } = resizableInst.option(); return ("right left" === handles || "left right" === handles) && (0, _type.isPlainObject)(area) })); (0, _iterator.each)(horizontalResizables, ((_, el) => { const $el = (0, _renderer.default)(el); const position = (0, _translator.locate)($el); const appointmentData = this._getItemData($el); const area = this._calculateResizableArea({ left: position.left }, appointmentData); $el.dxResizable("instance").option("area", area) })) } }(0, _component_registrator.default)("dxSchedulerAppointments", SchedulerAppointments); exports.default = SchedulerAppointments }, 18413: /*!*******************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/scheduler/appointments/m_appointment_layout.js ***! \*******************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.createAppointmentLayout = exports.createAgendaAppointmentLayout = void 0; var _message = _interopRequireDefault(__webpack_require__( /*! ../../../common/core/localization/message */ 4671)); var _dom_adapter = _interopRequireDefault(__webpack_require__( /*! ../../../core/dom_adapter */ 64960)); var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../../core/renderer */ 64553)); var _m_classes = __webpack_require__( /*! ../m_classes */ 80126); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } const allDayText = ` ${_message.default.format("dxScheduler-allDay")}: `; const recurringText = _message.default.format("dxScheduler-appointmentAriaLabel-recurring"); exports.createAppointmentLayout = (formatText, config) => { const result = (0, _renderer.default)(_dom_adapter.default.createDocumentFragment()); (0, _renderer.default)("
").text(formatText.text).addClass(_m_classes.APPOINTMENT_CONTENT_CLASSES.APPOINTMENT_TITLE).appendTo(result); if (config.html) { result.html(config.html) } const $contentDetails = (0, _renderer.default)("
").addClass(_m_classes.APPOINTMENT_CONTENT_CLASSES.APPOINTMENT_CONTENT_DETAILS).appendTo(result); (0, _renderer.default)("
").addClass(_m_classes.APPOINTMENT_CONTENT_CLASSES.APPOINTMENT_DATE).text(formatText.formatDate).appendTo($contentDetails); config.isRecurrence && (0, _renderer.default)("").addClass(`${_m_classes.APPOINTMENT_CONTENT_CLASSES.RECURRING_ICON} dx-icon-repeat`).attr("aria-label", recurringText).attr("role", "img").appendTo(result); config.isAllDay && (0, _renderer.default)("
").text(allDayText).addClass(_m_classes.APPOINTMENT_CONTENT_CLASSES.ALL_DAY_CONTENT).prependTo($contentDetails); return result }; exports.createAgendaAppointmentLayout = (formatText, config) => { const result = (0, _renderer.default)(_dom_adapter.default.createDocumentFragment()); const leftLayoutContainer = (0, _renderer.default)("
").addClass("dx-scheduler-agenda-appointment-left-layout").appendTo(result); const rightLayoutContainer = (0, _renderer.default)("
").addClass("dx-scheduler-agenda-appointment-right-layout").appendTo(result); const marker = (0, _renderer.default)("
").addClass(_m_classes.APPOINTMENT_CONTENT_CLASSES.AGENDA_MARKER).appendTo(leftLayoutContainer); config.isRecurrence && (0, _renderer.default)("").addClass(`${_m_classes.APPOINTMENT_CONTENT_CLASSES.RECURRING_ICON} dx-icon-repeat`).attr("aria-label", recurringText).appendTo(marker); (0, _renderer.default)("
").addClass(_m_classes.APPOINTMENT_CONTENT_CLASSES.APPOINTMENT_TITLE).text(formatText.text).appendTo(rightLayoutContainer); const additionalContainer = (0, _renderer.default)("
").addClass(_m_classes.APPOINTMENT_CONTENT_CLASSES.APPOINTMENT_CONTENT_DETAILS).appendTo(rightLayoutContainer); (0, _renderer.default)("
").addClass(_m_classes.APPOINTMENT_CONTENT_CLASSES.APPOINTMENT_DATE).text(formatText.formatDate).appendTo(additionalContainer); if (config.isAllDay) { (0, _renderer.default)("
").text(allDayText).addClass(_m_classes.APPOINTMENT_CONTENT_CLASSES.ALL_DAY_CONTENT).prependTo(additionalContainer) } return result } }, 71358: /*!*************************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/scheduler/appointments/m_cell_position_calculator.js ***! \*************************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.CellPositionCalculator = void 0; var _type = __webpack_require__( /*! ../../../core/utils/type */ 11528); var _date = __webpack_require__( /*! ../../core/utils/date */ 55594); function _extends() { return _extends = Object.assign ? Object.assign.bind() : function(n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) { ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]) } } return n }, _extends.apply(null, arguments) } class BaseStrategy { constructor(options) { this.isVirtualScrolling = false; this.options = options } get DOMMetaData() { return this.options.DOMMetaData } get appointments() { return this.options.dateSettings } get viewDataProvider() { return this.options.viewDataProvider } get positionHelper() { return this.options.positionHelper } get startViewDate() { return this.options.startViewDate } get viewStartDayHour() { return this.options.viewStartDayHour } get viewEndDayHour() { return this.options.viewEndDayHour } get cellDuration() { return this.options.cellDuration } get getPositionShift() { return this.options.getPositionShiftCallback } get groupCount() { return this.options.groupCount } get rtlEnabled() { return this.options.rtlEnabled } get isVerticalGrouping() { return this.options.isVerticalGroupOrientation } get showAllDayPanel() { return this.options.showAllDayPanel } get supportAllDayRow() { return this.options.supportAllDayRow } get isGroupedAllDayPanel() { return this.options.isGroupedAllDayPanel } calculateCellPositions(groupIndices, isAllDayRowAppointment, isRecurrentAppointment) { const result = []; this.appointments.forEach(((dateSetting, index) => { const coordinates = this.getCoordinateInfos({ appointment: dateSetting, groupIndices: groupIndices, isAllDayRowAppointment: isAllDayRowAppointment, isRecurrentAppointment: isRecurrentAppointment }); coordinates.forEach((item => { !!item && result.push(this._prepareObject(item, index)) })) })); return result } getCoordinateInfos(options) { const { appointment: appointment, isAllDayRowAppointment: isAllDayRowAppointment, groupIndices: groupIndices, recurrent: recurrent } = options; const { startDate: startDate } = appointment; const groupIndex = !recurrent ? appointment.source.groupIndex : void 0; return this.getCoordinatesByDateInGroup(startDate, groupIndices, isAllDayRowAppointment, groupIndex) } _prepareObject(position, dateSettingIndex) { position.dateSettingIndex = dateSettingIndex; return { coordinates: position, dateSettingIndex: dateSettingIndex } } getCoordinatesByDate(date, groupIndex, inAllDayRow) { const validGroupIndex = groupIndex || 0; const cellInfo = { groupIndex: validGroupIndex, startDate: date, isAllDay: inAllDayRow }; const positionByMap = this.viewDataProvider.findCellPositionInMap(cellInfo, true); if (!positionByMap) { return } const position = this.getCellPosition(positionByMap, inAllDayRow && !this.isVerticalGrouping); const groupEdgeIndices = this.viewDataProvider.getGroupEdgeIndices(validGroupIndex); const { top: vMin } = this.getCellPosition({ columnIndex: positionByMap.columnIndex, rowIndex: groupEdgeIndices.firstRowIndex }, inAllDayRow && !this.isVerticalGrouping); const timeShift = inAllDayRow ? 0 : this.getTimeShiftRatio(positionByMap, date); const shift = this.getPositionShift(timeShift, inAllDayRow); const horizontalHMax = this.positionHelper.getHorizontalMax(validGroupIndex, date); const verticalMax = this.positionHelper.getVerticalMax({ groupIndex: validGroupIndex, isVirtualScrolling: this.isVirtualScrolling, showAllDayPanel: this.showAllDayPanel, supportAllDayRow: this.supportAllDayRow, isGroupedAllDayPanel: this.isGroupedAllDayPanel, isVerticalGrouping: this.isVerticalGrouping }); return { positionByMap: positionByMap, cellPosition: position.left + shift.cellPosition, top: position.top + shift.top, left: position.left + shift.left, rowIndex: position.rowIndex, columnIndex: position.columnIndex, hMax: horizontalHMax, vMax: verticalMax, vMin: vMin, groupIndex: validGroupIndex } } getCoordinatesByDateInGroup(startDate, groupIndices, inAllDayRow, groupIndex) { const result = []; if (this.viewDataProvider.isSkippedDate(startDate)) { return result } let validGroupIndices = [groupIndex]; if (!(0, _type.isDefined)(groupIndex)) { validGroupIndices = this.groupCount ? groupIndices : [0] } validGroupIndices.forEach((groupIndex => { const coordinates = this.getCoordinatesByDate(startDate, groupIndex, inAllDayRow); if (coordinates) { result.push(coordinates) } })); return result } getCellPosition(cellCoordinates, isAllDayPanel) { const { dateTableCellsMeta: dateTableCellsMeta, allDayPanelCellsMeta: allDayPanelCellsMeta } = this.DOMMetaData; const { columnIndex: columnIndex, rowIndex: rowIndex } = cellCoordinates; const position = isAllDayPanel ? allDayPanelCellsMeta[columnIndex] : dateTableCellsMeta[rowIndex][columnIndex]; const validPosition = _extends({}, position); if (this.rtlEnabled) { validPosition.left += position.width } if (validPosition) { validPosition.rowIndex = cellCoordinates.rowIndex; validPosition.columnIndex = cellCoordinates.columnIndex } return validPosition } getTimeShiftRatio(positionByMap, appointmentDate) { const { cellDuration: cellDuration, viewOffset: viewOffset } = this.options; const { rowIndex: rowIndex, columnIndex: columnIndex } = positionByMap; const matchedCell = this.viewDataProvider.viewDataMap.dateTableMap[rowIndex][columnIndex]; const matchedCellStartDate = _date.dateUtilsTs.addOffsets(matchedCell.cellData.startDate, [-viewOffset]); const result = (appointmentDate.getTime() - matchedCellStartDate.getTime()) / cellDuration; return result % 1 } } class VirtualStrategy extends BaseStrategy { constructor() { super(...arguments); this.isVirtualScrolling = true } calculateCellPositions(groupIndices, isAllDayRowAppointment, isRecurrentAppointment) { const appointments = isAllDayRowAppointment ? this.appointments : this.appointments.filter((_ref => { let { source: source, startDate: startDate, endDate: endDate } = _ref; return this.viewDataProvider.isGroupIntersectDateInterval(source.groupIndex, startDate, endDate) })); if (isRecurrentAppointment) { return this.createRecurrentAppointmentInfos(appointments, isAllDayRowAppointment) } return super.calculateCellPositions(groupIndices, isAllDayRowAppointment, isRecurrentAppointment) } createRecurrentAppointmentInfos(dateSettings, isAllDayRowAppointment) { const result = []; dateSettings.forEach(((_ref2, index) => { let { source: source, startDate: startDate } = _ref2; const coordinate = this.getCoordinatesByDate(startDate, source.groupIndex, isAllDayRowAppointment); if (coordinate) { result.push(this._prepareObject(coordinate, index)) } })); return result } } exports.CellPositionCalculator = class { constructor(options) { this.options = options } calculateCellPositions(groupIndices, isAllDayRowAppointment, isRecurrentAppointment) { const strategy = this.options.isVirtualScrolling ? new VirtualStrategy(this.options) : new BaseStrategy(this.options); return strategy.calculateCellPositions(groupIndices, isAllDayRowAppointment, isRecurrentAppointment) } } }, 91658: /*!*******************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/scheduler/appointments/m_settings_generator.js ***! \*******************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.DateGeneratorVirtualStrategy = exports.DateGeneratorBaseStrategy = exports.AppointmentSettingsGenerator = void 0; var _date = _interopRequireDefault(__webpack_require__( /*! ../../../core/utils/date */ 41380)); var _extend = __webpack_require__( /*! ../../../core/utils/extend */ 52576); var _type = __webpack_require__( /*! ../../../core/utils/type */ 11528); var _date2 = __webpack_require__( /*! ../../core/utils/date */ 55594); var _m_recurrence = __webpack_require__( /*! ../m_recurrence */ 55122); var _m_utils_time_zone = _interopRequireDefault(__webpack_require__( /*! ../m_utils_time_zone */ 18648)); var _index = __webpack_require__( /*! ../r1/utils/index */ 34396); var _appointment_adapter = __webpack_require__( /*! ../utils/appointment_adapter/appointment_adapter */ 36791); var _appointment_groups_utils = __webpack_require__( /*! ../utils/resource_manager/appointment_groups_utils */ 11649); var _m_cell_position_calculator = __webpack_require__( /*! ./m_cell_position_calculator */ 71358); var _m_text_utils = __webpack_require__( /*! ./m_text_utils */ 9680); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } function _extends() { return _extends = Object.assign ? Object.assign.bind() : function(n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) { ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]) } } return n }, _extends.apply(null, arguments) } const toMs = _date.default.dateToMilliseconds; class DateGeneratorBaseStrategy { constructor(options) { this.options = options } get resourceManager() { return this.options.getResourceManager() } get rawAppointment() { return this.options.rawAppointment } get timeZoneCalculator() { return this.options.timeZoneCalculator } get viewDataProvider() { return this.options.viewDataProvider } get appointmentTakesAllDay() { return this.options.appointmentTakesAllDay } get supportAllDayRow() { return this.options.supportAllDayRow } get isAllDayRowAppointment() { return this.options.isAllDayRowAppointment } get timeZone() { return this.options.timeZone } get dateRange() { return this.options.dateRange } get firstDayOfWeek() { return this.options.firstDayOfWeek } get viewStartDayHour() { return this.options.viewStartDayHour } get viewEndDayHour() { return this.options.viewEndDayHour } get endViewDate() { return this.options.endViewDate } get viewType() { return this.options.viewType } get isGroupedByDate() { return this.options.isGroupedByDate } get isVerticalOrientation() { return this.options.isVerticalGroupOrientation } get dataAccessors() { return this.options.dataAccessors } get isDateAppointment() { return !(0, _index.isDateAndTimeView)(this.viewType) && this.appointmentTakesAllDay } getIntervalDuration() { return this.appointmentTakesAllDay ? this.options.allDayIntervalDuration : this.options.intervalDuration } generate(appointmentAdapter) { const { isRecurrent: isRecurrent } = appointmentAdapter; const itemGroupIndices = this._getGroupIndices(this.rawAppointment); let appointmentList = this._createAppointments(appointmentAdapter, itemGroupIndices); appointmentList = this._getProcessedByAppointmentTimeZone(appointmentList, appointmentAdapter); if (this._canProcessNotNativeTimezoneDates(appointmentAdapter)) { appointmentList = this._getProcessedNotNativeTimezoneDates(appointmentList, appointmentAdapter) } let dateSettings = this._createGridAppointmentList(appointmentList, appointmentAdapter); const firstViewDates = this._getAppointmentsFirstViewDate(dateSettings); dateSettings = this._fillNormalizedStartDate(dateSettings, firstViewDates); dateSettings = this._cropAppointmentsByStartDayHour(dateSettings, firstViewDates); dateSettings = this._fillNormalizedEndDate(dateSettings, this.rawAppointment); if (this._needSeparateLongParts()) { dateSettings = this._separateLongParts(dateSettings, appointmentAdapter) } dateSettings = this.shiftSourceAppointmentDates(dateSettings); return { dateSettings: dateSettings, itemGroupIndices: itemGroupIndices, isRecurrent: isRecurrent } } shiftSourceAppointmentDates(dateSettings) { const { viewOffset: viewOffset } = this.options; return dateSettings.map((item => _extends({}, item, { source: _extends({}, item.source, { startDate: _date2.dateUtilsTs.addOffsets(item.source.startDate, [viewOffset]), endDate: _date2.dateUtilsTs.addOffsets(item.source.endDate, [viewOffset]) }) }))) } _getProcessedByAppointmentTimeZone(appointmentList, appointment) { const hasAppointmentTimeZone = !(0, _type.isEmptyObject)(appointment.startDateTimeZone) || !(0, _type.isEmptyObject)(appointment.endDateTimeZone); if (hasAppointmentTimeZone) { const appointmentOffsets = { startDate: this.timeZoneCalculator.getOffsets(appointment.startDate, appointment.startDateTimeZone), endDate: this.timeZoneCalculator.getOffsets(appointment.endDate, appointment.endDateTimeZone) }; appointmentList.forEach((a => { const sourceOffsets_startDate = this.timeZoneCalculator.getOffsets(a.startDate, appointment.startDateTimeZone), sourceOffsets_endDate = this.timeZoneCalculator.getOffsets(a.endDate, appointment.endDateTimeZone); const startDateOffsetDiff = appointmentOffsets.startDate.appointment - sourceOffsets_startDate.appointment; const endDateOffsetDiff = appointmentOffsets.endDate.appointment - sourceOffsets_endDate.appointment; if (sourceOffsets_startDate.appointment !== sourceOffsets_startDate.common) { a.startDate = new Date(a.startDate.getTime() + startDateOffsetDiff * toMs("hour")) } if (sourceOffsets_endDate.appointment !== sourceOffsets_endDate.common) { a.endDate = new Date(a.endDate.getTime() + endDateOffsetDiff * toMs("hour")) } })) } return appointmentList } _createAppointments(appointment, groupIndices) { let appointments = this._createRecurrenceAppointments(appointment, groupIndices); if (!appointment.isRecurrent && 0 === appointments.length) { appointments.push({ startDate: appointment.startDate, endDate: appointment.endDate }) } appointments = appointments.map((item => { var _item$endDate; const resultEndTime = null === (_item$endDate = item.endDate) || void 0 === _item$endDate ? void 0 : _item$endDate.getTime(); if (item.startDate.getTime() === resultEndTime) { item.endDate.setTime(resultEndTime + toMs("minute")) } return _extends({}, item, { exceptionDate: new Date(item.startDate) }) })); return appointments } _canProcessNotNativeTimezoneDates(appointment) { const isTimeZoneSet = !(0, _type.isEmptyObject)(this.timeZone); if (!isTimeZoneSet) { return false } if (!appointment.isRecurrent) { return false } return !_m_utils_time_zone.default.isEqualLocalTimeZone(this.timeZone, appointment.startDate) } _getDateOffsetDST(date) { const dateMinusHour = new Date(date); dateMinusHour.setHours(dateMinusHour.getHours() - 1); const dateCommonOffset = this.timeZoneCalculator.getOffsets(date).common; const dateMinusHourCommonOffset = this.timeZoneCalculator.getOffsets(dateMinusHour).common; return dateMinusHourCommonOffset - dateCommonOffset } _getProcessedNotNativeDateIfCrossDST(date, offset) { return offset < 0 && 0 !== this._getDateOffsetDST(date) ? 0 : offset } _getCommonOffset(date) { return this.timeZoneCalculator.getOffsets(date).common } _getProcessedNotNativeTimezoneDates(appointmentList, appointment) { return appointmentList.map((item => { let diffStartDateOffset = this._getCommonOffset(appointment.startDate) - this._getCommonOffset(item.startDate); let diffEndDateOffset = this._getCommonOffset(appointment.endDate) - this._getCommonOffset(item.endDate); if (0 === diffStartDateOffset && 0 === diffEndDateOffset) { return item } diffStartDateOffset = this._getProcessedNotNativeDateIfCrossDST(item.startDate, diffStartDateOffset); diffEndDateOffset = this._getProcessedNotNativeDateIfCrossDST(item.endDate, diffEndDateOffset); const newStartDate = new Date(item.startDate.getTime() + diffStartDateOffset * toMs("hour")); let newEndDate = new Date(item.endDate.getTime() + diffEndDateOffset * toMs("hour")); const testNewStartDate = this.timeZoneCalculator.createDate(newStartDate, "toGrid"); const testNewEndDate = this.timeZoneCalculator.createDate(newEndDate, "toGrid"); if (appointment.duration > testNewEndDate.getTime() - testNewStartDate.getTime()) { newEndDate = new Date(newStartDate.getTime() + appointment.duration) } return _extends({}, item, { startDate: newStartDate, endDate: newEndDate, exceptionDate: new Date(newStartDate) }) })) } _needSeparateLongParts() { return this.isVerticalOrientation ? this.isGroupedByDate : this.isGroupedByDate && this.appointmentTakesAllDay } normalizeEndDateByViewEnd(rawAppointment, endDate) { let result = new Date(endDate.getTime()); const isAllDay = (0, _index.isDateAndTimeView)(this.viewType) && this.appointmentTakesAllDay; if (!isAllDay) { const roundedEndViewDate = _date.default.roundToHour(this.endViewDate); if (result > roundedEndViewDate) { result = roundedEndViewDate } } const endDayHour = this.viewEndDayHour; const allDay = this.dataAccessors.get("allDay", rawAppointment); const currentViewEndTime = new Date(new Date(endDate.getTime()).setHours(endDayHour, 0, 0, 0)); if (result.getTime() > currentViewEndTime.getTime() || allDay && result.getHours() < endDayHour) { result = currentViewEndTime } return result } _fillNormalizedEndDate(dateSettings, rawAppointment) { return dateSettings.map((item => _extends({}, item, { normalizedEndDate: this.normalizeEndDateByViewEnd(rawAppointment, item.endDate) }))) } _separateLongParts(gridAppointmentList, appointmentAdapter) { let result = []; gridAppointmentList.forEach((gridAppointment => { const maxDate = new Date(this.dateRange[1]); const { startDate: startDate, normalizedEndDate: endDateOfPart } = gridAppointment; const longStartDateParts = _date.default.getDatesOfInterval(startDate, endDateOfPart, { milliseconds: this.getIntervalDuration() }); const list = longStartDateParts.filter((startDatePart => new Date(startDatePart) < maxDate)).map((date => { const endDate = new Date(new Date(date).setMilliseconds(appointmentAdapter.duration)); const normalizedEndDate = this.normalizeEndDateByViewEnd(this.rawAppointment, endDate); return { startDate: date, endDate: endDate, normalizedEndDate: normalizedEndDate, source: gridAppointment.source } })); result = result.concat(list) })); return result } _createGridAppointmentList(appointmentList, appointmentAdapter) { return appointmentList.map((source => { const offsetDifference = appointmentAdapter.startDate.getTimezoneOffset() - source.startDate.getTimezoneOffset(); if (0 !== offsetDifference && this._canProcessNotNativeTimezoneDates(appointmentAdapter)) { source.startDate = _date2.dateUtilsTs.addOffsets(source.startDate, [offsetDifference * toMs("minute")]); source.endDate = _date2.dateUtilsTs.addOffsets(source.endDate, [offsetDifference * toMs("minute")]); source.exceptionDate = new Date(source.startDate) } const duration = source.endDate.getTime() - source.startDate.getTime(); const startDate = this.timeZoneCalculator.createDate(source.startDate, "toGrid"); const endDate = _date2.dateUtilsTs.addOffsets(startDate, [duration]); return { startDate: startDate, endDate: endDate, allDay: appointmentAdapter.allDay || false, source: source } })) } _createExtremeRecurrenceDates(groupIndex) { let startViewDate = this.appointmentTakesAllDay ? _date.default.trimTime(this.dateRange[0]) : this.dateRange[0]; let endViewDateByEndDayHour = this.dateRange[1]; if (this.timeZone) { startViewDate = this.timeZoneCalculator.createDate(startViewDate, "fromGrid"); endViewDateByEndDayHour = this.timeZoneCalculator.createDate(endViewDateByEndDayHour, "fromGrid"); const daylightOffset = _m_utils_time_zone.default.getDaylightOffsetInMs(startViewDate, endViewDateByEndDayHour); if (daylightOffset) { endViewDateByEndDayHour = new Date(endViewDateByEndDayHour.getTime() + daylightOffset) } } return [startViewDate, endViewDateByEndDayHour] } _createRecurrenceOptions(appointment, groupIndex) { const { viewOffset: viewOffset } = this.options; const originalAppointmentStartDate = _date2.dateUtilsTs.addOffsets(appointment.startDate, [viewOffset]); const originalAppointmentEndDate = _date2.dateUtilsTs.addOffsets(appointment.endDate, [viewOffset]); const [minRecurrenceDate, maxRecurrenceDate] = this._createExtremeRecurrenceDates(groupIndex); const shiftedMinRecurrenceDate = _date2.dateUtilsTs.addOffsets(minRecurrenceDate, [viewOffset]); const shiftedMaxRecurrenceDate = _date2.dateUtilsTs.addOffsets(maxRecurrenceDate, [viewOffset]); return { rule: appointment.recurrenceRule, exception: appointment.recurrenceException, min: shiftedMinRecurrenceDate, max: shiftedMaxRecurrenceDate, firstDayOfWeek: this.firstDayOfWeek, start: originalAppointmentStartDate, end: originalAppointmentEndDate, appointmentTimezoneOffset: this.timeZoneCalculator.getOriginStartDateOffsetInMs(originalAppointmentStartDate, appointment.startDateTimeZone, true), getExceptionDateTimezoneOffsets: date => { const localMachineTimezoneOffset = -_m_utils_time_zone.default.getClientTimezoneOffset(date); const appointmentTimezoneOffset = this.timeZoneCalculator.getOriginStartDateOffsetInMs(date, appointment.startDateTimeZone, true); const offsetDST = this._getDateOffsetDST(date); const extraSummerTimeChangeOffset = offsetDST < 0 ? offsetDST * toMs("hour") : 0; return [localMachineTimezoneOffset, appointmentTimezoneOffset, extraSummerTimeChangeOffset] } } } _createRecurrenceAppointments(appointment, groupIndices) { const { duration: duration } = appointment; const { viewOffset: viewOffset } = this.options; const option = this._createRecurrenceOptions(appointment); const generatedStartDates = (0, _m_recurrence.getRecurrenceProcessor)().generateDates(option); return generatedStartDates.map((date => { const utcDate = _m_utils_time_zone.default.createUTCDateWithLocalOffset(date); utcDate.setTime(utcDate.getTime() + duration); const endDate = _m_utils_time_zone.default.createDateFromUTCWithLocalOffset(utcDate); return { startDate: new Date(date), endDate: endDate } })).map((_ref => { let { startDate: startDate, endDate: endDate } = _ref; return { startDate: _date2.dateUtilsTs.addOffsets(startDate, [-viewOffset]), endDate: _date2.dateUtilsTs.addOffsets(endDate, [-viewOffset]) } })) } _getAppointmentsFirstViewDate(appointments) { const { viewOffset: viewOffset } = this.options; return appointments.map((appointment => { const tableFirstDate = this._getAppointmentFirstViewDate(_extends({}, appointment, { startDate: _date2.dateUtilsTs.addOffsets(appointment.startDate, [viewOffset]), endDate: _date2.dateUtilsTs.addOffsets(appointment.endDate, [viewOffset]) })); if (!tableFirstDate) { return appointment.startDate } const firstDate = _date2.dateUtilsTs.addOffsets(tableFirstDate, [-viewOffset]); return firstDate > appointment.startDate ? firstDate : appointment.startDate })) } _fillNormalizedStartDate(appointments, firstViewDates, rawAppointment) { return appointments.map(((item, idx) => _extends({}, item, { startDate: this._getAppointmentResultDate({ appointment: item, rawAppointment: rawAppointment, startDate: new Date(item.startDate), startDayHour: this.viewStartDayHour, firstViewDate: firstViewDates[idx] }) }))) } _cropAppointmentsByStartDayHour(appointments, firstViewDates) { return appointments.filter(((appointment, idx) => { if (!firstViewDates[idx]) { return false } if (this.appointmentTakesAllDay) { return true } return appointment.endDate > appointment.startDate })) } _getAppointmentResultDate(options) { const { appointment: appointment, startDayHour: startDayHour, firstViewDate: firstViewDate } = options; let { startDate: startDate } = options; let resultDate; if (this.appointmentTakesAllDay) { resultDate = _date.default.normalizeDate(startDate, firstViewDate) } else { if (startDate < firstViewDate) { startDate = firstViewDate } resultDate = _date.default.normalizeDate(appointment.startDate, startDate) } return !this.isDateAppointment ? _date.default.roundDateByStartDayHour(resultDate, startDayHour) : resultDate } _getAppointmentFirstViewDate(appointment) { const groupIndex = appointment.source.groupIndex || 0; const { startDate: startDate, endDate: endDate } = appointment; if (this.isAllDayRowAppointment || appointment.allDay) { return this.viewDataProvider.findAllDayGroupCellStartDate(groupIndex) } return this.viewDataProvider.findGroupCellStartDate(groupIndex, startDate, endDate, this.isDateAppointment) } _getGroupIndices(rawAppointment) { const appointmentGroupValues = (0, _appointment_groups_utils.getAppointmentGroupValues)(rawAppointment, this.resourceManager.resources); return (0, _appointment_groups_utils.getAppointmentGroupIndex)(appointmentGroupValues, this.resourceManager.groupsLeafs) } } exports.DateGeneratorBaseStrategy = DateGeneratorBaseStrategy; class DateGeneratorVirtualStrategy extends DateGeneratorBaseStrategy { get groupCount() { return this.resourceManager.groupCount() } _createRecurrenceAppointments(appointment, groupIndices) { const { duration: duration } = appointment; const result = []; const validGroupIndices = this.groupCount ? groupIndices : [0]; validGroupIndices.forEach((groupIndex => { const option = this._createRecurrenceOptions(appointment, groupIndex); const generatedStartDates = (0, _m_recurrence.getRecurrenceProcessor)().generateDates(option); const recurrentInfo = generatedStartDates.map((date => { const startDate = new Date(date); const utcDate = _m_utils_time_zone.default.createUTCDateWithLocalOffset(date); utcDate.setTime(utcDate.getTime() + duration); const endDate = _m_utils_time_zone.default.createDateFromUTCWithLocalOffset(utcDate); return { startDate: startDate, endDate: endDate, groupIndex: groupIndex } })); result.push(...recurrentInfo) })); return result } _updateGroupIndices(appointments, groupIndices) { const result = []; groupIndices.forEach((groupIndex => { const groupStartDate = this.viewDataProvider.getGroupStartDate(groupIndex); if (groupStartDate) { appointments.forEach((appointment => { const appointmentCopy = (0, _extend.extend)({}, appointment); appointmentCopy.groupIndex = groupIndex; result.push(appointmentCopy) })) } })); return result } _getGroupIndices(rawAppointment) { var _groupIndices; let groupIndices = super._getGroupIndices(rawAppointment); const viewDataGroupIndices = this.viewDataProvider.getGroupIndices(); if (!(null !== (_groupIndices = groupIndices) && void 0 !== _groupIndices && _groupIndices.length)) { groupIndices = [0] } return groupIndices.filter((groupIndex => -1 !== viewDataGroupIndices.indexOf(groupIndex))) } _createAppointments(appointment, groupIndices) { const appointments = super._createAppointments(appointment, groupIndices); return !appointment.isRecurrent ? this._updateGroupIndices(appointments, groupIndices) : appointments } } exports.DateGeneratorVirtualStrategy = DateGeneratorVirtualStrategy; exports.AppointmentSettingsGenerator = class { constructor(options) { this.options = options; this.appointmentAdapter = new _appointment_adapter.AppointmentAdapter(this.rawAppointment, this.dataAccessors) } get rawAppointment() { return this.options.rawAppointment } get dataAccessors() { return this.options.dataAccessors } get timeZoneCalculator() { return this.options.timeZoneCalculator } get isAllDayRowAppointment() { return this.options.appointmentTakesAllDay && this.options.supportAllDayRow } get groups() { return this.options.groups } get dateSettingsStrategy() { const options = _extends({}, this.options, { isAllDayRowAppointment: this.isAllDayRowAppointment }); return this.options.isVirtualScrolling ? new DateGeneratorVirtualStrategy(options) : new DateGeneratorBaseStrategy(options) } create() { const { dateSettings: dateSettings, itemGroupIndices: itemGroupIndices, isRecurrent: isRecurrent } = this._generateDateSettings(); const cellPositions = this._calculateCellPositions(dateSettings, itemGroupIndices); const result = this._prepareAppointmentInfos(dateSettings, cellPositions, isRecurrent); return result } _generateDateSettings() { return this.dateSettingsStrategy.generate(this.appointmentAdapter) } _calculateCellPositions(dateSettings, itemGroupIndices) { const cellPositionCalculator = new _m_cell_position_calculator.CellPositionCalculator(_extends({}, this.options, { dateSettings: dateSettings })); return cellPositionCalculator.calculateCellPositions(itemGroupIndices, this.isAllDayRowAppointment, this.appointmentAdapter.isRecurrent) } _prepareAppointmentInfos(dateSettings, cellPositions, isRecurrent) { const infos = []; cellPositions.forEach((_ref2 => { let { coordinates: coordinates, dateSettingIndex: dateSettingIndex } = _ref2; const dateSetting = dateSettings[dateSettingIndex]; const dateText = this._getAppointmentDateText(dateSetting); const info = { appointment: dateSetting, sourceAppointment: dateSetting.source, dateText: dateText, isRecurrent: isRecurrent }; infos.push(_extends({}, coordinates, { info: info })) })); return infos } _getAppointmentDateText(sourceAppointment) { const { startDate: startDate, endDate: endDate, allDay: allDay } = sourceAppointment; return (0, _m_text_utils.createFormattedDateText)({ startDate: startDate, endDate: endDate, allDay: allDay, format: "TIME" }) } } }, 9680: /*!***********************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/scheduler/appointments/m_text_utils.js ***! \***********************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.getFormatType = exports.formatDates = exports.createFormattedDateText = void 0; var _date = _interopRequireDefault(__webpack_require__( /*! ../../../common/core/localization/date */ 38662)); var _date2 = _interopRequireDefault(__webpack_require__( /*! ../../../core/utils/date */ 41380)); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } exports.createFormattedDateText = options => { const { startDate: startDate, endDate: endDate, allDay: allDay, format: format } = options; const formatType = format || getFormatType(startDate, endDate, allDay); return formatDates(startDate, endDate, formatType) }; const getFormatType = (startDate, endDate, isAllDay, isDateAndTimeView) => { if (isAllDay) { return "DATE" } if (isDateAndTimeView && _date2.default.sameDate(startDate, endDate)) { return "TIME" } return "DATETIME" }; exports.getFormatType = getFormatType; const formatDates = (startDate, endDate, formatType) => { const isSameDate = startDate.getDate() === endDate.getDate(); switch (formatType) { case "DATETIME": return [_date.default.format(startDate, "monthandday"), " ", _date.default.format(startDate, "shorttime"), " - ", isSameDate ? "" : `${_date.default.format(endDate,"monthandday")} `, _date.default.format(endDate, "shorttime")].join(""); case "TIME": return `${_date.default.format(startDate,"shorttime")} - ${_date.default.format(endDate,"shorttime")}`; case "DATE": return `${_date.default.format(startDate,"monthandday")}${isSameDate?"":` - ${_date.default.format(endDate,"monthandday")}`}`; default: return } }; exports.formatDates = formatDates }, 91200: /*!*********************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/scheduler/appointments/m_view_model_generator.js ***! \*********************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.AppointmentViewModelGenerator = void 0; var _date = __webpack_require__( /*! ../../core/utils/date */ 55594); var _index = __webpack_require__( /*! ../../scheduler/r1/utils/index */ 34396); var _m_strategy_agenda = _interopRequireDefault(__webpack_require__( /*! ./rendering_strategies/m_strategy_agenda */ 28440)); var _m_strategy_horizontal = _interopRequireDefault(__webpack_require__( /*! ./rendering_strategies/m_strategy_horizontal */ 75064)); var _m_strategy_horizontal_month = _interopRequireDefault(__webpack_require__( /*! ./rendering_strategies/m_strategy_horizontal_month */ 2101)); var _m_strategy_horizontal_month_line = _interopRequireDefault(__webpack_require__( /*! ./rendering_strategies/m_strategy_horizontal_month_line */ 99198)); var _m_strategy_vertical = _interopRequireDefault(__webpack_require__( /*! ./rendering_strategies/m_strategy_vertical */ 1670)); var _m_strategy_week = _interopRequireDefault(__webpack_require__( /*! ./rendering_strategies/m_strategy_week */ 27488)); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } function _extends() { return _extends = Object.assign ? Object.assign.bind() : function(n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) { ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]) } } return n }, _extends.apply(null, arguments) } const RENDERING_STRATEGIES = { horizontal: _m_strategy_horizontal.default, horizontalMonth: _m_strategy_horizontal_month.default, horizontalMonthLine: _m_strategy_horizontal_month_line.default, vertical: _m_strategy_vertical.default, week: _m_strategy_week.default, agenda: _m_strategy_agenda.default }; exports.AppointmentViewModelGenerator = class { initRenderingStrategy(options) { const RenderingStrategy = RENDERING_STRATEGIES[options.appointmentRenderingStrategyName]; this.renderingStrategy = new RenderingStrategy(options) } getRenderingStrategy() { return this.renderingStrategy } generate(filteredItems, options) { const { viewOffset: viewOffset } = options; const appointments = filteredItems ? filteredItems.slice() : []; this.initRenderingStrategy(options); const renderingStrategy = this.getRenderingStrategy(); const positionMap = renderingStrategy.createTaskPositionMap(appointments); const shiftedViewModel = this.postProcess(appointments, positionMap); const viewModel = this.unshiftViewModelAppointmentsByViewOffset(shiftedViewModel, viewOffset); return { positionMap: positionMap, viewModel: viewModel } } postProcess(filteredItems, positionMap) { const renderingStrategy = this.getRenderingStrategy(); return filteredItems.map(((data, index) => { if (!renderingStrategy.keepAppointmentSettings()) { delete data.settings } const appointmentSettings = positionMap[index]; appointmentSettings.forEach((item => { item.direction = "vertical" === renderingStrategy.getDirection() && !item.allDay ? "vertical" : "horizontal" })); const item = { itemData: data, settings: appointmentSettings, needRepaint: true, needRemove: false }; return item })) } makeRenovatedViewModels(viewModel, supportAllDayRow, isVerticalGrouping) { const strategy = this.getRenderingStrategy(); const regularViewModels = []; const allDayViewModels = []; const compactOptions = []; const isAllDayPanel = supportAllDayRow && !isVerticalGrouping; viewModel.forEach((_ref => { let { itemData: itemData, settings: settings } = _ref; settings.forEach((options => { const item = this.prepareViewModel(options, strategy, itemData); if (options.isCompact) { compactOptions.push({ compactViewModel: options.virtual, appointmentViewModel: item }) } else if (options.allDay && isAllDayPanel) { allDayViewModels.push(item) } else { regularViewModels.push(item) } })) })); const compactViewModels = this.prepareCompactViewModels(compactOptions, supportAllDayRow); const result = _extends({ allDay: allDayViewModels, regular: regularViewModels }, compactViewModels); return result } prepareViewModel(options, strategy, itemData) { const geometry = strategy.getAppointmentGeometry(options); const viewModel = { key: (0, _index.getAppointmentKey)(geometry), appointment: itemData, geometry: _extends({}, geometry, { leftVirtualWidth: options.leftVirtualWidth, topVirtualHeight: options.topVirtualHeight }), info: _extends({}, options.info, { allDay: options.allDay, direction: options.direction, appointmentReduced: options.appointmentReduced, groupIndex: options.groupIndex }) }; return viewModel } getCompactViewModelFrame(compactViewModel) { return { isAllDay: !!compactViewModel.isAllDay, isCompact: compactViewModel.isCompact, groupIndex: compactViewModel.groupIndex, geometry: { left: compactViewModel.left, top: compactViewModel.top, width: compactViewModel.width, height: compactViewModel.height }, items: { colors: [], data: [], settings: [] } } } prepareCompactViewModels(compactOptions, supportAllDayRow) { const regularCompact = {}; const allDayCompact = {}; compactOptions.forEach((_ref2 => { let { compactViewModel: compactViewModel, appointmentViewModel: appointmentViewModel } = _ref2; const { index: index, isAllDay: isAllDay } = compactViewModel; const viewModel = isAllDay && supportAllDayRow ? allDayCompact : regularCompact; if (!viewModel[index]) { viewModel[index] = this.getCompactViewModelFrame(compactViewModel) } const { settings: settings, data: data, colors: colors } = viewModel[index].items; settings.push(appointmentViewModel); data.push(appointmentViewModel.appointment); colors.push(appointmentViewModel.info.resourceColor) })); const toArray = items => Object.keys(items).map((key => _extends({ key: key }, items[key]))); const allDayViewModels = toArray(allDayCompact); const regularViewModels = toArray(regularCompact); return { allDayCompact: allDayViewModels, regularCompact: regularViewModels } } unshiftViewModelAppointmentsByViewOffset(viewModel, viewOffset) { const processedAppointments = new Set; for (const model of viewModel) { for (const setting of model.settings ?? []) { var _setting$info; const appointment = null === setting || void 0 === setting || null === (_setting$info = setting.info) || void 0 === _setting$info ? void 0 : _setting$info.appointment; if (appointment && !processedAppointments.has(appointment)) { appointment.startDate = _date.dateUtilsTs.addOffsets(appointment.startDate, [viewOffset]); appointment.endDate = _date.dateUtilsTs.addOffsets(appointment.endDate, [viewOffset]); appointment.normalizedEndDate = _date.dateUtilsTs.addOffsets(appointment.normalizedEndDate, [viewOffset]); processedAppointments.add(appointment) } } } return viewModel } } }, 1987: /*!****************************************************************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/scheduler/appointments/rendering_strategies/m_appointments_positioning_strategy_adaptive.js ***! \****************************************************************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _m_appointments_positioning_strategy_base = (e = __webpack_require__( /*! ./m_appointments_positioning_strategy_base */ 50292), e && e.__esModule ? e : { default: e }); var e; class AdaptivePositioningStrategy extends _m_appointments_positioning_strategy_base.default { getDropDownAppointmentWidth(intervalCount, isAllDay) { return this.getDropDownButtonAdaptiveSize() } getDropDownButtonAdaptiveSize() { return 28 } getCollectorTopOffset(allDay) { const renderingStrategy = this._renderingStrategy; if (renderingStrategy.allDaySupported() && allDay) { return (renderingStrategy.allDayHeight - renderingStrategy.getDropDownButtonAdaptiveSize()) / 2 } return this._renderingStrategy.cellHeight - 40 } getCollectorLeftOffset() { const collectorWidth = this._renderingStrategy.getDropDownAppointmentWidth(); return (this._renderingStrategy.cellWidth - collectorWidth) / 2 } getAppointmentDefaultOffset() { return 35 } getDynamicAppointmentCountPerCell() { const renderingStrategy = this._renderingStrategy; if (renderingStrategy.allDaySupported()) { return { allDay: 0, simple: this._calculateDynamicAppointmentCountPerCell() || this._getAppointmentMinCount() } } return 0 } getDropDownAppointmentHeight() { return 28 } _getAppointmentMinCount() { return 0 } _getAppointmentDefaultWidth() { const renderingStrategy = this._renderingStrategy; if (renderingStrategy.allDaySupported()) { return 30 } return super._getAppointmentDefaultWidth() } _calculateDynamicAppointmentCountPerCell() { return Math.floor(this._renderingStrategy._getAppointmentMaxWidth() / this._renderingStrategy._getAppointmentDefaultWidth()) } } exports.default = AdaptivePositioningStrategy }, 50292: /*!************************************************************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/scheduler/appointments/rendering_strategies/m_appointments_positioning_strategy_base.js ***! \************************************************************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _type = __webpack_require__( /*! ../../../../core/utils/type */ 11528); exports.default = class { constructor(renderingStrategy) { this._renderingStrategy = renderingStrategy } getDropDownAppointmentWidth(intervalCount, isAllDay) { if (isAllDay || !(0, _type.isDefined)(isAllDay)) { return 75 * this._renderingStrategy.cellWidth / 100 } return 24 } getCollectorTopOffset(allDay) { return 3 } getCollectorLeftOffset() { return 3 } getAppointmentDefaultOffset() { if (this._renderingStrategy._isCompactTheme()) { return 22 } return this._renderingStrategy.appointmentOffset } getDynamicAppointmentCountPerCell() { const renderingStrategy = this._renderingStrategy; const { cellHeight: cellHeight } = renderingStrategy; const allDayCount = Math.floor((cellHeight - renderingStrategy._getAppointmentDefaultOffset()) / renderingStrategy._getAppointmentDefaultHeight()) || this._getAppointmentMinCount(); if (renderingStrategy.allDaySupported()) { return { allDay: "vertical" === renderingStrategy.groupOrientation ? allDayCount : this._renderingStrategy.appointmentCountPerCell, simple: this._calculateDynamicAppointmentCountPerCell() || this._getAppointmentMinCount() } } return allDayCount } getDropDownAppointmentHeight() { return } _getAppointmentMinCount() { return 1 } _calculateDynamicAppointmentCountPerCell() { return Math.floor(this._renderingStrategy._getAppointmentMaxWidth() / 50) } _getAppointmentDefaultWidth() { return 40 } } }, 28440: /*!*************************************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/scheduler/appointments/rendering_strategies/m_strategy_agenda.js ***! \*************************************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _date = _interopRequireDefault(__webpack_require__( /*! ../../../../core/utils/date */ 41380)); var _iterator = __webpack_require__( /*! ../../../../core/utils/iterator */ 21274); var _appointment_adapter = __webpack_require__( /*! ../../utils/appointment_adapter/appointment_adapter */ 36791); var _appointment_groups_utils = __webpack_require__( /*! ../../utils/resource_manager/appointment_groups_utils */ 11649); var _m_utils = __webpack_require__( /*! ../data_provider/m_utils */ 2807); var _m_strategy_base = _interopRequireDefault(__webpack_require__( /*! ./m_strategy_base */ 53137)); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } function _extends() { return _extends = Object.assign ? Object.assign.bind() : function(n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) { ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]) } } return n }, _extends.apply(null, arguments) } class AgendaRenderingStrategy extends _m_strategy_base.default { get instance() { return this.options.instance } get agendaDuration() { return this.options.agendaDuration } getAppointmentMinSize() {} getDeltaTime() {} keepAppointmentSettings() { return true } getAppointmentGeometry(geometry) { return geometry } groupAppointmentByResources(appointments) { const resourceManager = this.options.getResourceManager(); const grouped = (0, _appointment_groups_utils.groupAppointmentsByGroupLeafs)(resourceManager.resourceById, resourceManager.groupsLeafs, appointments); return grouped.map((group => group.map((item => _extends({}, item))))) } createTaskPositionMap(appointments) { let height; let appointmentsByResources; this.calculateRows(appointments, this.agendaDuration, this.currentDate); if (appointments.length) { height = this.instance.fire("getAgendaVerticalStepHeight"); appointmentsByResources = this.groupAppointmentByResources(appointments); let groupedAppts = []; appointmentsByResources.forEach((appts => { let additionalAppointments = []; let recurrentIndexes = []; appts.forEach(((appointment, index) => { const recurrenceBatch = this.instance.getAppointmentsInstance()._processRecurrenceAppointment(appointment, index); let appointmentBatch = null; if (!recurrenceBatch.indexes.length) { appointmentBatch = this.instance.getAppointmentsInstance()._processLongAppointment(appointment); additionalAppointments = additionalAppointments.concat(appointmentBatch.parts) } additionalAppointments = additionalAppointments.concat(recurrenceBatch.parts); recurrentIndexes = recurrentIndexes.concat(recurrenceBatch.indexes) })); this.instance.getAppointmentsInstance()._reduceRecurrenceAppointments(recurrentIndexes, appts); this.instance.getAppointmentsInstance()._combineAppointments(appts, additionalAppointments); groupedAppts = groupedAppts.concat(appts) })); Array.prototype.splice.apply(appointments, [0, appointments.length].concat(groupedAppts)) } const result = []; let sortedIndex = 0; appointments.forEach(((appt, index) => { result.push([{ height: height, width: "100%", sortedIndex: sortedIndex++, groupIndex: this._calculateGroupIndex(index, appointmentsByResources), agendaSettings: appt.settings }]); delete appt.settings })); return result } _calculateGroupIndex(apptIndex, appointmentsByResources) { let counter = 0; for (const i in appointmentsByResources) { const countApptInGroup = appointmentsByResources[i].length; if (apptIndex >= counter && apptIndex < counter + countApptInGroup) { return Number(i) } counter += countApptInGroup } return } _getDeltaWidth(args, initialSize) {} _getAppointmentMaxWidth() { return this.cellWidth } _needVerifyItemSize() { return false } _getAppointmentParts(geometry, settings) {} _reduceMultiWeekAppointment() {} calculateAppointmentHeight() { return 0 } calculateAppointmentWidth() { return 0 } isAppointmentGreaterThan(etalon, comparisonParameters) {} isAllDay() { return false } _sortCondition() {} _rowCondition(a, b) {} _columnCondition(a, b) {} _findIndexByKey(arr, iKey, jKey, iValue, jValue) {} _markAppointmentAsVirtual() {} getDropDownAppointmentWidth() {} getCollectorLeftOffset() {} getCollectorTopOffset() {} calculateRows(appointments, agendaDuration, currentDate) { this._rows = []; currentDate = _date.default.trimTime(new Date(currentDate)); const groupedAppointments = this.groupAppointmentByResources(appointments); (0, _iterator.each)(groupedAppointments, ((_, currentAppointments) => { const groupResult = []; const appts = { indexes: [], parts: [] }; if (!currentAppointments.length) { this._rows.push([]); return true }(0, _iterator.each)(currentAppointments, ((index, appointment) => { const result = this.instance.getAppointmentsInstance()._processRecurrenceAppointment(appointment, index, false); appts.parts = appts.parts.concat(result.parts); appts.indexes = appts.indexes.concat(result.indexes) })); this.instance.getAppointmentsInstance()._reduceRecurrenceAppointments(appts.indexes, currentAppointments); currentAppointments.push(...appts.parts); const appointmentCount = currentAppointments.length; for (let i = 0; i < agendaDuration; i++) { const day = new Date(currentDate); day.setMilliseconds(day.getMilliseconds() + 864e5 * i); if (void 0 === groupResult[i]) { groupResult[i] = 0 } for (let j = 0; j < appointmentCount; j++) { const appointmentData = currentAppointments[j].settings || currentAppointments[j]; const adapter = new _appointment_adapter.AppointmentAdapter(currentAppointments[j], this.dataAccessors); const appointmentIsLong = (0, _m_utils.getAppointmentTakesSeveralDays)(adapter); const appointmentIsRecurrence = this.dataAccessors.get("recurrenceRule", currentAppointments[j]); if (this.instance.fire("dayHasAppointment", day, appointmentData, true) || !appointmentIsRecurrence && appointmentIsLong && this.instance.fire("dayHasAppointment", day, currentAppointments[j], true)) { groupResult[i] += 1 } } } this._rows.push(groupResult) })); return this._rows } _iterateRow(row, obj, index) { for (let i = 0; i < row.length; i++) { obj.counter += row[i]; if (obj.counter >= index) { obj.indexInRow = i; break } } } getDateByIndex(index, rows, startViewDate) { const obj = { counter: 0, indexInRow: 0 }; index++; for (let i = 0; i < rows.length; i++) { this._iterateRow(rows[i], obj, index); if (obj.indexInRow) { break } } return new Date(new Date(startViewDate).setDate(startViewDate.getDate() + obj.indexInRow)) } getAppointmentDataCalculator() { return ($appointment, originalStartDate) => { const apptIndex = $appointment.index(); const startViewDate = this.instance.getStartViewDate(); const calculatedStartDate = this.getDateByIndex(apptIndex, this._rows, startViewDate); const wrappedOriginalStartDate = new Date(originalStartDate); return { startDate: new Date(calculatedStartDate.setHours(wrappedOriginalStartDate.getHours(), wrappedOriginalStartDate.getMinutes(), wrappedOriginalStartDate.getSeconds(), wrappedOriginalStartDate.getMilliseconds())) } } } } exports.default = AgendaRenderingStrategy }, 53137: /*!***********************************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/scheduler/appointments/rendering_strategies/m_strategy_base.js ***! \***********************************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _date = _interopRequireDefault(__webpack_require__( /*! ../../../../core/utils/date */ 41380)); var _extend = __webpack_require__( /*! ../../../../core/utils/extend */ 52576); var _type = __webpack_require__( /*! ../../../../core/utils/type */ 11528); var _themes = __webpack_require__( /*! ../../../../ui/themes */ 52071); var _date2 = __webpack_require__( /*! ../../../core/utils/date */ 55594); var _index = __webpack_require__( /*! ../../../scheduler/r1/utils/index */ 34396); var _m_utils_time_zone = _interopRequireDefault(__webpack_require__( /*! ../../m_utils_time_zone */ 18648)); var _appointment_adapter = __webpack_require__( /*! ../../utils/appointment_adapter/appointment_adapter */ 36791); var _m_settings_generator = __webpack_require__( /*! ../m_settings_generator */ 91658); var _m_appointments_positioning_strategy_adaptive = _interopRequireDefault(__webpack_require__( /*! ./m_appointments_positioning_strategy_adaptive */ 1987)); var _m_appointments_positioning_strategy_base = _interopRequireDefault(__webpack_require__( /*! ./m_appointments_positioning_strategy_base */ 50292)); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } function _extends() { return _extends = Object.assign ? Object.assign.bind() : function(n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) { ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]) } } return n }, _extends.apply(null, arguments) } const toMs = _date.default.dateToMilliseconds; exports.default = class { constructor(options) { this.options = options; this._initPositioningStrategy() } get isAdaptive() { return this.options.adaptivityEnabled } get rtlEnabled() { return this.options.rtlEnabled } get startDayHour() { return this.options.startDayHour } get endDayHour() { return this.options.endDayHour } get maxAppointmentsPerCell() { return this.options.maxAppointmentsPerCell } get cellWidth() { return this.options.cellWidth } get cellHeight() { return this.options.cellHeight } get allDayHeight() { return this.options.allDayHeight } get resizableStep() { return this.options.resizableStep } get isGroupedByDate() { return this.options.isGroupedByDate } get visibleDayDuration() { return this.options.visibleDayDuration } get viewStartDayHour() { return this.options.viewStartDayHour } get viewEndDayHour() { return this.options.viewEndDayHour } get cellDuration() { return this.options.cellDuration } get cellDurationInMinutes() { return this.options.cellDurationInMinutes } get leftVirtualCellCount() { return this.options.leftVirtualCellCount } get topVirtualCellCount() { return this.options.topVirtualCellCount } get positionHelper() { return this.options.positionHelper } get showAllDayPanel() { return this.options.showAllDayPanel } get isGroupedAllDayPanel() { return this.options.isGroupedAllDayPanel } get groupOrientation() { return this.options.groupOrientation } get rowCount() { return this.options.rowCount } get groupCount() { return this.options.groupCount } get currentDate() { return this.options.currentDate } get appointmentCountPerCell() { return this.options.appointmentCountPerCell } get appointmentOffset() { return this.options.appointmentOffset } get allowResizing() { return this.options.allowResizing } get allowAllDayResizing() { return this.options.allowAllDayResizing } get viewDataProvider() { return this.options.viewDataProvider } get dataAccessors() { return this.options.dataAccessors } get timeZoneCalculator() { return this.options.timeZoneCalculator } get intervalCount() { return this.options.intervalCount } get allDayPanelMode() { return this.options.allDayPanelMode } get isVirtualScrolling() { return this.options.isVirtualScrolling } _correctCollectorCoordinatesInAdaptive(coordinates, isAllDay) { coordinates.top += this.getCollectorTopOffset(isAllDay); coordinates.left += this.getCollectorLeftOffset() } _initPositioningStrategy() { this._positioningStrategy = this.isAdaptive ? new _m_appointments_positioning_strategy_adaptive.default(this) : new _m_appointments_positioning_strategy_base.default(this) } getPositioningStrategy() { return this._positioningStrategy } getAppointmentMinSize() { return 2 } keepAppointmentSettings() { return false } getDeltaTime(args, initialSize, appointment) {} getAppointmentGeometry(coordinates) { return coordinates } needCorrectAppointmentDates() { return true } getDirection() { return "horizontal" } createTaskPositionMap(items, skipSorting) { delete this._maxAppointmentCountPerCell; const length = null === items || void 0 === items ? void 0 : items.length; if (!length) { return } const map = []; for (let i = 0; i < length; i++) { let coordinates = this._getItemPosition(items[i]); if (coordinates.length && this.rtlEnabled) { coordinates = this._correctRtlCoordinates(coordinates) } coordinates.forEach((item => { item.leftVirtualCellCount = this.leftVirtualCellCount; item.topVirtualCellCount = this.topVirtualCellCount; item.leftVirtualWidth = this.leftVirtualCellCount * this.cellWidth; item.topVirtualHeight = this.topVirtualCellCount * this.cellHeight })); map.push(coordinates) } const positionArray = this._getSortedPositions(map); const resultPositions = this._getResultPositions(positionArray); return this._getExtendedPositionMap(map, resultPositions) } _getDeltaWidth(args, initialSize) { const intervalWidth = this.resizableStep || this.getAppointmentMinSize(); const initialWidth = initialSize.width; return Math.round((args.width - initialWidth) / intervalWidth) } _correctRtlCoordinates(coordinates) { const width = coordinates[0].width || this._getAppointmentMaxWidth(); coordinates.forEach((coordinate => { if (!coordinate.appointmentReduced) { coordinate.left -= width } })); return coordinates } _getAppointmentMaxWidth() { return this.cellWidth } _getItemPosition(initialAppointment) { const appointment = this.shiftAppointmentByViewOffset(initialAppointment); const position = this.generateAppointmentSettings(appointment); const allDay = this.isAllDay(appointment); let result = []; for (let j = 0; j < position.length; j++) { const height = this.calculateAppointmentHeight(appointment, position[j]); const width = this.calculateAppointmentWidth(appointment, position[j]); let resultWidth = width; let appointmentReduced = null; let multiWeekAppointmentParts = []; let initialRowIndex = position[j].rowIndex; let initialColumnIndex = position[j].columnIndex; if (this._needVerifyItemSize() || allDay) { const currentMaxAllowedPosition = position[j].hMax; if (this.isAppointmentGreaterThan(currentMaxAllowedPosition, { left: position[j].left, width: width })) { appointmentReduced = "head"; initialRowIndex = position[j].rowIndex; initialColumnIndex = position[j].columnIndex; resultWidth = this._reduceMultiWeekAppointment(width, { left: position[j].left, right: currentMaxAllowedPosition }); multiWeekAppointmentParts = this._getAppointmentParts({ sourceAppointmentWidth: width, reducedWidth: resultWidth, height: height }, position[j]); if (this.rtlEnabled) { position[j].left = currentMaxAllowedPosition } } }(0, _extend.extend)(position[j], { height: height, width: resultWidth, allDay: allDay, rowIndex: initialRowIndex, columnIndex: initialColumnIndex, appointmentReduced: appointmentReduced }); result = this._getAppointmentPartsPosition(multiWeekAppointmentParts, position[j], result) } return result } _getAppointmentPartsPosition(appointmentParts, position, result) { if (appointmentParts.length) { appointmentParts.unshift(position); appointmentParts.forEach(((part, index) => { part.partIndex = index; part.partTotalCount = appointmentParts.length })); result = result.concat(appointmentParts) } else { result.push(position) } return result } getAppointmentSettingsGenerator(rawAppointment) { return new _m_settings_generator.AppointmentSettingsGenerator(_extends({ rawAppointment: rawAppointment, appointmentTakesAllDay: this.isAppointmentTakesAllDay(rawAppointment), getPositionShiftCallback: this.getPositionShift.bind(this) }, this.options)) } generateAppointmentSettings(rawAppointment) { return this.getAppointmentSettingsGenerator(rawAppointment).create() } isAppointmentTakesAllDay(rawAppointment) { return (0, _index.isAppointmentTakesAllDay)(new _appointment_adapter.AppointmentAdapter(rawAppointment, this.dataAccessors), this.allDayPanelMode) } _getAppointmentParts(geometry, settings) { return [] } _getCompactAppointmentParts(appointmentWidth) { const cellWidth = this.cellWidth || this.getAppointmentMinSize(); return Math.round(appointmentWidth / cellWidth) } _reduceMultiWeekAppointment(sourceAppointmentWidth, bound) { if (this.rtlEnabled) { sourceAppointmentWidth = Math.floor(bound.left - bound.right) } else { sourceAppointmentWidth = bound.right - Math.floor(bound.left) } return sourceAppointmentWidth } calculateAppointmentHeight(appointment, position) { return 0 } calculateAppointmentWidth(appointment, position) { return 0 } isAppointmentGreaterThan(etalon, comparisonParameters) { let result = comparisonParameters.left + comparisonParameters.width - etalon; if (this.rtlEnabled) { result = etalon + comparisonParameters.width - comparisonParameters.left } return result > this.cellWidth / 2 } isAllDay(appointment) { return false } cropAppointmentWidth(width, cellWidth) { return this.isGroupedByDate ? cellWidth : width } _getSortedPositions(positionList, skipSorting) { const result = []; const round = value => Math.round(100 * value) / 100; const createItem = (rowIndex, columnIndex, top, left, bottom, right, position, allDay) => ({ i: rowIndex, j: columnIndex, top: round(top), left: round(left), bottom: round(bottom), right: round(right), cellPosition: position, allDay: allDay }); for (let rowIndex = 0, rowCount = positionList.length; rowIndex < rowCount; rowIndex++) { for (let columnIndex = 0, cellCount = positionList[rowIndex].length; columnIndex < cellCount; columnIndex++) { const { top: top, left: left, height: height, width: width, cellPosition: cellPosition, allDay: allDay } = positionList[rowIndex][columnIndex]; result.push(createItem(rowIndex, columnIndex, top, left, top + height, left + width, cellPosition, allDay)) } } return result.sort(((a, b) => this._sortCondition(a, b))) } _sortCondition(a, b) {} _getConditions(a, b) { const isSomeEdge = this._isSomeEdge(a, b); return { columnCondition: isSomeEdge || this._normalizeCondition(a.left, b.left), rowCondition: isSomeEdge || this._normalizeCondition(a.top, b.top), cellPositionCondition: isSomeEdge || this._normalizeCondition(a.cellPosition, b.cellPosition) } } _rowCondition(a, b) { const conditions = this._getConditions(a, b); return conditions.columnCondition || conditions.rowCondition } _columnCondition(a, b) { const conditions = this._getConditions(a, b); return conditions.rowCondition || conditions.columnCondition } _isSomeEdge(a, b) { return a.i === b.i && a.j === b.j } _normalizeCondition(first, second) { const result = first - second; return Math.abs(result) > 1 ? result : 0 } _isItemsCross(firstItem, secondItem) { const areItemsInTheSameTable = !!firstItem.allDay === !!secondItem.allDay; const areItemsAllDay = firstItem.allDay && secondItem.allDay; if (areItemsInTheSameTable) { const orientation = this._getOrientation(areItemsAllDay); return this._checkItemsCrossing(firstItem, secondItem, orientation) } return false } _checkItemsCrossing(firstItem, secondItem, orientation) { const firstItemSide1 = Math.floor(firstItem[orientation[0]]); const firstItemSide2 = Math.floor(firstItem[orientation[1]]); const secondItemSide1 = Math.ceil(secondItem[orientation[0]]); const secondItemSide2 = Math.ceil(secondItem[orientation[1]]); const isItemCross = Math.abs(firstItem[orientation[2]] - secondItem[orientation[2]]) <= 1; return isItemCross && (firstItemSide1 <= secondItemSide1 && firstItemSide2 > secondItemSide1 || firstItemSide1 < secondItemSide2 && firstItemSide2 >= secondItemSide2 || firstItemSide1 === secondItemSide1 && firstItemSide2 === secondItemSide2) } _getOrientation(isAllDay) { return isAllDay ? ["left", "right", "top"] : ["top", "bottom", "left"] } _getResultPositions(sortedArray) { const result = []; let i; let sortedIndex = 0; let currentItem; let indexes; let itemIndex; let maxIndexInStack = 0; let stack = {}; const findFreeIndex = (indexes, index) => { const isFind = indexes.some((item => item === index)); if (isFind) { return findFreeIndex(indexes, ++index) } return index }; const createItem = (currentItem, index) => { const currentIndex = index || 0; const skipSortIndex = this._skipSortedIndex(currentIndex); if (skipSortIndex) { stack.shouldShiftAfterSkip = true } return { index: currentIndex, i: currentItem.i, j: currentItem.j, left: currentItem.left, right: currentItem.right, top: currentItem.top, bottom: currentItem.bottom, allDay: currentItem.allDay, sortedIndex: skipSortIndex ? stack.startSortedIndex : sortedIndex++ } }; const startNewStack = currentItem => { stack.items = [createItem(currentItem)]; stack.left = currentItem.left; stack.right = currentItem.right; stack.top = currentItem.top; stack.bottom = currentItem.bottom; stack.allDay = currentItem.allDay; stack.startSortedIndex = stack.items[0].sortedIndex }; const pushItemsInResult = stack => { stack.items.forEach((item => { result.push({ index: item.index, count: maxIndexInStack + 1, i: item.i, j: item.j, sortedIndex: stack.shouldShiftAfterSkip && !this._skipSortedIndex(item.index) ? item.sortedIndex + 1 : item.sortedIndex }) })); if (stack.shouldShiftAfterSkip) { sortedIndex += 1 } }; for (i = 0; i < sortedArray.length; i++) { currentItem = sortedArray[i]; indexes = []; if (!stack.items) { startNewStack(currentItem) } else if (this._isItemsCross(stack, currentItem)) { stack.items.forEach((item => { if (this._isItemsCross(item, currentItem)) { indexes.push(item.index) } })); itemIndex = indexes.length ? findFreeIndex(indexes, 0) : 0; stack.items.push(createItem(currentItem, itemIndex)); maxIndexInStack = Math.max(itemIndex, maxIndexInStack); stack.left = Math.min(stack.left, currentItem.left); stack.right = Math.max(stack.right, currentItem.right); stack.top = Math.min(stack.top, currentItem.top); stack.bottom = Math.max(stack.bottom, currentItem.bottom); stack.allDay = currentItem.allDay } else { pushItemsInResult(stack); stack = {}; startNewStack(currentItem); maxIndexInStack = 0 } } if (stack.items) { pushItemsInResult(stack) } return result.sort(((a, b) => { const columnCondition = a.j - b.j; const rowCondition = a.i - b.i; return rowCondition || columnCondition })) } _skipSortedIndex(index) { return index > this._getMaxAppointmentCountPerCell() - 1 } _findIndexByKey(arr, iKey, jKey, iValue, jValue) { let result = 0; for (let i = 0, len = arr.length; i < len; i++) { if (arr[i][iKey] === iValue && arr[i][jKey] === jValue) { result = i; break } } return result } _getExtendedPositionMap(map, positions) { let positionCounter = 0; const result = []; for (let i = 0, mapLength = map.length; i < mapLength; i++) { const resultString = []; for (let j = 0, itemLength = map[i].length; j < itemLength; j++) { map[i][j].index = positions[positionCounter].index; map[i][j].sortedIndex = positions[positionCounter].sortedIndex; map[i][j].count = positions[positionCounter++].count; resultString.push(map[i][j]); this._checkLongCompactAppointment(map[i][j], resultString) } result.push(resultString) } return result } _checkLongCompactAppointment(item, result) { this._splitLongCompactAppointment(item, result); return result } _splitLongCompactAppointment(item, result) { const appointmentCountPerCell = this._getMaxAppointmentCountPerCellByType(item.allDay); let compactCount = 0; if (void 0 !== appointmentCountPerCell && item.index > appointmentCountPerCell - 1) { item.isCompact = true; compactCount = this._getCompactAppointmentParts(item.width); for (let k = 1; k < compactCount; k++) { const compactPart = (0, _extend.extend)(true, {}, item); compactPart.left = this._getCompactLeftCoordinate(item.left, k); compactPart.columnIndex += k; compactPart.sortedIndex = null; result.push(compactPart) } } return result } _adjustDurationByDaylightDiff(duration, startDate, endDate) { const { viewOffset: viewOffset } = this.options; const originalStartDate = _date2.dateUtilsTs.addOffsets(startDate, [viewOffset]); const originalEndDate = _date2.dateUtilsTs.addOffsets(endDate, [viewOffset]); const daylightDiff = _m_utils_time_zone.default.getDaylightOffset(originalStartDate, originalEndDate); const correctedDuration = this._needAdjustDuration(daylightDiff) ? this._calculateDurationByDaylightDiff(duration, daylightDiff) : duration; return correctedDuration <= Math.abs(daylightDiff) ? duration : correctedDuration } _needAdjustDuration(diff) { return 0 !== diff } _calculateDurationByDaylightDiff(duration, diff) { return duration + diff * toMs("minute") } _getCollectorLeftOffset(isAllDay) { if (isAllDay || !this.isApplyCompactAppointmentOffset()) { return 0 } const dropDownButtonWidth = this.getDropDownAppointmentWidth(this.intervalCount, isAllDay); const rightOffset = this._isCompactTheme() ? 1 : 5; return this.cellWidth - dropDownButtonWidth - rightOffset } _markAppointmentAsVirtual(coordinates) { let isAllDay = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : false; const countFullWidthAppointmentInCell = this._getMaxAppointmentCountPerCellByType(isAllDay); if (coordinates.count - countFullWidthAppointmentInCell > 0) { const { top: top, left: left } = coordinates; const compactRender = this.isAdaptive || !isAllDay && this.supportCompactDropDownAppointments(); coordinates.virtual = { left: left + this._getCollectorLeftOffset(isAllDay), top: top, width: this.getDropDownAppointmentWidth(this.intervalCount, isAllDay), height: this.getDropDownAppointmentHeight(), index: this._generateAppointmentCollectorIndex(coordinates, isAllDay), isAllDay: isAllDay, groupIndex: coordinates.groupIndex, isCompact: compactRender } } } isApplyCompactAppointmentOffset() { return this.supportCompactDropDownAppointments() } supportCompactDropDownAppointments() { return true } _generateAppointmentCollectorIndex(_ref, isAllDay) { let { groupIndex: groupIndex, rowIndex: rowIndex, columnIndex: columnIndex } = _ref; return `${groupIndex}-${rowIndex}-${columnIndex}-${isAllDay}` } _getMaxAppointmentCountPerCellByType(isAllDay) { const appointmentCountPerCell = this._getMaxAppointmentCountPerCell(); if ((0, _type.isObject)(appointmentCountPerCell)) { return isAllDay ? appointmentCountPerCell.allDay : appointmentCountPerCell.simple } return appointmentCountPerCell } getDropDownAppointmentWidth(intervalCount, isAllDay) { return this.getPositioningStrategy().getDropDownAppointmentWidth(intervalCount, isAllDay) } getDropDownAppointmentHeight() { return this.getPositioningStrategy().getDropDownAppointmentHeight() } getDropDownButtonAdaptiveSize() { return 28 } getCollectorTopOffset(allDay) { return this.getPositioningStrategy().getCollectorTopOffset(allDay) } getCollectorLeftOffset() { return this.getPositioningStrategy().getCollectorLeftOffset() } getAppointmentDataCalculator() {} getVerticalAppointmentHeight(cellHeight, currentAppointmentCountInCell, maxAppointmentsPerCell) { let resultMaxAppointmentsPerCell = maxAppointmentsPerCell; if ((0, _type.isNumeric)(this.maxAppointmentsPerCell)) { const dynamicAppointmentCountPerCell = this._getDynamicAppointmentCountPerCell(); const maxAppointmentCountDisplayedInCell = dynamicAppointmentCountPerCell.allDay || dynamicAppointmentCountPerCell; const maxAppointmentsCount = Math.max(currentAppointmentCountInCell, maxAppointmentCountDisplayedInCell); resultMaxAppointmentsPerCell = Math.min(maxAppointmentsCount, maxAppointmentsPerCell) } return cellHeight / resultMaxAppointmentsPerCell } _customizeCoordinates(coordinates, cellHeight, appointmentCountPerCell, topOffset, isAllDay) { const { index: index, count: count } = coordinates; const appointmentHeight = this.getVerticalAppointmentHeight(cellHeight, count, appointmentCountPerCell); const appointmentTop = coordinates.top + index * appointmentHeight; const top = appointmentTop + topOffset; const { width: width } = coordinates; const { left: left } = coordinates; if (coordinates.isCompact) { this.isAdaptive && this._correctCollectorCoordinatesInAdaptive(coordinates, isAllDay); this._markAppointmentAsVirtual(coordinates, isAllDay) } return { height: appointmentHeight, width: width, top: top, left: left, empty: this._isAppointmentEmpty(cellHeight, width) } } _isAppointmentEmpty(height, width) { return height < this._getAppointmentMinHeight() || width < this._getAppointmentMinWidth() } _calculateGeometryConfig(coordinates) { const overlappingMode = this.maxAppointmentsPerCell; const offsets = this._getOffsets(); const appointmentDefaultOffset = this._getAppointmentDefaultOffset(); let appointmentCountPerCell = this._getAppointmentCount(overlappingMode, coordinates); let ratio = this._getDefaultRatio(coordinates, appointmentCountPerCell); let maxHeight = this._getMaxHeight(); if (!(0, _type.isNumeric)(appointmentCountPerCell)) { appointmentCountPerCell = coordinates.count; ratio = (maxHeight - offsets.unlimited) / maxHeight } let topOffset = (1 - ratio) * maxHeight; if ("auto" === overlappingMode || (0, _type.isNumeric)(overlappingMode)) { ratio = 1; maxHeight -= appointmentDefaultOffset; topOffset = appointmentDefaultOffset } return { height: ratio * maxHeight, appointmentCountPerCell: appointmentCountPerCell, offset: topOffset } } _getAppointmentCount(overlappingMode, coordinates) {} _getDefaultRatio(coordinates, appointmentCountPerCell) {} _getOffsets() {} _getMaxHeight() {} _needVerifyItemSize() { return false } _getMaxAppointmentCountPerCell() { if (!this._maxAppointmentCountPerCell) { const overlappingMode = this.maxAppointmentsPerCell; let appointmentCountPerCell; if ((0, _type.isNumeric)(overlappingMode)) { appointmentCountPerCell = overlappingMode } if ("auto" === overlappingMode) { appointmentCountPerCell = this._getDynamicAppointmentCountPerCell() } if ("unlimited" === overlappingMode) { appointmentCountPerCell = void 0 } this._maxAppointmentCountPerCell = appointmentCountPerCell } return this._maxAppointmentCountPerCell } _getDynamicAppointmentCountPerCell() { return this.getPositioningStrategy().getDynamicAppointmentCountPerCell() } allDaySupported() { return false } _isCompactTheme() { return "compact" === ((0, _themes.current)() || "").split(".").pop() } _getAppointmentDefaultOffset() { return this.getPositioningStrategy().getAppointmentDefaultOffset() } _getAppointmentDefaultHeight() { return this._getAppointmentHeightByTheme() } _getAppointmentMinHeight() { return this._getAppointmentDefaultHeight() } _getAppointmentHeightByTheme() { return this._isCompactTheme() ? 18 : 20 } _getAppointmentDefaultWidth() { return this.getPositioningStrategy()._getAppointmentDefaultWidth() } _getAppointmentMinWidth() { return this._getAppointmentDefaultWidth() } _needVerticalGroupBounds(allDay) { return false } _needHorizontalGroupBounds() { return false } getAppointmentDurationInMs(apptStartDate, apptEndDate, allDay) { if (allDay) { const appointmentDuration = apptEndDate.getTime() - apptStartDate.getTime(); const ceilQuantityOfDays = Math.ceil(appointmentDuration / toMs("day")); return ceilQuantityOfDays * this.visibleDayDuration } const msInHour = toMs("hour"); const trimmedStartDate = _date.default.trimTime(apptStartDate); const trimmedEndDate = _date.default.trimTime(apptEndDate); const deltaDate = trimmedEndDate - trimmedStartDate; const quantityOfDays = deltaDate / toMs("day") + 1; const dayVisibleHours = this.endDayHour - this.startDayHour; const appointmentDayHours = dayVisibleHours * quantityOfDays; const startHours = (apptStartDate - trimmedStartDate) / msInHour; const apptStartDelta = Math.max(0, startHours - this.startDayHour); const endHours = Math.max(0, (apptEndDate - trimmedEndDate) / msInHour - this.startDayHour); const apptEndDelta = Math.max(0, dayVisibleHours - endHours); const result = (appointmentDayHours - (apptStartDelta + apptEndDelta)) * msInHour; return result } getPositionShift(timeShift, isAllDay) { return { top: timeShift * this.cellHeight, left: 0, cellPosition: 0 } } shiftAppointmentByViewOffset(appointment) { const { viewOffset: viewOffset } = this.options; const startDateField = this.dataAccessors.expr.startDateExpr; const endDateField = this.dataAccessors.expr.endDateExpr; let startDate = this.dataAccessors.get("startDate", appointment); startDate = _date2.dateUtilsTs.addOffsets(startDate, [-viewOffset]); let endDate = this.dataAccessors.get("endDate", appointment); endDate = _date2.dateUtilsTs.addOffsets(endDate, [-viewOffset]); return _extends({}, appointment, { [startDateField]: startDate, [endDateField]: endDate }) } } }, 75064: /*!*****************************************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/scheduler/appointments/rendering_strategies/m_strategy_horizontal.js ***! \*****************************************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _date = _interopRequireDefault(__webpack_require__( /*! ../../../../core/utils/date */ 41380)); var _index = __webpack_require__( /*! ../../../scheduler/r1/utils/index */ 34396); var _m_strategy_base = _interopRequireDefault(__webpack_require__( /*! ./m_strategy_base */ 53137)); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } const toMs = _date.default.dateToMilliseconds; class HorizontalRenderingStrategy extends _m_strategy_base.default { _needVerifyItemSize() { return true } calculateAppointmentWidth(appointment, position) { const cellWidth = this.cellWidth || this.getAppointmentMinSize(); const allDay = this.dataAccessors.get("allDay", appointment); const { startDate: startDate, endDate: endDate, normalizedEndDate: normalizedEndDate } = position.info.appointment; let duration = this.getAppointmentDurationInMs(startDate, normalizedEndDate, allDay); duration = this._adjustDurationByDaylightDiff(duration, startDate, normalizedEndDate); const cellDuration = this.cellDurationInMinutes * toMs("minute"); const skippedHours = (0, _index.getSkippedHoursInRange)(startDate, endDate, appointment.allDay, this.viewDataProvider); const durationInCells = (duration - skippedHours * toMs("hour")) / cellDuration; const width = this.cropAppointmentWidth(durationInCells * cellWidth, cellWidth); return width } _needAdjustDuration(diff) { return diff < 0 } getAppointmentGeometry(coordinates) { const result = this._customizeAppointmentGeometry(coordinates); return super.getAppointmentGeometry(result) } _customizeAppointmentGeometry(coordinates) { const config = this._calculateGeometryConfig(coordinates); return this._customizeCoordinates(coordinates, config.height, config.appointmentCountPerCell, config.offset) } _getOffsets() { return { unlimited: 0, auto: 0 } } _getCompactLeftCoordinate(itemLeft, index) { const cellWidth = this.cellWidth || this.getAppointmentMinSize(); return itemLeft + cellWidth * index } _getMaxHeight() { return this.cellHeight || this.getAppointmentMinSize() } _getAppointmentCount(overlappingMode, coordinates) { return this._getMaxAppointmentCountPerCellByType(false) } _getAppointmentDefaultHeight() { return 60 } _getAppointmentMinHeight() { return 35 } _sortCondition(a, b) { return this._columnCondition(a, b) } _getOrientation() { return ["left", "right", "top"] } getDropDownAppointmentWidth(intervalCount, isAllDay) { return this.cellWidth - 4 } getDeltaTime(args, initialSize) { let deltaTime = 0; const deltaWidth = args.width - initialSize.width; deltaTime = toMs("minute") * Math.round(deltaWidth / this.cellWidth * this.cellDurationInMinutes); return deltaTime } isAllDay(appointmentData) { return this.dataAccessors.get("allDay", appointmentData) } _isItemsCross(firstItem, secondItem) { const orientation = this._getOrientation(); return this._checkItemsCrossing(firstItem, secondItem, orientation) } getPositionShift(timeShift) { const positionShift = super.getPositionShift(timeShift); let left = this.cellWidth * timeShift; if (this.rtlEnabled) { left *= -1 } left += positionShift.left; return { top: 0, left: left, cellPosition: left } } supportCompactDropDownAppointments() { return false } } exports.default = HorizontalRenderingStrategy }, 2101: /*!***********************************************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/scheduler/appointments/rendering_strategies/m_strategy_horizontal_month.js ***! \***********************************************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _date = _interopRequireDefault(__webpack_require__( /*! ../../../../core/utils/date */ 41380)); var _m_position_helper = __webpack_require__( /*! ../../workspaces/helpers/m_position_helper */ 39979); var _m_strategy_horizontal_month_line = _interopRequireDefault(__webpack_require__( /*! ./m_strategy_horizontal_month_line */ 99198)); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } function _extends() { return _extends = Object.assign ? Object.assign.bind() : function(n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) { ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]) } } return n }, _extends.apply(null, arguments) } const toMs = _date.default.dateToMilliseconds; class HorizontalMonthRenderingStrategy extends _m_strategy_horizontal_month_line.default { get endViewDate() { return this.options.endViewDate } get adaptivityEnabled() { return this.options.adaptivityEnabled } get DOMMetaData() { return this.options.DOMMetaData } _getLeftPosition(settings) { const fullWeekAppointmentWidth = this.getGroupWidth(settings.groupIndex); return this._calculateMultiWeekAppointmentLeftOffset(settings.hMax, fullWeekAppointmentWidth) } _getChunkCount(fullChunksWidth, firstChunkWidth, weekWidth, settings) { const { groupIndex: groupIndex, info: { appointment: { startDate: startDate } } } = settings; const rawFullChunksWidth = fullChunksWidth - firstChunkWidth + weekWidth; const allChunksCount = Math.ceil(rawFullChunksWidth / weekWidth); const viewRowIndex = this._tryGetRowIndexInView(startDate); if (void 0 !== viewRowIndex) { const viewChunksCount = this.viewDataProvider.getRowCountInGroup(groupIndex); const allowedChunksCount = viewChunksCount - viewRowIndex; return allChunksCount <= allowedChunksCount ? allChunksCount : allowedChunksCount } return allChunksCount } _tryGetRowIndexInView(positionStartDate) { var _this$options$dataRan; const columnsCount = this.viewDataProvider.getColumnsCount(); if ((null === (_this$options$dataRan = this.options.dataRange) || void 0 === _this$options$dataRan ? void 0 : _this$options$dataRan.length) < 1 || !columnsCount) { return } const [startViewDate] = this.options.dateRange; const dayDurationMs = toMs("day"); const timeFromStart = positionStartDate.getTime() - startViewDate.getTime(); return Math.floor(timeFromStart / dayDurationMs / columnsCount) } _getChunkWidths(geometry, settings, weekWidth) { const firstChunkWidth = geometry.reducedWidth; const fullChunksWidth = Math.floor(geometry.sourceAppointmentWidth); const widthWithoutFirstChunk = fullChunksWidth - firstChunkWidth; return [firstChunkWidth, fullChunksWidth, widthWithoutFirstChunk] } _getTailChunkSettings(withoutFirstChunkWidth, weekWidth, leftPosition) { const tailChunkWidth = withoutFirstChunkWidth % weekWidth || weekWidth; const rtlPosition = leftPosition + (weekWidth - tailChunkWidth); const tailChunkLeftPosition = this.rtlEnabled ? rtlPosition : leftPosition; return [tailChunkWidth, tailChunkLeftPosition] } _getAppointmentParts(geometry, settings) { const result = []; const weekWidth = Math.round(this.getGroupWidth(settings.groupIndex)); const [firstChunkWidth, fullChunksWidth, withoutFirstChunkWidth] = this._getChunkWidths(geometry, settings, weekWidth); const leftPosition = this._getLeftPosition(settings); const { endDate: endDate } = settings.info.appointment; const hasTailChunk = this.endViewDate > endDate; const chunkCount = this._getChunkCount(fullChunksWidth, firstChunkWidth, weekWidth, settings); const [tailChunkWidth, tailChunkLeftPosition] = this._getTailChunkSettings(withoutFirstChunkWidth, weekWidth, leftPosition); for (let chunkIndex = 1; chunkIndex < chunkCount; chunkIndex++) { const topPosition = settings.top + this.cellHeight * chunkIndex; const isTailChunk = hasTailChunk && chunkIndex === chunkCount - 1; result.push(_extends({}, settings, { top: topPosition, left: isTailChunk ? tailChunkLeftPosition : leftPosition, height: geometry.height, width: isTailChunk ? tailChunkWidth : weekWidth, appointmentReduced: isTailChunk ? "tail" : "body", rowIndex: ++settings.rowIndex, columnIndex: 0 })) } return result } _calculateMultiWeekAppointmentLeftOffset(max, width) { return this.rtlEnabled ? max : max - width } getGroupWidth(groupIndex) { return (0, _m_position_helper.getGroupWidth)(groupIndex, this.viewDataProvider, { intervalCount: this.options.intervalCount, currentDate: this.options.currentDate, viewType: this.options.viewType, hoursInterval: this.options.hoursInterval, startDayHour: this.options.startDayHour, endDayHour: this.options.endDayHour, isVirtualScrolling: this.isVirtualScrolling, rtlEnabled: this.rtlEnabled, DOMMetaData: this.DOMMetaData }) } _getAppointmentDefaultHeight() { return this._getAppointmentHeightByTheme() } _getAppointmentMinHeight() { return this._getAppointmentDefaultHeight() } createTaskPositionMap(items) { return super.createTaskPositionMap(items, true) } _getSortedPositions(map) { return super._getSortedPositions(map, true) } _getDefaultRatio() { return .6 } _getOffsets() { return { unlimited: 26, auto: 30 } } getDropDownAppointmentWidth(intervalCount, isAllDay) { if (this.adaptivityEnabled) { return this.getDropDownButtonAdaptiveSize() } const offset = intervalCount > 1 ? 60 : 36; return this.cellWidth - offset } needCorrectAppointmentDates() { return false } _needVerticalGroupBounds() { return false } _needHorizontalGroupBounds() { return true } } exports.default = HorizontalMonthRenderingStrategy }, 99198: /*!****************************************************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/scheduler/appointments/rendering_strategies/m_strategy_horizontal_month_line.js ***! \****************************************************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _query = _interopRequireDefault(__webpack_require__( /*! ../../../../common/data/query */ 30771)); var _date = _interopRequireDefault(__webpack_require__( /*! ../../../../core/utils/date */ 41380)); var _m_utils = __webpack_require__( /*! ../data_provider/m_utils */ 2807); var _m_strategy_horizontal = _interopRequireDefault(__webpack_require__( /*! ./m_strategy_horizontal */ 75064)); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } class HorizontalMonthLineRenderingStrategy extends _m_strategy_horizontal.default { calculateAppointmentWidth(_, position) { const { startDate: startDateWithTime, normalizedEndDate: normalizedEndDate } = position.info.appointment; const startDate = _date.default.trimTime(startDateWithTime); const cellWidth = this.cellWidth || this.getAppointmentMinSize(); const duration = Math.ceil(this._getDurationInDays(startDate, normalizedEndDate)); let width = this.cropAppointmentWidth(duration * cellWidth, cellWidth); if (this.isVirtualScrolling) { const skippedDays = this.viewDataProvider.getSkippedDaysCount(position.groupIndex, startDate, normalizedEndDate, duration); width -= skippedDays * cellWidth } return width } _columnCondition(a, b) { const conditions = this._getConditions(a, b); return conditions.rowCondition || conditions.columnCondition || conditions.cellPositionCondition } _getDurationInDays(startDate, endDate) { const adjustedDuration = this._adjustDurationByDaylightDiff(endDate.getTime() - startDate.getTime(), startDate, endDate); return adjustedDuration / _date.default.dateToMilliseconds("day") || 1 } getDeltaTime(args, initialSize) { return 864e5 * this._getDeltaWidth(args, initialSize) } isAllDay() { return false } createTaskPositionMap(items, skipSorting) { if (!skipSorting) { (0, _m_utils.sortAppointmentsByStartDate)(items, this.dataAccessors) } return super.createTaskPositionMap(items) } _getSortedPositions(map, skipSorting) { let result = super._getSortedPositions(map); if (!skipSorting) { result = (0, _query.default)(result).sortBy("top").thenBy("left").thenBy("cellPosition").thenBy("i").toArray() } return result } needCorrectAppointmentDates() { return false } getPositionShift(timeShift) { return { top: 0, left: 0, cellPosition: timeShift * this.cellWidth } } } exports.default = HorizontalMonthLineRenderingStrategy }, 1670: /*!***************************************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/scheduler/appointments/rendering_strategies/m_strategy_vertical.js ***! \***************************************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _date = _interopRequireDefault(__webpack_require__( /*! ../../../../core/utils/date */ 41380)); var _extend = __webpack_require__( /*! ../../../../core/utils/extend */ 52576); var _math = __webpack_require__( /*! ../../../../core/utils/math */ 50254); var _type = __webpack_require__( /*! ../../../../core/utils/type */ 11528); var _index = __webpack_require__( /*! ../../../scheduler/r1/utils/index */ 34396); var _m_utils_time_zone = _interopRequireDefault(__webpack_require__( /*! ../../m_utils_time_zone */ 18648)); var _appointment_adapter = __webpack_require__( /*! ../../utils/appointment_adapter/appointment_adapter */ 36791); var _m_strategy_base = _interopRequireDefault(__webpack_require__( /*! ./m_strategy_base */ 53137)); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } function _extends() { return _extends = Object.assign ? Object.assign.bind() : function(n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) { ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]) } } return n }, _extends.apply(null, arguments) } const toMs = _date.default.dateToMilliseconds; class VerticalRenderingStrategy extends _m_strategy_base.default { getDeltaTime(args, initialSize, appointment) { let deltaTime = 0; if (this.isAllDay(appointment)) { deltaTime = this._getDeltaWidth(args, initialSize) * toMs("day") } else { const deltaHeight = args.height - initialSize.height; deltaTime = toMs("minute") * Math.round(deltaHeight / this.cellHeight * this.cellDurationInMinutes) } return deltaTime } _correctCollectorCoordinatesInAdaptive(coordinates, isAllDay) { if (isAllDay) { super._correctCollectorCoordinatesInAdaptive(coordinates, isAllDay) } else if (0 === this._getMaxAppointmentCountPerCellByType()) { const { cellHeight: cellHeight } = this; const { cellWidth: cellWidth } = this; coordinates.top += (cellHeight - this.getDropDownButtonAdaptiveSize()) / 2; coordinates.left += (cellWidth - this.getDropDownButtonAdaptiveSize()) / 2 } } getAppointmentGeometry(coordinates) { let geometry = null; if (coordinates.allDay) { geometry = this._getAllDayAppointmentGeometry(coordinates) } else { geometry = this.isAdaptive && coordinates.isCompact ? this._getAdaptiveGeometry(coordinates) : this._getVerticalAppointmentGeometry(coordinates) } return super.getAppointmentGeometry(geometry) } _getAdaptiveGeometry(coordinates) { const config = this._calculateGeometryConfig(coordinates); return this._customizeCoordinates(coordinates, config.height, config.appointmentCountPerCell, config.offset) } _getItemPosition(initialAppointment) { const allDay = this.isAllDay(initialAppointment); if (allDay) { return super._getItemPosition(initialAppointment) } const appointment = super.shiftAppointmentByViewOffset(initialAppointment); const adapter = new _appointment_adapter.AppointmentAdapter(appointment, this.dataAccessors); const isRecurring = adapter.isRecurrent; const { startDate: appointmentStartDate, endDate: appointmentEndDate } = adapter.getCalculatedDates(this.timeZoneCalculator, "toGrid"); const appointmentDuration = appointmentEndDate.getTime() - appointmentStartDate.getTime(); const appointmentBeginInCurrentView = this.options.startViewDate < appointmentStartDate; const isAppointmentTakesSeveralDays = !_m_utils_time_zone.default.isSameAppointmentDates(appointmentStartDate, appointmentEndDate); const settings = this.generateAppointmentSettings(appointment); let result = []; for (let j = 0; j < settings.length; j++) { const currentSetting = settings[j]; const height = this.calculateAppointmentHeight(appointment, currentSetting); const width = this.calculateAppointmentWidth(appointment, currentSetting); let resultHeight = height; let appointmentReduced = null; let multiDaysAppointmentParts = []; const currentMaxAllowedPosition = currentSetting.vMax; if (this._isMultiViewAppointment(currentSetting, height) || isAppointmentTakesSeveralDays && !isRecurring) { const trimmedStartDate = _date.default.trimTime(appointmentStartDate); const trimmedSettingStartDate = _date.default.trimTime(currentSetting.info.appointment.startDate); const reduceHead = trimmedStartDate <= trimmedSettingStartDate || isRecurring; if (reduceHead) { resultHeight = this._reduceMultiDayAppointment(height, { top: currentSetting.top, bottom: currentMaxAllowedPosition }); multiDaysAppointmentParts = this._getAppointmentParts({ sourceAppointmentHeight: height, reducedHeight: resultHeight, width: width }, currentSetting) } const { startDate: currentSettingStartDate, normalizedEndDate: currentSettingNormalizedEndDate } = currentSetting.info.appointment; const currentSettingDuration = currentSettingNormalizedEndDate - currentSettingStartDate; const hasNextParts = currentSettingDuration < appointmentDuration; appointmentReduced = hasNextParts ? appointmentBeginInCurrentView ? "head" : "body" : appointmentBeginInCurrentView ? "head" : "tail" }(0, _extend.extend)(currentSetting, { height: resultHeight, width: width, allDay: allDay, appointmentReduced: appointmentReduced }); result = this._getAppointmentPartsPosition(multiDaysAppointmentParts, currentSetting, result) } return result } _isMultiViewAppointment(_ref, height) { let { vMax: vMax, top: top } = _ref; const fullAppointmentHeight = (0, _math.roundFloatPart)(height, 2); const remainingHeight = (0, _math.roundFloatPart)(vMax - top, 2); return fullAppointmentHeight > remainingHeight } _reduceMultiDayAppointment(sourceAppointmentHeight, bound) { return Math.min(sourceAppointmentHeight, bound.bottom - Math.floor(bound.top)) } _getGroupHeight() { return this.cellHeight * this.rowCount } _getGroupTopOffset(appointmentSettings) { const { groupIndex: groupIndex } = appointmentSettings; const groupTop = Math.max(0, this.positionHelper.getGroupTop({ groupIndex: groupIndex, showAllDayPanel: this.showAllDayPanel, isGroupedAllDayPanel: this.isGroupedAllDayPanel })); const allDayPanelOffset = this.positionHelper.getOffsetByAllDayPanel({ groupIndex: groupIndex, supportAllDayRow: this.allDaySupported(), showAllDayPanel: this.showAllDayPanel }); const appointmentGroupTopOffset = appointmentSettings.top - groupTop - allDayPanelOffset; return appointmentGroupTopOffset } _getTailHeight(appointmentGeometry, appointmentSettings) { if (!this.isVirtualScrolling) { return appointmentGeometry.sourceAppointmentHeight - appointmentGeometry.reducedHeight } const appointmentGroupTopOffset = this._getGroupTopOffset(appointmentSettings); const { sourceAppointmentHeight: sourceAppointmentHeight } = appointmentGeometry; const groupHeight = this._getGroupHeight(); const tailHeight = appointmentGroupTopOffset + sourceAppointmentHeight - groupHeight; return tailHeight } _getAppointmentParts(appointmentGeometry, appointmentSettings) { const { width: width } = appointmentGeometry; const result = []; let currentPartTop = Math.max(0, this.positionHelper.getGroupTop({ groupIndex: appointmentSettings.groupIndex, showAllDayPanel: this.showAllDayPanel, isGroupedAllDayPanel: this.isGroupedAllDayPanel })); const cellsDiff = this.isGroupedByDate ? this.groupCount : 1; const offset = this.cellWidth * cellsDiff; const allDayPanelOffset = this.positionHelper.getOffsetByAllDayPanel({ groupIndex: appointmentSettings.groupIndex, supportAllDayRow: this.allDaySupported(), showAllDayPanel: this.showAllDayPanel }); currentPartTop += allDayPanelOffset; const minHeight = this.getAppointmentMinSize(); const { hMax: hMax, vMax: vMax, vMin: vMin } = appointmentSettings; const { bottomVirtualRowHeight: bottomVirtualRowHeight = 0 } = this.viewDataProvider.getViewOptions(); const maxHeight = this.isVirtualScrolling ? vMax + bottomVirtualRowHeight : vMax - vMin; const hasTailPart = this.options.endViewDate > appointmentSettings.info.appointment.endDate; let left = Math.round(appointmentSettings.left + offset); let tailHeight = this._getTailHeight(appointmentGeometry, appointmentSettings); let { columnIndex: columnIndex } = appointmentSettings; while (tailHeight > 0 && left < hMax) { tailHeight = Math.max(minHeight, tailHeight); columnIndex += cellsDiff; const height = Math.min(tailHeight, maxHeight); result.push(_extends({}, appointmentSettings, { top: currentPartTop, left: left, height: height, width: width, appointmentReduced: "body", rowIndex: 0, columnIndex: columnIndex })); left += offset; tailHeight -= maxHeight } if (hasTailPart && result.length > 0) { result[result.length - 1].appointmentReduced = "tail" } return result } _getMinuteHeight() { return this.cellHeight / this.cellDurationInMinutes } _getCompactLeftCoordinate(itemLeft, index) { const cellWidth = this.cellWidth || this.getAppointmentMinSize(); return itemLeft + (1 + cellWidth) * index } _getVerticalAppointmentGeometry(coordinates) { const config = this._calculateVerticalGeometryConfig(coordinates); return this._customizeVerticalCoordinates(coordinates, config.width, config.appointmentCountPerCell, config.offset) } _customizeVerticalCoordinates(coordinates, width, appointmentCountPerCell, topOffset, isAllDay) { const appointmentWidth = Math.max(width / appointmentCountPerCell, width / coordinates.count); const { height: height } = coordinates; const appointmentLeft = coordinates.left + coordinates.index * appointmentWidth; const { top: top } = coordinates; if (coordinates.isCompact) { this._markAppointmentAsVirtual(coordinates, isAllDay) } return { height: height, width: appointmentWidth, top: top, left: appointmentLeft, empty: this._isAppointmentEmpty(height, width) } } _calculateVerticalGeometryConfig(coordinates) { const overlappingMode = this.maxAppointmentsPerCell; const offsets = this._getOffsets(); const appointmentDefaultOffset = this._getAppointmentDefaultOffset(); let appointmentCountPerCell = this._getAppointmentCount(overlappingMode, coordinates); let ratio = this._getDefaultRatio(coordinates, appointmentCountPerCell); let maxWidth = this._getMaxWidth(); if (!appointmentCountPerCell) { appointmentCountPerCell = coordinates.count; ratio = (maxWidth - offsets.unlimited) / maxWidth } let topOffset = (1 - ratio) * maxWidth; if ("auto" === overlappingMode || (0, _type.isNumeric)(overlappingMode)) { ratio = 1; maxWidth -= appointmentDefaultOffset; topOffset = 0 } return { width: ratio * maxWidth, appointmentCountPerCell: appointmentCountPerCell, offset: topOffset } } _getMaxWidth() { return this.cellWidth } isAllDay(appointmentData) { return (0, _index.isAppointmentTakesAllDay)(new _appointment_adapter.AppointmentAdapter(appointmentData, this.dataAccessors), this.allDayPanelMode) } _getAppointmentMaxWidth() { return this.cellWidth - this._getAppointmentDefaultOffset() } calculateAppointmentWidth(appointment, position) { if (!this.isAllDay(appointment)) { return 0 } const { startDate: startDateWithTime, endDate: endDate, normalizedEndDate: normalizedEndDate } = position.info.appointment; const startDate = _date.default.trimTime(startDateWithTime); const cellWidth = this.cellWidth || this.getAppointmentMinSize(); const durationInHours = (normalizedEndDate.getTime() - startDate.getTime()) / toMs("hour"); const skippedHours = (0, _index.getSkippedHoursInRange)(startDate, endDate, appointment.allDay, this.viewDataProvider); let width = Math.ceil((durationInHours - skippedHours) / 24) * cellWidth; width = this.cropAppointmentWidth(width, cellWidth); return width } calculateAppointmentHeight(appointment, position) { if (this.isAllDay(appointment)) { return 0 } const { startDate: startDate, normalizedEndDate: normalizedEndDate } = position.info.appointment; const allDay = this.dataAccessors.get("allDay", appointment); const duration = this.getAppointmentDurationInMs(startDate, normalizedEndDate, allDay); const skippedMinutes = 60 * (0, _index.getSkippedHoursInRange)(startDate, normalizedEndDate, appointment.allDay, this.viewDataProvider); const durationInMinutes = this._adjustDurationByDaylightDiff(duration, startDate, normalizedEndDate) / toMs("minute") - skippedMinutes; const height = durationInMinutes * this._getMinuteHeight(); return height } getDirection() { return "vertical" } _sortCondition(a, b) { if (!!a.allDay !== !!b.allDay) { return a.allDay ? 1 : -1 } const isAllDay = a.allDay && b.allDay; return "vertical" === this.groupOrientation && isAllDay ? this._columnCondition(a, b) : this._rowCondition(a, b) } allDaySupported() { return true } _getAllDayAppointmentGeometry(coordinates) { const config = this._calculateGeometryConfig(coordinates); return this._customizeCoordinates(coordinates, config.height, config.appointmentCountPerCell, config.offset, true) } _calculateGeometryConfig(coordinates) { if (!this.allowResizing || !this.allowAllDayResizing) { coordinates.skipResizing = true } const config = super._calculateGeometryConfig(coordinates); const minAppointmentCountPerCell = Math.min(config.appointmentCountPerCell, this._getDynamicAppointmentCountPerCell().allDay); if (coordinates.allDay && coordinates.count <= minAppointmentCountPerCell) { config.offset = 0 } return config } _getAppointmentCount(overlappingMode, coordinates) { return "auto" !== overlappingMode && 1 === coordinates.count && !(0, _type.isNumeric)(overlappingMode) ? coordinates.count : this._getMaxAppointmentCountPerCellByType(coordinates.allDay) } _getDefaultRatio(coordinates, appointmentCountPerCell) { return coordinates.count > this.appointmentCountPerCell ? .65 : 1 } _getOffsets() { return { unlimited: 5, auto: 20 } } _getMaxHeight() { return this.allDayHeight || this.getAppointmentMinSize() } _needVerticalGroupBounds(allDay) { return !allDay } _needHorizontalGroupBounds() { return false } getPositionShift(timeShift, isAllDay) { if (!isAllDay && this.isAdaptive && 0 === this._getMaxAppointmentCountPerCellByType(isAllDay)) { return { top: 0, left: 0, cellPosition: 0 } } return super.getPositionShift(timeShift, isAllDay) } } exports.default = VerticalRenderingStrategy }, 27488: /*!***********************************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/scheduler/appointments/rendering_strategies/m_strategy_week.js ***! \***********************************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _m_strategy_vertical = (e = __webpack_require__( /*! ./m_strategy_vertical */ 1670), e && e.__esModule ? e : { default: e }); var e; class WeekAppointmentRenderingStrategy extends _m_strategy_vertical.default { isApplyCompactAppointmentOffset() { if (this.isAdaptive && 0 === this._getMaxAppointmentCountPerCellByType()) { return false } return this.supportCompactDropDownAppointments() } } exports.default = WeekAppointmentRenderingStrategy }, 57498: /*!**************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/scheduler/appointments/resizing/m_core.js ***! \**************************************************************************************************/ function(__unused_webpack_module, exports) { Object.defineProperty(exports, "__esModule", { value: true }); exports.getAppointmentDateRange = void 0; function _extends() { return _extends = Object.assign ? Object.assign.bind() : function(n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) { ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]) } } return n }, _extends.apply(null, arguments) } const getAppointmentLeftCell = options => { const { cellHeight: cellHeight, cellWidth: cellWidth, viewDataProvider: viewDataProvider, relativeAppointmentRect: relativeAppointmentRect, appointmentSettings: appointmentSettings, rtlEnabled: rtlEnabled } = options; const cellRowIndex = Math.floor(relativeAppointmentRect.top / cellHeight); const cellColumnIndex = Math.round(relativeAppointmentRect.left / cellWidth); const leftCell = viewDataProvider.getCellData(cellRowIndex, cellColumnIndex, appointmentSettings.allDay, rtlEnabled); return leftCell }; exports.getAppointmentDateRange = options => { const { appointmentSettings: appointmentSettings } = options; const relativeAppointmentRect = ((appointmentRect, parentAppointmentRect) => { const left = appointmentRect.left - parentAppointmentRect.left; const top = appointmentRect.top - parentAppointmentRect.top; const width = left < 0 ? appointmentRect.width + left : appointmentRect.width; const height = top < 0 ? appointmentRect.height + top : appointmentRect.height; return { left: Math.max(0, left), top: Math.max(0, top), width: width, height: height } })(options.appointmentRect, options.parentAppointmentRect); const cellInfo = (options => { const { appointmentSettings: appointmentSettings, isVerticalGroupedWorkSpace: isVerticalGroupedWorkSpace, DOMMetaData: DOMMetaData } = options; const DOMMetaTable = appointmentSettings.allDay && !isVerticalGroupedWorkSpace ? [DOMMetaData.allDayPanelCellsMeta] : DOMMetaData.dateTableCellsMeta; const { positionByMap: positionByMap } = appointmentSettings; const { height: cellHeight, width: cellWidth } = DOMMetaTable[positionByMap.rowIndex][positionByMap.columnIndex]; const cellCountInRow = DOMMetaTable[positionByMap.rowIndex].length; return { cellWidth: cellWidth, cellHeight: cellHeight, cellCountInRow: cellCountInRow } })(options); const considerTime = !options.isDateAndTimeView || appointmentSettings.allDay; const extendedOptions = _extends({}, options, cellInfo, { considerTime: considerTime, relativeAppointmentRect: relativeAppointmentRect }); return !options.rtlEnabled ? (options => { const { cellWidth: cellWidth, cellCountInRow: cellCountInRow, relativeAppointmentRect: relativeAppointmentRect, viewDataProvider: viewDataProvider, appointmentSettings: appointmentSettings, handles: handles } = options; const appointmentFirstCell = getAppointmentLeftCell(options); const appointmentCellsAmount = Math.round(relativeAppointmentRect.width / cellWidth); const appointmentLastCellIndex = appointmentFirstCell.index + (appointmentCellsAmount - 1); const { sourceAppointment: sourceAppointment } = appointmentSettings.info; const { allDay: allDay } = appointmentSettings.info.appointment; if (handles.left) { return { startDate: appointmentFirstCell.startDate, endDate: appointmentFirstCell.startDate > sourceAppointment.endDate ? appointmentFirstCell.startDate : sourceAppointment.endDate } } const appointmentRowIndex = Math.floor(appointmentLastCellIndex / cellCountInRow); const appointmentColumnIndex = appointmentLastCellIndex % cellCountInRow; const appointmentLastCell = viewDataProvider.getCellData(appointmentRowIndex, appointmentColumnIndex, allDay); const endDate = !options.considerTime ? appointmentLastCell.endDate : appointmentLastCell.startDate; return { startDate: endDate < sourceAppointment.startDate ? endDate : sourceAppointment.startDate, endDate: endDate } })(extendedOptions) : (options => { const { viewDataProvider: viewDataProvider, cellCountInRow: cellCountInRow, appointmentSettings: appointmentSettings, handles: handles, cellWidth: cellWidth, relativeAppointmentRect: relativeAppointmentRect } = options; const appointmentLastCell = getAppointmentLeftCell(options); const { sourceAppointment: sourceAppointment } = appointmentSettings.info; const { allDay: allDay } = appointmentSettings.info.appointment; if (handles.right) { const appointmentLastCellIndex = appointmentLastCell.index; const appointmentCellsAmount = Math.round(relativeAppointmentRect.width / cellWidth); const appointmentFirstCellIndex = appointmentLastCellIndex - appointmentCellsAmount + 1; const appointmentRowIndex = Math.floor(appointmentLastCellIndex / cellCountInRow); const appointmentFirstCell = viewDataProvider.getCellData(appointmentRowIndex, appointmentFirstCellIndex, allDay, true); return { startDate: appointmentFirstCell.startDate, endDate: appointmentFirstCell.startDate > sourceAppointment.endDate ? appointmentFirstCell.startDate : sourceAppointment.endDate } } const endDate = !options.considerTime ? appointmentLastCell.endDate : appointmentLastCell.startDate; return { startDate: endDate < sourceAppointment.startDate ? endDate : sourceAppointment.startDate, endDate: endDate } })(extendedOptions) } }, 78882: /*!*****************************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/scheduler/appointments/utils/countVisibleAppointments.js ***! \*****************************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.countVisibleAppointments = void 0; var _m_type = __webpack_require__( /*! ../../../core/utils/m_type */ 39918); exports.countVisibleAppointments = items => items.filter((_ref => { let { needRemove: needRemove } = _ref; return !needRemove })).reduce(((total, item) => total + (settings => { let isPreviousPart = false; return settings.reduce(((total, settingsItem) => { const result = isPreviousPart ? total : total + 1; const { partIndex: partIndex, partTotalCount: partTotalCount } = settingsItem; isPreviousPart = (0, _m_type.isDefined)(partTotalCount) && partIndex !== partTotalCount - 1; return result }), 0) })(item.settings)), 0) }, 69133: /*!********************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/scheduler/base/m_widget_observer.js ***! \********************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _ui = (e = __webpack_require__( /*! ../../../ui/widget/ui.widget */ 11118), e && e.__esModule ? e : { default: e }); var e; class WidgetObserver extends _ui.default { notifyObserver(subject, args) { const observer = this.option("observer"); if (observer) { observer.fire(subject, args) } } invoke() { const observer = this.option("observer"); if (observer) { return observer.fire.apply(observer, arguments) } } } exports.default = WidgetObserver }, 25307: /*!*******************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/scheduler/constants.js ***! \*******************************************************************************/ function(__unused_webpack_module, exports) { Object.defineProperty(exports, "__esModule", { value: true }); exports.VIEW_TYPES = exports.VIEWS = exports.VERTICAL_GROUP_ORIENTATION = exports.TIMELINE_VIEWS = exports.LIST_ITEM_DATA_KEY = exports.LIST_ITEM_CLASS = exports.HORIZONTAL_GROUP_ORIENTATION = exports.APPOINTMENT_SETTINGS_KEY = void 0; exports.LIST_ITEM_DATA_KEY = "dxListItemData"; exports.LIST_ITEM_CLASS = "dx-list-item"; exports.APPOINTMENT_SETTINGS_KEY = "dxAppointmentSettings"; exports.VERTICAL_GROUP_ORIENTATION = "vertical"; exports.HORIZONTAL_GROUP_ORIENTATION = "horizontal"; const VIEWS = exports.VIEWS = { DAY: "day", WEEK: "week", WORK_WEEK: "workWeek", MONTH: "month", TIMELINE_DAY: "timelineDay", TIMELINE_WEEK: "timelineWeek", TIMELINE_WORK_WEEK: "timelineWorkWeek", TIMELINE_MONTH: "timelineMonth", AGENDA: "agenda" }; exports.VIEW_TYPES = Object.values(VIEWS); exports.TIMELINE_VIEWS = [VIEWS.TIMELINE_DAY, VIEWS.TIMELINE_WEEK, VIEWS.TIMELINE_WORK_WEEK, VIEWS.TIMELINE_MONTH] }, 71548: /*!**************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/scheduler/header/constants.js ***! \**************************************************************************************/ function(__unused_webpack_module, exports) { Object.defineProperty(exports, "__esModule", { value: true }); exports.Direction = void 0; var Direction; ! function(Direction) { Direction[Direction.Left = -1] = "Left"; Direction[Direction.Right = 1] = "Right" }(Direction || (exports.Direction = Direction = {})) }, 52170: /*!***************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/scheduler/header/m_calendar.js ***! \***************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _component_registrator = _interopRequireDefault(__webpack_require__( /*! ../../../core/component_registrator */ 92848)); var _devices = _interopRequireDefault(__webpack_require__( /*! ../../../core/devices */ 65951)); var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../../core/renderer */ 64553)); var _calendar = _interopRequireDefault(__webpack_require__( /*! ../../../ui/calendar */ 22195)); var _ui = _interopRequireDefault(__webpack_require__( /*! ../../../ui/popover/ui.popover */ 98894)); var _ui2 = _interopRequireDefault(__webpack_require__( /*! ../../../ui/popup/ui.popup */ 10720)); var _ui3 = _interopRequireDefault(__webpack_require__( /*! ../../../ui/scroll_view/ui.scrollable */ 20876)); var _ui4 = _interopRequireDefault(__webpack_require__( /*! ../../../ui/widget/ui.widget */ 11118)); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } class SchedulerCalendar extends _ui4.default { show(target) { if (!this._isMobileLayout()) { this._overlay.option("target", target) } this._overlay.show() } hide() { this._overlay.hide() } _keyboardHandler(opts) { var _this$_calendar; null === (_this$_calendar = this._calendar) || void 0 === _this$_calendar || _this$_calendar._keyboardHandler(opts) } _init() { super._init(); this.$element() } _render() { super._render(); this._renderOverlay() } _renderOverlay() { this.$element().addClass("dx-scheduler-navigator-calendar-popover"); const isMobileLayout = this._isMobileLayout(); const overlayType = isMobileLayout ? _ui2.default : _ui.default; this._overlay = this._createComponent(this.$element(), overlayType, { contentTemplate: () => this._createOverlayContent(), onShown: () => this._calendar.focus(), defaultOptionsRules: [{ device: () => isMobileLayout, options: { fullScreen: true, showCloseButton: false, toolbarItems: [{ shortcut: "cancel" }], _ignorePreventScrollEventsDeprecation: true, preventScrollEvents: false, enableBodyScroll: false } }] }) } _createOverlayContent() { const result = (0, _renderer.default)("
").addClass("dx-scheduler-navigator-calendar"); this._calendar = this._createComponent(result, _calendar.default, this._getCalendarOptions()); if (this._isMobileLayout()) { const scrollable = this._createScrollable(result); return scrollable.$element() } return result } _createScrollable(content) { const result = this._createComponent("
", _ui3.default, { height: "auto", direction: "both" }); result.$content().append(content); return result } _optionChanged(_ref) { var _this$_calendar2; let { name: name, value: value } = _ref; if ("value" === name) { null === (_this$_calendar2 = this._calendar) || void 0 === _this$_calendar2 || _this$_calendar2.option("value", value) } } _getCalendarOptions() { return { value: this.option("value"), min: this.option("min"), max: this.option("max"), firstDayOfWeek: this.option("firstDayOfWeek"), focusStateEnabled: this.option("focusStateEnabled"), onValueChanged: this.option("onValueChanged"), skipFocusCheck: true, tabIndex: this.option("tabIndex") } } _isMobileLayout() { return !_devices.default.current().generic } } exports.default = SchedulerCalendar; (0, _component_registrator.default)("dxSchedulerCalendarPopup", SchedulerCalendar) }, 13842: /*!*********************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/scheduler/header/m_date_navigator.js ***! \*********************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.getDateNavigator = exports.ITEMS_NAME = exports.DEFAULT_ITEMS = exports.CLASS = void 0; var _message = _interopRequireDefault(__webpack_require__( /*! ../../../common/core/localization/message */ 4671)); var _date = _interopRequireDefault(__webpack_require__( /*! ../../../core/utils/date */ 41380)); var _themes = __webpack_require__( /*! ../../../ui/themes */ 52071); var _date2 = __webpack_require__( /*! ../../core/utils/date */ 55594); var _m_extend = __webpack_require__( /*! ../../core/utils/m_extend */ 96298); var _constants = __webpack_require__( /*! ./constants */ 71548); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } const CLASS = exports.CLASS = { container: "dx-scheduler-navigator", previousButton: "dx-scheduler-navigator-previous", calendarButton: "dx-scheduler-navigator-caption", nextButton: "dx-scheduler-navigator-next" }; const ITEMS_NAME = exports.ITEMS_NAME = { previousButton: "prev", nextButton: "next", calendarButton: "dateInterval" }; const DEFAULT_ITEMS = exports.DEFAULT_ITEMS = [ITEMS_NAME.previousButton, ITEMS_NAME.nextButton, ITEMS_NAME.calendarButton]; const { trimTime: trimTime } = _date.default; const isPreviousButtonDisabled = header => { const minOption = header.option("min"); if (!_date2.dateUtilsTs.isValidDate(minOption)) { return false } let min = new Date(minOption); const caption = header._getCaption(); min = trimTime(min); const previousDate = header._getNextDate(_constants.Direction.Left, caption.endDate); return previousDate < min }; const isNextButtonDisabled = header => { const maxOption = header.option("max"); if (!_date2.dateUtilsTs.isValidDate(maxOption)) { return false } const max = new Date(maxOption); const caption = header._getCaption(); max.setHours(23, 59, 59); const nextDate = header._getNextDate(_constants.Direction.Right, caption.startDate); return nextDate > max }; exports.getDateNavigator = (header, item) => { const stylingMode = (0, _themes.isMaterialBased)() ? "text" : "contained"; const config = (0, _m_extend.extend)(true, {}, { location: "before", name: "dateNavigator", widget: "dxButtonGroup", cssClass: CLASS.container, options: { stylingMode: stylingMode, selectionMode: "none" } }, item); const options = config.options; const { onItemClick: onItemClick } = options; options.items = (options.items ?? DEFAULT_ITEMS).map((groupItem => { switch (groupItem) { case ITEMS_NAME.previousButton: return (header => { const ariaMessage = _message.default.format("dxScheduler-navigationPrevious"); return { key: ITEMS_NAME.previousButton, icon: "chevronprev", elementAttr: { class: CLASS.previousButton, "aria-label": ariaMessage }, clickHandler: () => header._updateDateByDirection(_constants.Direction.Left), onContentReady: event => { const previousButton = event.component; previousButton.option("disabled", isPreviousButtonDisabled(header)); header._addEvent("min", (() => { previousButton.option("disabled", isPreviousButtonDisabled(header)) })); header._addEvent("currentDate", (() => { previousButton.option("disabled", isPreviousButtonDisabled(header)) })); header._addEvent("startViewDate", (() => { previousButton.option("disabled", isPreviousButtonDisabled(header)) })) } } })(header); case ITEMS_NAME.nextButton: return (header => { const ariaMessage = _message.default.format("dxScheduler-navigationNext"); return { key: ITEMS_NAME.nextButton, icon: "chevronnext", elementAttr: { class: CLASS.nextButton, "aria-label": ariaMessage }, clickHandler: () => header._updateDateByDirection(_constants.Direction.Right), onContentReady: event => { const nextButton = event.component; nextButton.option("disabled", isNextButtonDisabled(header)); header._addEvent("min", (() => { nextButton.option("disabled", isNextButtonDisabled(header)) })); header._addEvent("currentDate", (() => { nextButton.option("disabled", isNextButtonDisabled(header)) })); header._addEvent("startViewDate", (() => { nextButton.option("disabled", isNextButtonDisabled(header)) })) } } })(header); case ITEMS_NAME.calendarButton: return (header => ({ key: ITEMS_NAME.calendarButton, text: header.captionText, elementAttr: { class: CLASS.calendarButton }, clickHandler: event => header._showCalendar(event), onContentReady: event => { const calendarButton = event.component; header._addEvent("currentView", (() => { calendarButton.option("text", header.captionText) })); header._addEvent("currentDate", (() => { calendarButton.option("text", header.captionText) })); header._addEvent("startViewDate", (() => { calendarButton.option("text", header.captionText) })); header._addEvent("views", (() => { calendarButton.option("text", header.captionText) })); header._addEvent("firstDayOfWeek", (() => { calendarButton.option("text", header.captionText) })) } }))(header); default: return groupItem } })); options.onItemClick = event => { var _event$itemData$click, _event$itemData; null === (_event$itemData$click = (_event$itemData = event.itemData).clickHandler) || void 0 === _event$itemData$click || _event$itemData$click.call(_event$itemData, event); null === onItemClick || void 0 === onItemClick || onItemClick(event) }; return config } }, 84829: /*!*************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/scheduler/header/m_header.js ***! \*************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.SchedulerHeader = void 0; __webpack_require__( /*! ../../../ui/button_group */ 17809); __webpack_require__( /*! ../../../ui/drop_down_button */ 56582); var _component_registrator = _interopRequireDefault(__webpack_require__( /*! ../../../core/component_registrator */ 92848)); var _devices = _interopRequireDefault(__webpack_require__( /*! ../../../core/devices */ 65951)); var _errors = _interopRequireDefault(__webpack_require__( /*! ../../../core/errors */ 87129)); var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../../core/renderer */ 64553)); var _data = __webpack_require__( /*! ../../../core/utils/data */ 31e3); var _date = _interopRequireDefault(__webpack_require__( /*! ../../../core/utils/date */ 41380)); var _extend = __webpack_require__( /*! ../../../core/utils/extend */ 52576); var _toolbar = _interopRequireDefault(__webpack_require__( /*! ../../../ui/toolbar */ 2850)); var _ui = _interopRequireDefault(__webpack_require__( /*! ../../../ui/widget/ui.widget */ 11118)); var _index = __webpack_require__( /*! ../../scheduler/r1/utils/index */ 34396); var _m_calendar = _interopRequireDefault(__webpack_require__( /*! ./m_calendar */ 52170)); var _m_date_navigator = __webpack_require__( /*! ./m_date_navigator */ 13842); var _m_utils = __webpack_require__( /*! ./m_utils */ 25379); var _m_view_switcher = __webpack_require__( /*! ./m_view_switcher */ 94791); var _today = __webpack_require__( /*! ./today */ 27311); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } function _extends() { return _extends = Object.assign ? Object.assign.bind() : function(n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) { ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]) } } return n }, _extends.apply(null, arguments) } const CLASSES_component = "dx-scheduler-header", CLASSES_invisible = "dx-state-invisible"; const ITEM_NAMES_today = "today", ITEM_NAMES_dateNavigator = "dateNavigator", ITEM_NAMES_viewSwitcher = "viewSwitcher"; class SchedulerHeader extends _ui.default { get views() { return this.option("views") } get captionText() { return this._getCaption().text } get intervalOptions() { const step = (0, _m_utils.getStep)(this.currentView); const intervalCount = this.option("intervalCount"); const firstDayOfWeek = this.option("firstDayOfWeek"); const agendaDuration = this.option("agendaDuration"); return { step: step, intervalCount: intervalCount, firstDayOfWeek: firstDayOfWeek, agendaDuration: agendaDuration } } _getDefaultOptions() { return (0, _extend.extend)(super._getDefaultOptions(), { _useShortDateFormat: !_devices.default.real().generic || _devices.default.isSimulator() }) } _createEventMap() { this.eventMap = new Map([ ["currentView", [view => { this.currentView = _index.viewsUtils.getCurrentView((0, _m_utils.getViewName)(view), this.option("views")) }]], ["views", [_m_utils.validateViews]], ["currentDate", [this._getCalendarOptionUpdater("value")]], ["min", [this._getCalendarOptionUpdater("min")]], ["max", [this._getCalendarOptionUpdater("max")]], ["tabIndex", [this.repaint.bind(this)]], ["focusStateEnabled", [this.repaint.bind(this)]], ["useDropDownViewSwitcher", [this.repaint.bind(this)]], ["indicatorTime", []] ]) } _addEvent(name, event) { if (!this.eventMap.has(name)) { this.eventMap.set(name, []) } const events = this.eventMap.get(name); this.eventMap.set(name, [...events, event]) } _optionChanged(args) { const { name: name, value: value } = args; if (this.eventMap.has(name)) { const events = this.eventMap.get(name); events.forEach((event => { event(value) })) } } onToolbarOptionChanged(fullName, value) { const parts = (0, _data.getPathParts)(fullName); const optionName = fullName.replace(/^toolbar\./, ""); this.option(fullName, value); this._toggleVisibility(); switch (true) { case "toolbar" === fullName: this.repaint(); break; case "toolbar.items" === fullName: this._toolbar.option("items", value.map((item => this._parseItem(item)))); break; case "items" === parts[1] && 3 === parts.length: this._toolbar.option(optionName, this._parseItem(value)); break; default: this._toolbar.option(optionName, value) } } _init() { super._init(); this._createEventMap(); this.$element().addClass(CLASSES_component); this.currentView = _index.viewsUtils.getCurrentView((0, _m_utils.getViewName)(this.option("currentView")), this.option("views")) } _render() { super._render(); this._createEventMap(); this._renderToolbar(); this._toggleVisibility() } _renderToolbar() { const config = this._createToolbarConfig(); const toolbarElement = (0, _renderer.default)("
"); toolbarElement.appendTo(this.$element()); this._toolbar = this._createComponent(toolbarElement, _toolbar.default, config) } _toggleVisibility() { const toolbarOptions = this.option("toolbar"); const isHeaderShown = toolbarOptions.visible || void 0 === toolbarOptions.visible && toolbarOptions.items.length; if (isHeaderShown) { this.$element().removeClass(CLASSES_invisible) } else { this.$element().addClass(CLASSES_invisible) } } _createToolbarConfig() { const options = this.option("toolbar"); const parsedItems = options.items.map((element => this._parseItem(element))); return _extends({}, options, { items: parsedItems }) } _parseItem(item) { const itemName = "string" === typeof item ? item : item.name; const itemOptions = "string" === typeof item ? {} : item; if (itemName) { switch (itemName) { case ITEM_NAMES_today: return (0, _today.getTodayButtonOptions)(this, itemOptions); case ITEM_NAMES_viewSwitcher: return this.option("useDropDownViewSwitcher") ? (0, _m_view_switcher.getDropDownViewSwitcher)(this, itemOptions) : (0, _m_view_switcher.getTabViewSwitcher)(this, itemOptions); case ITEM_NAMES_dateNavigator: this._renderCalendar(); return (0, _m_date_navigator.getDateNavigator)(this, itemOptions); default: _errors.default.log(`Unknown default element type: ${itemName}`) } } return (0, _extend.extend)(true, {}, item) } _callEvent(event, arg) { if (this.eventMap.has(event)) { const events = this.eventMap.get(event); events.forEach((event => event(arg))) } } _updateCurrentView(view) { const onCurrentViewChange = this.option("onCurrentViewChange"); onCurrentViewChange(view.name); this._callEvent("currentView", view) } _updateCalendarValueAndCurrentDate(date) { this._updateCurrentDate(date); this._calendar.option("value", date) } _updateCurrentDate(date) { const onCurrentDateChange = this.option("onCurrentDateChange"); onCurrentDateChange(date); this._callEvent("currentDate", date) } _renderCalendar() { this._calendar = this._createComponent("
", _m_calendar.default, { value: this.option("currentDate"), min: this.option("min"), max: this.option("max"), firstDayOfWeek: this.option("firstDayOfWeek"), focusStateEnabled: this.option("focusStateEnabled"), tabIndex: this.option("tabIndex"), onValueChanged: e => { this._updateCurrentDate(e.value); this._calendar.hide() } }); this._calendar.$element().appendTo(this.$element()) } _getCalendarOptionUpdater(name) { return value => { if (this._calendar) { this._calendar.option(name, value) } } } _getNextDate(direction, initialDate) { const date = initialDate ?? this.option("currentDate"); const options = _extends({}, this.intervalOptions, { date: date }); return (0, _m_utils.getNextIntervalDate)(options, direction) } _isMonth() { return "month" === (0, _m_utils.getViewType)(this.currentView) } _getDisplayedDate() { const startViewDate = new Date(this.option("startViewDate")); return this._isMonth() ? (0, _m_utils.nextWeek)(startViewDate) : startViewDate } _getCaptionOptions() { let date = this.option("currentDate"); if (this.option("startViewDate")) { date = this._getDisplayedDate() } date = _date.default.trimTime(date); return _extends({}, this.intervalOptions, { date: date }) } _getCaption() { const options = this._getCaptionOptions(); const customizationFunction = this.option("customizeDateNavigatorText"); const useShortDateFormat = this.option("_useShortDateFormat"); return (0, _m_utils.getCaption)(options, Boolean(useShortDateFormat), customizationFunction) } _updateDateByDirection(direction) { const date = this._getNextDate(direction); this._updateCalendarValueAndCurrentDate(date) } _showCalendar(e) { this._calendar.show(e.element) } _hideCalendar() { this._calendar.hide() } } exports.SchedulerHeader = SchedulerHeader; (0, _component_registrator.default)("dxSchedulerHeader", SchedulerHeader) }, 25379: /*!************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/scheduler/header/m_utils.js ***! \************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.validateViews = exports.nextWeek = exports.isOneView = exports.getViewType = exports.getViewText = exports.getViewName = exports.getStep = exports.getNextIntervalDate = exports.getCaptionInterval = exports.getCaption = exports.formatViews = void 0; var _date = _interopRequireDefault(__webpack_require__( /*! ../../../common/core/localization/date */ 38662)); var _message = _interopRequireDefault(__webpack_require__( /*! ../../../common/core/localization/message */ 4671)); var _errors = _interopRequireDefault(__webpack_require__( /*! ../../../core/errors */ 87129)); var _date2 = _interopRequireDefault(__webpack_require__( /*! ../../../core/utils/date */ 41380)); var _inflector = __webpack_require__( /*! ../../../core/utils/inflector */ 53124); var _type = __webpack_require__( /*! ../../../core/utils/type */ 11528); var _constants = __webpack_require__( /*! ../constants */ 25307); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } const { correctDateWithUnitBeginning: getPeriodStart, getFirstWeekDate: getWeekStart, getLastMonthDay: getLastMonthDay, addDateInterval: addDateInterval } = _date2.default; const { format: formatDate } = _date.default; const MS_DURATION = { milliseconds: 1 }; const DAY_DURATION = { days: 1 }; const WEEK_DURATION = { days: 7 }; const SATURDAY_INDEX = 6; const SUNDAY_INDEX = 0; const nextDay = date => addDateInterval(date, DAY_DURATION, 1); const nextWeek = date => addDateInterval(date, WEEK_DURATION, 1); exports.nextWeek = nextWeek; const isWeekend = date => [SATURDAY_INDEX, SUNDAY_INDEX].includes(date.getDay()); const getIntervalStartDate = options => { const { date: date, step: step, firstDayOfWeek: firstDayOfWeek } = options; switch (step) { case "day": case "week": case "month": return getPeriodStart(date, step, false, firstDayOfWeek); case "workWeek": const firstWeekDay = getWeekStart(date, firstDayOfWeek); return (firstDayOfWeek => { let date = new Date(firstDayOfWeek); while (isWeekend(date)) { date = nextDay(date) } return date })(firstWeekDay); case "agenda": return new Date(date) } }; const getCaptionInterval = options => { const startDate = getIntervalStartDate(options); const endDate = ((startDate, options) => { const { intervalCount: intervalCount, step: step, agendaDuration: agendaDuration } = options; let periodStartDate; let periodEndDate; let nextPeriodStartDate = new Date(startDate); for (let i = 0; i < intervalCount; i++) { periodStartDate = nextPeriodStartDate; periodEndDate = getPeriodEndDate(periodStartDate, step, agendaDuration); nextPeriodStartDate = getNextPeriodStartDate(periodEndDate, step) } return periodEndDate })(startDate, options); return { startDate: startDate, endDate: endDate } }; exports.getCaptionInterval = getCaptionInterval; const getPeriodEndDate = (currentPeriodStartDate, step, agendaDuration) => { let date; switch (step) { case "day": date = nextDay(currentPeriodStartDate); break; case "week": date = nextWeek(currentPeriodStartDate); break; case "month": date = (date => { const days = getLastMonthDay(date); return addDateInterval(date, { days: days }, 1) })(currentPeriodStartDate); break; case "workWeek": date = (workWeekStart => { let date = new Date(workWeekStart); let workDaysCount = 0; while (workDaysCount < 5) { if (!isWeekend(date)) { workDaysCount++ } date = nextDay(date) } return date })(currentPeriodStartDate); break; case "agenda": date = ((date, agendaDuration) => addDateInterval(date, { days: agendaDuration }, 1))(currentPeriodStartDate, agendaDuration) } return (date => addDateInterval(date, MS_DURATION, -1))(date) }; const getNextPeriodStartDate = (currentPeriodEndDate, step) => { let date = (date => addDateInterval(date, MS_DURATION, 1))(currentPeriodEndDate); if ("workWeek" === step) { while (isWeekend(date)) { date = nextDay(date) } } return date }; exports.getNextIntervalDate = (options, direction) => { const { date: date, step: step, intervalCount: intervalCount, agendaDuration: agendaDuration } = options; let dayDuration; switch (step) { case "day": dayDuration = 1 * intervalCount; break; case "week": case "workWeek": dayDuration = 7 * intervalCount; break; case "agenda": dayDuration = agendaDuration; break; case "month": return getNextMonthDate(date, intervalCount, direction) } return addDateInterval(date, { days: dayDuration }, direction) }; const getNextMonthDate = (date, intervalCount, direction) => { const currentDate = date.getDate(); const currentMonthFirstDate = new Date(new Date(date.getTime()).setDate(1)); const thatMonthFirstDate = new Date(currentMonthFirstDate.setMonth(currentMonthFirstDate.getMonth() + intervalCount * direction)); const thatMonthDuration = getLastMonthDay(thatMonthFirstDate); const minDate = currentDate < thatMonthDuration ? currentDate : thatMonthDuration; const currentMonthMinDate = new Date(new Date(date.getTime()).setDate(minDate)); const thatMonthMinDate = new Date(currentMonthMinDate.setMonth(currentMonthMinDate.getMonth() + intervalCount * direction)); return thatMonthMinDate }; const getDateMonthFormatter = isShort => { const monthType = isShort ? "abbreviated" : "wide"; const months = _date.default.getMonthNames(monthType); return date => { const day = formatDate(date, "day"); const month = months[date.getMonth()]; return `${day} ${month}` } }; const formatMonthYear = date => { const months = _date.default.getMonthNames("abbreviated"); const month = months[date.getMonth()]; const year = formatDate(date, "year"); return `${month} ${year}` }; const getDateMonthYearFormatter = isShort => date => { const dateMonthFormat = getDateMonthFormatter(isShort); const dateMonth = dateMonthFormat(date); const year = formatDate(date, "year"); return `${dateMonth} ${year}` }; const formatCaptionByMonths = (startDate, endDate, isShort) => { const isDifferentYears = startDate.getFullYear() !== endDate.getFullYear(); if (isDifferentYears) { return ((startDate, endDate) => { const firstDateText = formatDate(startDate, getDateMonthYearFormatter(true)); const lastDateDateText = formatDate(endDate, getDateMonthYearFormatter(true)); return `${firstDateText}-${lastDateDateText}` })(startDate, endDate) } return ((startDate, endDate, isShort) => { const isDifferentMonthDates = startDate.getMonth() !== endDate.getMonth(); const useShortFormat = isDifferentMonthDates || isShort; const firstDateFormat = isDifferentMonthDates ? getDateMonthFormatter(useShortFormat) : "d"; const firstDateText = formatDate(startDate, firstDateFormat); const lastDateText = formatDate(endDate, getDateMonthYearFormatter(useShortFormat)); return `${firstDateText}-${lastDateText}` })(startDate, endDate, isShort) }; const getCaptionText = (startDate, endDate, isShort, step) => { if (_date2.default.sameDate(startDate, endDate)) { return ((date, step, isShort) => { const useShortFormat = "agenda" === step ? isShort : false; const dateMonthFormat = getDateMonthFormatter(useShortFormat); const dateMonth = dateMonthFormat(date); const year = formatDate(date, "year"); return `${dateMonth} ${year}` })(startDate, step, isShort) } if ("month" === step) { return ((startDate, endDate) => { if (_date2.default.sameMonth(startDate, endDate)) { return String(formatDate(startDate, "monthandyear") ?? "") } const isSameYear = _date2.default.sameYear(startDate, endDate); const firstDateText = isSameYear ? _date.default.getMonthNames("abbreviated")[startDate.getMonth()] : formatMonthYear(startDate); const lastDateText = formatMonthYear(endDate); return `${firstDateText}-${lastDateText}` })(startDate, endDate) } return formatCaptionByMonths(startDate, endDate, isShort) }; exports.getCaption = (options, isShort, customizationFunction) => { const { startDate: startDate, endDate: endDate } = getCaptionInterval(options); let text = getCaptionText(startDate, endDate, isShort, options.step); if ((0, _type.isFunction)(customizationFunction)) { text = customizationFunction({ startDate: startDate, endDate: endDate, text: text }) } return { startDate: startDate, endDate: endDate, text: text } }; const STEP_MAP = { day: "day", week: "week", workWeek: "workWeek", month: "month", timelineDay: "day", timelineWeek: "week", timelineWorkWeek: "workWeek", timelineMonth: "month", agenda: "agenda" }; const getViewType = view => (0, _type.isObject)(view) ? view.type : view; exports.getViewType = getViewType; exports.getStep = view => { const type = getViewType(view); return type ? STEP_MAP[type] : void 0 }; const getViewName = view => { if ((0, _type.isObject)(view)) { return view.name ?? view.type } return view }; exports.getViewName = getViewName; const getViewText = view => { if ((0, _type.isObject)(view) && view.name) { return view.name } const viewName = (0, _inflector.camelize)(getViewType(view), true); return _message.default.format(`dxScheduler-switcher${viewName}`) }; exports.getViewText = getViewText; const validateViews = function() { let views = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : []; views.forEach((view => { const viewType = getViewType(view); if (!(view => Boolean(view && Object.values(_constants.VIEWS).includes(view)))(viewType)) { _errors.default.log("W0008", viewType) } })) }; exports.validateViews = validateViews; exports.formatViews = function() { let views = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : []; validateViews(views); return views.map((view => { const text = getViewText(view); const type = getViewType(view); const name = getViewName(view); return { text: text, name: name, view: { text: text, type: type, name: name } } })) }; exports.isOneView = (views, selectedView) => 1 === views.length && views[0].name === selectedView }, 94791: /*!********************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/scheduler/header/m_view_switcher.js ***! \********************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.getTabViewSwitcher = exports.getDropDownViewSwitcher = void 0; var _themes = __webpack_require__( /*! ../../../ui/themes */ 52071); var _m_utils = __webpack_require__( /*! ./m_utils */ 25379); function _extends() { return _extends = Object.assign ? Object.assign.bind() : function(n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) { ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]) } } return n }, _extends.apply(null, arguments) } const ClASS_container = "dx-scheduler-view-switcher", ClASS_dropDownButton = "dx-scheduler-view-switcher-dropdown-button", ClASS_dropDownButtonContent = "dx-scheduler-view-switcher-dropdown-button-content"; const getViewsAndSelectedView = header => { const views = (0, _m_utils.formatViews)(header.views); let selectedView = (0, _m_utils.getViewName)(header.currentView); const isSelectedViewInViews = views.some((view => view.name === selectedView)); selectedView = isSelectedViewInViews ? selectedView : void 0; return { selectedView: selectedView, views: views } }; exports.getTabViewSwitcher = (header, item) => { const { selectedView: selectedView, views: views } = getViewsAndSelectedView(header); const stylingMode = (0, _themes.isFluent)() ? "outlined" : "contained"; return _extends({ widget: "dxButtonGroup", locateInMenu: "auto", location: "after", name: "viewSwitcher", cssClass: ClASS_container, options: { items: views, keyExpr: "name", selectedItemKeys: [selectedView], stylingMode: stylingMode, onItemClick: e => { const { view: view } = e.itemData; header._updateCurrentView(view) }, onContentReady: e => { const viewSwitcher = e.component; header._addEvent("currentView", (view => { viewSwitcher.option("selectedItemKeys", [(0, _m_utils.getViewName)(view)]) })) } } }, item) }; exports.getDropDownViewSwitcher = (header, item) => { const { selectedView: selectedView, views: views } = getViewsAndSelectedView(header); const oneView = (0, _m_utils.isOneView)(views, selectedView); return _extends({ widget: "dxDropDownButton", locateInMenu: "never", location: "after", name: "viewSwitcher", cssClass: ClASS_container, options: { items: views, useSelectMode: true, keyExpr: "name", selectedItemKey: selectedView, displayExpr: "text", showArrowIcon: !oneView, elementAttr: { class: ClASS_dropDownButton }, onItemClick: e => { const { view: view } = e.itemData; header._updateCurrentView(view) }, onContentReady: e => { const viewSwitcher = e.component; header._addEvent("currentView", (view => { const currentViews = (0, _m_utils.formatViews)(header.views); viewSwitcher.option("showArrowIcon", !(0, _m_utils.isOneView)(currentViews, view)); viewSwitcher.option("selectedItemKey", (0, _m_utils.getViewName)(view)) })) }, dropDownOptions: { onShowing: e => { if (oneView) { e.cancel = true } }, width: "max-content", _wrapperClassExternal: ClASS_dropDownButtonContent } } }, item) } }, 27311: /*!**********************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/scheduler/header/today.js ***! \**********************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.getTodayButtonOptions = void 0; var _message = (e = __webpack_require__( /*! ../../../common/core/localization/message */ 4671), e && e.__esModule ? e : { default: e }); var e; var _m_extend = __webpack_require__( /*! ../../core/utils/m_extend */ 96298); exports.getTodayButtonOptions = (header, item) => (0, _m_extend.extend)(true, {}, { location: "before", locateInMenu: "auto", widget: "dxButton", cssClass: "dx-scheduler-today", options: { text: _message.default.format("dxScheduler-navigationToday"), icon: "today", stylingMode: "outlined", type: "normal", onClick() { header._updateCurrentDate(header.option("indicatorTime") ?? new Date) } } }, item) }, 80621: /*!*************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/scheduler/m_appointment_drag_behavior.js ***! \*************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../core/renderer */ 64553)); var _deferred = __webpack_require__( /*! ../../core/utils/deferred */ 87739); var _extend = __webpack_require__( /*! ../../core/utils/extend */ 52576); var _draggable = _interopRequireDefault(__webpack_require__( /*! ../../ui/draggable */ 5298)); var _constants = __webpack_require__( /*! ./constants */ 25307); var _is_scheduler_component = __webpack_require__( /*! ./utils/is_scheduler_component */ 28740); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } exports.default = class { constructor(scheduler) { this.scheduler = scheduler; this.workspace = this.scheduler._workSpace; this.appointments = this.scheduler._appointments; this.initialPosition = { left: 0, top: 0 }; this.appointmentInfo = null; this.dragBetweenComponentsPromise = null } isAllDay(appointment) { return appointment.data(_constants.APPOINTMENT_SETTINGS_KEY).allDay } onDragStart(e) { const { itemSettings: itemSettings, itemData: itemData, initialPosition: initialPosition } = e; this.initialPosition = initialPosition; this.appointmentInfo = { appointment: itemData, settings: itemSettings }; this.appointments.notifyObserver("hideAppointmentTooltip") } onDragMove(e) { if (e.fromComponent !== e.toComponent) { this.appointments.notifyObserver("removeDroppableCellClass") } } getAppointmentElement(e) { var _e$event$data; const itemElement = (null === (_e$event$data = e.event.data) || void 0 === _e$event$data ? void 0 : _e$event$data.itemElement) || e.itemElement; return (0, _renderer.default)(itemElement) } onDragEnd(event) { const element = this.getAppointmentElement(event); const isAllDay = this.isAllDay(element); const rawAppointment = this.appointments._getItemData(element); const container = this.appointments._getAppointmentContainer(isAllDay); container.append(element); const $targetCell = this.workspace.getDroppableCell(); const $dragCell = this.workspace.getCellByCoordinates(this.initialPosition, isAllDay); this.appointments.notifyObserver("updateAppointmentAfterDrag", { event: event, element: element, rawAppointment: rawAppointment, isDropToTheSameCell: $targetCell.is($dragCell), isDropToSelfScheduler: $targetCell.length > 0 }) } onDragCancel() { this.removeDroppableClasses() } getItemData(appointmentElement) { const dataFromTooltip = (0, _renderer.default)(appointmentElement).data(_constants.LIST_ITEM_DATA_KEY); const itemDataFromTooltip = null === dataFromTooltip || void 0 === dataFromTooltip ? void 0 : dataFromTooltip.appointment; const itemDataFromGrid = this.appointments._getItemData(appointmentElement); return itemDataFromTooltip || itemDataFromGrid } getItemSettings(appointment) { const itemData = (0, _renderer.default)(appointment).data(_constants.LIST_ITEM_DATA_KEY); return (null === itemData || void 0 === itemData ? void 0 : itemData.settings) || [] } createDragStartHandler(options, appointmentDragging) { return e => { var _appointmentDragging$; e.itemData = this.getItemData(e.itemElement); e.itemSettings = this.getItemSettings(e.itemElement); null === (_appointmentDragging$ = appointmentDragging.onDragStart) || void 0 === _appointmentDragging$ || _appointmentDragging$.call(appointmentDragging, e); if (!e.cancel) { options.onDragStart(e) } } } createDragMoveHandler(options, appointmentDragging) { return e => { var _appointmentDragging$2; null === (_appointmentDragging$2 = appointmentDragging.onDragMove) || void 0 === _appointmentDragging$2 || _appointmentDragging$2.call(appointmentDragging, e); if (!e.cancel) { options.onDragMove(e) } } } createDragEndHandler(options, appointmentDragging) { return e => { var _appointmentDragging$3; const updatedData = this.appointments.invoke("getUpdatedData", e.itemData); this.appointmentInfo = null; e.toItemData = (0, _extend.extend)({}, e.itemData, updatedData); null === (_appointmentDragging$3 = appointmentDragging.onDragEnd) || void 0 === _appointmentDragging$3 || _appointmentDragging$3.call(appointmentDragging, e); if (!e.cancel) { options.onDragEnd(e); if (e.fromComponent !== e.toComponent) { var _appointmentDragging$4; null === (_appointmentDragging$4 = appointmentDragging.onRemove) || void 0 === _appointmentDragging$4 || _appointmentDragging$4.call(appointmentDragging, e) } } if (true === e.cancel) { options.onDragCancel(e) } if (true !== e.cancel && (0, _is_scheduler_component.isSchedulerComponent)(e.toComponent)) { const targetDragBehavior = e.toComponent._getDragBehavior(); targetDragBehavior.dragBetweenComponentsPromise = new _deferred.Deferred } } } createDropHandler(appointmentDragging) { return e => { const updatedData = this.appointments.invoke("getUpdatedData", e.itemData); e.itemData = (0, _extend.extend)({}, e.itemData, updatedData); if (e.fromComponent !== e.toComponent) { var _appointmentDragging$5; null === (_appointmentDragging$5 = appointmentDragging.onAdd) || void 0 === _appointmentDragging$5 || _appointmentDragging$5.call(appointmentDragging, e) } if (this.dragBetweenComponentsPromise) { this.dragBetweenComponentsPromise.resolve() } } } addTo(container, config) { const appointmentDragging = this.scheduler.option("appointmentDragging") || {}; const options = (0, _extend.extend)({ component: this.scheduler, contentTemplate: null, filter: ".dx-scheduler-appointment", immediate: false, onDragStart: this.onDragStart.bind(this), onDragMove: this.onDragMove.bind(this), onDragEnd: this.onDragEnd.bind(this), onDragCancel: this.onDragCancel.bind(this) }, config); this.appointments._createComponent(container, _draggable.default, (0, _extend.extend)({}, options, appointmentDragging, { onDragStart: this.createDragStartHandler(options, appointmentDragging), onDragMove: this.createDragMoveHandler(options, appointmentDragging), onDragEnd: this.createDragEndHandler(options, appointmentDragging), onDrop: this.createDropHandler(appointmentDragging), onCancelByEsc: true })) } updateDragSource(appointment, settings) { const { appointmentInfo: appointmentInfo } = this; if (appointmentInfo || appointment) { const currentAppointment = appointment || appointmentInfo.appointment; const currentSettings = settings || appointmentInfo.settings; this.appointments._setDragSourceAppointment(currentAppointment, currentSettings) } } removeDroppableClasses() { this.appointments._removeDragSourceClassFromDraggedAppointment(); this.workspace.removeDroppableCellClass() } } }, 17851: /*!***************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/scheduler/m_appointments_layout_manager.js ***! \***************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _common = __webpack_require__( /*! ../../core/utils/common */ 17781); var _date = (e = __webpack_require__( /*! ../../core/utils/date */ 41380), e && e.__esModule ? e : { default: e }); var e; var _index = __webpack_require__( /*! ../scheduler/r1/utils/index */ 34396); var _m_view_model_generator = __webpack_require__( /*! ./appointments/m_view_model_generator */ 91200); var _m_position_helper = __webpack_require__( /*! ./workspaces/helpers/m_position_helper */ 39979); function _extends() { return _extends = Object.assign ? Object.assign.bind() : function(n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) { ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]) } } return n }, _extends.apply(null, arguments) } const toMs = _date.default.dateToMilliseconds; const appointmentRenderingStrategyMap = { day: "vertical", week: "week", workWeek: "week", month: "horizontalMonth", timelineDay: "horizontal", timelineWeek: "horizontal", timelineWorkWeek: "horizontal", timelineMonth: "horizontalMonthLine", agenda: "agenda" }; exports.default = class { constructor(instance) { this.instance = instance; this.appointmentViewModel = new _m_view_model_generator.AppointmentViewModelGenerator } get appointmentRenderingStrategyName() { return appointmentRenderingStrategyMap[this.instance.currentViewType] } getCellDimensions(options) { if (this.instance._workSpace) { return { width: this.instance._workSpace.getCellWidth(), height: this.instance._workSpace.getCellHeight(), allDayHeight: this.instance._workSpace.getAllDayHeight() } } return } _getRenderingStrategyOptions() { const workspace = this.instance.getWorkSpace(); const { virtualScrollingDispatcher: virtualScrollingDispatcher } = this.instance.getWorkSpace(); const { cellCountInsideLeftVirtualCell: cellCountInsideLeftVirtualCell, cellCountInsideTopVirtualRow: cellCountInsideTopVirtualRow } = virtualScrollingDispatcher; const groupCount = this.instance.resourceManager.groupCount(); const DOMMetaData = workspace.getDOMElementsMetaData(); const allDayHeight = (0, _m_position_helper.getAllDayHeight)(workspace.option("showAllDayPanel"), workspace._isVerticalGroupedWorkSpace(), DOMMetaData); const rowCount = workspace._getRowCount(); const { positionHelper: positionHelper, viewDataProvider: viewDataProvider } = workspace; const visibleDayDuration = viewDataProvider.getVisibleDayDuration(workspace.option("startDayHour"), workspace.option("endDayHour"), workspace.option("hoursInterval")); const cellDuration = (0, _index.getCellDuration)(workspace.type, workspace.option("startDayHour"), workspace.option("endDayHour"), workspace.option("hoursInterval")); return { resources: this.instance.option("resources"), loadedResources: this.instance.option("loadedResources"), getResourceManager: () => this.instance.resourceManager, getAppointmentColor: this.instance.createGetAppointmentColor(), dataAccessors: this.instance._dataAccessors, appointmentRenderingStrategyName: this.appointmentRenderingStrategyName, adaptivityEnabled: this.instance.option("adaptivityEnabled"), rtlEnabled: this.instance.option("rtlEnabled"), startDayHour: this.instance._getCurrentViewOption("startDayHour"), endDayHour: this.instance._getCurrentViewOption("endDayHour"), viewOffset: this.instance._getCurrentViewOption("offset") * toMs("minute"), maxAppointmentsPerCell: this.instance._getCurrentViewOption("maxAppointmentsPerCell"), currentDate: this.instance.option("currentDate"), isVirtualScrolling: this.instance.isVirtualScrolling(), leftVirtualCellCount: cellCountInsideLeftVirtualCell, topVirtualCellCount: cellCountInsideTopVirtualRow, intervalCount: workspace.option("intervalCount"), hoursInterval: workspace.option("hoursInterval"), showAllDayPanel: workspace.option("showAllDayPanel"), isGroupedAllDayPanel: workspace.isGroupedAllDayPanel(), groups: this.instance._getCurrentViewOption("groups"), groupCount: groupCount, rowCount: rowCount, appointmentCountPerCell: this.instance.option("_appointmentCountPerCell"), appointmentOffset: this.instance.option("_appointmentOffset"), allowResizing: this.instance._allowResizing(), allowAllDayResizing: this.instance._allowAllDayResizing(), startViewDate: workspace.getStartViewDate(), groupOrientation: workspace._getRealGroupOrientation(), cellWidth: (0, _m_position_helper.getCellWidth)(DOMMetaData), cellHeight: (0, _m_position_helper.getCellHeight)(DOMMetaData), allDayHeight: allDayHeight, resizableStep: positionHelper.getResizableStep(), visibleDayDuration: visibleDayDuration, allDayPanelMode: this.instance._getCurrentViewOption("allDayPanelMode"), timeZoneCalculator: this.instance.timeZoneCalculator, timeZone: this.instance.option("timeZone"), firstDayOfWeek: this.instance.getFirstDayOfWeek(), viewStartDayHour: this.instance._getCurrentViewOption("startDayHour"), viewEndDayHour: this.instance._getCurrentViewOption("endDayHour"), viewType: workspace.type, endViewDate: workspace.getEndViewDate(), positionHelper: positionHelper, isGroupedByDate: workspace.isGroupedByDate(), cellDuration: cellDuration, cellDurationInMinutes: workspace.option("cellDuration"), viewDataProvider: workspace.viewDataProvider, supportAllDayRow: workspace.supportAllDayRow(), dateRange: workspace.getDateRange(), intervalDuration: workspace.getIntervalDuration(), allDayIntervalDuration: workspace.getIntervalDuration(true), isVerticalGroupOrientation: workspace.isVerticalOrientation(), DOMMetaData: DOMMetaData, instance: this.instance, agendaDuration: workspace.option("agendaDuration") } } createAppointmentsMap(items) { const renderingStrategyOptions = this._getRenderingStrategyOptions(); const { viewModel: viewModel, positionMap: positionMap } = this.appointmentViewModel.generate(items, renderingStrategyOptions); this._positionMap = positionMap; return viewModel } _isDataChanged(data) { const { appointmentDataProvider: appointmentDataProvider } = this.instance; const updatedData = appointmentDataProvider.getUpdatedAppointment(); return updatedData === data || appointmentDataProvider.getUpdatedAppointmentKeys().some((item => data[item.key] === item.value)) } _isAppointmentShouldAppear(currentAppointment, sourceAppointment) { return currentAppointment.needRepaint && sourceAppointment.needRemove } _isSettingChanged(settings, sourceSetting) { if (settings.length !== sourceSetting.length) { return true } const createSettingsToCompare = currentSetting => { const leftVirtualCellCount = currentSetting.leftVirtualCellCount || 0; const topVirtualCellCount = currentSetting.topVirtualCellCount || 0; const columnIndex = currentSetting.columnIndex + leftVirtualCellCount; const rowIndex = currentSetting.rowIndex + topVirtualCellCount; const hMax = currentSetting.reduced ? currentSetting.hMax : void 0; const vMax = currentSetting.reduced ? currentSetting.vMax : void 0; return _extends({}, currentSetting, { columnIndex: columnIndex, rowIndex: rowIndex, positionByMap: void 0, topVirtualCellCount: void 0, leftVirtualCellCount: void 0, leftVirtualWidth: void 0, topVirtualHeight: void 0, hMax: hMax, vMax: vMax, info: {} }) }; for (let i = 0; i < settings.length; i++) { const newSettings = createSettingsToCompare(settings[i]); const oldSettings = createSettingsToCompare(sourceSetting[i]); if (oldSettings) { oldSettings.sortedIndex = newSettings.sortedIndex } if (!(0, _common.equalByValue)(newSettings, oldSettings)) { return true } } return false } _getAssociatedSourceAppointment(currentAppointment, sourceAppointments) { for (let i = 0; i < sourceAppointments.length; i++) { const item = sourceAppointments[i]; if (item.itemData === currentAppointment.itemData) { return item } } return null } _getDeletedAppointments(currentAppointments, sourceAppointments) { const result = []; for (let i = 0; i < sourceAppointments.length; i++) { const sourceAppointment = sourceAppointments[i]; const currentAppointment = this._getAssociatedSourceAppointment(sourceAppointment, currentAppointments); if (!currentAppointment) { sourceAppointment.needRemove = true; result.push(sourceAppointment) } } return result } getRepaintedAppointments(currentAppointments, sourceAppointments) { if (0 === sourceAppointments.length || "agenda" === this.appointmentRenderingStrategyName) { return currentAppointments } currentAppointments.forEach((appointment => { const sourceAppointment = this._getAssociatedSourceAppointment(appointment, sourceAppointments); if (sourceAppointment) { const isDataChanged = this._isDataChanged(appointment.itemData); const isSettingChanged = this._isSettingChanged(appointment.settings, sourceAppointment.settings); const isAppointmentShouldAppear = this._isAppointmentShouldAppear(appointment, sourceAppointment); appointment.needRepaint = isDataChanged || isSettingChanged || isAppointmentShouldAppear } })); return currentAppointments.concat(this._getDeletedAppointments(currentAppointments, sourceAppointments)) } getRenderingStrategyInstance() { const renderingStrategy = this.appointmentViewModel.getRenderingStrategy(); if (!renderingStrategy) { const options = this._getRenderingStrategyOptions(); this.appointmentViewModel.initRenderingStrategy(options) } return this.appointmentViewModel.getRenderingStrategy() } } }, 80126: /*!*******************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/scheduler/m_classes.js ***! \*******************************************************************************/ function(__unused_webpack_module, exports) { Object.defineProperty(exports, "__esModule", { value: true }); exports.VIRTUAL_CELL_CLASS = exports.VERTICAL_GROUP_COUNT_CLASSES = exports.TIME_PANEL_CLASS = exports.REDUCED_APPOINTMENT_PARTS_CLASSES = exports.REDUCED_APPOINTMENT_ICON = exports.REDUCED_APPOINTMENT_CLASS = exports.RECURRENCE_APPOINTMENT_CLASS = exports.LAST_GROUP_CELL_CLASS = exports.HEADER_CURRENT_TIME_CELL_CLASS = exports.GROUP_ROW_CLASS = exports.GROUP_HEADER_CONTENT_CLASS = exports.FIXED_CONTAINER_CLASS = exports.FIRST_GROUP_CELL_CLASS = exports.EMPTY_APPOINTMENT_CLASS = exports.DIRECTION_APPOINTMENT_CLASSES = exports.DATE_TABLE_ROW_CLASS = exports.DATE_TABLE_CLASS = exports.APPOINTMENT_ITEM_CLASS = exports.APPOINTMENT_HAS_RESOURCE_COLOR_CLASS = exports.APPOINTMENT_DRAG_SOURCE_CLASS = exports.APPOINTMENT_CONTENT_CLASSES = exports.ALL_DAY_APPOINTMENT_CLASS = exports.AGENDA_LAST_IN_DATE_APPOINTMENT_CLASS = void 0; exports.FIXED_CONTAINER_CLASS = "dx-scheduler-fixed-appointments"; exports.REDUCED_APPOINTMENT_CLASS = "dx-scheduler-appointment-reduced"; exports.REDUCED_APPOINTMENT_ICON = "dx-scheduler-appointment-reduced-icon"; exports.RECURRENCE_APPOINTMENT_CLASS = "dx-scheduler-appointment-recurrence"; exports.EMPTY_APPOINTMENT_CLASS = "dx-scheduler-appointment-empty"; exports.ALL_DAY_APPOINTMENT_CLASS = "dx-scheduler-all-day-appointment"; exports.REDUCED_APPOINTMENT_PARTS_CLASSES = { head: "dx-scheduler-appointment-head", body: "dx-scheduler-appointment-body", tail: "dx-scheduler-appointment-tail" }; exports.DIRECTION_APPOINTMENT_CLASSES = { horizontal: "dx-scheduler-appointment-horizontal", vertical: "dx-scheduler-appointment-vertical" }; exports.APPOINTMENT_DRAG_SOURCE_CLASS = "dx-scheduler-appointment-drag-source"; exports.APPOINTMENT_ITEM_CLASS = "dx-scheduler-appointment"; exports.APPOINTMENT_CONTENT_CLASSES = { APPOINTMENT_CONTENT_DETAILS: "dx-scheduler-appointment-content-details", RECURRING_ICON: "dx-scheduler-appointment-recurrence-icon", APPOINTMENT_TITLE: "dx-scheduler-appointment-title", APPOINTMENT_DATE: "dx-scheduler-appointment-content-date", ALL_DAY_CONTENT: "dx-scheduler-appointment-content-allday", ARIA_DESCRIPTION: "dx-scheduler-appointment-aria-description", ITEM: "dx-scheduler-appointment", STRIP: "dx-scheduler-appointment-strip", AGENDA_MARKER: "dx-scheduler-agenda-appointment-marker", AGENDA_RESOURCE_LIST: "dx-scheduler-appointment-resource-list", AGENDA_RESOURCE_LIST_ITEM: "dx-scheduler-appointment-resource-item", AGENDA_RESOURCE_LIST_ITEM_VALUE: "dx-scheduler-appointment-resource-item-value" }; exports.AGENDA_LAST_IN_DATE_APPOINTMENT_CLASS = "dx-scheduler-last-in-date-agenda-appointment"; exports.APPOINTMENT_HAS_RESOURCE_COLOR_CLASS = "dx-scheduler-appointment-has-resource-color"; exports.HEADER_CURRENT_TIME_CELL_CLASS = "dx-scheduler-header-panel-current-time-cell"; exports.VIRTUAL_CELL_CLASS = "dx-scheduler-virtual-cell"; exports.TIME_PANEL_CLASS = "dx-scheduler-time-panel"; exports.DATE_TABLE_CLASS = "dx-scheduler-date-table"; exports.DATE_TABLE_ROW_CLASS = "dx-scheduler-date-table-row"; exports.GROUP_ROW_CLASS = "dx-scheduler-group-row"; exports.GROUP_HEADER_CONTENT_CLASS = "dx-scheduler-group-header-content"; exports.LAST_GROUP_CELL_CLASS = "dx-scheduler-last-group-cell"; exports.FIRST_GROUP_CELL_CLASS = "dx-scheduler-first-group-cell"; exports.VERTICAL_GROUP_COUNT_CLASSES = ["dx-scheduler-group-column-count-one", "dx-scheduler-group-column-count-two", "dx-scheduler-group-column-count-three"] }, 64787: /*!***************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/scheduler/m_compact_appointments_helper.js ***! \***************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.CompactAppointmentsHelper = void 0; var _translator = __webpack_require__( /*! ../../common/core/animation/translator */ 88603); var _date = _interopRequireDefault(__webpack_require__( /*! ../../common/core/localization/date */ 38662)); var _message = _interopRequireDefault(__webpack_require__( /*! ../../common/core/localization/message */ 4671)); var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../core/renderer */ 64553)); var _function_template = __webpack_require__( /*! ../../core/templates/function_template */ 38699); var _button = _interopRequireDefault(__webpack_require__( /*! ../../ui/button */ 64973)); var _constants = __webpack_require__( /*! ./constants */ 25307); var _m_data_structures = __webpack_require__( /*! ./m_data_structures */ 95965); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } function _extends() { return _extends = Object.assign ? Object.assign.bind() : function(n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) { ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]) } } return n }, _extends.apply(null, arguments) } exports.CompactAppointmentsHelper = class { constructor(instance) { this.instance = instance; this.elements = [] } render(options) { const { isCompact: isCompact, items: items } = options; const template = this._createTemplate(items.data.length, isCompact); const button = this._createCompactButton(template, options); const $button = button.$element(); this.elements.push($button); $button.data("items", this._createTooltipInfos(items)); return $button } clear() { this.elements.forEach((button => { button.detach(); button.remove() })); this.elements = [] } _createTooltipInfos(items) { return items.data.map(((appointment, index) => { var _items$settings; const targeted = _extends({}, appointment); if ((null === (_items$settings = items.settings) || void 0 === _items$settings ? void 0 : _items$settings.length) > 0) { const { info: info } = items.settings[index]; this.instance._dataAccessors.set("startDate", targeted, info.sourceAppointment.startDate); this.instance._dataAccessors.set("endDate", targeted, info.sourceAppointment.endDate) } return new _m_data_structures.AppointmentTooltipInfo(appointment, targeted, items.colors[index], items.settings[index]) })) } _onButtonClick(e, options) { const $button = (0, _renderer.default)(e.element); this.instance.showAppointmentTooltipCore($button, $button.data("items"), this._getExtraOptionsForTooltip(options, $button)) } _getExtraOptionsForTooltip(options, $appointmentCollector) { return { clickEvent: this._clickEvent(options.onAppointmentClick).bind(this), dragBehavior: options.allowDrag && this._createTooltipDragBehavior($appointmentCollector).bind(this), dropDownAppointmentTemplate: this.instance.option().dropDownAppointmentTemplate, isButtonClick: true, _loopFocus: true } } _clickEvent(onAppointmentClick) { return e => { const clickEventArgs = this.instance._createEventArgs(e); onAppointmentClick(clickEventArgs) } } _createTooltipDragBehavior($appointmentCollector) { return e => { const $element = (0, _renderer.default)(e.element); const $schedulerElement = (0, _renderer.default)(this.instance.element()); const workSpace = this.instance.getWorkSpace(); const initialPosition = (0, _translator.locate)($appointmentCollector); const options = { filter: `.${_constants.LIST_ITEM_CLASS}`, isSetCursorOffset: true, initialPosition: initialPosition, getItemData: itemElement => { var _$$data; return null === (_$$data = (0, _renderer.default)(itemElement).data(_constants.LIST_ITEM_DATA_KEY)) || void 0 === _$$data ? void 0 : _$$data.appointment }, getItemSettings: (_, event) => event.itemSettings }; workSpace._createDragBehaviorBase($element, $schedulerElement, options) } } _getCollectorOffset(width, cellWidth) { return cellWidth - width - this._getCollectorRightOffset() } _getCollectorRightOffset() { return this.instance.getRenderingStrategyInstance()._isCompactTheme() ? 1 : 5 } _setPosition(element, position) { (0, _translator.move)(element, { top: position.top, left: position.left }) } _createCompactButton(template, options) { const $button = this._createCompactButtonElement(options); return this.instance._createComponent($button, _button.default, { type: "default", width: options.width, height: options.height, onClick: e => this._onButtonClick(e, options), template: this._renderTemplate(template, options.items, options.isCompact) }) } _createCompactButtonElement(_ref) { let { isCompact: isCompact, $container: $container, coordinates: coordinates, sortedIndex: sortedIndex, items: items } = _ref; const appointmentDate = this._getDateText(items.data[0]); const result = (0, _renderer.default)("
").addClass("dx-scheduler-appointment-collector").attr("aria-roledescription", appointmentDate).toggleClass("dx-scheduler-appointment-collector-compact", isCompact).appendTo($container); result.data(_constants.APPOINTMENT_SETTINGS_KEY, { sortedIndex: sortedIndex }); this._setPosition(result, coordinates); return result } _renderTemplate(template, items, isCompact) { return new _function_template.FunctionTemplate((options => template.render({ model: { appointmentCount: items.data.length, items: items.data, isCompact: isCompact }, container: options.container }))) } _createTemplate(count, isCompact) { this._initButtonTemplate(count, isCompact); return this.instance._getAppointmentTemplate("appointmentCollectorTemplate") } _initButtonTemplate(count, isCompact) { this.instance._templateManager.addDefaultTemplates({ appointmentCollector: new _function_template.FunctionTemplate((options => this._createButtonTemplate(count, (0, _renderer.default)(options.container), isCompact))) }) } _createButtonTemplate(appointmentCount, element, isCompact) { const text = isCompact ? appointmentCount : _message.default.getFormatter("dxScheduler-moreAppointments")(appointmentCount); return element.append((0, _renderer.default)("").text(text)).addClass("dx-scheduler-appointment-collector-content") } _localizeDate(date) { return `${_date.default.format(date,"monthAndDay")}, ${_date.default.format(date,"year")}` } _getStartDate(appointment) { const date = appointment.startDate; return date ? new Date(date) : null } _getEndDate(appointment) { const date = appointment.endDate; return date ? new Date(date) : null } _getDateText(appointment) { const startDate = this.instance._dataAccessors.get("startDate", appointment); const endDate = this.instance._dataAccessors.get("endDate", appointment); const startDateText = startDate ? this._localizeDate(startDate) : ""; const endDateText = endDate ? this._localizeDate(endDate) : ""; const dateText = startDateText === endDateText ? `${startDateText}` : `${startDateText} - ${endDateText}`; return `${dateText}` } } }, 95965: /*!***************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/scheduler/m_data_structures.js ***! \***************************************************************************************/ function(__unused_webpack_module, exports) { Object.defineProperty(exports, "__esModule", { value: true }); exports.AppointmentTooltipInfo = void 0; exports.AppointmentTooltipInfo = class { constructor(appointment) { let targetedAppointment = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : void 0; let color = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : []; let settings = arguments.length > 3 && void 0 !== arguments[3] ? arguments[3] : []; this.appointment = appointment; this.targetedAppointment = targetedAppointment; this.color = color; this.settings = settings } } }, 19576: /*!************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/scheduler/m_date_adapter.js ***! \************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _date = (e = __webpack_require__( /*! ../../core/utils/date */ 41380), e && e.__esModule ? e : { default: e }); var e; const toMs = _date.default.dateToMilliseconds; class DateAdapterCore { constructor(source) { this._source = new Date(source.getTime ? source.getTime() : source) } get source() { return this._source } result() { return this._source } getTimezoneOffset() { let format = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : void 0; const value = this._source.getTimezoneOffset(); if ("minute" === format) { return value * toMs("minute") } return value } getTime() { return this._source.getTime() } setTime(value) { this._source.setTime(value); return this } addTime(value) { this._source.setTime(this._source.getTime() + value); return this } setMinutes(value) { this._source.setMinutes(value); return this } addMinutes(value) { this._source.setMinutes(this._source.getMinutes() + value); return this } subtractMinutes(value) { this._source.setMinutes(this._source.getMinutes() - value); return this } } exports.default = date => new DateAdapterCore(date) }, 73922: /*!*******************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/scheduler/m_loading.js ***! \*******************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.hide = function() { if (!loading) { return (new _deferred.Deferred).resolve() } return loading.hide().done(removeLoadPanel).promise() }; exports.show = function(options) { removeLoadPanel(); loading = createLoadPanel(options); return loading.show() }; var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../core/renderer */ 64553)); var _deferred = __webpack_require__( /*! ../../core/utils/deferred */ 87739); var _view_port = __webpack_require__( /*! ../../core/utils/view_port */ 55355); var _load_panel = _interopRequireDefault(__webpack_require__( /*! ../../ui/load_panel */ 31876)); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } let loading = null; const createLoadPanel = function(options) { return new _load_panel.default((0, _renderer.default)("
").appendTo(options && options.container || (0, _view_port.value)()), options) }; const removeLoadPanel = function() { if (!loading) { return } loading.$element().remove(); loading = null } }, 55122: /*!**********************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/scheduler/m_recurrence.js ***! \**********************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.getRecurrenceProcessor = getRecurrenceProcessor; var _errors = _interopRequireDefault(__webpack_require__( /*! ../../core/errors */ 87129)); var _date = _interopRequireDefault(__webpack_require__( /*! ../../core/utils/date */ 41380)); var _iterator = __webpack_require__( /*! ../../core/utils/iterator */ 21274); var _rrule = __webpack_require__( /*! rrule */ 4755); var _m_utils_time_zone = _interopRequireDefault(__webpack_require__( /*! ./m_utils_time_zone */ 18648)); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } const toMs = _date.default.dateToMilliseconds; const ruleNames = ["freq", "interval", "byday", "byweekno", "byyearday", "bymonth", "bymonthday", "count", "until", "byhour", "byminute", "bysecond", "bysetpos", "wkst"]; const freqNames = ["DAILY", "WEEKLY", "MONTHLY", "YEARLY", "SECONDLY", "MINUTELY", "HOURLY"]; const days = { SU: 0, MO: 1, TU: 2, WE: 3, TH: 4, FR: 5, SA: 6 }; const loggedWarnings = []; const RRULE_BROKEN_TIMEZONES = ["Etc/GMT-13", "MIT", "Pacific/Apia", "Pacific/Enderbury", "Pacific/Tongatapu", "Etc/GMT-14", "Pacific/Kiritimati"]; let recurrence = null; function getRecurrenceProcessor() { if (!recurrence) { recurrence = new RecurrenceProcessor } return recurrence } class RecurrenceProcessor { constructor() { this.rRule = null; this.rRuleSet = null; this.validator = new RecurrenceValidator } generateDates(options) { const recurrenceRule = this.evalRecurrenceRule(options.rule); const { rule: rule } = recurrenceRule; if (!recurrenceRule.isValid || !rule.freq) { return [] } const rruleIntervalParams = this._createRruleIntervalParams(options); this._initializeRRule(options, rruleIntervalParams.startIntervalDate, rule.until); return this.rRuleSet.between(rruleIntervalParams.minViewDate, rruleIntervalParams.maxViewDate, true).filter((date => date.getTime() + rruleIntervalParams.appointmentDuration >= rruleIntervalParams.minViewTime)).map((date => this._convertRruleResult(rruleIntervalParams, options, date))) } _createRruleIntervalParams(options) { const { start: start, min: min, max: max, appointmentTimezoneOffset: appointmentTimezoneOffset } = options; const clientOffsets_startDate = _m_utils_time_zone.default.getClientTimezoneOffset(start), clientOffsets_minViewDate = _m_utils_time_zone.default.getClientTimezoneOffset(min), clientOffsets_maxViewDate = _m_utils_time_zone.default.getClientTimezoneOffset(max); const duration = options.end ? options.end.getTime() - options.start.getTime() : 0; const startIntervalDate = _m_utils_time_zone.default.setOffsetsToDate(options.start, [-clientOffsets_startDate, appointmentTimezoneOffset]); const minViewTime = options.min.getTime() - clientOffsets_minViewDate + appointmentTimezoneOffset; const minViewDate = new Date(minViewTime - duration); const maxViewDate = _m_utils_time_zone.default.setOffsetsToDate(options.max, [-clientOffsets_maxViewDate, appointmentTimezoneOffset]); const startDateDSTDifferenceMs = _m_utils_time_zone.default.getDiffBetweenClientTimezoneOffsets(options.start, startIntervalDate); const switchToSummerTime = startDateDSTDifferenceMs < 0; return { startIntervalDate: startIntervalDate, minViewTime: minViewTime, minViewDate: minViewDate, maxViewDate: maxViewDate, startIntervalDateDSTShift: switchToSummerTime ? 0 : startDateDSTDifferenceMs, appointmentDuration: duration } } _convertRruleResult(rruleIntervalParams, options, rruleDate) { const convertedBackDate = _m_utils_time_zone.default.setOffsetsToDate(rruleDate, [...this._getLocalMachineOffset(rruleDate), -options.appointmentTimezoneOffset, rruleIntervalParams.startIntervalDateDSTShift]); const convertedDateDSTShift = _m_utils_time_zone.default.getDiffBetweenClientTimezoneOffsets(convertedBackDate, rruleDate); const switchToSummerTime = convertedDateDSTShift < 0; const resultDate = _m_utils_time_zone.default.setOffsetsToDate(convertedBackDate, [convertedDateDSTShift]); const resultDateDSTShift = _m_utils_time_zone.default.getDiffBetweenClientTimezoneOffsets(resultDate, convertedBackDate); if (resultDateDSTShift && switchToSummerTime) { return new Date(resultDate.getTime() + resultDateDSTShift) } return resultDate } _getLocalMachineOffset(rruleDate) { const machineTimezoneOffset = _m_utils_time_zone.default.getClientTimezoneOffset(rruleDate); const machineTimezoneName = _date.default.getMachineTimezoneName(); const result = [machineTimezoneOffset]; const isTimezoneOffsetInBrokenRange = machineTimezoneOffset / 36e5 <= -13; const isTimezoneNameInBrokenNames = !machineTimezoneName || RRULE_BROKEN_TIMEZONES.some((timezone => machineTimezoneName.includes(timezone))); if (isTimezoneOffsetInBrokenRange && isTimezoneNameInBrokenNames) { result.push(-864e5) } return result } hasRecurrence(options) { return !!this.generateDates(options).length } evalRecurrenceRule(rule) { const result = { rule: {}, isValid: false }; if (rule) { result.rule = this._parseRecurrenceRule(rule); result.isValid = this.validator.validateRRule(result.rule, rule) } return result } isValidRecurrenceRule(rule) { return this.evalRecurrenceRule(rule).isValid } daysFromByDayRule(rule) { let result = []; if (rule.byday) { if (Array.isArray(rule.byday)) { result = rule.byday } else { result = rule.byday.split(",") } } return result.map((item => { const match = item.match(/[A-Za-z]+/); return !!match && match[0] })).filter((item => !!item)) } getAsciiStringByDate(date) { const currentOffset = date.getTimezoneOffset() * toMs("minute"); const offsetDate = new Date(date.getTime() + currentOffset); return `${offsetDate.getFullYear()+`0${offsetDate.getMonth()+1}`.slice(-2)+`0${offsetDate.getDate()}`.slice(-2)}T${`0${offsetDate.getHours()}`.slice(-2)}${`0${offsetDate.getMinutes()}`.slice(-2)}${`0${offsetDate.getSeconds()}`.slice(-2)}Z` } getRecurrenceString(object) { if (!object || !object.freq) { return } let result = ""; for (const field in object) { let value = object[field]; if ("interval" === field && value < 2) { continue } if ("until" === field) { value = this.getAsciiStringByDate(value) } result += `${field}=${value};` } result = result.substring(0, result.length - 1); return result.toUpperCase() } _parseExceptionToRawArray(value) { return value.match(/(\d{4})(\d{2})(\d{2})(T(\d{2})(\d{2})(\d{2}))?(Z)?/) } getDateByAsciiString(exceptionText) { if ("string" !== typeof exceptionText) { return exceptionText } const result = this._parseExceptionToRawArray(exceptionText); if (!result) { return null } const [year, month, date, hours, minutes, seconds, isUtc] = this._createDateTuple(result); if (isUtc) { return new Date(Date.UTC(year, month, date, hours, minutes, seconds)) } return new Date(year, month, date, hours, minutes, seconds) } _dispose() { if (this.rRuleSet) { delete this.rRuleSet; this.rRuleSet = null } if (this.rRule) { delete this.rRule; this.rRule = null } } _getTimeZoneOffset() { return (new Date).getTimezoneOffset() } _initializeRRule(options, startDateUtc, until) { const ruleOptions = _rrule.RRule.parseString(options.rule); const { firstDayOfWeek: firstDayOfWeek } = options; ruleOptions.dtstart = startDateUtc; if (!ruleOptions.wkst && firstDayOfWeek) { const weekDayNumbers = [6, 0, 1, 2, 3, 4, 5]; ruleOptions.wkst = weekDayNumbers[firstDayOfWeek] } if (until) { ruleOptions.until = _m_utils_time_zone.default.setOffsetsToDate(until, [-_m_utils_time_zone.default.getClientTimezoneOffset(until), options.appointmentTimezoneOffset]) } this._createRRule(ruleOptions); if (options.exception) { const exceptionStrings = options.exception; const exceptionDates = exceptionStrings.split(",").map((rule => this.getDateByAsciiString(rule))); exceptionDates.forEach((date => { const rruleTimezoneOffsets = "function" === typeof options.getExceptionDateTimezoneOffsets ? options.getExceptionDateTimezoneOffsets(date) : [-_m_utils_time_zone.default.getClientTimezoneOffset(date), options.appointmentTimezoneOffset]; const exceptionDateInPseudoUtc = _m_utils_time_zone.default.setOffsetsToDate(date, rruleTimezoneOffsets); this.rRuleSet.exdate(exceptionDateInPseudoUtc) })) } } _createRRule(ruleOptions) { this._dispose(); this.rRuleSet = new _rrule.RRuleSet; this.rRule = new _rrule.RRule(ruleOptions); this.rRuleSet.rrule(this.rRule) } _parseRecurrenceRule(recurrence) { const ruleObject = {}; const ruleParts = recurrence.split(";"); for (let i = 0, len = ruleParts.length; i < len; i++) { const rule = ruleParts[i].split("="); const ruleName = rule[0].toLowerCase(); const ruleValue = rule[1]; ruleObject[ruleName] = ruleValue } const count = parseInt(ruleObject.count); if (!isNaN(count)) { ruleObject.count = count } if (ruleObject.interval) { const interval = parseInt(ruleObject.interval); if (!isNaN(interval)) { ruleObject.interval = interval } } else { ruleObject.interval = 1 } if (ruleObject.freq && ruleObject.until) { ruleObject.until = this.getDateByAsciiString(ruleObject.until) } return ruleObject } _createDateTuple(parseResult) { const isUtc = void 0 !== parseResult[8]; parseResult.shift(); if (void 0 === parseResult[3]) { parseResult.splice(3) } else { parseResult.splice(3, 1); parseResult.splice(6) } parseResult[1]--; parseResult.unshift(null); return [parseInt(parseResult[1]), parseInt(parseResult[2]), parseInt(parseResult[3]), parseInt(parseResult[4]) || 0, parseInt(parseResult[5]) || 0, parseInt(parseResult[6]) || 0, isUtc] } } class RecurrenceValidator { validateRRule(rule, recurrence) { if (this._brokenRuleNameExists(rule) || !freqNames.includes(rule.freq) || this._wrongCountRule(rule) || this._wrongIntervalRule(rule) || this._wrongDayOfWeek(rule) || this._wrongByMonthDayRule(rule) || this._wrongByMonth(rule) || this._wrongUntilRule(rule)) { this._logBrokenRule(recurrence); return false } return true } _wrongUntilRule(rule) { let wrongUntil = false; const { until: until } = rule; if (void 0 !== until && !(until instanceof Date)) { wrongUntil = true } return wrongUntil } _wrongCountRule(rule) { let wrongCount = false; const { count: count } = rule; if (count && "string" === typeof count) { wrongCount = true } return wrongCount } _wrongByMonthDayRule(rule) { let wrongByMonthDay = false; const byMonthDay = rule.bymonthday; if (byMonthDay && isNaN(parseInt(byMonthDay))) { wrongByMonthDay = true } return wrongByMonthDay } _wrongByMonth(rule) { let wrongByMonth = false; const byMonth = rule.bymonth; if (byMonth && isNaN(parseInt(byMonth))) { wrongByMonth = true } return wrongByMonth } _wrongIntervalRule(rule) { let wrongInterval = false; const { interval: interval } = rule; if (interval && "string" === typeof interval) { wrongInterval = true } return wrongInterval } _wrongDayOfWeek(rule) { const byDay = rule.byday; const daysByRule = getRecurrenceProcessor().daysFromByDayRule(rule); let brokenDaysExist = false; if ("" === byDay) { brokenDaysExist = true }(0, _iterator.each)(daysByRule, ((_, day) => { if (!Object.prototype.hasOwnProperty.call(days, day)) { brokenDaysExist = true; return false } return })); return brokenDaysExist } _brokenRuleNameExists(rule) { let brokenRuleExists = false; (0, _iterator.each)(rule, (ruleName => { if (!ruleNames.includes(ruleName)) { brokenRuleExists = true; return false } return })); return brokenRuleExists } _logBrokenRule(recurrence) { if (!loggedWarnings.includes(recurrence)) { _errors.default.log("W0006", recurrence); loggedWarnings.push(recurrence) } } } }, 84056: /*!*****************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/scheduler/m_recurrence_editor.js ***! \*****************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; __webpack_require__( /*! ../../ui/radio_group */ 84798); var _date = _interopRequireDefault(__webpack_require__( /*! ../../common/core/localization/date */ 38662)); var _message = _interopRequireDefault(__webpack_require__( /*! ../../common/core/localization/message */ 4671)); var _component_registrator = _interopRequireDefault(__webpack_require__( /*! ../../core/component_registrator */ 92848)); var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../core/renderer */ 64553)); var _date2 = _interopRequireDefault(__webpack_require__( /*! ../../core/utils/date */ 41380)); var _extend = __webpack_require__( /*! ../../core/utils/extend */ 52576); var _type = __webpack_require__( /*! ../../core/utils/type */ 11528); var _button_group = _interopRequireDefault(__webpack_require__( /*! ../../ui/button_group */ 17809)); var _editor = _interopRequireDefault(__webpack_require__( /*! ../../ui/editor/editor */ 78694)); var _form = _interopRequireDefault(__webpack_require__( /*! ../../ui/form */ 74075)); var _themes = __webpack_require__( /*! ../../ui/themes */ 52071); var _m_recurrence = __webpack_require__( /*! ./m_recurrence */ 55122); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } const INTERVAL_EDITOR = "dx-recurrence-numberbox-interval"; const frequenciesMessages = [{ recurrence: "dxScheduler-recurrenceHourly", value: "hourly" }, { recurrence: "dxScheduler-recurrenceDaily", value: "daily" }, { recurrence: "dxScheduler-recurrenceWeekly", value: "weekly" }, { recurrence: "dxScheduler-recurrenceMonthly", value: "monthly" }, { recurrence: "dxScheduler-recurrenceYearly", value: "yearly" }]; const frequencies = frequenciesMessages.map((item => ({ text: () => _message.default.format(item.recurrence), value: item.value }))); const repeatEndTypes = [{ type: "never" }, { type: "until" }, { type: "count" }]; const days = ["SU", "MO", "TU", "WE", "TH", "FR", "SA"]; const getStylingModeFunc = () => (0, _themes.isFluent)((0, _themes.current)()) ? "filled" : void 0; class RecurrenceRule { constructor(rule) { this._recurrenceProcessor = (0, _m_recurrence.getRecurrenceProcessor)(); this._recurrenceProcessor = (0, _m_recurrence.getRecurrenceProcessor)(); this._recurrenceRule = this._recurrenceProcessor.evalRecurrenceRule(rule).rule } makeRules(string) { this._recurrenceRule = this._recurrenceProcessor.evalRecurrenceRule(string).rule } makeRule(field, value) { if (!value || Array.isArray(value) && !value.length) { delete this._recurrenceRule[field]; return } if ((0, _type.isDefined)(field)) { if ("until" === field) { delete this._recurrenceRule.count } if ("count" === field) { delete this._recurrenceRule.until } this._recurrenceRule[field] = value } } getRepeatEndRule() { const rules = this._recurrenceRule; if ("count" in rules) { return "count" } if ("until" in rules) { return "until" } return "never" } getRecurrenceString() { return this._recurrenceProcessor.getRecurrenceString(this._recurrenceRule) } getRules() { return this._recurrenceRule } getDaysFromByDayRule() { return this._recurrenceProcessor.daysFromByDayRule(this._recurrenceRule) } } class RecurrenceEditor extends _editor.default { _getDefaultOptions() { const defaultOptions = super._getDefaultOptions(); return (0, _extend.extend)(defaultOptions, { value: null, startDate: new Date, firstDayOfWeek: void 0 }) } _getFirstDayOfWeek() { const firstDayOfWeek = this.option("firstDayOfWeek"); return (0, _type.isDefined)(firstDayOfWeek) ? firstDayOfWeek : _date.default.firstDayOfWeekIndex() } _createComponent(element, name) { let config = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : {}; this._extendConfig(config, { readOnly: this.option("readOnly") }); return super._createComponent(element, name, config) } _init() { super._init(); this._recurrenceRule = new RecurrenceRule(this.option("value")) } _render() { super._render(); this.$element().addClass("dx-recurrence-editor"); this._$container = (0, _renderer.default)("
").addClass("dx-recurrence-editor-container").appendTo(this.$element()); this._prepareEditors(); this._renderEditors(this._$container); this._updateRepeatInputAriaLabel() } getEditorByField(fieldName) { let editor = this.getRecurrenceForm().getEditor(fieldName); if (!(0, _type.isDefined)(editor)) { if ("byday" === fieldName) { editor = this._weekEditor } } return editor } _prepareEditors() { const freq = (this._recurrenceRule.getRules().freq || frequenciesMessages[1].value).toLowerCase(); this._editors = [this._createFreqEditor(freq), this._createIntervalEditor(freq), this._createRepeatOnLabel(freq), { itemType: "group", cssClass: "dx-recurrence-repeat-on", colCount: 2, colCountByScreen: { xs: 2 }, items: this._createRepeatOnEditor(freq) }, { itemType: "group", colCount: 2, items: this._createRepeatEndEditor() }]; return this._editors } _createFreqEditor(freq) { return { dataField: "freq", name: "FREQ", editorType: "dxSelectBox", cssClass: "dx-recurrence-selectbox-freq", editorOptions: { stylingMode: getStylingModeFunc(), items: frequencies, value: freq, field: "freq", valueExpr: "value", displayExpr: "text", layout: "horizontal", elementAttr: { class: "dx-recurrence-selectbox-freq" }, onValueChanged: args => this._valueChangedHandler(args) }, label: { text: _message.default.format("dxScheduler-editorLabelRecurrence") } } } _createIntervalEditor(freq) { const interval = this._recurrenceRule.getRules().interval || 1; return { itemType: "group", colCount: 2, cssClass: `${INTERVAL_EDITOR}-wrapper`, colCountByScreen: { xs: 2 }, items: [{ dataField: "interval", editorType: "dxNumberBox", editorOptions: { stylingMode: getStylingModeFunc(), format: "#", width: 90, min: 1, field: "interval", value: interval, showSpinButtons: true, useLargeSpinButtons: false, elementAttr: { class: INTERVAL_EDITOR }, onValueChanged: args => this._valueChangedHandler(args) }, label: { text: _message.default.format("dxScheduler-recurrenceRepeatEvery") } }, { name: "intervalLabel", cssClass: `${INTERVAL_EDITOR}-label`, template: () => _message.default.format(`dxScheduler-recurrenceRepeat${freq.charAt(0).toUpperCase()}${freq.substr(1).toLowerCase()}`) }] } } _createRepeatOnLabel(freq) { return { itemType: "group", cssClass: "dx-recurrence-repeat-on-label", items: [{ name: "repeatOnLabel", colSpan: 2, template: () => _message.default.format("dxScheduler-recurrenceRepeatOn"), visible: freq && "daily" !== freq && "hourly" !== freq }] } } _createRepeatOnEditor(freq) { return [this._createByDayEditor(freq), this._createByMonthEditor(freq), this._createByMonthDayEditor(freq)] } _createByDayEditor(freq) { return { dataField: "byday", colSpan: 2, template: (_, itemElement) => { const firstDayOfWeek = this._getFirstDayOfWeek(); const byDay = this._daysOfWeekByRules(); const localDaysNames = _date.default.getDayNames("abbreviated"); const dayNames = days.slice(firstDayOfWeek).concat(days.slice(0, firstDayOfWeek)); const itemsButtonGroup = localDaysNames.slice(firstDayOfWeek).concat(localDaysNames.slice(0, firstDayOfWeek)).map(((item, index) => ({ text: item, key: dayNames[index] }))); this._$repeatOnWeek = (0, _renderer.default)("
").addClass("dx-recurrence-button-group").appendTo(itemElement); this._weekEditor = this._createComponent(this._$repeatOnWeek, _button_group.default, { items: itemsButtonGroup, field: "byday", selectionMode: "multiple", selectedItemKeys: byDay, keyExpr: "key", onSelectionChanged: e => { const selectedItemKeys = e.component.option("selectedItemKeys"); const selectedKeys = null !== selectedItemKeys && void 0 !== selectedItemKeys && selectedItemKeys.length ? selectedItemKeys : this._getDefaultByDayValue(); this._recurrenceRule.makeRule("byday", selectedKeys); this._changeEditorValue() } }) }, visible: "weekly" === freq, label: { visible: false } } } _createByMonthEditor(freq) { const monthsName = _date.default.getMonthNames("wide"); const months = [...Array(12)].map(((_, i) => ({ value: `${i+1}`, text: monthsName[i] }))); return { dataField: "bymonth", editorType: "dxSelectBox", editorOptions: { stylingMode: getStylingModeFunc(), field: "bymonth", items: months, value: this._monthOfYearByRules(), width: 120, displayExpr: "text", valueExpr: "value", elementAttr: { class: "dx-recurrence-selectbox-month-of-year" }, onValueChanged: args => this._valueChangedHandler(args) }, visible: "yearly" === freq, label: { visible: false } } } _createByMonthDayEditor(freq) { return { dataField: "bymonthday", editorType: "dxNumberBox", editorOptions: { stylingMode: getStylingModeFunc(), min: 1, max: 31, format: "#", width: 90, field: "bymonthday", showSpinButtons: true, useLargeSpinButtons: false, value: this._dayOfMonthByRules(), elementAttr: { class: "dx-recurrence-numberbox-day-of-month" }, onValueChanged: args => this._valueChangedHandler(args) }, visible: "monthly" === freq || "yearly" === freq, label: { visible: false } } } _createRepeatEndEditor() { const repeatType = this._recurrenceRule.getRepeatEndRule(); return [{ colSpan: 2, template: _message.default.format("dxScheduler-recurrenceEnd") }, { colSpan: 1, label: { visible: false }, dataField: "repeatEnd", editorType: "dxRadioGroup", editorOptions: { items: repeatEndTypes, value: repeatType, valueExpr: "type", field: "repeatEnd", itemTemplate: itemData => { if ("count" === itemData.type) { return _message.default.format("dxScheduler-recurrenceAfter") } if ("until" === itemData.type) { return _message.default.format("dxScheduler-recurrenceOn") } return _message.default.format("dxScheduler-recurrenceNever") }, layout: "vertical", elementAttr: { class: "dx-recurrence-radiogroup-repeat-type" }, onValueChanged: args => this._repeatEndValueChangedHandler(args) } }, { colSpan: 1, itemType: "group", items: [this._getRepeatUntilEditorOptions(), this._getRepeatCountEditorOptions()] }] } _renderEditors($container) { this._recurrenceForm = this._createComponent($container, _form.default, { items: this._editors, showValidationSummary: false, scrollingEnabled: true, showColonAfterLabel: false, labelLocation: "top" }); this._changeRepeatEndInputsVisibility() } getRecurrenceForm() { return this._recurrenceForm } changeValueByVisibility(value) { if (value) { if (!this.option("value")) { this._handleDefaults() } } else { this._recurrenceRule.makeRules(""); this.option("value", "") } } _handleDefaults() { this._recurrenceRule.makeRule("freq", frequenciesMessages[1].value); this._changeEditorValue() } _changeEditorValue() { this.option("value", this._recurrenceRule.getRecurrenceString() || "") } _daysOfWeekByRules() { let daysByRule = this._recurrenceRule.getDaysFromByDayRule(); if (!daysByRule.length) { daysByRule = this._getDefaultByDayValue() } return daysByRule } _getDefaultByDayValue() { const startDate = this.option("startDate"); const startDay = startDate.getDay(); return [days[startDay]] } _dayOfMonthByRules() { let dayByRule = this._recurrenceRule.getRules().bymonthday; if (!dayByRule) { dayByRule = this.option("startDate").getDate() } return dayByRule } _monthOfYearByRules() { let monthByRule = this._recurrenceRule.getRules().bymonth; if (!monthByRule) { monthByRule = this.option("startDate").getMonth() + 1 } return String(monthByRule) } _repeatEndValueChangedHandler(args) { const { value: value } = args; this._changeRepeatEndInputsVisibility(value); if ("until" === value) { this._recurrenceRule.makeRule(value, this._getUntilValue()) } if ("count" === value) { this._recurrenceRule.makeRule(value, this._recurrenceForm.option("formData.count")) } if ("never" === value) { this._recurrenceRule.makeRule("count", ""); this._recurrenceRule.makeRule("until", "") } this._changeEditorValue(); this._updateRepeatInputAriaLabel() } _changeRepeatEndInputsVisibility() { let value = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : this._recurrenceRule.getRepeatEndRule(); if ("until" === value) { this._recurrenceForm.itemOption("until", "visible", true); this._recurrenceForm.itemOption("count", "visible", false) } if ("count" === value) { this._recurrenceForm.itemOption("until", "visible", false); this._recurrenceForm.itemOption("count", "visible", true) } if ("never" === value) { this._recurrenceForm.itemOption("until", "visible", false); this._recurrenceForm.itemOption("count", "visible", false) } } _getRepeatCountEditorOptions() { const count = this._recurrenceRule.getRules().count || 1; return { dataField: "count", cssClass: "dx-recurrence-numberbox-repeat-count", label: { visible: false }, editorType: "dxNumberBox", editorOptions: { stylingMode: getStylingModeFunc(), field: "count", format: `# ${_message.default.format("dxScheduler-recurrenceRepeatCount")}`, width: "100%", min: 1, showSpinButtons: true, useLargeSpinButtons: false, value: count, onValueChanged: this._repeatCountValueChangeHandler.bind(this), inputAttr: { "aria-label": _message.default.format("dxScheduler-recurrenceOccurrenceLabel") } } } } _updateRepeatInputAriaLabel() { const radioButtons = this.getEditorByField("repeatEnd").itemElements(); const untilLabel = _message.default.format("dxScheduler-recurrenceOn"); const untilValue = this._recurrenceForm.getEditor("until").option("value"); const untilValueFormat = `${_date.default.format(untilValue,"d")} ${_date.default.format(untilValue,"monthAndYear")}`; const isUntilVisible = this._recurrenceForm.itemOption("until").visible; const countLabel = _message.default.format("dxScheduler-recurrenceAfter"); const countPostfix = _message.default.format("dxScheduler-recurrenceRepeatCount"); const countValue = this._recurrenceForm.getEditor("count").option("value"); const isCountVisible = this._recurrenceForm.itemOption("count").visible; radioButtons[1].setAttribute("aria-label", isUntilVisible ? `${untilLabel} ${untilValueFormat}` : untilLabel); radioButtons[2].setAttribute("aria-label", isCountVisible ? `${countLabel} ${countValue} ${countPostfix}` : countLabel) } _repeatCountValueChangeHandler(args) { if ("count" === this._recurrenceRule.getRepeatEndRule()) { const { value: value } = args; this._recurrenceRule.makeRule("count", value); this._changeEditorValue(); this._updateRepeatInputAriaLabel() } } _getRepeatUntilEditorOptions() { const until = this._getUntilValue(); return { dataField: "until", label: { visible: false }, cssClass: "dx-recurrence-datebox-until-date", editorType: "dxDateBox", editorOptions: { stylingMode: getStylingModeFunc(), field: "until", value: until, type: "date", width: "100%", onValueChanged: this._repeatUntilValueChangeHandler.bind(this), calendarOptions: { firstDayOfWeek: this._getFirstDayOfWeek() }, useMaskBehavior: true, inputAttr: { "aria-label": _message.default.format("dxScheduler-recurrenceUntilDateLabel") } } } } _formatUntilDate(date) { const untilDate = this._recurrenceRule.getRules().until; const isSameDate = _date2.default.sameDate(untilDate, date); return untilDate && isSameDate ? date : _date2.default.setToDayEnd(date) } _repeatUntilValueChangeHandler(args) { if ("until" === this._recurrenceRule.getRepeatEndRule()) { const dateInTimeZone = this._formatUntilDate(new Date(args.value)); const getStartDateTimeZone = this.option("getStartDateTimeZone"); const appointmentTimeZone = getStartDateTimeZone(); const path = appointmentTimeZone ? "fromAppointment" : "fromGrid"; const dateInLocaleTimeZone = this.option("timeZoneCalculator").createDate(dateInTimeZone, path, appointmentTimeZone); this._recurrenceRule.makeRule("until", dateInLocaleTimeZone); this._changeEditorValue(); this._updateRepeatInputAriaLabel() } } _valueChangedHandler(args) { const { value: value, previousValue: previousValue } = args; const field = args.component.option("field"); if (!this.option("visible")) { this.option("value", "") } else { this._recurrenceRule.makeRule(field, value); if ("freq" === field) { this._makeRepeatOnRule(value); this._changeRepeatOnVisibility(value, previousValue) } this._changeEditorValue() } } _makeRepeatOnRule(value) { if ("daily" === value || "hourly" === value) { this._recurrenceRule.makeRule("byday", ""); this._recurrenceRule.makeRule("bymonth", ""); this._recurrenceRule.makeRule("bymonthday", "") } if ("weekly" === value) { this._recurrenceRule.makeRule("byday", this._daysOfWeekByRules()); this._recurrenceRule.makeRule("bymonth", ""); this._recurrenceRule.makeRule("bymonthday", "") } if ("monthly" === value) { this._recurrenceRule.makeRule("bymonthday", this._dayOfMonthByRules()); this._recurrenceRule.makeRule("bymonth", ""); this._recurrenceRule.makeRule("byday", "") } if ("yearly" === value) { this._recurrenceRule.makeRule("bymonthday", this._dayOfMonthByRules()); this._recurrenceRule.makeRule("bymonth", this._monthOfYearByRules()); this._recurrenceRule.makeRule("byday", "") } } _optionChanged(args) { var _this$_recurrenceForm, _this$_weekEditor; switch (args.name) { case "readOnly": null === (_this$_recurrenceForm = this._recurrenceForm) || void 0 === _this$_recurrenceForm || _this$_recurrenceForm.option("readOnly", args.value); null === (_this$_weekEditor = this._weekEditor) || void 0 === _this$_weekEditor || _this$_weekEditor.option("readOnly", args.value); super._optionChanged(args); break; case "value": this._recurrenceRule.makeRules(args.value); this._changeRepeatIntervalLabel(); this._changeRepeatEndInputsVisibility(); this._changeEditorsValue(this._recurrenceRule.getRules()); super._optionChanged(args); break; case "startDate": this._makeRepeatOnRule(this._recurrenceRule.getRules().freq); if ((0, _type.isDefined)(this._recurrenceRule.getRecurrenceString())) { this._changeEditorValue() } break; case "firstDayOfWeek": if (this._weekEditor) { const localDaysNames = _date.default.getDayNames("abbreviated"); const dayNames = days.slice(args.value).concat(days.slice(0, args.value)); const itemsButtonGroup = localDaysNames.slice(args.value).concat(localDaysNames.slice(0, args.value)).map(((item, index) => ({ text: item, key: dayNames[index] }))); this._weekEditor.option("items", itemsButtonGroup) } if (this._recurrenceForm.itemOption("until").visible) { this._recurrenceForm.getEditor("until").option("calendarOptions.firstDayOfWeek", this._getFirstDayOfWeek()) } break; default: super._optionChanged(args) } } _changeRepeatOnVisibility(freq, previousFreq) { if (freq !== previousFreq) { this._recurrenceForm.itemOption("byday", "visible", false); this._recurrenceForm.itemOption("bymonthday", "visible", false); this._recurrenceForm.itemOption("bymonth", "visible", false); this._recurrenceForm.itemOption("repeatOnLabel", "visible", freq && "daily" !== freq && "hourly" !== freq); if ("weekly" === freq) { this._recurrenceForm.itemOption("byday", "visible", true) } if ("monthly" === freq) { this._recurrenceForm.itemOption("bymonthday", "visible", true) } if ("yearly" === freq) { this._recurrenceForm.itemOption("bymonthday", "visible", true); this._recurrenceForm.itemOption("bymonth", "visible", true) } } } _changeRepeatIntervalLabel() { const { freq: freq } = this._recurrenceRule.getRules(); freq && this._recurrenceForm.itemOption("intervalLabel", "template", _message.default.format(`dxScheduler-recurrenceRepeat${freq.charAt(0).toUpperCase()}${freq.substr(1).toLowerCase()}`)) } _changeEditorsValue(rules) { this._recurrenceForm.getEditor("freq").option("value", (rules.freq || frequenciesMessages[1].value).toLowerCase()); this._changeDayOfWeekValue(); this._changeDayOfMonthValue(); this._changeMonthOfYearValue(); this._changeIntervalValue(rules.interval); this._changeRepeatCountValue(); this._changeRepeatEndValue(); this._changeRepeatUntilValue() } _changeIntervalValue(value) { this._recurrenceForm.getEditor("interval").option("value", value || 1) } _changeRepeatEndValue() { const repeatType = this._recurrenceRule.getRepeatEndRule(); this._recurrenceForm.getEditor("repeatEnd").option("value", repeatType) } _changeDayOfWeekValue() { const isEditorVisible = this._recurrenceForm.itemOption("byday").visible; if (isEditorVisible) { const days = this._daysOfWeekByRules(); this.getEditorByField("byday").option("selectedItemKeys", days) } } _changeDayOfMonthValue() { const isEditorVisible = this._recurrenceForm.itemOption("bymonthday").visible; if (isEditorVisible) { const day = this._dayOfMonthByRules(); this._recurrenceForm.getEditor("bymonthday").option("value", day) } } _changeMonthOfYearValue() { const isEditorVisible = this._recurrenceForm.itemOption("bymonth").visible; if (isEditorVisible) { const month = this._monthOfYearByRules(); this._recurrenceForm.getEditor("bymonth").option("value", month) } } _changeRepeatCountValue() { const count = this._recurrenceRule.getRules().count || 1; this._recurrenceForm.getEditor("count").option("value", count) } _changeRepeatUntilValue() { this._recurrenceForm.getEditor("until").option("value", this._getUntilValue()) } _getUntilValue() { const untilDate = this._recurrenceRule.getRules().until; if (!untilDate) { return this._formatUntilDate(new Date) } const getStartDateTimeZone = this.option("getStartDateTimeZone"); const appointmentTimeZone = getStartDateTimeZone(); const path = appointmentTimeZone ? "toAppointment" : "toGrid"; return this.option("timeZoneCalculator").createDate(untilDate, path, appointmentTimeZone) } }(0, _component_registrator.default)("dxRecurrenceEditor", RecurrenceEditor); exports.default = RecurrenceEditor }, 21155: /*!*********************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/scheduler/m_scheduler.js ***! \*********************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _visibility_change = __webpack_require__( /*! ../../common/core/events/visibility_change */ 18029); var _date = _interopRequireDefault(__webpack_require__( /*! ../../common/core/localization/date */ 38662)); var _message = _interopRequireDefault(__webpack_require__( /*! ../../common/core/localization/message */ 4671)); var _component_registrator = _interopRequireDefault(__webpack_require__( /*! ../../core/component_registrator */ 92848)); var _config = _interopRequireDefault(__webpack_require__( /*! ../../core/config */ 66636)); var _devices = _interopRequireDefault(__webpack_require__( /*! ../../core/devices */ 65951)); var _element = __webpack_require__( /*! ../../core/element */ 61404); var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../core/renderer */ 64553)); var _bindable_template = __webpack_require__( /*! ../../core/templates/bindable_template */ 27286); var _empty_template = __webpack_require__( /*! ../../core/templates/empty_template */ 48650); var _callbacks = _interopRequireDefault(__webpack_require__( /*! ../../core/utils/callbacks */ 84718)); var _common = __webpack_require__( /*! ../../core/utils/common */ 17781); var _data = __webpack_require__( /*! ../../core/utils/data */ 31e3); var _date2 = _interopRequireDefault(__webpack_require__( /*! ../../core/utils/date */ 41380)); var _date_serialization = _interopRequireDefault(__webpack_require__( /*! ../../core/utils/date_serialization */ 71051)); var _deferred = __webpack_require__( /*! ../../core/utils/deferred */ 87739); var _extend = __webpack_require__( /*! ../../core/utils/extend */ 52576); var _position = __webpack_require__( /*! ../../core/utils/position */ 41639); var _type = __webpack_require__( /*! ../../core/utils/type */ 11528); var _window = __webpack_require__( /*! ../../core/utils/window */ 3104); var _data_helper = _interopRequireDefault(__webpack_require__( /*! ../../data_helper */ 87755)); var _dialog = __webpack_require__( /*! ../../ui/dialog */ 35757); var _themes = __webpack_require__( /*! ../../ui/themes */ 52071); var _ui = _interopRequireDefault(__webpack_require__( /*! ../../ui/widget/ui.errors */ 35185)); var _ui2 = _interopRequireDefault(__webpack_require__( /*! ../../ui/widget/ui.widget */ 11118)); var _date3 = __webpack_require__( /*! ../core/utils/date */ 55594); var _a11y_status_render = __webpack_require__( /*! ./a11y_status/a11y_status_render */ 24988); var _a11y_status_text = __webpack_require__( /*! ./a11y_status/a11y_status_text */ 71883); var _m_form = __webpack_require__( /*! ./appointment_popup/m_form */ 8107); var _m_popup = __webpack_require__( /*! ./appointment_popup/m_popup */ 27483); var _m_appointment_data_provider = __webpack_require__( /*! ./appointments/data_provider/m_appointment_data_provider */ 64836); var _m_appointment_collection = _interopRequireDefault(__webpack_require__( /*! ./appointments/m_appointment_collection */ 5311)); var _constants = __webpack_require__( /*! ./constants */ 25307); var _m_header = __webpack_require__( /*! ./header/m_header */ 84829); var _m_appointments_layout_manager = _interopRequireDefault(__webpack_require__( /*! ./m_appointments_layout_manager */ 17851)); var _m_compact_appointments_helper = __webpack_require__( /*! ./m_compact_appointments_helper */ 64787); var _m_data_structures = __webpack_require__( /*! ./m_data_structures */ 95965); var _m_loading = __webpack_require__( /*! ./m_loading */ 73922); var _m_recurrence = __webpack_require__( /*! ./m_recurrence */ 55122); var _m_subscribes = _interopRequireDefault(__webpack_require__( /*! ./m_subscribes */ 58713)); var _m_utils = __webpack_require__( /*! ./m_utils */ 5327); var _m_utils_time_zone = _interopRequireDefault(__webpack_require__( /*! ./m_utils_time_zone */ 18648)); var _index = __webpack_require__( /*! ./options_validator/index */ 98602); var _index2 = __webpack_require__( /*! ./r1/timezone_calculator/index */ 97777); var _index3 = __webpack_require__( /*! ./r1/utils/index */ 34396); var _m_desktop_tooltip_strategy = __webpack_require__( /*! ./tooltip_strategies/m_desktop_tooltip_strategy */ 93048); var _m_mobile_tooltip_strategy = __webpack_require__( /*! ./tooltip_strategies/m_mobile_tooltip_strategy */ 96588); var _appointment_adapter = __webpack_require__( /*! ./utils/appointment_adapter/appointment_adapter */ 36791); var _appointment_data_accessor = __webpack_require__( /*! ./utils/data_accessor/appointment_data_accessor */ 94077); var _index4 = __webpack_require__( /*! ./utils/index */ 80356); var _is_agenda_workpace_component = __webpack_require__( /*! ./utils/is_agenda_workpace_component */ 24862); var _appointment_groups_utils = __webpack_require__( /*! ./utils/resource_manager/appointment_groups_utils */ 11649); var _group_utils = __webpack_require__( /*! ./utils/resource_manager/group_utils */ 76131); var _popup_utils = __webpack_require__( /*! ./utils/resource_manager/popup_utils */ 10533); var _resource_manager = __webpack_require__( /*! ./utils/resource_manager/resource_manager */ 42409); var _m_agenda = _interopRequireDefault(__webpack_require__( /*! ./workspaces/m_agenda */ 11129)); var _m_timeline_day = _interopRequireDefault(__webpack_require__( /*! ./workspaces/m_timeline_day */ 52515)); var _m_timeline_month = _interopRequireDefault(__webpack_require__( /*! ./workspaces/m_timeline_month */ 23791)); var _m_timeline_week = _interopRequireDefault(__webpack_require__( /*! ./workspaces/m_timeline_week */ 10621)); var _m_timeline_work_week = _interopRequireDefault(__webpack_require__( /*! ./workspaces/m_timeline_work_week */ 64063)); var _m_work_space_day = _interopRequireDefault(__webpack_require__( /*! ./workspaces/m_work_space_day */ 83216)); var _m_work_space_month = _interopRequireDefault(__webpack_require__( /*! ./workspaces/m_work_space_month */ 3416)); var _m_work_space_week = _interopRequireDefault(__webpack_require__( /*! ./workspaces/m_work_space_week */ 23276)); var _m_work_space_work_week = _interopRequireDefault(__webpack_require__( /*! ./workspaces/m_work_space_work_week */ 27420)); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } function _extends() { return _extends = Object.assign ? Object.assign.bind() : function(n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) { ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]) } } return n }, _extends.apply(null, arguments) } const toMs = _date2.default.dateToMilliseconds; const VIEWS_CONFIG = { day: { workSpace: _m_work_space_day.default, renderingStrategy: "vertical" }, week: { workSpace: _m_work_space_week.default, renderingStrategy: "vertical" }, workWeek: { workSpace: _m_work_space_work_week.default, renderingStrategy: "vertical" }, month: { workSpace: _m_work_space_month.default, renderingStrategy: "horizontalMonth" }, timelineDay: { workSpace: _m_timeline_day.default, renderingStrategy: "horizontal" }, timelineWeek: { workSpace: _m_timeline_week.default, renderingStrategy: "horizontal" }, timelineWorkWeek: { workSpace: _m_timeline_work_week.default, renderingStrategy: "horizontal" }, timelineMonth: { workSpace: _m_timeline_month.default, renderingStrategy: "horizontalMonthLine" }, agenda: { workSpace: _m_agenda.default, renderingStrategy: "agenda" } }; const StoreEventNames_ADDING = "onAppointmentAdding", StoreEventNames_ADDED = "onAppointmentAdded", StoreEventNames_DELETING = "onAppointmentDeleting", StoreEventNames_DELETED = "onAppointmentDeleted", StoreEventNames_UPDATING = "onAppointmentUpdating", StoreEventNames_UPDATED = "onAppointmentUpdated"; const RECURRENCE_EDITING_MODE_SERIES = "editSeries", RECURRENCE_EDITING_MODE_OCCURENCE = "editOccurence", RECURRENCE_EDITING_MODE_CANCEL = "cancel"; class Scheduler extends _ui2.default { _getDefaultOptions() { const defaultOptions = (0, _extend.extend)(super._getDefaultOptions(), { views: ["day", "week"], currentView: "day", currentDate: _date2.default.trimTime(new Date), min: void 0, max: void 0, dateSerializationFormat: void 0, firstDayOfWeek: void 0, groups: [], resources: [], loadedResources: [], resourceLoaderMap: new Map, dataSource: null, customizeDateNavigatorText: void 0, appointmentTemplate: "item", dropDownAppointmentTemplate: "dropDownAppointment", appointmentCollectorTemplate: "appointmentCollector", dataCellTemplate: null, timeCellTemplate: null, resourceCellTemplate: null, dateCellTemplate: null, startDayHour: 0, endDayHour: 24, offset: 0, editing: { allowAdding: true, allowDeleting: true, allowDragging: true, allowResizing: true, allowUpdating: true, allowTimeZoneEditing: false }, showAllDayPanel: true, showCurrentTimeIndicator: true, shadeUntilCurrentTime: false, indicatorUpdateInterval: 3e5, indicatorTime: void 0, recurrenceEditMode: "dialog", cellDuration: 30, maxAppointmentsPerCell: "auto", selectedCellData: [], groupByDate: false, onAppointmentRendered: null, onAppointmentClick: null, onAppointmentDblClick: null, onAppointmentContextMenu: null, onCellClick: null, onCellContextMenu: null, onAppointmentAdding: null, onAppointmentAdded: null, onAppointmentUpdating: null, onAppointmentUpdated: null, onAppointmentDeleting: null, onAppointmentDeleted: null, onAppointmentFormOpening: null, onAppointmentTooltipShowing: null, appointmentTooltipTemplate: "appointmentTooltip", appointmentPopupTemplate: "appointmentPopup", crossScrollingEnabled: false, useDropDownViewSwitcher: false, startDateExpr: "startDate", endDateExpr: "endDate", textExpr: "text", descriptionExpr: "description", allDayExpr: "allDay", recurrenceRuleExpr: "recurrenceRule", recurrenceExceptionExpr: "recurrenceException", disabledExpr: "disabled", remoteFiltering: false, timeZone: "", startDateTimeZoneExpr: "startDateTimeZone", endDateTimeZoneExpr: "endDateTimeZone", noDataText: _message.default.format("dxCollectionWidget-noDataText"), adaptivityEnabled: false, allowMultipleCellSelection: true, scrolling: { mode: "standard" }, allDayPanelMode: "all", renovateRender: true, _draggingMode: "outlook", _appointmentTooltipOffset: { x: 0, y: 0 }, _appointmentTooltipButtonsPosition: "bottom", _appointmentTooltipOpenButtonText: _message.default.format("dxScheduler-openAppointment"), _appointmentCountPerCell: 2, _collectorOffset: 0, _appointmentOffset: 26, toolbar: { disabled: false, multiline: false, items: [{ location: "before", name: "dateNavigator" }, { location: "after", name: "viewSwitcher" }] } }); return (0, _extend.extend)(true, defaultOptions, { integrationOptions: { useDeferUpdateForTemplates: false } }) } get currentView() { return _index3.viewsUtils.getCurrentView(this.option("currentView"), this.option("views")) } get currentViewType() { return (0, _type.isObject)(this.currentView) ? this.currentView.type : this.currentView } get timeZoneCalculator() { if (!this._timeZoneCalculator) { this._timeZoneCalculator = (0, _index2.createTimeZoneCalculator)(this.option("timeZone")) } return this._timeZoneCalculator } _setDeprecatedOptions() { super._setDeprecatedOptions(); (0, _extend.extend)(this._deprecatedOptions, { dropDownAppointmentTemplate: { since: "19.2", message: "appointmentTooltipTemplate" } }) } _defaultOptionsRules() { return super._defaultOptionsRules().concat([{ device: () => "desktop" === _devices.default.real().deviceType && !_devices.default.isSimulator(), options: { focusStateEnabled: true } }, { device: () => !_devices.default.current().generic, options: { useDropDownViewSwitcher: true, editing: { allowDragging: false, allowResizing: false } } }, { device: () => (0, _themes.isMaterialBased)(), options: { useDropDownViewSwitcher: true, dateCellTemplate(data, index, element) { const { text: text } = data; text.split(" ").forEach(((text, index) => { const span = (0, _renderer.default)("").text(text).addClass("dx-scheduler-header-panel-cell-date"); (0, _renderer.default)(element).append(span); if (!index) { (0, _renderer.default)(element).append(" ") } })) }, _appointmentTooltipButtonsPosition: "top", _appointmentTooltipOpenButtonText: null, _appointmentCountPerCell: 1, _collectorOffset: 20, _appointmentOffset: 30 } }, { device: () => (0, _themes.isMaterial)(), options: { _appointmentTooltipOffset: { x: 0, y: 11 } } }]) } _postponeDataSourceLoading(promise) { this.postponedOperations.add("_reloadDataSource", this._reloadDataSource.bind(this), promise) } _postponeResourceLoading() { let forceReload = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : false; const whenLoaded = this.postponedOperations.add("loadResources", (() => { const groups = this._getCurrentViewOption("groups"); return (0, _deferred.fromPromise)(this.resourceManager.loadGroupResources(groups, forceReload)) })); const resolveCallbacks = new _deferred.Deferred; whenLoaded.done((groupsResources => { this.option("loadedResources", groupsResources); resolveCallbacks.resolve(groupsResources) })); this._postponeDataSourceLoading(whenLoaded); return resolveCallbacks.promise() } _optionChanged(args) { var _this$_header2, _this$resourceManager, _this$_header4; this.validateOptions(); let { value: value } = args; const { name: name } = args; switch (args.name) { case "customizeDateNavigatorText": this._updateOption("header", name, value); break; case "firstDayOfWeek": this._updateOption("workSpace", name, value); this._updateOption("header", name, value); break; case "currentDate": value = this._dateOption(name); value = _date2.default.trimTime(new Date(value)); this.option("selectedCellData", []); this._updateOption("workSpace", name, new Date(value)); this._updateOption("header", name, new Date(value)); this._updateOption("header", "startViewDate", this.getStartViewDate()); this._appointments.option("items", []); this._filterAppointmentsByDate(); this._postponeDataSourceLoading(); break; case "dataSource": this._initDataSource(); this._postponeResourceLoading().done((() => { this.appointmentDataProvider.setDataSource(this._dataSource); this._filterAppointmentsByDate(); this._updateOption("workSpace", "showAllDayPanel", this.option("showAllDayPanel")) })); break; case "min": case "max": value = this._dateOption(name); this._updateOption("header", name, new Date(value)); this._updateOption("workSpace", name, new Date(value)); break; case "views": if (this._getCurrentViewOptions()) { this.repaint() } else { var _this$_header; null === (_this$_header = this._header) || void 0 === _this$_header || _this$_header.option(name, value) } break; case "useDropDownViewSwitcher": null === (_this$_header2 = this._header) || void 0 === _this$_header2 || _this$_header2.option(name, value); break; case "currentView": this._appointments.option({ items: [], allowDrag: this._allowDragging(), allowResize: this._allowResizing(), itemTemplate: this._getAppointmentTemplate("appointmentTemplate") }); this._postponeResourceLoading().done((groupsResources => { var _this$_header3; this._refreshWorkSpace(groupsResources); null === (_this$_header3 = this._header) || void 0 === _this$_header3 || _this$_header3.option(this._headerConfig()); this._filterAppointmentsByDate(); this._appointments.option("allowAllDayResize", "day" !== value) })); this.postponedOperations.callPostponedOperations(); break; case "appointmentTemplate": this._appointments.option("itemTemplate", value); break; case "dateCellTemplate": case "resourceCellTemplate": case "dataCellTemplate": case "timeCellTemplate": this.repaint(); break; case "groups": this._postponeResourceLoading().done((groupsResources => { this._refreshWorkSpace(groupsResources); this._filterAppointmentsByDate() })); break; case "resources": null === (_this$resourceManager = this.resourceManager) || void 0 === _this$resourceManager || _this$resourceManager.dispose(); this.resourceManager = new _resource_manager.ResourceManager(this.option("resources")); this.updateInstances(); this.option("resourceLoaderMap").clear(); this._postponeResourceLoading().done((groupsResources => { this._appointments.option("items", []); this._refreshWorkSpace(groupsResources); this._filterAppointmentsByDate(); this._createAppointmentPopupForm() })); break; case "startDayHour": case "endDayHour": this.updateInstances(); this._appointments.option("items", []); this._updateOption("workSpace", name, value); this._appointments.repaint(); this._filterAppointmentsByDate(); this._postponeDataSourceLoading(); break; case "offset": this.updateInstances(); this._appointments.option("items", []); this._updateOption("workSpace", "viewOffset", this.normalizeViewOffsetValue(value)); this._appointments.repaint(); this._filterAppointmentsByDate(); this._postponeDataSourceLoading(); break; case StoreEventNames_ADDING: case StoreEventNames_ADDED: case StoreEventNames_UPDATING: case StoreEventNames_UPDATED: case StoreEventNames_DELETING: case StoreEventNames_DELETED: case "onAppointmentFormOpening": case "onAppointmentTooltipShowing": this._actions[name] = this._createActionByOption(name); break; case "onAppointmentRendered": this._appointments.option("onItemRendered", this._getAppointmentRenderedAction()); break; case "onAppointmentClick": this._appointments.option("onItemClick", this._createActionByOption(name)); break; case "onAppointmentDblClick": this._appointments.option(name, this._createActionByOption(name)); break; case "onAppointmentContextMenu": this._appointments.option("onItemContextMenu", this._createActionByOption(name)); this._appointmentTooltip._options.onItemContextMenu = this._createActionByOption(name); break; case "noDataText": case "allowMultipleCellSelection": case "selectedCellData": case "accessKey": case "onCellClick": case "onCellContextMenu": this._updateOption("workSpace", name, value); break; case "crossScrollingEnabled": this._postponeResourceLoading().done((groupsResources => { this._appointments.option("items", []); this._refreshWorkSpace(groupsResources); if (this._readyToRenderAppointments) { this._appointments.option("items", this._getAppointmentsToRepaint()) } })); break; case "cellDuration": this._updateOption("workSpace", name, value); this._appointments.option("items", []); if (this._readyToRenderAppointments) { this._updateOption("workSpace", "hoursInterval", value / 60); this._appointments.option("items", this._getAppointmentsToRepaint()) } break; case "tabIndex": case "focusStateEnabled": this._updateOption("header", name, value); this._updateOption("workSpace", name, value); this._appointments.option(name, value); super._optionChanged(args); break; case "width": this._updateOption("header", name, value); if (this.option("crossScrollingEnabled")) { this._updateOption("workSpace", "width", value) } this._updateOption("workSpace", "schedulerWidth", value); super._optionChanged(args); this._dimensionChanged(null, true); break; case "height": super._optionChanged(args); this._dimensionChanged(null, true); this._updateOption("workSpace", "schedulerHeight", value); break; case "editing": { this._initEditing(); const editing = this._editing; this._bringEditingModeToAppointments(editing); this.hideAppointmentTooltip(); this._cleanPopup(); break } case "showAllDayPanel": this.updateInstances(); this.repaint(); break; case "showCurrentTimeIndicator": case "indicatorUpdateInterval": case "shadeUntilCurrentTime": case "groupByDate": this._updateOption("workSpace", name, value); this.repaint(); break; case "indicatorTime": this._updateOption("workSpace", name, value); null === (_this$_header4 = this._header) || void 0 === _this$_header4 || _this$_header4.option(name, value); this.repaint(); break; case "appointmentDragging": case "appointmentTooltipTemplate": case "appointmentPopupTemplate": case "recurrenceEditMode": case "remoteFiltering": case "timeZone": this.updateInstances(); this.repaint(); break; case "dropDownAppointmentTemplate": case "appointmentCollectorTemplate": case "_appointmentTooltipOffset": case "_appointmentTooltipButtonsPosition": case "_appointmentTooltipOpenButtonText": case "_appointmentCountPerCell": case "_collectorOffset": case "_appointmentOffset": this.repaint(); break; case "dateSerializationFormat": case "maxAppointmentsPerCell": break; case "startDateExpr": case "endDateExpr": case "startDateTimeZoneExpr": case "endDateTimeZoneExpr": case "textExpr": case "descriptionExpr": case "allDayExpr": case "recurrenceRuleExpr": case "recurrenceExceptionExpr": case "disabledExpr": this._updateExpression(name, value); this.appointmentDataProvider.updateDataAccessors(this._dataAccessors); this._initAppointmentTemplate(); this.repaint(); break; case "adaptivityEnabled": this._toggleAdaptiveClass(); this.repaint(); break; case "scrolling": this.option("crossScrollingEnabled", this._isHorizontalVirtualScrolling() || this.option("crossScrollingEnabled")); this._updateOption("workSpace", args.fullName, value); break; case "allDayPanelMode": this.updateInstances(); this._updateOption("workSpace", args.fullName, value); break; case "renovateRender": this._updateOption("workSpace", name, value); break; case "_draggingMode": this._updateOption("workSpace", "draggingMode", value); break; case "toolbar": this._header ? this._header.onToolbarOptionChanged(args.fullName, value) : this.repaint(); break; case "loadedResources": case "resourceLoaderMap": break; default: super._optionChanged(args) } } _dateOption(optionName) { const optionValue = this._getCurrentViewOption(optionName); return _date_serialization.default.deserializeDate(optionValue) } _getSerializationFormat(optionName) { const value = this._getCurrentViewOption(optionName); if ("number" === typeof value) { return "number" } if (!(0, _type.isString)(value)) { return } return _date_serialization.default.getDateSerializationFormat(value) } _bringEditingModeToAppointments(editing) { const editingConfig = { allowDelete: editing.allowUpdating && editing.allowDeleting }; if (!this._isAgenda()) { editingConfig.allowDrag = editing.allowDragging; editingConfig.allowResize = editing.allowResizing; editingConfig.allowAllDayResize = editing.allowResizing && this._supportAllDayResizing() } this._appointments.option(editingConfig); this.repaint() } _isAgenda() { return "agenda" === this.getLayoutManager().appointmentRenderingStrategyName } _allowDragging() { return this._editing.allowDragging && !this._isAgenda() } _allowResizing() { return this._editing.allowResizing && !this._isAgenda() } _allowAllDayResizing() { return this._editing.allowResizing && this._supportAllDayResizing() } _supportAllDayResizing() { return "day" !== this.currentViewType || this.currentView.intervalCount > 1 } _isAllDayExpanded() { return this.option("showAllDayPanel") && this.appointmentDataProvider.hasAllDayAppointments(this.filteredItems, this.preparedItems) } _getTimezoneOffsetByOption(date) { return _m_utils_time_zone.default.calculateTimezoneByValue(this.option("timeZone"), date) } _filterAppointmentsByDate() { if (!this._workSpace) { return } const dateRange = this._workSpace.getDateRange(); const startDate = this.timeZoneCalculator.createDate(dateRange[0], "fromGrid"); const endDate = this.timeZoneCalculator.createDate(dateRange[1], "fromGrid"); this.appointmentDataProvider.filterByDate(startDate, endDate, this.option("remoteFiltering"), this.option("dateSerializationFormat")) } _reloadDataSource() { const result = new _deferred.Deferred; if (this._dataSource) { this._dataSource.load().done((() => { (0, _m_loading.hide)(); this._fireContentReadyAction(result) })).fail((() => { (0, _m_loading.hide)(); result.reject() })); this._dataSource.isLoading() && (0, _m_loading.show)({ container: this.$element(), position: { of: this.$element() } }) } else { this._fireContentReadyAction(result) } return result.promise() } _fireContentReadyAction(result) { const contentReadyBase = super._fireContentReadyAction.bind(this); const fireContentReady = () => { contentReadyBase(); null === result || void 0 === result || result.resolve() }; if (this._workSpaceRecalculation) { var _this$_workSpaceRecal; null === (_this$_workSpaceRecal = this._workSpaceRecalculation) || void 0 === _this$_workSpaceRecal || _this$_workSpaceRecal.done((() => { fireContentReady() })) } else { fireContentReady() } } _dimensionChanged(value) { let isForce = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : false; const isFixedHeight = "number" === typeof this.option("height"); const isFixedWidth = "number" === typeof this.option("width"); if (!this._isVisible()) { return } this._toggleSmallClass(); const workspace = this.getWorkSpace(); if (!this._isAgenda() && this.filteredItems && workspace && !(0, _is_agenda_workpace_component.isAgendaWorkspaceComponent)(workspace)) { if (isForce || !isFixedHeight || !isFixedWidth) { workspace.option("allDayExpanded", this._isAllDayExpanded()); workspace._dimensionChanged(); const appointments = this.getLayoutManager().createAppointmentsMap(this.filteredItems); this._appointments.option("items", appointments) } } this.hideAppointmentTooltip(); this._appointmentPopup.triggerResize(); this._appointmentPopup.updatePopupFullScreenMode() } _clean() { this._cleanPopup(); super._clean() } _toggleSmallClass() { const { width: width } = (0, _position.getBoundingRect)(this.$element().get(0)); this.$element().toggleClass("dx-scheduler-small", width < 400) } _toggleAdaptiveClass() { this.$element().toggleClass("dx-scheduler-adaptive", this.option("adaptivityEnabled")) } _visibilityChanged(visible) { visible && this._dimensionChanged(null, true) } _dataSourceOptions() { return { paginate: false } } _initAllDayPanel() { if ("hidden" === this.option("allDayPanelMode")) { this.option("showAllDayPanel", false) } } _init() { this._timeZonesPromise = _m_utils_time_zone.default.cacheTimeZones(); this._initExpressions({ startDateExpr: this.option("startDateExpr"), endDateExpr: this.option("endDateExpr"), startDateTimeZoneExpr: this.option("startDateTimeZoneExpr"), endDateTimeZoneExpr: this.option("endDateTimeZoneExpr"), allDayExpr: this.option("allDayExpr"), textExpr: this.option("textExpr"), descriptionExpr: this.option("descriptionExpr"), recurrenceRuleExpr: this.option("recurrenceRuleExpr"), recurrenceExceptionExpr: this.option("recurrenceExceptionExpr"), disabledExpr: this.option("disabledExpr") }); super._init(); this._initAllDayPanel(); this._initDataSource(); this._customizeDataSourceLoadOptions(); this.$element().addClass("dx-scheduler"); this._initEditing(); this.updateInstances(); this._initActions(); this._compactAppointmentsHelper = new _m_compact_appointments_helper.CompactAppointmentsHelper(this); this._asyncTemplatesTimers = []; this._dataSourceLoadedCallback = (0, _callbacks.default)(); this._subscribes = _m_subscribes.default; this.resourceManager = new _resource_manager.ResourceManager(this.option("resources")); this._optionsValidator = new _index.SchedulerOptionsValidator; this._optionsValidatorErrorHandler = new _index.SchedulerOptionsValidatorErrorsHandler } createAppointmentDataProvider() { var _this$appointmentData; null === (_this$appointmentData = this.appointmentDataProvider) || void 0 === _this$appointmentData || _this$appointmentData.destroy(); this.appointmentDataProvider = new _m_appointment_data_provider.AppointmentDataProvider({ dataSource: this._dataSource, dataAccessors: this._dataAccessors, timeZoneCalculator: this.timeZoneCalculator, dateSerializationFormat: this.option("dateSerializationFormat"), resources: this.option("resources"), startDayHour: this._getCurrentViewOption("startDayHour"), endDayHour: this._getCurrentViewOption("endDayHour"), viewOffset: this.getViewOffsetMs(), appointmentDuration: this._getCurrentViewOption("cellDuration"), allDayPanelMode: this._getCurrentViewOption("allDayPanelMode"), showAllDayPanel: this.option("showAllDayPanel"), getResourceManager: () => this.resourceManager, getLoadedResources: () => this.option("loadedResources"), getIsVirtualScrolling: () => this.isVirtualScrolling(), getSupportAllDayRow: () => this._workSpace.supportAllDayRow(), getViewType: () => this._workSpace.type, getViewDirection: () => this._workSpace.viewDirection, getDateRange: () => this._workSpace.getDateRange(), getGroupCount: () => this._workSpace._getGroupCount(), getViewDataProvider: () => this._workSpace.viewDataProvider }) } updateInstances() { this._timeZoneCalculator = null; if (this.getWorkSpace()) { this.createAppointmentDataProvider() } } _customizeDataSourceLoadOptions() { var _this$_dataSource; null === (_this$_dataSource = this._dataSource) || void 0 === _this$_dataSource || _this$_dataSource.on("customizeStoreLoadOptions", (_ref => { let { storeLoadOptions: storeLoadOptions } = _ref; storeLoadOptions.startDate = this.getStartViewDate(); storeLoadOptions.endDate = this.getEndViewDate() })) } _initTemplates() { this._initAppointmentTemplate(); this._templateManager.addDefaultTemplates({ appointmentTooltip: new _empty_template.EmptyTemplate, dropDownAppointment: new _empty_template.EmptyTemplate }); super._initTemplates() } _initAppointmentTemplate() { const { expr: expr } = this._dataAccessors; const createGetter = property => (0, _data.compileGetter)(`appointmentData.${property}`); const getDate = getter => data => { const value = getter(data); if (value instanceof Date) { return value.valueOf() } return value }; this._templateManager.addDefaultTemplates({ item: new _bindable_template.BindableTemplate((($container, data, model) => this.getAppointmentsInstance()._renderAppointmentTemplate($container, data, model)), ["html", "text", "startDate", "endDate", "allDay", "description", "recurrenceRule", "recurrenceException", "startDateTimeZone", "endDateTimeZone"], this.option("integrationOptions.watchMethod"), { text: createGetter(expr.textExpr), startDate: getDate(createGetter(expr.startDateExpr)), endDate: getDate(createGetter(expr.endDateExpr)), startDateTimeZone: createGetter(expr.startDateTimeZoneExpr), endDateTimeZone: createGetter(expr.endDateTimeZoneExpr), allDay: createGetter(expr.allDayExpr), recurrenceRule: createGetter(expr.recurrenceRuleExpr) }) }) } _renderContent() { this._renderContentImpl() } _updatePreparedItems(items) { this.preparedItems = (0, _index3.getAppointmentDataItems)(items, this._dataAccessors, this._getCurrentViewOption("cellDuration"), this.timeZoneCalculator) } _dataSourceChangedHandler(result) { if (this._readyToRenderAppointments) { this._workSpaceRecalculation.done((() => { this._updatePreparedItems(result); this._renderAppointments(); this._updateA11yStatus(); this.getWorkSpace().onDataSourceChanged(this.filteredItems) })) } } isVirtualScrolling() { var _currentViewOptions$s; const workspace = this.getWorkSpace(); if (workspace) { return workspace.isVirtualScrolling() } const currentViewOptions = this._getCurrentViewOptions(); const scrolling = this.option("scrolling"); return "virtual" === (null === scrolling || void 0 === scrolling ? void 0 : scrolling.mode) || "virtual" === (null === currentViewOptions || void 0 === currentViewOptions || null === (_currentViewOptions$s = currentViewOptions.scrolling) || void 0 === _currentViewOptions$s ? void 0 : _currentViewOptions$s.mode) } _filterAppointments() { this.filteredItems = this.appointmentDataProvider.filter(this.preparedItems) } _renderAppointments() { const workspace = this.getWorkSpace(); this._filterAppointments(); workspace.option("allDayExpanded", this._isAllDayExpanded()); const viewModel = this._isVisible() ? this._getAppointmentsToRepaint() : []; this._appointments.option("items", viewModel); this.appointmentDataProvider.cleanState() } _getAppointmentsToRepaint() { const layoutManager = this.getLayoutManager(); const appointmentsMap = layoutManager.createAppointmentsMap(this.filteredItems); return layoutManager.getRepaintedAppointments(appointmentsMap, this.getAppointmentsInstance().option("items")) } _initExpressions(fields) { this._dataAccessors = new _appointment_data_accessor.AppointmentDataAccessor(fields, Boolean((0, _config.default)().forceIsoDateParsing), this.option("dateSerializationFormat")) } _updateExpression(name, value) { this._dataAccessors.updateExpression(name, value) } _initEditing() { const editing = this.option("editing"); this._editing = { allowAdding: !!editing, allowUpdating: !!editing, allowDeleting: !!editing, allowResizing: !!editing, allowDragging: !!editing }; if ((0, _type.isObject)(editing)) { this._editing = (0, _extend.extend)(this._editing, editing) } this._editing.allowDragging = this._editing.allowDragging && this._editing.allowUpdating; this._editing.allowResizing = this._editing.allowResizing && this._editing.allowUpdating; this.$element().toggleClass("dx-scheduler-readonly", this._isReadOnly()) } _isReadOnly() { let result = true; const editing = this._editing; for (const prop in editing) { if (Object.prototype.hasOwnProperty.call(editing, prop)) { result = result && !editing[prop] } } return result } _dispose() { var _this$resourceManager2, _this$_appointmentToo, _this$_recurrenceDial; null === (_this$resourceManager2 = this.resourceManager) || void 0 === _this$resourceManager2 || _this$resourceManager2.dispose(); null === (_this$_appointmentToo = this._appointmentTooltip) || void 0 === _this$_appointmentToo || _this$_appointmentToo.dispose(); null === (_this$_recurrenceDial = this._recurrenceDialog) || void 0 === _this$_recurrenceDial || _this$_recurrenceDial.hide(RECURRENCE_EDITING_MODE_CANCEL); this.hideAppointmentPopup(); this.hideAppointmentTooltip(); this._asyncTemplatesTimers.forEach(clearTimeout); this._asyncTemplatesTimers = []; _index4.macroTaskArray.dispose(); super._dispose() } _initActions() { this._actions = { onAppointmentAdding: this._createActionByOption(StoreEventNames_ADDING), onAppointmentAdded: this._createActionByOption(StoreEventNames_ADDED), onAppointmentUpdating: this._createActionByOption(StoreEventNames_UPDATING), onAppointmentUpdated: this._createActionByOption(StoreEventNames_UPDATED), onAppointmentDeleting: this._createActionByOption(StoreEventNames_DELETING), onAppointmentDeleted: this._createActionByOption(StoreEventNames_DELETED), onAppointmentFormOpening: this._createActionByOption("onAppointmentFormOpening"), onAppointmentTooltipShowing: this._createActionByOption("onAppointmentTooltipShowing") } } _getAppointmentRenderedAction() { return this._createActionByOption("onAppointmentRendered", { excludeValidators: ["disabled", "readOnly"] }) } _renderFocusTarget() { return (0, _common.noop)() } _updateA11yStatus() { const dateRange = this._workSpace.getDateRange(); const indicatorTime = this.option("showCurrentTimeIndicator") ? (0, _index3.getToday)(this.option("indicatorTime"), this.timeZoneCalculator) : void 0; const label = (0, _a11y_status_text.getA11yStatusText)(this.currentView, dateRange[0], dateRange[1], this._appointments.appointmentsCount, indicatorTime); this.setAria({ label: label }); this._a11yStatus.text(label) } _renderA11yStatus() { this._a11yStatus = (0, _a11y_status_render.createA11yStatusContainer)(); this._a11yStatus.prependTo(this.$element()); this.setAria({ role: "group" }) } _initMarkupOnResourceLoaded(groupsResources) { if (!this._disposed) { this.option("loadedResources", groupsResources); this._initMarkupCore(groupsResources); this._reloadDataSource() } } _initMarkup() { super._initMarkup(); this._renderA11yStatus(); this._renderMainContainer(); this._renderHeader(); this._layoutManager = new _m_appointments_layout_manager.default(this); this._appointments = this._createComponent("
", _m_appointment_collection.default, this._appointmentsConfig()); this._appointments.option("itemTemplate", this._getAppointmentTemplate("appointmentTemplate")); this._appointmentTooltip = new(this.option("adaptivityEnabled") ? _m_mobile_tooltip_strategy.MobileTooltipStrategy : _m_desktop_tooltip_strategy.DesktopTooltipStrategy)(this._getAppointmentTooltipOptions()); this._createAppointmentPopupForm(); if (this._isDataSourceLoaded() || this._isDataSourceLoading()) { this._initMarkupCore(this.option("loadedResources")); this._dataSourceChangedHandler(this._dataSource.items()); this._fireContentReadyAction() } else { const groups = this._getCurrentViewOption("groups"); if (null !== groups && void 0 !== groups && groups.length) { this.resourceManager.loadGroupResources(groups, true).then((groupsResources => this._initMarkupOnResourceLoaded(groupsResources))) } else { this._initMarkupOnResourceLoaded([]) } } } _createAppointmentPopupForm() { var _this$_appointmentPop; if (this._appointmentForm) { var _this$_appointmentFor; null === (_this$_appointmentFor = this._appointmentForm.form) || void 0 === _this$_appointmentFor || _this$_appointmentFor.dispose() } this._appointmentForm = this.createAppointmentForm(); null === (_this$_appointmentPop = this._appointmentPopup) || void 0 === _this$_appointmentPop || _this$_appointmentPop.dispose(); this._appointmentPopup = this.createAppointmentPopup(this._appointmentForm) } _renderMainContainer() { this._mainContainer = (0, _renderer.default)("
").addClass("dx-scheduler-container"); this.$element().append(this._mainContainer) } createAppointmentForm() { const scheduler = { createResourceEditorModel: () => (0, _popup_utils.createResourceEditorModel)(this.resourceManager.resourceById), getDataAccessors: () => this._dataAccessors, createComponent: (element, component, options) => this._createComponent(element, component, options), getEditingConfig: () => this._editing, getFirstDayOfWeek: () => this.option("firstDayOfWeek"), getStartDayHour: () => this.option("startDayHour"), getCalculatedEndDate: startDateWithStartHour => this._workSpace.calculateEndDate(startDateWithStartHour), getTimeZoneCalculator: () => this.timeZoneCalculator }; return new _m_form.AppointmentForm(scheduler) } createAppointmentPopup(form) { const scheduler = { getElement: () => this.$element(), createComponent: (element, component, options) => this._createComponent(element, component, options), focus: () => this.focus(), getResourceManager: () => this.resourceManager, getEditingConfig: () => this._editing, getTimeZoneCalculator: () => this.timeZoneCalculator, getDataAccessors: () => this._dataAccessors, getAppointmentFormOpening: () => this._actions.onAppointmentFormOpening, processActionResult: (arg, canceled) => this._processActionResult(arg, canceled), addAppointment: appointment => this.addAppointment(appointment), updateAppointment: (sourceAppointment, updatedAppointment) => this.updateAppointment(sourceAppointment, updatedAppointment), updateScrollPosition: (startDate, appointmentGroupValues, inAllDayRow) => { this._workSpace.updateScrollPosition(startDate, appointmentGroupValues, inAllDayRow) } }; return new _m_popup.AppointmentPopup(scheduler, form) } _getAppointmentTooltipOptions() { return { createComponent: this._createComponent.bind(this), container: this.$element(), getScrollableContainer: this.getWorkSpaceScrollableContainer.bind(this), addDefaultTemplates: this._templateManager.addDefaultTemplates.bind(this._templateManager), getAppointmentTemplate: this._getAppointmentTemplate.bind(this), showAppointmentPopup: this.showAppointmentPopup.bind(this), checkAndDeleteAppointment: this.checkAndDeleteAppointment.bind(this), isAppointmentInAllDayPanel: this.isAppointmentInAllDayPanel.bind(this), createFormattedDateText: (appointment, targetedAppointment, format) => this.fire("getTextAndFormatDate", appointment, targetedAppointment, format), getAppointmentDisabled: appointment => this._dataAccessors.get("disabled", appointment), onItemContextMenu: this._createActionByOption("onAppointmentContextMenu"), createEventArgs: this._createEventArgs.bind(this) } } _createEventArgs(e) { const config = { itemData: e.itemData.appointment, itemElement: e.itemElement, targetedAppointment: e.itemData.targetedAppointment }; return (0, _extend.extend)({}, this.fire("mapAppointmentFields", config), { component: e.component, element: e.element, event: e.event, model: e.model }) } checkAndDeleteAppointment(appointment, targetedAppointment) { const targetedAdapter = new _appointment_adapter.AppointmentAdapter(targetedAppointment, this._dataAccessors); const deletingOptions = this.fireOnAppointmentDeleting(appointment, targetedAdapter); this._checkRecurringAppointment(appointment, targetedAppointment, targetedAdapter.startDate, (() => { this.processDeleteAppointment(appointment, deletingOptions) }), true) } _getExtraAppointmentTooltipOptions() { return { rtlEnabled: this.option("rtlEnabled"), focusStateEnabled: this.option("focusStateEnabled"), editing: this.option("editing"), offset: this.option("_appointmentTooltipOffset") } } isAppointmentInAllDayPanel(appointmentData) { const workSpace = this._workSpace; const itTakesAllDay = this.appointmentTakesAllDay(appointmentData); return itTakesAllDay && workSpace.supportAllDayRow() && workSpace.option("showAllDayPanel") } _initMarkupCore(groupsResources) { this.filteredItems = []; this.preparedItems = []; this._readyToRenderAppointments = (0, _window.hasWindow)(); this._workSpace && this._cleanWorkspace(); this._renderWorkSpace(groupsResources); this._appointments.option({ fixedContainer: this._workSpace.getFixedContainer(), allDayContainer: this._workSpace.getAllDayContainer() }); this._waitAsyncTemplate((() => { var _this$_workSpaceRecal2; return null === (_this$_workSpaceRecal2 = this._workSpaceRecalculation) || void 0 === _this$_workSpaceRecal2 ? void 0 : _this$_workSpaceRecal2.resolve() })); this.createAppointmentDataProvider(); this._filterAppointmentsByDate(); this._validateKeyFieldIfAgendaExist(); this._updateA11yStatus() } _isDataSourceLoaded() { var _this$_dataSource2; return null === (_this$_dataSource2 = this._dataSource) || void 0 === _this$_dataSource2 ? void 0 : _this$_dataSource2.isLoaded() } _render() { var _this$getWorkSpace; this._toggleAdaptiveClass(); null === (_this$getWorkSpace = this.getWorkSpace()) || void 0 === _this$getWorkSpace || _this$getWorkSpace.updateHeaderEmptyCellWidth(); super._render() } _renderHeader() { const toolbarOptions = this.option("toolbar"); const isHeaderShown = toolbarOptions.visible || void 0 === toolbarOptions.visible && toolbarOptions.items.length; if (isHeaderShown) { const $header = (0, _renderer.default)("
").appendTo(this._mainContainer); this._header = this._createComponent($header, _m_header.SchedulerHeader, this._headerConfig()) } } _headerConfig() { const currentViewOptions = this._getCurrentViewOptions(); const countConfig = this._getViewCountConfig(); const result = (0, _extend.extend)({ firstDayOfWeek: this.getFirstDayOfWeek(), currentView: this.option("currentView"), isAdaptive: this.option("adaptivityEnabled"), tabIndex: this.option("tabIndex"), focusStateEnabled: this.option("focusStateEnabled"), rtlEnabled: this.option("rtlEnabled"), useDropDownViewSwitcher: this.option("useDropDownViewSwitcher"), customizeDateNavigatorText: this.option("customizeDateNavigatorText"), indicatorTime: this.option("indicatorTime"), agendaDuration: currentViewOptions.agendaDuration || 7 }, currentViewOptions); result.intervalCount = countConfig.intervalCount; result.views = this.option("views"); result.min = new Date(this._dateOption("min")); result.max = new Date(this._dateOption("max")); result.currentDate = _date2.default.trimTime(new Date(this._dateOption("currentDate"))); result.onCurrentViewChange = name => { this.option("currentView", name) }; result.onCurrentDateChange = date => { this.option("currentDate", date) }; result.toolbar = this.option("toolbar"); result.startViewDate = this.getStartViewDate(); result.todayDate = () => this.timeZoneCalculator.createDate(new Date, "toGrid"); return result } _appointmentsConfig() { const config = { getResourceManager: () => this.resourceManager, getAppointmentColor: this.createGetAppointmentColor(), getAppointmentDataProvider: () => this.appointmentDataProvider, dataAccessors: this._dataAccessors, observer: this, onItemRendered: this._getAppointmentRenderedAction(), onItemClick: this._createActionByOption("onAppointmentClick"), onItemContextMenu: this._createActionByOption("onAppointmentContextMenu"), onAppointmentDblClick: this._createActionByOption("onAppointmentDblClick"), tabIndex: this.option("tabIndex"), focusStateEnabled: this.option("focusStateEnabled"), allowDrag: this._allowDragging(), allowDelete: this._editing.allowUpdating && this._editing.allowDeleting, allowResize: this._allowResizing(), allowAllDayResize: this._allowAllDayResizing(), rtlEnabled: this.option("rtlEnabled"), currentView: this.currentView, groups: this._getCurrentViewOption("groups"), timeZoneCalculator: this.timeZoneCalculator, getResizableStep: () => this._workSpace ? this._workSpace.positionHelper.getResizableStep() : 0, getDOMElementsMetaData: () => { var _this$_workSpace; return null === (_this$_workSpace = this._workSpace) || void 0 === _this$_workSpace ? void 0 : _this$_workSpace.getDOMElementsMetaData() }, getViewDataProvider: () => { var _this$_workSpace2; return null === (_this$_workSpace2 = this._workSpace) || void 0 === _this$_workSpace2 ? void 0 : _this$_workSpace2.viewDataProvider }, isVerticalViewDirection: () => "vertical" === this.getRenderingStrategyInstance().getDirection(), isVerticalGroupedWorkSpace: () => this._workSpace._isVerticalGroupedWorkSpace(), isDateAndTimeView: () => (0, _index3.isDateAndTimeView)(this._workSpace.type), onContentReady: () => { var _this$_workSpace3; null === (_this$_workSpace3 = this._workSpace) || void 0 === _this$_workSpace3 || _this$_workSpace3.option("allDayExpanded", this._isAllDayExpanded()) } }; return config } getCollectorOffset() { if (this._workSpace.needApplyCollectorOffset() && !this.option("adaptivityEnabled")) { return this.option("_collectorOffset") } return 0 } getAppointmentDurationInMinutes() { return this._getCurrentViewOption("cellDuration") } _renderWorkSpace(groupsResources) { var _this$_header5; if (this._readyToRenderAppointments) { this._toggleSmallClass(); Promise.resolve().then((() => { var _this$_workSpace4; this._toggleSmallClass(); null === (_this$_workSpace4 = this._workSpace) || void 0 === _this$_workSpace4 || _this$_workSpace4.updateHeaderEmptyCellWidth() })) } const $workSpace = (0, _renderer.default)("
").appendTo(this._mainContainer); const countConfig = this._getViewCountConfig(); const workSpaceComponent = VIEWS_CONFIG[this.currentViewType].workSpace; const workSpaceConfig = this._workSpaceConfig(groupsResources, countConfig); this._workSpace = this._createComponent($workSpace, workSpaceComponent, workSpaceConfig); this._allowDragging() && this._workSpace.initDragBehavior(this, this._all); this._workSpace._attachTablesEvents(); this._workSpace.getWorkArea().append(this._appointments.$element()); this._recalculateWorkspace(); countConfig.startDate && (null === (_this$_header5 = this._header) || void 0 === _this$_header5 ? void 0 : _this$_header5.option("currentDate", this._workSpace._getHeaderDate())); this._appointments.option("_collectorOffset", this.getCollectorOffset()) } _getViewCountConfig() { const currentView = this.option("currentView"); const view = this._getViewByName(currentView); const viewCount = (null === view || void 0 === view ? void 0 : view.intervalCount) || 1; const startDate = (null === view || void 0 === view ? void 0 : view.startDate) || null; return { intervalCount: viewCount, startDate: startDate } } _getViewByName(name) { const views = this.option("views"); for (let i = 0; i < views.length; i++) { if (views[i].name === name || views[i].type === name || views[i] === name) { return views[i] } } } _recalculateWorkspace() { this._workSpaceRecalculation = new _deferred.Deferred; this._waitAsyncTemplate((() => { (0, _visibility_change.triggerResizeEvent)(this._workSpace.$element()); this._workSpace.renderCurrentDateTimeLineAndShader() })) } _workSpaceConfig(groupsResources, countConfig) { var _currentViewOptions$s2; const currentViewOptions = this._getCurrentViewOptions(); const scrolling = this.option("scrolling"); const isVirtualScrolling = "virtual" === scrolling.mode || "virtual" === (null === (_currentViewOptions$s2 = currentViewOptions.scrolling) || void 0 === _currentViewOptions$s2 ? void 0 : _currentViewOptions$s2.mode); const horizontalVirtualScrollingAllowed = isVirtualScrolling && (!(0, _type.isDefined)(scrolling.orientation) || ["horizontal", "both"].filter((item => { var _currentViewOptions$s3; return scrolling.orientation === item || (null === (_currentViewOptions$s3 = currentViewOptions.scrolling) || void 0 === _currentViewOptions$s3 ? void 0 : _currentViewOptions$s3.orientation) === item })).length > 0); const crossScrollingEnabled = this.option("crossScrollingEnabled") || horizontalVirtualScrollingAllowed || (0, _index3.isTimelineView)(this.currentViewType); const result = (0, _extend.extend)({ resources: this.option("resources"), getResourceManager: () => this.resourceManager, getFilteredItems: () => this.filteredItems, noDataText: this.option("noDataText"), firstDayOfWeek: this.option("firstDayOfWeek"), startDayHour: this.option("startDayHour"), endDayHour: this.option("endDayHour"), viewOffset: this.getViewOffsetMs(), tabIndex: this.option("tabIndex"), accessKey: this.option("accessKey"), focusStateEnabled: this.option("focusStateEnabled"), cellDuration: this.option("cellDuration"), showAllDayPanel: this.option("showAllDayPanel"), showCurrentTimeIndicator: this.option("showCurrentTimeIndicator"), indicatorTime: this.option("indicatorTime"), indicatorUpdateInterval: this.option("indicatorUpdateInterval"), shadeUntilCurrentTime: this.option("shadeUntilCurrentTime"), crossScrollingEnabled: crossScrollingEnabled, dataCellTemplate: this.option("dataCellTemplate"), timeCellTemplate: this.option("timeCellTemplate"), resourceCellTemplate: this.option("resourceCellTemplate"), dateCellTemplate: this.option("dateCellTemplate"), allowMultipleCellSelection: this.option("allowMultipleCellSelection"), selectedCellData: this.option("selectedCellData"), onSelectionChanged: args => { this.option("selectedCellData", args.selectedCellData) }, groupByDate: this._getCurrentViewOption("groupByDate"), scrolling: scrolling, draggingMode: this.option("_draggingMode"), timeZoneCalculator: this.timeZoneCalculator, schedulerHeight: this.option("height"), schedulerWidth: this.option("width"), allDayPanelMode: this.option("allDayPanelMode"), onSelectedCellsClick: this.showAddAppointmentPopup.bind(this), onRenderAppointments: this._renderAppointments.bind(this), onShowAllDayPanel: value => this.option("showAllDayPanel", value), getHeaderHeight: () => _m_utils.utils.DOM.getHeaderHeight(this._header), onScrollEnd: () => this._appointments.updateResizableArea(), renovateRender: this._isRenovatedRender(isVirtualScrolling) }, currentViewOptions); result.observer = this; result.intervalCount = countConfig.intervalCount; result.startDate = countConfig.startDate; result.groups = groupsResources; result.onCellClick = this._createActionByOption("onCellClick"); result.onCellContextMenu = this._createActionByOption("onCellContextMenu"); result.currentDate = _date2.default.trimTime(new Date(this._dateOption("currentDate"))); result.hoursInterval = result.cellDuration / 60; result.allDayExpanded = false; result.dataCellTemplate = result.dataCellTemplate ? this._getTemplate(result.dataCellTemplate) : null; result.timeCellTemplate = result.timeCellTemplate ? this._getTemplate(result.timeCellTemplate) : null; result.resourceCellTemplate = result.resourceCellTemplate ? this._getTemplate(result.resourceCellTemplate) : null; result.dateCellTemplate = result.dateCellTemplate ? this._getTemplate(result.dateCellTemplate) : null; result.getAppointmentDataProvider = () => this.appointmentDataProvider; return result } _isRenovatedRender(isVirtualScrolling) { return this.option("renovateRender") && (0, _window.hasWindow)() || isVirtualScrolling } _waitAsyncTemplate(callback) { if (this._options.silent("templatesRenderAsynchronously")) { const timer = setTimeout((() => { callback(); clearTimeout(timer) })); this._asyncTemplatesTimers.push(timer) } else { callback() } } _getCurrentViewOptions() { return this.currentView } _getCurrentViewOption(optionName) { if (this.currentView && void 0 !== this.currentView[optionName]) { return this.currentView[optionName] } return this.option(optionName) } _getAppointmentTemplate(optionName) { const currentViewOptions = this._getCurrentViewOptions(); if (null !== currentViewOptions && void 0 !== currentViewOptions && currentViewOptions[optionName]) { return this._getTemplate(currentViewOptions[optionName]) } return this._getTemplateByOption(optionName) } _updateOption(viewName, optionName, value) { const currentViewOptions = this._getCurrentViewOptions(); if (!currentViewOptions || !(0, _type.isDefined)(currentViewOptions[optionName])) { var _this; null === (_this = this[`_${viewName}`]) || void 0 === _this || _this.option(optionName, value) } } _refreshWorkSpace(groupsResources) { this._cleanWorkspace(); delete this._workSpace; this._renderWorkSpace(groupsResources); if (this._readyToRenderAppointments) { this._appointments.option({ fixedContainer: this._workSpace.getFixedContainer(), allDayContainer: this._workSpace.getAllDayContainer() }); this._waitAsyncTemplate((() => this._workSpaceRecalculation.resolve())) } } _cleanWorkspace() { this._appointments.$element().detach(); this._workSpace._dispose(); this._workSpace.$element().remove(); this.option("selectedCellData", []) } getWorkSpaceScrollable() { return this._workSpace.getScrollable() } getWorkSpaceScrollableContainer() { return this._workSpace.getScrollableContainer() } getWorkSpace() { return this._workSpace } getHeader() { return this._header } _cleanPopup() { var _this$_appointmentPop2; null === (_this$_appointmentPop2 = this._appointmentPopup) || void 0 === _this$_appointmentPop2 || _this$_appointmentPop2.dispose() } _checkRecurringAppointment(rawAppointment, singleAppointment, exceptionDate, callback, isDeleted, isPopupEditing, dragEvent, recurrenceEditMode) { const recurrenceRule = this._dataAccessors.get("recurrenceRule", rawAppointment); if (!(0, _m_recurrence.getRecurrenceProcessor)().evalRecurrenceRule(recurrenceRule).isValid || !this._editing.allowUpdating) { callback(); return } const editMode = recurrenceEditMode || this.option("recurrenceEditMode"); switch (editMode) { case "series": callback(); break; case "occurrence": this._excludeAppointmentFromSeries(rawAppointment, singleAppointment, exceptionDate, isDeleted, isPopupEditing, dragEvent); break; default: if (dragEvent) { dragEvent.cancel = new _deferred.Deferred } this._showRecurrenceChangeConfirm(isDeleted).done((editingMode => { editingMode === RECURRENCE_EDITING_MODE_SERIES && callback(); editingMode === RECURRENCE_EDITING_MODE_OCCURENCE && this._excludeAppointmentFromSeries(rawAppointment, singleAppointment, exceptionDate, isDeleted, isPopupEditing, dragEvent) })).fail((() => this._appointments.moveAppointmentBack(dragEvent))) } } _excludeAppointmentFromSeries(rawAppointment, newRawAppointment, exceptionDate, isDeleted, isPopupEditing, dragEvent) { const appointment = (0, _index3.excludeFromRecurrence)(rawAppointment, exceptionDate, this._dataAccessors); const singleRawAppointment = _extends({}, newRawAppointment); delete singleRawAppointment[this._dataAccessors.expr.recurrenceExceptionExpr]; delete singleRawAppointment[this._dataAccessors.expr.recurrenceRuleExpr]; const keyPropertyName = this.appointmentDataProvider.keyName; delete singleRawAppointment[keyPropertyName]; const canCreateNewAppointment = !isDeleted && !isPopupEditing; if (canCreateNewAppointment) { this.addAppointment(singleRawAppointment) } if (isPopupEditing) { this._appointmentPopup.show(singleRawAppointment, { isToolbarVisible: true, action: _m_popup.ACTION_TO_APPOINTMENT.EXCLUDE_FROM_SERIES, excludeInfo: { sourceAppointment: rawAppointment, updatedAppointment: appointment.source } }); this._editAppointmentData = rawAppointment } else { this._updateAppointment(rawAppointment, appointment.source, (() => { this._appointments.moveAppointmentBack(dragEvent) }), dragEvent) } } _createRecurrenceException(appointment, exceptionDate) { const result = []; if (appointment.recurrenceException) { result.push(appointment.recurrenceException) } result.push(this._getSerializedDate(exceptionDate, appointment.startDate, appointment.allDay)); return result.join() } _getSerializedDate(date, startDate, isAllDay) { isAllDay && date.setHours(startDate.getHours(), startDate.getMinutes(), startDate.getSeconds(), startDate.getMilliseconds()); return _date_serialization.default.serializeDate(date, "yyyyMMddTHHmmssZ") } _showRecurrenceChangeConfirm(isDeleted) { const title = _message.default.format(isDeleted ? "dxScheduler-confirmRecurrenceDeleteTitle" : "dxScheduler-confirmRecurrenceEditTitle"); const message = _message.default.format(isDeleted ? "dxScheduler-confirmRecurrenceDeleteMessage" : "dxScheduler-confirmRecurrenceEditMessage"); const seriesText = _message.default.format(isDeleted ? "dxScheduler-confirmRecurrenceDeleteSeries" : "dxScheduler-confirmRecurrenceEditSeries"); const occurrenceText = _message.default.format(isDeleted ? "dxScheduler-confirmRecurrenceDeleteOccurrence" : "dxScheduler-confirmRecurrenceEditOccurrence"); this._recurrenceDialog = (0, _dialog.custom)({ title: title, messageHtml: message, showCloseButton: true, showTitle: true, buttons: [{ text: seriesText, onClick: () => RECURRENCE_EDITING_MODE_SERIES }, { text: occurrenceText, onClick: () => RECURRENCE_EDITING_MODE_OCCURENCE }], popupOptions: { wrapperAttr: { class: "dx-dialog" } } }); return this._recurrenceDialog.show() } _getUpdatedData(rawAppointment) { const viewOffset = this.getViewOffsetMs(); const getConvertedFromGrid = date => { if (!date) { return } const result = this.timeZoneCalculator.createDate(date, "fromGrid"); return _date3.dateUtilsTs.addOffsets(result, [-viewOffset]) }; const targetCell = this.getTargetCellData(); const appointment = new _appointment_adapter.AppointmentAdapter(rawAppointment, this._dataAccessors); const cellStartDate = getConvertedFromGrid(targetCell.startDate); const cellEndDate = getConvertedFromGrid(targetCell.endDate); let appointmentStartDate = new Date(appointment.startDate); appointmentStartDate = _date3.dateUtilsTs.addOffsets(appointmentStartDate, [-viewOffset]); let appointmentEndDate = new Date(appointment.endDate); appointmentEndDate = _date3.dateUtilsTs.addOffsets(appointmentEndDate, [-viewOffset]); let resultedStartDate = cellStartDate ?? appointmentStartDate; if (!_date3.dateUtilsTs.isValidDate(appointmentStartDate)) { appointmentStartDate = resultedStartDate } if (!_date3.dateUtilsTs.isValidDate(appointmentEndDate)) { appointmentEndDate = cellEndDate } const duration = appointmentEndDate.getTime() - appointmentStartDate.getTime(); const isKeepAppointmentHours = this._workSpace.keepOriginalHours() && _date3.dateUtilsTs.isValidDate(appointment.startDate) && _date3.dateUtilsTs.isValidDate(cellStartDate); if (isKeepAppointmentHours) { const startDate = this.timeZoneCalculator.createDate(appointmentStartDate, "toGrid"); const timeInMs = startDate.getTime() - _date2.default.trimTime(startDate).getTime(); const targetCellStartDate = _date3.dateUtilsTs.addOffsets(targetCell.startDate, [-viewOffset]); resultedStartDate = new Date(_date2.default.trimTime(targetCellStartDate).getTime() + timeInMs); resultedStartDate = this.timeZoneCalculator.createDate(resultedStartDate, "fromGrid") } const result = new _appointment_adapter.AppointmentAdapter({}, this._dataAccessors); if (void 0 !== targetCell.allDay) { result.allDay = targetCell.allDay } result.startDate = resultedStartDate; let resultedEndDate = new Date(resultedStartDate.getTime() + duration); if (this.appointmentTakesAllDay(rawAppointment) && !result.allDay && this._workSpace.supportAllDayRow()) { resultedEndDate = this._workSpace.calculateEndDate(resultedStartDate) } if (appointment.allDay && !this._workSpace.supportAllDayRow() && !this._workSpace.keepOriginalHours()) { const dateCopy = new Date(resultedStartDate); dateCopy.setHours(0); resultedEndDate = new Date(dateCopy.getTime() + duration); if (0 !== resultedEndDate.getHours()) { resultedEndDate.setHours(this._getCurrentViewOption("endDayHour")) } } result.startDate = _date3.dateUtilsTs.addOffsets(result.startDate, [viewOffset]); result.endDate = _date3.dateUtilsTs.addOffsets(resultedEndDate, [viewOffset]); const rawResult = result.source; (0, _appointment_groups_utils.setAppointmentGroupValues)(rawResult, this.resourceManager.resourceById, targetCell.groups); return rawResult } getTargetedAppointment(appointment, element) { const settings = _m_utils.utils.dataAccessors.getAppointmentSettings(element); const info = _m_utils.utils.dataAccessors.getAppointmentInfo(element); const appointmentIndex = (0, _renderer.default)(element).data(this._appointments._itemIndexKey()); const adapter = new _appointment_adapter.AppointmentAdapter(appointment, this._dataAccessors); const targetedAdapter = adapter.clone(); if (this._isAgenda() && adapter.isRecurrent) { const { agendaSettings: agendaSettings } = settings; targetedAdapter.startDate = this._dataAccessors.get("startDate", agendaSettings); targetedAdapter.endDate = this._dataAccessors.get("endDate", agendaSettings) } else if (settings) { targetedAdapter.startDate = info ? info.sourceAppointment.startDate : adapter.startDate; targetedAdapter.endDate = info ? info.sourceAppointment.endDate : adapter.endDate } const rawTargetedAppointment = targetedAdapter.source; if (element) { this.setTargetedAppointmentResources(rawTargetedAppointment, element, appointmentIndex) } if (info) { rawTargetedAppointment.displayStartDate = new Date(info.appointment.startDate); rawTargetedAppointment.displayEndDate = new Date(info.appointment.endDate) } return rawTargetedAppointment } subscribe(subject, action) { this._subscribes[subject] = _m_subscribes.default[subject] = action } fire(subject) { const callback = this._subscribes[subject]; const args = Array.prototype.slice.call(arguments); if (!(0, _type.isFunction)(callback)) { throw _ui.default.Error("E1031", subject) } return callback.apply(this, args.slice(1)) } getTargetCellData() { return this._workSpace.getDataByDroppableCell() } _updateAppointment(target, rawAppointment, onUpdatePrevented, dragEvent) { const updatingOptions = { newData: rawAppointment, oldData: (0, _extend.extend)({}, target), cancel: false }; const performFailAction = function(err) { if (onUpdatePrevented) { onUpdatePrevented.call(this) } if (err && "Error" === err.name) { throw err } }.bind(this); this._actions[StoreEventNames_UPDATING](updatingOptions); if (dragEvent && !(0, _type.isDeferred)(dragEvent.cancel)) { dragEvent.cancel = new _deferred.Deferred } return this._processActionResult(updatingOptions, (function(canceled) { let deferred = new _deferred.Deferred; if (!canceled) { this._expandAllDayPanel(rawAppointment); try { deferred = this.appointmentDataProvider.update(target, rawAppointment).done((() => { null === dragEvent || void 0 === dragEvent || dragEvent.cancel.resolve(false) })).always((storeAppointment => this._onDataPromiseCompleted(StoreEventNames_UPDATED, storeAppointment))).fail((() => performFailAction())) } catch (err) { performFailAction(err); deferred.resolve() } } else { performFailAction(); deferred.resolve() } return deferred.promise() })) } _processActionResult(actionOptions, callback) { const deferred = new _deferred.Deferred; const resolveCallback = callbackResult => { (0, _deferred.when)((0, _deferred.fromPromise)(callbackResult)).always(deferred.resolve) }; if ((0, _type.isPromise)(actionOptions.cancel)) { (0, _deferred.when)((0, _deferred.fromPromise)(actionOptions.cancel)).always((cancel => { if (!(0, _type.isDefined)(cancel)) { cancel = "rejected" === actionOptions.cancel.state() } resolveCallback(callback.call(this, cancel)) })) } else { resolveCallback(callback.call(this, actionOptions.cancel)) } return deferred.promise() } _expandAllDayPanel(appointment) { if (!this._isAllDayExpanded() && this.appointmentTakesAllDay(appointment)) { this._updateOption("workSpace", "allDayExpanded", true) } } _onDataPromiseCompleted(handlerName, storeAppointment, appointment) { const args = { appointmentData: appointment || storeAppointment }; if (storeAppointment instanceof Error) { args.error = storeAppointment } else { this._appointmentPopup.visible && this._appointmentPopup.hide() } this._actions[handlerName](args); this._fireContentReadyAction() } getAppointmentsInstance() { return this._appointments } getLayoutManager() { return this._layoutManager } getRenderingStrategyInstance() { return this.getLayoutManager().getRenderingStrategyInstance() } getActions() { return this._actions } appointmentTakesAllDay(rawAppointment) { const appointment = new _appointment_adapter.AppointmentAdapter(rawAppointment, this._dataAccessors); return (0, _index3.isAppointmentTakesAllDay)(appointment, this._getCurrentViewOption("allDayPanelMode")) } dayHasAppointment(day, rawAppointment, trimTime) { const getConvertedToTimeZone = date => this.timeZoneCalculator.createDate(date, "toGrid"); const appointment = new _appointment_adapter.AppointmentAdapter(rawAppointment, this._dataAccessors); let startDate = new Date(appointment.startDate); let endDate = new Date(appointment.endDate); startDate = getConvertedToTimeZone(startDate); endDate = getConvertedToTimeZone(endDate); if (day.getTime() === endDate.getTime()) { return startDate.getTime() === endDate.getTime() } if (trimTime) { day = _date2.default.trimTime(day); startDate = _date2.default.trimTime(startDate); endDate = _date2.default.trimTime(endDate) } const dayTimeStamp = day.getTime(); const startDateTimeStamp = startDate.getTime(); const endDateTimeStamp = endDate.getTime(); return startDateTimeStamp <= dayTimeStamp && dayTimeStamp <= endDateTimeStamp } setTargetedAppointmentResources(rawAppointment, element, appointmentIndex) { const groups = this._getCurrentViewOption("groups"); if (null !== groups && void 0 !== groups && groups.length) { const { resourceById: resourceById, groupsLeafs: groupsLeafs } = this.resourceManager; const appointmentSettings = this._isAgenda() ? this.getLayoutManager()._positionMap[appointmentIndex][0] : _m_utils.utils.dataAccessors.getAppointmentSettings(element) || {}; const cellGroups = (0, _group_utils.getLeafGroupValues)(groupsLeafs, appointmentSettings.groupIndex); (0, _appointment_groups_utils.setAppointmentGroupValues)(rawAppointment, resourceById, cellGroups) } } getStartViewDate() { var _this$_workSpace5; return null === (_this$_workSpace5 = this._workSpace) || void 0 === _this$_workSpace5 ? void 0 : _this$_workSpace5.getStartViewDate() } getEndViewDate() { return this._workSpace.getEndViewDate() } showAddAppointmentPopup(cellData, cellGroups) { const appointmentAdapter = new _appointment_adapter.AppointmentAdapter({}, this._dataAccessors); appointmentAdapter.allDay = Boolean(cellData.allDay); appointmentAdapter.startDate = cellData.startDateUTC; appointmentAdapter.endDate = cellData.endDateUTC; const resultAppointment = (0, _extend.extend)(appointmentAdapter.source, cellGroups); this.showAppointmentPopup(resultAppointment, true) } showAppointmentPopup(rawAppointment, createNewAppointment, rawTargetedAppointment) { const newRawTargetedAppointment = _extends({}, rawTargetedAppointment); if (newRawTargetedAppointment) { delete newRawTargetedAppointment.displayStartDate; delete newRawTargetedAppointment.displayEndDate } const newTargetedAppointment = (0, _extend.extend)({}, rawAppointment, newRawTargetedAppointment); const isCreateAppointment = createNewAppointment ?? (0, _type.isEmptyObject)(rawAppointment); if ((0, _type.isEmptyObject)(rawAppointment)) { rawAppointment = this.createPopupAppointment() } if (isCreateAppointment) { delete this._editAppointmentData; this._editing.allowAdding && this._appointmentPopup.show(rawAppointment, { isToolbarVisible: true, action: _m_popup.ACTION_TO_APPOINTMENT.CREATE }) } else { const startDate = this._dataAccessors.get("startDate", newRawTargetedAppointment || rawAppointment); this._checkRecurringAppointment(rawAppointment, newTargetedAppointment, startDate, (() => { this._editAppointmentData = rawAppointment; this._appointmentPopup.show(rawAppointment, { isToolbarVisible: this._editing.allowUpdating, action: _m_popup.ACTION_TO_APPOINTMENT.UPDATE }) }), false, true) } } createPopupAppointment() { const result = {}; const toMs = _date2.default.dateToMilliseconds; const startDate = new Date(this.option("currentDate")); const endDate = new Date(startDate.getTime() + this.option("cellDuration") * toMs("minute")); this._dataAccessors.set("startDate", result, startDate); this._dataAccessors.set("endDate", result, endDate); return result } hideAppointmentPopup(saveChanges) { var _this$_appointmentPop3; if (null !== (_this$_appointmentPop3 = this._appointmentPopup) && void 0 !== _this$_appointmentPop3 && _this$_appointmentPop3.visible) { saveChanges && this._appointmentPopup.saveChangesAsync(); this._appointmentPopup.hide() } } showAppointmentTooltip(appointment, element, targetedAppointment) { if (appointment) { const settings = _m_utils.utils.dataAccessors.getAppointmentSettings(element); const appointmentConfig = { itemData: targetedAppointment || appointment, groupIndex: null === settings || void 0 === settings ? void 0 : settings.groupIndex, groups: this.option("groups") }; const getAppointmentColor = this.createGetAppointmentColor(); const deferredColor = getAppointmentColor(appointmentConfig); const info = new _m_data_structures.AppointmentTooltipInfo(appointment, targetedAppointment, deferredColor); this.showAppointmentTooltipCore(element, [info]) } } createGetAppointmentColor() { return appointmentConfig => (0, _deferred.fromPromise)(this.resourceManager.getAppointmentColor(appointmentConfig)) } showAppointmentTooltipCore(target, data, options) { const arg = { cancel: false, appointments: data.map((item => { const result = { appointmentData: item.appointment, currentAppointmentData: _extends({}, item.targetedAppointment), color: item.color }; if (item.settings.info) { const { startDate: startDate, endDate: endDate } = item.settings.info.appointment; result.currentAppointmentData.displayStartDate = startDate; result.currentAppointmentData.displayEndDate = endDate } return result })), targetElement: (0, _element.getPublicElement)(target) }; this._createActionByOption("onAppointmentTooltipShowing")(arg); if (this._appointmentTooltip.isAlreadyShown(target)) { this.hideAppointmentTooltip() } else { this._processActionResult(arg, (canceled => { !canceled && this._appointmentTooltip.show(target, data, _extends({}, this._getExtraAppointmentTooltipOptions(), options)) })) } } hideAppointmentTooltip() { var _this$_appointmentToo2; null === (_this$_appointmentToo2 = this._appointmentTooltip) || void 0 === _this$_appointmentToo2 || _this$_appointmentToo2.hide() } scrollToTime(hours, minutes, date) { _ui.default.log("W0002", "dxScheduler", "scrollToTime", "21.1", 'Use the "scrollTo" method instead'); this._workSpace.scrollToTime(hours, minutes, date) } scrollTo(date, groupValues, allDay) { this._workSpace.scrollTo(date, groupValues, allDay) } _isHorizontalVirtualScrolling() { const scrolling = this.option("scrolling"); const { orientation: orientation, mode: mode } = scrolling; const isVirtualScrolling = "virtual" === mode; return isVirtualScrolling && ("horizontal" === orientation || "both" === orientation) } addAppointment(rawAppointment) { const appointment = new _appointment_adapter.AppointmentAdapter(rawAppointment, this._dataAccessors); appointment.text = appointment.text || ""; const serializedAppointment = appointment.serialize().source; const addingOptions = { appointmentData: serializedAppointment, cancel: false }; this._actions[StoreEventNames_ADDING](addingOptions); return this._processActionResult(addingOptions, (canceled => { if (canceled) { return (new _deferred.Deferred).resolve() } this._expandAllDayPanel(serializedAppointment); return this.appointmentDataProvider.add(serializedAppointment).always((storeAppointment => this._onDataPromiseCompleted(StoreEventNames_ADDED, storeAppointment))) })) } updateAppointment(target, appointment) { return this._updateAppointment(target, appointment) } deleteAppointment(rawAppointment) { const deletingOptions = this.fireOnAppointmentDeleting(rawAppointment); this.processDeleteAppointment(rawAppointment, deletingOptions) } fireOnAppointmentDeleting(rawAppointment, targetedAppointmentData) { const deletingOptions = { appointmentData: rawAppointment, targetedAppointmentData: targetedAppointmentData, cancel: false }; this._actions[StoreEventNames_DELETING](deletingOptions); return deletingOptions } processDeleteAppointment(rawAppointment, deletingOptions) { this._processActionResult(deletingOptions, (function(canceled) { if (!canceled) { this.appointmentDataProvider.remove(rawAppointment).always((storeAppointment => this._onDataPromiseCompleted(StoreEventNames_DELETED, storeAppointment, rawAppointment))) } })) } deleteRecurrence(appointment, date, recurrenceEditMode) { if ("string" === typeof date) { date = new Date(date) } this._checkRecurringAppointment(appointment, {}, date, (() => { this.processDeleteAppointment(appointment, { cancel: false }) }), true, false, null, recurrenceEditMode) } focus() { if (this._editAppointmentData) { this._appointments.focus() } else { this._workSpace.focus() } } getFirstDayOfWeek() { return (0, _type.isDefined)(this.option("firstDayOfWeek")) ? this.option("firstDayOfWeek") : _date.default.firstDayOfWeekIndex() } _validateKeyFieldIfAgendaExist() { if (!this.appointmentDataProvider.isDataSourceInit) { return } const hasAgendaView = !!this._getViewByName("agenda"); const isKeyExist = !!this.appointmentDataProvider.keyName; if (hasAgendaView && !isKeyExist) { _ui.default.log("W1023") } } _getDragBehavior() { return this._workSpace.dragBehavior } getViewOffsetMs() { const offsetFromOptions = this._getCurrentViewOption("offset"); return this.normalizeViewOffsetValue(offsetFromOptions) } normalizeViewOffsetValue(viewOffset) { if (!(0, _type.isDefined)(viewOffset) || this.currentViewType === _constants.VIEWS.AGENDA) { return 0 } return viewOffset * toMs("minute") } validateOptions() { const currentViewOptions = _extends({}, this.option(), { startDayHour: this._getCurrentViewOption("startDayHour"), endDayHour: this._getCurrentViewOption("endDayHour"), offset: this._getCurrentViewOption("offset"), cellDuration: this._getCurrentViewOption("cellDuration") }); const validationResult = this._optionsValidator.validate(currentViewOptions); this._optionsValidatorErrorHandler.handleValidationResult(validationResult) } } Scheduler.include(_data_helper.default); (0, _component_registrator.default)("dxScheduler", Scheduler); exports.default = Scheduler }, 58713: /*!**********************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/scheduler/m_subscribes.js ***! \**********************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../core/renderer */ 64553)); var _date = _interopRequireDefault(__webpack_require__( /*! ../../core/utils/date */ 41380)); var _extend = __webpack_require__( /*! ../../core/utils/extend */ 52576); var _iterator = __webpack_require__( /*! ../../core/utils/iterator */ 21274); var _type = __webpack_require__( /*! ../../core/utils/type */ 11528); var _m_text_utils = __webpack_require__( /*! ./appointments/m_text_utils */ 9680); var _m_classes = __webpack_require__( /*! ./m_classes */ 80126); var _m_utils = __webpack_require__( /*! ./m_utils */ 5327); var _appointment_adapter = __webpack_require__( /*! ./utils/appointment_adapter/appointment_adapter */ 36791); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } function _extends() { return _extends = Object.assign ? Object.assign.bind() : function(n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) { ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]) } } return n }, _extends.apply(null, arguments) } const toMs = _date.default.dateToMilliseconds; const subscribes = { isCurrentViewAgenda() { return "agenda" === this.currentViewType }, currentViewUpdated(currentView) { this.option("currentView", currentView) }, currentDateUpdated(date) { this.option("currentDate", date) }, getOption(name) { return this.option(name) }, getWorkspaceOption(name) { return this.getWorkSpace().option(name) }, isVirtualScrolling() { return this.isVirtualScrolling() }, setCellDataCacheAlias(appointment, geometry) { this._workSpace.setCellDataCacheAlias(appointment, geometry) }, isGroupedByDate() { return this.getWorkSpace().isGroupedByDate() }, showAppointmentTooltip(options) { const targetedAppointment = this.getTargetedAppointment(options.data, options.target); this.showAppointmentTooltip(options.data, options.target, targetedAppointment) }, hideAppointmentTooltip() { this.hideAppointmentTooltip() }, showEditAppointmentPopup(options) { const targetedData = this.getTargetedAppointment(options.data, options.target); this.showAppointmentPopup(options.data, false, targetedData) }, updateAppointmentAfterResize(options) { const info = _m_utils.utils.dataAccessors.getAppointmentInfo(options.$appointment); const { exceptionDate: exceptionDate } = info.sourceAppointment; this._checkRecurringAppointment(options.target, options.data, exceptionDate, (() => { this._updateAppointment(options.target, options.data, (function() { this._appointments.moveAppointmentBack() })) })) }, getUpdatedData(rawAppointment) { return this._getUpdatedData(rawAppointment) }, updateAppointmentAfterDrag(_ref) { let { event: event, element: element, rawAppointment: rawAppointment, isDropToTheSameCell: isDropToTheSameCell, isDropToSelfScheduler: isDropToSelfScheduler } = _ref; const info = _m_utils.utils.dataAccessors.getAppointmentInfo(element); const targetedRawAppointment = (0, _extend.extend)({}, rawAppointment, this._getUpdatedData(rawAppointment)); const fromAllDay = Boolean(rawAppointment.allDay); const toAllDay = Boolean(targetedRawAppointment.allDay); const isDropBetweenAllDay = this._workSpace.supportAllDayRow() && fromAllDay !== toAllDay; const isDragAndDropBetweenComponents = event.fromComponent !== event.toComponent; const onCancel = () => { this._appointments.moveAppointmentBack(event) }; if (!isDropToSelfScheduler && isDragAndDropBetweenComponents) { return } if (isDropToSelfScheduler && (!isDropToTheSameCell || isDragAndDropBetweenComponents || isDropBetweenAllDay)) { this._checkRecurringAppointment(rawAppointment, targetedRawAppointment, info.sourceAppointment.startDate, (() => { this._updateAppointment(rawAppointment, targetedRawAppointment, onCancel, event) }), void 0, void 0, event) } else { onCancel() } }, onDeleteButtonPress(options) { const targetedData = this.getTargetedAppointment(options.data, (0, _renderer.default)(options.target)); this.checkAndDeleteAppointment(options.data, targetedData); this.hideAppointmentTooltip() }, getTextAndFormatDate(appointmentRaw, targetedAppointmentRaw, format) { const targetedAppointment = _extends({}, appointmentRaw, targetedAppointmentRaw); const adapter = new _appointment_adapter.AppointmentAdapter(targetedAppointment, this._dataAccessors); const { startDate: startDate, endDate: endDate } = adapter.getCalculatedDates(this.timeZoneCalculator, "toGrid"); const formatType = format || (0, _m_text_utils.getFormatType)(startDate, endDate, adapter.allDay, "month" !== this.currentViewType); return { text: adapter.text, formatDate: (0, _m_text_utils.formatDates)(startDate, endDate, formatType) } }, _createAppointmentTitle(data) { if ((0, _type.isPlainObject)(data)) { return data.text } return String(data) }, getResizableAppointmentArea(options) { const { allDay: allDay } = options; const groups = this._getCurrentViewOption("groups"); if (null !== groups && void 0 !== groups && groups.length) { if (allDay || this.getLayoutManager().getRenderingStrategyInstance()._needHorizontalGroupBounds()) { const horizontalGroupBounds = this._workSpace.getGroupBounds(options.coordinates); return { left: horizontalGroupBounds.left, right: horizontalGroupBounds.right, top: 0, bottom: 0 } } if (this.getLayoutManager().getRenderingStrategyInstance()._needVerticalGroupBounds(allDay) && this._workSpace._isVerticalGroupedWorkSpace()) { const verticalGroupBounds = this._workSpace.getGroupBounds(options.coordinates); return { left: 0, right: 0, top: verticalGroupBounds.top, bottom: verticalGroupBounds.bottom } } } return }, needRecalculateResizableArea() { return this.getWorkSpace().needRecalculateResizableArea() }, getAppointmentGeometry(settings) { return this.getLayoutManager().getRenderingStrategyInstance().getAppointmentGeometry(settings) }, isAllDay(appointmentData) { return this.getLayoutManager().getRenderingStrategyInstance().isAllDay(appointmentData) }, getDeltaTime(e, initialSize, itemData) { return this.getLayoutManager().getRenderingStrategyInstance().getDeltaTime(e, initialSize, itemData) }, getDropDownAppointmentWidth(isAllDay) { return this.getLayoutManager().getRenderingStrategyInstance().getDropDownAppointmentWidth(this._getViewCountConfig().intervalCount, isAllDay) }, getDropDownAppointmentHeight() { return this.getLayoutManager().getRenderingStrategyInstance().getDropDownAppointmentHeight() }, getCellWidth() { return this.getWorkSpace().getCellWidth() }, getCellHeight() { return this.getWorkSpace().getCellHeight() }, getMaxAppointmentCountPerCellByType(isAllDay) { return this.getRenderingStrategyInstance()._getMaxAppointmentCountPerCellByType(isAllDay) }, needCorrectAppointmentDates() { return this.getRenderingStrategyInstance().needCorrectAppointmentDates() }, getRenderingStrategyDirection() { return this.getRenderingStrategyInstance().getDirection() }, updateAppointmentEndDate(options) { const { endDate: endDate } = options; const endDayHour = this._getCurrentViewOption("endDayHour"); const startDayHour = this._getCurrentViewOption("startDayHour"); let updatedEndDate = endDate; if (endDate.getHours() >= endDayHour) { updatedEndDate.setHours(endDayHour, 0, 0, 0) } else if (!options.isSameDate && startDayHour > 0 && 60 * endDate.getHours() + endDate.getMinutes() < 60 * startDayHour) { updatedEndDate = new Date(updatedEndDate.getTime() - toMs("day")); updatedEndDate.setHours(endDayHour, 0, 0, 0) } return updatedEndDate }, renderCompactAppointments(options) { this._compactAppointmentsHelper.render(options) }, clearCompactAppointments() { this._compactAppointmentsHelper.clear() }, supportCompactDropDownAppointments() { return this.getLayoutManager().getRenderingStrategyInstance().supportCompactDropDownAppointments() }, getGroupCount() { return this._workSpace._getGroupCount() }, mapAppointmentFields(config) { const { itemData: itemData, itemElement: itemElement, targetedAppointment: targetedAppointment } = config; const targetedData = targetedAppointment || this.getTargetedAppointment(itemData, itemElement); return { appointmentData: config.itemData, appointmentElement: config.itemElement, targetedAppointmentData: targetedData } }, dayHasAppointment(day, appointment, trimTime) { return this.dayHasAppointment(day, appointment, trimTime) }, getLayoutManager() { return this._layoutManager }, getAgendaVerticalStepHeight() { return this.getWorkSpace().getAgendaVerticalStepHeight() }, getAgendaDuration() { return this._getCurrentViewOption("agendaDuration") }, getStartViewDate() { return this.getStartViewDate() }, getEndViewDate() { return this.getEndViewDate() }, forceMaxAppointmentPerCell() { return this.forceMaxAppointmentPerCell() }, onAgendaReady(rows) { const $appts = this.getAppointmentsInstance()._itemElements(); let total = 0; const applyClass = function(_, count) { const index = count + total - 1; $appts.eq(index).addClass(_m_classes.AGENDA_LAST_IN_DATE_APPOINTMENT_CLASS); total += count }; for (let i = 0; i < rows.length; i++) { (0, _iterator.each)(rows[i], applyClass) } }, getTimezone() { return this._getTimezoneOffsetByOption() }, getTargetedAppointmentData(appointment, element) { return this.getTargetedAppointment(appointment, element) }, getEndDayHour() { return this._workSpace.option("endDayHour") || this.option("endDayHour") }, getStartDayHour() { return this._workSpace.option("startDayHour") || this.option("startDayHour") }, getViewOffsetMs() { return this.getViewOffsetMs() }, isAdaptive() { return this.option("adaptivityEnabled") }, removeDroppableCellClass() { this._workSpace.removeDroppableCellClass() } }; exports.default = subscribes }, 92201: /*!*************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/scheduler/m_table_creator.js ***! \*************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _dom_adapter = _interopRequireDefault(__webpack_require__( /*! ../../core/dom_adapter */ 64960)); var _element = __webpack_require__( /*! ../../core/element */ 61404); var _element_data = __webpack_require__( /*! ../../core/element_data */ 74663); var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../core/renderer */ 64553)); var _type = __webpack_require__( /*! ../../core/utils/type */ 11528); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } function _extends() { return _extends = Object.assign ? Object.assign.bind() : function(n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) { ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]) } } return n }, _extends.apply(null, arguments) } exports.default = { tableCreator: new class { constructor() { this.VERTICAL = "vertical"; this.HORIZONTAL = "horizontal" } insertAllDayRow(allDayElements, tableBody, index) { if (allDayElements[index]) { let row = allDayElements[index].find("tr"); if (!row.length) { row = (0, _renderer.default)(_dom_adapter.default.createElement("tr")); row.append(allDayElements[index].get(0)) } tableBody.appendChild(row.get ? row.get(0) : row) } } makeTable(options) { const tableBody = _dom_adapter.default.createElement("tbody"); const templateCallbacks = []; let row; const rowCountInGroup = options.groupCount ? options.rowCount / options.groupCount : options.rowCount; let allDayElementIndex = 0; const { allDayElements: allDayElements } = options; const { groupIndex: groupIndex } = options; const { rowCount: rowCount } = options; (0, _renderer.default)(options.container).append(tableBody); if (allDayElements) { this.insertAllDayRow(allDayElements, tableBody, 0); allDayElementIndex++ } for (let rowIndex = 0; rowIndex < rowCount; rowIndex++) { row = _dom_adapter.default.createElement("tr"); tableBody.appendChild(row); const isLastRowInGroup = (rowIndex + 1) % rowCountInGroup === 0; if (options.rowClass) { row.className = options.rowClass } for (let columnIndex = 0; columnIndex < options.cellCount; columnIndex++) { var _options$setAdditiona; const td = _dom_adapter.default.createElement("td"); row.appendChild(td); if (options.cellClass) { if ((0, _type.isFunction)(options.cellClass)) { td.className = options.cellClass(rowIndex, columnIndex) } else { td.className = options.cellClass } } let cellDataObject; let dataKey; let dataValue; if (options.getCellData) { cellDataObject = options.getCellData(td, rowIndex, columnIndex, groupIndex); dataKey = cellDataObject.key; dataValue = cellDataObject.value; dataKey && (0, _element_data.data)(td, dataKey, dataValue) } null === (_options$setAdditiona = options.setAdditionalClasses) || void 0 === _options$setAdditiona || _options$setAdditiona.call(options, (0, _renderer.default)(td), dataValue); if (options.cellTemplate && options.cellTemplate.render) { const additionalTemplateData = options.getTemplateData ? options.getTemplateData(rowIndex) : {}; const templateOptions = { model: _extends({ text: options.getCellText ? options.getCellText(rowIndex, columnIndex) : "", date: options.getCellDate ? options.getCellDate(rowIndex) : void 0 }, additionalTemplateData), container: (0, _element.getPublicElement)((0, _renderer.default)(td)), index: rowIndex * options.cellCount + columnIndex }; if (dataValue) { if (dataValue.startDate) { templateOptions.model.startDate = dataValue.startDate } if (dataValue.endDate) { templateOptions.model.endDate = dataValue.endDate } if (dataValue.groups) { templateOptions.model.groups = dataValue.groups } if (dataValue.allDay) { templateOptions.model.allDay = dataValue.allDay } } templateCallbacks.push(options.cellTemplate.render.bind(options.cellTemplate, templateOptions)) } else if (options.getCellText) { (0, _renderer.default)("
").text(options.getCellText(rowIndex, columnIndex)).addClass(options.getCellTextClass).appendTo((0, _renderer.default)(td)) } } if (allDayElements && isLastRowInGroup) { this.insertAllDayRow(allDayElements, tableBody, allDayElementIndex); allDayElementIndex++ } } return templateCallbacks } makeGroupedTable(type, groups, cssClasses, cellCount, cellTemplate, rowCount, groupByDate) { let rows = []; if (type === this.VERTICAL) { rows = this._makeVerticalGroupedRows(groups, cssClasses, cellTemplate, rowCount) } else { rows = this._makeHorizontalGroupedRows(groups, cssClasses, cellCount, cellTemplate, groupByDate) } return rows } makeGroupedTableFromJSON(type, data, config) { let table; const cellStorage = []; let rowIndex = 0; config = config || {}; const cellTag = config.cellTag || "td"; const childrenField = config.childrenField || "children"; const titleField = config.titleField || "title"; const { groupTableClass: groupTableClass } = config; const { groupRowClass: groupRowClass } = config; const { groupCellClass: groupCellClass } = config; const { groupCellCustomContent: groupCellCustomContent } = config; function getChildCount(item) { if (item[childrenField]) { return item[childrenField].length } return 0 } function createCell(text, childCount, index, data) { const cell = { element: _dom_adapter.default.createElement(cellTag), childCount: childCount }; if (groupCellClass) { cell.element.className = groupCellClass } const cellText = _dom_adapter.default.createTextNode(text); if ("function" === typeof groupCellCustomContent) { groupCellCustomContent(cell.element, cellText, index, data) } else { cell.element.appendChild(cellText) } return cell }! function() { table = _dom_adapter.default.createElement("table"); if (groupTableClass) { table.className = groupTableClass } }(); ! function generateCells(data) { for (let i = 0; i < data.length; i++) { const childCount = getChildCount(data[i]); const cell = createCell(data[i][titleField], childCount, i, data[i]); if (!cellStorage[rowIndex]) { cellStorage[rowIndex] = [] } cellStorage[rowIndex].push(cell); if (childCount) { generateCells(data[i][childrenField]) } else { rowIndex++ } } }(data); void cellStorage.forEach((cells => { const row = _dom_adapter.default.createElement("tr"); if (groupRowClass) { row.className = groupRowClass } const rowspans = []; for (let i = cells.length - 1; i >= 0; i--) { const prev = cells[i + 1]; let rowspan = cells[i].childCount; if (prev && prev.childCount) { rowspan *= prev.childCount } rowspans.push(rowspan) } rowspans.reverse(); cells.forEach(((cell, index) => { if (rowspans[index]) { cell.element.setAttribute("rowSpan", rowspans[index]) } row.appendChild(cell.element) })); table.appendChild(row) })); return table } _makeFlexGroupedRowCells(group, repeatCount, cssClasses, cellTemplate) { let repeatByDate = arguments.length > 4 && void 0 !== arguments[4] ? arguments[4] : 1; const cells = []; const { items: items } = group; const itemCount = items.length; for (let i = 0; i < repeatCount * repeatByDate; i++) { for (let j = 0; j < itemCount; j++) { let $container = (0, _renderer.default)("
"); const cell = {}; if (cellTemplate && cellTemplate.render) { const templateOptions = { model: items[j], container: (0, _element.getPublicElement)($container), index: i * itemCount + j }; if (group.data) { templateOptions.model.data = group.data[j] } cell.template = cellTemplate.render.bind(cellTemplate, templateOptions) } else { $container.text(items[j].text).attr("title", items[j].text).addClass("dx-scheduler-group-header-content"); $container = (0, _renderer.default)("
").append($container) } const cssClass = (0, _type.isFunction)(cssClasses.groupHeaderClass) ? cssClasses.groupHeaderClass(j) : cssClasses.groupHeaderClass; cell.element = $container.addClass(cssClass); cells.push(cell) } } return cells } _makeVerticalGroupedRows(groups, cssClasses, cellTemplate, rowCount) { const cellTemplates = []; let repeatCount = 1; const cellsArray = []; const cellIterator = function(cell) { if (cell.template) { cellTemplates.push(cell.template) } }; for (let i = 0; i < groups.length; i++) { if (i > 0) { repeatCount = groups[i - 1].items.length * repeatCount } const cells = this._makeFlexGroupedRowCells(groups[i], repeatCount, cssClasses, cellTemplate); cells.forEach(cellIterator); cellsArray.push(cells) } const rows = []; const groupCount = cellsArray.length; for (let i = 0; i < groupCount; i++) { rows.push((0, _renderer.default)("
").addClass(cssClasses.groupHeaderRowClass)) } for (let i = groupCount - 1; i >= 0; i--) { const currentColumnLength = cellsArray[i].length; for (let j = 0; j < currentColumnLength; j++) { rows[i].append(cellsArray[i][j].element) } } return { elements: (0, _renderer.default)("
").addClass("dx-scheduler-group-flex-container").append(rows), cellTemplates: cellTemplates } } _makeHorizontalGroupedRows(groups, cssClasses, cellCount, cellTemplate, groupByDate) { let repeatCount = 1; const groupCount = groups.length; const rows = []; const cellTemplates = []; const repeatByDate = groupByDate ? cellCount : 1; const cellIterator = function(cell) { if (cell.template) { cellTemplates.push(cell.template) } return cell.element }; for (let i = 0; i < groupCount; i++) { if (i > 0) { repeatCount = groups[i - 1].items.length * repeatCount } const cells = this._makeGroupedRowCells(groups[i], repeatCount, cssClasses, cellTemplate, repeatByDate); rows.push((0, _renderer.default)("
").addClass(cssClass).append($container); cells.push(cell) } } return cells } } } }, 5327: /*!*****************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/scheduler/m_utils.js ***! \*****************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.utils = void 0; var _element = __webpack_require__( /*! ../../core/element */ 61404); var _renderer = (e = __webpack_require__( /*! ../../core/renderer */ 64553), e && e.__esModule ? e : { default: e }); var e; var _size = __webpack_require__( /*! ../../core/utils/size */ 57653); var _constants = __webpack_require__( /*! ./constants */ 25307); const utils = exports.utils = { dataAccessors: { getAppointmentSettings: element => (0, _renderer.default)(element).data(_constants.APPOINTMENT_SETTINGS_KEY), getAppointmentInfo: element => { const settings = utils.dataAccessors.getAppointmentSettings(element); return null === settings || void 0 === settings ? void 0 : settings.info } }, DOM: { getHeaderHeight: header => header ? header._$element && parseInt((0, _size.getOuterHeight)(header._$element), 10) : 0 }, renovation: { renderComponent: (widget, parentElement, componentClass, componentName, viewModel) => { let component = widget[componentName]; if (!component) { const container = (0, _element.getPublicElement)(parentElement); component = widget._createComponent(container, componentClass, viewModel); widget[componentName] = component } else { const $element = component.$element(); const elementStyle = $element.get(0).style; const { height: height } = elementStyle; const { width: width } = elementStyle; component.option(viewModel); if (height) { (0, _size.setHeight)($element, height) } if (width) { (0, _size.setWidth)($element, width) } } } } } }, 18648: /*!***************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/scheduler/m_utils_time_zone.js ***! \***************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _errors = _interopRequireDefault(__webpack_require__( /*! ../../core/errors */ 87129)); var _date = __webpack_require__( /*! ../core/utils/date */ 55594); var _index = __webpack_require__( /*! ../scheduler/utils/index */ 80356); var _date2 = _interopRequireDefault(__webpack_require__( /*! ../../core/utils/date */ 41380)); var _m_date_adapter = _interopRequireDefault(__webpack_require__( /*! ./m_date_adapter */ 19576)); var _m_utils_timezones_data = _interopRequireDefault(__webpack_require__( /*! ./timezones/m_utils_timezones_data */ 73862)); var _timezone_list = _interopRequireDefault(__webpack_require__( /*! ./timezones/timezone_list */ 95053)); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } const toMs = _date2.default.dateToMilliseconds; const offsetFormatRegexp = /^GMT(?:[+-]\d{2}:\d{2})?$/; const createUTCDate = date => new Date(Date.UTC(date.getUTCFullYear(), date.getUTCMonth(), date.getUTCDate(), date.getUTCHours(), date.getUTCMinutes())); const getTimezoneOffsetChangeInMinutes = (startDate, endDate, updatedStartDate, updatedEndDate) => getDaylightOffset(updatedStartDate, updatedEndDate) - getDaylightOffset(startDate, endDate); const getDaylightOffset = (startDate, endDate) => new Date(startDate).getTimezoneOffset() - new Date(endDate).getTimezoneOffset(); const getDaylightOffsetInMs = (startDate, endDate) => getDaylightOffset(startDate, endDate) * toMs("minute"); const calculateTimezoneByValue = function(timeZone) { let date = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : new Date; if (!timeZone) { return } const isValidTimezone = _timezone_list.default.value.includes(timeZone); if (!isValidTimezone) { _errors.default.log("W0009", timeZone); return } if (!_date.dateUtilsTs.isValidDate(date)) { return } let result = function(timezone) { let date = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : new Date; const customTimezones = _m_utils_timezones_data.default.getTimeZonesOld(); if (0 === customTimezones.length) { return } const dateUtc = createUTCDate(date); return _m_utils_timezones_data.default.getTimeZoneOffsetById(timezone, dateUtc.getTime()) }(timeZone, date); if (void 0 === result) { result = function(timeZone) { let date = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : new Date; const offset = getStringOffset(timeZone, date); if (void 0 === offset) { return } if ("GMT" === offset) { return 0 } const isMinus = "-" === offset.substring(3, 4); const hours = offset.substring(4, 6); const minutes = offset.substring(7, 9); const result = parseInt(hours, 10) + parseInt(minutes, 10) / 60; return isMinus ? -result : result }(timeZone, date) } return result }; const getStringOffset = function(timeZone) { let date = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : new Date; let result = ""; try { var _dateTimeFormat$forma; const dateTimeFormat = new Intl.DateTimeFormat("en-US", { timeZone: timeZone, timeZoneName: "longOffset" }); result = (null === (_dateTimeFormat$forma = dateTimeFormat.formatToParts(date).find((_ref => { let { type: type } = _ref; return "timeZoneName" === type }))) || void 0 === _dateTimeFormat$forma ? void 0 : _dateTimeFormat$forma.value) ?? "" } catch (e) { _errors.default.log("W0009", timeZone); return } const isSupportedFormat = offsetFormatRegexp.test(result); if (!isSupportedFormat) { _errors.default.log("W0009", timeZone); return } return result }; const getTimezoneTitle = function(timeZone) { let date = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : new Date; if (!_date.dateUtilsTs.isValidDate(date)) { return "" } const tzNamePart = timeZone.replace(/\//g, " - ").replace(/_/g, " "); const offset = getStringOffset(timeZone, date); if (void 0 === offset) { return } const offsetNamePart = (offset => { if ("GMT" === offset) { return `${offset} +00:00` } return offset.replace("GMT", "GMT ") })(offset); return `(${offsetNamePart}) ${tzNamePart}` }; const _getDaylightOffsetByTimezone = (startDate, endDate, timeZone) => { const startDayOffset = calculateTimezoneByValue(timeZone, startDate); const endDayOffset = calculateTimezoneByValue(timeZone, endDate); if (void 0 === startDayOffset || void 0 === endDayOffset) { return 0 } return startDayOffset - endDayOffset }; const isTimezoneChangeInDate = date => { const startDayDate = new Date(new Date(date).setHours(0, 0, 0, 0)); const endDayDate = new Date(new Date(date).setHours(23, 59, 59, 0)); return startDayDate.getTimezoneOffset() - endDayDate.getTimezoneOffset() !== 0 }; const getClientTimezoneOffset = function() { let date = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : new Date; return 6e4 * date.getTimezoneOffset() }; const hasDSTInLocalTimeZone = () => { const [startDate, endDate] = getExtremeDates(); return startDate.getTimezoneOffset() !== endDate.getTimezoneOffset() }; const getOffset = date => -date.getTimezoneOffset() / 60; const getDateAndMoveHourBack = dateStamp => new Date(dateStamp - toMs("hour")); const isEqualLocalTimeZoneByDeclaration = (timeZoneName, date) => { const customTimezones = _m_utils_timezones_data.default.getTimeZonesOld(); const targetTimezoneData = customTimezones.filter((tz => tz.id === timeZoneName)); if (1 === targetTimezoneData.length) { return ((timeZoneName, date) => { const year = date.getFullYear(); const configTuple = _m_utils_timezones_data.default.getTimeZoneDeclarationTuple(timeZoneName, year); const [summerTime, winterTime] = configTuple; const noDSTInTargetTimeZone = configTuple.length < 2; if (noDSTInTargetTimeZone) { const targetTimeZoneOffset = _m_utils_timezones_data.default.getTimeZoneOffsetById(timeZoneName, date); const localTimeZoneOffset = getOffset(date); if (targetTimeZoneOffset !== localTimeZoneOffset) { return false } return !hasDSTInLocalTimeZone() } const localSummerOffset = getOffset(new Date(summerTime.date)); const localWinterOffset = getOffset(new Date(winterTime.date)); if (localSummerOffset !== summerTime.offset) { return false } if (localSummerOffset === getOffset(getDateAndMoveHourBack(summerTime.date))) { return false } if (localWinterOffset !== winterTime.offset) { return false } if (localWinterOffset === getOffset(getDateAndMoveHourBack(winterTime.date))) { return false } return true })(timeZoneName, date) } return false }; const getExtremeDates = () => { const nowDate = new Date(Date.now()); const startDate = new Date; const endDate = new Date; startDate.setFullYear(nowDate.getFullYear(), 0, 1); endDate.setFullYear(nowDate.getFullYear(), 6, 1); return [startDate, endDate] }; let timeZoneDataCache = []; let timeZoneDataCachePromise; const utils = { getDaylightOffset: getDaylightOffset, getDaylightOffsetInMs: getDaylightOffsetInMs, getTimezoneOffsetChangeInMinutes: getTimezoneOffsetChangeInMinutes, getTimezoneOffsetChangeInMs: (startDate, endDate, updatedStartDate, updatedEndDate) => getTimezoneOffsetChangeInMinutes(startDate, endDate, updatedStartDate, updatedEndDate) * toMs("minute"), calculateTimezoneByValue: calculateTimezoneByValue, getCorrectedDateByDaylightOffsets: (convertedOriginalStartDate, convertedDate, date, timeZone, startDateTimezone) => { const daylightOffsetByCommonTimezone = _getDaylightOffsetByTimezone(convertedOriginalStartDate, convertedDate, timeZone); const daylightOffsetByAppointmentTimezone = _getDaylightOffsetByTimezone(convertedOriginalStartDate, convertedDate, startDateTimezone); const diff = daylightOffsetByCommonTimezone - daylightOffsetByAppointmentTimezone; return new Date(date.getTime() - diff * toMs("hour")) }, isSameAppointmentDates: (startDate, endDate) => { endDate = new Date(endDate.getTime() - 1); return _date2.default.sameDate(startDate, endDate) }, correctRecurrenceExceptionByTimezone: function(exception, exceptionByStartDate, timeZone, startDateTimeZone) { let isBackConversion = arguments.length > 4 && void 0 !== arguments[4] ? arguments[4] : false; let timezoneOffset = (exception.getTimezoneOffset() - exceptionByStartDate.getTimezoneOffset()) / 60; if (startDateTimeZone) { timezoneOffset = _getDaylightOffsetByTimezone(exceptionByStartDate, exception, startDateTimeZone) } else if (timeZone) { timezoneOffset = _getDaylightOffsetByTimezone(exceptionByStartDate, exception, timeZone) } return new Date(exception.getTime() + (isBackConversion ? -1 : 1) * timezoneOffset * toMs("hour")) }, getClientTimezoneOffset: getClientTimezoneOffset, getDiffBetweenClientTimezoneOffsets: function() { let firstDate = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : new Date; let secondDate = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : new Date; return getClientTimezoneOffset(firstDate) - getClientTimezoneOffset(secondDate) }, createUTCDateWithLocalOffset: date => { if (!date) { return null } return new Date(Date.UTC(date.getFullYear(), date.getMonth(), date.getDate(), date.getHours(), date.getMinutes(), date.getSeconds())) }, createDateFromUTCWithLocalOffset: date => { const result = (0, _m_date_adapter.default)(date); const timezoneOffsetBeforeInMin = result.getTimezoneOffset(); result.addTime(result.getTimezoneOffset("minute")); result.subtractMinutes(timezoneOffsetBeforeInMin - result.getTimezoneOffset()); return result.source }, createUTCDate: createUTCDate, isTimezoneChangeInDate: isTimezoneChangeInDate, getDateWithoutTimezoneChange: date => { const clonedDate = new Date(date); if (isTimezoneChangeInDate(clonedDate)) { const result = new Date(clonedDate); return new Date(result.setDate(result.getDate() + 1)) } return clonedDate }, hasDSTInLocalTimeZone: hasDSTInLocalTimeZone, isEqualLocalTimeZone: function(timeZoneName) { let date = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : new Date; if (Intl) { const localTimeZoneName = Intl.DateTimeFormat().resolvedOptions().timeZone; if (localTimeZoneName === timeZoneName) { return true } } return isEqualLocalTimeZoneByDeclaration(timeZoneName, date) }, isEqualLocalTimeZoneByDeclaration: isEqualLocalTimeZoneByDeclaration, setOffsetsToDate: (targetDate, offsetsArray) => { const newDateMs = offsetsArray.reduce(((result, offset) => result + offset), targetDate.getTime()); return new Date(newDateMs) }, addOffsetsWithoutDST: function(date) { for (var _len = arguments.length, offsets = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { offsets[_key - 1] = arguments[_key] } const newDate = _date.dateUtilsTs.addOffsets(date, offsets); const daylightShift = getDaylightOffsetInMs(date, newDate); if (!daylightShift) { return newDate } const correctLocalDate = _date.dateUtilsTs.addOffsets(newDate, [-daylightShift]); const daylightSecondShift = getDaylightOffsetInMs(newDate, correctLocalDate); return !daylightSecondShift ? correctLocalDate : newDate }, getTimeZones: function() { let date = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : new Date; let timeZones = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : _timezone_list.default.value; return timeZones.map((timezoneId => ({ id: timezoneId, title: getTimezoneTitle(timezoneId, date), offset: calculateTimezoneByValue(timezoneId, date) }))) }, getTimeZonesCache: () => timeZoneDataCache, cacheTimeZones: async function() { let date = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : new Date; if (timeZoneDataCachePromise) { return timeZoneDataCachePromise } timeZoneDataCachePromise = _index.macroTaskArray.map(_timezone_list.default.value, (timezoneId => ({ id: timezoneId, title: getTimezoneTitle(timezoneId, date) })), 10); timeZoneDataCache = await timeZoneDataCachePromise; return timeZoneDataCache } }; exports.default = utils }, 25166: /*!****************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/scheduler/options_validator/common/index.js ***! \****************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); var _validation_functions = __webpack_require__( /*! ./validation_functions */ 25377); Object.keys(_validation_functions).forEach((function(key) { if ("default" === key || "__esModule" === key) { return } if (key in exports && exports[key] === _validation_functions[key]) { return } Object.defineProperty(exports, key, { enumerable: true, get: function() { return _validation_functions[key] } }) })); var _validator_rules = __webpack_require__( /*! ./validator_rules */ 71528); Object.keys(_validator_rules).forEach((function(key) { if ("default" === key || "__esModule" === key) { return } if (key in exports && exports[key] === _validator_rules[key]) { return } Object.defineProperty(exports, key, { enumerable: true, get: function() { return _validator_rules[key] } }) })) }, 25377: /*!*******************************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/scheduler/options_validator/common/validation_functions.js ***! \*******************************************************************************************************************/ function(__unused_webpack_module, exports) { Object.defineProperty(exports, "__esModule", { value: true }); exports.lessThan = exports.isInteger = exports.inRange = exports.greaterThan = exports.divisibleBy = void 0; exports.isInteger = value => Number.isInteger(value); exports.greaterThan = function(value, minimalValue) { let strict = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : true; return strict ? value > minimalValue : value >= minimalValue }; exports.lessThan = function(value, maximalValue) { let strict = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : true; return strict ? value < maximalValue : value <= maximalValue }; exports.inRange = (value, _ref) => { let [from, to] = _ref; return value >= from && value <= to }; exports.divisibleBy = (value, divider) => value % divider === 0 }, 71528: /*!**************************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/scheduler/options_validator/common/validator_rules.js ***! \**************************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.mustBeLessThan = exports.mustBeInteger = exports.mustBeInRange = exports.mustBeGreaterThan = exports.mustBeDivisibleBy = void 0; var _index = __webpack_require__( /*! ../core/index */ 44664); var _validation_functions = __webpack_require__( /*! ./validation_functions */ 25377); exports.mustBeInteger = (0, _index.createValidatorRule)("mustBeInteger", (value => (0, _validation_functions.isInteger)(value) || `${value} must be an integer.`)); exports.mustBeGreaterThan = function(minimalValue) { let strict = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : true; return (0, _index.createValidatorRule)("mustBeGreaterThan", (value => (0, _validation_functions.greaterThan)(value, minimalValue, strict) || `${value} must be ${strict?">":">="} than ${minimalValue}.`)) }; exports.mustBeLessThan = function(maximalValue) { let strict = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : true; return (0, _index.createValidatorRule)("mustBeLessThan", (value => (0, _validation_functions.lessThan)(value, maximalValue, strict) || `${value} must be ${strict?"<":"<="} than ${maximalValue}.`)) }; exports.mustBeInRange = range => (0, _index.createValidatorRule)("mustBeInRange", (value => (0, _validation_functions.inRange)(value, range) || `${value} must be in range [${range[0]}, ${range[1]}].`)); exports.mustBeDivisibleBy = divider => (0, _index.createValidatorRule)("mustBeDivisibleBy", (value => (0, _validation_functions.divisibleBy)(value, divider) || `${value} must be divisible by ${divider}.`)) }, 44664: /*!**************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/scheduler/options_validator/core/index.js ***! \**************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); var _exportNames = { OptionsValidator: true, OptionsValidatorErrorHandler: true, Validator: true }; Object.defineProperty(exports, "OptionsValidator", { enumerable: true, get: function() { return _options_validator.OptionsValidator } }); Object.defineProperty(exports, "OptionsValidatorErrorHandler", { enumerable: true, get: function() { return _options_validator_error_handler.OptionsValidatorErrorHandler } }); Object.defineProperty(exports, "Validator", { enumerable: true, get: function() { return _validator.Validator } }); var _options_validator = __webpack_require__( /*! ./options_validator */ 69067); var _options_validator_error_handler = __webpack_require__( /*! ./options_validator_error_handler */ 7993); var _types = __webpack_require__( /*! ./types */ 50397); Object.keys(_types).forEach((function(key) { if ("default" === key || "__esModule" === key) { return } if (Object.prototype.hasOwnProperty.call(_exportNames, key)) { return } if (key in exports && exports[key] === _types[key]) { return } Object.defineProperty(exports, key, { enumerable: true, get: function() { return _types[key] } }) })); var _validator = __webpack_require__( /*! ./validator */ 90290); var _validator_rules = __webpack_require__( /*! ./validator_rules */ 99478); Object.keys(_validator_rules).forEach((function(key) { if ("default" === key || "__esModule" === key) { return } if (Object.prototype.hasOwnProperty.call(_exportNames, key)) { return } if (key in exports && exports[key] === _validator_rules[key]) { return } Object.defineProperty(exports, key, { enumerable: true, get: function() { return _validator_rules[key] } }) })) }, 69067: /*!**************************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/scheduler/options_validator/core/options_validator.js ***! \**************************************************************************************************************/ function(__unused_webpack_module, exports) { Object.defineProperty(exports, "__esModule", { value: true }); exports.OptionsValidator = void 0; exports.OptionsValidator = class { constructor(validators) { this.validators = validators } validate(options) { const errors = Object.entries(this.validators).reduce(((result, _ref) => { let [validatorName, validator] = _ref; const validatorResult = validator.validate(options); if (true !== validatorResult) { result[validatorName] = validatorResult } return result }), {}); return Object.keys(errors).length > 0 ? errors : true } } }, 7993: /*!****************************************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/scheduler/options_validator/core/options_validator_error_handler.js ***! \****************************************************************************************************************************/ function(__unused_webpack_module, exports) { Object.defineProperty(exports, "__esModule", { value: true }); exports.OptionsValidatorErrorHandler = void 0; exports.OptionsValidatorErrorHandler = class { constructor(validatorNameToErrorCodeMap, globalErrorHandler) { this.validatorNameToErrorCodeMap = validatorNameToErrorCodeMap; this.globalErrorHandler = globalErrorHandler } handleValidationResult(optionsValidatorResult) { if (true === optionsValidatorResult) { return } const uniqErrorCodes = Object.keys(optionsValidatorResult).reduce(((set, validatorName) => { const errorCode = this.validatorNameToErrorCodeMap[validatorName]; if (errorCode) { set.add(errorCode) } return set }), new Set); const errorCodeArray = [...uniqErrorCodes]; errorCodeArray.forEach(((errorCode, idx) => { const isLastErrorCode = idx === errorCodeArray.length - 1; if (!isLastErrorCode) { this.globalErrorHandler.logError(errorCode) } else { this.globalErrorHandler.throwError(errorCode) } })) } } }, 50397: /*!**************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/scheduler/options_validator/core/types.js ***! \**************************************************************************************************/ function(__unused_webpack_module, exports) { Object.defineProperty(exports, "__esModule", { value: true }); exports.REDUNDANT_EXPORT = void 0; exports.REDUNDANT_EXPORT = void 0 }, 90290: /*!******************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/scheduler/options_validator/core/validator.js ***! \******************************************************************************************************/ function(__unused_webpack_module, exports) { Object.defineProperty(exports, "__esModule", { value: true }); exports.Validator = void 0; exports.Validator = class { constructor(valueSelector, rules) { this.valueSelector = valueSelector; this.rules = rules } validate(options) { const value = this.valueSelector(options); const errors = this.rules.reduce(((result, rule) => { const validationResult = rule(value); if (true !== validationResult) { result[rule.name] = validationResult } return result }), {}); return Object.keys(errors).length ? errors : true } } }, 99478: /*!************************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/scheduler/options_validator/core/validator_rules.js ***! \************************************************************************************************************/ function(__unused_webpack_module, exports) { Object.defineProperty(exports, "__esModule", { value: true }); exports.createValidatorRule = void 0; exports.createValidatorRule = (name, ruleFunc) => { Object.defineProperty(ruleFunc, "name", { value: name, writable: false }); return ruleFunc } }, 98602: /*!*********************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/scheduler/options_validator/index.js ***! \*********************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "SchedulerOptionsValidator", { enumerable: true, get: function() { return _options_validator.SchedulerOptionsValidator } }); Object.defineProperty(exports, "SchedulerOptionsValidatorErrorsHandler", { enumerable: true, get: function() { return _options_validator_errors_handler.SchedulerOptionsValidatorErrorsHandler } }); var _options_validator = __webpack_require__( /*! ./options_validator */ 36913); var _options_validator_errors_handler = __webpack_require__( /*! ./options_validator_errors_handler */ 26200) }, 36913: /*!*********************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/scheduler/options_validator/options_validator.js ***! \*********************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.SchedulerOptionsValidator = void 0; var _index = __webpack_require__( /*! ./common/index */ 25166); var _index2 = __webpack_require__( /*! ./core/index */ 44664); var _validator_rules = __webpack_require__( /*! ./validator_rules */ 93332); class SchedulerOptionsValidator extends _index2.OptionsValidator { constructor() { super({ startDayHour: new _index2.Validator((_ref => { let { startDayHour: startDayHour } = _ref; return startDayHour }), [_index.mustBeInteger, (0, _index.mustBeInRange)([0, 24])]), endDayHour: new _index2.Validator((_ref2 => { let { endDayHour: endDayHour } = _ref2; return endDayHour }), [_index.mustBeInteger, (0, _index.mustBeInRange)([0, 24])]), offset: new _index2.Validator((_ref3 => { let { offset: offset } = _ref3; return offset }), [_index.mustBeInteger, (0, _index.mustBeInRange)([-1440, 1440]), (0, _index.mustBeDivisibleBy)(5)]), cellDuration: new _index2.Validator((_ref4 => { let { cellDuration: cellDuration } = _ref4; return cellDuration }), [_index.mustBeInteger, (0, _index.mustBeGreaterThan)(0)]), startDayHourAndEndDayHour: new _index2.Validator((options => options), [_validator_rules.endDayHourMustBeGreaterThanStartDayHour]), cellDurationAndVisibleInterval: new _index2.Validator((options => options), [_validator_rules.visibleIntervalMustBeDivisibleByCellDuration, _validator_rules.cellDurationMustBeLessThanVisibleInterval]) }) } } exports.SchedulerOptionsValidator = SchedulerOptionsValidator }, 26200: /*!************************************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/scheduler/options_validator/options_validator_errors_handler.js ***! \************************************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.SchedulerOptionsValidatorErrorsHandler = void 0; var _ui = (e = __webpack_require__( /*! ../../../ui/widget/ui.errors */ 35185), e && e.__esModule ? e : { default: e }); var e; var _index = __webpack_require__( /*! ./core/index */ 44664); const GLOBAL_ERROR_HANDLER = { logError: errorCode => { _ui.default.log(errorCode) }, throwError: errorCode => { throw _ui.default.Error(errorCode) } }; class SchedulerOptionsValidatorErrorsHandler extends _index.OptionsValidatorErrorHandler { constructor() { super({ startDayHour: "E1058", endDayHour: "E1058", startDayHourAndEndDayHour: "E1058", offset: "E1061", cellDuration: "E1062", cellDurationAndVisibleInterval: "E1062" }, GLOBAL_ERROR_HANDLER) } } exports.SchedulerOptionsValidatorErrorsHandler = SchedulerOptionsValidatorErrorsHandler }, 93332: /*!*******************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/scheduler/options_validator/validator_rules.js ***! \*******************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.visibleIntervalMustBeDivisibleByCellDuration = exports.endDayHourMustBeGreaterThanStartDayHour = exports.cellDurationMustBeLessThanVisibleInterval = void 0; var _index = __webpack_require__( /*! ./common/index */ 25166); var _index2 = __webpack_require__( /*! ./core/index */ 44664); exports.endDayHourMustBeGreaterThanStartDayHour = (0, _index2.createValidatorRule)("endDayHourGreaterThanStartDayHour", (_ref => { let { startDayHour: startDayHour, endDayHour: endDayHour } = _ref; return (0, _index.greaterThan)(endDayHour, startDayHour) || `endDayHour: ${endDayHour} must be greater that startDayHour: ${startDayHour}.` })); exports.visibleIntervalMustBeDivisibleByCellDuration = (0, _index2.createValidatorRule)("visibleIntervalMustBeDivisibleByCellDuration", (_ref2 => { let { cellDuration: cellDuration, startDayHour: startDayHour, endDayHour: endDayHour } = _ref2; const visibleInterval = 60 * (endDayHour - startDayHour); return (0, _index.divisibleBy)(visibleInterval, cellDuration) || `endDayHour - startDayHour: ${visibleInterval} (minutes), must be divisible by cellDuration: ${cellDuration} (minutes).` })); exports.cellDurationMustBeLessThanVisibleInterval = (0, _index2.createValidatorRule)("cellDurationMustBeLessThanVisibleInterval", (_ref3 => { let { cellDuration: cellDuration, startDayHour: startDayHour, endDayHour: endDayHour } = _ref3; const visibleInterval = 60 * (endDayHour - startDayHour); return (0, _index.lessThan)(cellDuration, visibleInterval, false) || `endDayHour - startDayHour: ${visibleInterval} (minutes), must be greater or equal the cellDuration: ${cellDuration} (minutes).` })) }, 77143: /*!*************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/scheduler/r1/appointment_popup/config.js ***! \*************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.isPopupFullScreenNeeded = exports.getPopupToolbarItems = exports.getPopupSize = exports.getMaxWidth = exports.defaultAnimation = exports.POPUP_WIDTH = void 0; var _message = _interopRequireDefault(__webpack_require__( /*! ../../../../common/core/localization/message */ 4671)); var _devices = _interopRequireDefault(__webpack_require__( /*! ../../../../core/devices */ 65951)); var _size = __webpack_require__( /*! ../../../../core/utils/size */ 57653); var _window = __webpack_require__( /*! ../../../../core/utils/window */ 3104); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } function _extends() { return _extends = Object.assign ? Object.assign.bind() : function(n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) { ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]) } } return n }, _extends.apply(null, arguments) } const POPUP_WIDTH = exports.POPUP_WIDTH = { DEFAULT: 485, RECURRENCE: 970, FULLSCREEN: 1e3, MOBILE: { DEFAULT: 350, FULLSCREEN: 500 } }; exports.defaultAnimation = { show: { type: "pop", duration: 300, from: { scale: .55 } }, hide: { type: "pop", duration: 300, to: { opacity: 0, scale: .55 }, from: { opacity: 1, scale: 1 } } }; const isMobile = () => "desktop" !== _devices.default.current().deviceType; const TOOLBAR_LOCATION_AFTER = "after", TOOLBAR_LOCATION_BEFORE = "before"; exports.getPopupToolbarItems = (allowUpdating, doneClick) => { const result = []; const buttonsConfig = { doneButton: { shortcut: "done", options: { text: _message.default.format("Done") }, location: TOOLBAR_LOCATION_AFTER }, cancelButton: { shortcut: "cancel", location: "ios" === _devices.default.current().platform ? TOOLBAR_LOCATION_BEFORE : TOOLBAR_LOCATION_AFTER } }; if (allowUpdating) { result.push(_extends({}, buttonsConfig.doneButton, { onClick: doneClick })) } result.push(buttonsConfig.cancelButton); return result }; const isPopupFullScreenNeeded = () => { const window = (0, _window.getWindow)(); const width = window && (0, _size.getWidth)(window); if (width) { return isMobile() ? width < POPUP_WIDTH.MOBILE.FULLSCREEN : width < POPUP_WIDTH.FULLSCREEN } return false }; exports.isPopupFullScreenNeeded = isPopupFullScreenNeeded; const getMaxWidth = isRecurrence => { if (isMobile()) { return POPUP_WIDTH.MOBILE.DEFAULT } return isRecurrence ? POPUP_WIDTH.RECURRENCE : POPUP_WIDTH.DEFAULT }; exports.getMaxWidth = getMaxWidth; exports.getPopupSize = isRecurrence => ({ fullScreen: isPopupFullScreenNeeded(), maxWidth: getMaxWidth(isRecurrence) }) }, 8181: /*!************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/scheduler/r1/appointment_popup/index.js ***! \************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "POPUP_WIDTH", { enumerable: true, get: function() { return _config.POPUP_WIDTH } }); Object.defineProperty(exports, "defaultAnimation", { enumerable: true, get: function() { return _config.defaultAnimation } }); Object.defineProperty(exports, "getMaxWidth", { enumerable: true, get: function() { return _config.getMaxWidth } }); Object.defineProperty(exports, "getPopupSize", { enumerable: true, get: function() { return _config.getPopupSize } }); Object.defineProperty(exports, "getPopupToolbarItems", { enumerable: true, get: function() { return _config.getPopupToolbarItems } }); Object.defineProperty(exports, "isPopupFullScreenNeeded", { enumerable: true, get: function() { return _config.isPopupFullScreenNeeded } }); var _config = __webpack_require__( /*! ./config */ 77143) }, 83061: /*!***********************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/scheduler/r1/components/base/all_day_panel_cell.js ***! \***********************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.AllDayPanelCell = void 0; var _inferno = __webpack_require__( /*! inferno */ 76231); var _index = __webpack_require__( /*! ../../../../core/r1/runtime/inferno/index */ 6257); var _const = __webpack_require__( /*! ../const */ 52728); var _date_table_cell_base = __webpack_require__( /*! ./date_table_cell_base */ 48661); class AllDayPanelCell extends _index.BaseInfernoComponent { render() { const { className: className, viewContext: viewContext, dataCellTemplate: dataCellTemplate, endDate: endDate, groupIndex: groupIndex, groups: groups, index: index, isFirstGroupCell: isFirstGroupCell, isFocused: isFocused, isLastGroupCell: isLastGroupCell, isSelected: isSelected, startDate: startDate } = this.props; return (0, _inferno.createComponentVNode)(2, _date_table_cell_base.DateTableCellBase, { className: `${_const.ALL_DAY_PANEL_CELL_CLASS} ${className}`, viewContext: viewContext, startDate: startDate, endDate: endDate, groups: groups, groupIndex: groupIndex, allDay: true, isFirstGroupCell: isFirstGroupCell, isLastGroupCell: isLastGroupCell, index: index, dataCellTemplate: dataCellTemplate, isSelected: isSelected, isFocused: isFocused }) } } exports.AllDayPanelCell = AllDayPanelCell; AllDayPanelCell.defaultProps = _date_table_cell_base.DateTableCallBaseDefaultProps }, 49673: /*!************************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/scheduler/r1/components/base/all_day_panel_table.js ***! \************************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.AllDayTable = void 0; var _inferno = __webpack_require__( /*! inferno */ 76231); var _index = __webpack_require__( /*! ../../../../core/r1/runtime/inferno/index */ 6257); var _const = __webpack_require__( /*! ../const */ 52728); var _all_day_panel_table_body = __webpack_require__( /*! ./all_day_panel_table_body */ 99552); var _layout_props = __webpack_require__( /*! ./layout_props */ 76322); var _table = __webpack_require__( /*! ./table */ 46189); class AllDayTable extends _index.InfernoWrapperComponent { constructor() { super(...arguments); this.allDayPanelData = null } createEffects() { return [(0, _index.createReRenderEffect)()] } getAllDayPanelData() { if (null !== this.allDayPanelData) { return this.allDayPanelData } this.allDayPanelData = this.props.viewData.groupedData[0].allDayPanel; return this.allDayPanelData } componentWillUpdate(nextProps) { super.componentWillUpdate(); if (this.props.viewData !== nextProps.viewData) { this.allDayPanelData = null } } render() { const { viewData: viewData, viewContext: viewContext, width: width, tableRef: tableRef, dataCellTemplate: dataCellTemplate } = this.props; const allDayPanelData = this.getAllDayPanelData(); return (0, _inferno.createComponentVNode)(2, _table.Table, { className: "dx-scheduler-all-day-table", height: allDayPanelData ? void 0 : _const.DefaultSizes.allDayPanelHeight, width: width, tableRef: tableRef, children: (0, _inferno.createComponentVNode)(2, _all_day_panel_table_body.AllDayPanelTableBody, { viewData: allDayPanelData ?? _all_day_panel_table_body.AllDayPanelTableBodyDefaultProps.viewData, viewContext: viewContext, leftVirtualCellWidth: viewData.leftVirtualCellWidth ?? _all_day_panel_table_body.AllDayPanelTableBodyDefaultProps.leftVirtualCellWidth, rightVirtualCellWidth: viewData.rightVirtualCellWidth ?? _all_day_panel_table_body.AllDayPanelTableBodyDefaultProps.rightVirtualCellWidth, leftVirtualCellCount: viewData.leftVirtualCellCount, rightVirtualCellCount: viewData.rightVirtualCellCount, dataCellTemplate: dataCellTemplate }) }) } } exports.AllDayTable = AllDayTable; AllDayTable.defaultProps = _layout_props.LayoutDefaultProps }, 99552: /*!*****************************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/scheduler/r1/components/base/all_day_panel_table_body.js ***! \*****************************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.AllDayPanelTableBodyDefaultProps = exports.AllDayPanelTableBody = void 0; var _inferno = __webpack_require__( /*! inferno */ 76231); var _index = __webpack_require__( /*! ../../../../core/r1/runtime/inferno/index */ 6257); var _render_utils = __webpack_require__( /*! ../../../../core/r1/utils/render_utils */ 71312); var _all_day_panel_cell = __webpack_require__( /*! ./all_day_panel_cell */ 83061); var _row = __webpack_require__( /*! ./row */ 21541); const AllDayPanelTableBodyDefaultProps = exports.AllDayPanelTableBodyDefaultProps = { viewData: [], isVerticalGroupOrientation: false, className: "", leftVirtualCellWidth: 0, rightVirtualCellWidth: 0 }; class AllDayPanelTableBody extends _index.BaseInfernoComponent { render() { const { className: className, viewData: viewData, viewContext: viewContext, leftVirtualCellWidth: leftVirtualCellWidth, rightVirtualCellWidth: rightVirtualCellWidth, leftVirtualCellCount: leftVirtualCellCount, rightVirtualCellCount: rightVirtualCellCount, isVerticalGroupOrientation: isVerticalGroupOrientation, dataCellTemplate: dataCellTemplate } = this.props; const classes = (0, _render_utils.combineClasses)({ "dx-scheduler-all-day-table-row": true, [className ?? ""]: !!className }); return (0, _inferno.createComponentVNode)(2, _row.Row, { leftVirtualCellWidth: leftVirtualCellWidth, rightVirtualCellWidth: rightVirtualCellWidth, leftVirtualCellCount: leftVirtualCellCount, rightVirtualCellCount: rightVirtualCellCount, className: classes, children: viewData.map((_ref => { let { endDate: endDate, groupIndex: cellGroupIndex, groups: groups, index: cellIndex, isFirstGroupCell: isFirstGroupCell, isFocused: isFocused, isLastGroupCell: isLastGroupCell, isSelected: isSelected, key: key, startDate: startDate } = _ref; return (0, _inferno.createComponentVNode)(2, _all_day_panel_cell.AllDayPanelCell, { viewContext: viewContext, isFirstGroupCell: !isVerticalGroupOrientation && isFirstGroupCell, isLastGroupCell: !isVerticalGroupOrientation && isLastGroupCell, startDate: startDate, endDate: endDate, groups: groups, groupIndex: cellGroupIndex, index: cellIndex, dataCellTemplate: dataCellTemplate, isSelected: isSelected ?? false, isFocused: isFocused ?? false }, key) })) }) } } exports.AllDayPanelTableBody = AllDayPanelTableBody; AllDayPanelTableBody.defaultProps = AllDayPanelTableBodyDefaultProps }, 4011: /*!************************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/scheduler/r1/components/base/all_day_panel_title.js ***! \************************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.AllDayPanelTitle = void 0; var _inferno = __webpack_require__( /*! inferno */ 76231); var _message = (e = __webpack_require__( /*! ../../../../../common/core/localization/message */ 4671), e && e.__esModule ? e : { default: e }); var e; var _index = __webpack_require__( /*! ../../../../core/r1/runtime/inferno/index */ 6257); class AllDayPanelTitle extends _index.InfernoWrapperComponent { createEffects() { return [(0, _index.createReRenderEffect)()] } render() { const text = _message.default.format("dxScheduler-allDay"); return (0, _inferno.createVNode)(1, "div", "dx-scheduler-all-day-title", text, 0) } } exports.AllDayPanelTitle = AllDayPanelTitle; AllDayPanelTitle.defaultProps = {} }, 85409: /*!*********************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/scheduler/r1/components/base/cell.js ***! \*********************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.CellBaseDefaultProps = exports.CellBase = void 0; var _inferno = __webpack_require__( /*! inferno */ 76231); var _index = __webpack_require__( /*! ../../../../core/r1/runtime/inferno/index */ 6257); var _index2 = __webpack_require__( /*! ../../utils/index */ 34396); const CellBaseDefaultProps = exports.CellBaseDefaultProps = { className: "", isFirstGroupCell: false, isLastGroupCell: false, startDate: new Date, endDate: new Date, allDay: false, text: "", index: 0, contentTemplateProps: { data: {}, index: 0 } }; class CellBase extends _index.BaseInfernoComponent { render() { const { className: className, isFirstGroupCell: isFirstGroupCell, isLastGroupCell: isLastGroupCell, children: children, ariaLabel: ariaLabel } = this.props; const classes = _index2.renderUtils.getGroupCellClasses(isFirstGroupCell, isLastGroupCell, className); return (0, _inferno.createVNode)(1, "td", classes, children, 0, { "aria-label": ariaLabel }) } } exports.CellBase = CellBase; CellBase.defaultProps = CellBaseDefaultProps }, 35689: /*!****************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/scheduler/r1/components/base/date_header.js ***! \****************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.DateHeaderDefaultProps = exports.DateHeader = void 0; var _inferno = __webpack_require__( /*! inferno */ 76231); var _index = __webpack_require__( /*! ../../../../core/r1/runtime/inferno/index */ 6257); var _index2 = __webpack_require__( /*! ../../utils/index */ 34396); var _date_header_cell = __webpack_require__( /*! ./date_header_cell */ 60932); var _row = __webpack_require__( /*! ./row */ 21541); const { isMaterialBased: isMaterialBased } = _index2.themeUtils.getThemeType(); const DateHeaderDefaultProps = exports.DateHeaderDefaultProps = { groupOrientation: "horizontal", groupByDate: false, groups: [] }; class DateHeader extends _index.BaseInfernoComponent { render() { const { viewContext: viewContext, dateCellTemplate: dateCellTemplate, dateHeaderData: { dataMap: dataMap, leftVirtualCellCount: leftVirtualCellCount, leftVirtualCellWidth: leftVirtualCellWidth, rightVirtualCellCount: rightVirtualCellCount, rightVirtualCellWidth: rightVirtualCellWidth }, groupByDate: groupByDate, groupOrientation: groupOrientation, groups: groups } = this.props; const isHorizontalGrouping = (0, _index2.isHorizontalGroupingApplied)(groups, groupOrientation) && !groupByDate; return (0, _inferno.createFragment)(dataMap.map(((dateHeaderRow, rowIndex) => (0, _inferno.createComponentVNode)(2, _row.Row, { className: "dx-scheduler-header-row", leftVirtualCellWidth: leftVirtualCellWidth, leftVirtualCellCount: leftVirtualCellCount, rightVirtualCellWidth: rightVirtualCellWidth, rightVirtualCellCount: rightVirtualCellCount, isHeaderRow: true, children: dateHeaderRow.map((_ref => { let { colSpan: colSpan, endDate: endDate, groupIndex: groupIndex, groups: cellGroups, index: index, isFirstGroupCell: isFirstGroupCell, isLastGroupCell: isLastGroupCell, key: key, startDate: startDate, text: text, today: today } = _ref; return (0, _inferno.createComponentVNode)(2, _date_header_cell.DateHeaderCell, { viewContext: viewContext, startDate: startDate, endDate: endDate, groups: isHorizontalGrouping ? cellGroups : void 0, groupIndex: isHorizontalGrouping ? groupIndex : void 0, today: today ?? false, isWeekDayCell: false, isTimeCellTemplate: false, index: index, text: text, isFirstGroupCell: isFirstGroupCell, isLastGroupCell: isLastGroupCell, dateCellTemplate: dateCellTemplate, colSpan: colSpan, splitText: isMaterialBased }, key) })) }, rowIndex.toString()))), 0) } } exports.DateHeader = DateHeader; DateHeader.defaultProps = DateHeaderDefaultProps }, 60932: /*!*********************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/scheduler/r1/components/base/date_header_cell.js ***! \*********************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.DateHeaderCellDefaultProps = exports.DateHeaderCell = void 0; var _inferno = __webpack_require__( /*! inferno */ 76231); var _index = __webpack_require__( /*! ../../../../core/r1/runtime/inferno/index */ 6257); var _index2 = __webpack_require__( /*! ../../../../scheduler/r1/components/templates/index */ 17855); var _render_utils = __webpack_require__( /*! ../../../../core/r1/utils/render_utils */ 71312); var _index3 = __webpack_require__( /*! ../../utils/index */ 34396); var _cell = __webpack_require__( /*! ./cell */ 85409); var _date_header_text = __webpack_require__( /*! ./date_header_text */ 63491); function _extends() { return _extends = Object.assign ? Object.assign.bind() : function(n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) { ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]) } } return n }, _extends.apply(null, arguments) } const DateHeaderCellDefaultProps = exports.DateHeaderCellDefaultProps = _extends({}, _cell.CellBaseDefaultProps, { today: false, colSpan: 1, isWeekDayCell: false, splitText: false, isTimeCellTemplate: false }); class DateHeaderCell extends _index.BaseInfernoComponent { render() { const { viewContext: { view: { type: viewType }, crossScrollingEnabled: crossScrollingEnabled }, colSpan: colSpan, dateCellTemplate: dateCellTemplate, groupIndex: groupIndex, groups: groups, index: index, isTimeCellTemplate: isTimeCellTemplate, splitText: splitText, startDate: startDate, text: text, timeCellTemplate: timeCellTemplate, className: className, isFirstGroupCell: isFirstGroupCell, isLastGroupCell: isLastGroupCell, isWeekDayCell: isWeekDayCell, today: today } = this.props; const cellSizeHorizontalClass = _index3.renderUtils.getCellSizeHorizontalClass(viewType, crossScrollingEnabled); const cellClasses = (0, _render_utils.combineClasses)({ "dx-scheduler-header-panel-cell": true, [cellSizeHorizontalClass]: true, "dx-scheduler-header-panel-current-time-cell": today, "dx-scheduler-header-panel-week-cell": isWeekDayCell, [className ?? ""]: !!className }); const classes = _index3.renderUtils.getGroupCellClasses(isFirstGroupCell, isLastGroupCell, cellClasses); const useTemplate = !isTimeCellTemplate && !!dateCellTemplate || isTimeCellTemplate && !!timeCellTemplate; const children = useTemplate ? (0, _inferno.createFragment)([isTimeCellTemplate && (0, _inferno.createComponentVNode)(2, _index2.PublicTemplate, { template: timeCellTemplate, templateProps: { data: { date: startDate, text: text, groups: groups, groupIndex: groupIndex }, index: index } }), !isTimeCellTemplate && (0, _inferno.createComponentVNode)(2, _index2.PublicTemplate, { template: dateCellTemplate, templateProps: { data: { date: startDate, text: text, groups: groups, groupIndex: groupIndex }, index: index } })], 0) : (0, _inferno.createComponentVNode)(2, _date_header_text.DateHeaderText, { splitText: splitText, text: text }); return (0, _inferno.createVNode)(1, "th", classes, children, 0, { colspan: colSpan, title: text }) } } exports.DateHeaderCell = DateHeaderCell; DateHeaderCell.defaultProps = DateHeaderCellDefaultProps }, 63491: /*!*********************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/scheduler/r1/components/base/date_header_text.js ***! \*********************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.DateHeaderText = void 0; var _inferno = __webpack_require__( /*! inferno */ 76231); var _index = __webpack_require__( /*! ../../../../core/r1/runtime/inferno/index */ 6257); class DateHeaderText extends _index.BaseInfernoComponent { constructor() { super(...arguments); this._textCache = null } getTextParts() { if (null !== this._textCache) { return this._textCache } const { text: text } = this.props; this._textCache = text ? text.split(" ") : [""]; return this._textCache } componentWillUpdate(nextProps) { if (this.props.text !== nextProps.text) { this._textCache = null } } render() { const { splitText: splitText, text: text } = this.props; const textParts = this.getTextParts(); return (0, _inferno.createFragment)(splitText ? textParts.map((part => (0, _inferno.createVNode)(1, "div", "dx-scheduler-header-panel-cell-date", (0, _inferno.createVNode)(1, "span", null, part, 0), 2))) : text, 0) } } exports.DateHeaderText = DateHeaderText; DateHeaderText.defaultProps = { text: "", splitText: false } }, 74282: /*!***************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/scheduler/r1/components/base/date_table.js ***! \***************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.DateTableDefaultProps = exports.DateTable = void 0; var _inferno = __webpack_require__( /*! inferno */ 76231); var _index = __webpack_require__( /*! ../../../../core/r1/runtime/inferno/index */ 6257); var _date_table_body = __webpack_require__( /*! ./date_table_body */ 28201); var _date_table_cell_base = __webpack_require__( /*! ./date_table_cell_base */ 48661); var _layout_props = __webpack_require__( /*! ./layout_props */ 76322); var _table = __webpack_require__( /*! ./table */ 46189); const _excluded = ["viewData", "viewContext", "tableRef", "addDateTableClass", "width", "cellTemplate", "dataCellTemplate", "groupOrientation", "addVerticalSizesClassToRows"]; function _extends() { return _extends = Object.assign ? Object.assign.bind() : function(n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) { ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]) } } return n }, _extends.apply(null, arguments) } const DateTableDefaultProps = exports.DateTableDefaultProps = _extends({}, _layout_props.LayoutDefaultProps, { cellTemplate: _date_table_cell_base.DateTableCellBase }); class DateTable extends _index.InfernoWrapperComponent { createEffects() { return [(0, _index.createReRenderEffect)()] } render() { const _this$props = this.props, { viewData: viewData, viewContext: viewContext, tableRef: tableRef, addDateTableClass: addDateTableClass, width: width, cellTemplate: cellTemplate, dataCellTemplate: dataCellTemplate, groupOrientation: groupOrientation, addVerticalSizesClassToRows: addVerticalSizesClassToRows } = _this$props, restProps = function(r, e) { if (null == r) { return {} } var t = {}; for (var n in r) { if ({}.hasOwnProperty.call(r, n)) { if (e.includes(n)) { continue } t[n] = r[n] } } return t }(_this$props, _excluded); const classes = addDateTableClass ? "dx-scheduler-date-table" : void 0; const topVirtualRowHeight = viewData.topVirtualRowHeight ?? 0; const bottomVirtualRowHeight = viewData.bottomVirtualRowHeight ?? 0; const leftVirtualCellWidth = viewData.leftVirtualCellWidth ?? 0; const rightVirtualCellWidth = viewData.rightVirtualCellWidth ?? 0; const virtualCellsCount = viewData.groupedData[0].dateTable[0].cells.length; return (0, _inferno.normalizeProps)((0, _inferno.createComponentVNode)(2, _table.Table, _extends({}, restProps, { tableRef: tableRef, topVirtualRowHeight: topVirtualRowHeight, bottomVirtualRowHeight: bottomVirtualRowHeight, leftVirtualCellWidth: leftVirtualCellWidth, rightVirtualCellWidth: rightVirtualCellWidth, leftVirtualCellCount: viewData.leftVirtualCellCount, rightVirtualCellCount: viewData.rightVirtualCellCount, virtualCellsCount: virtualCellsCount, className: classes, width: width, children: (0, _inferno.createComponentVNode)(2, _date_table_body.DateTableBody, { viewData: viewData, viewContext: viewContext, cellTemplate: cellTemplate, dataCellTemplate: dataCellTemplate, leftVirtualCellWidth: leftVirtualCellWidth, rightVirtualCellWidth: rightVirtualCellWidth, groupOrientation: groupOrientation, addVerticalSizesClassToRows: addVerticalSizesClassToRows, topVirtualRowHeight: _date_table_body.DateTableBodyDefaultProps.topVirtualRowHeight, bottomVirtualRowHeight: _date_table_body.DateTableBodyDefaultProps.bottomVirtualRowHeight, addDateTableClass: _date_table_body.DateTableBodyDefaultProps.addDateTableClass }) }))) } } exports.DateTable = DateTable; DateTable.defaultProps = DateTableDefaultProps }, 28201: /*!********************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/scheduler/r1/components/base/date_table_body.js ***! \********************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.DateTableBodyDefaultProps = exports.DateTableBody = void 0; var _inferno = __webpack_require__( /*! inferno */ 76231); var _index = __webpack_require__( /*! ../../../../core/r1/runtime/inferno/index */ 6257); var _index2 = __webpack_require__( /*! ../../../../scheduler/r1/components/templates/index */ 17855); var _render_utils = __webpack_require__( /*! ../../../../core/r1/utils/render_utils */ 71312); var _const = __webpack_require__( /*! ../const */ 52728); var _all_day_panel_table_body = __webpack_require__( /*! ./all_day_panel_table_body */ 99552); var _date_table_cell_base = __webpack_require__( /*! ./date_table_cell_base */ 48661); var _layout_props = __webpack_require__( /*! ./layout_props */ 76322); var _row = __webpack_require__( /*! ./row */ 21541); function _extends() { return _extends = Object.assign ? Object.assign.bind() : function(n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) { ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]) } } return n }, _extends.apply(null, arguments) } const DateTableBodyDefaultProps = exports.DateTableBodyDefaultProps = _extends({}, _layout_props.LayoutDefaultProps, { cellTemplate: _date_table_cell_base.DateTableCellBase }); class DateTableBody extends _index.BaseInfernoComponent { render() { const { viewData: viewData, viewContext: viewContext, addVerticalSizesClassToRows: addVerticalSizesClassToRows, cellTemplate: cellTemplate, dataCellTemplate: dataCellTemplate } = this.props; const rowClasses = (0, _render_utils.combineClasses)({ [_const.DATE_TABLE_ROW_CLASS]: true, "dx-scheduler-cell-sizes-vertical": addVerticalSizesClassToRows }); return (0, _inferno.createFragment)(viewData.groupedData.map((_ref => { let { allDayPanel: allDayPanel, dateTable: dateTable, isGroupedAllDayPanel: isGroupedAllDayPanel, key: fragmentKey } = _ref; return (0, _inferno.createFragment)([isGroupedAllDayPanel && (0, _inferno.createComponentVNode)(2, _all_day_panel_table_body.AllDayPanelTableBody, { viewData: allDayPanel ?? _all_day_panel_table_body.AllDayPanelTableBodyDefaultProps.viewData, viewContext: viewContext, dataCellTemplate: dataCellTemplate, isVerticalGroupOrientation: true, leftVirtualCellWidth: viewData.leftVirtualCellWidth ?? _all_day_panel_table_body.AllDayPanelTableBodyDefaultProps.leftVirtualCellWidth, rightVirtualCellWidth: viewData.rightVirtualCellWidth ?? _all_day_panel_table_body.AllDayPanelTableBodyDefaultProps.rightVirtualCellWidth, leftVirtualCellCount: viewData.leftVirtualCellCount, rightVirtualCellCount: viewData.rightVirtualCellCount }), dateTable.map((_ref2 => { let { cells: cells, key: rowKey } = _ref2; return (0, _inferno.createComponentVNode)(2, _row.Row, { className: rowClasses, leftVirtualCellWidth: viewData.leftVirtualCellWidth ?? _row.RowDefaultProps.leftVirtualCellWidth, rightVirtualCellWidth: viewData.rightVirtualCellWidth ?? _row.RowDefaultProps.rightVirtualCellWidth, leftVirtualCellCount: viewData.leftVirtualCellCount, rightVirtualCellCount: viewData.rightVirtualCellCount, children: cells.map((_ref3 => { let { key: cellKey, endDate: endDate, firstDayOfMonth: firstDayOfMonth, groupIndex: cellGroupIndex, groups: groups, index: cellIndex, isFirstGroupCell: isFirstGroupCell, isFocused: isFocused, isLastGroupCell: isLastGroupCell, isSelected: isSelected, otherMonth: otherMonth, startDate: startDate, text: text, today: today } = _ref3; return (0, _inferno.createComponentVNode)(2, _index2.PublicTemplate, { template: cellTemplate, templateProps: { key: cellKey, viewContext: viewContext, isFirstGroupCell: isFirstGroupCell, isLastGroupCell: isLastGroupCell, startDate: startDate, endDate: endDate, groups: groups, groupIndex: cellGroupIndex, index: cellIndex, dataCellTemplate: dataCellTemplate, text: text, today: today, otherMonth: otherMonth, firstDayOfMonth: firstDayOfMonth, isSelected: isSelected, isFocused: isFocused } }) })) }, rowKey) }))], 0, fragmentKey) })), 0) } } exports.DateTableBody = DateTableBody; DateTableBody.defaultProps = DateTableBodyDefaultProps }, 48661: /*!*************************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/scheduler/r1/components/base/date_table_cell_base.js ***! \*************************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.DateTableCellBase = exports.DateTableCallBaseDefaultProps = void 0; var _inferno = __webpack_require__( /*! inferno */ 76231); var _index = __webpack_require__( /*! ../../../../core/r1/runtime/inferno/index */ 6257); var _index2 = __webpack_require__( /*! ../../../../scheduler/r1/components/templates/index */ 17855); var _render_utils = __webpack_require__( /*! ../../../../core/r1/utils/render_utils */ 71312); var _index3 = __webpack_require__( /*! ../../utils/index */ 34396); var _const = __webpack_require__( /*! ../const */ 52728); var _cell = __webpack_require__( /*! ./cell */ 85409); function _extends() { return _extends = Object.assign ? Object.assign.bind() : function(n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) { ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]) } } return n }, _extends.apply(null, arguments) } const DateTableCallBaseDefaultProps = exports.DateTableCallBaseDefaultProps = _extends({}, _cell.CellBaseDefaultProps, { otherMonth: false, today: false, firstDayOfMonth: false, isSelected: false, isFocused: false }); class DateTableCellBase extends _index.BaseInfernoComponent { constructor() { super(...arguments); this.dataCellTemplateProps = null } getDataCellTemplateProps() { if (null !== this.dataCellTemplateProps) { return this.dataCellTemplateProps } const { allDay: allDay, contentTemplateProps: contentTemplateProps, endDate: endDate, groupIndex: groupIndex, groups: groups, index: index, startDate: startDate } = this.props; this.dataCellTemplateProps = { data: _extends({ startDate: startDate, endDate: endDate, groups: groups, groupIndex: groups ? groupIndex : void 0, text: "", allDay: !!allDay || void 0 }, null === contentTemplateProps || void 0 === contentTemplateProps ? void 0 : contentTemplateProps.data), index: index }; return this.dataCellTemplateProps } componentWillUpdate(nextProps) { if (this.props.allDay !== nextProps.allDay || this.props.contentTemplateProps !== nextProps.contentTemplateProps || this.props.endDate !== nextProps.endDate || this.props.groupIndex !== nextProps.groupIndex || this.props.groups !== nextProps.groups || this.props.index !== nextProps.index || this.props.startDate !== nextProps.startDate) { this.dataCellTemplateProps = null } } render() { const { viewContext: viewContext, allDay: allDay, className: className, isFocused: isFocused, isSelected: isSelected, isFirstGroupCell: isFirstGroupCell, isLastGroupCell: isLastGroupCell, dataCellTemplate: dataCellTemplate, children: children } = this.props; const { view: { type: viewType }, crossScrollingEnabled: crossScrollingEnabled } = viewContext; const cellSizeHorizontalClass = _index3.renderUtils.getCellSizeHorizontalClass(viewType, crossScrollingEnabled); const cellSizeVerticalClass = _index3.renderUtils.getCellSizeVerticalClass(!!allDay); const classes = (0, _render_utils.combineClasses)({ [cellSizeHorizontalClass]: true, [cellSizeVerticalClass]: true, [_const.DATE_TABLE_CELL_CLASS]: !allDay, "dx-state-focused": isSelected, "dx-scheduler-focused-cell": isFocused, [className ?? ""]: true }); const ariaLabel = isSelected ? "Add appointment" : void 0; const dataCellTemplateProps = this.getDataCellTemplateProps(); return (0, _inferno.createComponentVNode)(2, _cell.CellBase, { className: classes, viewContext: viewContext, isFirstGroupCell: isFirstGroupCell, isLastGroupCell: isLastGroupCell, ariaLabel: ariaLabel, startDate: _cell.CellBaseDefaultProps.startDate, endDate: _cell.CellBaseDefaultProps.endDate, index: _cell.CellBaseDefaultProps.index, children: (0, _inferno.createFragment)(dataCellTemplate ? (0, _inferno.createComponentVNode)(2, _index2.PublicTemplate, { template: dataCellTemplate, templateProps: { index: dataCellTemplateProps.index, data: dataCellTemplateProps.data } }) : children, 0) }) } } exports.DateTableCellBase = DateTableCellBase; DateTableCellBase.defaultProps = DateTableCallBaseDefaultProps }, 31055: /*!****************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/scheduler/r1/components/base/group_panel.js ***! \****************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.GroupPanelDefaultProps = exports.GroupPanel = void 0; var _inferno = __webpack_require__( /*! inferno */ 76231); var _index = __webpack_require__( /*! ../../../../core/r1/runtime/inferno/index */ 6257); var _constants = __webpack_require__( /*! ../../../constants */ 25307); var _index2 = __webpack_require__( /*! ../../utils/index */ 34396); var _group_panel_horizontal = __webpack_require__( /*! ./group_panel_horizontal */ 4130); var _group_panel_props = __webpack_require__( /*! ./group_panel_props */ 3234); var _group_panel_vertical = __webpack_require__( /*! ./group_panel_vertical */ 75816); function _extends() { return _extends = Object.assign ? Object.assign.bind() : function(n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) { ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]) } } return n }, _extends.apply(null, arguments) } const GroupPanelDefaultProps = exports.GroupPanelDefaultProps = _extends({}, _group_panel_props.GroupPanelBaseDefaultProps, { groups: [], groupOrientation: _constants.VERTICAL_GROUP_ORIENTATION }); class GroupPanel extends _index.InfernoWrapperComponent { createEffects() { return [(0, _index.createReRenderEffect)()] } render() { const { className: className, viewContext: viewContext, elementRef: elementRef, groupPanelData: groupPanelData, height: height, resourceCellTemplate: resourceCellTemplate, groupOrientation: groupOrientation, groups: groups, styles: styles } = this.props; const isVerticalLayout = (0, _index2.isVerticalGroupingApplied)(groups, groupOrientation); const Layout = isVerticalLayout ? _group_panel_vertical.GroupPanelVertical : _group_panel_horizontal.GroupPanelHorizontal; return (0, _inferno.createComponentVNode)(2, Layout, { viewContext: viewContext, height: height, resourceCellTemplate: resourceCellTemplate, className: className, groupPanelData: groupPanelData, elementRef: elementRef, styles: styles, groups: GroupPanelDefaultProps.groups, groupOrientation: GroupPanelDefaultProps.groupOrientation, groupByDate: GroupPanelDefaultProps.groupByDate }) } } exports.GroupPanel = GroupPanel; GroupPanel.defaultProps = GroupPanelDefaultProps }, 4130: /*!***************************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/scheduler/r1/components/base/group_panel_horizontal.js ***! \***************************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.GroupPanelHorizontal = void 0; var _inferno = __webpack_require__( /*! inferno */ 76231); var _index = __webpack_require__( /*! ../../../../core/r1/runtime/inferno/index */ 6257); var _group_panel_horizontal_row = __webpack_require__( /*! ./group_panel_horizontal_row */ 6305); var _group_panel_props = __webpack_require__( /*! ./group_panel_props */ 3234); function _extends() { return _extends = Object.assign ? Object.assign.bind() : function(n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) { ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]) } } return n }, _extends.apply(null, arguments) } class GroupPanelHorizontal extends _index.BaseInfernoComponent { constructor() { super(...arguments); this._groupPanelItems = null } getGroupPanelItems() { if (null !== this._groupPanelItems) { return this._groupPanelItems } const { groupPanelData: { baseColSpan: baseColSpan, groupPanelItems: groupPanelItems } } = this.props; const colSpans = groupPanelItems.reduceRight(((currentColSpans, groupsRow, idx) => { const nextColSpans = currentColSpans; const currentLevelGroupCount = groupsRow.length; const previousColSpan = idx === groupPanelItems.length - 1 ? baseColSpan : currentColSpans[idx + 1]; const previousLevelGroupCount = idx === groupPanelItems.length - 1 ? currentLevelGroupCount : groupPanelItems[idx + 1].length; const groupCountDiff = previousLevelGroupCount / currentLevelGroupCount; nextColSpans[idx] = groupCountDiff * previousColSpan; return nextColSpans }), [...new Array(groupPanelItems.length)]); this._groupPanelItems = groupPanelItems.map(((groupsRenderRow, index) => { const colSpan = colSpans[index]; return groupsRenderRow.map((groupItem => _extends({}, groupItem, { colSpan: colSpan }))) })); return this._groupPanelItems } componentWillUpdate(nextProps) { if (this.props.groupPanelData !== nextProps.groupPanelData) { this._groupPanelItems = null } } render() { const { resourceCellTemplate: resourceCellTemplate } = this.props; const groupPanelItems = this.getGroupPanelItems(); return (0, _inferno.createFragment)(groupPanelItems.map((group => (0, _inferno.createComponentVNode)(2, _group_panel_horizontal_row.GroupPanelHorizontalRow, { groupItems: group, cellTemplate: resourceCellTemplate }, group[0].key))), 0) } } exports.GroupPanelHorizontal = GroupPanelHorizontal; GroupPanelHorizontal.defaultProps = _group_panel_props.GroupPanelBaseDefaultProps }, 91117: /*!********************************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/scheduler/r1/components/base/group_panel_horizontal_cell.js ***! \********************************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.GroupPanelHorizontalCellDefaultProps = exports.GroupPanelHorizontalCell = void 0; var _inferno = __webpack_require__( /*! inferno */ 76231); var _index = __webpack_require__( /*! ../../../../core/r1/runtime/inferno/index */ 6257); var _index2 = __webpack_require__( /*! ../../../../scheduler/r1/components/templates/index */ 17855); var _render_utils = __webpack_require__( /*! ../../../../core/r1/utils/render_utils */ 71312); var _group_panel_props = __webpack_require__( /*! ./group_panel_props */ 3234); function _extends() { return _extends = Object.assign ? Object.assign.bind() : function(n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) { ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]) } } return n }, _extends.apply(null, arguments) } const GroupPanelHorizontalCellDefaultProps = exports.GroupPanelHorizontalCellDefaultProps = _extends({}, _group_panel_props.GroupPanelCellDefaultProps, { isFirstGroupCell: false, isLastGroupCell: false, colSpan: 1 }); class GroupPanelHorizontalCell extends _index.BaseInfernoComponent { render() { const { cellTemplate: cellTemplate, colSpan: colSpan, color: color, data: data, id: id, index: index, text: text, className: className, isFirstGroupCell: isFirstGroupCell, isLastGroupCell: isLastGroupCell } = this.props; const classes = (0, _render_utils.combineClasses)({ "dx-scheduler-group-header": true, "dx-scheduler-first-group-cell": isFirstGroupCell, "dx-scheduler-last-group-cell": isLastGroupCell, [className ?? ""]: !!className }); return (0, _inferno.createVNode)(1, "th", classes, (0, _inferno.createVNode)(1, "div", "dx-scheduler-group-header-content", cellTemplate ? (0, _inferno.createComponentVNode)(2, _index2.PublicTemplate, { template: cellTemplate, templateProps: { data: { data: data, id: id, color: color, text: text }, index: index } }) : (0, _inferno.createVNode)(1, "div", null, text, 0), 0), 2, { colspan: colSpan }) } } exports.GroupPanelHorizontalCell = GroupPanelHorizontalCell; GroupPanelHorizontalCell.defaultProps = GroupPanelHorizontalCellDefaultProps }, 6305: /*!*******************************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/scheduler/r1/components/base/group_panel_horizontal_row.js ***! \*******************************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.GroupPanelHorizontalRow = void 0; var _inferno = __webpack_require__( /*! inferno */ 76231); var _index = __webpack_require__( /*! ../../../../core/r1/runtime/inferno/index */ 6257); var _group_panel_horizontal_cell = __webpack_require__( /*! ./group_panel_horizontal_cell */ 91117); var _group_panel_props = __webpack_require__( /*! ./group_panel_props */ 3234); class GroupPanelHorizontalRow extends _index.BaseInfernoComponent { render() { const { cellTemplate: cellTemplate, className: className, groupItems: groupItems } = this.props; return (0, _inferno.createVNode)(1, "tr", `dx-scheduler-group-row ${className}`, groupItems.map(((_ref, index) => { let { colSpan: colSpan, color: color, data: data, id: id, isFirstGroupCell: isFirstGroupCell, isLastGroupCell: isLastGroupCell, key: key, text: text } = _ref; return (0, _inferno.createComponentVNode)(2, _group_panel_horizontal_cell.GroupPanelHorizontalCell, { text: text, id: id, data: data, index: index, color: color, colSpan: colSpan ?? _group_panel_horizontal_cell.GroupPanelHorizontalCellDefaultProps.colSpan, isFirstGroupCell: !!isFirstGroupCell, isLastGroupCell: !!isLastGroupCell, cellTemplate: cellTemplate }, key) })), 0) } } exports.GroupPanelHorizontalRow = GroupPanelHorizontalRow; GroupPanelHorizontalRow.defaultProps = _group_panel_props.GroupPanelRowDefaultProps }, 3234: /*!**********************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/scheduler/r1/components/base/group_panel_props.js ***! \**********************************************************************************************************/ function(__unused_webpack_module, exports) { Object.defineProperty(exports, "__esModule", { value: true }); exports.GroupPanelRowDefaultProps = exports.GroupPanelCellDefaultProps = exports.GroupPanelBaseDefaultProps = void 0; exports.GroupPanelBaseDefaultProps = { groupPanelData: { groupPanelItems: [], baseColSpan: 1 }, groupByDate: false, styles: {} }; exports.GroupPanelCellDefaultProps = { id: 0, text: "", data: { id: 0 }, className: "" }; exports.GroupPanelRowDefaultProps = { groupItems: [], className: "" } }, 75816: /*!*************************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/scheduler/r1/components/base/group_panel_vertical.js ***! \*************************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.GroupPanelVertical = void 0; var _inferno = __webpack_require__( /*! inferno */ 76231); var _index = __webpack_require__( /*! ../../../../core/r1/runtime/inferno/index */ 6257); var _index2 = __webpack_require__( /*! ../../utils/index */ 34396); var _group_panel_props = __webpack_require__( /*! ./group_panel_props */ 3234); var _group_panel_vertical_row = __webpack_require__( /*! ./group_panel_vertical_row */ 73783); class GroupPanelVertical extends _index.BaseInfernoComponent { render() { const { className: className, elementRef: elementRef, groupPanelData: groupPanelData, resourceCellTemplate: resourceCellTemplate, height: height, styles: styles } = this.props; const style = (0, _index.normalizeStyles)(_index2.renderUtils.addHeightToStyle(height, styles)); return (0, _inferno.createVNode)(1, "div", className, (0, _inferno.createVNode)(1, "div", "dx-scheduler-group-flex-container", groupPanelData.groupPanelItems.map((group => (0, _inferno.createComponentVNode)(2, _group_panel_vertical_row.GroupPanelVerticalRow, { groupItems: group, cellTemplate: resourceCellTemplate }, group[0].key))), 0), 2, { style: style }, null, elementRef) } } exports.GroupPanelVertical = GroupPanelVertical; GroupPanelVertical.defaultProps = _group_panel_props.GroupPanelBaseDefaultProps }, 47231: /*!******************************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/scheduler/r1/components/base/group_panel_vertical_cell.js ***! \******************************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.GroupPanelVerticalCell = void 0; var _inferno = __webpack_require__( /*! inferno */ 76231); var _index = __webpack_require__( /*! ../../../../core/r1/runtime/inferno/index */ 6257); var _index2 = __webpack_require__( /*! ../../../../scheduler/r1/components/templates/index */ 17855); var _group_panel_props = __webpack_require__( /*! ./group_panel_props */ 3234); class GroupPanelVerticalCell extends _index.BaseInfernoComponent { render() { const { className: className, data: data, id: id, color: color, text: text, index: index, cellTemplate: cellTemplate } = this.props; return (0, _inferno.createVNode)(1, "div", `dx-scheduler-group-header ${className}`, cellTemplate ? (0, _inferno.createComponentVNode)(2, _index2.PublicTemplate, { template: cellTemplate, templateProps: { data: { data: data, id: id, color: color, text: text }, index: index } }) : (0, _inferno.createVNode)(1, "div", "dx-scheduler-group-header-content", text, 0), 0) } } exports.GroupPanelVerticalCell = GroupPanelVerticalCell; GroupPanelVerticalCell.defaultProps = _group_panel_props.GroupPanelCellDefaultProps }, 73783: /*!*****************************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/scheduler/r1/components/base/group_panel_vertical_row.js ***! \*****************************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.GroupPanelVerticalRow = void 0; var _inferno = __webpack_require__( /*! inferno */ 76231); var _index = __webpack_require__( /*! ../../../../core/r1/runtime/inferno/index */ 6257); var _group_panel_props = __webpack_require__( /*! ./group_panel_props */ 3234); var _group_panel_vertical_cell = __webpack_require__( /*! ./group_panel_vertical_cell */ 47231); class GroupPanelVerticalRow extends _index.BaseInfernoComponent { render() { const { className: className, groupItems: groupItems, cellTemplate: cellTemplate } = this.props; return (0, _inferno.createVNode)(1, "div", `dx-scheduler-group-row ${className}`, groupItems.map(((_ref, index) => { let { color: color, data: data, id: id, key: key, text: text } = _ref; return (0, _inferno.createComponentVNode)(2, _group_panel_vertical_cell.GroupPanelVerticalCell, { text: text, id: id, data: data, index: index, color: color, cellTemplate: cellTemplate }, key) })), 0) } } exports.GroupPanelVerticalRow = GroupPanelVerticalRow; GroupPanelVerticalRow.defaultProps = _group_panel_props.GroupPanelRowDefaultProps }, 21339: /*!****************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/scheduler/r1/components/base/header_cell.js ***! \****************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.HeaderCell = void 0; var _inferno = __webpack_require__( /*! inferno */ 76231); var _index = __webpack_require__( /*! ../../../../core/r1/runtime/inferno/index */ 6257); var _ordinary_cell = __webpack_require__( /*! ./ordinary_cell */ 12802); class HeaderCell extends _index.BaseInfernoComponent { render() { const { children: children, className: className, colSpan: colSpan, styles: styles } = this.props; return (0, _inferno.createVNode)(1, "th", className, children, 0, { style: (0, _index.normalizeStyles)(styles), colspan: colSpan }) } } exports.HeaderCell = HeaderCell; HeaderCell.defaultProps = _ordinary_cell.OrdinaryCellDefaultProps }, 20025: /*!*****************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/scheduler/r1/components/base/header_panel.js ***! \*****************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.HeaderPanelDefaultProps = exports.HeaderPanel = void 0; var _inferno = __webpack_require__( /*! inferno */ 76231); var _index = __webpack_require__( /*! ../../../../core/r1/runtime/inferno/index */ 6257); var _index2 = __webpack_require__( /*! ../../../../scheduler/r1/components/templates/index */ 17855); var _index3 = __webpack_require__( /*! ../../utils/index */ 34396); var _date_header = __webpack_require__( /*! ./date_header */ 35689); var _group_panel = __webpack_require__( /*! ./group_panel */ 31055); function _extends() { return _extends = Object.assign ? Object.assign.bind() : function(n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) { ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]) } } return n }, _extends.apply(null, arguments) } const HeaderPanelDefaultProps = exports.HeaderPanelDefaultProps = _extends({}, _group_panel.GroupPanelDefaultProps, { isRenderDateHeader: true, dateHeaderTemplate: _date_header.DateHeader }); class HeaderPanel extends _index.InfernoWrapperComponent { createEffects() { return [(0, _index.createReRenderEffect)()] } render() { const { viewContext: viewContext, dateHeaderData: dateHeaderData, groupByDate: groupByDate, groupOrientation: groupOrientation, groupPanelData: groupPanelData, groups: groups, isRenderDateHeader: isRenderDateHeader, dateCellTemplate: dateCellTemplate, dateHeaderTemplate: dateHeaderTemplate, resourceCellTemplate: resourceCellTemplate, timeCellTemplate: timeCellTemplate } = this.props; const isHorizontalGrouping = (0, _index3.isHorizontalGroupingApplied)(groups, groupOrientation); return (0, _inferno.createVNode)(1, "thead", null, [isHorizontalGrouping && !groupByDate && (0, _inferno.createComponentVNode)(2, _group_panel.GroupPanel, { viewContext: viewContext, groupPanelData: groupPanelData, groups: groups, groupByDate: groupByDate, groupOrientation: groupOrientation, resourceCellTemplate: resourceCellTemplate }), isRenderDateHeader && (0, _inferno.createComponentVNode)(2, _index2.PublicTemplate, { template: dateHeaderTemplate, templateProps: { viewContext: viewContext, groupByDate: groupByDate, dateHeaderData: dateHeaderData, groupOrientation: groupOrientation, groups: groups, dateCellTemplate: dateCellTemplate, timeCellTemplate: timeCellTemplate } }), groupByDate && (0, _inferno.createComponentVNode)(2, _group_panel.GroupPanel, { viewContext: viewContext, groupPanelData: groupPanelData, groups: groups, groupByDate: groupByDate, groupOrientation: groupOrientation, resourceCellTemplate: resourceCellTemplate })], 0) } } exports.HeaderPanel = HeaderPanel; HeaderPanel.defaultProps = HeaderPanelDefaultProps }, 76322: /*!*****************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/scheduler/r1/components/base/layout_props.js ***! \*****************************************************************************************************/ function(__unused_webpack_module, exports) { Object.defineProperty(exports, "__esModule", { value: true }); exports.LayoutDefaultProps = void 0; exports.LayoutDefaultProps = { viewData: { groupedData: [], leftVirtualCellCount: 0, rightVirtualCellCount: 0, topVirtualRowCount: 0, bottomVirtualRowCount: 0 }, leftVirtualCellWidth: 0, rightVirtualCellWidth: 0, topVirtualRowHeight: 0, bottomVirtualRowHeight: 0, addDateTableClass: true, addVerticalSizesClassToRows: true } }, 12802: /*!******************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/scheduler/r1/components/base/ordinary_cell.js ***! \******************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.OrdinaryCellDefaultProps = exports.OrdinaryCell = void 0; var _inferno = __webpack_require__( /*! inferno */ 76231); var _index = __webpack_require__( /*! ../../../../core/r1/runtime/inferno/index */ 6257); const OrdinaryCellDefaultProps = exports.OrdinaryCellDefaultProps = {}; class OrdinaryCell extends _index.BaseInfernoComponent { render() { const { children: children, className: className, colSpan: colSpan, styles: styles } = this.props; return (0, _inferno.createVNode)(1, "td", className, children, 0, { style: (0, _index.normalizeStyles)(styles), colspan: colSpan }) } } exports.OrdinaryCell = OrdinaryCell; OrdinaryCell.defaultProps = OrdinaryCellDefaultProps }, 21541: /*!********************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/scheduler/r1/components/base/row.js ***! \********************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.RowDefaultProps = exports.Row = void 0; var _inferno = __webpack_require__( /*! inferno */ 76231); var _index = __webpack_require__( /*! ../../../../core/r1/runtime/inferno/index */ 6257); var _index2 = __webpack_require__( /*! ../../utils/index */ 34396); var _virtual_cell = __webpack_require__( /*! ./virtual_cell */ 46033); const RowDefaultProps = exports.RowDefaultProps = { className: "", leftVirtualCellWidth: 0, rightVirtualCellWidth: 0, isHeaderRow: false }; class Row extends _index.BaseInfernoComponent { render() { const { children: children, className: className, isHeaderRow: isHeaderRow, leftVirtualCellCount: leftVirtualCellCount, leftVirtualCellWidth: leftVirtualCellWidth, rightVirtualCellCount: rightVirtualCellCount, rightVirtualCellWidth: rightVirtualCellWidth, styles: styles } = this.props; const hasLeftVirtualCell = !!leftVirtualCellCount; const hasRightVirtualCell = !!rightVirtualCellCount; return (0, _inferno.createVNode)(1, "tr", className, [hasLeftVirtualCell && null != leftVirtualCellCount && (0, _index2.splitNumber)(leftVirtualCellCount, 1e3).map((colSpan => (0, _inferno.createComponentVNode)(2, _virtual_cell.VirtualCell, { width: leftVirtualCellWidth * (colSpan / leftVirtualCellCount), colSpan: colSpan, isHeaderCell: isHeaderRow ?? _virtual_cell.VirtualCellDefaultProps.isHeaderCell }))), children, hasRightVirtualCell && null != rightVirtualCellCount && (0, _index2.splitNumber)(rightVirtualCellCount, 1e3).map((colSpan => (0, _inferno.createComponentVNode)(2, _virtual_cell.VirtualCell, { width: rightVirtualCellWidth * (colSpan / rightVirtualCellCount), colSpan: colSpan, isHeaderCell: isHeaderRow ?? _virtual_cell.VirtualCellDefaultProps.isHeaderCell })))], 0, { style: (0, _index.normalizeStyles)(styles) }) } } exports.Row = Row; Row.defaultProps = RowDefaultProps }, 46189: /*!**********************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/scheduler/r1/components/base/table.js ***! \**********************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.TableDefaultProps = exports.Table = void 0; var _inferno = __webpack_require__( /*! inferno */ 76231); var _index = __webpack_require__( /*! ../../../../core/r1/runtime/inferno/index */ 6257); var _index2 = __webpack_require__( /*! ../../utils/index */ 34396); var _virtual_row = __webpack_require__( /*! ./virtual_row */ 4053); const TableDefaultProps = exports.TableDefaultProps = { topVirtualRowHeight: 0, bottomVirtualRowHeight: 0, leftVirtualCellWidth: 0, rightVirtualCellWidth: 0, virtualCellsCount: 0 }; class Table extends _index.BaseInfernoComponent { getResultStyles() { const { height: height, width: width, styles: styles } = this.props; const heightAdded = _index2.renderUtils.addHeightToStyle(height, styles); return _index2.renderUtils.addWidthToStyle(width, heightAdded) } render() { const { className: className, topVirtualRowHeight: topVirtualRowHeight, bottomVirtualRowHeight: bottomVirtualRowHeight, children: children, leftVirtualCellCount: leftVirtualCellCount, leftVirtualCellWidth: leftVirtualCellWidth, rightVirtualCellCount: rightVirtualCellCount, rightVirtualCellWidth: rightVirtualCellWidth, tableRef: tableRef, virtualCellsCount: virtualCellsCount } = this.props; const hasTopVirtualRow = !!topVirtualRowHeight; const hasBottomVirtualRow = !!bottomVirtualRowHeight; const resultStyles = this.getResultStyles(); return (0, _inferno.createVNode)(1, "table", className, (0, _inferno.createVNode)(1, "tbody", null, [hasTopVirtualRow && (0, _inferno.createComponentVNode)(2, _virtual_row.VirtualRow, { height: topVirtualRowHeight, cellsCount: virtualCellsCount ?? _virtual_row.VirtualRowDefaultProps.cellsCount, leftVirtualCellWidth: leftVirtualCellWidth ?? _virtual_row.VirtualRowDefaultProps.leftVirtualCellWidth, rightVirtualCellWidth: rightVirtualCellWidth ?? _virtual_row.VirtualRowDefaultProps.rightVirtualCellWidth, leftVirtualCellCount: leftVirtualCellCount, rightVirtualCellCount: rightVirtualCellCount }), children, hasBottomVirtualRow && (0, _inferno.createComponentVNode)(2, _virtual_row.VirtualRow, { height: bottomVirtualRowHeight, cellsCount: virtualCellsCount ?? _virtual_row.VirtualRowDefaultProps.cellsCount, leftVirtualCellWidth: leftVirtualCellWidth ?? _virtual_row.VirtualRowDefaultProps.leftVirtualCellWidth, rightVirtualCellWidth: rightVirtualCellWidth ?? _virtual_row.VirtualRowDefaultProps.rightVirtualCellWidth, leftVirtualCellCount: leftVirtualCellCount, rightVirtualCellCount: rightVirtualCellCount })], 0), 2, { style: (0, _index.normalizeStyles)(resultStyles), "aria-hidden": true }, null, tableRef) } } exports.Table = Table; Table.defaultProps = TableDefaultProps }, 88332: /*!********************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/scheduler/r1/components/base/time_panel_cell.js ***! \********************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.TimePanelCell = void 0; var _inferno = __webpack_require__( /*! inferno */ 76231); var _index = __webpack_require__( /*! ../../../../core/r1/runtime/inferno/index */ 6257); var _index2 = __webpack_require__( /*! ../../../../scheduler/r1/components/templates/index */ 17855); var _render_utils = __webpack_require__( /*! ../../../../core/r1/utils/render_utils */ 71312); var _index3 = __webpack_require__( /*! ../../utils/index */ 34396); var _cell = __webpack_require__( /*! ./cell */ 85409); class TimePanelCell extends _index.BaseInfernoComponent { constructor() { super(...arguments); this.timeCellTemplateProps = null } getTimeCellTemplateProps() { if (null !== this.timeCellTemplateProps) { return this.timeCellTemplateProps } const { groupIndex: groupIndex, groups: groups, index: index, startDate: startDate, text: text } = this.props; this.timeCellTemplateProps = { data: { date: startDate, groups: groups, groupIndex: groupIndex, text: text }, index: index }; return this.timeCellTemplateProps } componentWillUpdate(nextProps) { if (this.props.groupIndex !== nextProps.groupIndex || this.props.groups !== nextProps.groups || this.props.index !== nextProps.index || this.props.startDate !== nextProps.startDate || this.props.text !== nextProps.text) { this.timeCellTemplateProps = null } } render() { const { className: className, viewContext: viewContext, highlighted: highlighted, isFirstGroupCell: isFirstGroupCell, isLastGroupCell: isLastGroupCell, text: text, timeCellTemplate: timeCellTemplate } = this.props; const cellSizeVerticalClass = _index3.renderUtils.getCellSizeVerticalClass(false); const classes = (0, _render_utils.combineClasses)({ "dx-scheduler-time-panel-cell": true, [cellSizeVerticalClass]: true, "dx-scheduler-time-panel-current-time-cell": !!highlighted, [className ?? ""]: true }); const timeCellTemplateProps = this.getTimeCellTemplateProps(); return (0, _inferno.createComponentVNode)(2, _cell.CellBase, { className: classes, viewContext: viewContext, isFirstGroupCell: isFirstGroupCell, isLastGroupCell: isLastGroupCell, startDate: _cell.CellBaseDefaultProps.startDate, endDate: _cell.CellBaseDefaultProps.endDate, index: _cell.CellBaseDefaultProps.index, children: timeCellTemplate ? (0, _inferno.createComponentVNode)(2, _index2.PublicTemplate, { template: timeCellTemplate, templateProps: { index: timeCellTemplateProps.index, data: timeCellTemplateProps.data } }) : (0, _inferno.createVNode)(1, "div", null, text, 0) }) } } exports.TimePanelCell = TimePanelCell; TimePanelCell.defaultProps = _cell.CellBaseDefaultProps }, 2302: /*!*********************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/scheduler/r1/components/base/time_panel_table.js ***! \*********************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.TimePanelTableDefaultProps = exports.TimePanelTable = void 0; var _inferno = __webpack_require__( /*! inferno */ 76231); var _index = __webpack_require__( /*! ../../../../core/r1/runtime/inferno/index */ 6257); var _all_day_panel_title = __webpack_require__( /*! ./all_day_panel_title */ 4011); var _cell = __webpack_require__( /*! ./cell */ 85409); var _row = __webpack_require__( /*! ./row */ 21541); var _table = __webpack_require__( /*! ./table */ 46189); var _time_panel_cell = __webpack_require__( /*! ./time_panel_cell */ 88332); const _excluded = ["timePanelData", "viewContext", "tableRef", "timeCellTemplate"]; function _extends() { return _extends = Object.assign ? Object.assign.bind() : function(n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) { ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]) } } return n }, _extends.apply(null, arguments) } const TimePanelTableDefaultProps = exports.TimePanelTableDefaultProps = { timePanelData: { groupedData: [], leftVirtualCellCount: 0, rightVirtualCellCount: 0, topVirtualRowCount: 0, bottomVirtualRowCount: 0 } }; class TimePanelTable extends _index.InfernoWrapperComponent { createEffects() { return [(0, _index.createReRenderEffect)()] } render() { const _this$props = this.props, { timePanelData: timePanelData, viewContext: viewContext, tableRef: tableRef, timeCellTemplate: timeCellTemplate } = _this$props, restProps = function(r, e) { if (null == r) { return {} } var t = {}; for (var n in r) { if ({}.hasOwnProperty.call(r, n)) { if (e.includes(n)) { continue } t[n] = r[n] } } return t }(_this$props, _excluded); const { topVirtualRowHeight: topVirtualRowHeight, bottomVirtualRowHeight: bottomVirtualRowHeight } = timePanelData; return (0, _inferno.normalizeProps)((0, _inferno.createComponentVNode)(2, _table.Table, _extends({}, restProps, { className: "dx-scheduler-time-panel", topVirtualRowHeight: topVirtualRowHeight ?? 0, bottomVirtualRowHeight: bottomVirtualRowHeight ?? 0, virtualCellsCount: 1, tableRef: tableRef, children: timePanelData.groupedData.map((_ref => { let { dateTable: dateTable, groupIndex: groupIndex, isGroupedAllDayPanel: isGroupedAllDayPanel, key: fragmentKey } = _ref; return (0, _inferno.createFragment)([isGroupedAllDayPanel && (0, _inferno.createComponentVNode)(2, _row.Row, { leftVirtualCellWidth: _row.RowDefaultProps.leftVirtualCellWidth, rightVirtualCellWidth: _row.RowDefaultProps.rightVirtualCellWidth, children: (0, _inferno.createComponentVNode)(2, _cell.CellBase, { className: "dx-scheduler-time-panel-title-cell", viewContext: viewContext, startDate: _cell.CellBaseDefaultProps.startDate, endDate: _cell.CellBaseDefaultProps.endDate, index: _cell.CellBaseDefaultProps.index, children: (0, _inferno.createComponentVNode)(2, _all_day_panel_title.AllDayPanelTitle) }) }), dateTable.map((_ref2 => { let { groups: groups, highlighted: highlighted, index: cellIndex, isFirstGroupCell: isFirstGroupCell, isLastGroupCell: isLastGroupCell, key: key, startDate: startDate, text: text } = _ref2; return (0, _inferno.createComponentVNode)(2, _row.Row, { className: "dx-scheduler-time-panel-row", leftVirtualCellWidth: _row.RowDefaultProps.leftVirtualCellWidth, rightVirtualCellWidth: _row.RowDefaultProps.rightVirtualCellWidth, children: (0, _inferno.createComponentVNode)(2, _time_panel_cell.TimePanelCell, { viewContext: viewContext, startDate: startDate, endDate: _cell.CellBaseDefaultProps.endDate, text: text, groups: groups, groupIndex: groupIndex, isFirstGroupCell: isFirstGroupCell, isLastGroupCell: isLastGroupCell, index: cellIndex, timeCellTemplate: timeCellTemplate, highlighted: highlighted }) }, key) }))], 0, fragmentKey) })) }))) } } exports.TimePanelTable = TimePanelTable; TimePanelTable.defaultProps = TimePanelTableDefaultProps }, 46033: /*!*****************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/scheduler/r1/components/base/virtual_cell.js ***! \*****************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.VirtualCellDefaultProps = exports.VirtualCell = void 0; var _inferno = __webpack_require__( /*! inferno */ 76231); var _index = __webpack_require__( /*! ../../../../core/r1/runtime/inferno/index */ 6257); var _index2 = __webpack_require__( /*! ../../utils/index */ 34396); var _header_cell = __webpack_require__( /*! ./header_cell */ 21339); var _ordinary_cell = __webpack_require__( /*! ./ordinary_cell */ 12802); const VirtualCellDefaultProps = exports.VirtualCellDefaultProps = { width: 0, isHeaderCell: false }; class VirtualCell extends _index.BaseInfernoComponent { render() { const { colSpan: colSpan, isHeaderCell: isHeaderCell, width: width, styles: styles } = this.props; const modifiedStyles = _index2.renderUtils.addWidthToStyle(width, styles); const Cell = isHeaderCell ? _header_cell.HeaderCell : _ordinary_cell.OrdinaryCell; return (0, _inferno.createComponentVNode)(2, Cell, { className: "dx-scheduler-virtual-cell", styles: modifiedStyles, colSpan: colSpan }) } } exports.VirtualCell = VirtualCell; VirtualCell.defaultProps = VirtualCellDefaultProps }, 4053: /*!****************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/scheduler/r1/components/base/virtual_row.js ***! \****************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.VirtualRowDefaultProps = exports.VirtualRow = void 0; var _inferno = __webpack_require__( /*! inferno */ 76231); var _index = __webpack_require__( /*! ../../../../core/r1/runtime/inferno/index */ 6257); var _index2 = __webpack_require__( /*! ../../utils/index */ 34396); var _row = __webpack_require__( /*! ./row */ 21541); var _virtual_cell = __webpack_require__( /*! ./virtual_cell */ 46033); function _extends() { return _extends = Object.assign ? Object.assign.bind() : function(n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) { ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]) } } return n }, _extends.apply(null, arguments) } const VirtualRowDefaultProps = exports.VirtualRowDefaultProps = _extends({}, _row.RowDefaultProps, { leftVirtualCellWidth: 0, rightVirtualCellWidth: 0, cellsCount: 1 }); class VirtualRow extends _index.BaseInfernoComponent { constructor() { super(...arguments); this.virtualCells = null } getVirtualCells() { if (null !== this.virtualCells) { return this.virtualCells } const { cellsCount: cellsCount } = this.props; this.virtualCells = [...Array(cellsCount)]; return this.virtualCells } componentWillUpdate(nextProps) { if (this.props.cellsCount !== nextProps.cellsCount) { this.virtualCells = null } } render() { const { className: className, leftVirtualCellCount: leftVirtualCellCount, leftVirtualCellWidth: leftVirtualCellWidth, rightVirtualCellCount: rightVirtualCellCount, rightVirtualCellWidth: rightVirtualCellWidth, styles: styles, height: height } = this.props; const classes = `dx-scheduler-virtual-row ${className}`; const modifiedStyles = _index2.renderUtils.addHeightToStyle(height, styles); const virtualCells = this.getVirtualCells(); return (0, _inferno.createComponentVNode)(2, _row.Row, { className: classes, styles: modifiedStyles, leftVirtualCellWidth: leftVirtualCellWidth, rightVirtualCellWidth: rightVirtualCellWidth, leftVirtualCellCount: leftVirtualCellCount, rightVirtualCellCount: rightVirtualCellCount, children: virtualCells.map(((_, index) => (0, _inferno.createComponentVNode)(2, _virtual_cell.VirtualCell, { width: _virtual_cell.VirtualCellDefaultProps.width, isHeaderCell: _virtual_cell.VirtualCellDefaultProps.isHeaderCell }, index.toString()))) }) } } exports.VirtualRow = VirtualRow; VirtualRow.defaultProps = VirtualRowDefaultProps }, 52728: /*!*****************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/scheduler/r1/components/const.js ***! \*****************************************************************************************/ function(__unused_webpack_module, exports) { Object.defineProperty(exports, "__esModule", { value: true }); exports.DefaultSizes = exports.DATE_TABLE_ROW_CLASS = exports.DATE_TABLE_CELL_CLASS = exports.ALL_DAY_PANEL_CELL_CLASS = void 0; exports.DefaultSizes = { allDayPanelHeight: 25 }; exports.DATE_TABLE_CELL_CLASS = "dx-scheduler-date-table-cell"; exports.DATE_TABLE_ROW_CLASS = "dx-scheduler-date-table-row"; exports.ALL_DAY_PANEL_CELL_CLASS = "dx-scheduler-all-day-table-cell" }, 19747: /*!*****************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/scheduler/r1/components/index.js ***! \*****************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "AllDayPanelTitleComponent", { enumerable: true, get: function() { return _all_day_panel_title.AllDayPanelTitleComponent } }); Object.defineProperty(exports, "AllDayTableComponent", { enumerable: true, get: function() { return _all_day_table.AllDayTableComponent } }); Object.defineProperty(exports, "DateTableComponent", { enumerable: true, get: function() { return _date_table.DateTableComponent } }); Object.defineProperty(exports, "DateTableMonthComponent", { enumerable: true, get: function() { return _date_table_month.DateTableMonthComponent } }); Object.defineProperty(exports, "GroupPanelComponent", { enumerable: true, get: function() { return _group_panel.GroupPanelComponent } }); Object.defineProperty(exports, "HeaderPanelComponent", { enumerable: true, get: function() { return _header_panel.HeaderPanelComponent } }); Object.defineProperty(exports, "HeaderPanelTimelineComponent", { enumerable: true, get: function() { return _header_panel_timeline.HeaderPanelTimelineComponent } }); Object.defineProperty(exports, "TimePanelComponent", { enumerable: true, get: function() { return _time_panel.TimePanelComponent } }); var _all_day_panel_title = __webpack_require__( /*! ./wrappers/all_day_panel_title */ 83562); var _all_day_table = __webpack_require__( /*! ./wrappers/all_day_table */ 63273); var _date_table = __webpack_require__( /*! ./wrappers/date_table */ 97641); var _date_table_month = __webpack_require__( /*! ./wrappers/date_table_month */ 71212); var _group_panel = __webpack_require__( /*! ./wrappers/group_panel */ 74290); var _header_panel = __webpack_require__( /*! ./wrappers/header_panel */ 87286); var _header_panel_timeline = __webpack_require__( /*! ./wrappers/header_panel_timeline */ 96774); var _time_panel = __webpack_require__( /*! ./wrappers/time_panel */ 54322) }, 40802: /*!**********************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/scheduler/r1/components/month/date_table_month.js ***! \**********************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.DateTableMonth = void 0; var _inferno = __webpack_require__( /*! inferno */ 76231); var _index = __webpack_require__( /*! ../../../../core/r1/runtime/inferno/index */ 6257); var _date_table = __webpack_require__( /*! ../base/date_table */ 74282); var _date_table_month_cell = __webpack_require__( /*! ./date_table_month_cell */ 83725); const _excluded = ["viewData", "viewContext", "addDateTableClass", "addVerticalSizesClassToRows", "dataCellTemplate", "groupOrientation", "tableRef", "width"]; function _extends() { return _extends = Object.assign ? Object.assign.bind() : function(n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) { ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]) } } return n }, _extends.apply(null, arguments) } class DateTableMonth extends _index.InfernoWrapperComponent { createEffects() { return [(0, _index.createReRenderEffect)()] } render() { const _this$props = this.props, { viewData: viewData, viewContext: viewContext, addDateTableClass: addDateTableClass, addVerticalSizesClassToRows: addVerticalSizesClassToRows, dataCellTemplate: dataCellTemplate, groupOrientation: groupOrientation, tableRef: tableRef, width: width } = _this$props, restProps = function(r, e) { if (null == r) { return {} } var t = {}; for (var n in r) { if ({}.hasOwnProperty.call(r, n)) { if (e.includes(n)) { continue } t[n] = r[n] } } return t }(_this$props, _excluded); return (0, _inferno.normalizeProps)((0, _inferno.createComponentVNode)(2, _date_table.DateTable, _extends({}, restProps, { viewData: viewData, viewContext: viewContext, groupOrientation: groupOrientation, addDateTableClass: addDateTableClass, dataCellTemplate: dataCellTemplate, cellTemplate: _date_table_month_cell.DateTableMonthCell, tableRef: tableRef, addVerticalSizesClassToRows: addVerticalSizesClassToRows, width: width }))) } } exports.DateTableMonth = DateTableMonth; DateTableMonth.defaultProps = _date_table.DateTableDefaultProps }, 83725: /*!***************************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/scheduler/r1/components/month/date_table_month_cell.js ***! \***************************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.DateTableMonthCell = void 0; var _inferno = __webpack_require__( /*! inferno */ 76231); var _index = __webpack_require__( /*! ../../../../core/r1/runtime/inferno/index */ 6257); var _render_utils = __webpack_require__( /*! ../../../../core/r1/utils/render_utils */ 71312); var _date_table_cell_base = __webpack_require__( /*! ../base/date_table_cell_base */ 48661); class DateTableMonthCell extends _index.BaseInfernoComponent { constructor() { super(...arguments); this.contentTemplateProps = null } getContentTemplateProps() { if (null !== this.contentTemplateProps) { return this.contentTemplateProps } const { index: index, text: text } = this.props; this.contentTemplateProps = { data: { text: text }, index: index }; return this.contentTemplateProps } componentWillUpdate(nextProps) { if (this.props.index !== nextProps.index || this.props.text !== nextProps.text) { this.contentTemplateProps = null } } render() { const { viewContext: viewContext, dataCellTemplate: dataCellTemplate, endDate: endDate, groupIndex: groupIndex, groups: groups, index: index, isFirstGroupCell: isFirstGroupCell, isFocused: isFocused, isLastGroupCell: isLastGroupCell, isSelected: isSelected, startDate: startDate, text: text, className: className, firstDayOfMonth: firstDayOfMonth, otherMonth: otherMonth, today: today } = this.props; const classes = (0, _render_utils.combineClasses)({ "dx-scheduler-date-table-other-month": !!otherMonth, "dx-scheduler-date-table-current-date": !!today, "dx-scheduler-date-table-first-of-month": !!firstDayOfMonth, [className ?? ""]: !!className }); const contentTemplateProps = this.getContentTemplateProps(); return (0, _inferno.createComponentVNode)(2, _date_table_cell_base.DateTableCellBase, { className: classes, viewContext: viewContext, dataCellTemplate: dataCellTemplate, startDate: startDate, endDate: endDate, text: text, groups: groups, groupIndex: groupIndex, index: index, isFirstGroupCell: isFirstGroupCell, isLastGroupCell: isLastGroupCell, isSelected: isSelected, isFocused: isFocused, contentTemplateProps: contentTemplateProps, children: (0, _inferno.createVNode)(1, "div", "dx-scheduler-date-table-cell-text", text, 0) }) } } exports.DateTableMonthCell = DateTableMonthCell; DateTableMonthCell.defaultProps = _date_table_cell_base.DateTableCallBaseDefaultProps }, 17855: /*!***************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/scheduler/r1/components/templates/index.js ***! \***************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "PublicTemplate", { enumerable: true, get: function() { return _public_template.PublicTemplate } }); var _public_template = __webpack_require__( /*! ./public_template */ 52303) }, 52303: /*!*************************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/scheduler/r1/components/templates/public_template.js ***! \*************************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.PublicTemplate = void 0; var _inferno = __webpack_require__( /*! inferno */ 76231); var _common = __webpack_require__( /*! ../../../../../core/utils/common */ 17781); var _index = __webpack_require__( /*! ../../../../core/r1/utils/index */ 10632); function _extends() { return _extends = Object.assign ? Object.assign.bind() : function(n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) { ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]) } } return n }, _extends.apply(null, arguments) } exports.PublicTemplate = _ref => { let { template: template, templateProps: templateProps, renderOptions: renderOptions } = _ref; if (void 0 === template) { return (0, _inferno.createFragment)() } const templateFn = (0, _index.getTemplate)(template); const templatePropsWithComparer = _extends({}, templateProps, { data: _extends({}, templateProps.data ?? {}, { isEqual: (null === renderOptions || void 0 === renderOptions ? void 0 : renderOptions.propsComparer) ?? _common.equalByValue }) }); return null === templateFn || void 0 === templateFn ? void 0 : templateFn(templatePropsWithComparer) } }, 30737: /*!*****************************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/scheduler/r1/components/timeline/date_header_timeline.js ***! \*****************************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.TimelineDateHeaderLayout = void 0; var _inferno = __webpack_require__( /*! inferno */ 76231); var _index = __webpack_require__( /*! ../../../../core/r1/runtime/inferno/index */ 6257); var _themes = __webpack_require__( /*! ../../../../scheduler/r1/utils/themes */ 3108); var _index2 = __webpack_require__( /*! ../../utils/index */ 34396); var _date_header = __webpack_require__( /*! ../base/date_header */ 35689); var _date_header_cell = __webpack_require__( /*! ../base/date_header_cell */ 60932); var _row = __webpack_require__( /*! ../base/row */ 21541); const { isMaterialBased: isMaterialBased } = (0, _themes.getThemeType)(); class TimelineDateHeaderLayout extends _index.BaseInfernoComponent { render() { const { viewContext: viewContext, groupByDate: groupByDate, groupOrientation: groupOrientation, groups: groups, dateHeaderData: dateHeaderData, dateCellTemplate: dateCellTemplate, timeCellTemplate: timeCellTemplate } = this.props; const { dataMap: dataMap, isMonthDateHeader: isMonthDateHeader, leftVirtualCellCount: leftVirtualCellCount, leftVirtualCellWidth: leftVirtualCellWidth, rightVirtualCellCount: rightVirtualCellCount, rightVirtualCellWidth: rightVirtualCellWidth, weekDayLeftVirtualCellCount: weekDayLeftVirtualCellCount, weekDayLeftVirtualCellWidth: weekDayLeftVirtualCellWidth, weekDayRightVirtualCellCount: weekDayRightVirtualCellCount, weekDayRightVirtualCellWidth: weekDayRightVirtualCellWidth } = dateHeaderData; const isHorizontalGrouping = (0, _index2.isHorizontalGroupingApplied)(groups, groupOrientation) && !groupByDate; return (0, _inferno.createFragment)(dataMap.map(((dateHeaderRow, rowIndex) => { const rowsCount = dataMap.length; const isTimeCellTemplate = rowsCount - 1 === rowIndex; const isWeekDayRow = rowsCount > 1 && 0 === rowIndex; const splitText = isMaterialBased && (isMonthDateHeader || isWeekDayRow); let validLeftVirtualCellCount = leftVirtualCellCount; let validRightVirtualCellCount = rightVirtualCellCount; let validRightVirtualCellWidth = rightVirtualCellWidth; let validLeftVirtualCellWidth = leftVirtualCellWidth; if (isWeekDayRow) { validLeftVirtualCellCount = weekDayLeftVirtualCellCount; validRightVirtualCellCount = weekDayRightVirtualCellCount; validRightVirtualCellWidth = weekDayRightVirtualCellWidth; validLeftVirtualCellWidth = weekDayLeftVirtualCellWidth } return (0, _inferno.createComponentVNode)(2, _row.Row, { className: "dx-scheduler-header-row", leftVirtualCellWidth: validLeftVirtualCellWidth ?? _row.RowDefaultProps.leftVirtualCellWidth, leftVirtualCellCount: validLeftVirtualCellCount, rightVirtualCellWidth: validRightVirtualCellWidth ?? _row.RowDefaultProps.rightVirtualCellWidth, rightVirtualCellCount: validRightVirtualCellCount, children: dateHeaderRow.map((_ref => { let { colSpan: colSpan, endDate: endDate, groupIndex: groupIndex, groups: cellGroups, index: index, isFirstGroupCell: isFirstGroupCell, isLastGroupCell: isLastGroupCell, key: key, startDate: startDate, text: text, today: today } = _ref; return (0, _inferno.createComponentVNode)(2, _date_header_cell.DateHeaderCell, { viewContext: viewContext, startDate: startDate, endDate: endDate, groups: isHorizontalGrouping ? cellGroups : void 0, groupIndex: isHorizontalGrouping ? groupIndex : void 0, today: today ?? _date_header_cell.DateHeaderCellDefaultProps.today, index: index, text: text, isFirstGroupCell: isFirstGroupCell, isLastGroupCell: isLastGroupCell, isWeekDayCell: isWeekDayRow, colSpan: colSpan, splitText: splitText, dateCellTemplate: dateCellTemplate, timeCellTemplate: timeCellTemplate, isTimeCellTemplate: isTimeCellTemplate }, key) })) }, rowIndex.toString()) })), 0) } } exports.TimelineDateHeaderLayout = TimelineDateHeaderLayout; TimelineDateHeaderLayout.defaultProps = _date_header.DateHeaderDefaultProps }, 66921: /*!******************************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/scheduler/r1/components/timeline/header_panel_timeline.js ***! \******************************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.HeaderPanelTimeline = void 0; var _inferno = __webpack_require__( /*! inferno */ 76231); var _index = __webpack_require__( /*! ../../../../core/r1/runtime/inferno/index */ 6257); var _header_panel = __webpack_require__( /*! ../base/header_panel */ 20025); var _date_header_timeline = __webpack_require__( /*! ./date_header_timeline */ 30737); class HeaderPanelTimeline extends _index.InfernoWrapperComponent { createEffects() { return [(0, _index.createReRenderEffect)()] } render() { const { viewContext: viewContext, dateCellTemplate: dateCellTemplate, dateHeaderData: dateHeaderData, groupByDate: groupByDate, groupOrientation: groupOrientation, groupPanelData: groupPanelData, groups: groups, isRenderDateHeader: isRenderDateHeader, resourceCellTemplate: resourceCellTemplate, timeCellTemplate: timeCellTemplate } = this.props; return (0, _inferno.createComponentVNode)(2, _header_panel.HeaderPanel, { viewContext: viewContext, dateHeaderData: dateHeaderData, groupPanelData: groupPanelData, groupByDate: groupByDate, groups: groups, groupOrientation: groupOrientation, isRenderDateHeader: isRenderDateHeader, dateHeaderTemplate: _date_header_timeline.TimelineDateHeaderLayout, resourceCellTemplate: resourceCellTemplate, dateCellTemplate: dateCellTemplate, timeCellTemplate: timeCellTemplate }) } } exports.HeaderPanelTimeline = HeaderPanelTimeline; HeaderPanelTimeline.defaultProps = _header_panel.HeaderPanelDefaultProps }, 83562: /*!****************************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/scheduler/r1/components/wrappers/all_day_panel_title.js ***! \****************************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.AllDayPanelTitleComponent = void 0; var _component_registrator = (e = __webpack_require__( /*! ../../../../../core/component_registrator */ 92848), e && e.__esModule ? e : { default: e }); var e; var _index = __webpack_require__( /*! ../../../../core/r1/index */ 84766); var _all_day_panel_title = __webpack_require__( /*! ../base/all_day_panel_title */ 4011); class AllDayPanelTitleComponent extends _index.ComponentWrapper { get _propsInfo() { return { twoWay: [], allowNull: [], elements: [], templates: [], props: [] } } get _viewComponent() { return _all_day_panel_title.AllDayPanelTitle } } exports.AllDayPanelTitleComponent = AllDayPanelTitleComponent; (0, _component_registrator.default)("dxAllDayPanelTitle", AllDayPanelTitleComponent) }, 63273: /*!**********************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/scheduler/r1/components/wrappers/all_day_table.js ***! \**********************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.AllDayTableComponent = void 0; var _component_registrator = (e = __webpack_require__( /*! ../../../../../core/component_registrator */ 92848), e && e.__esModule ? e : { default: e }); var e; var _all_day_panel_table = __webpack_require__( /*! ../../../../scheduler/r1/components/base/all_day_panel_table */ 49673); var _date_table = __webpack_require__( /*! ./date_table */ 97641); class AllDayTableComponent extends _date_table.DateTableComponent { get _propsInfo() { return { twoWay: [], allowNull: [], elements: [], templates: ["dataCellTemplate"], props: ["viewData", "viewContext", "groupOrientation", "leftVirtualCellWidth", "rightVirtualCellWidth", "topVirtualRowHeight", "bottomVirtualRowHeight", "addDateTableClass", "addVerticalSizesClassToRows", "width", "dataCellTemplate"] } } get _viewComponent() { return _all_day_panel_table.AllDayTable } } exports.AllDayTableComponent = AllDayTableComponent; (0, _component_registrator.default)("dxAllDayTable", AllDayTableComponent) }, 97641: /*!*******************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/scheduler/r1/components/wrappers/date_table.js ***! \*******************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.DateTableComponent = void 0; var _component_registrator = (e = __webpack_require__( /*! ../../../../../core/component_registrator */ 92848), e && e.__esModule ? e : { default: e }); var e; var _index = __webpack_require__( /*! ../../../../core/r1/index */ 84766); var _date_table = __webpack_require__( /*! ../base/date_table */ 74282); function _extends() { return _extends = Object.assign ? Object.assign.bind() : function(n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) { ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]) } } return n }, _extends.apply(null, arguments) } class DateTableComponent extends _index.ComponentWrapper { _setOptionsByReference() { super._setOptionsByReference(); this._optionsByReference = _extends({}, this._optionsByReference, { dataCellTemplate: true }) } get _propsInfo() { return { twoWay: [], allowNull: [], elements: [], templates: ["cellTemplate", "dataCellTemplate"], props: ["viewData", "viewContext", "cellTemplate", "groupOrientation", "leftVirtualCellWidth", "rightVirtualCellWidth", "topVirtualRowHeight", "bottomVirtualRowHeight", "addDateTableClass", "addVerticalSizesClassToRows", "width", "dataCellTemplate"] } } get _viewComponent() { return _date_table.DateTable } } exports.DateTableComponent = DateTableComponent; (0, _component_registrator.default)("dxDateTableLayoutBase", DateTableComponent) }, 71212: /*!*************************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/scheduler/r1/components/wrappers/date_table_month.js ***! \*************************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.DateTableMonthComponent = void 0; var _component_registrator = (e = __webpack_require__( /*! ../../../../../core/component_registrator */ 92848), e && e.__esModule ? e : { default: e }); var e; var _date_table_month = __webpack_require__( /*! ../month/date_table_month */ 40802); var _date_table = __webpack_require__( /*! ./date_table */ 97641); class DateTableMonthComponent extends _date_table.DateTableComponent { get _propsInfo() { return { twoWay: [], allowNull: [], elements: [], templates: ["cellTemplate", "dataCellTemplate"], props: ["viewData", "viewContext", "cellTemplate", "groupOrientation", "leftVirtualCellWidth", "rightVirtualCellWidth", "topVirtualRowHeight", "bottomVirtualRowHeight", "addDateTableClass", "addVerticalSizesClassToRows", "width", "dataCellTemplate"] } } get _viewComponent() { return _date_table_month.DateTableMonth } } exports.DateTableMonthComponent = DateTableMonthComponent; (0, _component_registrator.default)("dxMonthDateTableLayout", DateTableMonthComponent) }, 74290: /*!********************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/scheduler/r1/components/wrappers/group_panel.js ***! \********************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.GroupPanelComponent = void 0; var _component_registrator = (e = __webpack_require__( /*! ../../../../../core/component_registrator */ 92848), e && e.__esModule ? e : { default: e }); var e; var _index = __webpack_require__( /*! ../../../../core/r1/index */ 84766); var _group_panel = __webpack_require__( /*! ../base/group_panel */ 31055); function _extends() { return _extends = Object.assign ? Object.assign.bind() : function(n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) { ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]) } } return n }, _extends.apply(null, arguments) } class GroupPanelComponent extends _index.ComponentWrapper { _setOptionsByReference() { super._setOptionsByReference(); this._optionsByReference = _extends({}, this._optionsByReference, { resourceCellTemplate: true }) } get _propsInfo() { return { twoWay: [], allowNull: [], elements: [], templates: ["resourceCellTemplate"], props: ["viewContext", "groups", "groupOrientation", "groupPanelData", "groupByDate", "height", "className", "resourceCellTemplate"] } } get _viewComponent() { return _group_panel.GroupPanel } } exports.GroupPanelComponent = GroupPanelComponent; (0, _component_registrator.default)("dxGroupPanel", GroupPanelComponent) }, 87286: /*!*********************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/scheduler/r1/components/wrappers/header_panel.js ***! \*********************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.HeaderPanelComponent = void 0; var _component_registrator = (e = __webpack_require__( /*! ../../../../../core/component_registrator */ 92848), e && e.__esModule ? e : { default: e }); var e; var _index = __webpack_require__( /*! ../../../../core/r1/index */ 84766); var _header_panel = __webpack_require__( /*! ../base/header_panel */ 20025); function _extends() { return _extends = Object.assign ? Object.assign.bind() : function(n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) { ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]) } } return n }, _extends.apply(null, arguments) } class HeaderPanelComponent extends _index.ComponentWrapper { _setOptionsByReference() { super._setOptionsByReference(); this._optionsByReference = _extends({}, this._optionsByReference, { dateHeaderData: true, resourceCellTemplate: true, dateCellTemplate: true, timeCellTemplate: true }) } get _propsInfo() { return { twoWay: [], allowNull: [], elements: [], templates: ["dateCellTemplate", "timeCellTemplate", "dateHeaderTemplate", "resourceCellTemplate"], props: ["viewContext", "dateHeaderData", "isRenderDateHeader", "dateCellTemplate", "timeCellTemplate", "dateHeaderTemplate", "groups", "groupOrientation", "groupPanelData", "groupByDate", "height", "className", "resourceCellTemplate"] } } get _viewComponent() { return _header_panel.HeaderPanel } } exports.HeaderPanelComponent = HeaderPanelComponent; (0, _component_registrator.default)("dxHeaderPanelLayout", HeaderPanelComponent) }, 96774: /*!******************************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/scheduler/r1/components/wrappers/header_panel_timeline.js ***! \******************************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.HeaderPanelTimelineComponent = void 0; var _component_registrator = (e = __webpack_require__( /*! ../../../../../core/component_registrator */ 92848), e && e.__esModule ? e : { default: e }); var e; var _header_panel_timeline = __webpack_require__( /*! ../timeline/header_panel_timeline */ 66921); var _header_panel = __webpack_require__( /*! ./header_panel */ 87286); class HeaderPanelTimelineComponent extends _header_panel.HeaderPanelComponent { get _propsInfo() { return { twoWay: [], allowNull: [], elements: [], templates: ["dateCellTemplate", "timeCellTemplate", "dateHeaderTemplate", "resourceCellTemplate"], props: ["viewContext", "dateHeaderData", "isRenderDateHeader", "dateCellTemplate", "timeCellTemplate", "dateHeaderTemplate", "groups", "groupOrientation", "groupPanelData", "groupByDate", "height", "className", "resourceCellTemplate"] } } get _viewComponent() { return _header_panel_timeline.HeaderPanelTimeline } } exports.HeaderPanelTimelineComponent = HeaderPanelTimelineComponent; (0, _component_registrator.default)("dxTimelineHeaderPanelLayout", HeaderPanelTimelineComponent) }, 54322: /*!*******************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/scheduler/r1/components/wrappers/time_panel.js ***! \*******************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.TimePanelComponent = void 0; var _component_registrator = (e = __webpack_require__( /*! ../../../../../core/component_registrator */ 92848), e && e.__esModule ? e : { default: e }); var e; var _index = __webpack_require__( /*! ../../../../core/r1/index */ 84766); var _time_panel_table = __webpack_require__( /*! ../base/time_panel_table */ 2302); function _extends() { return _extends = Object.assign ? Object.assign.bind() : function(n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) { ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]) } } return n }, _extends.apply(null, arguments) } class TimePanelComponent extends _index.ComponentWrapper { _setOptionsByReference() { super._setOptionsByReference(); this._optionsByReference = _extends({}, this._optionsByReference, { timeCellTemplate: true }) } get _propsInfo() { return { twoWay: [], allowNull: [], elements: [], templates: ["timeCellTemplate"], props: ["viewContext", "groupOrientation", "timePanelData", "timeCellTemplate"] } } get _viewComponent() { return _time_panel_table.TimePanelTable } } exports.TimePanelComponent = TimePanelComponent; (0, _component_registrator.default)("dxTimePanelTableLayout", TimePanelComponent) }, 78133: /*!*****************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/scheduler/r1/filterting/index.js ***! \*****************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "combineRemoteFilter", { enumerable: true, get: function() { return _remote.combineRemoteFilter } }); var _remote = __webpack_require__( /*! ./remote */ 89755) }, 89755: /*!******************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/scheduler/r1/filterting/remote.js ***! \******************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.combineRemoteFilter = void 0; var _common = __webpack_require__( /*! ../../../../core/utils/common */ 17781); var _date_serialization = (e = __webpack_require__( /*! ../../../../core/utils/date_serialization */ 71051), e && e.__esModule ? e : { default: e }); var e; var _extend = __webpack_require__( /*! ../../../../core/utils/extend */ 52576); var _type = __webpack_require__( /*! ../../../../core/utils/type */ 11528); var _index = __webpack_require__( /*! ../utils/index */ 34396); const FilterPosition_dateFilter = 0, FilterPosition_userFilter = 1; class RemoteFilterCombiner { constructor(options) { this.options = options } get dataAccessors() { return this.options.dataAccessors } get dataSourceFilter() { return this.options.dataSourceFilter } get dateSerializationFormat() { return this.options.dateSerializationFormat } get forceIsoDateParsing() { return (0, _type.isDefined)(this.options.forceIsoDateParsing) ? this.options.forceIsoDateParsing : true } makeDateFilter(min, max) { const { startDateExpr: startDateExpr, endDateExpr: endDateExpr, recurrenceRuleExpr: recurrenceRuleExpr } = this.dataAccessors.expr; const dateFilter = [ [ [endDateExpr, ">=", min], [startDateExpr, "<", max] ], "or", [recurrenceRuleExpr, "startswith", "freq"], "or", [ [endDateExpr, min], [startDateExpr, min] ] ]; if (!recurrenceRuleExpr) { dateFilter.splice(1, 2) } return dateFilter } combineFilters(dateFilter, userFilter) { const combinedFilter = []; if (dateFilter) { combinedFilter.push(dateFilter) } if (userFilter) { combinedFilter.push(userFilter) } return this.serializeRemoteFilter(combinedFilter) } serializeRemoteFilter(combinedFilter) { if (!Array.isArray(combinedFilter)) { return combinedFilter } const { startDateExpr: startDateExpr, endDateExpr: endDateExpr } = this.dataAccessors.expr; const filter = (0, _extend.extend)([], combinedFilter); if ((0, _type.isString)(filter[0])) { if (this.forceIsoDateParsing && filter.length > 1) { if (filter[0] === startDateExpr || filter[0] === endDateExpr) { const lastFilterValue = filter[filter.length - 1]; filter[filter.length - 1] = _date_serialization.default.serializeDate(new Date(lastFilterValue), this.dateSerializationFormat) } } } for (let i = 0; i < filter.length; i += 1) { filter[i] = this.serializeRemoteFilter(filter[i]) } return filter } getUserFilter(dateFilter) { if (!this.dataSourceFilter || (0, _common.equalByValue)(this.dataSourceFilter, dateFilter)) { return } const containsDateFilter = this.dataSourceFilter.length > 0 && (0, _common.equalByValue)(this.dataSourceFilter[FilterPosition_dateFilter], dateFilter); const userFilter = containsDateFilter ? this.dataSourceFilter[FilterPosition_userFilter] : this.dataSourceFilter; return userFilter } combine(min, max) { const [trimMin, trimMax] = (0, _index.getDatesWithoutTime)(min, max); const dateFilter = this.makeDateFilter(trimMin, trimMax); const userFilter = this.getUserFilter(dateFilter); const combinedFilter = this.combineFilters(dateFilter, userFilter); return combinedFilter } } exports.combineRemoteFilter = options => new RemoteFilterCombiner(options).combine(options.min, options.max) }, 25109: /*!*******************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/scheduler/r1/timezone_calculator/calculator.js ***! \*******************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.TimeZoneCalculator = void 0; var _date = (e = __webpack_require__( /*! ../../../../core/utils/date */ 41380), e && e.__esModule ? e : { default: e }); var e; var _type = __webpack_require__( /*! ../../../../core/utils/type */ 11528); var _date2 = __webpack_require__( /*! ../../../core/utils/date */ 55594); const toMs = _date.default.dateToMilliseconds; exports.TimeZoneCalculator = class { constructor(options) { this.options = options } createDate(sourceDate, path, appointmentTimeZone) { const date = new Date(sourceDate); switch (path) { case "toAppointment": return this.getConvertedDate(date, appointmentTimeZone, false); case "fromAppointment": return this.getConvertedDate(date, appointmentTimeZone, true); case "toGrid": return this.getConvertedDate(date, void 0, false); case "fromGrid": return this.getConvertedDate(date, void 0, true); default: throw new Error("not specified pathTimeZoneConversion") } } getOffsets(date, appointmentTimezone) { const clientOffset = -this.getClientOffset(date) / _date.default.dateToMilliseconds("hour"); const commonOffset = this.getCommonOffset(date); const appointmentOffset = this.getAppointmentOffset(date, appointmentTimezone); return { client: clientOffset, common: !(0, _type.isDefined)(commonOffset) ? clientOffset : commonOffset, appointment: "number" !== typeof appointmentOffset ? clientOffset : appointmentOffset } } getOriginStartDateOffsetInMs(date, timezone, isUTCDate) { const offsetInHours = this.getOffsetInHours(date, timezone, isUTCDate); return 36e5 * offsetInHours } getOffsetInHours(date, timezone, isUTCDate) { const { client: client, appointment: appointment, common: common } = this.getOffsets(date, timezone); if (!!timezone && isUTCDate) { return appointment - client } if (!!timezone && !isUTCDate) { return appointment - common } if (!timezone && isUTCDate) { return common - client } return 0 } getClientOffset(date) { return this.options.getClientOffset(date) } getCommonOffset(date) { return this.options.tryGetCommonOffset(date) } getAppointmentOffset(date, appointmentTimezone) { return this.options.tryGetAppointmentOffset(date, appointmentTimezone) } getConvertedDate(date, appointmentTimezone, isBack) { const newDate = new Date(date.getTime()); const offsets = this.getOffsets(newDate, appointmentTimezone); const targetOffsetName = appointmentTimezone ? "appointment" : "common"; const direction = isBack ? -1 : 1; return _date2.dateUtilsTs.addOffsets(newDate, [direction * toMs("hour") * offsets[targetOffsetName], -direction * toMs("hour") * offsets.client]) } } }, 97777: /*!**************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/scheduler/r1/timezone_calculator/index.js ***! \**************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "TimeZoneCalculator", { enumerable: true, get: function() { return _calculator.TimeZoneCalculator } }); Object.defineProperty(exports, "createTimeZoneCalculator", { enumerable: true, get: function() { return _utils.createTimeZoneCalculator } }); var _calculator = __webpack_require__( /*! ./calculator */ 25109); var _utils = __webpack_require__( /*! ./utils */ 88476) }, 88476: /*!**************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/scheduler/r1/timezone_calculator/utils.js ***! \**************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.createTimeZoneCalculator = void 0; var _m_utils_time_zone = (e = __webpack_require__( /*! ../../m_utils_time_zone */ 18648), e && e.__esModule ? e : { default: e }); var e; var _calculator = __webpack_require__( /*! ./calculator */ 25109); exports.createTimeZoneCalculator = currentTimeZone => new _calculator.TimeZoneCalculator({ getClientOffset: date => _m_utils_time_zone.default.getClientTimezoneOffset(date), tryGetCommonOffset: date => _m_utils_time_zone.default.calculateTimezoneByValue(currentTimeZone, date), tryGetAppointmentOffset: (date, appointmentTimezone) => _m_utils_time_zone.default.calculateTimezoneByValue(appointmentTimezone, date) }) }, 64722: /*!*************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/scheduler/r1/utils/agenda.js ***! \*************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.calculateStartViewDate = void 0; var _base = __webpack_require__( /*! ./base */ 44611); exports.calculateStartViewDate = (currentDate, startDayHour) => { const validCurrentDate = new Date(currentDate); return (0, _base.setOptionHour)(validCurrentDate, startDayHour) } }, 44611: /*!***********************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/scheduler/r1/utils/base.js ***! \***********************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.splitNumber = exports.setOptionHour = exports.isVerticalGroupingApplied = exports.isTimelineView = exports.isHorizontalView = exports.isHorizontalGroupingApplied = exports.isGroupingByDate = exports.isFirstCellInMonthWithIntervalCount = exports.isDateInRange = exports.isDateAndTimeView = exports.isDataOnWeekend = exports.isAppointmentTakesAllDay = exports.getWeekendsCount = exports.getViewStartByOptions = exports.getVerticalGroupCountClass = exports.getValidCellDateForLocalTimeFormat = exports.getTotalRowCountByCompleteData = exports.getTotalCellCountByCompleteData = exports.getToday = exports.getStartViewDateWithoutDST = exports.getStartViewDateTimeOffset = exports.getSkippedHoursInRange = exports.getOverflowIndicatorColor = exports.getKeyByGroup = exports.getIsGroupedAllDayPanel = exports.getHorizontalGroupCount = exports.getHeaderCellText = exports.getGroupPanelData = exports.getDisplayedRowCount = exports.getDisplayedCellCount = exports.getDatesWithoutTime = exports.getCellDuration = exports.getCalculatedFirstDayOfWeek = exports.getAppointmentKey = exports.extendGroupItemsForGroupingByDate = exports.calculateViewStartDate = exports.calculateIsGroupedAllDayPanel = exports.calculateDayDuration = exports.calculateCellIndex = void 0; var _date = _interopRequireDefault(__webpack_require__( /*! ../../../../common/core/localization/date */ 38662)); var _date2 = _interopRequireDefault(__webpack_require__( /*! ../../../../core/utils/date */ 41380)); var _type = __webpack_require__( /*! ../../../../core/utils/type */ 11528); var _date3 = __webpack_require__( /*! ../../../core/utils/date */ 55594); var _constants = __webpack_require__( /*! ../../constants */ 25307); var _m_classes = __webpack_require__( /*! ../../m_classes */ 80126); var _m_utils_time_zone = _interopRequireDefault(__webpack_require__( /*! ../../m_utils_time_zone */ 18648)); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } function _extends() { return _extends = Object.assign ? Object.assign.bind() : function(n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) { ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]) } } return n }, _extends.apply(null, arguments) } const toMs = _date2.default.dateToMilliseconds; exports.getDatesWithoutTime = (min, max) => { const newMin = _date2.default.trimTime(min); const newMax = _date2.default.trimTime(max); newMax.setDate(newMax.getDate() + 1); return [newMin, newMax] }; exports.isAppointmentTakesAllDay = (appointmentAdapter, allDayPanelMode) => { const { startDate: startDate, endDate: endDate, allDay: allDay } = appointmentAdapter; switch (allDayPanelMode) { case "hidden": return false; case "allDay": return allDay; default: if (allDay) { return true } if (!(0, _type.isDefined)(endDate)) { return false } return ((startDate, endDate) => Math.floor((endDate.getTime() - startDate.getTime()) / toMs("hour")))(startDate, endDate) >= 24 } }; exports.getAppointmentKey = geometry => { const { left: left, top: top, width: width, height: height } = geometry; return `${left}-${top}-${width}-${height}` }; exports.getOverflowIndicatorColor = (color, colors) => !colors.length || 0 === colors.filter((item => item !== color)).length ? color : void 0; exports.getVerticalGroupCountClass = groups => { switch (null === groups || void 0 === groups ? void 0 : groups.length) { case 1: return _m_classes.VERTICAL_GROUP_COUNT_CLASSES[0]; case 2: return _m_classes.VERTICAL_GROUP_COUNT_CLASSES[1]; case 3: return _m_classes.VERTICAL_GROUP_COUNT_CLASSES[2]; default: return } }; exports.setOptionHour = (date, optionHour) => { const nextDate = new Date(date); if (!(0, _type.isDefined)(optionHour)) { return nextDate } nextDate.setHours(optionHour, optionHour % 1 * 60, 0, 0); return nextDate }; const calculateDayDuration = (startDayHour, endDayHour) => endDayHour - startDayHour; exports.calculateDayDuration = calculateDayDuration; const getStartViewDateTimeOffset = (startViewDate, startDayHour) => { const validStartDayHour = Math.floor(startDayHour); const isDSTChange = _m_utils_time_zone.default.isTimezoneChangeInDate(startViewDate); if (isDSTChange && validStartDayHour !== startViewDate.getHours()) { return _date2.default.dateToMilliseconds("hour") } return 0 }; exports.getStartViewDateTimeOffset = getStartViewDateTimeOffset; exports.getValidCellDateForLocalTimeFormat = (date, _ref) => { let { startViewDate: startViewDate, startDayHour: startDayHour, cellIndexShift: cellIndexShift, viewOffset: viewOffset } = _ref; const originDate = _date3.dateUtilsTs.addOffsets(date, [-viewOffset]); const localTimeZoneChangedInOriginDate = _m_utils_time_zone.default.isTimezoneChangeInDate(originDate); if (!localTimeZoneChangedInOriginDate) { return date } const startViewDateWithoutDST = new Date(new Date(startViewDate).setDate(startViewDate.getDate() + 2)); const startViewDateOffset = getStartViewDateTimeOffset(startViewDate, startDayHour); return _date3.dateUtilsTs.addOffsets(startViewDateWithoutDST, [viewOffset, cellIndexShift, -startViewDateOffset]) }; const getTotalCellCountByCompleteData = completeData => completeData[completeData.length - 1].length; exports.getTotalCellCountByCompleteData = getTotalCellCountByCompleteData; exports.getDisplayedCellCount = (displayedCellCount, completeData) => displayedCellCount ?? getTotalCellCountByCompleteData(completeData); exports.getHeaderCellText = (headerIndex, date, headerCellTextFormat, getDateForHeaderText, additionalOptions) => { const validDate = getDateForHeaderText(headerIndex, date, additionalOptions); return _date.default.format(validDate, headerCellTextFormat) }; const isVerticalGroupingApplied = (groups, groupOrientation) => groupOrientation === _constants.VERTICAL_GROUP_ORIENTATION && !!groups.length; exports.isVerticalGroupingApplied = isVerticalGroupingApplied; exports.getHorizontalGroupCount = (groupLeafs, groupOrientation) => { const isVerticalGrouping = isVerticalGroupingApplied(groupLeafs, groupOrientation); return isVerticalGrouping ? 1 : groupLeafs.length }; exports.isTimelineView = viewType => Boolean(viewType && _constants.TIMELINE_VIEWS.includes(viewType)); exports.isDateAndTimeView = viewType => viewType !== _constants.VIEWS.TIMELINE_MONTH && viewType !== _constants.VIEWS.MONTH; exports.isHorizontalView = viewType => { switch (viewType) { case _constants.VIEWS.TIMELINE_DAY: case _constants.VIEWS.TIMELINE_WEEK: case _constants.VIEWS.TIMELINE_WORK_WEEK: case _constants.VIEWS.TIMELINE_MONTH: case _constants.VIEWS.MONTH: return true; default: return false } }; const isDateInRange = (date, startDate, endDate, diff) => diff > 0 ? _date2.default.dateInRange(date, startDate, new Date(endDate.getTime() - 1)) : _date2.default.dateInRange(date, endDate, startDate, "date"); exports.isDateInRange = isDateInRange; exports.isFirstCellInMonthWithIntervalCount = (cellDate, intervalCount) => 1 === cellDate.getDate() && intervalCount > 1; exports.getViewStartByOptions = (startDate, currentDate, intervalDuration, startViewDate) => { if (!startDate) { return new Date(currentDate) } let currentStartDate = _date2.default.trimTime(startViewDate); const diff = currentStartDate.getTime() <= currentDate.getTime() ? 1 : -1; let endDate = new Date(currentStartDate.getTime() + intervalDuration * diff); while (!isDateInRange(currentDate, currentStartDate, endDate, diff)) { currentStartDate = endDate; endDate = new Date(currentStartDate.getTime() + intervalDuration * diff) } return diff > 0 ? currentStartDate : endDate }; exports.calculateIsGroupedAllDayPanel = (groups, groupOrientation, isAllDayPanelVisible) => isVerticalGroupingApplied(groups, groupOrientation) && isAllDayPanelVisible; exports.calculateViewStartDate = startDateOption => startDateOption; exports.getCellDuration = (viewType, startDayHour, endDayHour, hoursInterval) => { switch (viewType) { case "month": return 36e5 * calculateDayDuration(startDayHour, endDayHour); case "timelineMonth": return _date2.default.dateToMilliseconds("day"); default: return 36e5 * hoursInterval } }; exports.calculateCellIndex = (rowIndex, columnIndex, rowCount) => columnIndex * rowCount + rowIndex; const getTotalRowCountByCompleteData = completeData => completeData.length; exports.getTotalRowCountByCompleteData = getTotalRowCountByCompleteData; exports.getDisplayedRowCount = (displayedRowCount, completeData) => displayedRowCount ?? getTotalRowCountByCompleteData(completeData); exports.getStartViewDateWithoutDST = (startViewDate, startDayHour) => { const newStartViewDate = _m_utils_time_zone.default.getDateWithoutTimezoneChange(startViewDate); newStartViewDate.setHours(startDayHour); return newStartViewDate }; exports.getIsGroupedAllDayPanel = (hasAllDayRow, isVerticalGrouping) => hasAllDayRow && isVerticalGrouping; exports.getKeyByGroup = (groupIndex, isVerticalGrouping) => { if (isVerticalGrouping && !!groupIndex) { return groupIndex.toString() } return "0" }; exports.getToday = (indicatorTime, timeZoneCalculator) => { const todayDate = indicatorTime ?? new Date; return (null === timeZoneCalculator || void 0 === timeZoneCalculator ? void 0 : timeZoneCalculator.createDate(todayDate, "toGrid")) || todayDate }; exports.getCalculatedFirstDayOfWeek = firstDayOfWeekOption => (0, _type.isDefined)(firstDayOfWeekOption) ? firstDayOfWeekOption : _date.default.firstDayOfWeekIndex(); const isHorizontalGroupingApplied = (groups, groupOrientation) => groupOrientation === _constants.HORIZONTAL_GROUP_ORIENTATION && !!groups.length; exports.isHorizontalGroupingApplied = isHorizontalGroupingApplied; exports.isGroupingByDate = (groups, groupOrientation, groupByDate) => { const isHorizontalGrouping = isHorizontalGroupingApplied(groups, groupOrientation); return groupByDate && isHorizontalGrouping }; exports.getSkippedHoursInRange = (startDate, endDate, allDay, viewDataProvider) => { const isAllDay = allDay && !viewDataProvider.viewType.includes("timeline"); let result = 0; const currentDate = new Date(startDate); currentDate.setDate(currentDate.getDate() + 1); currentDate.setHours(0, 0, 0, 0); const endDateWithStartHour = new Date(endDate); endDateWithStartHour.setHours(0, 0, 0, 0); const { startDayHour: startDayHour, endDayHour: endDayHour } = viewDataProvider.getViewOptions(); const dayHours = isAllDay ? 24 : endDayHour - startDayHour; while (currentDate < endDateWithStartHour) { if (viewDataProvider.isSkippedDate(currentDate)) { result += dayHours } currentDate.setDate(currentDate.getDate() + 1) } const startDateHours = startDate.getHours(); const endDateHours = endDate.getHours() + endDate.getTime() % 36e5 / 36e5; if (viewDataProvider.isSkippedDate(startDate)) { if (isAllDay) { result += 24 } else if (startDateHours < startDayHour) { result += dayHours } else if (startDateHours < endDayHour) { result += endDayHour - startDateHours } } if (viewDataProvider.isSkippedDate(endDate)) { if (isAllDay) { result += 24 } else if (endDateHours > endDayHour) { result += dayHours } else if (endDateHours > startDayHour) { result += endDateHours - startDayHour } } return result }; exports.isDataOnWeekend = date => { const day = date.getDay(); return 6 === day || 0 === day }; exports.getWeekendsCount = days => 2 * Math.floor(days / 7); const extendGroupItemsForGroupingByDate = (groupRenderItems, columnCountPerGroup) => [...new Array(columnCountPerGroup)].reduce(((currentGroupItems, _, index) => groupRenderItems.map(((groupsRow, rowIndex) => { const currentRow = currentGroupItems[rowIndex] || []; return [...currentRow, ...groupsRow.map(((item, columnIndex) => _extends({}, item, { key: `${item.key}_group_by_date_${index}`, isFirstGroupCell: 0 === columnIndex, isLastGroupCell: columnIndex === groupsRow.length - 1 })))] }))), []); exports.extendGroupItemsForGroupingByDate = extendGroupItemsForGroupingByDate; const stringifyId = id => (0, _type.isObject)(id) ? JSON.stringify(id) : String(id); exports.getGroupPanelData = (groupResources, columnCountPerGroup, groupByDate, baseColSpan) => { let repeatCount = 1; let groupPanelItems = groupResources.map((group => { const result = []; const { resourceName: resourceName, resourceIndex: resourceIndex, items: items, data: data } = group; for (let i = 0; i < repeatCount; i += 1) { result.push(...items.map(((_ref2, index) => { let { id: id, text: text, color: color } = _ref2; return { id: id, text: text, color: color, key: `${i}_${resourceIndex}_${stringifyId(id)}`, resourceName: resourceName, data: null === data || void 0 === data ? void 0 : data[index] } }))) } repeatCount *= items.length; return result })).filter((group => group.length)); if (groupByDate) { groupPanelItems = extendGroupItemsForGroupingByDate(groupPanelItems, columnCountPerGroup) } return { groupPanelItems: groupPanelItems, baseColSpan: baseColSpan } }; exports.splitNumber = (value, splitValue) => Array.from({ length: Math.ceil(value / splitValue) }, ((_, index) => Math.min(value - splitValue * index, splitValue))) }, 69082: /*!**********************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/scheduler/r1/utils/day.js ***! \**********************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.calculateStartViewDate = void 0; var _base = __webpack_require__( /*! ./base */ 44611); exports.calculateStartViewDate = (currentDate, startDayHour, startDate, intervalDuration) => { const firstViewDate = (0, _base.getViewStartByOptions)(startDate, currentDate, intervalDuration, startDate); return (0, _base.setOptionHour)(firstViewDate, startDayHour) } }, 98090: /*!******************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/scheduler/r1/utils/exclude_from_recurrence.js ***! \******************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.excludeFromRecurrence = void 0; var _date_serialization = (e = __webpack_require__( /*! ../../../../core/utils/date_serialization */ 71051), e && e.__esModule ? e : { default: e }); var e; var _appointment_adapter = __webpack_require__( /*! ../../utils/appointment_adapter/appointment_adapter */ 36791); function _extends() { return _extends = Object.assign ? Object.assign.bind() : function(n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) { ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]) } } return n }, _extends.apply(null, arguments) } const createRecurrenceException = (appointmentAdapter, exceptionDate) => { const result = []; if (appointmentAdapter.recurrenceException) { result.push(appointmentAdapter.recurrenceException) } result.push(((date, startDate, isAllDay) => { if (isAllDay) { date.setHours(startDate.getHours(), startDate.getMinutes(), startDate.getSeconds(), startDate.getMilliseconds()) } return _date_serialization.default.serializeDate(date, "yyyyMMddTHHmmssZ") })(exceptionDate, appointmentAdapter.startDate, appointmentAdapter.allDay)); return result.join() }; exports.excludeFromRecurrence = (appointment, exceptionDate, dataAccessors) => { const appointmentAdapter = new _appointment_adapter.AppointmentAdapter(_extends({}, appointment), dataAccessors); appointmentAdapter.recurrenceException = createRecurrenceException(appointmentAdapter, exceptionDate); return appointmentAdapter } }, 28524: /*!*********************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/scheduler/r1/utils/format_weekday.js ***! \*********************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.formatWeekdayAndDay = exports.formatWeekday = void 0; var _date = (e = __webpack_require__( /*! ../../../../common/core/localization/date */ 38662), e && e.__esModule ? e : { default: e }); var e; const formatWeekday = date => _date.default.getDayNames("abbreviated")[date.getDay()]; exports.formatWeekday = formatWeekday; exports.formatWeekdayAndDay = date => `${formatWeekday(date)} ${_date.default.format(date,"day")}` }, 94626: /*!*********************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/scheduler/r1/utils/get_appointment_data_items.js ***! \*********************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.replaceIncorrectEndDate = exports.getAppointmentDataItems = void 0; var _type = __webpack_require__( /*! ../../../../core/utils/type */ 11528); var _date = __webpack_require__( /*! ../../../core/utils/date */ 55594); var _m_date = __webpack_require__( /*! ../../../core/utils/m_date */ 66570); var _appointment_adapter = __webpack_require__( /*! ../../utils/appointment_adapter/appointment_adapter */ 36791); const toMs = _m_date.dateUtils.dateToMilliseconds; const replaceIncorrectEndDate = (rawAppointment, appointmentMinDuration, dataAccessors) => { const startDate = dataAccessors.get("startDate", rawAppointment); const endDate = dataAccessors.get("endDate", rawAppointment); if (!_date.dateUtilsTs.isValidDate(startDate)) { return false } const isEndDateIncorrect = !_date.dateUtilsTs.isValidDate(endDate) || startDate.getTime() > endDate.getTime(); if (isEndDateIncorrect) { const isAllDay = dataAccessors.get("allDay", rawAppointment); const correctedEndDate = isAllDay ? _m_date.dateUtils.setToDayEnd(new Date(startDate)) : new Date(startDate.getTime() + appointmentMinDuration * toMs("minute")); dataAccessors.set("endDate", rawAppointment, correctedEndDate) } return true }; exports.replaceIncorrectEndDate = replaceIncorrectEndDate; exports.getAppointmentDataItems = (dataItems, dataAccessors, cellDurationInMinutes, timeZoneCalculator) => { const result = []; null === dataItems || void 0 === dataItems || dataItems.forEach((rawAppointment => { const isAppointmentSafe = replaceIncorrectEndDate(rawAppointment, cellDurationInMinutes, dataAccessors); if (!isAppointmentSafe) { return } const adapter = new _appointment_adapter.AppointmentAdapter(rawAppointment, dataAccessors); const { startDate: startDate, endDate: endDate } = adapter.getCalculatedDates(timeZoneCalculator, "toGrid"); const { recurrenceRule: recurrenceRule } = adapter; const hasRecurrenceRule = adapter.isRecurrent; const visible = (0, _type.isDefined)(rawAppointment.visible) ? Boolean(rawAppointment.visible) : true; result.push({ allDay: Boolean(adapter.allDay), startDate: startDate, startDateTimeZone: rawAppointment.startDateTimeZone, endDate: endDate, endDateTimeZone: rawAppointment.endDateTimeZone, recurrenceRule: recurrenceRule, recurrenceException: adapter.recurrenceException, hasRecurrenceRule: hasRecurrenceRule, visible: visible, rawAppointment: rawAppointment }) })); return result } }, 34396: /*!************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/scheduler/r1/utils/index.js ***! \************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.agendaUtils = void 0; Object.defineProperty(exports, "calculateCellIndex", { enumerable: true, get: function() { return _base.calculateCellIndex } }); Object.defineProperty(exports, "calculateDayDuration", { enumerable: true, get: function() { return _base.calculateDayDuration } }); Object.defineProperty(exports, "calculateIsGroupedAllDayPanel", { enumerable: true, get: function() { return _base.calculateIsGroupedAllDayPanel } }); Object.defineProperty(exports, "calculateViewStartDate", { enumerable: true, get: function() { return _base.calculateViewStartDate } }); exports.dayUtils = void 0; Object.defineProperty(exports, "excludeFromRecurrence", { enumerable: true, get: function() { return _exclude_from_recurrence.excludeFromRecurrence } }); Object.defineProperty(exports, "extendGroupItemsForGroupingByDate", { enumerable: true, get: function() { return _base.extendGroupItemsForGroupingByDate } }); Object.defineProperty(exports, "formatWeekday", { enumerable: true, get: function() { return _format_weekday.formatWeekday } }); Object.defineProperty(exports, "formatWeekdayAndDay", { enumerable: true, get: function() { return _format_weekday.formatWeekdayAndDay } }); Object.defineProperty(exports, "getAppointmentDataItems", { enumerable: true, get: function() { return _get_appointment_data_items.getAppointmentDataItems } }); Object.defineProperty(exports, "getAppointmentKey", { enumerable: true, get: function() { return _base.getAppointmentKey } }); Object.defineProperty(exports, "getCalculatedFirstDayOfWeek", { enumerable: true, get: function() { return _base.getCalculatedFirstDayOfWeek } }); Object.defineProperty(exports, "getCellDuration", { enumerable: true, get: function() { return _base.getCellDuration } }); Object.defineProperty(exports, "getDatesWithoutTime", { enumerable: true, get: function() { return _base.getDatesWithoutTime } }); Object.defineProperty(exports, "getDisplayedCellCount", { enumerable: true, get: function() { return _base.getDisplayedCellCount } }); Object.defineProperty(exports, "getDisplayedRowCount", { enumerable: true, get: function() { return _base.getDisplayedRowCount } }); Object.defineProperty(exports, "getGroupPanelData", { enumerable: true, get: function() { return _base.getGroupPanelData } }); Object.defineProperty(exports, "getHeaderCellText", { enumerable: true, get: function() { return _base.getHeaderCellText } }); Object.defineProperty(exports, "getHorizontalGroupCount", { enumerable: true, get: function() { return _base.getHorizontalGroupCount } }); Object.defineProperty(exports, "getIsGroupedAllDayPanel", { enumerable: true, get: function() { return _base.getIsGroupedAllDayPanel } }); Object.defineProperty(exports, "getKeyByGroup", { enumerable: true, get: function() { return _base.getKeyByGroup } }); Object.defineProperty(exports, "getOverflowIndicatorColor", { enumerable: true, get: function() { return _base.getOverflowIndicatorColor } }); Object.defineProperty(exports, "getSkippedHoursInRange", { enumerable: true, get: function() { return _base.getSkippedHoursInRange } }); Object.defineProperty(exports, "getStartViewDateTimeOffset", { enumerable: true, get: function() { return _base.getStartViewDateTimeOffset } }); Object.defineProperty(exports, "getStartViewDateWithoutDST", { enumerable: true, get: function() { return _base.getStartViewDateWithoutDST } }); Object.defineProperty(exports, "getToday", { enumerable: true, get: function() { return _base.getToday } }); Object.defineProperty(exports, "getTotalCellCountByCompleteData", { enumerable: true, get: function() { return _base.getTotalCellCountByCompleteData } }); Object.defineProperty(exports, "getTotalRowCountByCompleteData", { enumerable: true, get: function() { return _base.getTotalRowCountByCompleteData } }); Object.defineProperty(exports, "getValidCellDateForLocalTimeFormat", { enumerable: true, get: function() { return _base.getValidCellDateForLocalTimeFormat } }); Object.defineProperty(exports, "getVerticalGroupCountClass", { enumerable: true, get: function() { return _base.getVerticalGroupCountClass } }); Object.defineProperty(exports, "getViewStartByOptions", { enumerable: true, get: function() { return _base.getViewStartByOptions } }); Object.defineProperty(exports, "getWeekendsCount", { enumerable: true, get: function() { return _base.getWeekendsCount } }); Object.defineProperty(exports, "isAppointmentTakesAllDay", { enumerable: true, get: function() { return _base.isAppointmentTakesAllDay } }); Object.defineProperty(exports, "isDataOnWeekend", { enumerable: true, get: function() { return _base.isDataOnWeekend } }); Object.defineProperty(exports, "isDateAndTimeView", { enumerable: true, get: function() { return _base.isDateAndTimeView } }); Object.defineProperty(exports, "isDateInRange", { enumerable: true, get: function() { return _base.isDateInRange } }); Object.defineProperty(exports, "isFirstCellInMonthWithIntervalCount", { enumerable: true, get: function() { return _base.isFirstCellInMonthWithIntervalCount } }); Object.defineProperty(exports, "isGroupingByDate", { enumerable: true, get: function() { return _base.isGroupingByDate } }); Object.defineProperty(exports, "isHorizontalGroupingApplied", { enumerable: true, get: function() { return _base.isHorizontalGroupingApplied } }); Object.defineProperty(exports, "isHorizontalView", { enumerable: true, get: function() { return _base.isHorizontalView } }); Object.defineProperty(exports, "isTimelineView", { enumerable: true, get: function() { return _base.isTimelineView } }); Object.defineProperty(exports, "isVerticalGroupingApplied", { enumerable: true, get: function() { return _base.isVerticalGroupingApplied } }); exports.renderUtils = exports.monthUtils = void 0; Object.defineProperty(exports, "setOptionHour", { enumerable: true, get: function() { return _base.setOptionHour } }); Object.defineProperty(exports, "splitNumber", { enumerable: true, get: function() { return _base.splitNumber } }); exports.workWeekUtils = exports.weekUtils = exports.viewsUtils = exports.timelineWeekUtils = exports.timelineMonthUtils = exports.themeUtils = void 0; var _themes = __webpack_require__( /*! ../../../scheduler/r1/utils/themes */ 3108); var _agenda = __webpack_require__( /*! ./agenda */ 64722); var _day = __webpack_require__( /*! ./day */ 69082); var _month = __webpack_require__( /*! ./month */ 82722); var _render = __webpack_require__( /*! ./render */ 33930); var _timeline_month = __webpack_require__( /*! ./timeline_month */ 98616); var _timeline_week = __webpack_require__( /*! ./timeline_week */ 13516); var _views = __webpack_require__( /*! ./views */ 22150); var _week = __webpack_require__( /*! ./week */ 3962); var _work_week = __webpack_require__( /*! ./work_week */ 19442); var _base = __webpack_require__( /*! ./base */ 44611); var _exclude_from_recurrence = __webpack_require__( /*! ./exclude_from_recurrence */ 98090); var _format_weekday = __webpack_require__( /*! ./format_weekday */ 28524); var _get_appointment_data_items = __webpack_require__( /*! ./get_appointment_data_items */ 94626); exports.agendaUtils = { calculateStartViewDate: _agenda.calculateStartViewDate }; exports.dayUtils = { calculateStartViewDate: _day.calculateStartViewDate }; exports.weekUtils = { getIntervalDuration: _week.getIntervalDuration, getTimePanelCellText: _week.getTimePanelCellText, calculateStartViewDate: _week.calculateStartViewDate, calculateViewStartDate: _week.calculateViewStartDate }; exports.workWeekUtils = { calculateStartViewDate: _work_week.calculateStartViewDate }; exports.monthUtils = { getViewStartByOptions: _month.getViewStartByOptions, getCellText: _month.getCellText, calculateCellIndex: _month.calculateCellIndex, calculateStartViewDate: _month.calculateStartViewDate }; exports.timelineWeekUtils = { getDateForHeaderText: _timeline_week.getDateForHeaderText }; exports.timelineMonthUtils = { calculateStartViewDate: _timeline_month.calculateStartViewDate }; exports.viewsUtils = { getCurrentView: _views.getCurrentView }; exports.renderUtils = { addToStyles: _render.addToStyles, addWidthToStyle: _render.addWidthToStyle, addHeightToStyle: _render.addHeightToStyle, getGroupCellClasses: _render.getGroupCellClasses, getCellSizeHorizontalClass: _render.getCellSizeHorizontalClass, getCellSizeVerticalClass: _render.getCellSizeVerticalClass }; exports.themeUtils = { getThemeType: _themes.getThemeType } }, 82722: /*!************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/scheduler/r1/utils/month.js ***! \************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.getViewStartByOptions = exports.getCellText = exports.calculateStartViewDate = exports.calculateCellIndex = void 0; var _date = _interopRequireDefault(__webpack_require__( /*! ../../../../common/core/localization/date */ 38662)); var _date2 = _interopRequireDefault(__webpack_require__( /*! ../../../../core/utils/date */ 41380)); var _base = __webpack_require__( /*! ./base */ 44611); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } exports.calculateCellIndex = (rowIndex, columnIndex, _, columnCount) => rowIndex * columnCount + columnIndex; const getViewStartByOptions = (startDate, currentDate, intervalCount, startViewDate) => { if (!startDate) { return new Date(currentDate) } let currentStartDate = new Date(startViewDate); const validStartViewDate = new Date(startViewDate); const diff = currentStartDate.getTime() <= currentDate.getTime() ? 1 : -1; let endDate = new Date(new Date(validStartViewDate.setMonth(validStartViewDate.getMonth() + diff * intervalCount))); while (!(0, _base.isDateInRange)(currentDate, currentStartDate, endDate, diff)) { currentStartDate = new Date(endDate); if (diff > 0) { currentStartDate.setDate(1) } endDate = new Date(new Date(endDate.setMonth(endDate.getMonth() + diff * intervalCount))) } return diff > 0 ? currentStartDate : endDate }; exports.getViewStartByOptions = getViewStartByOptions; exports.getCellText = (date, intervalCount) => { if ((0, _base.isFirstCellInMonthWithIntervalCount)(date, intervalCount)) { const monthName = _date.default.getMonthNames("abbreviated")[date.getMonth()]; return [monthName, _date.default.format(date, "day")].join(" ") } return _date.default.format(date, "dd") }; exports.calculateStartViewDate = (currentDate, startDayHour, startDate, intervalCount, firstDayOfWeekOption) => { const viewStart = getViewStartByOptions(startDate, currentDate, intervalCount, _date2.default.getFirstMonthDate(startDate)); const firstMonthDate = _date2.default.getFirstMonthDate(viewStart); const firstDayOfWeek = (0, _base.getCalculatedFirstDayOfWeek)(firstDayOfWeekOption); const firstViewDate = _date2.default.getFirstWeekDate(firstMonthDate, firstDayOfWeek); return (0, _base.setOptionHour)(firstViewDate, startDayHour) } }, 33930: /*!*************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/scheduler/r1/utils/render.js ***! \*************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.getGroupCellClasses = exports.getCellSizeVerticalClass = exports.getCellSizeHorizontalClass = exports.addWidthToStyle = exports.addToStyles = exports.addHeightToStyle = void 0; var _render_utils = __webpack_require__( /*! ../../../core/r1/utils/render_utils */ 71312); function _extends() { return _extends = Object.assign ? Object.assign.bind() : function(n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) { ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]) } } return n }, _extends.apply(null, arguments) } const addToStyles = (options, style) => { const nextStyle = style ?? {}; const result = _extends({}, nextStyle); options.forEach((_ref => { let { attr: attr, value: value } = _ref; result[attr] = value || nextStyle[attr] })); return result }; exports.addToStyles = addToStyles; exports.addWidthToStyle = (value, style) => { const width = value ? `${value}px` : ""; return addToStyles([{ attr: "width", value: width }], style) }; exports.addHeightToStyle = (value, style) => { const height = value ? `${value}px` : ""; return addToStyles([{ attr: "height", value: height }], style) }; exports.getGroupCellClasses = function() { let isFirstGroupCell = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : false; let isLastGroupCell = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : false; let className = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : ""; return (0, _render_utils.combineClasses)({ "dx-scheduler-first-group-cell": isFirstGroupCell, "dx-scheduler-last-group-cell": isLastGroupCell, [className]: true }) }; exports.getCellSizeHorizontalClass = (viewType, crossScrollingEnabled) => { switch (viewType) { case "day": case "week": case "workWeek": case "month": return crossScrollingEnabled ? "dx-scheduler-cell-sizes-horizontal" : ""; default: return "dx-scheduler-cell-sizes-horizontal" } }; exports.getCellSizeVerticalClass = isAllDayCell => !isAllDayCell ? "dx-scheduler-cell-sizes-vertical" : "" }, 3108: /*!*************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/scheduler/r1/utils/themes.js ***! \*************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.getThemeType = void 0; var _themes = __webpack_require__( /*! ../../../../ui/themes */ 52071); exports.getThemeType = () => { const theme = (0, _themes.current)(); return { isCompact: (0, _themes.isCompact)(theme), isMaterial: (0, _themes.isMaterial)(theme), isFluent: (0, _themes.isFluent)(theme), isMaterialBased: (0, _themes.isMaterialBased)(theme) } } }, 98616: /*!*********************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/scheduler/r1/utils/timeline_month.js ***! \*********************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.calculateStartViewDate = void 0; var _date = (e = __webpack_require__( /*! ../../../../core/utils/date */ 41380), e && e.__esModule ? e : { default: e }); var e; var _base = __webpack_require__( /*! ./base */ 44611); var _month = __webpack_require__( /*! ./month */ 82722); exports.calculateStartViewDate = (currentDate, startDayHour, startDate, intervalCount) => { const firstViewDate = _date.default.getFirstMonthDate((0, _month.getViewStartByOptions)(startDate, currentDate, intervalCount, _date.default.getFirstMonthDate(startDate))); return (0, _base.setOptionHour)(firstViewDate, startDayHour) } }, 13516: /*!********************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/scheduler/r1/utils/timeline_week.js ***! \********************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.getDateForHeaderText = void 0; var _base = __webpack_require__( /*! ./base */ 44611); exports.getDateForHeaderText = (index, date, _ref) => { let { startDayHour: startDayHour, startViewDate: startViewDate, cellCountInDay: cellCountInDay, interval: interval, viewOffset: viewOffset } = _ref; return (0, _base.getValidCellDateForLocalTimeFormat)(date, { startViewDate: startViewDate, startDayHour: startDayHour, cellIndexShift: index % cellCountInDay * interval, viewOffset: viewOffset }) } }, 22150: /*!************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/scheduler/r1/utils/views.js ***! \************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.getCurrentView = void 0; var _type = __webpack_require__( /*! ../../../../core/utils/type */ 11528); var _constants = __webpack_require__( /*! ../../constants */ 25307); exports.getCurrentView = (currentView, views) => { let currentViewProps = views.find((view => { const names = (0, _type.isObject)(view) ? [view.name, view.type] : [view]; return names.includes(currentView) })); if (void 0 === currentViewProps) { if (_constants.VIEW_TYPES.includes(currentView)) { currentViewProps = currentView } else { [currentViewProps] = views } } return currentViewProps } }, 3962: /*!***********************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/scheduler/r1/utils/week.js ***! \***********************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.getValidStartDate = exports.getTimePanelCellText = exports.getIntervalDuration = exports.calculateViewStartDate = exports.calculateStartViewDate = void 0; var _date = _interopRequireDefault(__webpack_require__( /*! ../../../../common/core/localization/date */ 38662)); var _date2 = _interopRequireDefault(__webpack_require__( /*! ../../../../core/utils/date */ 41380)); var _base = __webpack_require__( /*! ./base */ 44611); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } exports.getTimePanelCellText = (rowIndex, date, startViewDate, cellDuration, startDayHour, viewOffset) => { if (rowIndex % 2 !== 0) { return "" } const validTimeDate = (0, _base.getValidCellDateForLocalTimeFormat)(date, { startViewDate: startViewDate, startDayHour: startDayHour, cellIndexShift: Math.round(cellDuration) * rowIndex, viewOffset: viewOffset }); return _date.default.format(validTimeDate, "shorttime") }; exports.getIntervalDuration = intervalCount => 7 * _date2.default.dateToMilliseconds("day") * intervalCount; const getValidStartDate = (startDate, firstDayOfWeek) => startDate ? _date2.default.getFirstWeekDate(startDate, firstDayOfWeek) : void 0; exports.getValidStartDate = getValidStartDate; exports.calculateStartViewDate = (currentDate, startDayHour, startDate, intervalDuration, firstDayOfWeekOption) => { const firstDayOfWeek = (0, _base.getCalculatedFirstDayOfWeek)(firstDayOfWeekOption); const viewStart = (0, _base.getViewStartByOptions)(startDate, currentDate, intervalDuration, getValidStartDate(startDate, firstDayOfWeek)); const firstViewDate = _date2.default.getFirstWeekDate(viewStart, firstDayOfWeek); return (0, _base.setOptionHour)(firstViewDate, startDayHour) }; exports.calculateViewStartDate = (startDateOption, firstDayOfWeek) => { const validFirstDayOfWeek = firstDayOfWeek ?? _date.default.firstDayOfWeekIndex(); return _date2.default.getFirstWeekDate(startDateOption, validFirstDayOfWeek) } }, 19442: /*!****************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/scheduler/r1/utils/work_week.js ***! \****************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.calculateStartViewDate = void 0; var _date = (e = __webpack_require__( /*! ../../../../core/utils/date */ 41380), e && e.__esModule ? e : { default: e }); var e; var _base = __webpack_require__( /*! ./base */ 44611); var _week = __webpack_require__( /*! ./week */ 3962); exports.calculateStartViewDate = (currentDate, startDayHour, startDate, intervalDuration, firstDayOfWeek) => { const viewStart = (0, _base.getViewStartByOptions)(startDate, currentDate, intervalDuration, (0, _week.getValidStartDate)(startDate, firstDayOfWeek)); const firstViewDate = _date.default.getFirstWeekDate(viewStart, firstDayOfWeek); if ((0, _base.isDataOnWeekend)(firstViewDate)) { const currentDay = firstViewDate.getDay(); const distance = (8 - currentDay) % 7; firstViewDate.setDate(firstViewDate.getDate() + distance) } return (0, _base.setOptionHour)(firstViewDate, startDayHour) } }, 40226: /*!***************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/scheduler/shaders/m_current_time_shader.js ***! \***************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _renderer = (e = __webpack_require__( /*! ../../../core/renderer */ 64553), e && e.__esModule ? e : { default: e }); var e; exports.default = class { constructor(_workSpace) { this._workSpace = _workSpace; this._$container = this._workSpace._dateTableScrollable.$content() } render() { this.initShaderElements(); this.renderShader(); this._shader.forEach((shader => { this._$container.append(shader) })) } initShaderElements() { this._$shader = this.createShader(); this._shader = []; this._shader.push(this._$shader) } renderShader() {} createShader() { return (0, _renderer.default)("
").addClass("dx-scheduler-date-time-shader") } clean() { this._$container && this._$container.find(".dx-scheduler-date-time-shader").remove() } } }, 18129: /*!**************************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/scheduler/shaders/m_current_time_shader_horizontal.js ***! \**************************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _position = __webpack_require__( /*! ../../../core/utils/position */ 41639); var _size = __webpack_require__( /*! ../../../core/utils/size */ 57653); var _m_current_time_shader = (e = __webpack_require__( /*! ./m_current_time_shader */ 40226), e && e.__esModule ? e : { default: e }); var e; class HorizontalCurrentTimeShader extends _m_current_time_shader.default { renderShader() { const groupCount = this._workSpace._isHorizontalGroupedWorkSpace() ? this._workSpace._getGroupCount() : 1; for (let i = 0; i < groupCount; i += 1) { const isFirstShader = 0 === i; const $shader = isFirstShader ? this._$shader : this.createShader(); if (this._workSpace.isGroupedByDate()) { this._customizeGroupedByDateShader($shader, i) } else { this._customizeShader($shader, i) }!isFirstShader && this._shader.push($shader) } } _customizeShader($shader, groupIndex) { const shaderWidth = this._workSpace.getIndicationWidth(); this._applyShaderWidth($shader, shaderWidth); if (groupIndex >= 1) { const workSpace = this._workSpace; const indicationWidth = workSpace._getCellCount() * workSpace.getCellWidth(); $shader.css("left", indicationWidth) } else { $shader.css("left", 0) } } _applyShaderWidth($shader, width) { const maxWidth = (0, _position.getBoundingRect)(this._$container.get(0)).width; if (width > maxWidth) { width = maxWidth } if (width > 0) { (0, _size.setWidth)($shader, width) } } _customizeGroupedByDateShader($shader, groupIndex) { const cellCount = this._workSpace.getIndicationCellCount(); const integerPart = Math.floor(cellCount); const fractionPart = cellCount - integerPart; const isFirstShaderPart = 0 === groupIndex; const workSpace = this._workSpace; const shaderWidth = isFirstShaderPart ? workSpace.getIndicationWidth() : fractionPart * workSpace.getCellWidth(); let shaderLeft; this._applyShaderWidth($shader, shaderWidth); if (isFirstShaderPart) { shaderLeft = workSpace._getCellCount() * workSpace.getCellWidth() * groupIndex } else { shaderLeft = workSpace.getCellWidth() * integerPart * workSpace._getGroupCount() + groupIndex * workSpace.getCellWidth() } $shader.css("left", shaderLeft) } } exports.default = HorizontalCurrentTimeShader }, 28471: /*!************************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/scheduler/shaders/m_current_time_shader_vertical.js ***! \************************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../../core/renderer */ 64553)); var _size = __webpack_require__( /*! ../../../core/utils/size */ 57653); var _m_current_time_shader = _interopRequireDefault(__webpack_require__( /*! ./m_current_time_shader */ 40226)); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } class VerticalCurrentTimeShader extends _m_current_time_shader.default { renderShader() { let shaderHeight = this._getShaderHeight(); const maxHeight = this._getShaderMaxHeight(); const isSolidShader = shaderHeight > maxHeight; if (shaderHeight > maxHeight) { shaderHeight = maxHeight }(0, _size.setHeight)(this._$shader, shaderHeight); const groupCount = this._workSpace._getGroupCount() || 1; if (this._workSpace.isGroupedByDate()) { this._renderGroupedByDateShaderParts(groupCount, shaderHeight, maxHeight, isSolidShader) } else { this._renderShaderParts(groupCount, shaderHeight, maxHeight, isSolidShader) } } _renderShaderParts(groupCount, shaderHeight, maxHeight, isSolidShader) { for (let i = 0; i < groupCount; i++) { const shaderWidth = this._getShaderWidth(i); this._renderTopShader(this._$shader, shaderHeight, shaderWidth, i); !isSolidShader && this._renderBottomShader(this._$shader, maxHeight, shaderHeight, shaderWidth, i); this._renderAllDayShader(shaderWidth, i) } } _renderGroupedByDateShaderParts(groupCount, shaderHeight, maxHeight, isSolidShader) { const shaderWidth = this._getShaderWidth(0); let bottomShaderWidth = shaderWidth - this._workSpace.getCellWidth(); if (shaderHeight < 0) { shaderHeight = 0; bottomShaderWidth = shaderWidth } this._renderTopShader(this._$shader, shaderHeight, shaderWidth * groupCount, 0); !isSolidShader && this._renderBottomShader(this._$shader, maxHeight, shaderHeight, bottomShaderWidth * groupCount + this._workSpace.getCellWidth(), 0); this._renderAllDayShader(shaderWidth * groupCount, 0) } _renderTopShader($shader, height, width, i) { this._$topShader = (0, _renderer.default)("
").addClass("dx-scheduler-date-time-shader-top"); if (width) { (0, _size.setWidth)(this._$topShader, width) } if (height) { (0, _size.setHeight)(this._$topShader, height) } this._$topShader.css("marginTop", this._getShaderTopOffset(i)); this._$topShader.css("left", this._getShaderOffset(i, width)); $shader.append(this._$topShader) } _renderBottomShader($shader, maxHeight, height, width, i) { this._$bottomShader = (0, _renderer.default)("
").addClass("dx-scheduler-date-time-shader-bottom"); const shaderWidth = height < 0 ? width : width - this._workSpace.getCellWidth(); const shaderHeight = height < 0 ? maxHeight : maxHeight - height; (0, _size.setWidth)(this._$bottomShader, shaderWidth); (0, _size.setHeight)(this._$bottomShader, shaderHeight); this._$bottomShader.css("left", this._getShaderOffset(i, width - this._workSpace.getCellWidth())); $shader.append(this._$bottomShader) } _renderAllDayShader(shaderWidth, i) { if (this._workSpace.option("showAllDayPanel")) { this._$allDayIndicator = (0, _renderer.default)("
").addClass("dx-scheduler-date-time-shader-all-day"); (0, _size.setHeight)(this._$allDayIndicator, this._workSpace.getAllDayHeight()); (0, _size.setWidth)(this._$allDayIndicator, shaderWidth); this._$allDayIndicator.css("left", this._getShaderOffset(i, shaderWidth)); this._workSpace._$allDayPanel.prepend(this._$allDayIndicator) } } _getShaderOffset(i, width) { return this._workSpace.getGroupedStrategy().getShaderOffset(i, width) } _getShaderTopOffset(i) { return this._workSpace.getGroupedStrategy().getShaderTopOffset(i) } _getShaderHeight() { return this._workSpace.getGroupedStrategy().getShaderHeight() } _getShaderMaxHeight() { return this._workSpace.getGroupedStrategy().getShaderMaxHeight() } _getShaderWidth(i) { return this._workSpace.getGroupedStrategy().getShaderWidth(i) } clean() { super.clean(); this._workSpace && this._workSpace._$allDayPanel && this._workSpace._$allDayPanel.find(".dx-scheduler-date-time-shader-all-day").remove() } } exports.default = VerticalCurrentTimeShader }, 73862: /*!******************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/scheduler/timezones/m_utils_timezones_data.js ***! \******************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _math = __webpack_require__( /*! ../../../core/utils/math */ 50254); var _config = (e = __webpack_require__( /*! ../../../core/config */ 66636), e && e.__esModule ? e : { default: e }); var e; const parseTimezone = timeZoneConfig => { const { offsets: offsets } = timeZoneConfig; const { offsetIndices: offsetIndices } = timeZoneConfig; const { untils: untils } = timeZoneConfig; const offsetList = offsets.split("|").map((value => parseInt(value))); const offsetIndexList = offsetIndices.split("").map((value => parseInt(value))); const dateList = (value = untils, value.split("|").map((until => { if ("Infinity" === until) { return null } return 1e3 * parseInt(until, 36) }))).map((accumulator = 0, value => accumulator += value)); var accumulator; var value; return { offsetList: offsetList, offsetIndexList: offsetIndexList, dateList: dateList } }; const tzCache = new class { constructor() { this.map = new Map } tryGet(id) { if (!this.map.get(id)) { const config = timeZoneDataUtils.getTimezoneById(id); if (!config) { return false } const timeZoneInfo = parseTimezone(config); this.map.set(id, timeZoneInfo) } return this.map.get(id) } }; const timeZoneDataUtils = { _tzCache: tzCache, getTimeZonesOld: () => (0, _config.default)().timezones ?? [], formatOffset(offset) { const hours = Math.floor(offset); const minutesInDecimal = offset - hours; const signString = (0, _math.sign)(offset) >= 0 ? "+" : "-"; const hoursString = `0${Math.abs(hours)}`.slice(-2); const minutesString = minutesInDecimal > 0 ? ":" + 60 * minutesInDecimal : ":00"; return signString + hoursString + minutesString }, formatId: id => id.split("/").join(" - ").split("_").join(" "), getTimezoneById(id) { if (!id) { return } const tzList = this.getTimeZonesOld(); for (let i = 0; i < tzList.length; i++) { const currentId = tzList[i].id; if (currentId === id) { return tzList[i] } } return }, getTimeZoneOffsetById(id, timestamp) { const timeZoneInfo = tzCache.tryGet(id); return timeZoneInfo ? this.getUtcOffset(timeZoneInfo, timestamp) : void 0 }, getTimeZoneDeclarationTuple(id, year) { const timeZoneInfo = tzCache.tryGet(id); return timeZoneInfo ? this.getTimeZoneDeclarationTupleCore(timeZoneInfo, year) : [] }, getTimeZoneDeclarationTupleCore(timeZoneInfo, year) { const { offsetList: offsetList } = timeZoneInfo; const { offsetIndexList: offsetIndexList } = timeZoneInfo; const { dateList: dateList } = timeZoneInfo; const tupleResult = []; for (let i = 0; i < dateList.length; i++) { const currentDate = dateList[i]; const currentYear = new Date(currentDate).getFullYear(); if (currentYear === year) { const offset = offsetList[offsetIndexList[i + 1]]; tupleResult.push({ date: currentDate, offset: -offset / 60 }) } if (currentYear > year) { break } } return tupleResult }, getUtcOffset(timeZoneInfo, dateTimeStamp) { const { offsetList: offsetList } = timeZoneInfo; const { offsetIndexList: offsetIndexList } = timeZoneInfo; const { dateList: dateList } = timeZoneInfo; const lastIntervalStartIndex = dateList.length - 1 - 1; let index = lastIntervalStartIndex; while (index >= 0 && dateTimeStamp < dateList[index]) { index-- } const offset = offsetList[offsetIndexList[index + 1]]; return -offset / 60 || offset } }; exports.default = timeZoneDataUtils }, 95053: /*!*********************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/scheduler/timezones/timezone_list.js ***! \*********************************************************************************************/ function(__unused_webpack_module, exports) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; exports.default = { value: ["Etc/GMT+12", "Etc/GMT+11", "Pacific/Midway", "Pacific/Niue", "Pacific/Pago_Pago", "Pacific/Samoa", "US/Samoa", "Etc/GMT+10", "HST", "Pacific/Honolulu", "Pacific/Johnston", "Pacific/Rarotonga", "Pacific/Tahiti", "US/Hawaii", "Pacific/Marquesas", "America/Adak", "America/Atka", "Etc/GMT+9", "Pacific/Gambier", "US/Aleutian", "America/Anchorage", "America/Juneau", "America/Metlakatla", "America/Nome", "America/Sitka", "America/Yakutat", "Etc/GMT+8", "Pacific/Pitcairn", "US/Alaska", "America/Creston", "America/Dawson_Creek", "America/Dawson", "America/Ensenada", "America/Fort_Nelson", "America/Hermosillo", "America/Los_Angeles", "America/Phoenix", "America/Santa_Isabel", "America/Tijuana", "America/Vancouver", "America/Whitehorse", "Canada/Pacific", "Canada/Yukon", "Etc/GMT+7", "Mexico/BajaNorte", "MST", "PST8PDT", "US/Arizona", "US/Pacific", "America/Belize", "America/Boise", "America/Cambridge_Bay", "America/Chihuahua", "America/Costa_Rica", "America/Denver", "America/Edmonton", "America/El_Salvador", "America/Guatemala", "America/Inuvik", "America/Managua", "America/Mazatlan", "America/Monterrey", "America/Ojinaga", "America/Regina", "America/Shiprock", "America/Swift_Current", "America/Tegucigalpa", "America/Yellowknife", "Canada/Mountain", "Canada/Saskatchewan", "Chile/EasterIsland", "Etc/GMT+6", "Mexico/BajaSur", "MST7MDT", "Navajo", "Pacific/Easter", "Pacific/Galapagos", "US/Mountain", "America/Atikokan", "America/Bahia_Banderas", "America/Bogota", "America/Cancun", "America/Cayman", "America/Chicago", "America/Coral_Harbour", "America/Eirunepe", "America/Guayaquil", "America/Indiana/Knox", "America/Indiana/Tell_City", "America/Jamaica", "America/Knox_IN", "America/Lima", "America/Matamoros", "America/Menominee", "America/Merida", "America/Mexico_City", "America/North_Dakota/Beulah", "America/North_Dakota/Center", "America/North_Dakota/New_Salem", "America/Panama", "America/Porto_Acre", "America/Rainy_River", "America/Rankin_Inlet", "America/Resolute", "America/Rio_Branco", "America/Winnipeg", "Brazil/Acre", "Canada/Central", "CST6CDT", "EST", "Etc/GMT+5", "Jamaica", "Mexico/General", "US/Central", "US/Indiana-Starke", "America/Anguilla", "America/Antigua", "America/Aruba", "America/Asuncion", "America/Barbados", "America/Blanc-Sablon", "America/Boa_Vista", "America/Campo_Grande", "America/Caracas", "America/Cuiaba", "America/Curacao", "America/Detroit", "America/Dominica", "America/Fort_Wayne", "America/Grand_Turk", "America/Grenada", "America/Guadeloupe", "America/Guyana", "America/Havana", "America/Indiana/Indianapolis", "America/Indiana/Marengo", "America/Indiana/Petersburg", "America/Indiana/Vevay", "America/Indiana/Vincennes", "America/Indiana/Winamac", "America/Indianapolis", "America/Iqaluit", "America/Kentucky/Louisville", "America/Kentucky/Monticello", "America/Kralendijk", "America/La_Paz", "America/Louisville", "America/Lower_Princes", "America/Manaus", "America/Marigot", "America/Martinique", "America/Montreal", "America/Montserrat", "America/Nassau", "America/New_York", "America/Nipigon", "America/Pangnirtung", "America/Port_of_Spain", "America/Port-au-Prince", "America/Porto_Velho", "America/Puerto_Rico", "America/Santiago", "America/Santo_Domingo", "America/St_Barthelemy", "America/St_Kitts", "America/St_Lucia", "America/St_Thomas", "America/St_Vincent", "America/Thunder_Bay", "America/Toronto", "America/Tortola", "America/Virgin", "Brazil/West", "Canada/Eastern", "Chile/Continental", "Cuba", "EST5EDT", "Etc/GMT+4", "US/East-Indiana", "US/Eastern", "US/Michigan", "America/Araguaina", "America/Argentina/Buenos_Aires", "America/Argentina/Catamarca", "America/Argentina/ComodRivadavia", "America/Argentina/Cordoba", "America/Argentina/Jujuy", "America/Argentina/La_Rioja", "America/Argentina/Mendoza", "America/Argentina/Rio_Gallegos", "America/Argentina/Salta", "America/Argentina/San_Juan", "America/Argentina/San_Luis", "America/Argentina/Tucuman", "America/Argentina/Ushuaia", "America/Bahia", "America/Belem", "America/Buenos_Aires", "America/Catamarca", "America/Cayenne", "America/Cordoba", "America/Fortaleza", "America/Glace_Bay", "America/Goose_Bay", "America/Halifax", "America/Jujuy", "America/Maceio", "America/Mendoza", "America/Moncton", "America/Montevideo", "America/Paramaribo", "America/Punta_Arenas", "America/Recife", "America/Rosario", "America/Santarem", "America/Sao_Paulo", "America/Thule", "Antarctica/Palmer", "Antarctica/Rothera", "Atlantic/Bermuda", "Atlantic/Stanley", "Brazil/East", "Canada/Atlantic", "Etc/GMT+3", "America/St_Johns", "Canada/Newfoundland", "America/Godthab", "America/Miquelon", "America/Noronha", "America/Nuuk", "Atlantic/South_Georgia", "Brazil/DeNoronha", "Etc/GMT+2", "Atlantic/Cape_Verde", "Etc/GMT+1", "Africa/Abidjan", "Africa/Accra", "Africa/Bamako", "Africa/Banjul", "Africa/Bissau", "Africa/Conakry", "Africa/Dakar", "Africa/Freetown", "Africa/Lome", "Africa/Monrovia", "Africa/Nouakchott", "Africa/Ouagadougou", "Africa/Sao_Tome", "Africa/Timbuktu", "America/Danmarkshavn", "America/Scoresbysund", "Atlantic/Azores", "Atlantic/Reykjavik", "Atlantic/St_Helena", "Etc/GMT-0", "Etc/GMT", "Etc/GMT+0", "Etc/GMT0", "Etc/Greenwich", "Etc/UCT", "Etc/Universal", "Etc/UTC", "Etc/Zulu", "GMT-0", "GMT", "GMT+0", "GMT0", "Greenwich", "Iceland", "UCT", "Universal", "UTC", "Zulu", "Africa/Algiers", "Africa/Bangui", "Africa/Brazzaville", "Africa/Casablanca", "Africa/Douala", "Africa/El_Aaiun", "Africa/Kinshasa", "Africa/Lagos", "Africa/Libreville", "Africa/Luanda", "Africa/Malabo", "Africa/Ndjamena", "Africa/Niamey", "Africa/Porto-Novo", "Africa/Tunis", "Atlantic/Canary", "Atlantic/Faeroe", "Atlantic/Faroe", "Atlantic/Madeira", "Eire", "Etc/GMT-1", "Europe/Belfast", "Europe/Dublin", "Europe/Guernsey", "Europe/Isle_of_Man", "Europe/Jersey", "Europe/Lisbon", "Europe/London", "GB-Eire", "GB", "Portugal", "WET", "Africa/Blantyre", "Africa/Bujumbura", "Africa/Cairo", "Africa/Ceuta", "Africa/Gaborone", "Africa/Harare", "Africa/Johannesburg", "Africa/Khartoum", "Africa/Kigali", "Africa/Lubumbashi", "Africa/Lusaka", "Africa/Maputo", "Africa/Maseru", "Africa/Mbabane", "Africa/Tripoli", "Africa/Windhoek", "Antarctica/Troll", "Arctic/Longyearbyen", "Atlantic/Jan_Mayen", "CET", "Egypt", "Etc/GMT-2", "Europe/Amsterdam", "Europe/Andorra", "Europe/Belgrade", "Europe/Berlin", "Europe/Bratislava", "Europe/Brussels", "Europe/Budapest", "Europe/Busingen", "Europe/Copenhagen", "Europe/Gibraltar", "Europe/Kaliningrad", "Europe/Ljubljana", "Europe/Luxembourg", "Europe/Madrid", "Europe/Malta", "Europe/Monaco", "Europe/Oslo", "Europe/Paris", "Europe/Podgorica", "Europe/Prague", "Europe/Rome", "Europe/San_Marino", "Europe/Sarajevo", "Europe/Skopje", "Europe/Stockholm", "Europe/Tirane", "Europe/Vaduz", "Europe/Vatican", "Europe/Vienna", "Europe/Warsaw", "Europe/Zagreb", "Europe/Zurich", "Libya", "MET", "Poland", "Africa/Addis_Ababa", "Africa/Asmara", "Africa/Asmera", "Africa/Dar_es_Salaam", "Africa/Djibouti", "Africa/Juba", "Africa/Kampala", "Africa/Mogadishu", "Africa/Nairobi", "Antarctica/Syowa", "Asia/Aden", "Asia/Amman", "Asia/Baghdad", "Asia/Bahrain", "Asia/Beirut", "Asia/Damascus", "Asia/Famagusta", "Asia/Gaza", "Asia/Hebron", "Asia/Istanbul", "Asia/Jerusalem", "Asia/Kuwait", "Asia/Nicosia", "Asia/Qatar", "Asia/Riyadh", "Asia/Tel_Aviv", "EET", "Etc/GMT-3", "Europe/Athens", "Europe/Bucharest", "Europe/Chisinau", "Europe/Helsinki", "Europe/Istanbul", "Europe/Kiev", "Europe/Kirov", "Europe/Mariehamn", "Europe/Minsk", "Europe/Moscow", "Europe/Nicosia", "Europe/Riga", "Europe/Simferopol", "Europe/Sofia", "Europe/Tallinn", "Europe/Tiraspol", "Europe/Uzhgorod", "Europe/Vilnius", "Europe/Zaporozhye", "Indian/Antananarivo", "Indian/Comoro", "Indian/Mayotte", "Israel", "Turkey", "W-SU", "Asia/Baku", "Asia/Dubai", "Asia/Muscat", "Asia/Tbilisi", "Asia/Yerevan", "Etc/GMT-4", "Europe/Astrakhan", "Europe/Samara", "Europe/Saratov", "Europe/Ulyanovsk", "Europe/Volgograd", "Indian/Mahe", "Indian/Mauritius", "Indian/Reunion", "Asia/Kabul", "Asia/Tehran", "Iran", "Antarctica/Mawson", "Asia/Aqtau", "Asia/Aqtobe", "Asia/Ashgabat", "Asia/Ashkhabad", "Asia/Atyrau", "Asia/Dushanbe", "Asia/Karachi", "Asia/Oral", "Asia/Qyzylorda", "Asia/Samarkand", "Asia/Tashkent", "Asia/Yekaterinburg", "Etc/GMT-5", "Indian/Kerguelen", "Indian/Maldives", "Asia/Calcutta", "Asia/Colombo", "Asia/Kolkata", "Asia/Kathmandu", "Asia/Katmandu", "Antarctica/Vostok", "Asia/Almaty", "Asia/Bishkek", "Asia/Dacca", "Asia/Dhaka", "Asia/Kashgar", "Asia/Omsk", "Asia/Qostanay", "Asia/Thimbu", "Asia/Thimphu", "Asia/Urumqi", "Etc/GMT-6", "Indian/Chagos", "Asia/Rangoon", "Asia/Yangon", "Indian/Cocos", "Antarctica/Davis", "Asia/Bangkok", "Asia/Barnaul", "Asia/Ho_Chi_Minh", "Asia/Hovd", "Asia/Jakarta", "Asia/Krasnoyarsk", "Asia/Novokuznetsk", "Asia/Novosibirsk", "Asia/Phnom_Penh", "Asia/Pontianak", "Asia/Saigon", "Asia/Tomsk", "Asia/Vientiane", "Etc/GMT-7", "Indian/Christmas", "Antarctica/Casey", "Asia/Brunei", "Asia/Choibalsan", "Asia/Chongqing", "Asia/Chungking", "Asia/Harbin", "Asia/Hong_Kong", "Asia/Irkutsk", "Asia/Kuala_Lumpur", "Asia/Kuching", "Asia/Macao", "Asia/Macau", "Asia/Makassar", "Asia/Manila", "Asia/Shanghai", "Asia/Singapore", "Asia/Taipei", "Asia/Ujung_Pandang", "Asia/Ulaanbaatar", "Asia/Ulan_Bator", "Australia/Perth", "Australia/West", "Etc/GMT-8", "Hongkong", "PRC", "ROC", "Singapore", "Australia/Eucla", "Asia/Chita", "Asia/Dili", "Asia/Jayapura", "Asia/Khandyga", "Asia/Pyongyang", "Asia/Seoul", "Asia/Tokyo", "Asia/Yakutsk", "Etc/GMT-9", "Japan", "Pacific/Palau", "ROK", "Australia/Adelaide", "Australia/Broken_Hill", "Australia/Darwin", "Australia/North", "Australia/South", "Australia/Yancowinna", "Antarctica/DumontDUrville", "Asia/Ust-Nera", "Asia/Vladivostok", "Australia/ACT", "Australia/Brisbane", "Australia/Canberra", "Australia/Currie", "Australia/Hobart", "Australia/Lindeman", "Australia/Melbourne", "Australia/NSW", "Australia/Queensland", "Australia/Sydney", "Australia/Tasmania", "Australia/Victoria", "Etc/GMT-10", "Pacific/Chuuk", "Pacific/Guam", "Pacific/Port_Moresby", "Pacific/Saipan", "Pacific/Truk", "Pacific/Yap", "Australia/LHI", "Australia/Lord_Howe", "Antarctica/Macquarie", "Asia/Magadan", "Asia/Sakhalin", "Asia/Srednekolymsk", "Etc/GMT-11", "Pacific/Bougainville", "Pacific/Efate", "Pacific/Guadalcanal", "Pacific/Kosrae", "Pacific/Norfolk", "Pacific/Noumea", "Pacific/Pohnpei", "Pacific/Ponape", "Antarctica/McMurdo", "Antarctica/South_Pole", "Asia/Anadyr", "Asia/Kamchatka", "Etc/GMT-12", "Kwajalein", "NZ", "Pacific/Auckland", "Pacific/Fiji", "Pacific/Funafuti", "Pacific/Kwajalein", "Pacific/Majuro", "Pacific/Nauru", "Pacific/Tarawa", "Pacific/Wake", "Pacific/Wallis", "NZ-CHAT", "Pacific/Chatham", "Etc/GMT-13", "Pacific/Apia", "Pacific/Enderbury", "Pacific/Fakaofo", "Pacific/Tongatapu", "Etc/GMT-14", "Pacific/Kiritimati"] } }, 93048: /*!*******************************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/scheduler/tooltip_strategies/m_desktop_tooltip_strategy.js ***! \*******************************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.DesktopTooltipStrategy = void 0; var _message = _interopRequireDefault(__webpack_require__( /*! ../../../common/core/localization/message */ 4671)); var _m_support = _interopRequireDefault(__webpack_require__( /*! ../../core/utils/m_support */ 85991)); var _m_tooltip = _interopRequireDefault(__webpack_require__( /*! ../../ui/m_tooltip */ 3504)); var _m_tooltip_strategy_base = __webpack_require__( /*! ./m_tooltip_strategy_base */ 32789); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } class DesktopTooltipStrategy extends _m_tooltip_strategy_base.TooltipStrategyBase { _prepareBeforeVisibleChanged(dataList) { this._tooltip.option("position", { my: "bottom", at: "top", boundary: this._getBoundary(dataList), offset: this._extraOptions.offset, collision: "fit flipfit" }) } _getBoundary(dataList) { return this._options.isAppointmentInAllDayPanel(dataList[0].appointment) ? this._options.container : this._options.getScrollableContainer() } _onShown() { super._onShown(); if (this._extraOptions.isButtonClick) { this._list.focus(); this._list.option("focusedElement", null) } } _createListOption(target, dataList) { const result = super._createListOption(target, dataList); result.showScrollbar = _m_support.default.touch ? "always" : "onHover"; return result } _createTooltip(target, dataList) { const tooltipElement = this._createTooltipElement("dx-scheduler-appointment-tooltip-wrapper"); const tooltip = this._options.createComponent(tooltipElement, _m_tooltip.default, { target: target, maxHeight: 200, rtlEnabled: this._extraOptions.rtlEnabled, onShown: this._onShown.bind(this), contentTemplate: this._getContentTemplate(dataList), wrapperAttr: { class: "dx-scheduler-appointment-tooltip-wrapper" }, _loopFocus: this._extraOptions._loopFocus }); tooltip.setAria({ role: "dialog", label: _message.default.format("dxScheduler-appointmentListAriaLabel") }); return tooltip } _onListRender(e) { return this._extraOptions.dragBehavior && this._extraOptions.dragBehavior(e) } _onListItemContextMenu(e) { const contextMenuEventArgs = this._options.createEventArgs(e); this._options.onItemContextMenu(contextMenuEventArgs) } } exports.DesktopTooltipStrategy = DesktopTooltipStrategy }, 96588: /*!******************************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/scheduler/tooltip_strategies/m_mobile_tooltip_strategy.js ***! \******************************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.MobileTooltipStrategy = void 0; var _size = __webpack_require__( /*! ../../../core/utils/size */ 57653); var _window = __webpack_require__( /*! ../../../core/utils/window */ 3104); var _ui = (e = __webpack_require__( /*! ../../../ui/overlay/ui.overlay */ 89132), e && e.__esModule ? e : { default: e }); var e; var _m_tooltip_strategy_base = __webpack_require__( /*! ./m_tooltip_strategy_base */ 32789); const CLASS_slidePanel = "dx-scheduler-overlay-panel", CLASS_scrollableContent = ".dx-scrollable-content"; const MAX_HEIGHT_PHONE = 250, MAX_HEIGHT_TABLET = "90%", MAX_HEIGHT_DEFAULT = "auto"; const MAX_WIDTH_PHONE = "100%", MAX_WIDTH_TABLET = "80%"; const animationConfig = { show: { type: "slide", duration: 300, from: { position: { my: "top", at: "bottom", of: (0, _window.getWindow)() } }, to: { position: { my: "center", at: "center", of: (0, _window.getWindow)() } } }, hide: { type: "slide", duration: 300, to: { position: { my: "top", at: "bottom", of: (0, _window.getWindow)() } }, from: { position: { my: "center", at: "center", of: (0, _window.getWindow)() } } } }; class MobileTooltipStrategy extends _m_tooltip_strategy_base.TooltipStrategyBase { _shouldUseTarget() { return false } setTooltipConfig() { const isTabletWidth = (0, _size.getWidth)((0, _window.getWindow)()) > 700; const listHeight = (0, _size.getOuterHeight)(this._list.$element().find(CLASS_scrollableContent)); this._tooltip.option(isTabletWidth ? (listHeight => { const currentMaxHeight = .9 * (0, _size.getHeight)((0, _window.getWindow)()); return { shading: true, width: MAX_WIDTH_TABLET, height: listHeight > currentMaxHeight ? MAX_HEIGHT_TABLET : MAX_HEIGHT_DEFAULT, position: { my: "center", at: "center", of: (0, _window.getWindow)() } } })(listHeight) : (listHeight => ({ shading: false, width: MAX_WIDTH_PHONE, height: listHeight > MAX_HEIGHT_PHONE ? MAX_HEIGHT_PHONE : MAX_HEIGHT_DEFAULT, position: { my: "bottom", at: "bottom", of: (0, _window.getWindow)() } }))(listHeight)) } async _onShowing() { this._tooltip.option("height", MAX_HEIGHT_DEFAULT); this.setTooltipConfig(); await Promise.all([...this.asyncTemplatePromises]); this.setTooltipConfig() } _createTooltip(target, dataList) { const element = this._createTooltipElement(CLASS_slidePanel); return this._options.createComponent(element, _ui.default, { target: (0, _window.getWindow)(), hideOnOutsideClick: true, animation: animationConfig, onShowing: () => this._onShowing(), onShown: this._onShown.bind(this), contentTemplate: this._getContentTemplate(dataList), wrapperAttr: { class: CLASS_slidePanel } }) } } exports.MobileTooltipStrategy = MobileTooltipStrategy }, 32789: /*!****************************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/scheduler/tooltip_strategies/m_tooltip_strategy_base.js ***! \****************************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.TooltipStrategyBase = void 0; var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../../core/renderer */ 64553)); var _function_template = __webpack_require__( /*! ../../../core/templates/function_template */ 38699); var _type = __webpack_require__( /*! ../../../core/utils/type */ 11528); var _button = _interopRequireDefault(__webpack_require__( /*! ../../../ui/button */ 64973)); var _promise = __webpack_require__( /*! ../../core/utils/promise */ 51413); var _m_list = _interopRequireDefault(__webpack_require__( /*! ../../ui/list/m_list.edit */ 71058)); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } exports.TooltipStrategyBase = class { constructor(options) { this.asyncTemplatePromises = new Set; this._tooltip = null; this._options = options; this._extraOptions = null } show(target, dataList, extraOptions) { if (this._canShowTooltip(dataList)) { this.hide(); this._extraOptions = extraOptions; this._showCore(target, dataList) } } _showCore(target, dataList) { const describedByValue = (0, _type.isRenderer)(target) && target.attr("aria-describedby"); if (!this._tooltip) { this._tooltip = this._createTooltip(target, dataList) } else { this._shouldUseTarget() && this._tooltip.option("target", target); this._list.option("dataSource", dataList) } this._prepareBeforeVisibleChanged(dataList); this._tooltip.option("visible", true); describedByValue && target.attr("aria-describedby", describedByValue) } _prepareBeforeVisibleChanged(dataList) {} _getContentTemplate(dataList) { return container => { var _this$_list$registerK, _this$_list; const listElement = (0, _renderer.default)("
"); (0, _renderer.default)(container).append(listElement); this._list = this._createList(listElement, dataList); null === (_this$_list$registerK = (_this$_list = this._list).registerKeyHandler) || void 0 === _this$_list$registerK || _this$_list$registerK.call(_this$_list, "escape", (() => { this.hide(); this._tooltip.option("target").focus() })) } } isAlreadyShown(target) { if (this._tooltip && this._tooltip.option("visible")) { return this._tooltip.option("target")[0] === target[0] } return } _onShown() { this._list.option("focusStateEnabled", this._extraOptions.focusStateEnabled) } dispose() {} hide() { if (this._tooltip) { this._tooltip.option("visible", false) } } _shouldUseTarget() { return true } _createTooltip(target, dataList) {} _canShowTooltip(dataList) { if (!dataList.length) { return false } return true } _createListOption(dataList) { return { dataSource: dataList, onContentReady: this._onListRender.bind(this), onItemClick: e => this._onListItemClick(e), onItemContextMenu: this._onListItemContextMenu.bind(this), itemTemplate: (item, index) => this._renderTemplate(item.appointment, item.targetedAppointment, index, item.color), _swipeEnabled: false, pageLoadMode: "scrollBottom" } } _onListRender(e) {} _createTooltipElement(wrapperClass) { return (0, _renderer.default)("
").appendTo(this._options.container).addClass(wrapperClass) } _createList(listElement, dataList) { return this._options.createComponent(listElement, _m_list.default, this._createListOption(dataList)) } _renderTemplate(appointment, targetedAppointment, index, color) { const itemListContent = this._createItemListContent(appointment, targetedAppointment, color); this._options.addDefaultTemplates({ [this._getItemListTemplateName()]: new _function_template.FunctionTemplate((options => { const $container = (0, _renderer.default)(options.container); $container.append(itemListContent); return $container })) }); const template = this._options.getAppointmentTemplate(`${this._getItemListTemplateName()}Template`); return this._createFunctionTemplate(template, appointment, targetedAppointment, index) } _createFunctionTemplate(template, appointmentData, targetedAppointmentData, index) { const isButtonClicked = !!this._extraOptions.isButtonClick; const isEmptyDropDownAppointmentTemplate = this._isEmptyDropDownAppointmentTemplate(); return new _function_template.FunctionTemplate((options => { const { promise: promise, resolve: resolve } = (0, _promise.createPromise)(); this.asyncTemplatePromises.add(promise); return template.render({ model: isEmptyDropDownAppointmentTemplate ? { appointmentData: appointmentData, targetedAppointmentData: targetedAppointmentData, isButtonClicked: isButtonClicked } : appointmentData, container: options.container, index: index, onRendered: () => { this.asyncTemplatePromises.delete(promise); resolve() } }) })) } _getItemListTemplateName() { return this._isEmptyDropDownAppointmentTemplate() ? "appointmentTooltip" : "dropDownAppointment" } _isEmptyDropDownAppointmentTemplate() { return !this._extraOptions.dropDownAppointmentTemplate || "dropDownAppointment" === this._extraOptions.dropDownAppointmentTemplate } _onListItemClick(e) { this.hide(); this._extraOptions.clickEvent && this._extraOptions.clickEvent(e); this._options.showAppointmentPopup(e.itemData.appointment, false, e.itemData.targetedAppointment) } _onListItemContextMenu(e) {} _createItemListContent(appointment, targetedAppointment, color) { const { editing: editing } = this._extraOptions; const $itemElement = (0, _renderer.default)("
").addClass("dx-tooltip-appointment-item"); $itemElement.append(this._createItemListMarker(color)); $itemElement.append(this._createItemListInfo(this._options.createFormattedDateText(appointment, targetedAppointment))); const disabled = this._options.getAppointmentDisabled(appointment); if (!disabled && (editing && true === editing.allowDeleting || true === editing)) { $itemElement.append(this._createDeleteButton(appointment, targetedAppointment)) } return $itemElement } _createItemListMarker(color) { const $marker = (0, _renderer.default)("
").addClass("dx-tooltip-appointment-item-marker"); const $markerBody = (0, _renderer.default)("
").addClass("dx-tooltip-appointment-item-marker-body"); $marker.append($markerBody); color && color.done((value => $markerBody.css("background", value))); return $marker } _createItemListInfo(object) { const result = (0, _renderer.default)("
").addClass("dx-tooltip-appointment-item-content"); const $title = (0, _renderer.default)("
").addClass("dx-tooltip-appointment-item-content-subject").text(object.text); const $date = (0, _renderer.default)("
").addClass("dx-tooltip-appointment-item-content-date").text(object.formatDate); return result.append($title).append($date) } _createDeleteButton(appointment, targetedAppointment) { const $container = (0, _renderer.default)("
").addClass("dx-tooltip-appointment-item-delete-button-container"); const $deleteButton = (0, _renderer.default)("
").addClass("dx-tooltip-appointment-item-delete-button"); $container.append($deleteButton); this._options.createComponent($deleteButton, _button.default, { icon: "trash", stylingMode: "text", onClick: e => { this.hide(); e.event.stopPropagation(); this._options.checkAndDeleteAppointment(appointment, targetedAppointment) } }); return $container } } }, 36791: /*!*******************************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/scheduler/utils/appointment_adapter/appointment_adapter.js ***! \*******************************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.AppointmentAdapter = void 0; var _m_object = __webpack_require__( /*! ../../../core/utils/m_object */ 86005); var _m_recurrence = __webpack_require__( /*! ../../m_recurrence */ 55122); class AppointmentAdapter { constructor(source, dataAccessors) { this.source = source; this.dataAccessors = dataAccessors } get startDate() { return this.dataAccessors.get("startDate", this.source) } set startDate(value) { this.dataAccessors.set("startDate", this.source, value) } get endDate() { return this.dataAccessors.get("endDate", this.source) } set endDate(value) { this.dataAccessors.set("endDate", this.source, value) } get allDay() { return this.dataAccessors.get("allDay", this.source) } set allDay(value) { this.dataAccessors.set("allDay", this.source, value) } get text() { return this.dataAccessors.get("text", this.source) ?? "" } set text(value) { this.dataAccessors.set("text", this.source, value) } get description() { return this.dataAccessors.get("description", this.source) ?? "" } set description(value) { this.dataAccessors.set("description", this.source, value) } get startDateTimeZone() { return this.dataAccessors.get("startDateTimeZone", this.source) } get endDateTimeZone() { return this.dataAccessors.get("endDateTimeZone", this.source) } get recurrenceRule() { return this.dataAccessors.get("recurrenceRule", this.source) } set recurrenceRule(value) { this.dataAccessors.set("recurrenceRule", this.source, value) } get recurrenceException() { return this.dataAccessors.get("recurrenceException", this.source) } set recurrenceException(value) { this.dataAccessors.set("recurrenceException", this.source, value) } get disabled() { return this.dataAccessors.get("disabled", this.source) } get duration() { const { startDate: startDate, endDate: endDate } = this; return endDate && startDate ? endDate.getTime() - startDate.getTime() : 0 } get isRecurrent() { return (0, _m_recurrence.getRecurrenceProcessor)().isValidRecurrenceRule(this.recurrenceRule) } clone() { return new AppointmentAdapter((0, _m_object.deepExtendArraySafe)({}, this.source, false, false, false, true), this.dataAccessors) } serialize() { this.dataAccessors.set("startDate", this.source, this.dataAccessors.get("startDate", this.source)); this.dataAccessors.set("endDate", this.source, this.dataAccessors.get("endDate", this.source)); return this } getCalculatedDates(timeZoneCalculator, path) { return { startDate: timeZoneCalculator.createDate(this.startDate, path, this.startDateTimeZone), endDate: timeZoneCalculator.createDate(this.endDate, path, this.endDateTimeZone) } } calculateDates(timeZoneCalculator, path) { const { startDate: startDate, endDate: endDate } = this.getCalculatedDates(timeZoneCalculator, path); if (this.startDate) { this.startDate = startDate } if (this.endDate) { this.endDate = endDate } return this } } exports.AppointmentAdapter = AppointmentAdapter }, 94077: /*!*******************************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/scheduler/utils/data_accessor/appointment_data_accessor.js ***! \*******************************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.AppointmentDataAccessor = void 0; var _data = __webpack_require__( /*! ../../../../core/utils/data */ 31e3); var _date_serialization = (e = __webpack_require__( /*! ../../../../core/utils/date_serialization */ 71051), e && e.__esModule ? e : { default: e }); var e; var _data_accessor = __webpack_require__( /*! ./data_accessor */ 83811); function _extends() { return _extends = Object.assign ? Object.assign.bind() : function(n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) { ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]) } } return n }, _extends.apply(null, arguments) } class AppointmentDataAccessor extends _data_accessor.DataAccessor { constructor(fields) { let forceIsoDateParsing = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : true; let dateSerializationFormat = arguments.length > 2 ? arguments[2] : void 0; super(); this.forceIsoDateParsing = forceIsoDateParsing; this.dateSerializationFormat = dateSerializationFormat; this.expr = _extends({}, fields); this.updateExpressions(fields) } getCommonAccessExpressions(expr) { return { getter: (0, _data.compileGetter)(expr), setter: (0, _data.compileSetter)(expr) } } getDateFieldAccessExpressions(expr) { const { getter: commonGetter, setter: commonSetter } = this.getCommonAccessExpressions(expr); let serializationFormatCache; return { getter: object => { const date = this.forceIsoDateParsing ? _date_serialization.default.deserializeDate(commonGetter(object)) : commonGetter(object); return void 0 === date ? date : new Date(date) }, setter: (object, value) => { if (this.dateSerializationFormat) { serializationFormatCache = this.dateSerializationFormat } else if (this.forceIsoDateParsing && !serializationFormatCache) { const oldValue = commonGetter(object); serializationFormatCache = _date_serialization.default.getDateSerializationFormat(oldValue) } const newValue = _date_serialization.default.serializeDate(value, serializationFormatCache); commonSetter(object, newValue) } } } getBooleanFieldAccessExpressions(expr) { const { getter: commonGetter, setter: setter } = this.getCommonAccessExpressions(expr); return { getter: object => Boolean(commonGetter(object)), setter: setter } } getAccessExpressions(name, expr) { switch (true) { case field = name, "allDay" === field || "disabled" === field: return this.getBooleanFieldAccessExpressions(expr); case (field => "startDate" === field || "endDate" === field)(name): return this.getDateFieldAccessExpressions(expr); default: return this.getCommonAccessExpressions(expr) } var field } updateExpression(field, expr) { const name = field.replace("Expr", ""); if (!expr) { delete this.getter[name]; delete this.setter[name]; delete this.expr[field]; return } const { getter: getter, setter: setter } = this.getAccessExpressions(name, expr); this.getter[name] = getter; this.setter[name] = setter; this.expr[field] = expr } } exports.AppointmentDataAccessor = AppointmentDataAccessor }, 5450: /*!****************************************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/scheduler/utils/data_accessor/appointment_resource_data_accessor.js ***! \****************************************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.getResourceIndex = exports.getAppointmentResourceAccessor = void 0; var _data = __webpack_require__( /*! ../../../../core/utils/data */ 31e3); var _m_array = __webpack_require__( /*! ../../../core/utils/m_array */ 28601); const getResourceIndex = config => config.fieldExpr ?? config.field ?? ""; exports.getResourceIndex = getResourceIndex; exports.getAppointmentResourceAccessor = config => { const indexExpr = getResourceIndex(config); const getter = (0, _data.compileGetter)(indexExpr); const setter = (0, _data.compileSetter)(indexExpr); return { idsGetter: item => (0, _m_array.wrapToArray)(getter(item) ?? []), idsSetter: (item, ids) => setter(item, ids) } } }, 83811: /*!*******************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/scheduler/utils/data_accessor/data_accessor.js ***! \*******************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.DataAccessor = void 0; var _m_type = __webpack_require__( /*! ../../../core/utils/m_type */ 39918); exports.DataAccessor = class { constructor() { this.getter = {}; this.setter = {} } updateExpressions(fields) { Object.entries(fields).forEach((_ref => { let [key, value] = _ref; return this.updateExpression(key, value) })) } get(field, obj) { if (this.getter[field]) { return this.getter[field](obj) } return } set(field, obj, value) { if (this.setter[field]) { this.setter[field](obj, value) } return this } has(field) { return (0, _m_type.isDefined)(this.getter[field]) } } }, 72044: /*!****************************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/scheduler/utils/data_accessor/resource_data_accessor.js ***! \****************************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.ResourceDataAccessor = void 0; var _data = __webpack_require__( /*! ../../../../core/utils/data */ 31e3); var _data_accessor = __webpack_require__( /*! ./data_accessor */ 83811); class ResourceDataAccessor extends _data_accessor.DataAccessor { constructor(config) { super(); this.idExpr = config.valueExpr ?? "id"; this.textExpr = config.displayExpr ?? "text"; this.colorExpr = config.colorExpr ?? "color"; this.updateExpressions({ idExpr: this.idExpr, textExpr: this.textExpr, colorExpr: this.colorExpr }) } updateExpression(field, expr) { const name = field.replace("Expr", ""); if (!expr) { delete this.getter[name]; delete this.setter[name]; return } this.getter[name] = (0, _data.compileGetter)(expr); this.setter[name] = (0, _data.compileSetter)(expr) } } exports.ResourceDataAccessor = ResourceDataAccessor }, 80356: /*!*********************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/scheduler/utils/index.js ***! \*********************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "macroTaskArray", { enumerable: true, get: function() { return _index.default } }); var _index = (e = __webpack_require__( /*! ./macro_task_array/index */ 4203), e && e.__esModule ? e : { default: e }); var e }, 24862: /*!********************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/scheduler/utils/is_agenda_workpace_component.js ***! \********************************************************************************************************/ function(__unused_webpack_module, exports) { Object.defineProperty(exports, "__esModule", { value: true }); exports.isAgendaWorkspaceComponent = function(component) { return component.NAME === workspaceAgendaComponentName }; const workspaceAgendaComponentName = "dxSchedulerAgenda" }, 28740: /*!**************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/scheduler/utils/is_scheduler_component.js ***! \**************************************************************************************************/ function(__unused_webpack_module, exports) { Object.defineProperty(exports, "__esModule", { value: true }); exports.isSchedulerComponent = function(component) { return component.NAME === schedulerComponentName }; const schedulerComponentName = "dxScheduler" }, 85935: /*!*****************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/scheduler/utils/loader/loader.js ***! \*****************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.Loader = void 0; var _common = __webpack_require__( /*! ../../../../core/utils/common */ 17781); var _data_source = (e = __webpack_require__( /*! ../../../../data/data_source */ 47283), e && e.__esModule ? e : { default: e }); var e; var _utils = __webpack_require__( /*! ./utils */ 29379); exports.Loader = class { constructor(config, dataSourceOptions) { this.items = []; this.data = []; this.unsubscribe = _common.noop; this.dataSource = (0, _utils.normalizeDataSource)(config.dataSource, dataSourceOptions); this.isSharedDataSource = config.dataSource instanceof _data_source.default; this.addDataSourceHandlers() } onInit() { if (this.isLoaded()) { var _this$dataSource; this.applyChanges((null === (_this$dataSource = this.dataSource) || void 0 === _this$dataSource ? void 0 : _this$dataSource.items()) ?? []) } } isLoaded() { var _this$dataSource2; return Boolean(null === (_this$dataSource2 = this.dataSource) || void 0 === _this$dataSource2 ? void 0 : _this$dataSource2.isLoaded()) } addDataSourceHandlers() { const onChange = this.onChange.bind(this); const onLoadingChanged = this.onLoadingChanged.bind(this); const onLoadError = this.onLoadError.bind(this); const { dataSource: dataSource } = this; if (dataSource) { dataSource.on("changed", onChange); dataSource.on("loadingChanged", onLoadingChanged); dataSource.on("loadError", onLoadError); this.unsubscribe = () => { dataSource.off("changed", onChange); dataSource.off("loadingChanged", onLoadingChanged); dataSource.off("loadError", onLoadError) } } } async load() { let forceReload = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : false; if (this.dataSource && (forceReload || !this.dataSource.isLoaded() && !this.loadingStatePromise)) { this.loadingStatePromise = this.loadingStatePromise && !forceReload ? this.loadingStatePromise : (0, _utils.loadResource)(this.dataSource, forceReload); await this.loadingStatePromise } } onLoadingChanged(isLoading) { if (!isLoading && this.isLoaded()) { var _this$dataSource3; this.applyChanges((null === (_this$dataSource3 = this.dataSource) || void 0 === _this$dataSource3 ? void 0 : _this$dataSource3.items()) ?? []) } } applyChanges(items) { if (items && items !== this.data) { this.data = items; this.items = this.onLoadTransform(this.data) } } dispose() { if (this.dataSource) { if (this.isSharedDataSource) { this.unsubscribe(); this.unsubscribe = _common.noop } else { this.dataSource.dispose() } this.data = []; this.items = [] } } } }, 9440: /*!**************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/scheduler/utils/loader/resource_loader.js ***! \**************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.ResourceLoader = void 0; var _appointment_resource_data_accessor = __webpack_require__( /*! ../data_accessor/appointment_resource_data_accessor */ 5450); var _resource_data_accessor = __webpack_require__( /*! ../data_accessor/resource_data_accessor */ 72044); var _loader = __webpack_require__( /*! ./loader */ 85935); class ResourceLoader extends _loader.Loader { constructor(config) { super(config, { pageSize: 0 }); const accessor = (0, _appointment_resource_data_accessor.getAppointmentResourceAccessor)(config); this.idsGetter = accessor.idsGetter; this.idsSetter = accessor.idsSetter; this.dataAccessor = new _resource_data_accessor.ResourceDataAccessor(config); this.allowMultiple = Boolean(config.allowMultiple); this.useColorAsDefault = Boolean(config.useColorAsDefault); this.resourceIndex = String((0, _appointment_resource_data_accessor.getResourceIndex)(config)); this.resourceName = config.label; this.onInit() } onLoadTransform(items) { return items.map((item => ({ id: this.dataAccessor.get("id", item), text: this.dataAccessor.get("text", item), color: this.dataAccessor.get("color", item) }))) } applyChanges(items) { super.applyChanges(items) } onLoadError() {} onChange() {} } exports.ResourceLoader = ResourceLoader }, 29379: /*!****************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/scheduler/utils/loader/utils.js ***! \****************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.normalizeDataSource = exports.loadResource = void 0; var _data_source = (e = __webpack_require__( /*! ../../../../data/data_source */ 47283), e && e.__esModule ? e : { default: e }); var e; var _m_utils = __webpack_require__( /*! ../../../data/data_source/m_utils */ 23923); function _extends() { return _extends = Object.assign ? Object.assign.bind() : function(n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) { ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]) } } return n }, _extends.apply(null, arguments) } exports.normalizeDataSource = function(dataSourceOptions) { let options = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {}; if (!dataSourceOptions) { return } if (dataSourceOptions instanceof _data_source.default) { return dataSourceOptions } const result = _extends({}, (0, _m_utils.normalizeDataSourceOptions)(dataSourceOptions, {}), options); return new _data_source.default(result) }; exports.loadResource = async function(dataSource) { let forceReload = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : false; if (!dataSource) { return [] } if (forceReload) { return new Promise(((resolve, reject) => { dataSource.reload().then(resolve, reject) })) } if (dataSource.isLoaded()) { return dataSource.items() } return new Promise(((resolve, reject) => { dataSource.load().then(resolve, reject) })) } }, 8710: /*!*******************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/scheduler/utils/macro_task_array/dispatcher.js ***! \*******************************************************************************************************/ function(__unused_webpack_module, exports) { Object.defineProperty(exports, "__esModule", { value: true }); exports.macroTaskIdSet = exports.default = void 0; const macroTaskIdSet = exports.macroTaskIdSet = new Set; exports.default = { schedule: async (callback, macroTaskTimeoutMs) => new Promise((resolve => { const taskId = setTimeout((() => { callback(); macroTaskIdSet.delete(taskId); resolve() }), macroTaskTimeoutMs); macroTaskIdSet.add(taskId) })), dispose: () => { Array.from(macroTaskIdSet).forEach((id => { clearTimeout(id); macroTaskIdSet.delete(id) })) } } }, 4203: /*!**************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/scheduler/utils/macro_task_array/index.js ***! \**************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _dispatcher = (e = __webpack_require__( /*! ./dispatcher */ 8710), e && e.__esModule ? e : { default: e }); var e; var _methods = __webpack_require__( /*! ./methods */ 57); exports.default = { forEach: _methods.macroTaskArrayForEach, map: _methods.macroTaskArrayMap, dispose: _dispatcher.default.dispose } }, 57: /*!****************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/scheduler/utils/macro_task_array/methods.js ***! \****************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.macroTaskArrayMap = exports.macroTaskArrayForEach = exports.DEFAULT_STEPS_VALUE = exports.DEFAULT_MACRO_TASK_TIMEOUT = void 0; var _dispatcher = (e = __webpack_require__( /*! ./dispatcher */ 8710), e && e.__esModule ? e : { default: e }); var e; const DEFAULT_STEPS_VALUE = exports.DEFAULT_STEPS_VALUE = 100; const DEFAULT_MACRO_TASK_TIMEOUT = exports.DEFAULT_MACRO_TASK_TIMEOUT = 0; const macroTaskArrayForEach = async function(array, callback) { let step = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : DEFAULT_STEPS_VALUE; let macroTaskTimeoutMs = arguments.length > 3 && void 0 !== arguments[3] ? arguments[3] : DEFAULT_MACRO_TASK_TIMEOUT; const promises = []; const batchesCount = Math.ceil(array.length / step); for (let batchIdx = 0; batchIdx < batchesCount; batchIdx += 1) { const scheduledTask = _dispatcher.default.schedule((() => { const startIdx = batchIdx * step; const maxIdx = startIdx + step; for (let idx = startIdx; idx < maxIdx && void 0 !== array[idx]; idx += 1) { callback(array[idx]) } }), macroTaskTimeoutMs); promises.push(scheduledTask) } await Promise.all(promises) }; exports.macroTaskArrayForEach = macroTaskArrayForEach; exports.macroTaskArrayMap = async function(array, callback) { let step = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : DEFAULT_STEPS_VALUE; let macroTaskTimeoutMs = arguments.length > 3 && void 0 !== arguments[3] ? arguments[3] : DEFAULT_MACRO_TASK_TIMEOUT; const result = []; await macroTaskArrayForEach(array, (item => { result.push(callback(item)) }), step, macroTaskTimeoutMs); return result } }, 80915: /*!***************************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/scheduler/utils/resource_manager/agenda_group_utils.js ***! \***************************************************************************************************************/ function(__unused_webpack_module, exports) { Object.defineProperty(exports, "__esModule", { value: true }); exports.reduceResourcesTree = exports.convertToOldTree = void 0; function _extends() { return _extends = Object.assign ? Object.assign.bind() : function(n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) { ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]) } } return n }, _extends.apply(null, arguments) } const filterGroupTree = (resourceById, appointments, node) => { if (!((resourceById, appointments, node) => { const resource = resourceById[node.resourceIndex]; const value = node.grouped[node.resourceIndex]; return appointments.some((appointment => resource.idsGetter(appointment).includes(value))) })(resourceById, appointments, node)) { return } return _extends({}, node, { children: node.children.length ? node.children.map((childrenNode => filterGroupTree(resourceById, appointments, childrenNode))).filter(Boolean) : [] }) }; exports.reduceResourcesTree = (resourceById, groupsTree, appointments) => groupsTree.map((node => filterGroupTree(resourceById, appointments, node))).filter(Boolean); exports.convertToOldTree = (resourceById, tree) => { const convert = item => { const value = item.grouped[item.resourceIndex]; const resource = resourceById[item.resourceIndex]; const resourceData = null === resource || void 0 === resource ? void 0 : resource.data.find((rItem => resource.dataAccessor.get("id", rItem) === value)); const resourceItem = null === resource || void 0 === resource ? void 0 : resource.items.find((rItem => rItem.id === value)); return { data: resourceData, name: item.resourceIndex, title: item.resourceText, value: value, color: null === resourceItem || void 0 === resourceItem ? void 0 : resourceItem.color, children: item.children.length ? item.children.map(convert) : [] } }; return tree.map(convert) } }, 97310: /*!********************************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/scheduler/utils/resource_manager/appointment_color_utils.js ***! \********************************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.getPaintedResource = exports.getAppointmentColor = void 0; var _appointment_groups_utils = __webpack_require__( /*! ./appointment_groups_utils */ 11649); var _group_utils = __webpack_require__( /*! ./group_utils */ 76131); const getPaintedResource = (resources, appointmentGroups, groups) => { const assignedResources = resources.filter((resource => appointmentGroups.includes(resource.resourceIndex))); const defaultColorResource = assignedResources.find((resource => resource.useColorAsDefault)); if (defaultColorResource) { return defaultColorResource } const assignedGroups = groups.filter((group => appointmentGroups.includes(group))); const availableGroupedResources = assignedGroups.map((group => assignedResources.find((resource => resource.resourceIndex === group)))).filter(Boolean); return availableGroupedResources.length ? availableGroupedResources.at(-1) : assignedResources.at(-1) }; exports.getPaintedResource = getPaintedResource; exports.getAppointmentColor = async (resources, groupsLeafs, groups, appointmentConfig) => { const { groupIndex: groupIndex, itemData: itemData } = appointmentConfig; const appointmentGroupValues = (0, _appointment_groups_utils.getAppointmentGroupValues)(itemData, resources); const appointmentGroups = Object.keys(appointmentGroupValues); const paintedResource = getPaintedResource(resources, appointmentGroups, groups); if (!paintedResource) { return } await paintedResource.load(); const leafGroupValue = (0, _group_utils.getLeafGroupValues)(groupsLeafs, groupIndex); const resourceValues = paintedResource.idsGetter(itemData); const resourceId = leafGroupValue[paintedResource.resourceIndex] ?? resourceValues[0]; return ((resource, resourceId) => { var _getResourceItemById; return null === (_getResourceItemById = (0, _appointment_groups_utils.getResourceItemById)(resource, resourceId)) || void 0 === _getResourceItemById ? void 0 : _getResourceItemById.color })(paintedResource, resourceId) } }, 11649: /*!*********************************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/scheduler/utils/resource_manager/appointment_groups_utils.js ***! \*********************************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.setAppointmentGroupValues = exports.groupAppointmentsByGroupLeafs = exports.getSafeGroupValues = exports.getResourceItemById = exports.getRawAppointmentGroupValues = exports.getAppointmentResources = exports.getAppointmentGroupValues = exports.getAppointmentGroupIndex = void 0; var _m_array = __webpack_require__( /*! ../../../core/utils/m_array */ 28601); var _m_common = __webpack_require__( /*! ../../../core/utils/m_common */ 39315); const getResourceItemById = (resource, resourceId) => resource.items.find((item => (0, _m_common.equalByValue)(item.id, resourceId))); exports.getResourceItemById = getResourceItemById; const getAppointmentGroupValues = (rawAppointment, resources) => resources.reduce(((result, resource) => { const ids = resource.idsGetter(rawAppointment); if (ids.length) { result[resource.resourceIndex] = ids } return result }), {}); exports.getAppointmentGroupValues = getAppointmentGroupValues; exports.getRawAppointmentGroupValues = (rawAppointment, resources) => resources.reduce(((result, resource) => { const ids = resource.idsGetter(rawAppointment); if (ids.length) { result[resource.resourceIndex] = resource.allowMultiple ? ids : ids[0] } return result }), {}); exports.getSafeGroupValues = groupValues => Object.entries(groupValues).reduce(((result, _ref) => { let [key, value] = _ref; result[key] = (0, _m_array.wrapToArray)(value); return result }), {}); exports.getAppointmentResources = (appointmentGroupValues, resourceById) => Object.entries(appointmentGroupValues).reduce(((result, _ref2) => { let [resourceIndex, resourceIds] = _ref2; const resource = resourceById[resourceIndex]; const values = resourceIds.map((id => { var _getResourceItemById; return null === (_getResourceItemById = getResourceItemById(resource, id)) || void 0 === _getResourceItemById ? void 0 : _getResourceItemById.text })).filter(Boolean); if (values.length) { result.push({ label: resource.resourceName, values: values }) } return result }), []); exports.setAppointmentGroupValues = function(item, resourceById) { let groups = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : {}; Object.entries(groups).forEach((_ref3 => { let [resourceIndex, resourceId] = _ref3; const resource = resourceById[resourceIndex]; const value = resource.allowMultiple ? [resourceId] : resourceId; resource.idsSetter(item, value) })) }; exports.getAppointmentGroupIndex = (appointmentGroupValues, groupLeafs) => groupLeafs.filter((leaf => Object.entries(leaf.grouped).every((_ref4 => { var _appointmentGroupValu; let [resourceIndex, resourceId] = _ref4; return null === (_appointmentGroupValu = appointmentGroupValues[resourceIndex]) || void 0 === _appointmentGroupValu ? void 0 : _appointmentGroupValu.includes(resourceId) })))).map((leaf => leaf.groupIndex)); exports.groupAppointmentsByGroupLeafs = (resourceById, groupLeafs, appointments) => { if (!groupLeafs.length) { return [appointments] } return groupLeafs.map((leaf => appointments.filter((item => { const appointmentGroupValues = getAppointmentGroupValues(item, Object.values(resourceById)); return Object.entries(leaf.grouped).every((_ref5 => { var _appointmentGroupValu2; let [resourceIndex, resourceId] = _ref5; return null === (_appointmentGroupValu2 = appointmentGroupValues[resourceIndex]) || void 0 === _appointmentGroupValu2 ? void 0 : _appointmentGroupValu2.includes(resourceId) })) })))) } }, 76131: /*!********************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/scheduler/utils/resource_manager/group_utils.js ***! \********************************************************************************************************/ function(__unused_webpack_module, exports) { Object.defineProperty(exports, "__esModule", { value: true }); exports.groupResources = exports.getResourcesByGroupIndex = exports.getLeafGroupValues = exports.getGroupTexts = exports.getAllGroupValues = void 0; function _extends() { return _extends = Object.assign ? Object.assign.bind() : function(n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) { ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]) } } return n }, _extends.apply(null, arguments) } exports.groupResources = (resourceById, groups) => { if (!groups.length || 0 === Object.keys(resourceById).length) { return { groupTree: [], groupLeafs: [] } } const head = [{}]; let leafs = head; groups.filter((group => resourceById[group])).forEach((group => { const resource = resourceById[group]; const nodes = resource.items.map((item => ({ resourceText: item.text, resourceIndex: resource.resourceIndex, grouped: { [resource.resourceIndex]: item.id }, children: [] }))); const nextLeafs = []; leafs.forEach((leaf => { leaf.children = nodes.map((node => _extends({}, node, { grouped: _extends({}, node.grouped, leaf.grouped) }))); nextLeafs.push(...leaf.children) })); leafs = nextLeafs })); const groupLeafs = leafs.map(((leaf, index) => _extends({}, leaf, { groupIndex: index }))); return { groupTree: head[0].children, groupLeafs: groupLeafs } }; exports.getAllGroupValues = groupsLeafs => groupsLeafs.map((group => group.grouped)); const getLeafGroupValues = (groupsLeafs, groupIndex) => { var _groupsLeafs$find; return (null === (_groupsLeafs$find = groupsLeafs.find((group => group.groupIndex === groupIndex))) || void 0 === _groupsLeafs$find ? void 0 : _groupsLeafs$find.grouped) ?? {} }; exports.getLeafGroupValues = getLeafGroupValues; exports.getGroupTexts = (groups, groupsLeafs, resourceById, groupIndex) => { const leafGroups = getLeafGroupValues(groupsLeafs, groupIndex); const textPath = groups.map((resourceIndex => { var _resource$items$find; const resourceId = leafGroups[resourceIndex]; const resource = resourceById[resourceIndex]; return null === resource || void 0 === resource || null === (_resource$items$find = resource.items.find((item => item.id === resourceId))) || void 0 === _resource$items$find ? void 0 : _resource$items$find.text })).filter(Boolean); return textPath }; exports.getResourcesByGroupIndex = (groupsLeafs, resourceById, groupIndex) => { const leafGroups = getLeafGroupValues(groupsLeafs, groupIndex); return Object.entries(resourceById).filter((_ref => { let [resourceIndex] = _ref; return void 0 !== leafGroups[resourceIndex] })).map((_ref2 => { let [resourceIndex, resource] = _ref2; return _extends({}, resource, { items: resource.items.filter((item => item.id === leafGroups[resourceIndex])) }) })) } }, 10533: /*!********************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/scheduler/utils/resource_manager/popup_utils.js ***! \********************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.createResourceEditorModel = void 0; var _themes = __webpack_require__( /*! ../../../../ui/themes */ 52071); exports.createResourceEditorModel = resourceById => Object.values(resourceById).map((resourceLoader => { const dataField = resourceLoader.resourceIndex; return { editorOptions: { dataSource: resourceLoader.dataSource, displayExpr: resourceLoader.dataAccessor.textExpr, valueExpr: resourceLoader.dataAccessor.idExpr, stylingMode: (0, _themes.isFluent)((0, _themes.current)()) ? "filled" : "outlined" }, dataField: dataField, editorType: resourceLoader.allowMultiple ? "dxTagBox" : "dxSelectBox", label: { text: resourceLoader.resourceName ?? dataField } } })) }, 42409: /*!*************************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/scheduler/utils/resource_manager/resource_manager.js ***! \*************************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.ResourceManager = void 0; var _appointment_resource_data_accessor = __webpack_require__( /*! ../data_accessor/appointment_resource_data_accessor */ 5450); var _resource_loader = __webpack_require__( /*! ../loader/resource_loader */ 9440); var _appointment_color_utils = __webpack_require__( /*! ./appointment_color_utils */ 97310); var _appointment_groups_utils = __webpack_require__( /*! ./appointment_groups_utils */ 11649); var _group_utils = __webpack_require__( /*! ./group_utils */ 76131); exports.ResourceManager = class { constructor(config) { this.resources = []; this.resourceById = {}; this.groups = []; this.groupsLeafs = []; this.groupsTree = []; null === config || void 0 === config || config.filter(_appointment_resource_data_accessor.getResourceIndex).forEach((item => { const loader = new _resource_loader.ResourceLoader(item); this.resourceById[loader.resourceIndex] = loader; this.resources.push(loader) })) } async load(groupsToLoad) { let forceReload = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : false; await Promise.all(groupsToLoad.map((group => { var _this$resourceById$gr; return null === (_this$resourceById$gr = this.resourceById[group]) || void 0 === _this$resourceById$gr ? void 0 : _this$resourceById$gr.load(forceReload) }))) } async loadGroupResources() { let groups = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : []; let forceReload = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : false; await this.load(groups, forceReload); const { groupTree: groupTree, groupLeafs: groupLeafs } = (0, _group_utils.groupResources)(this.resourceById, groups); this.groups = groups; this.groupsLeafs = groupLeafs; this.groupsTree = groupTree; return this.groupResources() } groupCount() { return this.groupsLeafs.length } groupResources() { return this.groups.map((group => this.resourceById[group])).filter(Boolean) } async loadAppointmentsResources(items) { let forceReload = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : false; const groupsToLoad = Object.keys(this.resourceById).filter((resourceIndex => !this.resourceById[resourceIndex].isLoaded() && items.some((item => this.resourceById[resourceIndex].idsGetter(item).length > 0)))); await this.load(groupsToLoad, forceReload) } async getAppointmentColor(appointmentConfig) { return (0, _appointment_color_utils.getAppointmentColor)(this.resources, this.groupsLeafs, this.groups, appointmentConfig) } async getAppointmentResourcesValues(appointment) { const appointmentGroups = (0, _appointment_groups_utils.getAppointmentGroupValues)(appointment, this.resources); const groups = Object.keys(appointmentGroups); await this.load(groups); return (0, _appointment_groups_utils.getAppointmentResources)(appointmentGroups, this.resourceById) } dispose() { Object.values(this.resourceById).forEach((item => item.dispose())) } } }, 79674: /*!**************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/scheduler/workspaces/const.js ***! \**************************************************************************************/ function(__unused_webpack_module, exports) { Object.defineProperty(exports, "__esModule", { value: true }); exports.WORK_SPACE_BORDER_PX = void 0; exports.WORK_SPACE_BORDER_PX = 1 }, 39979: /*!**********************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/scheduler/workspaces/helpers/m_position_helper.js ***! \**********************************************************************************************************/ function(__unused_webpack_module, exports) { Object.defineProperty(exports, "__esModule", { value: true }); exports.getMaxAllowedPosition = exports.getGroupWidth = exports.getCellWidth = exports.getCellHeight = exports.getAllDayHeight = exports.PositionHelper = void 0; function _extends() { return _extends = Object.assign ? Object.assign.bind() : function(n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) { ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]) } } return n }, _extends.apply(null, arguments) } const getCellSize = DOMMetaData => { const { dateTableCellsMeta: dateTableCellsMeta } = DOMMetaData; const length = null === dateTableCellsMeta || void 0 === dateTableCellsMeta ? void 0 : dateTableCellsMeta.length; if (!length) { return { width: 0, height: 0 } } const cellIndex = length > 1 ? 1 : 0; const cellSize = dateTableCellsMeta[cellIndex][0]; return { width: cellSize.width, height: cellSize.height } }; const getCellHeight = DOMMetaData => getCellSize(DOMMetaData).height; exports.getCellHeight = getCellHeight; const getCellWidth = DOMMetaData => getCellSize(DOMMetaData).width; exports.getCellWidth = getCellWidth; const getAllDayHeight = (showAllDayPanel, isVerticalGrouping, DOMMetaData) => { if (!showAllDayPanel) { return 0 } if (isVerticalGrouping) { const { dateTableCellsMeta: dateTableCellsMeta } = DOMMetaData; const length = null === dateTableCellsMeta || void 0 === dateTableCellsMeta ? void 0 : dateTableCellsMeta.length; return length ? dateTableCellsMeta[0][0].height : 0 } const { allDayPanelCellsMeta: allDayPanelCellsMeta } = DOMMetaData; return null !== allDayPanelCellsMeta && void 0 !== allDayPanelCellsMeta && allDayPanelCellsMeta.length ? allDayPanelCellsMeta[0].height : 0 }; exports.getAllDayHeight = getAllDayHeight; const getMaxAllowedPosition = (groupIndex, viewDataProvider, rtlEnabled, DOMMetaData) => { const validGroupIndex = groupIndex || 0; return ((groupIndex, viewDataProvider, rtlEnabled, DOMMetaData) => { const { dateTableCellsMeta: dateTableCellsMeta } = DOMMetaData; const firstRow = dateTableCellsMeta[0]; if (!firstRow) { return 0 } const { columnIndex: columnIndex } = viewDataProvider.getLastGroupCellPosition(groupIndex); const cellPosition = firstRow[columnIndex]; if (!cellPosition) { return 0 } return !rtlEnabled ? cellPosition.left + cellPosition.width : cellPosition.left })(validGroupIndex, viewDataProvider, rtlEnabled, DOMMetaData) }; exports.getMaxAllowedPosition = getMaxAllowedPosition; exports.getGroupWidth = (groupIndex, viewDataProvider, options) => { const { isVirtualScrolling: isVirtualScrolling, rtlEnabled: rtlEnabled, DOMMetaData: DOMMetaData } = options; const cellWidth = getCellWidth(DOMMetaData); let result = viewDataProvider.getCellCount(options) * cellWidth; if (isVirtualScrolling) { const groupedData = viewDataProvider.groupedDataMap.dateTableGroupedMap; const groupLength = groupedData[groupIndex][0].length; result = groupLength * cellWidth } const position = getMaxAllowedPosition(groupIndex, viewDataProvider, rtlEnabled, DOMMetaData); const currentPosition = position[groupIndex]; if (currentPosition) { if (rtlEnabled) { result = currentPosition - position[groupIndex + 1] } else if (0 === groupIndex) { result = currentPosition } else { result = currentPosition - position[groupIndex - 1] } } return result }; exports.PositionHelper = class { get viewDataProvider() { return this.options.viewDataProvider } get rtlEnabled() { return this.options.rtlEnabled } get isGroupedByDate() { return this.options.isGroupedByDate } get groupCount() { return this.options.groupCount } get DOMMetaData() { return this.options.getDOMMetaDataCallback() } constructor(options) { this.options = options; this.groupStrategy = this.options.isVerticalGrouping ? new GroupStrategyBase(this.options) : new GroupStrategyHorizontal(this.options) } getHorizontalMax(groupIndex) { const getMaxPosition = groupIndex => getMaxAllowedPosition(groupIndex, this.viewDataProvider, this.rtlEnabled, this.DOMMetaData); if (this.isGroupedByDate) { const viewPortGroupCount = this.viewDataProvider.getViewPortGroupCount(); return Math.max(getMaxPosition(groupIndex), getMaxPosition(viewPortGroupCount - 1)) } return getMaxPosition(groupIndex) } getResizableStep() { const cellWidth = getCellWidth(this.DOMMetaData); if (this.isGroupedByDate) { return this.groupCount * cellWidth } return cellWidth } getVerticalMax(options) { return this.groupStrategy.getVerticalMax(options) } getOffsetByAllDayPanel(options) { return this.groupStrategy.getOffsetByAllDayPanel(options) } getGroupTop(options) { return this.groupStrategy.getGroupTop(options) } }; class GroupStrategyBase { constructor(options) { this.options = options } get viewDataProvider() { return this.options.viewDataProvider } get isGroupedByDate() { return this.options.isGroupedByDate } get rtlEnabled() { return this.options.rtlEnabled } get groupCount() { return this.options.groupCount } get DOMMetaData() { return this.options.getDOMMetaDataCallback() } getOffsetByAllDayPanel(_ref) { let { groupIndex: groupIndex, supportAllDayRow: supportAllDayRow, showAllDayPanel: showAllDayPanel } = _ref; let result = 0; if (supportAllDayRow && showAllDayPanel) { const allDayPanelHeight = getAllDayHeight(showAllDayPanel, true, this.DOMMetaData); result = allDayPanelHeight * (groupIndex + 1) } return result } getVerticalMax(options) { let maxAllowedPosition = this._getMaxAllowedVerticalPosition(_extends({}, options, { viewDataProvider: this.viewDataProvider, rtlEnabled: this.rtlEnabled, DOMMetaData: this.DOMMetaData })); maxAllowedPosition += this.getOffsetByAllDayPanel(options); return maxAllowedPosition } getGroupTop(_ref2) { let { groupIndex: groupIndex, showAllDayPanel: showAllDayPanel, isGroupedAllDayPanel: isGroupedAllDayPanel } = _ref2; const rowCount = this.viewDataProvider.getRowCountInGroup(groupIndex); const maxVerticalPosition = this._getMaxAllowedVerticalPosition({ groupIndex: groupIndex, viewDataProvider: this.viewDataProvider, showAllDayPanel: showAllDayPanel, isGroupedAllDayPanel: isGroupedAllDayPanel, isVerticalGrouping: true, DOMMetaData: this.DOMMetaData }); return maxVerticalPosition - getCellHeight(this.DOMMetaData) * rowCount } _getAllDayHeight(showAllDayPanel) { return getAllDayHeight(showAllDayPanel, true, this.DOMMetaData) } _getMaxAllowedVerticalPosition(_ref3) { let { groupIndex: groupIndex, showAllDayPanel: showAllDayPanel, isGroupedAllDayPanel: isGroupedAllDayPanel } = _ref3; const { rowIndex: rowIndex } = this.viewDataProvider.getLastGroupCellPosition(groupIndex); const { dateTableCellsMeta: dateTableCellsMeta } = this.DOMMetaData; const lastGroupRow = dateTableCellsMeta[rowIndex]; if (!lastGroupRow) { return 0 } let result = lastGroupRow[0].top + lastGroupRow[0].height; if (isGroupedAllDayPanel) { result -= (groupIndex + 1) * this._getAllDayHeight(showAllDayPanel) } return result } } class GroupStrategyHorizontal extends GroupStrategyBase { getOffsetByAllDayPanel() { return 0 } getVerticalMax(options) { const { isVirtualScrolling: isVirtualScrolling, groupIndex: groupIndex } = options; const correctedGroupIndex = isVirtualScrolling ? groupIndex : 0; return this._getMaxAllowedVerticalPosition(_extends({}, options, { groupIndex: correctedGroupIndex })) } getGroupTop() { return 0 } _getAllDayHeight(showAllDayPanel) { return getAllDayHeight(showAllDayPanel, false, this.DOMMetaData) } } }, 11129: /*!*****************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/scheduler/workspaces/m_agenda.js ***! \*****************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _date = _interopRequireDefault(__webpack_require__( /*! ../../../common/core/localization/date */ 38662)); var _component_registrator = _interopRequireDefault(__webpack_require__( /*! ../../../core/component_registrator */ 92848)); var _dom_adapter = _interopRequireDefault(__webpack_require__( /*! ../../../core/dom_adapter */ 64960)); var _element = __webpack_require__( /*! ../../../core/element */ 61404); var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../../core/renderer */ 64553)); var _common = __webpack_require__( /*! ../../../core/utils/common */ 17781); var _date2 = _interopRequireDefault(__webpack_require__( /*! ../../../core/utils/date */ 41380)); var _extend = __webpack_require__( /*! ../../../core/utils/extend */ 52576); var _iterator = __webpack_require__( /*! ../../../core/utils/iterator */ 21274); var _size = __webpack_require__( /*! ../../../core/utils/size */ 57653); var _constants = __webpack_require__( /*! ../constants */ 25307); var _m_classes = __webpack_require__( /*! ../m_classes */ 80126); var _m_table_creator = _interopRequireDefault(__webpack_require__( /*! ../m_table_creator */ 92201)); var _index = __webpack_require__( /*! ../r1/utils/index */ 34396); var _agenda_group_utils = __webpack_require__( /*! ../utils/resource_manager/agenda_group_utils */ 80915); var _m_work_space = _interopRequireDefault(__webpack_require__( /*! ./m_work_space */ 45277)); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } const { tableCreator: tableCreator } = _m_table_creator.default; class SchedulerAgenda extends _m_work_space.default { get type() { return _constants.VIEWS.AGENDA } get renderingStrategy() { return this.invoke("getLayoutManager").getRenderingStrategyInstance() } get appointmentDataProvider() { return this.option("getAppointmentDataProvider")() } getStartViewDate() { return this._startViewDate } _init() { super._init(); this._activeStateUnit = void 0 } _getDefaultOptions() { return (0, _extend.extend)(super._getDefaultOptions(), { agendaDuration: 7, rowHeight: 60, noDataText: "" }) } _optionChanged(args) { const { name: name } = args; const { value: value } = args; switch (name) { case "agendaDuration": break; case "noDataText": case "rowHeight": this._recalculateAgenda(this._rows); break; case "groups": if (!(null !== value && void 0 !== value && value.length)) { if (this._$groupTable) { this._$groupTable.remove(); this._$groupTable = null; this._detachGroupCountClass() } } else if (!this._$groupTable) { this._initGroupTable(); this._dateTableScrollable.$content().prepend(this._$groupTable) } super._optionChanged(args); break; default: super._optionChanged(args) } } _renderFocusState() { return (0, _common.noop)() } _renderFocusTarget() { return (0, _common.noop)() } _cleanFocusState() { return (0, _common.noop)() } supportAllDayRow() { return false } _isVerticalGroupedWorkSpace() { return false } _getElementClass() { return "dx-scheduler-agenda" } _calculateStartViewDate() { return _index.agendaUtils.calculateStartViewDate(this.option("currentDate"), this.option("startDayHour")) } _getRowCount() { return this.option("agendaDuration") } _getCellCount() { return 1 } _getTimePanelRowCount() { return this.option("agendaDuration") } _renderAllDayPanel() { return (0, _common.noop)() } _updateAllDayVisibility() { return (0, _common.noop)() } _updateAllDayHeight() { return (0, _common.noop)() } _initWorkSpaceUnits() { this._initGroupTable(); this._$timePanel = (0, _renderer.default)("").attr("aria-hidden", true).addClass(_m_classes.TIME_PANEL_CLASS); this._$dateTable = (0, _renderer.default)("
").attr("aria-hidden", true).addClass(_m_classes.DATE_TABLE_CLASS); this._$dateTableScrollableContent = (0, _renderer.default)("
").addClass("dx-scheduler-date-table-scrollable-content"); this._$dateTableContainer = (0, _renderer.default)("
").addClass("dx-scheduler-date-table-container") } _initGroupTable() { const groups = this.option("groups"); if (null !== groups && void 0 !== groups && groups.length) { this._$groupTable = (0, _renderer.default)("
").attr("aria-hidden", true).addClass("dx-scheduler-group-table") } } _renderView() { this._startViewDate = this._calculateStartViewDate(); this._rows = []; this._initPositionHelper() } _recalculateAgenda(rows) { let cellTemplates = []; this._cleanView(); if (this._rowsIsEmpty(rows)) { this._renderNoData(); return } this._rows = rows; if (this._$groupTable) { cellTemplates = this._renderGroupHeader(); this._setGroupHeaderCellsHeight() } this._renderTimePanel(); this._renderDateTable(); this.invoke("onAgendaReady", rows); this._applyCellTemplates(cellTemplates); this._dateTableScrollable.update() } _renderNoData() { this._$noDataContainer = (0, _renderer.default)("
").addClass("dx-scheduler-agenda-nodata").html(this.option("noDataText")); this._dateTableScrollable.$content().append(this._$noDataContainer) } _setTableSizes() { return (0, _common.noop)() } _toggleHorizontalScrollClass() { return (0, _common.noop)() } _createCrossScrollingConfig(argument) { return (0, _common.noop)() } _setGroupHeaderCellsHeight() { const $cells = this._getGroupHeaderCells().filter(((_, element) => !element.getAttribute("rowSpan"))); const rows = this._removeEmptyRows(this._rows); if (!rows.length) { return } for (let i = 0; i < $cells.length; i++) { const $cellContent = $cells.eq(i).find(".dx-scheduler-group-header-content"); (0, _size.setOuterHeight)($cellContent, this._getGroupRowHeight(rows[i])) } } _rowsIsEmpty(rows) { let result = true; for (let i = 0; i < rows.length; i++) { const groupRow = rows[i]; for (let j = 0; j < groupRow.length; j++) { if (groupRow[j]) { result = false; break } } } return result } _attachGroupCountClass() { const className = (0, _index.getVerticalGroupCountClass)(this.option("groups")); this.$element().addClass(className) } _removeEmptyRows(rows) { const result = []; for (let i = 0; i < rows.length; i++) { if (rows[i].length && !(data = rows[i], !data.some((value => value > 0)))) { result.push(rows[i]) } } var data; return result } _getGroupHeaderContainer() { return this._$groupTable } _makeGroupRows() { const resourceManager = this.option("getResourceManager")(); const allAppointments = this.option("getFilteredItems")(); const tree = (0, _agenda_group_utils.reduceResourcesTree)(resourceManager.resourceById, resourceManager.groupsTree, allAppointments); const oldTree = (0, _agenda_group_utils.convertToOldTree)(resourceManager.resourceById, tree); const cellTemplate = this.option("resourceCellTemplate"); const getGroupHeaderContentClass = _m_classes.GROUP_HEADER_CONTENT_CLASS; const cellTemplates = []; const table = tableCreator.makeGroupedTableFromJSON(tableCreator.VERTICAL, oldTree, { cellTag: "th", groupTableClass: "dx-scheduler-group-table", groupRowClass: _m_classes.GROUP_ROW_CLASS, groupCellClass: this._getGroupHeaderClass(), groupCellCustomContent(cell, cellTextElement, index, data) { const container = _dom_adapter.default.createElement("div"); container.className = getGroupHeaderContentClass; if (null !== cellTemplate && void 0 !== cellTemplate && cellTemplate.render) { cellTemplates.push(cellTemplate.render.bind(cellTemplate, { model: { data: data.data, id: data.value, color: data.color, text: cellTextElement.textContent }, container: (0, _element.getPublicElement)((0, _renderer.default)(container)), index: index })) } else { const contentWrapper = _dom_adapter.default.createElement("div"); contentWrapper.appendChild(cellTextElement); container.appendChild(contentWrapper) } cell.appendChild(container) }, cellTemplate: cellTemplate }); return { elements: (0, _renderer.default)(table).find(`.${_m_classes.GROUP_ROW_CLASS}`), cellTemplates: cellTemplates } } _cleanView() { this._$dateTable.empty(); this._$timePanel.empty(); if (this._$groupTable) { this._$groupTable.empty() } if (this._$noDataContainer) { this._$noDataContainer.empty(); this._$noDataContainer.remove(); delete this._$noDataContainer } } _createWorkSpaceElements() { this._createWorkSpaceStaticElements() } _createWorkSpaceStaticElements() { this._$dateTableContainer.append(this._$dateTable); this._dateTableScrollable.$content().append(this._$dateTableScrollableContent); if (this._$groupTable) { this._$dateTableScrollableContent.prepend(this._$groupTable) } this._$dateTableScrollableContent.append(this._$timePanel, this._$dateTableContainer); this.$element().append(this._dateTableScrollable.$element()) } _renderDateTable() { this._renderTableBody({ container: (0, _element.getPublicElement)(this._$dateTable), rowClass: _m_classes.DATE_TABLE_ROW_CLASS, cellClass: this._getDateTableCellClass() }) } _attachTablesEvents() { return (0, _common.noop)() } _attachEvents() { return (0, _common.noop)() } _cleanCellDataCache() { return (0, _common.noop)() } isIndicationAvailable() { return false } _prepareCellTemplateOptions(text, date, rowIndex, $cell) { const leaf = this.resourceManager.groupsLeafs[rowIndex]; const groups = (null === leaf || void 0 === leaf ? void 0 : leaf.grouped) ?? {}; const groupIndex = null === leaf || void 0 === leaf ? void 0 : leaf.groupIndex; return { model: { text: text, date: date, groups: groups, groupIndex: groupIndex }, container: (0, _element.getPublicElement)($cell), index: rowIndex } } _renderTableBody(options, delayCellTemplateRendering) { const cellTemplates = []; const cellTemplateOpt = options.cellTemplate; this._$rows = []; let i; const fillTableBody = function(rowIndex, rowSize) { if (rowSize) { let date; let cellDateNumber; let cellDayName; const $row = (0, _renderer.default)("
"); const $td = (0, _renderer.default)("").append(this._$rows)); this._applyCellTemplates(cellTemplates) } _setLastRowClass() { if (this._rows.length > 1 && this._$rows.length) { const $lastRow = this._$rows[this._$rows.length - 1]; $lastRow.addClass("dx-scheduler-date-table-last-row") } } _renderTimePanel() { this._renderTableBody({ container: (0, _element.getPublicElement)(this._$timePanel), rowCount: this._getTimePanelRowCount(), cellCount: 1, rowClass: "dx-scheduler-time-panel-row", cellClass: "dx-scheduler-time-panel-cell", cellTemplate: this.option("dateCellTemplate"), getStartDate: this._getTimePanelStartDate.bind(this) }) } _getTimePanelStartDate(rowIndex) { const current = new Date(this.option("currentDate")); const cellDate = new Date(current.setDate(current.getDate() + rowIndex)); return cellDate } _getRowHeight(rowSize) { const baseHeight = this.option("rowHeight"); const innerOffset = 5 * (rowSize - 1); return rowSize ? baseHeight * rowSize + innerOffset + 20 : 0 } _getGroupRowHeight(groupRows) { if (!groupRows) { return } let result = 0; for (let i = 0; i < groupRows.length; i++) { result += this._getRowHeight(groupRows[i]) } return result } _calculateRows(appointments) { return this.renderingStrategy.calculateRows(appointments, this.option("agendaDuration"), this.option("currentDate")) } onDataSourceChanged(appointments) { super.onDataSourceChanged(); this._renderView(); const rows = this._calculateRows(appointments); this._recalculateAgenda(rows) } getAgendaVerticalStepHeight() { return this.option("rowHeight") } getEndViewDate() { const currentDate = new Date(this.option("currentDate")); const agendaDuration = this.option("agendaDuration"); currentDate.setHours(this.option("endDayHour")); const result = currentDate.setDate(currentDate.getDate() + agendaDuration - 1) - 6e4; return new Date(result) } getEndViewDateByEndDayHour() { return this.getEndViewDate() } getCellDataByCoordinates() { return { startDate: null, endDate: null } } updateScrollPosition(date) { const newDate = this.timeZoneCalculator.createDate(date, "toGrid"); const bounds = this.getVisibleBounds(); const startDateHour = newDate.getHours(); const startDateMinutes = newDate.getMinutes(); if (this.needUpdateScrollPosition(startDateHour, startDateMinutes, bounds, newDate)) { this.scrollToTime(startDateHour, startDateMinutes, newDate) } } needUpdateScrollPosition(hours, minutes, bounds, newData) { let isUpdateNeeded = false; if (hours < bounds.top.hours || hours > bounds.bottom.hours) { isUpdateNeeded = true } if (hours === bounds.top.hours && minutes < bounds.top.minutes) { isUpdateNeeded = true } if (hours === bounds.bottom.hours && minutes > bounds.top.minutes) { isUpdateNeeded = true } return isUpdateNeeded } renovatedRenderSupported() { return false } _setSelectedCellsByCellData() {} _getIntervalDuration() { return _date2.default.dateToMilliseconds("day") * this.option("intervalCount") } getDOMElementsMetaData() { return { dateTableCellsMeta: [ [{}] ], allDayPanelCellsMeta: [{}] } } }(0, _component_registrator.default)("dxSchedulerAgenda", SchedulerAgenda); exports.default = SchedulerAgenda }, 26691: /*!****************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/scheduler/workspaces/m_cache.js ***! \****************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.Cache = void 0; var _type = __webpack_require__( /*! ../../../core/utils/type */ 11528); exports.Cache = class { constructor() { this._cache = new Map } get size() { return this._cache.size } clear() { this._cache.clear() } get(name, callback) { if (!this._cache.has(name) && callback) { this.set(name, callback()) } return this._cache.get(name) } set(name, value) { (0, _type.isDefined)(value) && this._cache.set(name, value) } } }, 46380: /*!*************************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/scheduler/workspaces/m_cells_selection_controller.js ***! \*************************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.CellsSelectionController = void 0; var _index = __webpack_require__( /*! ../../scheduler/r1/utils/index */ 34396); function _extends() { return _extends = Object.assign ? Object.assign.bind() : function(n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) { ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]) } } return n }, _extends.apply(null, arguments) } exports.CellsSelectionController = class { handleArrowClick(options) { const { key: key, focusedCellPosition: focusedCellPosition, edgeIndices: edgeIndices, getCellDataByPosition: getCellDataByPosition, isAllDayPanelCell: isAllDayPanelCell } = options; let nextCellIndices; switch (key) { case "down": nextCellIndices = this.getCellFromNextRowPosition(focusedCellPosition, "next", edgeIndices); break; case "up": nextCellIndices = this.getCellFromNextRowPosition(focusedCellPosition, "prev", edgeIndices); break; case "left": nextCellIndices = this.getCellFromNextColumnPosition(_extends({}, options, { direction: "prev" })); break; case "right": nextCellIndices = this.getCellFromNextColumnPosition(_extends({}, options, { direction: "next" })) } const currentCellData = getCellDataByPosition(nextCellIndices.rowIndex, nextCellIndices.columnIndex, isAllDayPanelCell); return this.moveToCell(_extends({}, options, { currentCellData: currentCellData })) } getCellFromNextRowPosition(focusedCellPosition, direction, edgeIndices) { const { columnIndex: columnIndex, rowIndex: rowIndex } = focusedCellPosition; const deltaPosition = "next" === direction ? 1 : -1; const nextRowIndex = rowIndex + deltaPosition; const validRowIndex = nextRowIndex >= 0 && nextRowIndex <= edgeIndices.lastRowIndex ? nextRowIndex : rowIndex; return { columnIndex: columnIndex, rowIndex: validRowIndex } } getCellFromNextColumnPosition(options) { const { focusedCellPosition: focusedCellPosition, direction: direction, edgeIndices: edgeIndices, isRTL: isRTL, isGroupedByDate: isGroupedByDate, groupCount: groupCount, isMultiSelection: isMultiSelection, viewType: viewType } = options; const { columnIndex: columnIndex, rowIndex: rowIndex } = focusedCellPosition; const { firstColumnIndex: firstColumnIndex, lastColumnIndex: lastColumnIndex, firstRowIndex: firstRowIndex, lastRowIndex: lastRowIndex } = edgeIndices; const step = isGroupedByDate && isMultiSelection ? groupCount : 1; const sign = isRTL ? -1 : 1; const deltaColumnIndex = "next" === direction ? sign * step : -1 * sign * step; const nextColumnIndex = columnIndex + deltaColumnIndex; const isValidColumnIndex = nextColumnIndex >= firstColumnIndex && nextColumnIndex <= lastColumnIndex; if (isValidColumnIndex) { return { columnIndex: nextColumnIndex, rowIndex: rowIndex } } return (0, _index.isDateAndTimeView)(viewType) ? focusedCellPosition : this._processEdgeCell({ nextColumnIndex: nextColumnIndex, rowIndex: rowIndex, columnIndex: columnIndex, firstColumnIndex: firstColumnIndex, lastColumnIndex: lastColumnIndex, firstRowIndex: firstRowIndex, lastRowIndex: lastRowIndex, step: step }) } _processEdgeCell(options) { const { nextColumnIndex: nextColumnIndex, rowIndex: rowIndex, columnIndex: columnIndex, firstColumnIndex: firstColumnIndex, lastColumnIndex: lastColumnIndex, firstRowIndex: firstRowIndex, lastRowIndex: lastRowIndex, step: step } = options; let validColumnIndex = nextColumnIndex; let validRowIndex = rowIndex; const isLeftEdgeCell = nextColumnIndex < firstColumnIndex; const isRightEdgeCell = nextColumnIndex > lastColumnIndex; if (isLeftEdgeCell) { const columnIndexInNextRow = lastColumnIndex - (step - columnIndex % step - 1); const nextRowIndex = rowIndex - 1; const isValidRowIndex = nextRowIndex >= firstRowIndex; validRowIndex = isValidRowIndex ? nextRowIndex : rowIndex; validColumnIndex = isValidRowIndex ? columnIndexInNextRow : columnIndex } if (isRightEdgeCell) { const columnIndexInNextRow = firstColumnIndex + columnIndex % step; const nextRowIndex = rowIndex + 1; const isValidRowIndex = nextRowIndex <= lastRowIndex; validRowIndex = isValidRowIndex ? nextRowIndex : rowIndex; validColumnIndex = isValidRowIndex ? columnIndexInNextRow : columnIndex } return { columnIndex: validColumnIndex, rowIndex: validRowIndex } } moveToCell(options) { const { isMultiSelection: isMultiSelection, isMultiSelectionAllowed: isMultiSelectionAllowed, focusedCellData: focusedCellData, currentCellData: currentCellData } = options; const isValidMultiSelection = isMultiSelection && isMultiSelectionAllowed; const nextFocusedCellData = isValidMultiSelection ? this._getNextCellData(currentCellData, focusedCellData) : currentCellData; return nextFocusedCellData } _getNextCellData(nextFocusedCellData, focusedCellData, isVirtualCell) { if (isVirtualCell) { return focusedCellData } const isValidNextFocusedCell = this._isValidNextFocusedCell(nextFocusedCellData, focusedCellData); return isValidNextFocusedCell ? nextFocusedCellData : focusedCellData } _isValidNextFocusedCell(nextFocusedCellData, focusedCellData) { if (!focusedCellData) { return true } const { groupIndex: groupIndex, allDay: allDay } = focusedCellData; const { groupIndex: nextGroupIndex, allDay: nextAllDay } = nextFocusedCellData; return groupIndex === nextGroupIndex && allDay === nextAllDay } } }, 37331: /*!********************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/scheduler/workspaces/m_cells_selection_state.js ***! \********************************************************************************************************/ function(__unused_webpack_module, exports) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; exports.default = class { constructor(_viewDataProvider) { this._viewDataProvider = _viewDataProvider; this._focusedCell = null; this._selectedCells = null; this._firstSelectedCell = null; this._prevFocusedCell = null; this._prevSelectedCells = null } get viewDataProvider() { return this._viewDataProvider } get focusedCell() { const focusedCell = this._focusedCell; if (!focusedCell) { return } const { groupIndex: groupIndex, startDate: startDate, allDay: allDay } = focusedCell; const cellInfo = { groupIndex: groupIndex, startDate: startDate, isAllDay: allDay, index: focusedCell.index }; const cellPosition = this.viewDataProvider.findCellPositionInMap(cellInfo); return { coordinates: cellPosition, cellData: focusedCell } } setFocusedCell(rowIndex, columnIndex, isAllDay) { if (rowIndex >= 0) { const cell = this._viewDataProvider.getCellData(rowIndex, columnIndex, isAllDay); this._focusedCell = cell } } setSelectedCells(lastCellCoordinates) { let firstCellCoordinates = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : void 0; const viewDataProvider = this._viewDataProvider; const { rowIndex: lastRowIndex, columnIndex: lastColumnIndex, allDay: isLastCellAllDay } = lastCellCoordinates; if (lastRowIndex < 0) { return } const firstCell = firstCellCoordinates ? viewDataProvider.getCellData(firstCellCoordinates.rowIndex, firstCellCoordinates.columnIndex, firstCellCoordinates.allDay) : this._firstSelectedCell; const lastCell = viewDataProvider.getCellData(lastRowIndex, lastColumnIndex, isLastCellAllDay); this._firstSelectedCell = firstCell; this._selectedCells = this._viewDataProvider.getCellsBetween(firstCell, lastCell) } setSelectedCellsByData(selectedCellsData) { this._selectedCells = selectedCellsData } getSelectedCells() { return this._selectedCells } releaseSelectedAndFocusedCells() { this.releaseSelectedCells(); this.releaseFocusedCell() } releaseSelectedCells() { this._prevSelectedCells = this._selectedCells; this._prevFirstSelectedCell = this._firstSelectedCell; this._selectedCells = null; this._firstSelectedCell = null } releaseFocusedCell() { this._prevFocusedCell = this._focusedCell; this._focusedCell = null } restoreSelectedAndFocusedCells() { this._selectedCells = this._selectedCells || this._prevSelectedCells; this._focusedCell = this._focusedCell || this._prevFocusedCell; this._firstSelectedCell = this._firstSelectedCell || this._prevFirstSelectedCell; this._prevSelectedCells = null; this._prevFirstSelectedCell = null; this._prevFocusedCell = null } clearSelectedAndFocusedCells() { this._prevSelectedCells = null; this._selectedCells = null; this._prevFocusedCell = null; this._focusedCell = null } } }, 90214: /*!*******************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/scheduler/workspaces/m_timeline.js ***! \*******************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _component_registrator = _interopRequireDefault(__webpack_require__( /*! ../../../core/component_registrator */ 92848)); var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../../core/renderer */ 64553)); var _common = __webpack_require__( /*! ../../../core/utils/common */ 17781); var _date = _interopRequireDefault(__webpack_require__( /*! ../../../core/utils/date */ 41380)); var _extend = __webpack_require__( /*! ../../../core/utils/extend */ 52576); var _position = __webpack_require__( /*! ../../../core/utils/position */ 41639); var _size = __webpack_require__( /*! ../../../core/utils/size */ 57653); var _window = __webpack_require__( /*! ../../../core/utils/window */ 3104); var _index = __webpack_require__( /*! ../../scheduler/r1/components/index */ 19747); var _index2 = __webpack_require__( /*! ../../scheduler/r1/utils/index */ 34396); var _m_classes = __webpack_require__( /*! ../m_classes */ 80126); var _m_table_creator = _interopRequireDefault(__webpack_require__( /*! ../m_table_creator */ 92201)); var _m_utils_time_zone = _interopRequireDefault(__webpack_require__( /*! ../m_utils_time_zone */ 18648)); var _m_current_time_shader_horizontal = _interopRequireDefault(__webpack_require__( /*! ../shaders/m_current_time_shader_horizontal */ 18129)); var _m_work_space_indicator = _interopRequireDefault(__webpack_require__( /*! ./m_work_space_indicator */ 6523)); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } function _extends() { return _extends = Object.assign ? Object.assign.bind() : function(n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) { ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]) } } return n }, _extends.apply(null, arguments) } const { tableCreator: tableCreator } = _m_table_creator.default; const toMs = _date.default.dateToMilliseconds; class SchedulerTimeline extends _m_work_space_indicator.default { constructor() { super(...arguments); this.viewDirection = "horizontal" } get verticalGroupTableClass() { return "dx-scheduler-group-table" } get renovatedHeaderPanelComponent() { return _index.HeaderPanelTimelineComponent } getGroupTableWidth() { return this._$sidebarTable ? (0, _size.getOuterWidth)(this._$sidebarTable) : 0 } _getTotalRowCount(groupCount) { if (this._isHorizontalGroupedWorkSpace()) { return this._getRowCount() } groupCount = groupCount || 1; return this._getRowCount() * groupCount } _getFormat() { return "shorttime" } _getWorkSpaceHeight() { if (this.option("crossScrollingEnabled") && (0, _window.hasWindow)()) { return (0, _position.getBoundingRect)(this._$dateTable.get(0)).height } return (0, _position.getBoundingRect)(this.$element().get(0)).height } _dateTableScrollableConfig() { const config = super._dateTableScrollableConfig(); const timelineConfig = { direction: "horizontal" }; return this.option("crossScrollingEnabled") ? config : (0, _extend.extend)(config, timelineConfig) } _needCreateCrossScrolling() { return true } _headerScrollableConfig() { const config = super._headerScrollableConfig(); return (0, _extend.extend)(config, { scrollByContent: true }) } supportAllDayRow() { return false } _getGroupHeaderContainer() { if (this._isHorizontalGroupedWorkSpace()) { return this._$thead } return this._$sidebarTable } _insertAllDayRowsIntoDateTable() { return false } _needRenderWeekHeader() { return false } _incrementDate(date) { date.setDate(date.getDate() + 1) } getIndicationCellCount() { const timeDiff = this._getTimeDiff(); return this._calculateDurationInCells(timeDiff) } _getTimeDiff() { let today = this._getToday(); const date = this._getIndicationFirstViewDate(); const startViewDate = this.getStartViewDate(); const dayLightOffset = _m_utils_time_zone.default.getDaylightOffsetInMs(startViewDate, today); if (dayLightOffset) { today = new Date(today.getTime() + dayLightOffset) } return today.getTime() - date.getTime() } _calculateDurationInCells(timeDiff) { const today = this._getToday(); const differenceInDays = Math.floor(timeDiff / toMs("day")); let duration = (timeDiff - differenceInDays * toMs("day") - this.option("startDayHour") * toMs("hour")) / this.getCellDuration(); if (today.getHours() > this.option("endDayHour")) { duration = this._getCellCountInDay() } if (duration < 0) { duration = 0 } return differenceInDays * this._getCellCountInDay() + duration } getIndicationWidth() { if (this.isGroupedByDate()) { const cellCount = this.getIndicationCellCount(); const integerPart = Math.floor(cellCount); const fractionPart = cellCount - integerPart; return this.getCellWidth() * (integerPart * this._getGroupCount() + fractionPart) } return this.getIndicationCellCount() * this.getCellWidth() } _isVerticalShader() { return false } _isCurrentTimeHeaderCell() { return false } _setTableSizes() { super._setTableSizes(); const minHeight = this._getWorkSpaceMinHeight(); (0, _size.setHeight)(this._$sidebarTable, minHeight); (0, _size.setHeight)(this._$dateTable, minHeight); this.virtualScrollingDispatcher.updateDimensions() } _getWorkSpaceMinHeight() { let minHeight = this._getWorkSpaceHeight(); const workspaceContainerHeight = (0, _size.getOuterHeight)(this._$flexContainer, true); if (minHeight < workspaceContainerHeight) { minHeight = workspaceContainerHeight } return minHeight } _getCellCoordinatesByIndex(index) { return { columnIndex: index % this._getCellCount(), rowIndex: 0 } } _getCellByCoordinates(cellCoordinates, groupIndex) { const indexes = this._groupedStrategy.prepareCellIndexes(cellCoordinates, groupIndex); return this._$dateTable.find("tr").eq(indexes.rowIndex).find("td").eq(indexes.columnIndex) } _getWorkSpaceWidth() { return (0, _size.getOuterWidth)(this._$dateTable, true) } _getIndicationFirstViewDate() { return _date.default.trimTime(new Date(this.getStartViewDate())) } _getIntervalBetween(currentDate, allDay) { const startDayHour = this.option("startDayHour"); const endDayHour = this.option("endDayHour"); const firstViewDate = this.getStartViewDate(); const firstViewDateTime = firstViewDate.getTime(); const hiddenInterval = (24 - endDayHour + startDayHour) * toMs("hour"); const timeZoneOffset = _date.default.getTimezonesDifference(firstViewDate, currentDate); const apptStart = currentDate.getTime(); const fullInterval = apptStart - firstViewDateTime - timeZoneOffset; const fullDays = Math.floor(fullInterval / toMs("day")); const tailDuration = fullInterval - fullDays * toMs("day"); let tailDelta = 0; const cellCount = this._getCellCountInDay() * (fullDays - this._getWeekendsCount(fullDays)); const gapBeforeAppt = apptStart - _date.default.trimTime(new Date(currentDate)).getTime(); let result = cellCount * this.option("hoursInterval") * toMs("hour"); if (!allDay) { if (currentDate.getHours() < startDayHour) { tailDelta = tailDuration - hiddenInterval + gapBeforeAppt } else if (currentDate.getHours() >= startDayHour && currentDate.getHours() < endDayHour) { tailDelta = tailDuration } else if (currentDate.getHours() >= startDayHour && currentDate.getHours() >= endDayHour) { tailDelta = tailDuration - (gapBeforeAppt - endDayHour * toMs("hour")) } else if (!fullDays) { result = fullInterval } result += tailDelta } return result } _getWeekendsCount(argument) { return 0 } getAllDayContainer() { return null } getTimePanelWidth() { return 0 } getIntervalDuration(allDay) { return this.getCellDuration() } getCellMinWidth() { return 0 } getWorkSpaceLeftOffset() { return 0 } scrollToTime(hours, minutes, date) { const coordinates = this._getScrollCoordinates(hours, minutes, date); const scrollable = this.getScrollable(); const offset = this.option("rtlEnabled") ? (0, _position.getBoundingRect)(this.getScrollableContainer().get(0)).width : 0; if (this.option("templatesRenderAsynchronously")) { setTimeout((() => { scrollable.scrollBy({ left: coordinates.left - scrollable.scrollLeft() - offset, top: 0 }) })) } else { scrollable.scrollBy({ left: coordinates.left - scrollable.scrollLeft() - offset, top: 0 }) } } renderRAllDayPanel() {} renderRTimeTable() {} _renderGroupAllDayPanel() {} generateRenderOptions(argument) { const options = super.generateRenderOptions(true); return _extends({}, options, { isGenerateWeekDaysHeaderData: this._needRenderWeekHeader(), getDateForHeaderText: _index2.timelineWeekUtils.getDateForHeaderText }) } _init() { super._init(); this.$element().addClass("dx-scheduler-timeline"); this._$sidebarTable = (0, _renderer.default)("
").addClass("dx-scheduler-group-table") } _getDefaultGroupStrategy() { return "vertical" } _toggleGroupingDirectionClass() { this.$element().toggleClass("dx-scheduler-work-space-horizontal-grouped", this._isHorizontalGroupedWorkSpace()) } _getDefaultOptions() { return (0, _extend.extend)(super._getDefaultOptions(), { groupOrientation: "vertical" }) } _createWorkSpaceElements() { this._createWorkSpaceScrollableElements() } _updateAllDayVisibility() { return (0, _common.noop)() } _updateAllDayHeight() { return (0, _common.noop)() } _getDateHeaderTemplate() { return this.option("timeCellTemplate") } _renderView() { let groupCellTemplates; if (!this.isRenovatedRender()) { groupCellTemplates = this._renderGroupHeader() } this.renderWorkSpace(); if (this.isRenovatedRender()) { this.virtualScrollingDispatcher.updateDimensions() } this._shader = new _m_current_time_shader_horizontal.default(this); this._$sidebarTable.appendTo(this._sidebarScrollable.$content()); if (this.isRenovatedRender() && this._isVerticalGroupedWorkSpace()) { this.renderRGroupPanel() } this.updateHeaderEmptyCellWidth(); this._applyCellTemplates(groupCellTemplates) } _setHorizontalGroupHeaderCellsHeight() { return (0, _common.noop)() } _getTimePanelCells() { return this.$element().find(".dx-scheduler-header-panel-cell:not(.dx-scheduler-header-panel-week-cell)") } _getCurrentTimePanelCellIndices() { const columnCountPerGroup = this._getCellCount(); const today = this._getToday(); const index = this.getCellIndexByDate(today); const { columnIndex: currentTimeColumnIndex } = this._getCellCoordinatesByIndex(index); if (void 0 === currentTimeColumnIndex) { return [] } const horizontalGroupCount = this._isHorizontalGroupedWorkSpace() && !this.isGroupedByDate() ? this._getGroupCount() : 1; return [...new Array(horizontalGroupCount)].map(((_, groupIndex) => columnCountPerGroup * groupIndex + currentTimeColumnIndex)) } _renderTimePanel() { return (0, _common.noop)() } _renderAllDayPanel() { return (0, _common.noop)() } _createAllDayPanelElements() { return (0, _common.noop)() } _renderDateHeader() { const $headerRow = super._renderDateHeader(); if (this._needRenderWeekHeader()) { const firstViewDate = new Date(this.getStartViewDate()); let currentDate = new Date(firstViewDate); const $cells = []; const groupCount = this._getGroupCount(); const cellCountInDay = this._getCellCountInDay(); const colSpan = this.isGroupedByDate() ? cellCountInDay * groupCount : cellCountInDay; const cellTemplate = this.option("dateCellTemplate"); const horizontalGroupCount = this._isHorizontalGroupedWorkSpace() && !this.isGroupedByDate() ? groupCount : 1; const cellsInGroup = this.viewDataProvider.viewDataGenerator.daysInInterval * this.option("intervalCount"); const cellsCount = cellsInGroup * horizontalGroupCount; for (let templateIndex = 0; templateIndex < cellsCount; templateIndex++) { const $th = (0, _renderer.default)("
").addClass("dx-scheduler-header-row").append($cells); $headerRow.before($row) } } _renderIndicator(height, rtlOffset, $container, groupCount) { let $indicator; const width = this.getIndicationWidth(); if ("vertical" === this.option("groupOrientation")) { $indicator = this._createIndicator($container); (0, _size.setHeight)($indicator, (0, _position.getBoundingRect)($container.get(0)).height); $indicator.css("left", rtlOffset ? rtlOffset - width : width) } else { for (let i = 0; i < groupCount; i++) { const offset = this.isGroupedByDate() ? i * this.getCellWidth() : this._getCellCount() * this.getCellWidth() * i; $indicator = this._createIndicator($container); (0, _size.setHeight)($indicator, (0, _position.getBoundingRect)($container.get(0)).height); $indicator.css("left", rtlOffset ? rtlOffset - width - offset : width + offset) } } } _makeGroupRows(groups, groupByDate) { const tableCreatorStrategy = "vertical" === this.option("groupOrientation") ? tableCreator.VERTICAL : tableCreator.HORIZONTAL; return tableCreator.makeGroupedTable(tableCreatorStrategy, groups, { groupRowClass: _m_classes.GROUP_ROW_CLASS, groupHeaderRowClass: _m_classes.GROUP_ROW_CLASS, groupHeaderClass: this._getGroupHeaderClass.bind(this), groupHeaderContentClass: _m_classes.GROUP_HEADER_CONTENT_CLASS }, this._getCellCount() || 1, this.option("resourceCellTemplate"), this._getTotalRowCount(this._getGroupCount()), groupByDate) } _setCurrentTimeCells() { const timePanelCells = this._getTimePanelCells(); const currentTimeCellIndices = this._getCurrentTimePanelCellIndices(); currentTimeCellIndices.forEach((timePanelCellIndex => { timePanelCells.eq(timePanelCellIndex).addClass(_m_classes.HEADER_CURRENT_TIME_CELL_CLASS) })) } _cleanCurrentTimeCells() { this.$element().find(`.${_m_classes.HEADER_CURRENT_TIME_CELL_CLASS}`).removeClass(_m_classes.HEADER_CURRENT_TIME_CELL_CLASS) } }(0, _component_registrator.default)("dxSchedulerTimeline", SchedulerTimeline); exports.default = SchedulerTimeline }, 52515: /*!***********************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/scheduler/workspaces/m_timeline_day.js ***! \***********************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _component_registrator = _interopRequireDefault(__webpack_require__( /*! ../../../core/component_registrator */ 92848)); var _constants = __webpack_require__( /*! ../constants */ 25307); var _m_timeline = _interopRequireDefault(__webpack_require__( /*! ./m_timeline */ 90214)); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } class SchedulerTimelineDay extends _m_timeline.default { get type() { return _constants.VIEWS.TIMELINE_DAY } _getElementClass() { return "dx-scheduler-timeline-day" } _needRenderWeekHeader() { return this._isWorkSpaceWithCount() } }(0, _component_registrator.default)("dxSchedulerTimelineDay", SchedulerTimelineDay); exports.default = SchedulerTimelineDay }, 23791: /*!*************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/scheduler/workspaces/m_timeline_month.js ***! \*************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _component_registrator = _interopRequireDefault(__webpack_require__( /*! ../../../core/component_registrator */ 92848)); var _date = _interopRequireDefault(__webpack_require__( /*! ../../../core/utils/date */ 41380)); var _index = __webpack_require__( /*! ../../scheduler/r1/components/index */ 19747); var _index2 = __webpack_require__( /*! ../../scheduler/r1/utils/index */ 34396); var _constants = __webpack_require__( /*! ../constants */ 25307); var _m_timeline = _interopRequireDefault(__webpack_require__( /*! ./m_timeline */ 90214)); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } function _extends() { return _extends = Object.assign ? Object.assign.bind() : function(n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) { ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]) } } return n }, _extends.apply(null, arguments) } class SchedulerTimelineMonth extends _m_timeline.default { constructor() { super(...arguments); this.viewDirection = "horizontal" } get type() { return _constants.VIEWS.TIMELINE_MONTH } get renovatedHeaderPanelComponent() { return _index.HeaderPanelComponent } _renderView() { super._renderView(); this._updateScrollable() } _getElementClass() { return "dx-scheduler-timeline-month" } _getDateHeaderTemplate() { return this.option("dateCellTemplate") } _calculateDurationInCells(timeDiff) { return timeDiff / this.getCellDuration() } isIndicatorVisible() { return true } _getFormat() { return _index2.formatWeekdayAndDay } _getIntervalBetween(currentDate) { const firstViewDate = this.getStartViewDate(); const timeZoneOffset = _date.default.getTimezonesDifference(firstViewDate, currentDate); return currentDate.getTime() - (firstViewDate.getTime() - 36e5 * this.option("startDayHour")) - timeZoneOffset } _getViewStartByOptions() { return _index2.monthUtils.getViewStartByOptions(this.option("startDate"), this.option("currentDate"), this.option("intervalCount"), _date.default.getFirstMonthDate(this.option("startDate"))) } generateRenderOptions() { const options = super.generateRenderOptions(true); return _extends({}, options, { getDateForHeaderText: (_, date) => date }) } keepOriginalHours() { return true } }(0, _component_registrator.default)("dxSchedulerTimelineMonth", SchedulerTimelineMonth); exports.default = SchedulerTimelineMonth }, 10621: /*!************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/scheduler/workspaces/m_timeline_week.js ***! \************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _component_registrator = _interopRequireDefault(__webpack_require__( /*! ../../../core/component_registrator */ 92848)); var _position = __webpack_require__( /*! ../../../core/utils/position */ 41639); var _constants = __webpack_require__( /*! ../constants */ 25307); var _m_timeline = _interopRequireDefault(__webpack_require__( /*! ./m_timeline */ 90214)); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } class SchedulerTimelineWeek extends _m_timeline.default { get type() { return _constants.VIEWS.TIMELINE_WEEK } _getElementClass() { return "dx-scheduler-timeline-week" } _getHeaderPanelCellWidth($headerRow) { return (0, _position.getBoundingRect)($headerRow.children().first().get(0)).width } _needRenderWeekHeader() { return true } _incrementDate(date) { date.setDate(date.getDate() + 1) } } exports.default = SchedulerTimelineWeek; (0, _component_registrator.default)("dxSchedulerTimelineWeek", SchedulerTimelineWeek) }, 64063: /*!*****************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/scheduler/workspaces/m_timeline_work_week.js ***! \*****************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _component_registrator = _interopRequireDefault(__webpack_require__( /*! ../../../core/component_registrator */ 92848)); var _index = __webpack_require__( /*! ../../scheduler/r1/utils/index */ 34396); var _constants = __webpack_require__( /*! ../constants */ 25307); var _m_timeline_week = _interopRequireDefault(__webpack_require__( /*! ./m_timeline_week */ 10621)); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } class SchedulerTimelineWorkWeek extends _m_timeline_week.default { get type() { return _constants.VIEWS.TIMELINE_WORK_WEEK } constructor() { super(...arguments); this._getWeekendsCount = _index.getWeekendsCount } _getElementClass() { return "dx-scheduler-timeline-work-week" } _incrementDate(date) { const day = date.getDay(); if (5 === day) { date.setDate(date.getDate() + 2) } super._incrementDate(date) } }(0, _component_registrator.default)("dxSchedulerTimelineWorkWeek", SchedulerTimelineWorkWeek); exports.default = SchedulerTimelineWorkWeek }, 65874: /*!****************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/scheduler/workspaces/m_virtual_scrolling.js ***! \****************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.VirtualScrollingRenderer = exports.VirtualScrollingDispatcher = void 0; var _events_engine = _interopRequireDefault(__webpack_require__( /*! ../../../common/core/events/core/events_engine */ 92774)); var _index = __webpack_require__( /*! ../../../common/core/events/utils/index */ 98834); var _dom_adapter = _interopRequireDefault(__webpack_require__( /*! ../../../core/dom_adapter */ 64960)); var _type = __webpack_require__( /*! ../../../core/utils/type */ 11528); var _window = __webpack_require__( /*! ../../../core/utils/window */ 3104); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } function _extends() { return _extends = Object.assign ? Object.assign.bind() : function(n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) { ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]) } } return n }, _extends.apply(null, arguments) } const DOCUMENT_SCROLL_EVENT_NAMESPACE = (0, _index.addNamespace)("scroll", "dxSchedulerVirtualScrolling"); const scrollingOrientations_vertical = "vertical", scrollingOrientations_horizontal = "horizontal", scrollingOrientations_both = "both", scrollingOrientations_none = "none"; const DefaultScrollingOrientation = scrollingOrientations_both; exports.VirtualScrollingDispatcher = class { constructor(options) { this.options = options; if (options) { this._rowHeight = this.getCellHeight(); this._cellWidth = this.getCellWidth(); this._createVirtualScrollingBase() } } get isRTL() { return this.options.isRTL() } get verticalVirtualScrolling() { return this._verticalVirtualScrolling } set verticalVirtualScrolling(value) { this._verticalVirtualScrolling = value } get horizontalVirtualScrolling() { return this._horizontalVirtualScrolling } set horizontalVirtualScrolling(value) { this._horizontalVirtualScrolling = value } get document() { return _dom_adapter.default.getDocument() } get height() { return this.options.getSchedulerHeight() } get width() { return this.options.getSchedulerWidth() } get rowHeight() { return this._rowHeight } set rowHeight(value) { this._rowHeight = value } get outlineCount() { return this.options.getScrolling().outlineCount } get cellWidth() { return this._cellWidth } set cellWidth(value) { this._cellWidth = value } get viewportWidth() { const width = this.width && this.options.getViewWidth(); return width > 0 ? width : this.options.getWindowWidth() } get viewportHeight() { const height = this.height && this.options.getViewHeight(); return height > 0 ? height : this.options.getWindowHeight() } get cellCountInsideTopVirtualRow() { var _this$verticalScrolli; return (null === (_this$verticalScrolli = this.verticalScrollingState) || void 0 === _this$verticalScrolli ? void 0 : _this$verticalScrolli.virtualItemCountBefore) || 0 } get cellCountInsideLeftVirtualCell() { var _this$horizontalScrol; return (null === (_this$horizontalScrol = this.horizontalScrollingState) || void 0 === _this$horizontalScrol ? void 0 : _this$horizontalScrol.virtualItemCountBefore) || 0 } get cellCountInsideRightVirtualCell() { var _this$horizontalScrol2; return (null === (_this$horizontalScrol2 = this.horizontalScrollingState) || void 0 === _this$horizontalScrol2 ? void 0 : _this$horizontalScrol2.virtualItemCountAfter) || 0 } get topVirtualRowsCount() { return this.cellCountInsideTopVirtualRow > 0 ? 1 : 0 } get leftVirtualCellsCount() { const virtualItemsCount = !this.isRTL ? this.cellCountInsideLeftVirtualCell : this.cellCountInsideRightVirtualCell; return Math.ceil(virtualItemsCount / 1e3) } get virtualRowOffset() { var _this$verticalScrolli2; return (null === (_this$verticalScrolli2 = this.verticalScrollingState) || void 0 === _this$verticalScrolli2 ? void 0 : _this$verticalScrolli2.virtualItemSizeBefore) || 0 } get virtualCellOffset() { var _this$horizontalScrol3; return (null === (_this$horizontalScrol3 = this.horizontalScrollingState) || void 0 === _this$horizontalScrol3 ? void 0 : _this$horizontalScrol3.virtualItemSizeBefore) || 0 } get scrollingState() { var _this$verticalVirtual, _this$horizontalVirtu; return { vertical: null === (_this$verticalVirtual = this.verticalVirtualScrolling) || void 0 === _this$verticalVirtual ? void 0 : _this$verticalVirtual.state, horizontal: null === (_this$horizontalVirtu = this.horizontalVirtualScrolling) || void 0 === _this$horizontalVirtu ? void 0 : _this$horizontalVirtu.state } } get verticalScrollingState() { return this.scrollingState.vertical } get horizontalScrollingState() { return this.scrollingState.horizontal } get scrollingOrientation() { const scrolling = this.options.getScrolling(); if ("standard" === scrolling.mode) { return scrollingOrientations_none } return scrolling.orientation || DefaultScrollingOrientation } get verticalScrollingAllowed() { return this.scrollingOrientation === scrollingOrientations_vertical || this.scrollingOrientation === scrollingOrientations_both } get horizontalScrollingAllowed() { return this.scrollingOrientation === scrollingOrientations_horizontal || this.scrollingOrientation === scrollingOrientations_both } setViewOptions(options) { this.options = options; if (this.verticalVirtualScrolling) { this.verticalVirtualScrolling.options = options; this.verticalVirtualScrolling.itemSize = this.rowHeight; this.verticalVirtualScrolling.viewportSize = this.viewportHeight } if (this.horizontalVirtualScrolling) { this.horizontalVirtualScrolling.options = options; this.verticalVirtualScrolling.itemSize = this.cellWidth; this.verticalVirtualScrolling.viewportSize = this.viewportWidth } } getRenderState() { var _this$verticalVirtual2, _this$horizontalVirtu2; const verticalRenderState = (null === (_this$verticalVirtual2 = this.verticalVirtualScrolling) || void 0 === _this$verticalVirtual2 ? void 0 : _this$verticalVirtual2.getRenderState()) || {}; const horizontalRenderState = (null === (_this$horizontalVirtu2 = this.horizontalVirtualScrolling) || void 0 === _this$horizontalVirtu2 ? void 0 : _this$horizontalVirtu2.getRenderState()) || {}; return _extends({}, verticalRenderState, horizontalRenderState) } getCellHeight() { const cellHeight = this.options.getCellHeight(); const result = cellHeight > 0 ? cellHeight : 50; return Math.floor(result) } getCellWidth() { let cellWidth = this.options.getCellWidth(); const minCellWidth = this.options.getCellMinWidth(); if (!cellWidth || cellWidth < minCellWidth) { cellWidth = minCellWidth } const result = cellWidth > 0 ? cellWidth : 1; return Math.floor(result) } calculateCoordinatesByDataAndPosition(cellData, position, date, isCalculateTime, isVerticalDirectionView) { const { rowIndex: rowIndex, columnIndex: columnIndex } = position; const { startDate: startDate, endDate: endDate, allDay: allDay } = cellData; const timeToScroll = date.getTime(); const cellStartTime = startDate.getTime(); const cellEndTime = endDate.getTime(); const scrollInCell = allDay || !isCalculateTime ? 0 : (timeToScroll - cellStartTime) / (cellEndTime - cellStartTime); const cellWidth = this.getCellWidth(); const rowHeight = this.getCellHeight(); const top = isVerticalDirectionView ? (rowIndex + scrollInCell) * rowHeight : rowIndex * rowHeight; let left = isVerticalDirectionView ? columnIndex * cellWidth : (columnIndex + scrollInCell) * cellWidth; if (this.isRTL) { left = this.options.getScrollableOuterWidth() - left } return { top: top, left: left } } dispose() { if (this._onScrollHandler) { _events_engine.default.off(this.document, DOCUMENT_SCROLL_EVENT_NAMESPACE, this._onScrollHandler) } } createVirtualScrolling() { const isVerticalVirtualScrollingCreated = !!this.verticalVirtualScrolling; const isHorizontalVirtualScrollingCreated = !!this.horizontalVirtualScrolling; if (this.verticalScrollingAllowed !== isVerticalVirtualScrollingCreated || this.horizontalScrollingAllowed !== isHorizontalVirtualScrollingCreated) { this._rowHeight = this.getCellHeight(); this._cellWidth = this.getCellWidth(); this._createVirtualScrollingBase() } } _createVirtualScrollingBase() { if (this.verticalScrollingAllowed) { this.verticalVirtualScrolling = new VerticalVirtualScrolling(_extends({}, this.options, { viewportHeight: this.viewportHeight, rowHeight: this.rowHeight, outlineCount: this.outlineCount })) } if (this.horizontalScrollingAllowed) { this.horizontalVirtualScrolling = new HorizontalVirtualScrolling(_extends({}, this.options, { viewportWidth: this.viewportWidth, cellWidth: this.cellWidth, outlineCount: this.outlineCount })) } } isAttachWindowScrollEvent() { return (this.horizontalScrollingAllowed || this.verticalScrollingAllowed) && !this.height } attachScrollableEvents() { if (this.isAttachWindowScrollEvent()) { this._attachWindowScroll() } } _attachWindowScroll() { const window = (0, _window.getWindow)(); this._onScrollHandler = this.options.createAction((() => { const { scrollX: scrollX, scrollY: scrollY } = window; if (scrollX >= 10 || scrollY >= 10) { this.handleOnScrollEvent({ left: scrollX, top: scrollY }) } })); _events_engine.default.on(this.document, DOCUMENT_SCROLL_EVENT_NAMESPACE, this._onScrollHandler) } handleOnScrollEvent(scrollPosition) { if (scrollPosition) { var _this$verticalVirtual3, _this$horizontalVirtu3; const { left: left, top: top } = scrollPosition; const verticalStateChanged = (0, _type.isDefined)(top) && (null === (_this$verticalVirtual3 = this.verticalVirtualScrolling) || void 0 === _this$verticalVirtual3 ? void 0 : _this$verticalVirtual3.updateState(top)); const horizontalStateChanged = (0, _type.isDefined)(left) && (null === (_this$horizontalVirtu3 = this.horizontalVirtualScrolling) || void 0 === _this$horizontalVirtu3 ? void 0 : _this$horizontalVirtu3.updateState(left)); if (verticalStateChanged || horizontalStateChanged) { var _this$options$updateR, _this$options; null === (_this$options$updateR = (_this$options = this.options).updateRender) || void 0 === _this$options$updateR || _this$options$updateR.call(_this$options) } } } updateDimensions(isForce) { const cellHeight = this.getCellHeight(); const needUpdateVertical = this.verticalScrollingAllowed && cellHeight !== this.rowHeight; if ((needUpdateVertical || isForce) && this.verticalVirtualScrolling) { this.rowHeight = cellHeight; this.verticalVirtualScrolling.viewportSize = this.viewportHeight; this.verticalVirtualScrolling.reinitState(cellHeight, isForce) } const cellWidth = this.getCellWidth(); const needUpdateHorizontal = this.horizontalScrollingAllowed && cellWidth !== this.cellWidth; if ((needUpdateHorizontal || isForce) && this.horizontalVirtualScrolling) { this.cellWidth = cellWidth; this.horizontalVirtualScrolling.viewportSize = this.viewportWidth; this.horizontalVirtualScrolling.reinitState(cellWidth, isForce) } if (needUpdateVertical || needUpdateHorizontal) { var _this$options$updateG, _this$options2; null === (_this$options$updateG = (_this$options2 = this.options).updateGrid) || void 0 === _this$options$updateG || _this$options$updateG.call(_this$options2) } } }; class VirtualScrollingBase { constructor(options) { this.options = options; this._state = this.defaultState; this.viewportSize = this.options.viewportSize; this._itemSize = this.options.itemSize; this._position = -1; this._itemSizeChanged = false; this.updateState(0) } get itemSize() { return this._itemSize } set itemSize(value) { this._itemSizeChanged = this._itemSize !== value; this._itemSize = value } get state() { return this._state } set state(value) { this._state = value } get startIndex() { return this.state.startIndex } get pageSize() { return Math.ceil(this.viewportSize / this.itemSize) } get outlineCount() { return (0, _type.isDefined)(this.options.outlineCount) ? this.options.outlineCount : Math.floor(this.pageSize / 2) } get groupCount() { return this.options.getGroupCount() } get isVerticalGrouping() { return this.options.isVerticalGrouping() } get defaultState() { return { prevPosition: 0, startIndex: -1, itemCount: 0, virtualItemCountBefore: 0, virtualItemCountAfter: 0, outlineCountBefore: 0, outlineCountAfter: 0, virtualItemSizeBefore: 0, virtualItemSizeAfter: 0, outlineSizeBefore: 0, outlineSizeAfter: 0 } } get maxScrollPosition() { return this.getTotalItemCount() * this.itemSize - this.viewportSize } get position() { return this._position } set position(value) { this._position = value } needUpdateState(position) { const { prevPosition: prevPosition, startIndex: startIndex } = this.state; const isFirstInitialization = startIndex < 0; if (isFirstInitialization) { return true } let isStartIndexChanged = false; if (this._validateAndSavePosition(position)) { if (0 === position || position === this.maxScrollPosition) { return true } const currentPosition = prevPosition; const currentItemsCount = Math.floor(currentPosition / this.itemSize); const itemsCount = Math.floor(position / this.itemSize); isStartIndexChanged = Math.abs(currentItemsCount - itemsCount) >= this.outlineCount } return isStartIndexChanged } _validateAndSavePosition(position) { if (!(0, _type.isDefined)(position)) { return false } const result = this.position !== position; this.position = position; return result } _correctPosition(position) { return position >= 0 ? Math.min(position, this.maxScrollPosition) : -1 } updateState(position, isForce) { position = this._correctPosition(position); if (!this.needUpdateState(position) && !isForce) { return false } const itemsInfoBefore = this._calcItemInfoBefore(position); const itemsDeltaBefore = this._calcItemDeltaBefore(itemsInfoBefore); const { outlineCountAfter: outlineCountAfter, virtualItemCountAfter: virtualItemCountAfter, itemCountWithAfter: itemCountWithAfter } = this._calcItemInfoAfter(itemsDeltaBefore); const { virtualItemCountBefore: virtualItemCountBefore, outlineCountBefore: outlineCountBefore } = itemsInfoBefore; const itemCount = outlineCountBefore + itemCountWithAfter + outlineCountAfter; const itemCountBefore = Math.floor(position / this.itemSize); this.state.prevPosition = itemCountBefore * this.itemSize; this.state.startIndex = itemCountBefore - outlineCountBefore; this.state.virtualItemCountBefore = virtualItemCountBefore; this.state.outlineCountBefore = outlineCountBefore; this.state.itemCount = itemCount; this.state.outlineCountAfter = outlineCountAfter; this.state.virtualItemCountAfter = virtualItemCountAfter; this._updateStateCore(); return true } reinitState(itemSize, isForceUpdate) { const { position: position } = this; this.itemSize = itemSize; this.updateState(0, isForceUpdate); if (position > 0) { this.updateState(position, isForceUpdate) } } _calcItemInfoBefore(position) { let virtualItemCountBefore = Math.floor(position / this.itemSize); const outlineCountBefore = Math.min(virtualItemCountBefore, this.outlineCount); virtualItemCountBefore -= outlineCountBefore; return { virtualItemCountBefore: virtualItemCountBefore, outlineCountBefore: outlineCountBefore } } _calcItemDeltaBefore(itemInfoBefore) { const { virtualItemCountBefore: virtualItemCountBefore, outlineCountBefore: outlineCountBefore } = itemInfoBefore; const totalItemCount = this.getTotalItemCount(); return totalItemCount - virtualItemCountBefore - outlineCountBefore } getTotalItemCount() { throw "getTotalItemCount method should be implemented" } getRenderState() { throw "getRenderState method should be implemented" } _calcItemInfoAfter(itemsDeltaBefore) { const itemCountWithAfter = itemsDeltaBefore >= this.pageSize ? this.pageSize : itemsDeltaBefore; let virtualItemCountAfter = itemsDeltaBefore - itemCountWithAfter; const outlineCountAfter = virtualItemCountAfter > 0 ? Math.min(virtualItemCountAfter, this.outlineCount) : 0; if (virtualItemCountAfter > 0) { virtualItemCountAfter -= outlineCountAfter } return { virtualItemCountAfter: virtualItemCountAfter, outlineCountAfter: outlineCountAfter, itemCountWithAfter: itemCountWithAfter } } _updateStateCore() { const { state: state } = this; const { virtualItemCountBefore: virtualItemCountBefore } = state; const { virtualItemCountAfter: virtualItemCountAfter } = state; const { outlineCountBefore: outlineCountBefore } = state; const { outlineCountAfter: outlineCountAfter } = state; const prevVirtualItemSizeBefore = state.virtualItemSizeBefore; const prevVirtualItemSizeAfter = state.virtualItemSizeAfter; const prevOutlineSizeBefore = state.outlineSizeBefore; const prevOutlineSizeAfter = state.outlineSizeAfter; const virtualItemSizeBefore = this.itemSize * virtualItemCountBefore; const virtualItemSizeAfter = this.itemSize * virtualItemCountAfter; const outlineSizeBefore = this.itemSize * outlineCountBefore; const outlineSizeAfter = this.itemSize * outlineCountAfter; const prevVirtualSizeBefore = prevVirtualItemSizeBefore + prevOutlineSizeBefore; const virtualSizeBefore = virtualItemSizeBefore + outlineSizeBefore; const prevVirtualSizeAfter = prevVirtualItemSizeAfter + prevOutlineSizeAfter; const virtualSizeAfter = virtualItemSizeAfter + outlineSizeAfter; const isAppend = prevVirtualSizeBefore < virtualSizeBefore; const isPrepend = prevVirtualSizeAfter < virtualSizeAfter; const needAddItems = this._itemSizeChanged || isAppend || isPrepend; if (needAddItems) { this._updateStateVirtualItems(virtualItemSizeBefore, virtualItemSizeAfter) } } _updateStateVirtualItems(virtualItemSizeBefore, virtualItemSizeAfter) { const { state: state } = this; state.virtualItemSizeBefore = virtualItemSizeBefore; state.virtualItemSizeAfter = virtualItemSizeAfter } } class VerticalVirtualScrolling extends VirtualScrollingBase { constructor(options) { super(_extends({}, options, { itemSize: options.rowHeight, viewportSize: options.viewportHeight })) } get prevTopPosition() { return this.state.prevPosition } get rowCount() { return this.state.itemCount } get topVirtualRowCount() { return this.state.virtualItemCountBefore } get bottomVirtualRowCount() { return this.state.virtualItemCountAfter } getTotalItemCount() { return this.options.getTotalRowCount(this.groupCount, this.isVerticalGrouping) } getRenderState() { return { topVirtualRowHeight: this.state.virtualItemSizeBefore, bottomVirtualRowHeight: this.state.virtualItemSizeAfter, startRowIndex: this.state.startIndex, rowCount: this.state.itemCount, startIndex: this.state.startIndex } } } class HorizontalVirtualScrolling extends VirtualScrollingBase { constructor(options) { super(_extends({}, options, { itemSize: options.cellWidth, viewportSize: options.viewportWidth })) } get isRTL() { return this.options.isRTL() } getTotalItemCount() { return this.options.getTotalCellCount(this.groupCount, this.isVerticalGrouping) } getRenderState() { return { leftVirtualCellWidth: this.state.virtualItemSizeBefore, rightVirtualCellWidth: this.state.virtualItemSizeAfter, startCellIndex: this.state.startIndex, cellCount: this.state.itemCount, cellWidth: this.itemSize } } _updateStateVirtualItems(virtualItemSizeBefore, virtualItemSizeAfter) { if (!this.isRTL) { super._updateStateVirtualItems(virtualItemSizeBefore, virtualItemSizeAfter) } else { const { state: state } = this; state.virtualItemSizeAfter = virtualItemSizeBefore; state.virtualItemSizeBefore = virtualItemSizeAfter; state.startIndex = this.getTotalItemCount() - this.startIndex - this.state.itemCount } } } exports.VirtualScrollingRenderer = class { constructor(_workspace) { this._workspace = _workspace; this._renderAppointmentTimeoutID = null } getRenderTimeout() { return 15 } get workspace() { return this._workspace } updateRender() { this._renderGrid(); this._renderAppointments() } _renderGrid() { this.workspace.renderWorkSpace(false) } _renderAppointments() { const renderTimeout = this.getRenderTimeout(); if (renderTimeout >= 0) { clearTimeout(this._renderAppointmentTimeoutID); this._renderAppointmentTimeoutID = setTimeout((() => this.workspace.updateAppointments()), renderTimeout) } else { this.workspace.updateAppointments() } } } }, 45277: /*!*********************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/scheduler/workspaces/m_work_space.js ***! \*********************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _translator = __webpack_require__( /*! ../../../common/core/animation/translator */ 88603); var _click = __webpack_require__( /*! ../../../common/core/events/click */ 64044); var _contextmenu = __webpack_require__( /*! ../../../common/core/events/contextmenu */ 80248); var _events_engine = _interopRequireDefault(__webpack_require__( /*! ../../../common/core/events/core/events_engine */ 92774)); var _drag = __webpack_require__( /*! ../../../common/core/events/drag */ 59144); var _pointer = _interopRequireDefault(__webpack_require__( /*! ../../../common/core/events/pointer */ 89797)); var _index = __webpack_require__( /*! ../../../common/core/events/utils/index */ 98834); var _message = _interopRequireDefault(__webpack_require__( /*! ../../../common/core/localization/message */ 4671)); var _dom_adapter = _interopRequireDefault(__webpack_require__( /*! ../../../core/dom_adapter */ 64960)); var _element = __webpack_require__( /*! ../../../core/element */ 61404); var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../../core/renderer */ 64553)); var _common = __webpack_require__( /*! ../../../core/utils/common */ 17781); var _data = __webpack_require__( /*! ../../../core/utils/data */ 31e3); var _date = _interopRequireDefault(__webpack_require__( /*! ../../../core/utils/date */ 41380)); var _extend = __webpack_require__( /*! ../../../core/utils/extend */ 52576); var _position = __webpack_require__( /*! ../../../core/utils/position */ 41639); var _size = __webpack_require__( /*! ../../../core/utils/size */ 57653); var _type = __webpack_require__( /*! ../../../core/utils/type */ 11528); var _window = __webpack_require__( /*! ../../../core/utils/window */ 3104); var _ui = _interopRequireDefault(__webpack_require__( /*! ../../../ui/scroll_view/ui.scrollable */ 20876)); var _ui2 = _interopRequireDefault(__webpack_require__( /*! ../../../ui/widget/ui.errors */ 35185)); var _scroll = __webpack_require__( /*! ../../core/utils/scroll */ 11371); var _index2 = __webpack_require__( /*! ../../scheduler/r1/components/index */ 19747); var _index3 = __webpack_require__( /*! ../../scheduler/r1/utils/index */ 34396); var _m_widget_observer = _interopRequireDefault(__webpack_require__( /*! ../base/m_widget_observer */ 69133)); var _constants = __webpack_require__( /*! ../constants */ 25307); var _m_appointment_drag_behavior = _interopRequireDefault(__webpack_require__( /*! ../m_appointment_drag_behavior */ 80621)); var _m_classes = __webpack_require__( /*! ../m_classes */ 80126); var _m_table_creator = _interopRequireDefault(__webpack_require__( /*! ../m_table_creator */ 92201)); var _m_utils = __webpack_require__( /*! ../m_utils */ 5327); var _m_current_time_shader_vertical = _interopRequireDefault(__webpack_require__( /*! ../shaders/m_current_time_shader_vertical */ 28471)); var _appointment_groups_utils = __webpack_require__( /*! ../utils/resource_manager/appointment_groups_utils */ 11649); var _group_utils = __webpack_require__( /*! ../utils/resource_manager/group_utils */ 76131); var _m_position_helper = __webpack_require__( /*! ./helpers/m_position_helper */ 39979); var _m_cache = __webpack_require__( /*! ./m_cache */ 26691); var _m_cells_selection_controller = __webpack_require__( /*! ./m_cells_selection_controller */ 46380); var _m_cells_selection_state = _interopRequireDefault(__webpack_require__( /*! ./m_cells_selection_state */ 37331)); var _m_virtual_scrolling = __webpack_require__( /*! ./m_virtual_scrolling */ 65874); var _m_work_space_grouped_strategy_horizontal = _interopRequireDefault(__webpack_require__( /*! ./m_work_space_grouped_strategy_horizontal */ 24005)); var _m_work_space_grouped_strategy_vertical = _interopRequireDefault(__webpack_require__( /*! ./m_work_space_grouped_strategy_vertical */ 16259)); var _m_view_data_provider = _interopRequireDefault(__webpack_require__( /*! ./view_model/m_view_data_provider */ 6051)); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } function _extends() { return _extends = Object.assign ? Object.assign.bind() : function(n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) { ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]) } } return n }, _extends.apply(null, arguments) } const { tableCreator: tableCreator } = _m_table_creator.default; const { abstract: abstract } = _m_widget_observer.default; const toMs = _date.default.dateToMilliseconds; const ALL_DAY_TABLE_CELL_CLASS = "dx-scheduler-all-day-table-cell"; const DATE_TABLE_CELL_CLASS = "dx-scheduler-date-table-cell"; const SCHEDULER_WORKSPACE_DXPOINTERDOWN_EVENT_NAME = (0, _index.addNamespace)(_pointer.default.down, "dxSchedulerWorkSpace"); const DragEventNames = { ENTER: (0, _index.addNamespace)(_drag.enter, "dxSchedulerDateTable"), DROP: (0, _index.addNamespace)(_drag.drop, "dxSchedulerDateTable"), LEAVE: (0, _index.addNamespace)(_drag.leave, "dxSchedulerDateTable") }; const SCHEDULER_CELL_DXCLICK_EVENT_NAME = (0, _index.addNamespace)(_click.name, "dxSchedulerDateTable"); const SCHEDULER_CELL_DXPOINTERDOWN_EVENT_NAME = (0, _index.addNamespace)(_pointer.default.down, "dxSchedulerDateTable"); const SCHEDULER_CELL_DXPOINTERUP_EVENT_NAME = (0, _index.addNamespace)(_pointer.default.up, "dxSchedulerDateTable"); const SCHEDULER_CELL_DXPOINTERMOVE_EVENT_NAME = (0, _index.addNamespace)(_pointer.default.move, "dxSchedulerDateTable"); const DAY_MS = toMs("day"); const HOUR_MS = toMs("hour"); const DRAG_AND_DROP_SELECTOR = `.${_m_classes.DATE_TABLE_CLASS} td, .dx-scheduler-all-day-table td`; const CELL_SELECTOR = `.${DATE_TABLE_CELL_CLASS}, .${ALL_DAY_TABLE_CELL_CLASS}`; const DEFAULT_WORKSPACE_RENDER_OPTIONS = { renderComponents: { header: true, timePanel: true, dateTable: true, allDayPanel: true }, generateNewData: true }; class SchedulerWorkSpace extends _m_widget_observer.default { constructor() { super(...arguments); this.viewDirection = "vertical" } get type() { return "" } get viewDataProvider() { if (!this._viewDataProvider) { this._viewDataProvider = new _m_view_data_provider.default(this.type) } return this._viewDataProvider } get cache() { if (!this._cache) { this._cache = new _m_cache.Cache } return this._cache } get resourceManager() { return this.option("getResourceManager")() } get cellsSelectionState() { if (!this._cellsSelectionState) { this._cellsSelectionState = new _m_cells_selection_state.default(this.viewDataProvider); const selectedCellsOption = this.option("selectedCellData"); if ((null === selectedCellsOption || void 0 === selectedCellsOption ? void 0 : selectedCellsOption.length) > 0) { const validSelectedCells = selectedCellsOption.map((selectedCell => { const { groups: groups } = selectedCell; if (!groups || 0 === this._getGroupCount()) { return _extends({}, selectedCell, { groupIndex: 0 }) } const groupIndex = this._getGroupIndexByGroupValues(groups); return _extends({}, selectedCell, { groupIndex: groupIndex }) })); this._cellsSelectionState.setSelectedCellsByData(validSelectedCells) } } return this._cellsSelectionState } get cellsSelectionController() { if (!this._cellsSelectionController) { this._cellsSelectionController = new _m_cells_selection_controller.CellsSelectionController } return this._cellsSelectionController } get isAllDayPanelVisible() { return this._isShowAllDayPanel() && this.supportAllDayRow() } get verticalGroupTableClass() { return "dx-scheduler-work-space-vertical-group-table" } get renovatedHeaderPanelComponent() { return _index2.HeaderPanelComponent } get timeZoneCalculator() { return this.option("timeZoneCalculator") } get isDefaultDraggingMode() { return "default" === this.option("draggingMode") } _supportedKeys() { const clickHandler = function(e) { e.preventDefault(); e.stopPropagation(); const selectedCells = this._getSelectedCellsData(); if (null !== selectedCells && void 0 !== selectedCells && selectedCells.length) { const selectedCellsElement = selectedCells.map((cellData => this._getCellByData(cellData))).filter((cell => !!cell)); e.target = selectedCellsElement; this._showPopup = true; this._cellClickAction({ event: e, cellElement: (0, _renderer.default)(selectedCellsElement), cellData: selectedCells[0] }) } }; const onArrowPressed = (e, key) => { var _this$cellsSelectionS; e.preventDefault(); e.stopPropagation(); const focusedCellData = null === (_this$cellsSelectionS = this.cellsSelectionState.focusedCell) || void 0 === _this$cellsSelectionS ? void 0 : _this$cellsSelectionS.cellData; if (focusedCellData) { const isAllDayPanelCell = focusedCellData.allDay && !this._isVerticalGroupedWorkSpace(); const isMultiSelection = e.shiftKey; const isMultiSelectionAllowed = this.option("allowMultipleCellSelection"); const isRTL = this._isRTL(); const groupCount = this._getGroupCount(); const isGroupedByDate = this.isGroupedByDate(); const isHorizontalGrouping = this._isHorizontalGroupedWorkSpace(); const focusedCellPosition = this.viewDataProvider.findCellPositionInMap(_extends({}, focusedCellData, { isAllDay: focusedCellData.allDay })); const edgeIndices = isHorizontalGrouping && isMultiSelection && !isGroupedByDate ? this.viewDataProvider.getGroupEdgeIndices(focusedCellData.groupIndex, isAllDayPanelCell) : this.viewDataProvider.getViewEdgeIndices(isAllDayPanelCell); const nextCellData = this.cellsSelectionController.handleArrowClick({ focusedCellPosition: focusedCellPosition, edgeIndices: edgeIndices, isRTL: isRTL, isGroupedByDate: isGroupedByDate, groupCount: groupCount, isMultiSelection: isMultiSelection, isMultiSelectionAllowed: isMultiSelectionAllowed, viewType: this.type, key: key, getCellDataByPosition: this.viewDataProvider.getCellData.bind(this.viewDataProvider), isAllDayPanelCell: isAllDayPanelCell, focusedCellData: focusedCellData }); this._processNextSelectedCell(nextCellData, focusedCellData, isMultiSelection && isMultiSelectionAllowed) } }; return (0, _extend.extend)(super._supportedKeys(), { enter: clickHandler, space: clickHandler, downArrow: e => { onArrowPressed(e, "down") }, upArrow: e => { onArrowPressed(e, "up") }, rightArrow: e => { onArrowPressed(e, "right") }, leftArrow: e => { onArrowPressed(e, "left") } }) } _isRTL() { return this.option("rtlEnabled") } _moveToCell($cell, isMultiSelection) { if (!(0, _type.isDefined)($cell) || !$cell.length) { return } const isMultiSelectionAllowed = this.option("allowMultipleCellSelection"); const currentCellData = this._getFullCellData($cell); const focusedCellData = this.cellsSelectionState.focusedCell.cellData; const nextFocusedCellData = this.cellsSelectionController.moveToCell({ isMultiSelection: isMultiSelection, isMultiSelectionAllowed: isMultiSelectionAllowed, currentCellData: currentCellData, focusedCellData: focusedCellData, isVirtualCell: $cell.hasClass(_m_classes.VIRTUAL_CELL_CLASS) }); this._processNextSelectedCell(nextFocusedCellData, focusedCellData, isMultiSelectionAllowed && isMultiSelection) } _processNextSelectedCell(nextCellData, focusedCellData, isMultiSelection) { const nextCellPosition = this.viewDataProvider.findCellPositionInMap({ startDate: nextCellData.startDate, groupIndex: nextCellData.groupIndex, isAllDay: nextCellData.allDay, index: nextCellData.index }); if (!this.viewDataProvider.isSameCell(focusedCellData, nextCellData)) { const $cell = nextCellData.allDay && !this._isVerticalGroupedWorkSpace() ? this._dom_getAllDayPanelCell(nextCellPosition.columnIndex) : this._dom_getDateCell(nextCellPosition); const isNextCellAllDay = nextCellData.allDay; this._setSelectedCellsStateAndUpdateSelection(isNextCellAllDay, nextCellPosition, isMultiSelection, $cell); this._dateTableScrollable.scrollToElement($cell) } } _setSelectedCellsStateAndUpdateSelection(isAllDay, cellPosition, isMultiSelection, $nextFocusedCell) { const nextCellCoordinates = { rowIndex: cellPosition.rowIndex, columnIndex: cellPosition.columnIndex, allDay: isAllDay }; this.cellsSelectionState.setFocusedCell(nextCellCoordinates.rowIndex, nextCellCoordinates.columnIndex, isAllDay); if (isMultiSelection) { this.cellsSelectionState.setSelectedCells(nextCellCoordinates) } else { this.cellsSelectionState.setSelectedCells(nextCellCoordinates, nextCellCoordinates) } this.updateCellsSelection(); this._updateSelectedCellDataOption(this._getSelectedCellsData(), $nextFocusedCell) } _hasAllDayClass($cell) { return $cell.hasClass(ALL_DAY_TABLE_CELL_CLASS) } _focusInHandler(e) { if ((0, _renderer.default)(e.target).is(this._focusTarget()) && this._isCellClick) { delete this._isCellClick; delete this._contextMenuHandled; super._focusInHandler.apply(this, arguments); this.cellsSelectionState.restoreSelectedAndFocusedCells(); if (!this.cellsSelectionState.focusedCell) { const cellCoordinates = { columnIndex: 0, rowIndex: 0, allDay: this._isVerticalGroupedWorkSpace() && this.isAllDayPanelVisible }; this.cellsSelectionState.setFocusedCell(cellCoordinates.rowIndex, cellCoordinates.columnIndex, cellCoordinates.allDay); this.cellsSelectionState.setSelectedCells(cellCoordinates, cellCoordinates) } this.updateCellsSelection(); this._updateSelectedCellDataOption(this._getSelectedCellsData()) } } _focusOutHandler() { super._focusOutHandler.apply(this, arguments); if (!this._contextMenuHandled && !this._disposed) { this.cellsSelectionState.releaseSelectedAndFocusedCells(); this.viewDataProvider.updateViewData(this.generateRenderOptions()); this.updateCellsSelection() } } _focusTarget() { return this.$element() } _isVerticalGroupedWorkSpace() { var _this$option; return !!(null !== (_this$option = this.option("groups")) && void 0 !== _this$option && _this$option.length) && "vertical" === this.option("groupOrientation") } _isHorizontalGroupedWorkSpace() { var _this$option2; return !!(null !== (_this$option2 = this.option("groups")) && void 0 !== _this$option2 && _this$option2.length) && "horizontal" === this.option("groupOrientation") } _isWorkSpaceWithCount() { return this.option("intervalCount") > 1 } _isWorkspaceWithOddCells() { return .5 === this.option("hoursInterval") && !this.isVirtualScrolling() } _getRealGroupOrientation() { return this._isVerticalGroupedWorkSpace() ? "vertical" : "horizontal" } createRAllDayPanelElements() { this._$allDayPanel = (0, _renderer.default)("
").addClass("dx-scheduler-all-day-panel"); this._$allDayTitle = (0, _renderer.default)("
").appendTo(this._$headerPanelEmptyCell) } _dateTableScrollableConfig() { let config = { useKeyboard: false, bounceEnabled: false, updateManually: true, onScroll: () => { var _this$_groupedStrateg; null === (_this$_groupedStrateg = this._groupedStrategy.cache) || void 0 === _this$_groupedStrateg || _this$_groupedStrateg.clear() }, onInitialized: _ref => { let { component: component } = _ref; const useKeyboardDisabled = false === component.option("useKeyboard"); const useNativeEnabled = true === component.option("useNative"); if (useKeyboardDisabled && useNativeEnabled) { (0, _renderer.default)(component.container()).attr("tabindex", -1) } }, onOptionChanged: _ref2 => { let { fullName: fullName, value: value, component: component } = _ref2; const useKeyboardDisabled = false === component.option("useKeyboard"); if (useKeyboardDisabled && "useNative" === fullName && true === value) { (0, _renderer.default)(component.container()).attr("tabindex", -1) } } }; if (this._needCreateCrossScrolling()) { config = (0, _extend.extend)(config, this._createCrossScrollingConfig(config)) } if (this.isVirtualScrolling() && (this.virtualScrollingDispatcher.horizontalScrollingAllowed || this.virtualScrollingDispatcher.height)) { const currentOnScroll = config.onScroll; config = _extends({}, config, { onScroll: e => { null === currentOnScroll || void 0 === currentOnScroll || currentOnScroll(e); this.virtualScrollingDispatcher.handleOnScrollEvent(null === e || void 0 === e ? void 0 : e.scrollOffset) } }) } return config } _createCrossScrollingConfig(_ref3) { let { onScroll: onScroll } = _ref3; return { direction: "both", onScroll: event => { null === onScroll || void 0 === onScroll || onScroll(); this._scrollSync.sidebar({ top: event.scrollOffset.top }); this._scrollSync.header({ left: event.scrollOffset.left }) }, onEnd: () => { this.option("onScrollEnd")() } } } _headerScrollableConfig() { return { useKeyboard: false, showScrollbar: "never", direction: "horizontal", useNative: false, updateManually: true, bounceEnabled: false, onScroll: event => { this._scrollSync.dateTable({ left: event.scrollOffset.left }) } } } _visibilityChanged(visible) { this.cache.clear(); if (visible) { this._updateGroupTableHeight() } if (visible && this._needCreateCrossScrolling()) { this._setTableSizes() } } _setTableSizes() { this.cache.clear(); this._attachTableClasses(); let cellWidth = this.getCellWidth(); if (cellWidth < this.getCellMinWidth()) { cellWidth = this.getCellMinWidth() } const minWidth = this.getWorkSpaceMinWidth(); const groupCount = this._getGroupCount(); const totalCellCount = this._getTotalCellCount(groupCount); let width = cellWidth * totalCellCount; if (width < minWidth) { width = minWidth }(0, _size.setWidth)(this._$headerPanel, width); (0, _size.setWidth)(this._$dateTable, width); if (this._$allDayTable) { (0, _size.setWidth)(this._$allDayTable, width) } this._attachHeaderTableClasses(); this._updateGroupTableHeight(); this._updateScrollable() } getWorkSpaceMinWidth() { return this._groupedStrategy.getWorkSpaceMinWidth() } _dimensionChanged() { if (!this._isVisible()) { return } if (this.option("crossScrollingEnabled")) { this._setTableSizes() } this.updateHeaderEmptyCellWidth(); this._updateScrollable(); this.cache.clear() } _needCreateCrossScrolling() { return this.option("crossScrollingEnabled") } _getElementClass() { return (0, _common.noop)() } _getRowCount() { return this.viewDataProvider.getRowCount({ intervalCount: this.option("intervalCount"), currentDate: this.option("currentDate"), viewType: this.type, hoursInterval: this.option("hoursInterval"), startDayHour: this.option("startDayHour"), endDayHour: this.option("endDayHour") }) } _getCellCount() { return this.viewDataProvider.getCellCount({ intervalCount: this.option("intervalCount"), currentDate: this.option("currentDate"), viewType: this.type, hoursInterval: this.option("hoursInterval"), startDayHour: this.option("startDayHour"), endDayHour: this.option("endDayHour") }) } isRenovatedRender() { return this.renovatedRenderSupported() && this.option("renovateRender") } _isVirtualModeOn() { return "virtual" === this.option("scrolling.mode") } isVirtualScrolling() { return this.isRenovatedRender() && this._isVirtualModeOn() } _initVirtualScrolling() { if (this.virtualScrollingDispatcher) { this.virtualScrollingDispatcher.dispose(); this.virtualScrollingDispatcher = null } this.virtualScrollingDispatcher = new _m_virtual_scrolling.VirtualScrollingDispatcher(this._getVirtualScrollingDispatcherOptions()); this.virtualScrollingDispatcher.attachScrollableEvents(); this.renderer = new _m_virtual_scrolling.VirtualScrollingRenderer(this) } onDataSourceChanged(argument) {} isGroupedAllDayPanel() { return (0, _index3.calculateIsGroupedAllDayPanel)(this.option("groups"), this.option("groupOrientation"), this.isAllDayPanelVisible) } generateRenderOptions(isProvideVirtualCellsWidth) { var _this$_getToday; const groupCount = this._getGroupCount(); const groupOrientation = groupCount > 0 ? this.option("groupOrientation") : this._getDefaultGroupStrategy(); const options = _extends({ groupByDate: this.option("groupByDate"), startRowIndex: 0, startCellIndex: 0, groupOrientation: groupOrientation, today: null === (_this$_getToday = this._getToday) || void 0 === _this$_getToday ? void 0 : _this$_getToday.call(this), getResourceManager: this.option("getResourceManager"), isProvideVirtualCellsWidth: isProvideVirtualCellsWidth, isAllDayPanelVisible: this.isAllDayPanelVisible, selectedCells: this.cellsSelectionState.getSelectedCells(), focusedCell: this.cellsSelectionState.focusedCell, headerCellTextFormat: this._getFormat(), getDateForHeaderText: (_, date) => date, viewOffset: this.option("viewOffset"), startDayHour: this.option("startDayHour"), endDayHour: this.option("endDayHour"), cellDuration: this.getCellDuration(), viewType: this.type, intervalCount: this.option("intervalCount"), hoursInterval: this.option("hoursInterval"), currentDate: this.option("currentDate"), startDate: this.option("startDate"), firstDayOfWeek: this.option("firstDayOfWeek"), showCurrentTimeIndicator: this.option("showCurrentTimeIndicator") }, this.virtualScrollingDispatcher.getRenderState()); return options } renovatedRenderSupported() { return true } _updateGroupTableHeight() { if (this._isVerticalGroupedWorkSpace() && (0, _window.hasWindow)()) { this._setHorizontalGroupHeaderCellsHeight() } } updateHeaderEmptyCellWidth() { if ((0, _window.hasWindow)() && this._isRenderHeaderPanelEmptyCell()) { const timePanelWidth = this.getTimePanelWidth(); const groupPanelWidth = this.getGroupTableWidth(); this._$headerPanelEmptyCell.css("width", timePanelWidth + groupPanelWidth) } } _isGroupsSpecified(groupValues) { var _this$option3; return (null === (_this$option3 = this.option("groups")) || void 0 === _this$option3 ? void 0 : _this$option3.length) && groupValues } _getGroupIndexByGroupValues(groupValues) { return groupValues && (0, _appointment_groups_utils.getAppointmentGroupIndex)((0, _appointment_groups_utils.getSafeGroupValues)(groupValues), this.resourceManager.groupsLeafs)[0] } _getViewStartByOptions() { return (0, _index3.getViewStartByOptions)(this.option("startDate"), this.option("currentDate"), this._getIntervalDuration(), this.option("startDate") ? this._calculateViewStartDate() : void 0) } _getIntervalDuration() { return this.viewDataProvider.getIntervalDuration(this.option("intervalCount")) } _getHeaderDate() { return this.getStartViewDate() } _calculateViewStartDate() { return (0, _index3.calculateViewStartDate)(this.option("startDate")) } _firstDayOfWeek() { return this.viewDataProvider.getFirstDayOfWeek(this.option("firstDayOfWeek")) } _attachEvents() { this._createSelectionChangedAction(); this._attachClickEvent(); this._attachContextMenuEvent() } _attachClickEvent() { const that = this; const pointerDownAction = this._createAction((e => { that._pointerDownHandler(e.event) })); this._createCellClickAction(); const cellSelector = `.${DATE_TABLE_CELL_CLASS},.${ALL_DAY_TABLE_CELL_CLASS}`; const $element = this.$element(); _events_engine.default.off($element, SCHEDULER_WORKSPACE_DXPOINTERDOWN_EVENT_NAME); _events_engine.default.off($element, SCHEDULER_CELL_DXCLICK_EVENT_NAME); _events_engine.default.on($element, SCHEDULER_WORKSPACE_DXPOINTERDOWN_EVENT_NAME, (e => { if ((0, _index.isMouseEvent)(e) && e.which > 1) { e.preventDefault(); return } pointerDownAction({ event: e }) })); _events_engine.default.on($element, SCHEDULER_CELL_DXCLICK_EVENT_NAME, cellSelector, (e => { const $cell = (0, _renderer.default)(e.target); that._cellClickAction({ event: e, cellElement: (0, _element.getPublicElement)($cell), cellData: that.getCellData($cell) }) })) } _createCellClickAction() { this._cellClickAction = this._createActionByOption("onCellClick", { afterExecute: e => this._cellClickHandler(e.args[0].event) }) } _createSelectionChangedAction() { this._selectionChangedAction = this._createActionByOption("onSelectionChanged") } _cellClickHandler(argument) { if (this._showPopup) { delete this._showPopup; this._handleSelectedCellsClick() } } _pointerDownHandler(e) { const $target = (0, _renderer.default)(e.target); if (!$target.hasClass(DATE_TABLE_CELL_CLASS) && !$target.hasClass(ALL_DAY_TABLE_CELL_CLASS)) { this._isCellClick = false; return } this._isCellClick = true; if ($target.hasClass("dx-scheduler-focused-cell")) { this._showPopup = true } else { const cellCoordinates = this._getCoordinatesByCell($target); const isAllDayCell = this._hasAllDayClass($target); this._setSelectedCellsStateAndUpdateSelection(isAllDayCell, cellCoordinates, false, $target) } } _handleSelectedCellsClick() { const selectedCells = this._getSelectedCellsData(); const firstCellData = selectedCells[0]; const lastCellData = selectedCells[selectedCells.length - 1]; const result = { startDate: firstCellData.startDate, endDate: lastCellData.endDate, startDateUTC: firstCellData.startDateUTC, endDateUTC: lastCellData.endDateUTC }; if (void 0 !== lastCellData.allDay) { result.allDay = lastCellData.allDay } this.option("onSelectedCellsClick")(result, lastCellData.groups) } _attachContextMenuEvent() { this._createContextMenuAction(); const cellSelector = `.${DATE_TABLE_CELL_CLASS},.${ALL_DAY_TABLE_CELL_CLASS}`; const $element = this.$element(); const eventName = (0, _index.addNamespace)(_contextmenu.name, this.NAME); _events_engine.default.off($element, eventName, cellSelector); _events_engine.default.on($element, eventName, cellSelector, this._contextMenuHandler.bind(this)) } _contextMenuHandler(e) { const $cell = (0, _renderer.default)(e.target); this._contextMenuAction({ event: e, cellElement: (0, _element.getPublicElement)($cell), cellData: this.getCellData($cell) }); this._contextMenuHandled = true } _createContextMenuAction() { this._contextMenuAction = this._createActionByOption("onCellContextMenu") } _getGroupHeaderContainer() { if (this._isVerticalGroupedWorkSpace()) { return this._$groupTable } return this._$thead } _getDateHeaderContainer() { return this._$thead } _getCalculateHeaderCellRepeatCount() { return this._groupedStrategy.calculateHeaderCellRepeatCount() } _updateScrollable() { var _this$_headerScrollab, _this$_sidebarScrolla; this._dateTableScrollable.update(); null === (_this$_headerScrollab = this._headerScrollable) || void 0 === _this$_headerScrollab || _this$_headerScrollab.update(); null === (_this$_sidebarScrolla = this._sidebarScrollable) || void 0 === _this$_sidebarScrolla || _this$_sidebarScrolla.update() } _getTimePanelRowCount() { return this._getCellCountInDay() } _getCellCountInDay() { const hoursInterval = this.option("hoursInterval"); const startDayHour = this.option("startDayHour"); const endDayHour = this.option("endDayHour"); return this.viewDataProvider.getCellCountInDay(startDayHour, endDayHour, hoursInterval) } _getTotalCellCount(groupCount) { return this._groupedStrategy.getTotalCellCount(groupCount) } _getTotalRowCount(groupCount, includeAllDayPanelRows) { let result = this._groupedStrategy.getTotalRowCount(groupCount); if (includeAllDayPanelRows && this.isAllDayPanelVisible) { result += groupCount } return result } _getGroupIndex(rowIndex, columnIndex) { return this._groupedStrategy.getGroupIndex(rowIndex, columnIndex) } calculateEndDate(startDate) { const { viewDataGenerator: viewDataGenerator } = this.viewDataProvider; return viewDataGenerator.calculateEndDate(startDate, viewDataGenerator.getInterval(this.option("hoursInterval")), this.option("endDayHour")) } _getGroupCount() { return this.resourceManager.groupCount() } _attachTablesEvents() { const element = this.$element(); this._attachDragEvents(element); this._attachPointerEvents(element) } _detachDragEvents(element) { _events_engine.default.off(element, DragEventNames.ENTER); _events_engine.default.off(element, DragEventNames.LEAVE); _events_engine.default.off(element, DragEventNames.DROP) } _attachDragEvents(element) { this._detachDragEvents(element); _events_engine.default.on(element, DragEventNames.ENTER, DRAG_AND_DROP_SELECTOR, { checkDropTarget: (target, event) => !this._isOutsideScrollable(target, event) }, (e => { if (!this.preventDefaultDragging) { this.removeDroppableCellClass(); (0, _renderer.default)(e.target).addClass("dx-scheduler-date-table-droppable-cell") } })); _events_engine.default.on(element, DragEventNames.LEAVE, (() => { if (!this.preventDefaultDragging) { this.removeDroppableCellClass() } })); _events_engine.default.on(element, DragEventNames.DROP, DRAG_AND_DROP_SELECTOR, (() => { var _this$dragBehavior, _this$dragBehavior$dr; if (!this.dragBehavior) { return } if (!(null !== (_this$dragBehavior = this.dragBehavior) && void 0 !== _this$dragBehavior && _this$dragBehavior.dragBetweenComponentsPromise)) { this.dragBehavior.removeDroppableClasses(); return } null === (_this$dragBehavior$dr = this.dragBehavior.dragBetweenComponentsPromise) || void 0 === _this$dragBehavior$dr || _this$dragBehavior$dr.then((() => { this.dragBehavior.removeDroppableClasses() })) })) } _attachPointerEvents(element) { let isPointerDown = false; _events_engine.default.off(element, SCHEDULER_CELL_DXPOINTERMOVE_EVENT_NAME); _events_engine.default.off(element, SCHEDULER_CELL_DXPOINTERDOWN_EVENT_NAME); _events_engine.default.on(element, SCHEDULER_CELL_DXPOINTERDOWN_EVENT_NAME, DRAG_AND_DROP_SELECTOR, (e => { if ((0, _index.isMouseEvent)(e) && 1 === e.which) { isPointerDown = true; this.$element().addClass("dx-scheduler-work-space-mouse-selection"); _events_engine.default.off(_dom_adapter.default.getDocument(), SCHEDULER_CELL_DXPOINTERUP_EVENT_NAME); _events_engine.default.on(_dom_adapter.default.getDocument(), SCHEDULER_CELL_DXPOINTERUP_EVENT_NAME, (() => { isPointerDown = false; this.$element().removeClass("dx-scheduler-work-space-mouse-selection") })) } })); _events_engine.default.on(element, SCHEDULER_CELL_DXPOINTERMOVE_EVENT_NAME, DRAG_AND_DROP_SELECTOR, (e => { if (isPointerDown && this._dateTableScrollable && !this._dateTableScrollable.option("scrollByContent")) { e.preventDefault(); e.stopPropagation(); this._moveToCell((0, _renderer.default)(e.target), true) } })) } _getFormat() { return abstract() } getWorkArea() { return this._$dateTableContainer } getScrollable() { return this._dateTableScrollable } getScrollableScrollTop() { return this._dateTableScrollable.scrollTop() } getGroupedScrollableScrollTop(allDay) { return this._groupedStrategy.getScrollableScrollTop(allDay) } getScrollableScrollLeft() { return this._dateTableScrollable.scrollLeft() } getScrollableOuterWidth() { return this._dateTableScrollable.scrollWidth() } getScrollableContainer() { return (0, _renderer.default)(this._dateTableScrollable.container()) } getHeaderPanelHeight() { return this._$headerPanel && (0, _size.getOuterHeight)(this._$headerPanel, true) } getTimePanelWidth() { return this._$timePanel && (0, _position.getBoundingRect)(this._$timePanel.get(0)).width } getGroupTableWidth() { return this._$groupTable ? (0, _size.getOuterWidth)(this._$groupTable) : 0 } getWorkSpaceLeftOffset() { return this._groupedStrategy.getLeftOffset() } _getCellCoordinatesByIndex(index) { const columnIndex = Math.floor(index / this._getRowCount()); const rowIndex = index - this._getRowCount() * columnIndex; return { columnIndex: columnIndex, rowIndex: rowIndex } } _getDateGenerationOptions() { var _this$viewDataProvide; return { startDayHour: this.option("startDayHour"), endDayHour: this.option("endDayHour"), isWorkView: this.viewDataProvider.viewDataGenerator.isWorkView, interval: null === (_this$viewDataProvide = this.viewDataProvider.viewDataGenerator) || void 0 === _this$viewDataProvide ? void 0 : _this$viewDataProvide.getInterval(this.option("hoursInterval")), startViewDate: this.getStartViewDate(), firstDayOfWeek: this._firstDayOfWeek() } } _getIntervalBetween(currentDate, allDay) { const firstViewDate = this.getStartViewDate(); const startDayTime = this.option("startDayHour") * HOUR_MS; const timeZoneOffset = _date.default.getTimezonesDifference(firstViewDate, currentDate); const fullInterval = currentDate.getTime() - firstViewDate.getTime() - timeZoneOffset; const days = this._getDaysOfInterval(fullInterval, startDayTime); const weekendsCount = this._getWeekendsCount(days); let result = (days - weekendsCount) * DAY_MS; if (!allDay) { const { hiddenInterval: hiddenInterval } = this.viewDataProvider; const visibleDayDuration = this.getVisibleDayDuration(); result = fullInterval - days * hiddenInterval - weekendsCount * visibleDayDuration } return result } _getWeekendsCount(argument) { return 0 } _getDaysOfInterval(fullInterval, startDayTime) { return Math.floor((fullInterval + startDayTime) / DAY_MS) } _updateIndex(index) { return index * this._getRowCount() } getDroppableCell() { return this._getDateTables().find(".dx-scheduler-date-table-droppable-cell") } _getWorkSpaceWidth() { return this.cache.get("workspaceWidth", (() => { if (this._needCreateCrossScrolling()) { return (0, _position.getBoundingRect)(this._$dateTable.get(0)).width } const totalWidth = (0, _position.getBoundingRect)(this.$element().get(0)).width; const timePanelWidth = this.getTimePanelWidth(); const groupTableWidth = this.getGroupTableWidth(); return totalWidth - timePanelWidth - groupTableWidth })) } _getCellByCoordinates(cellCoordinates, groupIndex, inAllDayRow) { const indexes = this._groupedStrategy.prepareCellIndexes(cellCoordinates, groupIndex, inAllDayRow); return this._dom_getDateCell(indexes) } _dom_getDateCell(position) { return this._$dateTable.find("tr:not(.dx-scheduler-virtual-row)").eq(position.rowIndex).find(`td:not(.${_m_classes.VIRTUAL_CELL_CLASS})`).eq(position.columnIndex) } _dom_getAllDayPanelCell(columnIndex) { return this._$allDayPanel.find("tr").eq(0).find("td").eq(columnIndex) } _getCells(allDay, direction) { const cellClass = allDay ? ALL_DAY_TABLE_CELL_CLASS : DATE_TABLE_CELL_CLASS; if ("vertical" === direction) { let result = []; for (let i = 1;; i++) { const cells = this.$element().find(`tr .${cellClass}:nth-child(${i})`); if (!cells.length) { break } result = result.concat(cells.toArray()) } return (0, _renderer.default)(result) } return this.$element().find(`.${cellClass}`) } _getFirstAndLastDataTableCell() { const selector = this.isVirtualScrolling() ? `.${DATE_TABLE_CELL_CLASS}, .${_m_classes.VIRTUAL_CELL_CLASS}` : `.${DATE_TABLE_CELL_CLASS}`; const $cells = this.$element().find(selector); return [$cells[0], $cells[$cells.length - 1]] } _getAllCells(allDay) { if (this._isVerticalGroupedWorkSpace()) { return this._$dateTable.find(`td:not(.${_m_classes.VIRTUAL_CELL_CLASS})`) } const cellClass = allDay && this.supportAllDayRow() ? ALL_DAY_TABLE_CELL_CLASS : DATE_TABLE_CELL_CLASS; return this.$element().find(`.${cellClass}`) } _setHorizontalGroupHeaderCellsHeight() { const { height: height } = (0, _position.getBoundingRect)(this._$dateTable.get(0)); (0, _size.setOuterHeight)(this._$groupTable, height) } _getGroupHeaderCells() { return this.$element().find(".dx-scheduler-group-header") } _getScrollCoordinates(hours, minutes, date, groupIndex, allDay) { const currentDate = date || new Date(this.option("currentDate")); const startDayHour = this.option("startDayHour"); const endDayHour = this.option("endDayHour"); if (hours < startDayHour) { hours = startDayHour } if (hours >= endDayHour) { hours = endDayHour - 1 } currentDate.setHours(hours, minutes, 0, 0); const cell = this.viewDataProvider.findGlobalCellPosition(currentDate, groupIndex, allDay); const { position: position, cellData: cellData } = cell; return this.virtualScrollingDispatcher.calculateCoordinatesByDataAndPosition(cellData, position, currentDate, (0, _index3.isDateAndTimeView)(this.type), "vertical" === this.viewDirection) } _isOutsideScrollable(target, event) { const $dateTableScrollableElement = this._dateTableScrollable.$element(); const scrollableSize = (0, _position.getBoundingRect)($dateTableScrollableElement.get(0)); const window = (0, _window.getWindow)(); const isTargetInAllDayPanel = !(0, _renderer.default)(target).closest($dateTableScrollableElement).length; const isOutsideHorizontalScrollable = event.pageX < scrollableSize.left || event.pageX > scrollableSize.left + scrollableSize.width + (window.scrollX || 0); const isOutsideVerticalScrollable = event.pageY < scrollableSize.top || event.pageY > scrollableSize.top + scrollableSize.height + (window.scrollY || 0); if (isTargetInAllDayPanel && !isOutsideHorizontalScrollable) { return false } return isOutsideVerticalScrollable || isOutsideHorizontalScrollable } setCellDataCache(cellCoordinates, groupIndex, $cell) { const key = JSON.stringify({ rowIndex: cellCoordinates.rowIndex, columnIndex: cellCoordinates.columnIndex, groupIndex: groupIndex }); this.cache.set(key, this.getCellData($cell)) } setCellDataCacheAlias(appointment, geometry) { const key = JSON.stringify({ rowIndex: appointment.rowIndex, columnIndex: appointment.columnIndex, groupIndex: appointment.groupIndex }); const aliasKey = JSON.stringify({ top: geometry.top, left: geometry.left }); this.cache.set(aliasKey, this.cache.get(key)) } supportAllDayRow() { return true } keepOriginalHours() { return false } _normalizeCellData(cellData) { var _this$timeZoneCalcula, _this$timeZoneCalcula2; return (0, _extend.extend)(true, {}, { startDate: cellData.startDate, endDate: cellData.endDate, startDateUTC: cellData.startDate && (null === (_this$timeZoneCalcula = this.timeZoneCalculator) || void 0 === _this$timeZoneCalcula ? void 0 : _this$timeZoneCalcula.createDate(cellData.startDate, "fromGrid")), endDateUTC: cellData.endDate && (null === (_this$timeZoneCalcula2 = this.timeZoneCalculator) || void 0 === _this$timeZoneCalcula2 ? void 0 : _this$timeZoneCalcula2.createDate(cellData.endDate, "fromGrid")), groups: cellData.groups, groupIndex: cellData.groupIndex, allDay: cellData.allDay }) } _getSelectedCellsData() { const selected = this.cellsSelectionState.getSelectedCells(); return null === selected || void 0 === selected ? void 0 : selected.map(this._normalizeCellData.bind(this)) } getCellData($cell) { const cellData = this._getFullCellData($cell) || {}; return this._normalizeCellData(cellData) } _getFullCellData($cell) { const currentCell = $cell[0]; if (currentCell) { return this._getDataByCell($cell) } return } _getVirtualRowOffset() { return this.virtualScrollingDispatcher.virtualRowOffset } _getVirtualCellOffset() { return this.virtualScrollingDispatcher.virtualCellOffset } _getDataByCell($cell) { const rowIndex = $cell.parent().index() - this.virtualScrollingDispatcher.topVirtualRowsCount; const columnIndex = $cell.index() - this.virtualScrollingDispatcher.leftVirtualCellsCount; const { viewDataProvider: viewDataProvider } = this; const isAllDayCell = this._hasAllDayClass($cell); const cellData = viewDataProvider.getCellData(rowIndex, columnIndex, isAllDayCell); return cellData || void 0 } isGroupedByDate() { return this.option("groupByDate") && this._isHorizontalGroupedWorkSpace() && this._getGroupCount() > 0 } getCellIndexByDate(date, inAllDayRow) { const { viewDataGenerator: viewDataGenerator } = this.viewDataProvider; const timeInterval = inAllDayRow ? 864e5 : viewDataGenerator.getInterval(this.option("hoursInterval")); const startViewDateOffset = (0, _index3.getStartViewDateTimeOffset)(this.getStartViewDate(), this.option("startDayHour")); const dateTimeStamp = this._getIntervalBetween(date, inAllDayRow) + startViewDateOffset; let index = Math.floor(dateTimeStamp / timeInterval); if (inAllDayRow) { index = this._updateIndex(index) } if (index < 0) { index = 0 } return index } getDataByDroppableCell() { const cellData = this.getCellData((0, _renderer.default)(this.getDroppableCell())); const { allDay: allDay } = cellData; const { startDate: startDate } = cellData; const { endDate: endDate } = cellData; return { startDate: startDate, endDate: endDate, allDay: allDay, groups: cellData.groups } } getDateRange() { return [this.getStartViewDate(), this.getEndViewDateByEndDayHour()] } getCellMinWidth() { return 75 } getRoundedCellWidth(groupIndex, startIndex, cellCount) { if (groupIndex < 0 || !(0, _window.hasWindow)()) { return 0 } const $row = this.$element().find(`.${_m_classes.DATE_TABLE_ROW_CLASS}`).eq(0); let width = 0; const $cells = $row.find(`.${DATE_TABLE_CELL_CLASS}`); const totalCellCount = this._getCellCount() * groupIndex; cellCount = cellCount || this._getCellCount(); if (!(0, _type.isDefined)(startIndex)) { startIndex = totalCellCount } for (let i = startIndex; i < totalCellCount + cellCount; i++) { const element = (0, _renderer.default)($cells).eq(i).get(0); const elementWidth = element ? (0, _position.getBoundingRect)(element).width : 0; width += elementWidth } return width / (totalCellCount + cellCount - startIndex) } getCellWidth() { return (0, _m_position_helper.getCellWidth)(this.getDOMElementsMetaData()) } getCellHeight() { return (0, _m_position_helper.getCellHeight)(this.getDOMElementsMetaData()) } getAllDayHeight() { return (0, _m_position_helper.getAllDayHeight)(this.option("showAllDayPanel"), this._isVerticalGroupedWorkSpace(), this.getDOMElementsMetaData()) } getMaxAllowedPosition(groupIndex) { return (0, _m_position_helper.getMaxAllowedPosition)(groupIndex, this.viewDataProvider, this.option("rtlEnabled"), this.getDOMElementsMetaData()) } getAllDayOffset() { return this._groupedStrategy.getAllDayOffset() } getCellIndexByCoordinates(coordinates, allDay) { const { horizontalScrollingState: horizontalScrollingState, verticalScrollingState: verticalScrollingState } = this.virtualScrollingDispatcher; const cellCount = (null === horizontalScrollingState || void 0 === horizontalScrollingState ? void 0 : horizontalScrollingState.itemCount) ?? this._getTotalCellCount(this._getGroupCount()); const cellWidth = this.getCellWidth(); const cellHeight = allDay ? this.getAllDayHeight() : this.getCellHeight(); const leftCoordinateOffset = (null === horizontalScrollingState || void 0 === horizontalScrollingState ? void 0 : horizontalScrollingState.virtualItemSizeBefore) ?? 0; const topCoordinateOffset = (null === verticalScrollingState || void 0 === verticalScrollingState ? void 0 : verticalScrollingState.virtualItemSizeBefore) ?? 0; const topIndex = Math.floor(Math.floor(coordinates.top - topCoordinateOffset) / Math.floor(cellHeight)); let leftIndex = (coordinates.left - leftCoordinateOffset) / cellWidth; leftIndex = Math.floor(leftIndex + .05); if (this._isRTL()) { leftIndex = cellCount - leftIndex - 1 } return cellCount * topIndex + leftIndex } getStartViewDate() { return this.viewDataProvider.getStartViewDate() } getEndViewDate() { return this.viewDataProvider.getLastCellEndDate() } getEndViewDateByEndDayHour() { return this.viewDataProvider.getLastViewDateByEndDayHour(this.option("endDayHour")) } getCellDuration() { return (0, _index3.getCellDuration)(this.type, this.option("startDayHour"), this.option("endDayHour"), this.option("hoursInterval")) } getIntervalDuration(allDay) { return allDay ? toMs("day") : this.getCellDuration() } getVisibleDayDuration() { const startDayHour = this.option("startDayHour"); const endDayHour = this.option("endDayHour"); const hoursInterval = this.option("hoursInterval"); return this.viewDataProvider.getVisibleDayDuration(startDayHour, endDayHour, hoursInterval) } getGroupBounds(coordinates) { const groupBounds = this._groupedStrategy instanceof _m_work_space_grouped_strategy_vertical.default ? this.getGroupBoundsVertical(coordinates.groupIndex) : this.getGroupBoundsHorizontal(coordinates); return this._isRTL() ? this.getGroupBoundsRtlCorrection(groupBounds) : groupBounds } getGroupBoundsVertical(groupIndex) { const $firstAndLastCells = this._getFirstAndLastDataTableCell(); return this._groupedStrategy.getGroupBoundsOffset(groupIndex, $firstAndLastCells) } getGroupBoundsHorizontal(coordinates) { const cellCount = this._getCellCount(); const $cells = this._getCells(); const cellWidth = this.getCellWidth(); const { groupedDataMap: groupedDataMap } = this.viewDataProvider; return this._groupedStrategy.getGroupBoundsOffset(cellCount, $cells, cellWidth, coordinates, groupedDataMap) } getGroupBoundsRtlCorrection(groupBounds) { const cellWidth = this.getCellWidth(); return _extends({}, groupBounds, { left: groupBounds.right - 2 * cellWidth, right: groupBounds.left + 2 * cellWidth }) } needRecalculateResizableArea() { return this._isVerticalGroupedWorkSpace() && 0 !== this.getScrollable().scrollTop() } getCellByCoordinates(coordinates, allDay) { const $cells = this._getCells(allDay); const cellIndex = this.getCellIndexByCoordinates(coordinates, allDay); return $cells.eq(cellIndex) } getCellDataByCoordinates(coordinates, allDay) { const key = JSON.stringify({ top: coordinates.top, left: coordinates.left }); return this.cache.get(key, (() => { const $cell = this.getCellByCoordinates(coordinates, allDay); return this.getCellData($cell) })) } getVisibleBounds() { const result = {}; const $scrollable = this.getScrollable().$element(); const cellHeight = this.getCellHeight(); const scrolledCellCount = this.getScrollableScrollTop() / cellHeight; const totalCellCount = scrolledCellCount + (0, _size.getHeight)($scrollable) / cellHeight; result.top = { hours: Math.floor(scrolledCellCount * this.option("hoursInterval")) + this.option("startDayHour"), minutes: scrolledCellCount % 2 ? 30 : 0 }; result.bottom = { hours: Math.floor(totalCellCount * this.option("hoursInterval")) + this.option("startDayHour"), minutes: Math.floor(totalCellCount) % 2 ? 30 : 0 }; return result } updateScrollPosition(date, appointmentGroupValues) { let allDay = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : false; const newDate = this.timeZoneCalculator.createDate(date, "toGrid"); const inAllDayRow = allDay && this.isAllDayPanelVisible; if (this.needUpdateScrollPosition(newDate, appointmentGroupValues, inAllDayRow)) { this.scrollTo(newDate, appointmentGroupValues, inAllDayRow, false) } } needUpdateScrollPosition(date, appointmentGroupValues) { let inAllDayRow = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : false; const cells = this._getCellsInViewport(inAllDayRow); const groupIndex = this._isGroupsSpecified(appointmentGroupValues) ? this._getGroupIndexByGroupValues(appointmentGroupValues) : 0; const time = date.getTime(); const trimmedTime = _date.default.trimTime(date).getTime(); return cells.reduce(((currentResult, cell) => { const { startDate: cellStartDate, endDate: cellEndDate, groupIndex: cellGroupIndex } = this.getCellData(cell); const cellStartTime = cellStartDate.getTime(); const cellEndTime = cellEndDate.getTime(); if ((!inAllDayRow && cellStartTime <= time && time < cellEndTime || inAllDayRow && trimmedTime === cellStartTime) && groupIndex === cellGroupIndex) { return false } return currentResult }), true) } _getCellsInViewport(inAllDayRow) { const $scrollable = this.getScrollable().$element(); const cellHeight = this.getCellHeight(); const cellWidth = this.getCellWidth(); const totalColumnCount = this._getTotalCellCount(this._getGroupCount()); const scrollableScrollTop = this.getScrollableScrollTop(); const scrollableScrollLeft = this.getScrollableScrollLeft(); const fullScrolledRowCount = scrollableScrollTop / cellHeight - this.virtualScrollingDispatcher.topVirtualRowsCount; let scrolledRowCount = Math.floor(fullScrolledRowCount); if (scrollableScrollTop % cellHeight !== 0) { scrolledRowCount += 1 } const fullScrolledColumnCount = scrollableScrollLeft / cellWidth; let scrolledColumnCount = Math.floor(fullScrolledColumnCount); if (scrollableScrollLeft % cellWidth !== 0) { scrolledColumnCount += 1 } const rowCount = Math.floor(fullScrolledRowCount + (0, _size.getHeight)($scrollable) / cellHeight); const columnCount = Math.floor(fullScrolledColumnCount + (0, _size.getWidth)($scrollable) / cellWidth); const $cells = this._getAllCells(inAllDayRow); const result = []; $cells.each((function(index) { const $cell = (0, _renderer.default)(this); const columnIndex = index % totalColumnCount; const rowIndex = index / totalColumnCount; if (scrolledColumnCount <= columnIndex && columnIndex < columnCount && scrolledRowCount <= rowIndex && rowIndex < rowCount) { result.push($cell) } })); return result } scrollToTime(hours, minutes, date) { if (!this._isValidScrollDate(date)) { return } const coordinates = this._getScrollCoordinates(hours, minutes, date); const scrollable = this.getScrollable(); scrollable.scrollBy({ top: coordinates.top - scrollable.scrollTop(), left: 0 }) } scrollTo(date, groupValues) { let allDay = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : false; let throwWarning = arguments.length > 3 && void 0 !== arguments[3] ? arguments[3] : true; if (!this._isValidScrollDate(date, throwWarning)) { return } const groupIndex = this._getGroupCount() && groupValues ? this._getGroupIndexByGroupValues(groupValues) : 0; const isScrollToAllDay = allDay && this.isAllDayPanelVisible; const coordinates = this._getScrollCoordinates(date.getHours(), date.getMinutes(), date, groupIndex, isScrollToAllDay); const scrollable = this.getScrollable(); const $scrollable = scrollable.$element(); const cellWidth = this.getCellWidth(); const offset = this.option("rtlEnabled") ? cellWidth : 0; const scrollableHeight = (0, _size.getHeight)($scrollable); const scrollableWidth = (0, _size.getWidth)($scrollable); const cellHeight = this.getCellHeight(); const xShift = (scrollableWidth - cellWidth) / 2; const yShift = (scrollableHeight - cellHeight) / 2; const left = coordinates.left - scrollable.scrollLeft() - xShift - offset; let top = coordinates.top - scrollable.scrollTop() - yShift; if (isScrollToAllDay && !this._isVerticalGroupedWorkSpace()) { top = 0 } if (this.option("templatesRenderAsynchronously")) { setTimeout((() => { scrollable.scrollBy({ left: left, top: top }) })) } else { scrollable.scrollBy({ left: left, top: top }) } } _isValidScrollDate(date) { let throwWarning = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : true; const min = this.getStartViewDate(); const max = this.getEndViewDate(); if (date < min || date > max) { throwWarning && _ui2.default.log("W1008", date); return false } return true } needApplyCollectorOffset() { return false } removeDroppableCellClass($cellElement) { const $cell = $cellElement || this.getDroppableCell(); null === $cell || void 0 === $cell || $cell.removeClass("dx-scheduler-date-table-droppable-cell") } _getCoordinatesByCell($cell) { const columnIndex = $cell.index() - this.virtualScrollingDispatcher.leftVirtualCellsCount; let rowIndex = $cell.parent().index(); const isAllDayCell = this._hasAllDayClass($cell); const isVerticalGrouping = this._isVerticalGroupedWorkSpace(); if (!(isAllDayCell && !isVerticalGrouping)) { rowIndex -= this.virtualScrollingDispatcher.topVirtualRowsCount } return { rowIndex: rowIndex, columnIndex: columnIndex } } _isShowAllDayPanel() { return this.option("showAllDayPanel") } _getTimePanelCells() { return this.$element().find(".dx-scheduler-time-panel-cell") } _getRDateTableProps() { return { viewData: this.viewDataProvider.viewData, viewContext: this.getR1ComponentsViewContext(), dataCellTemplate: this.option("dataCellTemplate"), addDateTableClass: !this.option("crossScrollingEnabled") || this.isVirtualScrolling(), groupOrientation: this.option("groupOrientation"), addVerticalSizesClassToRows: false } } getR1ComponentsViewContext() { return { view: { type: this.type }, crossScrollingEnabled: !!this.option("crossScrollingEnabled") } } _updateSelectedCellDataOption(selectedCellData, $nextFocusedCell) { this.option("selectedCellData", selectedCellData); this._selectionChangedAction({ selectedCellData: selectedCellData }) } _getCellByData(cellData) { const { startDate: startDate, groupIndex: groupIndex, allDay: allDay, index: index } = cellData; const position = this.viewDataProvider.findCellPositionInMap({ startDate: startDate, groupIndex: groupIndex, isAllDay: allDay, index: index }); if (!position) { return } return allDay && !this._isVerticalGroupedWorkSpace() ? this._dom_getAllDayPanelCell(position.columnIndex) : this._dom_getDateCell(position) } getDOMElementsMetaData() { return this.cache.get("cellElementsMeta", (() => ({ dateTableCellsMeta: this._getDateTableDOMElementsInfo(), allDayPanelCellsMeta: this._getAllDayPanelDOMElementsInfo() }))) } _getDateTableDOMElementsInfo() { const dateTableCells = this._getAllCells(false); if (!dateTableCells.length || !(0, _window.hasWindow)()) { return [ [{}] ] } const dateTable = this._getDateTable(); const dateTableRect = (0, _position.getBoundingRect)(dateTable.get(0)); const columnsCount = this.viewDataProvider.getColumnsCount(); const result = []; dateTableCells.each(((index, cell) => { const rowIndex = Math.floor(index / columnsCount); if (result.length === rowIndex) { result.push([]) } this._addCellMetaData(result[rowIndex], cell, dateTableRect) })); return result } _getAllDayPanelDOMElementsInfo() { const result = []; if (this.isAllDayPanelVisible && !this._isVerticalGroupedWorkSpace() && (0, _window.hasWindow)()) { const allDayCells = this._getAllCells(true); if (!allDayCells.length) { return [{}] } const allDayAppointmentContainer = this._$allDayPanel; const allDayPanelRect = (0, _position.getBoundingRect)(allDayAppointmentContainer.get(0)); allDayCells.each(((_, cell) => { this._addCellMetaData(result, cell, allDayPanelRect) })) } return result } _addCellMetaData(cellMetaDataArray, cell, parentRect) { const cellRect = (0, _position.getBoundingRect)(cell); cellMetaDataArray.push({ left: cellRect.left - parentRect.left, top: cellRect.top - parentRect.top, width: cellRect.width, height: cellRect.height }) } _oldRender_getAllDayCellData(groupIndex) { return (cell, rowIndex, columnIndex) => { const validColumnIndex = columnIndex % this._getCellCount(); const options = this._getDateGenerationOptions(true); let startDate = this.viewDataProvider.viewDataGenerator.getDateByCellIndices(options, rowIndex, validColumnIndex, this._getCellCountInDay()); startDate = _date.default.trimTime(startDate); let validGroupIndex = groupIndex || 0; if (this.isGroupedByDate()) { validGroupIndex = Math.floor(columnIndex % this._getGroupCount()) } else if (this._isHorizontalGroupedWorkSpace()) { validGroupIndex = Math.floor(columnIndex / this._getCellCount()) } const data = { startDate: startDate, endDate: startDate, allDay: true, groupIndex: validGroupIndex, groups: (0, _group_utils.getLeafGroupValues)(this.resourceManager.groupsLeafs, validGroupIndex) }; return { key: "dxCellData", value: data } } } renderRWorkSpace() { let { header: header, timePanel: timePanel, dateTable: dateTable, allDayPanel: allDayPanel } = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : DEFAULT_WORKSPACE_RENDER_OPTIONS.renderComponents; if (header) { this.renderRHeaderPanel() } if (timePanel) { this.renderRTimeTable() } if (dateTable) { this.renderRDateTable() } if (allDayPanel) { this.renderRAllDayPanel() } } renderRDateTable() { _m_utils.utils.renovation.renderComponent(this, this._$dateTable, _index2.DateTableComponent, "renovatedDateTable", this._getRDateTableProps()) } renderRGroupPanel() { var _this$option4; const options = { viewContext: this.getR1ComponentsViewContext(), groups: this.option("groups"), groupOrientation: this.option("groupOrientation"), groupByDate: this.isGroupedByDate(), resourceCellTemplate: this.option("resourceCellTemplate"), className: this.verticalGroupTableClass, groupPanelData: this.viewDataProvider.getGroupPanelData(this.generateRenderOptions()) }; if (null !== (_this$option4 = this.option("groups")) && void 0 !== _this$option4 && _this$option4.length) { this._attachGroupCountClass(); _m_utils.utils.renovation.renderComponent(this, this._getGroupHeaderContainer(), _index2.GroupPanelComponent, "renovatedGroupPanel", options) } else { this._detachGroupCountClass() } } renderRAllDayPanel() { const visible = this.isAllDayPanelVisible && !this.isGroupedAllDayPanel(); if (visible) { var _this$virtualScrollin; this._updateAllDayVisibility(); const options = _extends({ viewData: this.viewDataProvider.viewData, viewContext: this.getR1ComponentsViewContext(), dataCellTemplate: this.option("dataCellTemplate"), startCellIndex: 0 }, (null === (_this$virtualScrollin = this.virtualScrollingDispatcher.horizontalVirtualScrolling) || void 0 === _this$virtualScrollin ? void 0 : _this$virtualScrollin.getRenderState()) || {}); _m_utils.utils.renovation.renderComponent(this, this._$allDayTable, _index2.AllDayTableComponent, "renovatedAllDayPanel", options); _m_utils.utils.renovation.renderComponent(this, this._$allDayTitle, _index2.AllDayPanelTitleComponent, "renovatedAllDayPanelTitle", {}) } this._updateAllDayVisibility(); this._updateScrollable() } renderRTimeTable() { _m_utils.utils.renovation.renderComponent(this, this._$timePanel, _index2.TimePanelComponent, "renovatedTimePanel", { viewContext: this.getR1ComponentsViewContext(), timePanelData: this.viewDataProvider.timePanelData, timeCellTemplate: this.option("timeCellTemplate"), groupOrientation: this.option("groupOrientation") }) } renderRHeaderPanel() { var _this$option5; let isRenderDateHeader = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : true; if (null !== (_this$option5 = this.option("groups")) && void 0 !== _this$option5 && _this$option5.length) { this._attachGroupCountClass() } else { this._detachGroupCountClass() } _m_utils.utils.renovation.renderComponent(this, this._$thead, this.renovatedHeaderPanelComponent, "renovatedHeaderPanel", { viewContext: this.getR1ComponentsViewContext(), dateHeaderData: this.viewDataProvider.dateHeaderData, groupPanelData: this.viewDataProvider.getGroupPanelData(this.generateRenderOptions()), dateCellTemplate: this.option("dateCellTemplate"), timeCellTemplate: this.option("timeCellTemplate"), groups: this.option("groups"), groupByDate: this.isGroupedByDate(), groupOrientation: this.option("groupOrientation"), resourceCellTemplate: this.option("resourceCellTemplate"), isRenderDateHeader: isRenderDateHeader }) } initDragBehavior(scheduler) { if (!this.dragBehavior && scheduler) { this.dragBehavior = new _m_appointment_drag_behavior.default(scheduler); const $rootElement = (0, _renderer.default)(scheduler.element()); this._createDragBehavior(this.getWorkArea(), $rootElement); if (!this._isVerticalGroupedWorkSpace()) { this._createDragBehavior(this._$allDayPanel, $rootElement) } } } _createDragBehavior($targetElement, $rootElement) { const options = { getItemData: (itemElement, appointments) => appointments._getItemData(itemElement), getItemSettings: $itemElement => $itemElement.data(_constants.APPOINTMENT_SETTINGS_KEY) }; this._createDragBehaviorBase($targetElement, $rootElement, options) } _createDragBehaviorBase(targetElement, rootElement, options) { const container = this.$element().find(`.${_m_classes.FIXED_CONTAINER_CLASS}`); this.dragBehavior.addTo(targetElement, createDragBehaviorConfig(container, rootElement, this.isDefaultDraggingMode, this.dragBehavior, (() => { if (!this.isDefaultDraggingMode) { this.preventDefaultDragging = false } }), (() => { if (!this.isDefaultDraggingMode) { this.preventDefaultDragging = true } }), (() => this.getDroppableCell()), (() => this._getDateTables()), (() => this.removeDroppableCellClass()), (() => this.getCellWidth()), options)) } _isRenderHeaderPanelEmptyCell() { return this._isVerticalGroupedWorkSpace() } _dispose() { super._dispose(); this.virtualScrollingDispatcher.dispose() } _getDefaultOptions() { return (0, _extend.extend)(super._getDefaultOptions(), { currentDate: new Date, intervalCount: 1, startDate: null, firstDayOfWeek: void 0, startDayHour: 0, endDayHour: 24, viewOffset: 0, hoursInterval: .5, activeStateEnabled: true, hoverStateEnabled: true, groups: [], showAllDayPanel: true, allDayExpanded: false, onCellClick: null, crossScrollingEnabled: false, dataCellTemplate: null, timeCellTemplate: null, resourceCellTemplate: null, dateCellTemplate: null, allowMultipleCellSelection: true, indicatorTime: new Date, indicatorUpdateInterval: 5 * toMs("minute"), shadeUntilCurrentTime: true, groupOrientation: "horizontal", selectedCellData: [], groupByDate: false, scrolling: { mode: "standard" }, allDayPanelMode: "all", renovateRender: true, height: void 0, draggingMode: "outlook", onScrollEnd: () => {}, getHeaderHeight: void 0, onRenderAppointments: () => {}, onShowAllDayPanel: () => {}, onSelectedCellsClick: () => {}, timeZoneCalculator: void 0, schedulerHeight: void 0, schedulerWidth: void 0 }) } _optionChanged(args) { switch (args.name) { case "startDayHour": case "endDayHour": case "viewOffset": case "dateCellTemplate": case "resourceCellTemplate": case "dataCellTemplate": case "timeCellTemplate": case "hoursInterval": case "firstDayOfWeek": case "currentDate": case "startDate": this._cleanWorkSpace(); break; case "groups": this._cleanView(); this._removeAllDayElements(); this._initGrouping(); this.repaint(); break; case "groupOrientation": this._initGroupedStrategy(); this._createAllDayPanelElements(); this._removeAllDayElements(); this._cleanWorkSpace(); this._toggleGroupByDateClass(); break; case "showAllDayPanel": if (this._isVerticalGroupedWorkSpace()) { this._cleanView(); this._removeAllDayElements(); this._initGrouping(); this.repaint() } else if (!this.isRenovatedRender()) { this._updateAllDayVisibility(); this._updateScrollable() } else { this.renderWorkSpace() } break; case "allDayExpanded": this._updateAllDayExpansion(); this._attachTablesEvents(); this._updateScrollable(); break; case "onSelectionChanged": this._createSelectionChangedAction(); break; case "onCellClick": this._createCellClickAction(); break; case "onCellContextMenu": this._attachContextMenuEvent(); break; case "intervalCount": this._cleanWorkSpace(); this._toggleWorkSpaceCountClass(); break; case "groupByDate": this._cleanWorkSpace(); this._toggleGroupByDateClass(); break; case "crossScrollingEnabled": this._toggleHorizontalScrollClass(); this._dateTableScrollable.option(this._dateTableScrollableConfig()); break; case "allDayPanelMode": this.updateShowAllDayPanel(); this.updateAppointments(); break; case "width": super._optionChanged(args); this._dimensionChanged(); break; case "timeZoneCalculator": case "allowMultipleCellSelection": case "selectedCellData": break; case "renovateRender": case "scrolling": this.repaint(); break; case "schedulerHeight": case "schedulerWidth": this.virtualScrollingDispatcher.updateDimensions(true); break; default: super._optionChanged(args) } } updateShowAllDayPanel() { const isHiddenAllDayPanel = "hidden" === this.option("allDayPanelMode"); this.option("onShowAllDayPanel")(!isHiddenAllDayPanel) } _getVirtualScrollingDispatcherOptions() { return { getCellHeight: this.getCellHeight.bind(this), getCellWidth: this.getCellWidth.bind(this), getCellMinWidth: this.getCellMinWidth.bind(this), isRTL: this._isRTL.bind(this), getSchedulerHeight: () => this.option("schedulerHeight"), getSchedulerWidth: () => this.option("schedulerWidth"), getViewHeight: () => this.$element().height ? this.$element().height() : (0, _size.getHeight)(this.$element()), getViewWidth: () => this.$element().width ? this.$element().width() : (0, _size.getWidth)(this.$element()), getWindowHeight: () => (0, _window.getWindow)().innerHeight, getWindowWidth: () => (0, _window.getWindow)().innerWidth, getScrolling: () => this.option("scrolling"), getScrollableOuterWidth: this.getScrollableOuterWidth.bind(this), getScrollable: this.getScrollable.bind(this), createAction: this._createAction.bind(this), updateRender: this.updateRender.bind(this), updateGrid: this.updateGrid.bind(this), getGroupCount: this._getGroupCount.bind(this), isVerticalGrouping: this._isVerticalGroupedWorkSpace.bind(this), getTotalRowCount: this._getTotalRowCount.bind(this), getTotalCellCount: this._getTotalCellCount.bind(this) } } _cleanWorkSpace() { this._cleanView(); this._toggleGroupedClass(); this._toggleWorkSpaceWithOddCells(); this.virtualScrollingDispatcher.updateDimensions(true); this._renderView(); this.option("crossScrollingEnabled") && this._setTableSizes(); this.cache.clear() } _init() { this._scrollSync = {}; this._viewDataProvider = null; this._cellsSelectionState = null; this._activeStateUnit = CELL_SELECTOR; super._init(); this._initGrouping(); this._toggleHorizontalScrollClass(); this._toggleWorkSpaceCountClass(); this._toggleGroupByDateClass(); this._toggleWorkSpaceWithOddCells(); this.$element().addClass("dx-scheduler-work-space").addClass(this._getElementClass()) } _initPositionHelper() { this.positionHelper = new _m_position_helper.PositionHelper({ key: this.option("key"), viewDataProvider: this.viewDataProvider, viewStartDayHour: this.option("startDayHour"), viewEndDayHour: this.option("endDayHour"), cellDuration: this.getCellDuration(), groupedStrategy: this._groupedStrategy, isGroupedByDate: this.isGroupedByDate(), rtlEnabled: this.option("rtlEnabled"), startViewDate: this.getStartViewDate(), isVerticalGrouping: this._isVerticalGroupedWorkSpace(), groupCount: this._getGroupCount(), isVirtualScrolling: this.isVirtualScrolling(), getDOMMetaDataCallback: this.getDOMElementsMetaData.bind(this) }) } _initGrouping() { this._initGroupedStrategy(); this._toggleGroupingDirectionClass(); this._toggleGroupByDateClass() } isVerticalOrientation() { var _this$option6; const orientation = null !== (_this$option6 = this.option("groups")) && void 0 !== _this$option6 && _this$option6.length ? this.option("groupOrientation") : this._getDefaultGroupStrategy(); return "vertical" === orientation } _initGroupedStrategy() { const Strategy = this.isVerticalOrientation() ? _m_work_space_grouped_strategy_vertical.default : _m_work_space_grouped_strategy_horizontal.default; this._groupedStrategy = new Strategy(this) } _getDefaultGroupStrategy() { return "horizontal" } _toggleHorizontalScrollClass() { this.$element().toggleClass("dx-scheduler-work-space-both-scrollbar", this.option("crossScrollingEnabled")) } _toggleGroupByDateClass() { this.$element().toggleClass("dx-scheduler-work-space-group-by-date", this.isGroupedByDate()) } _toggleWorkSpaceCountClass() { this.$element().toggleClass("dx-scheduler-work-space-count", this._isWorkSpaceWithCount()) } _toggleWorkSpaceWithOddCells() { this.$element().toggleClass("dx-scheduler-work-space-odd-cells", this._isWorkspaceWithOddCells()) } _toggleGroupingDirectionClass() { this.$element().toggleClass("dx-scheduler-work-space-vertical-grouped", this._isVerticalGroupedWorkSpace()) } _getDateTableCellClass(rowIndex, columnIndex) { const cellClass = `${DATE_TABLE_CELL_CLASS} dx-scheduler-cell-sizes-horizontal dx-scheduler-cell-sizes-vertical`; return this._groupedStrategy.addAdditionalGroupCellClasses(cellClass, columnIndex + 1, rowIndex, columnIndex) } _getGroupHeaderClass(i) { return this._groupedStrategy.addAdditionalGroupCellClasses("dx-scheduler-group-header", i + 1) } _initWorkSpaceUnits() { this._$headerPanelContainer = (0, _renderer.default)("
").addClass("dx-scheduler-header-panel-container"); this._$headerTablesContainer = (0, _renderer.default)("
").addClass("dx-scheduler-header-tables-container"); this._$headerPanel = (0, _renderer.default)("
"); (0, _size.setHeight)($td, this._getRowHeight(rowSize)); if (options.getStartDate) { var _options$getStartDate; date = null === (_options$getStartDate = options.getStartDate) || void 0 === _options$getStartDate ? void 0 : _options$getStartDate.call(options, rowIndex); cellDateNumber = _date.default.format(date, "d"); cellDayName = _date.default.format(date, _index.formatWeekday) } if (null !== cellTemplateOpt && void 0 !== cellTemplateOpt && cellTemplateOpt.render) { const templateOptions = this._prepareCellTemplateOptions(`${cellDateNumber} ${cellDayName}`, date, i, $td); cellTemplates.push(cellTemplateOpt.render.bind(cellTemplateOpt, templateOptions)) } else if (cellDateNumber && cellDayName) { $td.addClass("dx-scheduler-agenda-date").text(`${cellDateNumber} ${cellDayName}`) } if (options.rowClass) { $row.addClass(options.rowClass) } if (options.cellClass) { $td.addClass(options.cellClass) } $row.append($td); this._$rows.push($row) } }.bind(this); for (i = 0; i < this._rows.length; i++) { (0, _iterator.each)(this._rows[i], fillTableBody); this._setLastRowClass() }(0, _renderer.default)(options.container).append((0, _renderer.default)("
"); const text = (0, _index2.formatWeekdayAndDay)(currentDate); if (cellTemplate) { const templateOptions = { model: _extends({ text: text, date: new Date(currentDate) }, this._getGroupsForDateHeaderTemplate(templateIndex, colSpan)), container: $th, index: templateIndex }; cellTemplate.render(templateOptions) } else { $th.text(text) } $th.addClass("dx-scheduler-header-panel-cell").addClass("dx-scheduler-header-panel-week-cell").attr("colSpan", colSpan); $cells.push($th); if (templateIndex % cellsInGroup === cellsInGroup - 1) { currentDate = new Date(firstViewDate) } else { this._incrementDate(currentDate) } } const $row = (0, _renderer.default)("
").attr("aria-hidden", true); this._$thead = (0, _renderer.default)("").appendTo(this._$headerPanel); this._$headerPanelEmptyCell = (0, _renderer.default)("
").addClass("dx-scheduler-header-panel-empty-cell"); this._$allDayTable = (0, _renderer.default)("
").attr("aria-hidden", true); this._$fixedContainer = (0, _renderer.default)("
").addClass(_m_classes.FIXED_CONTAINER_CLASS); this._$allDayContainer = (0, _renderer.default)("
").addClass("dx-scheduler-all-day-appointments"); this._$dateTableScrollableContent = (0, _renderer.default)("
").addClass("dx-scheduler-date-table-scrollable-content"); this._$sidebarScrollableContent = (0, _renderer.default)("
").addClass("dx-scheduler-side-bar-scrollable-content"); this._initAllDayPanelElements(); if (this.isRenovatedRender()) { this.createRAllDayPanelElements() } else { this._createAllDayPanelElements() } this._$timePanel = (0, _renderer.default)("
").addClass(_m_classes.TIME_PANEL_CLASS).attr("aria-hidden", true); this._$dateTable = (0, _renderer.default)("
").attr("aria-hidden", true); this._$dateTableContainer = (0, _renderer.default)("
").addClass("dx-scheduler-date-table-container"); this._$groupTable = (0, _renderer.default)("
").addClass("dx-scheduler-work-space-vertical-group-table") } _initAllDayPanelElements() { this._allDayTitles = []; this._allDayTables = []; this._allDayPanels = [] } _initDateTableScrollable() { const $dateTableScrollable = (0, _renderer.default)("
").addClass("dx-scheduler-date-table-scrollable"); this._dateTableScrollable = this._createComponent($dateTableScrollable, _ui.default, this._dateTableScrollableConfig()); this._scrollSync.dateTable = (0, _scroll.getMemoizeScrollTo)((() => this._dateTableScrollable)) } _createWorkSpaceElements() { if (this.option("crossScrollingEnabled")) { this._createWorkSpaceScrollableElements() } else { this._createWorkSpaceStaticElements() } } _createWorkSpaceStaticElements() { this._$dateTableContainer.append(this._$dateTable); if (this._isVerticalGroupedWorkSpace()) { this._$dateTableContainer.append(this._$allDayContainer); this._$dateTableScrollableContent.append(this._$groupTable, this._$timePanel, this._$dateTableContainer); this._dateTableScrollable.$content().append(this._$dateTableScrollableContent); this._$headerTablesContainer.append(this._$headerPanel) } else { var _this$_$allDayPanel; this._$dateTableScrollableContent.append(this._$timePanel, this._$dateTableContainer); this._dateTableScrollable.$content().append(this._$dateTableScrollableContent); this._$headerTablesContainer.append(this._$headerPanel, this._$allDayPanel); null === (_this$_$allDayPanel = this._$allDayPanel) || void 0 === _this$_$allDayPanel || _this$_$allDayPanel.append(this._$allDayContainer, this._$allDayTable) } this._appendHeaderPanelEmptyCellIfNecessary(); this._$headerPanelContainer.append(this._$headerTablesContainer); this.$element().append(this._$fixedContainer).append(this._$headerPanelContainer).append(this._dateTableScrollable.$element()) } _createWorkSpaceScrollableElements() { this.$element().append(this._$fixedContainer); this._$flexContainer = (0, _renderer.default)("
").addClass("dx-scheduler-work-space-flex-container"); this._createHeaderScrollable(); this._headerScrollable.$content().append(this._$headerPanel); this._appendHeaderPanelEmptyCellIfNecessary(); this._$headerPanelContainer.append(this._$headerTablesContainer); this.$element().append(this._$headerPanelContainer); this.$element().append(this._$flexContainer); this._createSidebarScrollable(); this._$flexContainer.append(this._dateTableScrollable.$element()); this._$dateTableContainer.append(this._$dateTable); this._$dateTableScrollableContent.append(this._$dateTableContainer); this._dateTableScrollable.$content().append(this._$dateTableScrollableContent); if (this._isVerticalGroupedWorkSpace()) { this._$dateTableContainer.append(this._$allDayContainer); this._$sidebarScrollableContent.append(this._$groupTable, this._$timePanel) } else { var _this$_$allDayPanel2; this._headerScrollable.$content().append(this._$allDayPanel); null === (_this$_$allDayPanel2 = this._$allDayPanel) || void 0 === _this$_$allDayPanel2 || _this$_$allDayPanel2.append(this._$allDayContainer, this._$allDayTable); this._$sidebarScrollableContent.append(this._$timePanel) } this._sidebarScrollable.$content().append(this._$sidebarScrollableContent) } _appendHeaderPanelEmptyCellIfNecessary() { this._isRenderHeaderPanelEmptyCell() && this._$headerPanelContainer.append(this._$headerPanelEmptyCell) } _createHeaderScrollable() { const $headerScrollable = (0, _renderer.default)("
").addClass("dx-scheduler-header-scrollable").appendTo(this._$headerTablesContainer); this._headerScrollable = this._createComponent($headerScrollable, _ui.default, this._headerScrollableConfig()); this._scrollSync.header = (0, _scroll.getMemoizeScrollTo)((() => this._headerScrollable)) } _createSidebarScrollable() { const $timePanelScrollable = (0, _renderer.default)("
").addClass("dx-scheduler-sidebar-scrollable").appendTo(this._$flexContainer); this._sidebarScrollable = this._createComponent($timePanelScrollable, _ui.default, { useKeyboard: false, showScrollbar: "never", direction: "vertical", useNative: false, updateManually: true, bounceEnabled: false, onScroll: event => { this._scrollSync.dateTable({ top: event.scrollOffset.top }) } }); this._scrollSync.sidebar = (0, _scroll.getMemoizeScrollTo)((() => this._sidebarScrollable)) } _attachTableClasses() { this._addTableClass(this._$dateTable, _m_classes.DATE_TABLE_CLASS); if (this._isVerticalGroupedWorkSpace()) { const groupCount = this._getGroupCount(); for (let i = 0; i < groupCount; i++) { this._addTableClass(this._allDayTables[i], "dx-scheduler-all-day-table") } } else if (!this.isRenovatedRender()) { this._addTableClass(this._$allDayTable, "dx-scheduler-all-day-table") } } _attachHeaderTableClasses() { this._addTableClass(this._$headerPanel, "dx-scheduler-header-panel") } _addTableClass($el, className) { $el && !$el.hasClass(className) && $el.addClass(className) } _initMarkup() { this.cache.clear(); this._initWorkSpaceUnits(); this._initVirtualScrolling(); this._initDateTableScrollable(); this._createWorkSpaceElements(); super._initMarkup(); if (!this.option("crossScrollingEnabled")) { this._attachTableClasses(); this._attachHeaderTableClasses() } this._toggleGroupedClass(); this._renderView(); this._attachEvents() } _render() { super._render(); this._renderDateTimeIndication(); this._setIndicationUpdateInterval() } _toggleGroupedClass() { this.$element().toggleClass("dx-scheduler-work-space-grouped", this._getGroupCount() > 0) } _renderView() { if (this.isRenovatedRender()) { if (this._isVerticalGroupedWorkSpace()) { this.renderRGroupPanel() } } else { this._applyCellTemplates(this._renderGroupHeader()) } this.renderWorkSpace(); if (this.isRenovatedRender()) { this.virtualScrollingDispatcher.updateDimensions() } this._updateGroupTableHeight(); this.updateHeaderEmptyCellWidth(); this._shader = new _m_current_time_shader_vertical.default(this) } updateCellsSelection() { const renderOptions = this.generateRenderOptions(); this.viewDataProvider.updateViewData(renderOptions); this.renderRWorkSpace({ timePanel: true, dateTable: true, allDayPanel: true }) } _renderDateTimeIndication() { return (0, _common.noop)() } renderCurrentDateTimeLineAndShader() { return (0, _common.noop)() } renderCurrentDateTimeIndication() { return (0, _common.noop)() } _setIndicationUpdateInterval() { return (0, _common.noop)() } _detachGroupCountClass() { _m_classes.VERTICAL_GROUP_COUNT_CLASSES.forEach((className => { this.$element().removeClass(className) })) } _attachGroupCountClass() { const className = this._groupedStrategy.getGroupCountClass(this.option("groups")); this.$element().addClass(className) } _getDateHeaderTemplate() { return this.option("dateCellTemplate") } _updateAllDayVisibility() { this.$element().toggleClass("dx-scheduler-work-space-all-day", this._isShowAllDayPanel()); this._updateAllDayExpansion() } _updateAllDayExpansion() { const isExpanded = !this.option("allDayExpanded") && this._isShowAllDayPanel(); this.cache.clear(); this.$element().toggleClass("dx-scheduler-work-space-all-day-collapsed", isExpanded) } _getDateTables() { return this._$dateTable.add(this._$allDayTable) } _getDateTable() { return this._$dateTable } _removeAllDayElements() { var _this$_$allDayTable, _this$_$allDayTitle; null === (_this$_$allDayTable = this._$allDayTable) || void 0 === _this$_$allDayTable || _this$_$allDayTable.remove(); null === (_this$_$allDayTitle = this._$allDayTitle) || void 0 === _this$_$allDayTitle || _this$_$allDayTitle.remove() } _cleanView() { var _this$_shader; this.cache.clear(); this._cleanTableWidths(); this.cellsSelectionState.clearSelectedAndFocusedCells(); if (!this.isRenovatedRender()) { var _this$_$allDayTable2, _this$_$sidebarTable; this._$thead.empty(); this._$dateTable.empty(); this._$timePanel.empty(); this._$groupTable.empty(); null === (_this$_$allDayTable2 = this._$allDayTable) || void 0 === _this$_$allDayTable2 || _this$_$allDayTable2.empty(); null === (_this$_$sidebarTable = this._$sidebarTable) || void 0 === _this$_$sidebarTable || _this$_$sidebarTable.empty() } null === (_this$_shader = this._shader) || void 0 === _this$_shader || _this$_shader.clean(); delete this._interval } _clean() { _events_engine.default.off(_dom_adapter.default.getDocument(), SCHEDULER_CELL_DXPOINTERUP_EVENT_NAME); this._disposeRenovatedComponents(); super._clean() } _cleanTableWidths() { var _this$_$allDayTable3; this._$headerPanel.css("width", ""); this._$dateTable.css("width", ""); null === (_this$_$allDayTable3 = this._$allDayTable) || void 0 === _this$_$allDayTable3 || _this$_$allDayTable3.css("width", "") } _disposeRenovatedComponents() { var _this$renovatedAllDay, _this$renovatedDateTa, _this$renovatedTimePa, _this$renovatedGroupP, _this$renovatedHeader; null === (_this$renovatedAllDay = this.renovatedAllDayPanel) || void 0 === _this$renovatedAllDay || _this$renovatedAllDay.dispose(); this.renovatedAllDayPanel = void 0; null === (_this$renovatedDateTa = this.renovatedDateTable) || void 0 === _this$renovatedDateTa || _this$renovatedDateTa.dispose(); this.renovatedDateTable = void 0; null === (_this$renovatedTimePa = this.renovatedTimePanel) || void 0 === _this$renovatedTimePa || _this$renovatedTimePa.dispose(); this.renovatedTimePanel = void 0; null === (_this$renovatedGroupP = this.renovatedGroupPanel) || void 0 === _this$renovatedGroupP || _this$renovatedGroupP.dispose(); this.renovatedGroupPanel = void 0; null === (_this$renovatedHeader = this.renovatedHeaderPanel) || void 0 === _this$renovatedHeader || _this$renovatedHeader.dispose(); this.renovatedHeaderPanel = void 0 } getGroupedStrategy() { return this._groupedStrategy } getFixedContainer() { return this._$fixedContainer } getAllDayContainer() { return this._$allDayContainer } updateRender() { this.renderer.updateRender() } updateGrid() { this.renderer._renderGrid() } updateAppointments() { var _this$dragBehavior2; this.option("onRenderAppointments")(); null === (_this$dragBehavior2 = this.dragBehavior) || void 0 === _this$dragBehavior2 || _this$dragBehavior2.updateDragSource() } _createAllDayPanelElements() { const groupCount = this._getGroupCount(); if (this._isVerticalGroupedWorkSpace() && 0 !== groupCount) { for (let i = 0; i < groupCount; i++) { const $allDayTitle = (0, _renderer.default)("
").addClass("dx-scheduler-all-day-title").text(_message.default.format("dxScheduler-allDay")); this._allDayTitles.push($allDayTitle); this._$allDayTable = (0, _renderer.default)("
").attr("aria-hidden", true); this._allDayTables.push(this._$allDayTable); this._$allDayPanel = (0, _renderer.default)("
").addClass("dx-scheduler-all-day-panel").append(this._$allDayTable); this._allDayPanels.push(this._$allDayPanel) } } else { this._$allDayTitle = (0, _renderer.default)("
").addClass("dx-scheduler-all-day-title").text(_message.default.format("dxScheduler-allDay")).appendTo(this.$element()); this._$allDayTable = (0, _renderer.default)("
").attr("aria-hidden", true); this._$allDayPanel = (0, _renderer.default)("
").addClass("dx-scheduler-all-day-panel").append(this._$allDayTable) } } renderWorkSpace() { let { generateNewData: generateNewData, renderComponents: renderComponents } = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : DEFAULT_WORKSPACE_RENDER_OPTIONS; this.cache.clear(); this.viewDataProvider.update(this.generateRenderOptions(), generateNewData); if (this.isRenovatedRender()) { this.renderRWorkSpace(renderComponents) } else { this._renderDateHeader(); this._renderTimePanel(); this._renderGroupAllDayPanel(); this._renderDateTable(); this._renderAllDayPanel() } this._initPositionHelper() } _renderGroupHeader() { const $container = this._getGroupHeaderContainer(); const groupCount = this._getGroupCount(); let cellTemplates = []; if (groupCount) { const groupRows = this._makeGroupRows(this.option("groups"), this.option("groupByDate")); this._attachGroupCountClass(); $container.append(groupRows.elements); cellTemplates = groupRows.cellTemplates } else { this._detachGroupCountClass() } return cellTemplates } _applyCellTemplates(templates) { null === templates || void 0 === templates || templates.forEach((template => { template() })) } _makeGroupRows(groups, groupByDate) { const tableCreatorStrategy = this._isVerticalGroupedWorkSpace() ? tableCreator.VERTICAL : tableCreator.HORIZONTAL; return tableCreator.makeGroupedTable(tableCreatorStrategy, groups, { groupHeaderRowClass: _m_classes.GROUP_ROW_CLASS, groupRowClass: _m_classes.GROUP_ROW_CLASS, groupHeaderClass: this._getGroupHeaderClass.bind(this), groupHeaderContentClass: _m_classes.GROUP_HEADER_CONTENT_CLASS }, this._getCellCount() || 1, this.option("resourceCellTemplate"), this._getGroupCount(), groupByDate) } _renderDateHeader() { const container = this._getDateHeaderContainer(); const $headerRow = (0, _renderer.default)("
").addClass("dx-scheduler-header-row"); const count = this._getCellCount(); const cellTemplate = this._getDateHeaderTemplate(); const repeatCount = this._getCalculateHeaderCellRepeatCount(); const templateCallbacks = []; const groupByDate = this.isGroupedByDate(); if (!groupByDate) { for (let rowIndex = 0; rowIndex < repeatCount; rowIndex++) { for (let columnIndex = 0; columnIndex < count; columnIndex++) { const templateIndex = rowIndex * count + columnIndex; this._renderDateHeaderTemplate($headerRow, columnIndex, templateIndex, cellTemplate, templateCallbacks) } } container.append($headerRow) } else { const colSpan = groupByDate ? this._getGroupCount() : 1; for (let columnIndex = 0; columnIndex < count; columnIndex++) { const templateIndex = columnIndex * repeatCount; const cellElement = this._renderDateHeaderTemplate($headerRow, columnIndex, templateIndex, cellTemplate, templateCallbacks); cellElement.attr("colSpan", colSpan) } container.prepend($headerRow) } this._applyCellTemplates(templateCallbacks); return $headerRow } _renderDateHeaderTemplate(container, panelCellIndex, templateIndex, cellTemplate, templateCallbacks) { const validTemplateIndex = this.isGroupedByDate() ? Math.floor(templateIndex / this._getGroupCount()) : templateIndex; const { completeDateHeaderMap: completeDateHeaderMap } = this.viewDataProvider; const { text: text, startDate: date } = completeDateHeaderMap[completeDateHeaderMap.length - 1][validTemplateIndex]; const $cell = (0, _renderer.default)("
").addClass(this._getHeaderPanelCellClass(panelCellIndex)).attr("title", text); if (null !== cellTemplate && void 0 !== cellTemplate && cellTemplate.render) { templateCallbacks.push(cellTemplate.render.bind(cellTemplate, { model: _extends({ text: text, date: date }, this._getGroupsForDateHeaderTemplate(templateIndex)), index: templateIndex, container: (0, _element.getPublicElement)($cell) })) } else { $cell.text(text) } container.append($cell); return $cell } _getGroupsForDateHeaderTemplate(templateIndex) { let indexMultiplier = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : 1; if (this._isHorizontalGroupedWorkSpace() && !this.isGroupedByDate()) { const groupIndex = this._getGroupIndex(0, templateIndex * indexMultiplier); const groups = (0, _group_utils.getLeafGroupValues)(this.resourceManager.groupsLeafs, groupIndex); return { groups: groups, groupIndex: groupIndex } } return {} } _getHeaderPanelCellClass(i) { return this._groupedStrategy.addAdditionalGroupCellClasses("dx-scheduler-header-panel-cell dx-scheduler-cell-sizes-horizontal", i + 1, void 0, void 0, this.isGroupedByDate()) } _renderAllDayPanel(index) { let cellCount = this._getCellCount(); if (!this._isVerticalGroupedWorkSpace()) { cellCount *= this._getGroupCount() || 1 } const cellTemplates = this._renderTableBody({ container: this._allDayPanels.length ? (0, _element.getPublicElement)(this._allDayTables[index]) : (0, _element.getPublicElement)(this._$allDayTable), rowCount: 1, cellCount: cellCount, cellClass: this._getAllDayPanelCellClass.bind(this), rowClass: "dx-scheduler-all-day-table-row", cellTemplate: this.option("dataCellTemplate"), getCellData: this._oldRender_getAllDayCellData(index), groupIndex: index }, true); this._updateAllDayVisibility(); this._updateScrollable(); this._applyCellTemplates(cellTemplates) } _renderGroupAllDayPanel() { if (this._isVerticalGroupedWorkSpace()) { const groupCount = this._getGroupCount(); for (let i = 0; i < groupCount; i++) { this._renderAllDayPanel(i) } } } _getAllDayPanelCellClass(i, j) { const cellClass = `${ALL_DAY_TABLE_CELL_CLASS} dx-scheduler-cell-sizes-horizontal`; return this._groupedStrategy.addAdditionalGroupCellClasses(cellClass, j + 1) } _renderTimePanel() { const repeatCount = this._groupedStrategy.calculateTimeCellRepeatCount(); const getData = (rowIndex, field) => { let allDayPanelsCount = 0; if (this.isAllDayPanelVisible) { allDayPanelsCount = 1 } if (this.isGroupedAllDayPanel()) { allDayPanelsCount = Math.ceil((rowIndex + 1) / this._getRowCount()) } const validRowIndex = rowIndex + allDayPanelsCount; return this.viewDataProvider.completeTimePanelMap[validRowIndex][field] }; this._renderTableBody({ container: (0, _element.getPublicElement)(this._$timePanel), rowCount: this._getTimePanelRowCount() * repeatCount, cellCount: 1, cellClass: this._getTimeCellClass.bind(this), rowClass: "dx-scheduler-time-panel-row", cellTemplate: this.option("timeCellTemplate"), getCellText: rowIndex => getData(rowIndex, "text"), getCellDate: rowIndex => getData(rowIndex, "startDate"), groupCount: this._getGroupCount(), allDayElements: this._insertAllDayRowsIntoDateTable() ? this._allDayTitles : void 0, getTemplateData: (rowIndex => { if (!this._isVerticalGroupedWorkSpace()) { return {} } const groupIndex = this._getGroupIndex(rowIndex, 0); const groups = (0, _group_utils.getLeafGroupValues)(this.resourceManager.groupsLeafs, groupIndex); return { groupIndex: groupIndex, groups: groups } }).bind(this) }) } _getTimeCellClass(i) { const cellClass = "dx-scheduler-time-panel-cell dx-scheduler-cell-sizes-vertical"; return this._isVerticalGroupedWorkSpace() ? this._groupedStrategy.addAdditionalGroupCellClasses(cellClass, i, i) : cellClass } _renderDateTable() { const groupCount = this._getGroupCount(); this._renderTableBody({ container: (0, _element.getPublicElement)(this._$dateTable), rowCount: this._getTotalRowCount(groupCount), cellCount: this._getTotalCellCount(groupCount), cellClass: this._getDateTableCellClass.bind(this), rowClass: _m_classes.DATE_TABLE_ROW_CLASS, cellTemplate: this.option("dataCellTemplate"), getCellData: (_, rowIndex, columnIndex) => { const isGroupedAllDayPanel = this.isGroupedAllDayPanel(); let validRowIndex = rowIndex; if (isGroupedAllDayPanel) { const rowCount = this._getRowCount(); const allDayPanelsCount = Math.ceil(rowIndex / rowCount); validRowIndex += allDayPanelsCount } const { cellData: cellData } = this.viewDataProvider.viewDataMap.dateTableMap[validRowIndex][columnIndex]; return { value: this._normalizeCellData(cellData), fullValue: cellData, key: "dxCellData" } }, allDayElements: this._insertAllDayRowsIntoDateTable() ? this._allDayPanels : void 0, groupCount: groupCount, groupByDate: this.option("groupByDate") }) } _insertAllDayRowsIntoDateTable() { return this._groupedStrategy.insertAllDayRowsIntoDateTable() } _renderTableBody(options, delayCellTemplateRendering) { let result = []; if (!delayCellTemplateRendering) { this._applyCellTemplates(tableCreator.makeTable(options)) } else { result = tableCreator.makeTable(options) } return result } } const createDragBehaviorConfig = (container, rootElement, isDefaultDraggingMode, dragBehavior, enableDefaultDragging, disableDefaultDragging, getDroppableCell, getDateTables, removeDroppableCellClass, getCellWidth, options) => { const state = { dragElement: void 0, itemData: void 0 }; const isItemDisabled = () => { const { itemData: itemData } = state; if (itemData) { const getter = (0, _data.compileGetter)("disabled"); return getter(itemData) } return true }; const cursorOffset = options.isSetCursorOffset ? () => { const $dragElement = (0, _renderer.default)(state.dragElement); return { x: (0, _size.getWidth)($dragElement) / 2, y: (0, _size.getHeight)($dragElement) / 2 } } : void 0; return { container: container, dragTemplate: () => state.dragElement, onDragStart: e => { if (!isDefaultDraggingMode) { disableDefaultDragging() } const canceled = e.cancel; const { event: event } = e; const $itemElement = (0, _renderer.default)(e.itemElement); const appointments = e.component._appointments; state.itemData = options.getItemData(e.itemElement, appointments); const settings = options.getItemSettings($itemElement, e); const { initialPosition: initialPosition } = options; if (!isItemDisabled()) { event.data = event.data || {}; if (!canceled) { if (!settings.isCompact) { dragBehavior.updateDragSource(state.itemData, settings) } state.dragElement = ((itemData, settings, appointments) => { const appointmentIndex = appointments.option("items").length; settings.isCompact = false; settings.virtual = false; const items = appointments._renderItem(appointmentIndex, { itemData: itemData, settings: [settings] }); return items[0] })(state.itemData, settings, appointments); event.data.itemElement = state.dragElement; event.data.initialPosition = initialPosition ?? (0, _translator.locate)((0, _renderer.default)(state.dragElement)); event.data.itemData = state.itemData; event.data.itemSettings = settings; dragBehavior.onDragStart(event.data); (0, _translator.resetPosition)((0, _renderer.default)(state.dragElement)) } } }, onDragMove: () => { if (isDefaultDraggingMode) { return } const elements = (() => { const appointmentWidth = (0, _size.getWidth)(state.dragElement); const cellWidth = getCellWidth(); const isWideAppointment = appointmentWidth > cellWidth; const isNarrowAppointment = appointmentWidth <= 10; const dragElementContainer = (0, _renderer.default)(state.dragElement).parent().get(0); const boundingRect = (0, _position.getBoundingRect)(dragElementContainer); const newX = boundingRect.left; const newY = boundingRect.top; if (isWideAppointment) { return _dom_adapter.default.elementsFromPoint(newX + 10, newY + 10, dragElementContainer) } if (isNarrowAppointment) { return _dom_adapter.default.elementsFromPoint(newX, newY, dragElementContainer) } return _dom_adapter.default.elementsFromPoint(newX + appointmentWidth / 2, newY + 10, dragElementContainer) })(); const isMoveUnderControl = !!elements.find((el => el === rootElement.get(0))); const dateTables = getDateTables(); const droppableCell = elements.find((el => { const { classList: classList } = el; const isCurrentSchedulerElement = 1 === dateTables.find(el).length; return isCurrentSchedulerElement && (classList.contains(DATE_TABLE_CELL_CLASS) || classList.contains(ALL_DAY_TABLE_CELL_CLASS)) })); if (droppableCell) { if (!getDroppableCell().is(droppableCell)) { removeDroppableCellClass() }(0, _renderer.default)(droppableCell).addClass("dx-scheduler-date-table-droppable-cell") } else if (!isMoveUnderControl) { removeDroppableCellClass() } }, onDragEnd: e => { var _state$dragElement; if (!isDefaultDraggingMode) { enableDefaultDragging() } if (!isItemDisabled()) { dragBehavior.onDragEnd(e) } null === (_state$dragElement = state.dragElement) || void 0 === _state$dragElement || _state$dragElement.remove(); removeDroppableCellClass() }, onDragCancel: e => { var _e$itemElement, _e$itemElement$remove; if (!isDefaultDraggingMode) { enableDefaultDragging() } removeDroppableCellClass(); null === (_e$itemElement = e.itemElement) || void 0 === _e$itemElement || null === (_e$itemElement$remove = _e$itemElement.removeClass) || void 0 === _e$itemElement$remove || _e$itemElement$remove.call(_e$itemElement, _m_classes.APPOINTMENT_DRAG_SOURCE_CLASS) }, cursorOffset: cursorOffset, filter: options.filter } }; exports.default = SchedulerWorkSpace }, 83216: /*!*************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/scheduler/workspaces/m_work_space_day.js ***! \*************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _component_registrator = _interopRequireDefault(__webpack_require__( /*! ../../../core/component_registrator */ 92848)); var _constants = __webpack_require__( /*! ../constants */ 25307); var _m_work_space_vertical = _interopRequireDefault(__webpack_require__( /*! ./m_work_space_vertical */ 19402)); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } class SchedulerWorkSpaceDay extends _m_work_space_vertical.default { get type() { return _constants.VIEWS.DAY } _getElementClass() { return "dx-scheduler-work-space-day" } _renderDateHeader() { return 1 === this.option("intervalCount") ? null : super._renderDateHeader() } renderRHeaderPanel() { if (1 === this.option("intervalCount")) { super.renderRHeaderPanel(false) } else { super.renderRHeaderPanel(true) } } }(0, _component_registrator.default)("dxSchedulerWorkSpaceDay", SchedulerWorkSpaceDay); exports.default = SchedulerWorkSpaceDay }, 24005: /*!*************************************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/scheduler/workspaces/m_work_space_grouped_strategy_horizontal.js ***! \*************************************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _position = __webpack_require__( /*! ../../../core/utils/position */ 41639); var _const = __webpack_require__( /*! ../../scheduler/workspaces/const */ 79674); var _m_classes = __webpack_require__( /*! ../m_classes */ 80126); exports.default = class { constructor(_workSpace) { this._workSpace = _workSpace } prepareCellIndexes(cellCoordinates, groupIndex, inAllDay) { const groupByDay = this._workSpace.isGroupedByDate(); if (!groupByDay) { return { rowIndex: cellCoordinates.rowIndex, columnIndex: cellCoordinates.columnIndex + groupIndex * this._workSpace._getCellCount() } } return { rowIndex: cellCoordinates.rowIndex, columnIndex: cellCoordinates.columnIndex * this._workSpace._getGroupCount() + groupIndex } } getGroupIndex(rowIndex, columnIndex) { const groupByDay = this._workSpace.isGroupedByDate(); const groupCount = this._workSpace._getGroupCount(); if (groupByDay) { return columnIndex % groupCount } return Math.floor(columnIndex / this._workSpace._getCellCount()) } calculateHeaderCellRepeatCount() { return this._workSpace._getGroupCount() || 1 } insertAllDayRowsIntoDateTable() { return false } getTotalCellCount(groupCount) { groupCount = groupCount || 1; return this._workSpace._getCellCount() * groupCount } getTotalRowCount() { return this._workSpace._getRowCount() } calculateTimeCellRepeatCount() { return 1 } getWorkSpaceMinWidth() { const workSpaceElementWidth = (0, _position.getBoundingRect)(this._workSpace.$element().get(0)).width; return workSpaceElementWidth - this._workSpace.getTimePanelWidth() - 2 * _const.WORK_SPACE_BORDER_PX } getAllDayOffset() { return this._workSpace.getAllDayHeight() } getGroupCountClass(groups) { return } getLeftOffset() { return this._workSpace.getTimePanelWidth() } _createGroupBoundOffset(startCell, endCell, cellWidth) { const extraOffset = cellWidth / 2; const startOffset = startCell ? startCell.offset().left - extraOffset : 0; const endOffset = endCell ? endCell.offset().left + cellWidth + extraOffset : 0; return { left: startOffset, right: endOffset, top: 0, bottom: 0 } } _getGroupedByDateBoundOffset($cells, cellWidth) { const lastCellIndex = $cells.length - 1; const startCell = $cells.eq(0); const endCell = $cells.eq(lastCellIndex); return this._createGroupBoundOffset(startCell, endCell, cellWidth) } getGroupBoundsOffset(cellCount, $cells, cellWidth, coordinates, groupedDataMap) { if (this._workSpace.isGroupedByDate()) { return this._getGroupedByDateBoundOffset($cells, cellWidth) } let startCell; let endCell; const cellIndex = this._workSpace.getCellIndexByCoordinates(coordinates); const groupIndex = coordinates.groupIndex || Math.floor(cellIndex / cellCount); const currentCellGroup = groupedDataMap.dateTableGroupedMap[groupIndex]; if (currentCellGroup) { const groupRowLength = currentCellGroup[0].length; const groupStartPosition = currentCellGroup[0][0].position; const groupEndPosition = currentCellGroup[0][groupRowLength - 1].position; startCell = $cells.eq(groupStartPosition.columnIndex); endCell = $cells.eq(groupEndPosition.columnIndex) } return this._createGroupBoundOffset(startCell, endCell, cellWidth) } shiftIndicator($indicator, height, rtlOffset, groupIndex) { const offset = this._getIndicatorOffset(groupIndex); const horizontalOffset = rtlOffset ? rtlOffset - offset : offset; $indicator.css("left", horizontalOffset); $indicator.css("top", height) } _getIndicatorOffset(groupIndex) { const groupByDay = this._workSpace.isGroupedByDate(); return groupByDay ? this._calculateGroupByDateOffset(groupIndex) : this._calculateOffset(groupIndex) } _calculateOffset(groupIndex) { const indicatorStartPosition = this._workSpace.getIndicatorOffset(groupIndex); const offset = this._workSpace._getCellCount() * this._workSpace.getRoundedCellWidth(groupIndex - 1, 0) * groupIndex; return indicatorStartPosition + offset } _calculateGroupByDateOffset(groupIndex) { return this._workSpace.getIndicatorOffset(0) * this._workSpace._getGroupCount() + this._workSpace.getRoundedCellWidth(groupIndex - 1, 0) * groupIndex } getShaderOffset(i, width) { const offset = this._workSpace._getCellCount() * this._workSpace.getRoundedCellWidth(i - 1) * i; return this._workSpace.option("rtlEnabled") ? (0, _position.getBoundingRect)(this._workSpace._dateTableScrollable.$content().get(0)).width - offset - this._workSpace.getTimePanelWidth() - width : offset } getShaderTopOffset(i) { return -this.getShaderMaxHeight() * (i > 0 ? 1 : 0) } getShaderHeight() { const height = this._workSpace.getIndicationHeight(); return height } getShaderMaxHeight() { return (0, _position.getBoundingRect)(this._workSpace._dateTableScrollable.$content().get(0)).height } getShaderWidth(i) { return this._workSpace.getIndicationWidth(i) } getScrollableScrollTop(allDay) { return !allDay ? this._workSpace.getScrollable().scrollTop() : 0 } addAdditionalGroupCellClasses(cellClass, index, i, j) { let applyUnconditionally = arguments.length > 4 && void 0 !== arguments[4] ? arguments[4] : false; cellClass = this._addLastGroupCellClass(cellClass, index, applyUnconditionally); return this._addFirstGroupCellClass(cellClass, index, applyUnconditionally) } _addLastGroupCellClass(cellClass, index, applyUnconditionally) { if (applyUnconditionally) { return `${cellClass} ${_m_classes.LAST_GROUP_CELL_CLASS}` } const groupByDate = this._workSpace.isGroupedByDate(); if (groupByDate) { if (index % this._workSpace._getGroupCount() === 0) { return `${cellClass} ${_m_classes.LAST_GROUP_CELL_CLASS}` } } else if (index % this._workSpace._getCellCount() === 0) { return `${cellClass} ${_m_classes.LAST_GROUP_CELL_CLASS}` } return cellClass } _addFirstGroupCellClass(cellClass, index, applyUnconditionally) { if (applyUnconditionally) { return `${cellClass} ${_m_classes.FIRST_GROUP_CELL_CLASS}` } const groupByDate = this._workSpace.isGroupedByDate(); if (groupByDate) { if ((index - 1) % this._workSpace._getGroupCount() === 0) { return `${cellClass} ${_m_classes.FIRST_GROUP_CELL_CLASS}` } } else if ((index - 1) % this._workSpace._getCellCount() === 0) { return `${cellClass} ${_m_classes.FIRST_GROUP_CELL_CLASS}` } return cellClass } } }, 16259: /*!***********************************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/scheduler/workspaces/m_work_space_grouped_strategy_vertical.js ***! \***********************************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _position = __webpack_require__( /*! ../../../core/utils/position */ 41639); var _index = __webpack_require__( /*! ../../scheduler/r1/utils/index */ 34396); var _const = __webpack_require__( /*! ../../scheduler/workspaces/const */ 79674); var _m_classes = __webpack_require__( /*! ../m_classes */ 80126); var _m_cache = __webpack_require__( /*! ./m_cache */ 26691); exports.default = class { constructor(_workSpace) { this._workSpace = _workSpace; this.cache = new _m_cache.Cache } prepareCellIndexes(cellCoordinates, groupIndex, inAllDayRow) { let rowIndex = cellCoordinates.rowIndex + groupIndex * this._workSpace._getRowCount(); if (this._workSpace.supportAllDayRow() && this._workSpace.option("showAllDayPanel")) { rowIndex += groupIndex; if (!inAllDayRow) { rowIndex += 1 } } return { rowIndex: rowIndex, columnIndex: cellCoordinates.columnIndex } } getGroupIndex(rowIndex) { return Math.floor(rowIndex / this._workSpace._getRowCount()) } calculateHeaderCellRepeatCount() { return 1 } insertAllDayRowsIntoDateTable() { return this._workSpace.option("showAllDayPanel") } getTotalCellCount() { return this._workSpace._getCellCount() } getTotalRowCount() { return this._workSpace._getRowCount() * this._workSpace._getGroupCount() } calculateTimeCellRepeatCount() { return this._workSpace._getGroupCount() || 1 } getWorkSpaceMinWidth() { let minWidth = this._workSpace._getWorkSpaceWidth(); const workSpaceElementWidth = (0, _position.getBoundingRect)(this._workSpace.$element().get(0)).width; const workspaceContainerWidth = workSpaceElementWidth - this._workSpace.getTimePanelWidth() - this._workSpace.getGroupTableWidth() - 2 * _const.WORK_SPACE_BORDER_PX; if (minWidth < workspaceContainerWidth) { minWidth = workspaceContainerWidth } return minWidth } getAllDayOffset() { return 0 } getGroupCountClass(groups) { return (0, _index.getVerticalGroupCountClass)(groups) } getLeftOffset() { return this._workSpace.getTimePanelWidth() + this._workSpace.getGroupTableWidth() } getGroupBoundsOffset(groupIndex, _ref) { let [$firstCell, $lastCell] = _ref; return this.cache.get(`groupBoundsOffset${groupIndex}`, (() => { const startDayHour = this._workSpace.option("startDayHour"); const endDayHour = this._workSpace.option("endDayHour"); const hoursInterval = this._workSpace.option("hoursInterval"); const dayHeight = (0, _index.calculateDayDuration)(startDayHour, endDayHour) / hoursInterval * this._workSpace.getCellHeight(); const scrollTop = this.getScrollableScrollTop(); const headerRowHeight = (0, _position.getBoundingRect)(this._workSpace._$headerPanelContainer.get(0)).height; let topOffset = groupIndex * dayHeight + headerRowHeight + this._workSpace.option("getHeaderHeight")() - scrollTop; if (this._workSpace.option("showAllDayPanel") && this._workSpace.supportAllDayRow()) { topOffset += this._workSpace.getCellHeight() * (groupIndex + 1) } const bottomOffset = topOffset + dayHeight; const { left: left } = $firstCell.getBoundingClientRect(); const { right: right } = $lastCell.getBoundingClientRect(); this._groupBoundsOffset = { left: left, right: right, top: topOffset, bottom: bottomOffset }; return this._groupBoundsOffset })) } shiftIndicator($indicator, height, rtlOffset, i) { const offset = this._workSpace.getIndicatorOffset(0); const tableOffset = this._workSpace.option("crossScrollingEnabled") ? 0 : this._workSpace.getGroupTableWidth(); const horizontalOffset = rtlOffset ? rtlOffset - offset : offset; let verticalOffset = this._workSpace._getRowCount() * this._workSpace.getCellHeight() * i; if (this._workSpace.supportAllDayRow() && this._workSpace.option("showAllDayPanel")) { verticalOffset += this._workSpace.getAllDayHeight() * (i + 1) } $indicator.css("left", horizontalOffset + tableOffset); $indicator.css("top", height + verticalOffset) } getShaderOffset(i, width) { const offset = this._workSpace.option("crossScrollingEnabled") ? 0 : this._workSpace.getGroupTableWidth(); return this._workSpace.option("rtlEnabled") ? (0, _position.getBoundingRect)(this._$container.get(0)).width - offset - this._workSpace.getWorkSpaceLeftOffset() - width : offset } getShaderTopOffset(i) { return 0 } getShaderHeight() { let height = this._workSpace.getIndicationHeight(); if (this._workSpace.supportAllDayRow() && this._workSpace.option("showAllDayPanel")) { height += this._workSpace.getCellHeight() } return height } getShaderMaxHeight() { let height = this._workSpace._getRowCount() * this._workSpace.getCellHeight(); if (this._workSpace.supportAllDayRow() && this._workSpace.option("showAllDayPanel")) { height += this._workSpace.getCellHeight() } return height } getShaderWidth() { return this._workSpace.getIndicationWidth(0) } getScrollableScrollTop() { return this._workSpace.getScrollable().scrollTop() } addAdditionalGroupCellClasses(cellClass, index, i, j) { cellClass = this._addLastGroupCellClass(cellClass, i + 1); return this._addFirstGroupCellClass(cellClass, i + 1) } _addLastGroupCellClass(cellClass, index) { if (index % this._workSpace._getRowCount() === 0) { return `${cellClass} ${_m_classes.LAST_GROUP_CELL_CLASS}` } return cellClass } _addFirstGroupCellClass(cellClass, index) { if ((index - 1) % this._workSpace._getRowCount() === 0) { return `${cellClass} ${_m_classes.FIRST_GROUP_CELL_CLASS}` } return cellClass } } }, 6523: /*!*******************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/scheduler/workspaces/m_work_space_indicator.js ***! \*******************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _component_registrator = _interopRequireDefault(__webpack_require__( /*! ../../../core/component_registrator */ 92848)); var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../../core/renderer */ 64553)); var _date = _interopRequireDefault(__webpack_require__( /*! ../../../core/utils/date */ 41380)); var _extend = __webpack_require__( /*! ../../../core/utils/extend */ 52576); var _position = __webpack_require__( /*! ../../../core/utils/position */ 41639); var _size = __webpack_require__( /*! ../../../core/utils/size */ 57653); var _window = __webpack_require__( /*! ../../../core/utils/window */ 3104); var _date2 = __webpack_require__( /*! ../../core/utils/date */ 55594); var _index = __webpack_require__( /*! ../../scheduler/r1/utils/index */ 34396); var _m_classes = __webpack_require__( /*! ../m_classes */ 80126); var _m_utils_time_zone = _interopRequireDefault(__webpack_require__( /*! ../m_utils_time_zone */ 18648)); var _m_work_space = _interopRequireDefault(__webpack_require__( /*! ./m_work_space */ 45277)); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } const toMs = _date.default.dateToMilliseconds; class SchedulerWorkSpaceIndicator extends _m_work_space.default { _getToday() { const viewOffset = this.option("viewOffset"); const today = (0, _index.getToday)(this.option("indicatorTime"), this.timeZoneCalculator); return _date2.dateUtilsTs.addOffsets(today, [-viewOffset]) } isIndicationOnView() { if (this.option("showCurrentTimeIndicator")) { const today = this._getToday(); const endViewDate = _date.default.trimTime(this.getEndViewDate()); return _date.default.dateInRange(today, this.getStartViewDate(), new Date(endViewDate.getTime() + toMs("day"))) } return false } isIndicationAvailable() { if (!(0, _window.hasWindow)()) { return false } const today = this._getToday(); return today >= _date.default.trimTime(new Date(this.getStartViewDate())) } isIndicatorVisible() { const today = this._getToday(); const endViewDate = new Date(this.getEndViewDate().getTime() + toMs("minute") - 1); const firstViewDate = new Date(this.getStartViewDate()); firstViewDate.setFullYear(today.getFullYear(), today.getMonth(), today.getDate()); endViewDate.setFullYear(today.getFullYear(), today.getMonth(), today.getDate()); return _date.default.dateInRange(today, firstViewDate, endViewDate) } _renderIndicator(height, rtlOffset, $container, groupCount) { const groupedByDate = this.isGroupedByDate(); const repeatCount = groupedByDate ? 1 : groupCount; for (let i = 0; i < repeatCount; i++) { const $indicator = this._createIndicator($container); (0, _size.setWidth)($indicator, groupedByDate ? this.getCellWidth() * groupCount : this.getCellWidth()); this._groupedStrategy.shiftIndicator($indicator, height, rtlOffset, i) } } _createIndicator($container) { const $indicator = (0, _renderer.default)("
").addClass("dx-scheduler-date-time-indicator"); $container.append($indicator); return $indicator } _getRtlOffset(width) { return this.option("rtlEnabled") ? (0, _position.getBoundingRect)(this._dateTableScrollable.$content().get(0)).width - this.getTimePanelWidth() - width : 0 } _setIndicationUpdateInterval() { if (!this.option("showCurrentTimeIndicator") || 0 === this.option("indicatorUpdateInterval")) { return } this._clearIndicatorUpdateInterval(); this._indicatorInterval = setInterval((() => { this.renderCurrentDateTimeIndication() }), this.option("indicatorUpdateInterval")) } _clearIndicatorUpdateInterval() { if (this._indicatorInterval) { clearInterval(this._indicatorInterval); delete this._indicatorInterval } } _isVerticalShader() { return true } getIndicationWidth(groupIndex) { const maxWidth = this.getCellWidth() * this._getCellCount(); let difference = this._getIndicatorDuration(); if (difference > this._getCellCount()) { difference = this._getCellCount() } const width = difference * this.getRoundedCellWidth(groupIndex, groupIndex * this._getCellCount(), difference); return maxWidth < width ? maxWidth : width } getIndicatorOffset(groupIndex) { const difference = this._getIndicatorDuration() - 1; const offset = difference * this.getRoundedCellWidth(groupIndex, groupIndex * this._getCellCount(), difference); return offset } _getIndicatorDuration() { const today = this._getToday(); const firstViewDate = new Date(this.getStartViewDate()); let timeDiff = today.getTime() - firstViewDate.getTime(); if ("workWeek" === this.option("type")) { timeDiff -= this._getWeekendsCount(Math.round(timeDiff / toMs("day"))) * toMs("day") } return Math.ceil((timeDiff + 1) / toMs("day")) } getIndicationHeight() { const today = _m_utils_time_zone.default.getDateWithoutTimezoneChange(this._getToday()); const cellHeight = this.getCellHeight(); const date = new Date(this.getStartViewDate()); if (this.isIndicationOnView()) { date.setFullYear(today.getFullYear(), today.getMonth(), today.getDate()) } const duration = today.getTime() - date.getTime(); const cellCount = duration / this.getCellDuration(); return cellCount * cellHeight } _dispose() { this._clearIndicatorUpdateInterval(); super._dispose.apply(this, arguments) } renderCurrentDateTimeIndication() { this.renderCurrentDateTimeLineAndShader(); if (this.isRenovatedRender()) { this.renderWorkSpace({ generateNewData: true, renderComponents: { header: true, timePanel: true } }) } } renderCurrentDateTimeLineAndShader() { var _this$_shader; this._cleanDateTimeIndicator(); null === (_this$_shader = this._shader) || void 0 === _this$_shader || _this$_shader.clean(); this._renderDateTimeIndication() } _isCurrentTimeHeaderCell(headerIndex) { if (this.isIndicationOnView()) { const { completeDateHeaderMap: completeDateHeaderMap } = this.viewDataProvider; const date = completeDateHeaderMap[completeDateHeaderMap.length - 1][headerIndex].startDate; return _date.default.sameDate(date, this._getToday()) } return false } _getHeaderPanelCellClass(i) { const cellClass = super._getHeaderPanelCellClass(i); if (this._isCurrentTimeHeaderCell(i)) { return `${cellClass} ${_m_classes.HEADER_CURRENT_TIME_CELL_CLASS}` } return cellClass } _cleanView() { super._cleanView(); this._cleanDateTimeIndicator() } _dimensionChanged() { super._dimensionChanged(); this.renderCurrentDateTimeLineAndShader() } _cleanDateTimeIndicator() { this.$element().find(".dx-scheduler-date-time-indicator").remove() } _cleanWorkSpace() { super._cleanWorkSpace(); this._renderDateTimeIndication(); this._setIndicationUpdateInterval() } _optionChanged(args) { switch (args.name) { case "showCurrentTimeIndicator": case "indicatorTime": this._cleanWorkSpace(); break; case "indicatorUpdateInterval": this._setIndicationUpdateInterval(); break; case "showAllDayPanel": case "allDayExpanded": case "crossScrollingEnabled": super._optionChanged(args); this.renderCurrentDateTimeIndication(); break; case "shadeUntilCurrentTime": this.renderCurrentDateTimeIndication(); break; default: super._optionChanged(args) } } _getDefaultOptions() { return (0, _extend.extend)(super._getDefaultOptions(), { showCurrentTimeIndicator: true, indicatorTime: new Date, indicatorUpdateInterval: 5 * toMs("minute"), shadeUntilCurrentTime: true }) } _getCurrentTimePanelCellIndices() { const rowCountPerGroup = this._getTimePanelRowCount(); const today = this._getToday(); const index = this.getCellIndexByDate(today); const { rowIndex: currentTimeRowIndex } = this._getCellCoordinatesByIndex(index); if (void 0 === currentTimeRowIndex) { return [] } let cellIndices; if (0 === currentTimeRowIndex) { cellIndices = [currentTimeRowIndex] } else { cellIndices = currentTimeRowIndex % 2 === 0 ? [currentTimeRowIndex - 1, currentTimeRowIndex] : [currentTimeRowIndex, currentTimeRowIndex + 1] } const verticalGroupCount = this._isVerticalGroupedWorkSpace() ? this._getGroupCount() : 1; return [...new Array(verticalGroupCount)].reduce(((currentIndices, _, groupIndex) => [...currentIndices, ...cellIndices.map((cellIndex => rowCountPerGroup * groupIndex + cellIndex))]), []) } _renderDateTimeIndication() { if (!this.isIndicationAvailable()) { return } if (this.option("shadeUntilCurrentTime")) { this._shader.render() } if (!this.isIndicationOnView() || !this.isIndicatorVisible()) { return } const groupCount = this._getGroupCount() || 1; const $container = this._dateTableScrollable.$content(); const height = this.getIndicationHeight(); const rtlOffset = this._getRtlOffset(this.getCellWidth()); this._renderIndicator(height, rtlOffset, $container, groupCount); if (!this.isRenovatedRender()) { this._setCurrentTimeCells() } } _setCurrentTimeCells() { const timePanelCells = this._getTimePanelCells(); const currentTimeCellIndices = this._getCurrentTimePanelCellIndices(); currentTimeCellIndices.forEach((timePanelCellIndex => { timePanelCells.eq(timePanelCellIndex).addClass("dx-scheduler-time-panel-current-time-cell") })) } _cleanCurrentTimeCells() { this.$element().find(".dx-scheduler-time-panel-current-time-cell").removeClass("dx-scheduler-time-panel-current-time-cell") } }(0, _component_registrator.default)("dxSchedulerWorkSpace", SchedulerWorkSpaceIndicator); exports.default = SchedulerWorkSpaceIndicator }, 3416: /*!***************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/scheduler/workspaces/m_work_space_month.js ***! \***************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _component_registrator = _interopRequireDefault(__webpack_require__( /*! ../../../core/component_registrator */ 92848)); var _common = __webpack_require__( /*! ../../../core/utils/common */ 17781); var _date = _interopRequireDefault(__webpack_require__( /*! ../../../core/utils/date */ 41380)); var _position = __webpack_require__( /*! ../../../core/utils/position */ 41639); var _window = __webpack_require__( /*! ../../../core/utils/window */ 3104); var _index = __webpack_require__( /*! ../../scheduler/r1/components/index */ 19747); var _index2 = __webpack_require__( /*! ../../scheduler/r1/utils/index */ 34396); var _constants = __webpack_require__( /*! ../constants */ 25307); var _m_utils = __webpack_require__( /*! ../m_utils */ 5327); var _m_work_space_indicator = _interopRequireDefault(__webpack_require__( /*! ./m_work_space_indicator */ 6523)); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } function _extends() { return _extends = Object.assign ? Object.assign.bind() : function(n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) { ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]) } } return n }, _extends.apply(null, arguments) } const toMs = _date.default.dateToMilliseconds; class SchedulerWorkSpaceMonth extends _m_work_space_indicator.default { get type() { return _constants.VIEWS.MONTH } _getElementClass() { return "dx-scheduler-work-space-month" } _getFormat() { return _index2.formatWeekday } _getIntervalBetween(currentDate) { const firstViewDate = this.getStartViewDate(); const timeZoneOffset = _date.default.getTimezonesDifference(firstViewDate, currentDate); return currentDate.getTime() - (firstViewDate.getTime() - 36e5 * this.option("startDayHour")) - timeZoneOffset } _getDateGenerationOptions() { return _extends({}, super._getDateGenerationOptions(), { cellCountInDay: 1 }) } getCellWidth() { return this.cache.get("cellWidth", (() => { let averageWidth = 0; const cells = this._getCells().slice(0, 7); cells.each(((index, element) => { averageWidth += (0, _window.hasWindow)() ? (0, _position.getBoundingRect)(element).width : 0 })); return 0 === cells.length ? void 0 : averageWidth / 7 })) } _insertAllDayRowsIntoDateTable() { return false } _getCellCoordinatesByIndex(index) { const rowIndex = Math.floor(index / this._getCellCount()); const columnIndex = index - this._getCellCount() * rowIndex; return { rowIndex: rowIndex, columnIndex: columnIndex } } _needCreateCrossScrolling() { return this.option("crossScrollingEnabled") || this._isVerticalGroupedWorkSpace() } _getViewStartByOptions() { return _index2.monthUtils.getViewStartByOptions(this.option("startDate"), this.option("currentDate"), this.option("intervalCount"), _date.default.getFirstMonthDate(this.option("startDate"))) } _updateIndex(index) { return index } isIndicationAvailable() { return false } getIntervalDuration() { return toMs("day") } getTimePanelWidth() { return 0 } supportAllDayRow() { return false } keepOriginalHours() { return true } getWorkSpaceLeftOffset() { return 0 } needApplyCollectorOffset() { return true } _getHeaderDate() { return this._getViewStartByOptions() } scrollToTime() { return (0, _common.noop)() } renderRAllDayPanel() {} renderRTimeTable() {} renderRDateTable() { _m_utils.utils.renovation.renderComponent(this, this._$dateTable, _index.DateTableMonthComponent, "renovatedDateTable", this._getRDateTableProps()) } _createWorkSpaceElements() { if (this._isVerticalGroupedWorkSpace()) { this._createWorkSpaceScrollableElements() } else { super._createWorkSpaceElements() } } _updateAllDayVisibility() { return (0, _common.noop)() } _updateAllDayHeight() { return (0, _common.noop)() } _renderTimePanel() { return (0, _common.noop)() } _renderAllDayPanel() { return (0, _common.noop)() } _setMonthClassesToCell($cell, data) { $cell.toggleClass("dx-scheduler-date-table-current-date", data.isCurrentDate).toggleClass("dx-scheduler-date-table-first-of-month", data.firstDayOfMonth).toggleClass("dx-scheduler-date-table-other-month", data.otherMonth) } _createAllDayPanelElements() {} _renderTableBody(options) { options.getCellText = (rowIndex, columnIndex) => { const date = this.viewDataProvider.completeViewDataMap[rowIndex][columnIndex].startDate; return _index2.monthUtils.getCellText(date, this.option("intervalCount")) }; options.getCellTextClass = "dx-scheduler-date-table-cell-text"; options.setAdditionalClasses = this._setMonthClassesToCell.bind(this); super._renderTableBody(options) } }(0, _component_registrator.default)("dxSchedulerWorkSpaceMonth", SchedulerWorkSpaceMonth); exports.default = SchedulerWorkSpaceMonth }, 19402: /*!******************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/scheduler/workspaces/m_work_space_vertical.js ***! \******************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _index = __webpack_require__( /*! ../../scheduler/r1/utils/index */ 34396); var _m_work_space_indicator = (e = __webpack_require__( /*! ./m_work_space_indicator */ 6523), e && e.__esModule ? e : { default: e }); var e; function _extends() { return _extends = Object.assign ? Object.assign.bind() : function(n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) { ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]) } } return n }, _extends.apply(null, arguments) } class SchedulerWorkspaceVertical extends _m_work_space_indicator.default { _getFormat() { return _index.formatWeekdayAndDay } generateRenderOptions() { const options = super.generateRenderOptions(); return _extends({}, options, { isGenerateTimePanelData: true }) } _isRenderHeaderPanelEmptyCell() { return true } } exports.default = SchedulerWorkspaceVertical }, 23276: /*!**************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/scheduler/workspaces/m_work_space_week.js ***! \**************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _component_registrator = _interopRequireDefault(__webpack_require__( /*! ../../../core/component_registrator */ 92848)); var _index = __webpack_require__( /*! ../../scheduler/r1/utils/index */ 34396); var _constants = __webpack_require__( /*! ../constants */ 25307); var _m_work_space_vertical = _interopRequireDefault(__webpack_require__( /*! ./m_work_space_vertical */ 19402)); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } class SchedulerWorkSpaceWeek extends _m_work_space_vertical.default { get type() { return _constants.VIEWS.WEEK } _getElementClass() { return "dx-scheduler-work-space-week" } _calculateViewStartDate() { return _index.weekUtils.calculateViewStartDate(this.option("startDate"), this._firstDayOfWeek()) } }(0, _component_registrator.default)("dxSchedulerWorkSpaceWeek", SchedulerWorkSpaceWeek); exports.default = SchedulerWorkSpaceWeek }, 27420: /*!*******************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/scheduler/workspaces/m_work_space_work_week.js ***! \*******************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _component_registrator = _interopRequireDefault(__webpack_require__( /*! ../../../core/component_registrator */ 92848)); var _index = __webpack_require__( /*! ../../scheduler/r1/utils/index */ 34396); var _constants = __webpack_require__( /*! ../constants */ 25307); var _m_work_space_week = _interopRequireDefault(__webpack_require__( /*! ./m_work_space_week */ 23276)); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } class SchedulerWorkSpaceWorkWeek extends _m_work_space_week.default { get type() { return _constants.VIEWS.WORK_WEEK } constructor() { super(...arguments); this._getWeekendsCount = _index.getWeekendsCount } _getElementClass() { return "dx-scheduler-work-space-work-week" } }(0, _component_registrator.default)("dxSchedulerWorkSpaceWorkWeek", SchedulerWorkSpaceWorkWeek); exports.default = SchedulerWorkSpaceWorkWeek }, 82274: /*!************************************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/scheduler/workspaces/view_model/m_date_header_data_generator.js ***! \************************************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.DateHeaderDataGenerator = void 0; var _date = _interopRequireDefault(__webpack_require__( /*! ../../../../core/utils/date */ 41380)); var _constants = __webpack_require__( /*! ../../../scheduler/constants */ 25307); var _index = __webpack_require__( /*! ../../../scheduler/r1/utils/index */ 34396); var _m_utils_time_zone = _interopRequireDefault(__webpack_require__( /*! ../../m_utils_time_zone */ 18648)); const _excluded = ["startDate", "endDate", "isFirstGroupCell", "isLastGroupCell"]; function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } function _extends() { return _extends = Object.assign ? Object.assign.bind() : function(n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) { ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]) } } return n }, _extends.apply(null, arguments) } exports.DateHeaderDataGenerator = class { constructor(_viewDataGenerator) { this._viewDataGenerator = _viewDataGenerator } getCompleteDateHeaderMap(options, completeViewDataMap) { const { isGenerateWeekDaysHeaderData: isGenerateWeekDaysHeaderData } = options; const result = []; if (isGenerateWeekDaysHeaderData) { const weekDaysRow = this._generateWeekDaysHeaderRowMap(options, completeViewDataMap); result.push(weekDaysRow) } const dateRow = this._generateHeaderDateRow(options, completeViewDataMap); result.push(dateRow); return result } _generateWeekDaysHeaderRowMap(options, completeViewDataMap) { const { isGroupedByDate: isGroupedByDate, getResourceManager: getResourceManager, groupOrientation: groupOrientation, startDayHour: startDayHour, endDayHour: endDayHour, hoursInterval: hoursInterval, isHorizontalGrouping: isHorizontalGrouping, intervalCount: intervalCount, viewOffset: viewOffset } = options; const resourceManager = getResourceManager(); const groupCount = resourceManager.groupCount(); const cellCountInDay = this._viewDataGenerator.getCellCountInDay(startDayHour, endDayHour, hoursInterval); const horizontalGroupCount = (0, _index.getHorizontalGroupCount)(resourceManager.groupsLeafs, groupOrientation); const index = completeViewDataMap[0][0].allDay ? 1 : 0; const colSpan = isGroupedByDate ? horizontalGroupCount * cellCountInDay : cellCountInDay; const datesRepeatCount = isHorizontalGrouping && !isGroupedByDate ? groupCount : 1; const daysInGroup = this._viewDataGenerator.daysInInterval * intervalCount; const daysInView = daysInGroup * datesRepeatCount; const weekDaysRow = []; for (let dayIndex = 0; dayIndex < daysInView; dayIndex += 1) { const cell = completeViewDataMap[index][dayIndex * colSpan]; const shiftedStartDate = _m_utils_time_zone.default.addOffsetsWithoutDST(cell.startDate, -viewOffset); weekDaysRow.push(_extends({}, cell, { colSpan: colSpan, text: (0, _index.formatWeekdayAndDay)(shiftedStartDate), isFirstGroupCell: false, isLastGroupCell: false })) } return weekDaysRow } _generateHeaderDateRow(options, completeViewDataMap) { const { today: today, isGroupedByDate: isGroupedByDate, groupOrientation: groupOrientation, getResourceManager: getResourceManager, headerCellTextFormat: headerCellTextFormat, getDateForHeaderText: getDateForHeaderText, interval: interval, startViewDate: startViewDate, startDayHour: startDayHour, endDayHour: endDayHour, hoursInterval: hoursInterval, intervalCount: intervalCount, currentDate: currentDate, viewType: viewType, viewOffset: viewOffset } = options; const horizontalGroupCount = (0, _index.getHorizontalGroupCount)(getResourceManager().groupsLeafs, groupOrientation); const index = completeViewDataMap[0][0].allDay ? 1 : 0; const colSpan = isGroupedByDate ? horizontalGroupCount : 1; const isVerticalGrouping = "vertical" === groupOrientation; const cellCountInGroupRow = this._viewDataGenerator.getCellCount({ intervalCount: intervalCount, currentDate: currentDate, viewType: viewType, hoursInterval: hoursInterval, startDayHour: startDayHour, endDayHour: endDayHour }); const cellCountInDay = this._viewDataGenerator.getCellCountInDay(startDayHour, endDayHour, hoursInterval); const slicedByColumnsData = isGroupedByDate ? completeViewDataMap[index].filter(((_, columnIndex) => columnIndex % horizontalGroupCount === 0)) : completeViewDataMap[index]; const shouldShiftDatesForHeaderText = !(0, _index.isTimelineView)(viewType) || viewType === _constants.VIEWS.TIMELINE_MONTH; return slicedByColumnsData.map(((_ref, idx) => { let { startDate: startDate, isFirstGroupCell: isFirstGroupCell, isLastGroupCell: isLastGroupCell } = _ref, restProps = function(r, e) { if (null == r) { return {} } var t = {}; for (var n in r) { if ({}.hasOwnProperty.call(r, n)) { if (e.includes(n)) { continue } t[n] = r[n] } } return t }(_ref, _excluded); const shiftedStartDate = _m_utils_time_zone.default.addOffsetsWithoutDST(startDate, -viewOffset); const shiftedStartDateForHeaderText = shouldShiftDatesForHeaderText ? shiftedStartDate : startDate; const text = (0, _index.getHeaderCellText)(idx % cellCountInGroupRow, shiftedStartDateForHeaderText, headerCellTextFormat, getDateForHeaderText, { interval: interval, startViewDate: startViewDate, startDayHour: startDayHour, cellCountInDay: cellCountInDay, viewOffset: viewOffset }); return _extends({}, restProps, { startDate: startDate, text: text, today: _date.default.sameDate(shiftedStartDate, today), colSpan: colSpan, isFirstGroupCell: isGroupedByDate || isFirstGroupCell && !isVerticalGrouping, isLastGroupCell: isGroupedByDate || isLastGroupCell && !isVerticalGrouping }) })) } generateDateHeaderData(completeDateHeaderMap, completeViewDataMap, options) { const { isGenerateWeekDaysHeaderData: isGenerateWeekDaysHeaderData, cellWidth: cellWidth, isProvideVirtualCellsWidth: isProvideVirtualCellsWidth, startDayHour: startDayHour, endDayHour: endDayHour, hoursInterval: hoursInterval, isMonthDateHeader: isMonthDateHeader } = options; const dataMap = []; let weekDayRowConfig = {}; const validCellWidth = cellWidth || 0; if (isGenerateWeekDaysHeaderData) { weekDayRowConfig = this._generateDateHeaderDataRow(options, completeDateHeaderMap, completeViewDataMap, this._viewDataGenerator.getCellCountInDay(startDayHour, endDayHour, hoursInterval), 0, validCellWidth); dataMap.push(weekDayRowConfig.dateRow) } const datesRowConfig = this._generateDateHeaderDataRow(options, completeDateHeaderMap, completeViewDataMap, 1, isGenerateWeekDaysHeaderData ? 1 : 0, validCellWidth); dataMap.push(datesRowConfig.dateRow); return { dataMap: dataMap, leftVirtualCellWidth: isProvideVirtualCellsWidth ? datesRowConfig.leftVirtualCellWidth : void 0, rightVirtualCellWidth: isProvideVirtualCellsWidth ? datesRowConfig.rightVirtualCellWidth : void 0, leftVirtualCellCount: datesRowConfig.leftVirtualCellCount, rightVirtualCellCount: datesRowConfig.rightVirtualCellCount, weekDayLeftVirtualCellWidth: weekDayRowConfig.leftVirtualCellWidth, weekDayRightVirtualCellWidth: weekDayRowConfig.rightVirtualCellWidth, weekDayLeftVirtualCellCount: weekDayRowConfig.leftVirtualCellCount, weekDayRightVirtualCellCount: weekDayRowConfig.rightVirtualCellCount, isMonthDateHeader: isMonthDateHeader } } _generateDateHeaderDataRow(options, completeDateHeaderMap, completeViewDataMap, baseColSpan, rowIndex, cellWidth) { const { startCellIndex: startCellIndex, cellCount: cellCount, isProvideVirtualCellsWidth: isProvideVirtualCellsWidth, getResourceManager: getResourceManager, groupOrientation: groupOrientation, isGroupedByDate: isGroupedByDate } = options; const horizontalGroupCount = (0, _index.getHorizontalGroupCount)(getResourceManager().groupsLeafs, groupOrientation); const colSpan = isGroupedByDate ? horizontalGroupCount * baseColSpan : baseColSpan; const leftVirtualCellCount = Math.floor(startCellIndex / colSpan); const displayedCellCount = (0, _index.getDisplayedCellCount)(cellCount, completeViewDataMap); const actualCellCount = Math.ceil((startCellIndex + displayedCellCount) / colSpan); const totalCellCount = (0, _index.getTotalCellCountByCompleteData)(completeViewDataMap); const dateRow = completeDateHeaderMap[rowIndex].slice(leftVirtualCellCount, actualCellCount); const finalLeftVirtualCellCount = leftVirtualCellCount * colSpan; const finalLeftVirtualCellWidth = finalLeftVirtualCellCount * cellWidth; const finalRightVirtualCellCount = totalCellCount - actualCellCount * colSpan; const finalRightVirtualCellWidth = finalRightVirtualCellCount * cellWidth; return { dateRow: dateRow, leftVirtualCellCount: finalLeftVirtualCellCount, leftVirtualCellWidth: isProvideVirtualCellsWidth ? finalLeftVirtualCellWidth : void 0, rightVirtualCellCount: finalRightVirtualCellCount, rightVirtualCellWidth: isProvideVirtualCellsWidth ? finalRightVirtualCellWidth : void 0 } } } }, 30795: /*!***********************************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/scheduler/workspaces/view_model/m_grouped_data_map_provider.js ***! \***********************************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.GroupedDataMapProvider = void 0; var _date = _interopRequireDefault(__webpack_require__( /*! ../../../../core/utils/date */ 41380)); var _date2 = __webpack_require__( /*! ../../../core/utils/date */ 55594); var _index = __webpack_require__( /*! ../../../scheduler/r1/utils/index */ 34396); var _m_utils_time_zone = _interopRequireDefault(__webpack_require__( /*! ../../m_utils_time_zone */ 18648)); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } function _extends() { return _extends = Object.assign ? Object.assign.bind() : function(n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) { ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]) } } return n }, _extends.apply(null, arguments) } const toMs = _date.default.dateToMilliseconds; exports.GroupedDataMapProvider = class { constructor(viewDataGenerator, viewDataMap, completeViewDataMap, viewOptions) { this.groupedDataMap = viewDataGenerator.generateGroupedDataMap(viewDataMap); this.completeViewDataMap = completeViewDataMap; this._viewOptions = viewOptions } getGroupStartDate(groupIndex) { var _firstRow$; const firstRow = this.getFirstGroupRow(groupIndex); return (null === firstRow || void 0 === firstRow || null === (_firstRow$ = firstRow[0]) || void 0 === _firstRow$ || null === (_firstRow$ = _firstRow$.cellData) || void 0 === _firstRow$ ? void 0 : _firstRow$.startDate) ?? null } getGroupEndDate(groupIndex) { const lastRow = this.getLastGroupRow(groupIndex); if (lastRow) { const lastColumnIndex = lastRow.length - 1; const { cellData: cellData } = lastRow[lastColumnIndex]; const { endDate: endDate } = cellData; return endDate } } findGroupCellStartDate(groupIndex, startDate, endDate, isFindByDate) { const groupData = this.getGroupFromDateTableGroupMap(groupIndex); const checkCellStartDate = (rowIndex, columnIndex) => { const { cellData: cellData } = groupData[rowIndex][columnIndex]; let { startDate: secondMin, endDate: secondMax } = cellData; if (isFindByDate) { secondMin = _date.default.trimTime(secondMin); secondMax = _date.default.setToDayEnd(secondMin) } if (_date.default.intervalsOverlap({ firstMin: startDate, firstMax: endDate, secondMin: secondMin, secondMax: secondMax })) { return secondMin } }; const startDateVerticalSearch = (() => { const cellCount = groupData[0].length; for (let columnIndex = 0; columnIndex < cellCount; ++columnIndex) { for (let rowIndex = 0; rowIndex < groupData.length; ++rowIndex) { const result = checkCellStartDate(rowIndex, columnIndex); if (result) { return result } } } })(); const startDateHorizontalSearch = (() => { for (let rowIndex = 0; rowIndex < groupData.length; ++rowIndex) { const row = groupData[rowIndex]; for (let columnIndex = 0; columnIndex < row.length; ++columnIndex) { const result = checkCellStartDate(rowIndex, columnIndex); if (result) { return result } } } })(); return startDateVerticalSearch > startDateHorizontalSearch ? startDateHorizontalSearch : startDateVerticalSearch } findAllDayGroupCellStartDate(groupIndex) { var _groupedData$; const groupedData = this.getGroupFromDateTableGroupMap(groupIndex); const cellData = null === groupedData || void 0 === groupedData || null === (_groupedData$ = groupedData[0]) || void 0 === _groupedData$ || null === (_groupedData$ = _groupedData$[0]) || void 0 === _groupedData$ ? void 0 : _groupedData$.cellData; return (null === cellData || void 0 === cellData ? void 0 : cellData.startDate) ?? null } findCellPositionInMap(cellInfo, isAppointmentRender) { const { groupIndex: groupIndex, startDate: startDate, isAllDay: isAllDay, index: index } = cellInfo; const { allDayPanelGroupedMap: allDayPanelGroupedMap, dateTableGroupedMap: dateTableGroupedMap } = this.groupedDataMap; const { viewOffset: viewOffset } = this._viewOptions; const rows = isAllDay && !this._viewOptions.isVerticalGrouping ? allDayPanelGroupedMap[groupIndex] ? [allDayPanelGroupedMap[groupIndex]] : [] : dateTableGroupedMap[groupIndex] || []; for (let rowIndex = 0; rowIndex < rows.length; rowIndex += 1) { const row = rows[rowIndex]; for (let columnIndex = 0; columnIndex < row.length; columnIndex += 1) { const cell = row[columnIndex]; const originCellData = cell.cellData; const cellData = isAppointmentRender ? _extends({}, originCellData, { startDate: _date2.dateUtilsTs.addOffsets(cell.cellData.startDate, [-viewOffset]), endDate: _date2.dateUtilsTs.addOffsets(cell.cellData.endDate, [-viewOffset]) }) : originCellData; if (this._isSameGroupIndexAndIndex(cellData, groupIndex, index)) { if (this.isStartDateInCell(startDate, isAllDay, cellData, originCellData)) { return cell.position } } } } return } isStartDateInCell(startDate, inAllDayRow, _ref, _ref2) { let { startDate: cellStartDate, endDate: cellEndDate, allDay: cellAllDay } = _ref; let { startDate: originCellStartDate, endDate: originCellEndDate } = _ref2; const { viewType: viewType } = this._viewOptions; const cellSecondIntervalOffset = this.getCellSecondIntervalOffset(originCellStartDate, originCellEndDate); const isCellCoversTwoIntervals = 0 !== cellSecondIntervalOffset; switch (true) { case !(0, _index.isDateAndTimeView)(viewType): case inAllDayRow && cellAllDay: return _date.default.sameDate(startDate, cellStartDate); case !inAllDayRow && !isCellCoversTwoIntervals: return startDate >= cellStartDate && startDate < cellEndDate; case !inAllDayRow && isCellCoversTwoIntervals: return this.isStartDateInTwoIntervalsCell(startDate, cellSecondIntervalOffset, cellStartDate, cellEndDate); default: return false } } getCellSecondIntervalOffset(cellStartDate, cellEndDate) { const nextHourCellStartDate = _date2.dateUtilsTs.addOffsets(cellStartDate, [toMs("hour")]); const cellTimezoneDiff = _m_utils_time_zone.default.getDaylightOffset(cellStartDate, cellEndDate); const cellNextHourTimezoneDiff = _m_utils_time_zone.default.getDaylightOffset(cellStartDate, nextHourCellStartDate); const isDSTInsideCell = 0 !== cellTimezoneDiff; const isWinterTimezoneNextHour = cellNextHourTimezoneDiff < 0; return !isDSTInsideCell && isWinterTimezoneNextHour ? Math.abs(cellNextHourTimezoneDiff * toMs("minute")) : 0 } isStartDateInTwoIntervalsCell(startDate, secondIntervalOffset, cellStartDate, cellEndDate) { const nextIntervalCellStartDate = _date2.dateUtilsTs.addOffsets(cellStartDate, [secondIntervalOffset]); const nextIntervalCellEndDate = _date2.dateUtilsTs.addOffsets(cellEndDate, [secondIntervalOffset]); const isInOriginInterval = startDate >= cellStartDate && startDate < cellEndDate; const isInSecondInterval = startDate >= nextIntervalCellStartDate && startDate < nextIntervalCellEndDate; return isInOriginInterval || isInSecondInterval } _isSameGroupIndexAndIndex(cellData, groupIndex, index) { return cellData.groupIndex === groupIndex && (void 0 === index || cellData.index === index) } getCellsGroup(groupIndex) { const { dateTableGroupedMap: dateTableGroupedMap } = this.groupedDataMap; const groupData = dateTableGroupedMap[groupIndex]; if (groupData) { const { cellData: cellData } = groupData[0][0]; return cellData.groups } } getCompletedGroupsInfo() { const { dateTableGroupedMap: dateTableGroupedMap } = this.groupedDataMap; return dateTableGroupedMap.map((groupData => { const firstCell = groupData[0][0]; const { allDay: allDay, groupIndex: groupIndex } = firstCell.cellData; return { allDay: allDay, groupIndex: groupIndex, startDate: this.getGroupStartDate(groupIndex), endDate: this.getGroupEndDate(groupIndex) } })).filter((_ref3 => { let { startDate: startDate } = _ref3; return !!startDate })) } getGroupIndices() { return this.getCompletedGroupsInfo().map((_ref4 => { let { groupIndex: groupIndex } = _ref4; return groupIndex })) } getGroupFromDateTableGroupMap(groupIndex) { const { dateTableGroupedMap: dateTableGroupedMap } = this.groupedDataMap; return dateTableGroupedMap[groupIndex] } getFirstGroupRow(groupIndex) { const groupedData = this.getGroupFromDateTableGroupMap(groupIndex); if (groupedData) { const { cellData: cellData } = groupedData[0][0]; return !cellData.allDay ? groupedData[0] : groupedData[1] } } getLastGroupRow(groupIndex) { const { dateTableGroupedMap: dateTableGroupedMap } = this.groupedDataMap; const groupedData = dateTableGroupedMap[groupIndex]; if (groupedData) { const lastRowIndex = groupedData.length - 1; return groupedData[lastRowIndex] } } getLastGroupCellPosition(groupIndex) { const groupRow = this.getLastGroupRow(groupIndex); return null === groupRow || void 0 === groupRow ? void 0 : groupRow[(null === groupRow || void 0 === groupRow ? void 0 : groupRow.length) - 1].position } getRowCountInGroup(groupIndex) { const groupRow = this.getLastGroupRow(groupIndex); const cellAmount = groupRow.length; const lastCellData = groupRow[cellAmount - 1].cellData; const lastCellIndex = lastCellData.index; return (lastCellIndex + 1) / groupRow.length } } }, 16794: /*!***********************************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/scheduler/workspaces/view_model/m_time_panel_data_generator.js ***! \***********************************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.TimePanelDataGenerator = void 0; var _date = (e = __webpack_require__( /*! ../../../../core/utils/date */ 41380), e && e.__esModule ? e : { default: e }); var e; var _date2 = __webpack_require__( /*! ../../../core/utils/date */ 55594); var _math = __webpack_require__( /*! ../../../core/utils/math */ 12220); var _index = __webpack_require__( /*! ../../../scheduler/r1/utils/index */ 34396); const _excluded = ["allDay", "startDate", "endDate", "groups", "groupIndex", "isFirstGroupCell", "isLastGroupCell", "index"]; function _extends() { return _extends = Object.assign ? Object.assign.bind() : function(n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) { ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]) } } return n }, _extends.apply(null, arguments) } const toMs = _date.default.dateToMilliseconds; exports.TimePanelDataGenerator = class { constructor(_viewDataGenerator) { this._viewDataGenerator = _viewDataGenerator } getCompleteTimePanelMap(options, completeViewDataMap) { const { startViewDate: startViewDate, cellDuration: cellDuration, startDayHour: startDayHour, isVerticalGrouping: isVerticalGrouping, intervalCount: intervalCount, currentDate: currentDate, viewType: viewType, hoursInterval: hoursInterval, endDayHour: endDayHour, viewOffset: viewOffset, today: today, showCurrentTimeIndicator: showCurrentTimeIndicator } = options; const rowsCount = completeViewDataMap.length - 1; const realEndViewDate = completeViewDataMap[rowsCount][completeViewDataMap[rowsCount].length - 1].endDate; const rowCountInGroup = this._viewDataGenerator.getRowCount({ intervalCount: intervalCount, currentDate: currentDate, viewType: viewType, hoursInterval: hoursInterval, startDayHour: startDayHour, endDayHour: endDayHour }); const cellCountInGroupRow = this._viewDataGenerator.getCellCount({ intervalCount: intervalCount, currentDate: currentDate, viewType: viewType, hoursInterval: hoursInterval, startDayHour: startDayHour, endDayHour: endDayHour }); let allDayRowsCount = 0; let usualCellIndex = 0; return completeViewDataMap.map(((row, index) => { const _row$ = row[0], { allDay: allDay, startDate: startDate, groups: groups, groupIndex: groupIndex, isFirstGroupCell: isFirstGroupCell, isLastGroupCell: isLastGroupCell, index: cellIndex } = _row$, restCellProps = function(r, e) { if (null == r) { return {} } var t = {}; for (var n in r) { if ({}.hasOwnProperty.call(r, n)) { if (e.includes(n)) { continue } t[n] = r[n] } } return t }(_row$, _excluded); const highlighted = allDay ? false : this.isTimeCellShouldBeHighlighted(today, viewOffset, { startViewDate: startViewDate, realEndViewDate: realEndViewDate, showCurrentTimeIndicator: showCurrentTimeIndicator }, { date: startDate, index: usualCellIndex, duration: Math.round(cellDuration), isFirst: 0 === usualCellIndex, isLast: this.isLastCellInGroup(completeViewDataMap, index) }); if (allDay) { allDayRowsCount += 1; usualCellIndex = 0 } else { usualCellIndex += 1 } const timeIndex = (index - allDayRowsCount) % rowCountInGroup; return _extends({}, restCellProps, { startDate: startDate, allDay: allDay, highlighted: highlighted, text: _index.weekUtils.getTimePanelCellText(timeIndex, startDate, startViewDate, cellDuration, startDayHour, viewOffset), groups: isVerticalGrouping ? groups : void 0, groupIndex: isVerticalGrouping ? groupIndex : void 0, isFirstGroupCell: isVerticalGrouping && isFirstGroupCell, isLastGroupCell: isVerticalGrouping && isLastGroupCell, index: Math.floor(cellIndex / cellCountInGroupRow) }) })) } generateTimePanelData(completeTimePanelMap, options) { const { startRowIndex: startRowIndex, rowCount: rowCount, topVirtualRowHeight: topVirtualRowHeight, bottomVirtualRowHeight: bottomVirtualRowHeight, isGroupedAllDayPanel: isGroupedAllDayPanel, isVerticalGrouping: isVerticalGrouping, isAllDayPanelVisible: isAllDayPanelVisible } = options; const indexDifference = isVerticalGrouping || !isAllDayPanelVisible ? 0 : 1; const correctedStartRowIndex = startRowIndex + indexDifference; const displayedRowCount = (0, _index.getDisplayedRowCount)(rowCount, completeTimePanelMap); const timePanelMap = completeTimePanelMap.slice(correctedStartRowIndex, correctedStartRowIndex + displayedRowCount); const timePanelData = { topVirtualRowHeight: topVirtualRowHeight, bottomVirtualRowHeight: bottomVirtualRowHeight, isGroupedAllDayPanel: isGroupedAllDayPanel }; const { previousGroupedData: groupedData } = this._generateTimePanelDataFromMap(timePanelMap, isVerticalGrouping); timePanelData.groupedData = groupedData; return timePanelData } _generateTimePanelDataFromMap(timePanelMap, isVerticalGrouping) { return timePanelMap.reduce(((_ref, cellData) => { let { previousGroupIndex: previousGroupIndex, previousGroupedData: previousGroupedData } = _ref; const currentGroupIndex = cellData.groupIndex; if (currentGroupIndex !== previousGroupIndex) { previousGroupedData.push({ dateTable: [], isGroupedAllDayPanel: (0, _index.getIsGroupedAllDayPanel)(!!cellData.allDay, isVerticalGrouping), groupIndex: currentGroupIndex, key: (0, _index.getKeyByGroup)(currentGroupIndex, isVerticalGrouping) }) } if (cellData.allDay) { previousGroupedData[previousGroupedData.length - 1].allDayPanel = cellData } else { previousGroupedData[previousGroupedData.length - 1].dateTable.push(cellData) } return { previousGroupIndex: currentGroupIndex, previousGroupedData: previousGroupedData } }), { previousGroupIndex: -1, previousGroupedData: [] }) } isTimeCellShouldBeHighlighted(today, viewOffset, _ref2, cellData) { let { startViewDate: startViewDate, realEndViewDate: realEndViewDate, showCurrentTimeIndicator: showCurrentTimeIndicator } = _ref2; const realToday = _date2.dateUtilsTs.addOffsets(today, [viewOffset]); const realStartViewDate = _date2.dateUtilsTs.addOffsets(startViewDate, [viewOffset]); if (!showCurrentTimeIndicator || realToday < realStartViewDate || realToday >= realEndViewDate) { return false } const realTodayTimeMs = this.getLocalDateTimeInMs(realToday); const [startMs, endMs] = this.getHighlightedInterval(cellData); return startMs < endMs ? realTodayTimeMs >= startMs && realTodayTimeMs < endMs : realTodayTimeMs >= startMs && realTodayTimeMs < toMs("day") || realTodayTimeMs >= 0 && realTodayTimeMs < endMs } getHighlightedInterval(_ref3) { let { date: date, index: index, duration: duration, isFirst: isFirst, isLast: isLast } = _ref3; const cellTimeMs = this.getLocalDateTimeInMs(date); const isEvenCell = index % 2 === 0; switch (true) { case isFirst || isLast && !isEvenCell: return [cellTimeMs, (0, _math.shiftIntegerByModule)(cellTimeMs + duration, toMs("day"))]; case isEvenCell: return [(0, _math.shiftIntegerByModule)(cellTimeMs - duration, toMs("day")), (0, _math.shiftIntegerByModule)(cellTimeMs + duration, toMs("day"))]; default: return [cellTimeMs, (0, _math.shiftIntegerByModule)(cellTimeMs + 2 * duration, toMs("day"))] } } getLocalDateTimeInMs(date) { const dateUtcMs = date.getTime() - date.getTimezoneOffset() * toMs("minute"); return (0, _math.shiftIntegerByModule)(dateUtcMs, toMs("day")) } isLastCellInGroup(completeViewDataMap, index) { if (index === completeViewDataMap.length - 1) { return true } const { groupIndex: currentGroupIndex } = completeViewDataMap[index][0]; const { groupIndex: nextGroupIndex, allDay: nextAllDay } = completeViewDataMap[index + 1][0]; return nextAllDay || nextGroupIndex !== currentGroupIndex } } }, 75480: /*!***************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/scheduler/workspaces/view_model/m_utils.js ***! \***************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.alignToFirstDayOfWeek = alignToFirstDayOfWeek; exports.alignToLastDayOfWeek = alignToLastDayOfWeek; exports.calculateAlignedWeeksBetweenDates = function(fromDate, toDate, firstDayOfWeek) { const alignedFromDate = alignToFirstDayOfWeek(fromDate, firstDayOfWeek); const alignedToDate = alignToLastDayOfWeek(toDate, firstDayOfWeek); const weekCount = calculateDaysBetweenDates(alignedFromDate, alignedToDate) / DAYS_IN_WEEK; return Math.max(weekCount, 6) }; exports.calculateDaysBetweenDates = calculateDaysBetweenDates; exports.getViewDataGeneratorByViewType = void 0; var _date = (e = __webpack_require__( /*! ../../../../core/utils/date */ 41380), e && e.__esModule ? e : { default: e }); var e; var _constants = __webpack_require__( /*! ../../constants */ 25307); var _m_view_data_generator = __webpack_require__( /*! ./m_view_data_generator */ 91245); var _m_view_data_generator_day = __webpack_require__( /*! ./m_view_data_generator_day */ 61715); var _m_view_data_generator_month = __webpack_require__( /*! ./m_view_data_generator_month */ 55752); var _m_view_data_generator_timeline_month = __webpack_require__( /*! ./m_view_data_generator_timeline_month */ 73082); var _m_view_data_generator_week = __webpack_require__( /*! ./m_view_data_generator_week */ 40348); var _m_view_data_generator_work_week = __webpack_require__( /*! ./m_view_data_generator_work_week */ 33196); const DAYS_IN_WEEK = 7; const MS_IN_DAY = 864e5; exports.getViewDataGeneratorByViewType = viewType => { switch (viewType) { case _constants.VIEWS.MONTH: return new _m_view_data_generator_month.ViewDataGeneratorMonth; case _constants.VIEWS.TIMELINE_MONTH: return new _m_view_data_generator_timeline_month.ViewDataGeneratorTimelineMonth; case _constants.VIEWS.DAY: case _constants.VIEWS.TIMELINE_DAY: return new _m_view_data_generator_day.ViewDataGeneratorDay; case _constants.VIEWS.WEEK: case _constants.VIEWS.TIMELINE_WEEK: return new _m_view_data_generator_week.ViewDataGeneratorWeek; case _constants.VIEWS.WORK_WEEK: case _constants.VIEWS.TIMELINE_WORK_WEEK: return new _m_view_data_generator_work_week.ViewDataGeneratorWorkWeek; default: return new _m_view_data_generator.ViewDataGenerator } }; function alignToFirstDayOfWeek(date, firstDayOfWeek) { const newDate = new Date(date); let dayDiff = newDate.getDay() - firstDayOfWeek; if (dayDiff < 0) { dayDiff += DAYS_IN_WEEK } newDate.setDate(newDate.getDate() - dayDiff); return newDate } function alignToLastDayOfWeek(date, firstDayOfWeek) { const newDate = alignToFirstDayOfWeek(date, firstDayOfWeek); newDate.setDate(newDate.getDate() + DAYS_IN_WEEK - 1); return newDate } function calculateDaysBetweenDates(fromDate, toDate) { const msDiff = _date.default.trimTime(toDate).getTime() - _date.default.trimTime(fromDate).getTime(); return Math.round(msDiff / MS_IN_DAY) + 1 } }, 91245: /*!*****************************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/scheduler/workspaces/view_model/m_view_data_generator.js ***! \*****************************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.ViewDataGenerator = void 0; var _date = _interopRequireDefault(__webpack_require__( /*! ../../../../core/utils/date */ 41380)); var _date2 = __webpack_require__( /*! ../../../core/utils/date */ 55594); var _index = __webpack_require__( /*! ../../../scheduler/r1/utils/index */ 34396); var _group_utils = __webpack_require__( /*! ../../../scheduler/utils/resource_manager/group_utils */ 76131); var _constants = __webpack_require__( /*! ../../constants */ 25307); var _m_utils_time_zone = _interopRequireDefault(__webpack_require__( /*! ../../m_utils_time_zone */ 18648)); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } function _extends() { return _extends = Object.assign ? Object.assign.bind() : function(n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) { ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]) } } return n }, _extends.apply(null, arguments) } const toMs = _date.default.dateToMilliseconds; exports.ViewDataGenerator = class { constructor() { this.daysInInterval = 1; this.isWorkView = false; this.tableAllDay = false } isSkippedDate(date) { return false } _calculateStartViewDate(options) {} getStartViewDate(options) { return this._calculateStartViewDate(options) } getCompleteViewDataMap(options) { const { getResourceManager: getResourceManager, isGroupedByDate: isGroupedByDate, isHorizontalGrouping: isHorizontalGrouping, isVerticalGrouping: isVerticalGrouping, intervalCount: intervalCount, currentDate: currentDate, viewType: viewType, startDayHour: startDayHour, endDayHour: endDayHour, hoursInterval: hoursInterval } = options; this._setVisibilityDates(options); this.setHiddenInterval(startDayHour, endDayHour, hoursInterval); const groupsList = (0, _group_utils.getAllGroupValues)(getResourceManager().groupsLeafs); const cellCountInGroupRow = this.getCellCount({ intervalCount: intervalCount, currentDate: currentDate, viewType: viewType, startDayHour: startDayHour, endDayHour: endDayHour, hoursInterval: hoursInterval }); const rowCountInGroup = this.getRowCount({ intervalCount: intervalCount, currentDate: currentDate, viewType: viewType, hoursInterval: hoursInterval, startDayHour: startDayHour, endDayHour: endDayHour }); let viewDataMap = []; const allDayPanelData = this._generateAllDayPanelData(options, rowCountInGroup, cellCountInGroupRow); const viewCellsData = this._generateViewCellsData(options, rowCountInGroup, cellCountInGroupRow); if (allDayPanelData) { viewDataMap.push(allDayPanelData) } viewDataMap.push(...viewCellsData); if (isHorizontalGrouping && !isGroupedByDate) { viewDataMap = this._transformViewDataMapForHorizontalGrouping(viewDataMap, groupsList) } if (isVerticalGrouping) { viewDataMap = this._transformViewDataMapForVerticalGrouping(viewDataMap, groupsList) } if (isGroupedByDate) { viewDataMap = this._transformViewDataMapForGroupingByDate(viewDataMap, groupsList) } return this._addKeysToCells(viewDataMap) } _transformViewDataMapForHorizontalGrouping(viewDataMap, groupsList) { const result = viewDataMap.map((row => row.slice())); groupsList.slice(1).forEach(((groups, index) => { const groupIndex = index + 1; viewDataMap.forEach(((row, rowIndex) => { const nextGroupRow = row.map((cellData => _extends({}, cellData, { groups: groups, groupIndex: groupIndex }))); result[rowIndex].push(...nextGroupRow) })) })); return result } _transformViewDataMapForVerticalGrouping(viewDataMap, groupsList) { const result = viewDataMap.map((row => row.slice())); groupsList.slice(1).forEach(((groups, index) => { const groupIndex = index + 1; const nextGroupMap = viewDataMap.map((cellsRow => { const nextRow = cellsRow.map((cellData => _extends({}, cellData, { groupIndex: groupIndex, groups: groups }))); return nextRow })); result.push(...nextGroupMap) })); return result } _transformViewDataMapForGroupingByDate(viewDataMap, groupsList) { const correctedGroupList = groupsList.slice(1); const correctedGroupCount = correctedGroupList.length; const result = viewDataMap.map((cellsRow => { const groupedByDateCellsRow = cellsRow.reduce(((currentRow, cell) => { const rowWithCurrentCell = [...currentRow, _extends({}, cell, { isFirstGroupCell: true, isLastGroupCell: 0 === correctedGroupCount }), ...correctedGroupList.map(((groups, index) => _extends({}, cell, { groups: groups, groupIndex: index + 1, isFirstGroupCell: false, isLastGroupCell: index === correctedGroupCount - 1 })))]; return rowWithCurrentCell }), []); return groupedByDateCellsRow })); return result } _addKeysToCells(viewDataMap) { const totalColumnCount = viewDataMap[0].length; const { currentViewDataMap: result } = viewDataMap.reduce(((_ref, row, rowIndex) => { let { allDayPanelsCount: allDayPanelsCount, currentViewDataMap: currentViewDataMap } = _ref; const isAllDay = row[0].allDay; const keyBase = (rowIndex - allDayPanelsCount) * totalColumnCount; const currentAllDayPanelsCount = isAllDay ? allDayPanelsCount + 1 : allDayPanelsCount; currentViewDataMap[rowIndex].forEach(((cell, columnIndex) => { cell.key = keyBase + columnIndex })); return { allDayPanelsCount: currentAllDayPanelsCount, currentViewDataMap: currentViewDataMap } }), { allDayPanelsCount: 0, currentViewDataMap: viewDataMap }); return result } generateViewDataMap(completeViewDataMap, options) { const { rowCount: rowCount, startCellIndex: startCellIndex, startRowIndex: startRowIndex, cellCount: cellCount, isVerticalGrouping: isVerticalGrouping, isAllDayPanelVisible: isAllDayPanelVisible } = options; const sliceCells = (row, rowIndex, startIndex, count) => { const sliceToIndex = void 0 !== count ? startIndex + count : void 0; return row.slice(startIndex, sliceToIndex).map(((cellData, columnIndex) => ({ cellData: cellData, position: { rowIndex: rowIndex, columnIndex: columnIndex } }))) }; let correctedStartRowIndex = startRowIndex; let allDayPanelMap = []; if (this._isStandaloneAllDayPanel(isVerticalGrouping, isAllDayPanelVisible)) { correctedStartRowIndex++; allDayPanelMap = sliceCells(completeViewDataMap[0], 0, startCellIndex, cellCount) } const displayedRowCount = (0, _index.getDisplayedRowCount)(rowCount, completeViewDataMap); const dateTableMap = completeViewDataMap.slice(correctedStartRowIndex, correctedStartRowIndex + displayedRowCount).map(((row, rowIndex) => sliceCells(row, rowIndex, startCellIndex, cellCount))); return { allDayPanelMap: allDayPanelMap, dateTableMap: dateTableMap } } _isStandaloneAllDayPanel(isVerticalGrouping, isAllDayPanelVisible) { return !isVerticalGrouping && isAllDayPanelVisible } getViewDataFromMap(completeViewDataMap, viewDataMap, options) { const { topVirtualRowHeight: topVirtualRowHeight, bottomVirtualRowHeight: bottomVirtualRowHeight, leftVirtualCellWidth: leftVirtualCellWidth, rightVirtualCellWidth: rightVirtualCellWidth, cellCount: cellCount, rowCount: rowCount, startRowIndex: startRowIndex, startCellIndex: startCellIndex, isProvideVirtualCellsWidth: isProvideVirtualCellsWidth, isGroupedAllDayPanel: isGroupedAllDayPanel, isVerticalGrouping: isVerticalGrouping, isAllDayPanelVisible: isAllDayPanelVisible } = options; const { allDayPanelMap: allDayPanelMap, dateTableMap: dateTableMap } = viewDataMap; const { groupedData: groupedData } = dateTableMap.reduce(((_ref2, cellsRow) => { let { previousGroupIndex: previousGroupIndex, groupedData: groupedData } = _ref2; const cellDataRow = cellsRow.map((_ref3 => { let { cellData: cellData } = _ref3; return cellData })); const firstCell = cellDataRow[0]; const isAllDayRow = firstCell.allDay; const currentGroupIndex = firstCell.groupIndex; if (currentGroupIndex !== previousGroupIndex) { groupedData.push({ dateTable: [], isGroupedAllDayPanel: (0, _index.getIsGroupedAllDayPanel)(!!isAllDayRow, isVerticalGrouping), groupIndex: currentGroupIndex, key: (0, _index.getKeyByGroup)(currentGroupIndex, isVerticalGrouping) }) } if (isAllDayRow) { groupedData[groupedData.length - 1].allDayPanel = cellDataRow } else { groupedData[groupedData.length - 1].dateTable.push({ cells: cellDataRow, key: cellDataRow[0].key - startCellIndex }) } return { groupedData: groupedData, previousGroupIndex: currentGroupIndex } }), { previousGroupIndex: -1, groupedData: [] }); if (this._isStandaloneAllDayPanel(isVerticalGrouping, isAllDayPanelVisible)) { groupedData[0].allDayPanel = allDayPanelMap.map((_ref4 => { let { cellData: cellData } = _ref4; return cellData })) } const totalCellCount = (0, _index.getTotalCellCountByCompleteData)(completeViewDataMap); const totalRowCount = (0, _index.getTotalRowCountByCompleteData)(completeViewDataMap); const displayedCellCount = (0, _index.getDisplayedCellCount)(cellCount, completeViewDataMap); const displayedRowCount = (0, _index.getDisplayedRowCount)(rowCount, completeViewDataMap); return { groupedData: groupedData, topVirtualRowHeight: topVirtualRowHeight, bottomVirtualRowHeight: bottomVirtualRowHeight, leftVirtualCellWidth: isProvideVirtualCellsWidth ? leftVirtualCellWidth : void 0, rightVirtualCellWidth: isProvideVirtualCellsWidth ? rightVirtualCellWidth : void 0, isGroupedAllDayPanel: isGroupedAllDayPanel, leftVirtualCellCount: startCellIndex, rightVirtualCellCount: void 0 === cellCount ? 0 : totalCellCount - startCellIndex - displayedCellCount, topVirtualRowCount: startRowIndex, bottomVirtualRowCount: totalRowCount - startRowIndex - displayedRowCount } } _generateViewCellsData(options, rowCount, cellCountInGroupRow) { const viewCellsData = []; for (let rowIndex = 0; rowIndex < rowCount; rowIndex += 1) { viewCellsData.push(this._generateCellsRow(options, false, rowIndex, rowCount, cellCountInGroupRow)) } return viewCellsData } _generateAllDayPanelData(options, rowCount, columnCount) { if (!options.isAllDayPanelVisible) { return null } return this._generateCellsRow(options, true, 0, rowCount, columnCount) } _generateCellsRow(options, allDay, rowIndex, rowCount, columnCount) { const cellsRow = []; for (let columnIndex = 0; columnIndex < columnCount; ++columnIndex) { const cellDataValue = this.getCellData(rowIndex, columnIndex, options, allDay); cellDataValue.index = rowIndex * columnCount + columnIndex; cellDataValue.isFirstGroupCell = this._isFirstGroupCell(rowIndex, columnIndex, options, rowCount, columnCount); cellDataValue.isLastGroupCell = this._isLastGroupCell(rowIndex, columnIndex, options, rowCount, columnCount); cellsRow.push(cellDataValue) } return cellsRow } getCellData(rowIndex, columnIndex, options, allDay) { return allDay ? this.prepareAllDayCellData(options, rowIndex, columnIndex) : this.prepareCellData(options, rowIndex, columnIndex) } prepareCellData(options, rowIndex, columnIndex) { const { getResourceManager: getResourceManager, startDayHour: startDayHour, endDayHour: endDayHour, hoursInterval: hoursInterval } = options; const groupsList = (0, _group_utils.getAllGroupValues)(getResourceManager().groupsLeafs); const startDate = this.getDateByCellIndices(options, rowIndex, columnIndex, this.getCellCountInDay(startDayHour, endDayHour, hoursInterval)); const endDate = this.getCellEndDate(startDate, options); const data = { startDate: startDate, endDate: endDate, allDay: this.tableAllDay, groupIndex: 0 }; if (groupsList.length > 0) { data.groups = groupsList[0] } return data } prepareAllDayCellData(options, rowIndex, columnIndex) { const data = this.prepareCellData(_extends({}, options, { viewOffset: 0 }), rowIndex, columnIndex); const { viewOffset: viewOffset } = options; const startDate = _date.default.trimTime(data.startDate); const shiftedStartDate = _date2.dateUtilsTs.addOffsets(startDate, [viewOffset]); return _extends({}, data, { startDate: shiftedStartDate, endDate: shiftedStartDate, allDay: true }) } getDateByCellIndices(options, rowIndex, columnIndex, cellCountInDay) { let { startViewDate: startViewDate } = options; const { startDayHour: startDayHour, interval: interval, firstDayOfWeek: firstDayOfWeek, intervalCount: intervalCount, viewOffset: viewOffset } = options; const isStartViewDateDuringDST = startViewDate.getHours() !== Math.floor(startDayHour); if (isStartViewDateDuringDST) { const dateWithCorrectHours = (0, _index.getStartViewDateWithoutDST)(startViewDate, startDayHour); startViewDate = new Date(dateWithCorrectHours.getTime() - toMs("day")) } const columnCountBase = this.getCellCount(options); const rowCountBase = this.getRowCount(options); const cellIndex = this._calculateCellIndex(rowIndex, columnIndex, rowCountBase, columnCountBase); const millisecondsOffset = this.getMillisecondsOffset(cellIndex, interval, cellCountInDay); const offsetByCount = this.isWorkView ? this.getTimeOffsetByColumnIndex(columnIndex, this.getFirstDayOfWeek(firstDayOfWeek), columnCountBase, intervalCount) : 0; const startViewDateTime = startViewDate.getTime(); const currentDate = new Date(startViewDateTime + millisecondsOffset + offsetByCount + viewOffset); const timeZoneDifference = isStartViewDateDuringDST ? 0 : _date.default.getTimezonesDifference(startViewDate, currentDate); currentDate.setTime(currentDate.getTime() + timeZoneDifference); return currentDate } getMillisecondsOffset(cellIndex, interval, cellCountInDay) { const dayIndex = Math.floor(cellIndex / cellCountInDay); const realHiddenInterval = dayIndex * this.hiddenInterval; return interval * cellIndex + realHiddenInterval } getTimeOffsetByColumnIndex(columnIndex, firstDayOfWeek, columnCount, intervalCount) { const firstDayOfWeekDiff = Math.max(0, firstDayOfWeek - 1); const columnsInWeek = columnCount / intervalCount; const weekendCount = Math.floor((columnIndex + firstDayOfWeekDiff) / columnsInWeek); return 2 * weekendCount * toMs("day") } calculateEndDate(startDate, interval, endDayHour) { return this.getCellEndDate(startDate, { interval: interval }) } _calculateCellIndex(rowIndex, columnIndex, rowCount, columnCountBase) { return (0, _index.calculateCellIndex)(rowIndex, columnIndex, rowCount) } generateGroupedDataMap(viewDataMap) { const { allDayPanelMap: allDayPanelMap, dateTableMap: dateTableMap } = viewDataMap; const { previousGroupedDataMap: dateTableGroupedMap } = dateTableMap.reduce(((previousOptions, cellsRow) => { const { previousGroupedDataMap: previousGroupedDataMap, previousRowIndex: previousRowIndex, previousGroupIndex: previousGroupIndex } = previousOptions; const { groupIndex: currentGroupIndex } = cellsRow[0].cellData; const currentRowIndex = currentGroupIndex === previousGroupIndex ? previousRowIndex + 1 : 0; cellsRow.forEach((cell => { const { groupIndex: groupIndex } = cell.cellData; if (!previousGroupedDataMap[groupIndex]) { previousGroupedDataMap[groupIndex] = [] } if (!previousGroupedDataMap[groupIndex][currentRowIndex]) { previousGroupedDataMap[groupIndex][currentRowIndex] = [] } previousGroupedDataMap[groupIndex][currentRowIndex].push(cell) })); return { previousGroupedDataMap: previousGroupedDataMap, previousRowIndex: currentRowIndex, previousGroupIndex: currentGroupIndex } }), { previousGroupedDataMap: [], previousRowIndex: -1, previousGroupIndex: -1 }); const allDayPanelGroupedMap = []; null === allDayPanelMap || void 0 === allDayPanelMap || allDayPanelMap.forEach((cell => { const { groupIndex: groupIndex } = cell.cellData; if (!allDayPanelGroupedMap[groupIndex]) { allDayPanelGroupedMap[groupIndex] = [] } allDayPanelGroupedMap[groupIndex].push(cell) })); return { allDayPanelGroupedMap: allDayPanelGroupedMap, dateTableGroupedMap: dateTableGroupedMap } } _isFirstGroupCell(rowIndex, columnIndex, options, rowCount, columnCount) { const { groupOrientation: groupOrientation, getResourceManager: getResourceManager, isGroupedByDate: isGroupedByDate } = options; const groupCount = getResourceManager().groupCount(); if (isGroupedByDate) { return columnIndex % groupCount === 0 } if (groupOrientation === _constants.HORIZONTAL_GROUP_ORIENTATION) { return columnIndex % columnCount === 0 } return rowIndex % rowCount === 0 } _isLastGroupCell(rowIndex, columnIndex, options, rowCount, columnCount) { const { groupOrientation: groupOrientation, getResourceManager: getResourceManager, isGroupedByDate: isGroupedByDate } = options; const groupCount = getResourceManager().groupCount(); if (isGroupedByDate) { return (columnIndex + 1) % groupCount === 0 } if (groupOrientation === _constants.HORIZONTAL_GROUP_ORIENTATION) { return (columnIndex + 1) % columnCount === 0 } return (rowIndex + 1) % rowCount === 0 } markSelectedAndFocusedCells(viewDataMap, renderOptions) { const { selectedCells: selectedCells, focusedCell: focusedCell } = renderOptions; if (!selectedCells && !focusedCell) { return viewDataMap } const { allDayPanelMap: allDayPanelMap, dateTableMap: dateTableMap } = viewDataMap; const nextDateTableMap = dateTableMap.map((row => this._markSelectedAndFocusedCellsInRow(row, selectedCells, focusedCell))); const nextAllDayMap = this._markSelectedAndFocusedCellsInRow(allDayPanelMap, selectedCells, focusedCell); return { allDayPanelMap: nextAllDayMap, dateTableMap: nextDateTableMap } } _markSelectedAndFocusedCellsInRow(dataRow, selectedCells, focusedCell) { return dataRow.map((cell => { const { index: index, groupIndex: groupIndex, allDay: allDay, startDate: startDate } = cell.cellData; const indexInSelectedCells = selectedCells.findIndex((_ref5 => { let { index: selectedCellIndex, groupIndex: selectedCellGroupIndex, allDay: selectedCellAllDay, startDate: selectedCellStartDate } = _ref5; return groupIndex === selectedCellGroupIndex && (index === selectedCellIndex || void 0 === selectedCellIndex && startDate.getTime() === selectedCellStartDate.getTime()) && !!allDay === !!selectedCellAllDay })); const isFocused = !!focusedCell && index === focusedCell.cellData.index && groupIndex === focusedCell.cellData.groupIndex && allDay === focusedCell.cellData.allDay; if (!isFocused && -1 === indexInSelectedCells) { return cell } return _extends({}, cell, { cellData: _extends({}, cell.cellData, { isSelected: indexInSelectedCells > -1, isFocused: isFocused }) }) })) } getInterval(hoursInterval) { return hoursInterval * toMs("hour") } _getIntervalDuration(intervalCount) { return toMs("day") * intervalCount } _setVisibilityDates(options) {} getCellCountInDay(startDayHour, endDayHour, hoursInterval) { const result = (0, _index.calculateDayDuration)(startDayHour, endDayHour) / hoursInterval; return Math.ceil(result) } getCellCount(options) { const { intervalCount: intervalCount, viewType: viewType, startDayHour: startDayHour, endDayHour: endDayHour, hoursInterval: hoursInterval } = options; const cellCountInDay = this.getCellCountInDay(startDayHour, endDayHour, hoursInterval); const columnCountInDay = (0, _index.isHorizontalView)(viewType) ? cellCountInDay : 1; return this.daysInInterval * intervalCount * columnCountInDay } getRowCount(options) { const { viewType: viewType, startDayHour: startDayHour, endDayHour: endDayHour, hoursInterval: hoursInterval } = options; const cellCountInDay = this.getCellCountInDay(startDayHour, endDayHour, hoursInterval); const rowCountInDay = !(0, _index.isHorizontalView)(viewType) ? cellCountInDay : 1; return rowCountInDay } setHiddenInterval(startDayHour, endDayHour, hoursInterval) { this.hiddenInterval = toMs("day") - this.getVisibleDayDuration(startDayHour, endDayHour, hoursInterval) } getVisibleDayDuration(startDayHour, endDayHour, hoursInterval) { const cellCountInDay = this.getCellCountInDay(startDayHour, endDayHour, hoursInterval); return hoursInterval * cellCountInDay * toMs("hour") } getFirstDayOfWeek(firstDayOfWeekOption) { return firstDayOfWeekOption } getCellEndDate(cellStartDate, options) { const durationMs = Math.round(options.interval); return _m_utils_time_zone.default.addOffsetsWithoutDST(cellStartDate, durationMs) } } }, 61715: /*!*********************************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/scheduler/workspaces/view_model/m_view_data_generator_day.js ***! \*********************************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.ViewDataGeneratorDay = void 0; var _index = __webpack_require__( /*! ../../../scheduler/r1/utils/index */ 34396); var _m_view_data_generator = __webpack_require__( /*! ./m_view_data_generator */ 91245); class ViewDataGeneratorDay extends _m_view_data_generator.ViewDataGenerator { _calculateStartViewDate(options) { return _index.dayUtils.calculateStartViewDate(options.currentDate, options.startDayHour, options.startDate, this._getIntervalDuration(options.intervalCount)) } } exports.ViewDataGeneratorDay = ViewDataGeneratorDay }, 55752: /*!***********************************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/scheduler/workspaces/view_model/m_view_data_generator_month.js ***! \***********************************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.ViewDataGeneratorMonth = void 0; var _date = _interopRequireDefault(__webpack_require__( /*! ../../../../common/core/localization/date */ 38662)); var _date2 = _interopRequireDefault(__webpack_require__( /*! ../../../../core/utils/date */ 41380)); var _index = __webpack_require__( /*! ../../../scheduler/r1/utils/index */ 34396); var _m_utils_time_zone = _interopRequireDefault(__webpack_require__( /*! ../../m_utils_time_zone */ 18648)); var _m_utils = __webpack_require__( /*! ./m_utils */ 75480); var _m_view_data_generator = __webpack_require__( /*! ./m_view_data_generator */ 91245); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } const toMs = _date2.default.dateToMilliseconds; class ViewDataGeneratorMonth extends _m_view_data_generator.ViewDataGenerator { constructor() { super(...arguments); this.tableAllDay = void 0 } getCellData(rowIndex, columnIndex, options, allDay) { const { indicatorTime: indicatorTime, timeZoneCalculator: timeZoneCalculator, intervalCount: intervalCount, viewOffset: viewOffset } = options; const data = super.getCellData(rowIndex, columnIndex, options, false); const startDate = _m_utils_time_zone.default.addOffsetsWithoutDST(data.startDate, -viewOffset); data.today = this.isCurrentDate(startDate, indicatorTime, timeZoneCalculator); data.otherMonth = this.isOtherMonth(startDate, this._minVisibleDate, this._maxVisibleDate); data.firstDayOfMonth = (0, _index.isFirstCellInMonthWithIntervalCount)(startDate, intervalCount); data.text = _index.monthUtils.getCellText(startDate, intervalCount); return data } isCurrentDate(date, indicatorTime, timeZoneCalculator) { return _date2.default.sameDate(date, (0, _index.getToday)(indicatorTime, timeZoneCalculator)) } isOtherMonth(cellDate, minDate, maxDate) { return !_date2.default.dateInRange(cellDate, minDate, maxDate, "date") } _calculateCellIndex(rowIndex, columnIndex, rowCount, columnCount) { return _index.monthUtils.calculateCellIndex(rowIndex, columnIndex, rowCount, columnCount) } calculateEndDate(startDate, interval, endDayHour) { return (0, _index.setOptionHour)(startDate, endDayHour) } getInterval() { return toMs("day") } _calculateStartViewDate(options) { return _index.monthUtils.calculateStartViewDate(options.currentDate, options.startDayHour, options.startDate, options.intervalCount, this.getFirstDayOfWeek(options.firstDayOfWeek)) } _setVisibilityDates(options) { const { intervalCount: intervalCount, startDate: startDate, currentDate: currentDate } = options; const firstMonthDate = _date2.default.getFirstMonthDate(startDate); const viewStart = _index.monthUtils.getViewStartByOptions(startDate, currentDate, intervalCount, firstMonthDate); this._minVisibleDate = new Date(viewStart.setDate(1)); const nextMonthDate = new Date(viewStart.setMonth(viewStart.getMonth() + intervalCount)); this._maxVisibleDate = new Date(nextMonthDate.setDate(0)) } getCellCount() { return 7 } getRowCount(options) { const startDate = new Date(options.currentDate); startDate.setDate(1); const endDate = new Date(startDate); endDate.setMonth(endDate.getMonth() + options.intervalCount); endDate.setDate(0); return (0, _m_utils.calculateAlignedWeeksBetweenDates)(startDate, endDate, options.firstDayOfWeek ?? _date.default.firstDayOfWeekIndex()) } getCellCountInDay() { return 1 } setHiddenInterval() { this.hiddenInterval = 0 } getCellEndDate(cellStartDate, options) { const { startDayHour: startDayHour, endDayHour: endDayHour } = options; const durationMs = (endDayHour - startDayHour) * toMs("hour"); return _m_utils_time_zone.default.addOffsetsWithoutDST(cellStartDate, durationMs) } } exports.ViewDataGeneratorMonth = ViewDataGeneratorMonth }, 73082: /*!********************************************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/scheduler/workspaces/view_model/m_view_data_generator_timeline_month.js ***! \********************************************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.ViewDataGeneratorTimelineMonth = void 0; var _date = _interopRequireDefault(__webpack_require__( /*! ../../../../core/utils/date */ 41380)); var _index = __webpack_require__( /*! ../../../scheduler/r1/utils/index */ 34396); var _m_utils_time_zone = _interopRequireDefault(__webpack_require__( /*! ../../m_utils_time_zone */ 18648)); var _m_view_data_generator = __webpack_require__( /*! ./m_view_data_generator */ 91245); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } const toMs = _date.default.dateToMilliseconds; class ViewDataGeneratorTimelineMonth extends _m_view_data_generator.ViewDataGenerator { _calculateCellIndex(rowIndex, columnIndex, rowCount, columnCount) { return _index.monthUtils.calculateCellIndex(rowIndex, columnIndex, rowCount, columnCount) } calculateEndDate(startDate, interval, endDayHour) { return (0, _index.setOptionHour)(startDate, endDayHour) } getInterval() { return toMs("day") } _calculateStartViewDate(options) { return _index.timelineMonthUtils.calculateStartViewDate(options.currentDate, options.startDayHour, options.startDate, options.intervalCount) } getCellCount(options) { const { intervalCount: intervalCount } = options; const currentDate = new Date(options.currentDate); let cellCount = 0; for (let i = 1; i <= intervalCount; i++) { cellCount += new Date(currentDate.getFullYear(), currentDate.getMonth() + i, 0).getDate() } return cellCount } setHiddenInterval() { this.hiddenInterval = 0 } getCellEndDate(cellStartDate, options) { const { startDayHour: startDayHour, endDayHour: endDayHour } = options; const durationMs = (endDayHour - startDayHour) * toMs("hour"); return _m_utils_time_zone.default.addOffsetsWithoutDST(cellStartDate, durationMs) } } exports.ViewDataGeneratorTimelineMonth = ViewDataGeneratorTimelineMonth }, 40348: /*!**********************************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/scheduler/workspaces/view_model/m_view_data_generator_week.js ***! \**********************************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.ViewDataGeneratorWeek = void 0; var _index = __webpack_require__( /*! ../../../scheduler/r1/utils/index */ 34396); var _m_view_data_generator = __webpack_require__( /*! ./m_view_data_generator */ 91245); class ViewDataGeneratorWeek extends _m_view_data_generator.ViewDataGenerator { constructor() { super(...arguments); this.daysInInterval = 7 } _getIntervalDuration(intervalCount) { return _index.weekUtils.getIntervalDuration(intervalCount) } _calculateStartViewDate(options) { return _index.weekUtils.calculateStartViewDate(options.currentDate, options.startDayHour, options.startDate, this._getIntervalDuration(options.intervalCount), this.getFirstDayOfWeek(options.firstDayOfWeek)) } } exports.ViewDataGeneratorWeek = ViewDataGeneratorWeek }, 33196: /*!***************************************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/scheduler/workspaces/view_model/m_view_data_generator_work_week.js ***! \***************************************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.ViewDataGeneratorWorkWeek = void 0; var _index = __webpack_require__( /*! ../../../scheduler/r1/utils/index */ 34396); var _m_view_data_generator_week = __webpack_require__( /*! ./m_view_data_generator_week */ 40348); class ViewDataGeneratorWorkWeek extends _m_view_data_generator_week.ViewDataGeneratorWeek { constructor() { super(...arguments); this.daysInInterval = 5; this.isWorkView = true } isSkippedDate(date) { return (0, _index.isDataOnWeekend)(date) } _calculateStartViewDate(options) { return _index.workWeekUtils.calculateStartViewDate(options.currentDate, options.startDayHour, options.startDate, this._getIntervalDuration(options.intervalCount), this.getFirstDayOfWeek(options.firstDayOfWeek)) } getFirstDayOfWeek(firstDayOfWeekOption) { return firstDayOfWeekOption || 0 } } exports.ViewDataGeneratorWorkWeek = ViewDataGeneratorWorkWeek }, 6051: /*!****************************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/scheduler/workspaces/view_model/m_view_data_provider.js ***! \****************************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _date = _interopRequireDefault(__webpack_require__( /*! ../../../../core/utils/date */ 41380)); var _date2 = __webpack_require__( /*! ../../../core/utils/date */ 55594); var _index = __webpack_require__( /*! ../../../scheduler/r1/utils/index */ 34396); var _m_utils_time_zone = _interopRequireDefault(__webpack_require__( /*! ../../m_utils_time_zone */ 18648)); var _m_date_header_data_generator = __webpack_require__( /*! ./m_date_header_data_generator */ 82274); var _m_grouped_data_map_provider = __webpack_require__( /*! ./m_grouped_data_map_provider */ 30795); var _m_time_panel_data_generator = __webpack_require__( /*! ./m_time_panel_data_generator */ 16794); var _m_utils = __webpack_require__( /*! ./m_utils */ 75480); const _excluded = ["getResourceManager", "groupOrientation", "groupByDate", "isAllDayPanelVisible", "viewOffset"]; function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } function _extends() { return _extends = Object.assign ? Object.assign.bind() : function(n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) { ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]) } } return n }, _extends.apply(null, arguments) } exports.default = class { constructor(viewType) { this.viewType = viewType; this.viewDataGenerator = (0, _m_utils.getViewDataGeneratorByViewType)(viewType); this.viewData = {}; this.completeViewDataMap = []; this.completeDateHeaderMap = []; this.viewDataMap = {}; this._groupedDataMapProvider = null } get groupedDataMap() { return this._groupedDataMapProvider.groupedDataMap } get hiddenInterval() { return this.viewDataGenerator.hiddenInterval } isSkippedDate(date) { return this.viewDataGenerator.isSkippedDate(date) } update(options, isGenerateNewViewData) { this.viewDataGenerator = (0, _m_utils.getViewDataGeneratorByViewType)(options.viewType); const { viewDataGenerator: viewDataGenerator } = this; const dateHeaderDataGenerator = new _m_date_header_data_generator.DateHeaderDataGenerator(viewDataGenerator); const timePanelDataGenerator = new _m_time_panel_data_generator.TimePanelDataGenerator(viewDataGenerator); const renderOptions = this._transformRenderOptions(options); renderOptions.interval = this.viewDataGenerator.getInterval(renderOptions.hoursInterval); this._options = renderOptions; if (isGenerateNewViewData) { this.completeViewDataMap = viewDataGenerator.getCompleteViewDataMap(renderOptions); this.completeDateHeaderMap = dateHeaderDataGenerator.getCompleteDateHeaderMap(renderOptions, this.completeViewDataMap); if (renderOptions.isGenerateTimePanelData) { this.completeTimePanelMap = timePanelDataGenerator.getCompleteTimePanelMap(renderOptions, this.completeViewDataMap) } } this.viewDataMap = viewDataGenerator.generateViewDataMap(this.completeViewDataMap, renderOptions); this.updateViewData(renderOptions); this._groupedDataMapProvider = new _m_grouped_data_map_provider.GroupedDataMapProvider(this.viewDataGenerator, this.viewDataMap, this.completeViewDataMap, { isVerticalGrouping: renderOptions.isVerticalGrouping, viewType: renderOptions.viewType, viewOffset: options.viewOffset }); this.dateHeaderData = dateHeaderDataGenerator.generateDateHeaderData(this.completeDateHeaderMap, this.completeViewDataMap, renderOptions); if (renderOptions.isGenerateTimePanelData) { this.timePanelData = timePanelDataGenerator.generateTimePanelData(this.completeTimePanelMap, renderOptions) } } createGroupedDataMapProvider() { this._groupedDataMapProvider = new _m_grouped_data_map_provider.GroupedDataMapProvider(this.viewDataGenerator, this.viewDataMap, this.completeViewDataMap, { isVerticalGrouping: this._options.isVerticalGrouping, viewType: this._options.viewType }) } updateViewData(options) { const renderOptions = this._transformRenderOptions(options); this.viewDataMapWithSelection = this.viewDataGenerator.markSelectedAndFocusedCells(this.viewDataMap, renderOptions); this.viewData = this.viewDataGenerator.getViewDataFromMap(this.completeViewDataMap, this.viewDataMapWithSelection, renderOptions) } _transformRenderOptions(renderOptions) { const { getResourceManager: getResourceManager, groupOrientation: groupOrientation, groupByDate: groupByDate, isAllDayPanelVisible: isAllDayPanelVisible, viewOffset: viewOffset } = renderOptions, restOptions = function(r, e) { if (null == r) { return {} } var t = {}; for (var n in r) { if ({}.hasOwnProperty.call(r, n)) { if (e.includes(n)) { continue } t[n] = r[n] } } return t }(renderOptions, _excluded); const resourceManager = getResourceManager(); return _extends({}, restOptions, { startViewDate: this.viewDataGenerator._calculateStartViewDate(renderOptions), isVerticalGrouping: (0, _index.isVerticalGroupingApplied)(resourceManager.groups, groupOrientation), isHorizontalGrouping: (0, _index.isHorizontalGroupingApplied)(resourceManager.groups, groupOrientation), isGroupedByDate: (0, _index.isGroupingByDate)(resourceManager.groups, groupOrientation, groupByDate), isGroupedAllDayPanel: (0, _index.calculateIsGroupedAllDayPanel)(resourceManager.groups, groupOrientation, isAllDayPanelVisible), getResourceManager: getResourceManager, groupOrientation: groupOrientation, isAllDayPanelVisible: isAllDayPanelVisible, viewOffset: viewOffset }) } getGroupPanelData(options) { const renderOptions = this._transformRenderOptions(options); const groupResources = renderOptions.getResourceManager().groupResources(); if (groupResources.length > 0) { const cellCount = this.getCellCount(renderOptions); return (0, _index.getGroupPanelData)(groupResources, cellCount, renderOptions.isGroupedByDate, renderOptions.isGroupedByDate ? 1 : cellCount) } return } getGroupStartDate(groupIndex) { return this._groupedDataMapProvider.getGroupStartDate(groupIndex) } getGroupEndDate(groupIndex) { return this._groupedDataMapProvider.getGroupEndDate(groupIndex) } findGroupCellStartDate(groupIndex, startDate, endDate) { let isFindByDate = arguments.length > 3 && void 0 !== arguments[3] ? arguments[3] : false; return this._groupedDataMapProvider.findGroupCellStartDate(groupIndex, startDate, endDate, isFindByDate) } findAllDayGroupCellStartDate(groupIndex) { return this._groupedDataMapProvider.findAllDayGroupCellStartDate(groupIndex) } findCellPositionInMap(cellInfo) { let isAppointmentRender = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : false; return this._groupedDataMapProvider.findCellPositionInMap(cellInfo, isAppointmentRender) } hasAllDayPanel() { const { viewData: viewData } = this.viewDataMap; const { allDayPanel: allDayPanel } = viewData.groupedData[0]; return !viewData.isGroupedAllDayPanel && (null === allDayPanel || void 0 === allDayPanel ? void 0 : allDayPanel.length) > 0 } getCellsGroup(groupIndex) { return this._groupedDataMapProvider.getCellsGroup(groupIndex) } getCompletedGroupsInfo() { return this._groupedDataMapProvider.getCompletedGroupsInfo() } getGroupIndices() { return this._groupedDataMapProvider.getGroupIndices() } getLastGroupCellPosition(groupIndex) { return this._groupedDataMapProvider.getLastGroupCellPosition(groupIndex) } getRowCountInGroup(groupIndex) { return this._groupedDataMapProvider.getRowCountInGroup(groupIndex) } getCellData(rowIndex, columnIndex, isAllDay, rtlEnabled) { const row = isAllDay && !this._options.isVerticalGrouping ? this.viewDataMap.allDayPanelMap : this.viewDataMap.dateTableMap[rowIndex]; const actualColumnIndex = !rtlEnabled ? columnIndex : row.length - 1 - columnIndex; const { cellData: cellData } = row[actualColumnIndex]; return cellData } getCellsByGroupIndexAndAllDay(groupIndex, allDay) { const rowsPerGroup = this._getRowCountWithAllDayRows(); const isShowAllDayPanel = this._options.isAllDayPanelVisible; const firstRowInGroup = this._options.isVerticalGrouping ? groupIndex * rowsPerGroup : 0; const lastRowInGroup = this._options.isVerticalGrouping ? (groupIndex + 1) * rowsPerGroup - 1 : rowsPerGroup; const correctedFirstRow = isShowAllDayPanel && !allDay ? firstRowInGroup + 1 : firstRowInGroup; const correctedLastRow = allDay ? correctedFirstRow : lastRowInGroup; return this.completeViewDataMap.slice(correctedFirstRow, correctedLastRow + 1).map((row => row.filter((_ref => { let { groupIndex: currentGroupIndex } = _ref; return groupIndex === currentGroupIndex })))) } getCellCountWithGroup(groupIndex) { let rowIndex = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : 0; const { dateTableGroupedMap: dateTableGroupedMap } = this.groupedDataMap; return dateTableGroupedMap.filter(((_, index) => index <= groupIndex)).reduce(((previous, row) => previous + row[rowIndex].length), 0) } hasGroupAllDayPanel(groupIndex) { var _this$groupedDataMap$2; if (this._options.isVerticalGrouping) { var _this$groupedDataMap$; return !!(null !== (_this$groupedDataMap$ = this.groupedDataMap.dateTableGroupedMap[groupIndex]) && void 0 !== _this$groupedDataMap$ && _this$groupedDataMap$[0][0].cellData.allDay) } return (null === (_this$groupedDataMap$2 = this.groupedDataMap.allDayPanelGroupedMap[groupIndex]) || void 0 === _this$groupedDataMap$2 ? void 0 : _this$groupedDataMap$2.length) > 0 } isGroupIntersectDateInterval(groupIndex, startDate, endDate) { const groupStartDate = this.getGroupStartDate(groupIndex); const groupEndDate = this.getGroupEndDate(groupIndex); return startDate < groupEndDate && endDate > groupStartDate } findGlobalCellPosition(date) { let groupIndex = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : 0; let allDay = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : false; const { completeViewDataMap: completeViewDataMap } = this; const showAllDayPanel = this._options.isAllDayPanelVisible; for (let rowIndex = 0; rowIndex < completeViewDataMap.length; rowIndex += 1) { const currentRow = completeViewDataMap[rowIndex]; for (let columnIndex = 0; columnIndex < currentRow.length; columnIndex += 1) { const cellData = currentRow[columnIndex]; const { startDate: currentStartDate, endDate: currentEndDate, groupIndex: currentGroupIndex, allDay: currentAllDay } = cellData; if (groupIndex === currentGroupIndex && allDay === !!currentAllDay && this._compareDatesAndAllDay(date, currentStartDate, currentEndDate, allDay)) { return { position: { columnIndex: columnIndex, rowIndex: showAllDayPanel && !this._options.isVerticalGrouping ? rowIndex - 1 : rowIndex }, cellData: cellData } } } } return } _compareDatesAndAllDay(date, cellStartDate, cellEndDate, allDay) { return allDay ? _date.default.sameDate(date, cellStartDate) : date >= cellStartDate && date < cellEndDate } getSkippedDaysCount(groupIndex, startDate, endDate, daysCount) { const { dateTableGroupedMap: dateTableGroupedMap } = this._groupedDataMapProvider.groupedDataMap; const groupedData = dateTableGroupedMap[groupIndex]; let includedDays = 0; for (let rowIndex = 0; rowIndex < groupedData.length; rowIndex += 1) { for (let columnIndex = 0; columnIndex < groupedData[rowIndex].length; columnIndex += 1) { const cell = groupedData[rowIndex][columnIndex].cellData; if (startDate.getTime() < cell.endDate.getTime() && endDate.getTime() > cell.startDate.getTime()) { includedDays += 1 } } } const lastCell = groupedData[groupedData.length - 1][groupedData[0].length - 1].cellData; const lastCellStart = _date.default.trimTime(lastCell.startDate); const daysAfterView = Math.floor((endDate.getTime() - lastCellStart.getTime()) / _date.default.dateToMilliseconds("day")); const deltaDays = daysAfterView > 0 ? daysAfterView : 0; return daysCount - includedDays - deltaDays } getColumnsCount() { const { dateTableMap: dateTableMap } = this.viewDataMap; return dateTableMap ? dateTableMap[0].length : 0 } getViewEdgeIndices(isAllDayPanel) { if (isAllDayPanel) { return { firstColumnIndex: 0, lastColumnIndex: this.viewDataMap.allDayPanelMap.length - 1, firstRowIndex: 0, lastRowIndex: 0 } } return { firstColumnIndex: 0, lastColumnIndex: this.viewDataMap.dateTableMap[0].length - 1, firstRowIndex: 0, lastRowIndex: this.viewDataMap.dateTableMap.length - 1 } } getGroupEdgeIndices(groupIndex, isAllDay) { const groupedDataMap = this.groupedDataMap.dateTableGroupedMap[groupIndex]; const cellsCount = groupedDataMap[0].length; const rowsCount = groupedDataMap.length; const firstColumnIndex = groupedDataMap[0][0].position.columnIndex; const lastColumnIndex = groupedDataMap[0][cellsCount - 1].position.columnIndex; if (isAllDay) { return { firstColumnIndex: firstColumnIndex, lastColumnIndex: lastColumnIndex, firstRowIndex: 0, lastRowIndex: 0 } } return { firstColumnIndex: firstColumnIndex, lastColumnIndex: lastColumnIndex, firstRowIndex: groupedDataMap[0][0].position.rowIndex, lastRowIndex: groupedDataMap[rowsCount - 1][0].position.rowIndex } } isSameCell(firstCellData, secondCellData) { const { startDate: firstStartDate, groupIndex: firstGroupIndex, allDay: firstAllDay, index: firstIndex } = firstCellData; const { startDate: secondStartDate, groupIndex: secondGroupIndex, allDay: secondAllDay, index: secondIndex } = secondCellData; return firstStartDate.getTime() === secondStartDate.getTime() && firstGroupIndex === secondGroupIndex && firstAllDay === secondAllDay && firstIndex === secondIndex } getLastViewDate() { const { completeViewDataMap: completeViewDataMap } = this; const rowsCount = completeViewDataMap.length - 1; return completeViewDataMap[rowsCount][completeViewDataMap[rowsCount].length - 1].endDate } getStartViewDate() { return this._options.startViewDate } getIntervalDuration(intervalCount) { return this.viewDataGenerator._getIntervalDuration(intervalCount) } getLastCellEndDate() { const lastEndDate = new Date(this.getLastViewDate().getTime() - _date.default.dateToMilliseconds("minute")); return _date2.dateUtilsTs.addOffsets(lastEndDate, [-this._options.viewOffset]) } getLastViewDateByEndDayHour(endDayHour) { const lastCellEndDate = this.getLastCellEndDate(); const endTime = _date.default.dateTimeFromDecimal(endDayHour); const endDateOfLastViewCell = new Date(lastCellEndDate.setHours(endTime.hours, endTime.minutes)); return this._adjustEndDateByDaylightDiff(lastCellEndDate, endDateOfLastViewCell) } _adjustEndDateByDaylightDiff(startDate, endDate) { const daylightDiff = _m_utils_time_zone.default.getDaylightOffsetInMs(startDate, endDate); const endDateOfLastViewCell = new Date(endDate.getTime() - daylightDiff); return new Date(endDateOfLastViewCell.getTime() - _date.default.dateToMilliseconds("minute")) } getCellCountInDay(startDayHour, endDayHour, hoursInterval) { return this.viewDataGenerator.getCellCountInDay(startDayHour, endDayHour, hoursInterval) } getCellCount(options) { return this.viewDataGenerator.getCellCount(options) } getRowCount(options) { return this.viewDataGenerator.getRowCount(options) } getVisibleDayDuration(startDayHour, endDayHour, hoursInterval) { return this.viewDataGenerator.getVisibleDayDuration(startDayHour, endDayHour, hoursInterval) } _getRowCountWithAllDayRows() { const allDayRowCount = this._options.isAllDayPanelVisible ? 1 : 0; return this.getRowCount(this._options) + allDayRowCount } getFirstDayOfWeek(firstDayOfWeekOption) { return this.viewDataGenerator.getFirstDayOfWeek(firstDayOfWeekOption) } setViewOptions(options) { this._options = this._transformRenderOptions(options) } getViewOptions() { return this._options } getViewPortGroupCount() { const { dateTableGroupedMap: dateTableGroupedMap } = this.groupedDataMap; return (null === dateTableGroupedMap || void 0 === dateTableGroupedMap ? void 0 : dateTableGroupedMap.length) || 0 } getCellsBetween(first, last) { const [firstCell, lastCell] = this.normalizeCellsOrder(first, last); const { index: firstIdx } = firstCell; const { index: lastIdx } = lastCell; const cellMatrix = this.getCellsByGroupIndexAndAllDay(firstCell.groupIndex ?? 0, lastCell.allDay ?? false); return (0, _index.isHorizontalView)(this.viewType) ? this.getCellsBetweenHorizontalView(cellMatrix, firstIdx, lastIdx) : this.getCellsBetweenVerticalView(cellMatrix, firstIdx, lastIdx) } getCellsBetweenHorizontalView(cellMatrix, firstIdx, lastIdx) { return cellMatrix.reduce(((result, row) => result.concat(row.filter((_ref2 => { let { index: index } = _ref2; return firstIdx <= index && index <= lastIdx })))), []) } getCellsBetweenVerticalView(cellMatrix, firstIdx, lastIdx) { var _cellMatrix$; const result = []; const matrixHeight = cellMatrix.length; const matrixWidth = (null === (_cellMatrix$ = cellMatrix[0]) || void 0 === _cellMatrix$ ? void 0 : _cellMatrix$.length) ?? 0; let inSegment = false; for (let columnIdx = 0; columnIdx < matrixWidth; columnIdx += 1) { for (let rowIdx = 0; rowIdx < matrixHeight; rowIdx += 1) { const cell = cellMatrix[rowIdx][columnIdx]; const { index: cellIdx } = cell; if (cellIdx === firstIdx) { inSegment = true } if (inSegment) { result.push(cell) } if (cellIdx === lastIdx) { return result } } } return result } normalizeCellsOrder(firstSelectedCell, lastSelectedCell) { return firstSelectedCell.startDate > lastSelectedCell.startDate ? [lastSelectedCell, firstSelectedCell] : [firstSelectedCell, lastSelectedCell] } } }, 59310: /*!****************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/ui/button/button.js ***! \****************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.defaultOptionRules = exports.defaultButtonProps = exports.buttonComponentProps = exports.Button = exports.BUTTON_CLASS = void 0; exports.defaultOptions = function(rule) { __defaultOptionRules.push(rule); Button.defaultProps = Object.create(Object.prototype, Object.assign(Object.getOwnPropertyDescriptors(Button.defaultProps), Object.getOwnPropertyDescriptors((0, _utils.convertRulesToOptions)(defaultOptionRules)), Object.getOwnPropertyDescriptors((0, _utils.convertRulesToOptions)(__defaultOptionRules)))) }; var _inferno = __webpack_require__( /*! inferno */ 76231); var _short = __webpack_require__( /*! ../../../common/core/events/short */ 42222); var _message = _interopRequireDefault(__webpack_require__( /*! ../../../common/core/localization/message */ 4671)); var _devices = _interopRequireDefault(__webpack_require__( /*! ../../../core/devices */ 65951)); var _utils = __webpack_require__( /*! ../../../core/options/utils */ 53904); var _icon = __webpack_require__( /*! ../../../core/utils/icon */ 69629); var _inflector = __webpack_require__( /*! ../../../core/utils/inflector */ 53124); var _themes = __webpack_require__( /*! ../../../ui/themes */ 52071); var _base_props = __webpack_require__( /*! ../../core/r1/base_props */ 28112); var _index = __webpack_require__( /*! ../../core/r1/runtime/inferno/index */ 6257); var _index2 = __webpack_require__( /*! ../../core/r1/utils/index */ 10632); var _widget = __webpack_require__( /*! ../../core/r1/widget */ 93796); var _combine_classes = __webpack_require__( /*! ../../core/utils/combine_classes */ 46190); var _icon2 = __webpack_require__( /*! ./icon */ 38643); var _ink_ripple = __webpack_require__( /*! ./ink_ripple */ 8529); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } function _extends() { return _extends = Object.assign ? Object.assign.bind() : function(n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) { ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]) } } return n }, _extends.apply(null, arguments) } const BUTTON_CLASS = exports.BUTTON_CLASS = "dx-button"; const stylingModes = ["outlined", "text", "contained"]; const buttonComponentProps = exports.buttonComponentProps = ["accessKey", "activeStateEnabled", "className", "disabled", "focusStateEnabled", "height", "hint", "hoverStateEnabled", "icon", "iconPosition", "iconTemplate", "onClick", "onKeyDown", "onSubmit", "pressed", "rtlEnabled", "stylingMode", "tabIndex", "template", "templateData", "text", "type", "useInkRipple", "useSubmitBehavior", "visible", "width"]; const defaultButtonProps = exports.defaultButtonProps = _extends({}, _base_props.BaseWidgetDefaultProps, { activeStateEnabled: true, hoverStateEnabled: true, icon: "", iconPosition: "left", stylingMode: "contained", text: "", type: "normal", useInkRipple: false, useSubmitBehavior: false, templateData: {} }); const defaultOptionRules = exports.defaultOptionRules = (0, _utils.createDefaultOptionRules)([{ device: () => "desktop" === _devices.default.real().deviceType && !_devices.default.isSimulator(), options: { focusStateEnabled: true } }, { device: () => (0, _themes.isMaterial)((0, _themes.current)()), options: { useInkRipple: true } }]); class Button extends _index.InfernoWrapperComponent { constructor(props) { super(props); this.contentRef = (0, _inferno.createRef)(); this.inkRippleRef = (0, _inferno.createRef)(); this.submitInputRef = (0, _inferno.createRef)(); this.widgetRef = (0, _inferno.createRef)(); this.__getterCache = {}; this.state = {}; this.focus = this.focus.bind(this); this.activate = this.activate.bind(this); this.deactivate = this.deactivate.bind(this); this.submitEffect = this.submitEffect.bind(this); this.onActive = this.onActive.bind(this); this.onInactive = this.onInactive.bind(this); this.onWidgetClick = this.onWidgetClick.bind(this); this.keyDown = this.keyDown.bind(this) } createEffects() { return [new _index.InfernoEffect(this.submitEffect, [this.props.onSubmit, this.props.useSubmitBehavior]), (0, _index.createReRenderEffect)()] } updateEffects() { var _this$_effects$; null === (_this$_effects$ = this._effects[0]) || void 0 === _this$_effects$ || _this$_effects$.update([this.props.onSubmit, this.props.useSubmitBehavior]) } submitEffect() { const { onSubmit: onSubmit, useSubmitBehavior: useSubmitBehavior } = this.props; const submitInput = this.submitInputRef.current; if (useSubmitBehavior && onSubmit) { _short.click.on(submitInput, (event => onSubmit({ event: event, submitInput: submitInput })), { namespace: "UIFeedback" }); return () => _short.click.off(submitInput, { namespace: "UIFeedback" }) } return } onActive(event) { if (this.props.useInkRipple) { var _this$inkRippleRef$cu; null === (_this$inkRippleRef$cu = this.inkRippleRef.current) || void 0 === _this$inkRippleRef$cu || _this$inkRippleRef$cu.showWave({ element: this.contentRef.current, event: event }) } } onInactive(event) { if (this.props.useInkRipple) { var _this$inkRippleRef$cu2; null === (_this$inkRippleRef$cu2 = this.inkRippleRef.current) || void 0 === _this$inkRippleRef$cu2 || _this$inkRippleRef$cu2.hideWave({ element: this.contentRef.current, event: event }) } } onWidgetClick(event) { const { onClick: onClick, useSubmitBehavior: useSubmitBehavior } = this.props; null === onClick || void 0 === onClick || onClick({ event: event }); if (useSubmitBehavior) { var _this$submitInputRef$; null === (_this$submitInputRef$ = this.submitInputRef.current) || void 0 === _this$submitInputRef$ || _this$submitInputRef$.click() } } keyDown(e) { const { onKeyDown: onKeyDown } = this.props; const { keyName: keyName, originalEvent: originalEvent, which: which } = e; const result = null === onKeyDown || void 0 === onKeyDown ? void 0 : onKeyDown(e); if (null !== result && void 0 !== result && result.cancel) { return result } if ("space" === keyName || "space" === which || "enter" === keyName || "enter" === which) { originalEvent.preventDefault(); this.onWidgetClick(originalEvent) } return } get aria() { const { icon: icon, text: text } = this.props; let label = text ?? ""; if (!text && icon) { const iconSource = (0, _icon.getImageSourceType)(icon); switch (iconSource) { case "image": { const notURLRegexp = /^(?!(?:https?:\/\/)|(?:ftp:\/\/)|(?:www\.))[^\s]+$/; const isPathToImage = !icon.includes("base64") && notURLRegexp.test(icon); label = isPathToImage ? icon.replace(/.+\/([^.]+)\..+$/, "$1") : ""; break } case "dxIcon": label = _message.default.format((0, _inflector.camelize)(icon, true)) || icon; break; case "fontIcon": label = icon; break; case "svg": { var _titleRegexp$exec; const titleRegexp = /(.*?)<\/title>/; label = (null === (_titleRegexp$exec = titleRegexp.exec(icon)) || void 0 === _titleRegexp$exec ? void 0 : _titleRegexp$exec[1]) ?? ""; break } } } return _extends({ role: "button" }, label ? { label: label } : {}) } get cssClasses() { return (model => { const { icon: icon, iconPosition: iconPosition, stylingMode: stylingMode, text: text, type: type } = model; const isValidStylingMode = stylingMode && stylingModes.includes(stylingMode); const classesMap = { [BUTTON_CLASS]: true, [`dx-button-mode-${isValidStylingMode?stylingMode:"contained"}`]: true, [`dx-button-${type??"normal"}`]: true, "dx-button-has-text": !!text, "dx-button-has-icon": !!icon, "dx-button-icon-right": "left" !== iconPosition }; return (0, _combine_classes.combineClasses)(classesMap) })(this.props) } get iconSource() { return this.props.icon ?? "" } get inkRippleConfig() { if (void 0 === this.__getterCache.inkRippleConfig) { const { icon: icon, text: text } = this.props; this.__getterCache.inkRippleConfig = !text && icon ? { isCentered: true, useHoldAnimation: false, waveSizeCoefficient: 1 } : {} } return this.__getterCache.inkRippleConfig } get buttonTemplateData() { const { icon: icon, text: text, templateData: templateData } = this.props; return _extends({ icon: icon, text: text }, templateData) } get restAttributes() { const excludedKeys = [...buttonComponentProps, "children"]; return ((obj, excludedKeys) => { const excludedSet = new Set(excludedKeys); return Object.keys(obj).reduce(((result, key) => { if (!excludedSet.has(key)) { result[key] = obj[key] } return result }), {}) })(this.props, excludedKeys) } focus() { var _this$widgetRef$curre; null === (_this$widgetRef$curre = this.widgetRef.current) || void 0 === _this$widgetRef$curre || _this$widgetRef$curre.focus() } activate() { var _this$widgetRef$curre2; null === (_this$widgetRef$curre2 = this.widgetRef.current) || void 0 === _this$widgetRef$curre2 || _this$widgetRef$curre2.activate() } deactivate() { var _this$widgetRef$curre3; null === (_this$widgetRef$curre3 = this.widgetRef.current) || void 0 === _this$widgetRef$curre3 || _this$widgetRef$curre3.deactivate() } componentWillUpdate(nextProps) { super.componentWillUpdate(); if (this.props.icon !== nextProps.icon || this.props.text !== nextProps.text) { this.__getterCache.inkRippleConfig = void 0 } } render() { const { children: children, iconPosition: iconPosition, text: text } = this.props; const ButtonTemplate = (0, _index2.getTemplate)(this.props.template); const IconTemplate = (0, _index2.getTemplate)(this.props.iconTemplate); const renderText = !this.props.template && !children && "" !== text; const isIconLeft = "left" === iconPosition; const iconComponent = !ButtonTemplate && !children && (this.iconSource || IconTemplate) && (0, _inferno.createComponentVNode)(2, _icon2.Icon, { source: this.iconSource, position: iconPosition, iconTemplate: IconTemplate }); return (0, _inferno.normalizeProps)((0, _inferno.createComponentVNode)(2, _widget.Widget, _extends({ accessKey: this.props.accessKey, activeStateEnabled: this.props.activeStateEnabled, aria: this.aria, className: this.props.className, classes: this.cssClasses, disabled: this.props.disabled, focusStateEnabled: this.props.focusStateEnabled, height: this.props.height, hint: this.props.hint, hoverStateEnabled: this.props.hoverStateEnabled, onActive: this.onActive, onClick: this.onWidgetClick, onInactive: this.onInactive, onKeyDown: this.keyDown, rtlEnabled: this.props.rtlEnabled, tabIndex: this.props.tabIndex, visible: this.props.visible, width: this.props.width }, this.restAttributes, { children: (0, _inferno.createVNode)(1, "div", "dx-button-content", [ButtonTemplate ? ButtonTemplate({ data: this.buttonTemplateData }) : children, isIconLeft && iconComponent, renderText && (0, _inferno.createVNode)(1, "span", "dx-button-text", text, 0), !isIconLeft && iconComponent, this.props.useSubmitBehavior && (0, _inferno.createVNode)(64, "input", "dx-button-submit-input", null, 1, { type: "submit", tabindex: -1 }, null, this.submitInputRef), this.props.useInkRipple && (0, _inferno.createComponentVNode)(2, _ink_ripple.InkRipple, { config: this.inkRippleConfig }, null, this.inkRippleRef)], 0, null, null, this.contentRef) }), null, this.widgetRef)) } } exports.Button = Button; Button.defaultProps = _extends({}, defaultButtonProps, (0, _utils.convertRulesToOptions)(defaultOptionRules)); const __defaultOptionRules = [] }, 38643: /*!**************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/ui/button/icon.js ***! \**************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.defaultIconProps = exports.Icon = void 0; var _inferno = __webpack_require__( /*! inferno */ 76231); var _icon = __webpack_require__( /*! ../../../core/utils/icon */ 69629); var _index = __webpack_require__( /*! ../../core/r1/runtime/inferno/index */ 6257); var _index2 = __webpack_require__( /*! ../../core/r1/utils/index */ 10632); var _combine_classes = __webpack_require__( /*! ../../core/utils/combine_classes */ 46190); function _extends() { return _extends = Object.assign ? Object.assign.bind() : function(n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) { ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]) } } return n }, _extends.apply(null, arguments) } const defaultIconProps = exports.defaultIconProps = { position: "left", source: "" }; class Icon extends _index.BaseInfernoComponent { constructor(props) { super(props); this.state = {} } get sourceType() { return (0, _icon.getImageSourceType)(this.props.source) } get cssClass() { return "left" !== this.props.position ? "dx-icon-right" : "" } get iconClassName() { const generalClasses = { "dx-icon": true, [this.cssClass]: !!this.cssClass }; const { source: source } = this.props; if ("dxIcon" === this.sourceType) { return (0, _combine_classes.combineClasses)(_extends({}, generalClasses, { [`dx-icon-${source}`]: true })) } if ("fontIcon" === this.sourceType) { return (0, _combine_classes.combineClasses)(_extends({}, generalClasses, { [String(source)]: !!source })) } if ("image" === this.sourceType) { return (0, _combine_classes.combineClasses)(generalClasses) } if ("svg" === this.sourceType) { return (0, _combine_classes.combineClasses)(_extends({}, generalClasses, { "dx-svg-icon": true })) } return "" } render() { const { iconClassName: iconClassName, props: props, sourceType: sourceType } = this; const IconTemplate = (0, _index2.getTemplate)(props.iconTemplate); return (0, _inferno.createFragment)(["dxIcon" === sourceType && (0, _inferno.createVNode)(1, "i", iconClassName), "fontIcon" === sourceType && (0, _inferno.createVNode)(1, "i", iconClassName), "image" === sourceType && (0, _inferno.createVNode)(1, "img", iconClassName, null, 1, { alt: "", src: props.source }), IconTemplate && (0, _inferno.createVNode)(1, "i", iconClassName, IconTemplate({}), 0)], 0) } } exports.Icon = Icon; Icon.defaultProps = defaultIconProps }, 74660: /*!***************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/ui/button/index.js ***! \***************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _wrapper = (e = __webpack_require__( /*! ./wrapper */ 19583), e && e.__esModule ? e : { default: e }); var e; exports.default = _wrapper.default }, 8529: /*!********************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/ui/button/ink_ripple.js ***! \********************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.defaultInkRippleProps = exports.InkRipple = void 0; var _inferno = __webpack_require__( /*! inferno */ 76231); var _utils = __webpack_require__( /*! ../../../ui/widget/utils.ink_ripple */ 63322); var _index = __webpack_require__( /*! ../../core/r1/runtime/inferno/index */ 6257); const _excluded = ["config"]; function _extends() { return _extends = Object.assign ? Object.assign.bind() : function(n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) { ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]) } } return n }, _extends.apply(null, arguments) } const defaultInkRippleProps = exports.defaultInkRippleProps = { config: {} }; class InkRipple extends _index.BaseInfernoComponent { constructor(props) { super(props); this.__getterCache = {}; this.state = {}; this.hideWave = this.hideWave.bind(this); this.showWave = this.showWave.bind(this) } get getConfig() { if (void 0 === this.__getterCache.getConfig) { this.__getterCache.getConfig = (0, _utils.initConfig)(this.props.config) } return this.__getterCache.getConfig } get restAttributes() { const _this$props = this.props, restProps = function(r, e) { if (null == r) { return {} } var t = {}; for (var n in r) { if ({}.hasOwnProperty.call(r, n)) { if (e.includes(n)) { continue } t[n] = r[n] } } return t }(_this$props, _excluded); return restProps } hideWave(opts) { (0, _utils.hideWave)(this.getConfig, opts) } showWave(opts) { (0, _utils.showWave)(this.getConfig, opts) } componentWillUpdate(nextProps) { if (this.props.config !== nextProps.config) { this.__getterCache.getConfig = void 0 } } render() { return (0, _inferno.normalizeProps)((0, _inferno.createVNode)(1, "div", "dx-inkripple", null, 1, _extends({}, this.restAttributes))) } } exports.InkRipple = InkRipple; InkRipple.defaultProps = defaultInkRippleProps }, 19583: /*!*****************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/ui/button/wrapper.js ***! \*****************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _component_registrator = _interopRequireDefault(__webpack_require__( /*! ../../../core/component_registrator */ 92848)); var _icon = __webpack_require__( /*! ../../../core/utils/icon */ 69629); var _validation_engine = _interopRequireDefault(__webpack_require__( /*! ../../../ui/validation_engine */ 19391)); var _component_wrapper = __webpack_require__( /*! ../../core/r1/component_wrapper */ 34993); var _button = __webpack_require__( /*! ./button */ 59310); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } function _extends() { return _extends = Object.assign ? Object.assign.bind() : function(n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) { ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]) } } return n }, _extends.apply(null, arguments) } class Button extends _component_wrapper.ComponentWrapper { get _validationGroupConfig() { return _validation_engine.default.getGroupConfig(this._findGroup()) } getDefaultTemplateNames() { return ["content"] } getSupportedKeyNames() { return ["space", "enter"] } getProps() { const props = super.getProps(); props.onClick = _ref => { let { event: event } = _ref; this._clickAction({ event: event, validationGroup: this._validationGroupConfig }) }; props.onKeyDown = this._wrapKeyDownHandler(props.onKeyDown); const iconType = (0, _icon.getImageSourceType)(props.icon); if ("svg" === iconType) { props.iconTemplate = this._createTemplateComponent((() => props.icon)) } return props } get viewRef() { return super.viewRef } get _templatesInfo() { return { template: "content" } } _toggleActiveState(_, value) { if (value) { var _this$viewRef; null === (_this$viewRef = this.viewRef) || void 0 === _this$viewRef || _this$viewRef.activate() } else { var _this$viewRef2; null === (_this$viewRef2 = this.viewRef) || void 0 === _this$viewRef2 || _this$viewRef2.deactivate() } } _getSubmitAction() { let needValidate = true; let validationStatus = "valid"; return this._createAction((_ref2 => { let { event: event, submitInput: submitInput } = _ref2; if (needValidate) { const validationGroup = this._validationGroupConfig; if (void 0 !== validationGroup && "" !== validationGroup) { const validationResult = validationGroup.validate(); validationStatus = validationResult.status; if ("pending" === validationResult.status) { needValidate = false; this.option("disabled", true); validationResult.complete.then((_ref3 => { let { status: status } = _ref3; this.option("disabled", false); validationStatus = status; if ("valid" === validationStatus) { submitInput.click() } needValidate = true })) } } } if ("valid" !== validationStatus) { event.preventDefault() } event.stopPropagation() })) } _initializeComponent() { super._initializeComponent(); this._addAction("onSubmit", this._getSubmitAction()); this._clickAction = this._createClickAction() } _initMarkup() { super._initMarkup(); const $content = this.$element().find(".dx-button-content").first(); const $template = $content.children().filter(".dx-template-wrapper"); const $input = $content.children().filter(".dx-button-submit-input"); if ($template.length) { $template.addClass("dx-button-content"); $template.append($input); $content.replaceWith($template) } } _patchOptionValues(options) { return super._patchOptionValues(_extends({}, options, { templateData: options._templateData })) } _findGroup() { const $element = this.$element(); const validationGroup = this.option("validationGroup"); return void 0 !== validationGroup && "" !== validationGroup ? validationGroup : _validation_engine.default.findGroup($element, this._modelByElement($element)) } _createClickAction() { return this._createActionByOption("onClick", { excludeValidators: ["readOnly"] }) } _optionChanged(option) { if ("onClick" === option.name) { this._clickAction = this._createClickAction() } super._optionChanged(option) } focus() { var _this$viewRef3; null === (_this$viewRef3 = this.viewRef) || void 0 === _this$viewRef3 || _this$viewRef3.focus() } activate() { var _this$viewRef4; null === (_this$viewRef4 = this.viewRef) || void 0 === _this$viewRef4 || _this$viewRef4.activate() } deactivate() { var _this$viewRef5; null === (_this$viewRef5 = this.viewRef) || void 0 === _this$viewRef5 || _this$viewRef5.deactivate() } _getActionConfigs() { return { onClick: { excludeValidators: ["readOnly"] }, onSubmit: {} } } get _propsInfo() { return { twoWay: [], allowNull: [], elements: ["onSubmit"], templates: ["template", "iconTemplate"], props: _button.buttonComponentProps } } get _viewComponent() { return _button.Button } } exports.default = Button; (0, _component_registrator.default)("dxButton", Button); Button.defaultOptions = _button.defaultOptions }, 15139: /*!********************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/ui/calendar/m_calendar.base_view.js ***! \********************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _click = __webpack_require__( /*! ../../../common/core/events/click */ 64044); var _events_engine = _interopRequireDefault(__webpack_require__( /*! ../../../common/core/events/core/events_engine */ 92774)); var _hover = __webpack_require__( /*! ../../../common/core/events/hover */ 638); var _index = __webpack_require__( /*! ../../../common/core/events/utils/index */ 98834); var _date = _interopRequireDefault(__webpack_require__( /*! ../../../common/core/localization/date */ 38662)); var _message = _interopRequireDefault(__webpack_require__( /*! ../../../common/core/localization/message */ 4671)); var _class = _interopRequireDefault(__webpack_require__( /*! ../../../core/class */ 55620)); var _dom_adapter = _interopRequireDefault(__webpack_require__( /*! ../../../core/dom_adapter */ 64960)); var _element = __webpack_require__( /*! ../../../core/element */ 61404); var _element_data = __webpack_require__( /*! ../../../core/element_data */ 74663); var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../../core/renderer */ 64553)); var _common = __webpack_require__( /*! ../../../core/utils/common */ 17781); var _date2 = _interopRequireDefault(__webpack_require__( /*! ../../../core/utils/date */ 41380)); var _date_serialization = _interopRequireDefault(__webpack_require__( /*! ../../../core/utils/date_serialization */ 71051)); var _widget = _interopRequireDefault(__webpack_require__( /*! ../../core/widget/widget */ 89275)); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } function _extends() { return _extends = Object.assign ? Object.assign.bind() : function(n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) { ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]) } } return n }, _extends.apply(null, arguments) } const CALENDAR_DXCLICK_EVENT_NAME = (0, _index.addNamespace)(_click.name, "dxCalendar"); const CALENDAR_DXHOVERSTART_EVENT_NAME = (0, _index.addNamespace)(_hover.start, "dxCalendar"); const CURRENT_DATE_TEXT = { month: _message.default.format("dxCalendar-currentDay"), year: _message.default.format("dxCalendar-currentMonth"), decade: _message.default.format("dxCalendar-currentYear"), century: _message.default.format("dxCalendar-currentYearRange") }; const SELECTION_MODE_single = "single", SELECTION_MODE_multiple = "multiple", SELECTION_MODE_range = "range"; class BaseView extends _widget.default { _getViewName() { return "base" } _getDefaultOptions() { return _extends({}, super._getDefaultOptions(), { date: new Date, focusStateEnabled: false, cellTemplate: null, disabledDates: null, onCellClick: null, onCellHover: null, onWeekNumberClick: null, rowCount: 3, colCount: 4, allowValueSelection: true, _todayDate: () => new Date }) } _initMarkup() { super._initMarkup(); this._renderImpl() } _renderImpl() { this.$element().append(this._createTable()); this._createDisabledDatesHandler(); this._renderBody(); this._renderContouredDate(); this._renderValue(); this._renderRange(); this._renderEvents(); this._updateTableAriaLabel() } _getLocalizedWidgetName() { const localizedWidgetName = _message.default.format("dxCalendar-ariaWidgetName"); return localizedWidgetName } _getSingleModeAriaLabel() { const { value: value } = this.option(); const localizedWidgetName = this._getLocalizedWidgetName(); const formattedDate = _date.default.format(value, "date"); const selectedDatesText = _message.default.format("dxCalendar-selectedDate", formattedDate); const ariaLabel = `${localizedWidgetName}. ${selectedDatesText}`; return ariaLabel } _getRangeModeAriaLabel() { const { value: value } = this.option(); const localizedWidgetName = this._getLocalizedWidgetName(); const [startDate, endDate] = value; const formattedStartDate = _date.default.format(startDate, "date"); const formattedEndDate = _date.default.format(endDate, "date"); const selectedDatesText = startDate && endDate ? _message.default.format("dxCalendar-selectedDateRange", formattedStartDate, formattedEndDate) : _message.default.format("dxCalendar-selectedDate", formattedStartDate ?? formattedEndDate); const ariaLabel = `${localizedWidgetName}. ${selectedDatesText}`; return ariaLabel } _getMultipleModeAriaLabel() { const localizedWidgetName = this._getLocalizedWidgetName(); const selectedRangesText = this._getMultipleRangesText(); const ariaLabel = `${localizedWidgetName}. ${selectedRangesText}`; return ariaLabel } _getMultipleRangesText() { const { value: value } = this.option(); const ranges = _date2.default.getRangesByDates(value.map((date => new Date(date)))); if (ranges.length > 2) { const dateRangeCountText = _message.default.format("dxCalendar-selectedDateRangeCount", ranges.length); return dateRangeCountText } const selectedDatesText = _message.default.format("dxCalendar-selectedDates"); const rangesText = ranges.map((range => this._getRangeText(range))).join(", "); const result = `${selectedDatesText}: ${rangesText}`; return result } _getRangeText(range) { const [startDate, endDate] = range; const formattedStartDate = _date.default.format(startDate, "date"); const formattedEndDate = _date.default.format(endDate, "date"); const selectedDatesText = startDate && endDate ? _message.default.format("dxCalendar-selectedMultipleDateRange", formattedStartDate, formattedEndDate) : formattedStartDate; return selectedDatesText } _getTableAriaLabel() { const { value: value, selectionMode: selectionMode } = this.option(); const isValueEmpty = !value || Array.isArray(value) && !value.filter(Boolean).length; if (isValueEmpty) { return this._getLocalizedWidgetName() } switch (selectionMode) { case SELECTION_MODE_single: return this._getSingleModeAriaLabel(); case SELECTION_MODE_range: return this._getRangeModeAriaLabel(); case SELECTION_MODE_multiple: return this._getMultipleModeAriaLabel() } } _updateTableAriaLabel() { const label = this._getTableAriaLabel(); this.setAria({ label: label }, this._$table) } _createTable() { this._$table = (0, _renderer.default)("<table>"); this.setAria({ role: "grid" }, this._$table); return this._$table } _renderBody() { this.$body = (0, _renderer.default)("<tbody>").appendTo(this._$table); const rowData = { cellDate: this._getFirstCellData(), prevCellDate: null }; const { rowCount: rowsCount, colCount: colsCount } = this.option(); for (let rowIndex = 0, rowCount = rowsCount; rowIndex < rowCount; rowIndex++) { rowData.row = this._createRow(); for (let colIndex = 0, colCount = colsCount; colIndex < colCount; colIndex++) { this._renderCell(rowData, colIndex) } this._renderWeekNumberCell(rowData) } } _renderWeekNumberCell(rowData) {} _createRow() { const row = _dom_adapter.default.createElement("tr"); this.setAria("role", "row", (0, _renderer.default)(row)); this.$body.get(0).appendChild(row); return row } _createCell(cellDate, cellIndex) { const cell = _dom_adapter.default.createElement("td"); const $cell = (0, _renderer.default)(cell); cell.className = this._getClassNameByDate(cellDate, cellIndex); cell.setAttribute("data-value", _date_serialization.default.serializeDate(cellDate, _date2.default.getShortDateFormat())); (0, _element_data.data)(cell, "dxDateValueKey", cellDate); this.setAria({ role: "gridcell", selected: false, label: this.getCellAriaLabel(cellDate) }, $cell); return { cell: cell, $cell: $cell } } _renderCell(params, cellIndex) { const { cellDate: cellDate, prevCellDate: prevCellDate, row: row } = params; if (prevCellDate) { _date2.default.fixTimezoneGap(prevCellDate, cellDate) } params.prevCellDate = cellDate; const { cell: cell, $cell: $cell } = this._createCell(cellDate, cellIndex); const cellTemplate = this.option("cellTemplate"); (0, _renderer.default)(row).append(cell); if (cellTemplate) { cellTemplate.render(this._prepareCellTemplateData(cellDate, cellIndex, $cell)) } else { cell.innerHTML = this._getCellText(cellDate) } params.cellDate = this._getNextCellData(cellDate) } _getClassNameByDate(cellDate, cellIndex) { let className = "dx-calendar-cell"; if (this._isTodayCell(cellDate)) { className += " dx-calendar-today" } if (this._isDateOutOfRange(cellDate) || this.isDateDisabled(cellDate)) { className += " dx-calendar-empty-cell" } if (this._isOtherView(cellDate)) { className += " dx-calendar-other-view" } const { selectionMode: selectionMode } = this.option(); if (selectionMode === SELECTION_MODE_range) { if (0 === cellIndex) { className += " dx-calendar-cell-start-in-row" } const { colCount: colCount } = this.option(); if (cellIndex === colCount - 1) { className += " dx-calendar-cell-end-in-row" } if (this._isStartDayOfMonth(cellDate)) { className += " dx-calendar-cell-start" } if (this._isEndDayOfMonth(cellDate)) { className += " dx-calendar-cell-end" } } return className } _prepareCellTemplateData(cellDate, cellIndex, $cell) { const isDateCell = cellDate instanceof Date; const text = isDateCell ? this._getCellText(cellDate) : cellDate; const date = isDateCell ? cellDate : void 0; const view = this._getViewName(); return { model: { text: text, date: date, view: view }, container: (0, _element.getPublicElement)($cell), index: cellIndex } } _renderEvents() { this._createCellClickAction(); _events_engine.default.off(this._$table, CALENDAR_DXCLICK_EVENT_NAME); _events_engine.default.on(this._$table, CALENDAR_DXCLICK_EVENT_NAME, "td:not(.dx-calendar-week-number-cell)", (e => { if (!(0, _renderer.default)(e.currentTarget).hasClass("dx-calendar-empty-cell")) { this._cellClickAction({ event: e, value: (0, _renderer.default)(e.currentTarget).data("dxDateValueKey") }) } })); const { selectionMode: selectionMode } = this.option(); _events_engine.default.off(this._$table, CALENDAR_DXHOVERSTART_EVENT_NAME); if (selectionMode === SELECTION_MODE_range) { this._createCellHoverAction(); _events_engine.default.on(this._$table, CALENDAR_DXHOVERSTART_EVENT_NAME, "td:not(.dx-calendar-week-number-cell)", (e => { if (!(0, _renderer.default)(e.currentTarget).hasClass("dx-calendar-empty-cell")) { this._cellHoverAction({ event: e, value: (0, _renderer.default)(e.currentTarget).data("dxDateValueKey") }) } })) } if (selectionMode !== SELECTION_MODE_single) { this._createWeekNumberCellClickAction(); _events_engine.default.on(this._$table, CALENDAR_DXCLICK_EVENT_NAME, ".dx-calendar-week-number-cell", (e => { const $row = (0, _renderer.default)(e.currentTarget).closest("tr"); const firstDateInRow = $row.find(".dx-calendar-cell").first().data("dxDateValueKey"); const lastDateInRow = $row.find(".dx-calendar-cell").last().data("dxDateValueKey"); const rowDates = [..._date2.default.getDatesOfInterval(firstDateInRow, lastDateInRow, 864e5), lastDateInRow]; this._weekNumberCellClickAction({ event: e, rowDates: rowDates }) })) } } _createCellClickAction() { this._cellClickAction = this._createActionByOption("onCellClick") } _createCellHoverAction() { this._cellHoverAction = this._createActionByOption("onCellHover") } _createWeekNumberCellClickAction() { this._weekNumberCellClickAction = this._createActionByOption("onWeekNumberClick") } _createDisabledDatesHandler() { const { disabledDates: disabledDates } = this.option(); this._disabledDatesHandler = Array.isArray(disabledDates) ? this._getDefaultDisabledDatesHandler(disabledDates) : disabledDates || _common.noop } _getDefaultDisabledDatesHandler(disabledDates) { return _common.noop } _isTodayCell(cellDate) { _class.default.abstract() } _isDateOutOfRange(cellDate) { _class.default.abstract() } isDateDisabled(cellDate) { const dateParts = { date: cellDate, view: this._getViewName() }; return this._disabledDatesHandler(dateParts) } _isOtherView(cellDate) { _class.default.abstract() } _isStartDayOfMonth(cellDate) { _class.default.abstract() } _isEndDayOfMonth(cellDate) { _class.default.abstract() } _getCellText(cellDate) { _class.default.abstract() } _getFirstCellData() { _class.default.abstract() } _getNextCellData(date) { _class.default.abstract() } _renderContouredDate(contouredDate) { if (!this.option("focusStateEnabled")) { return } contouredDate = contouredDate || this.option("contouredDate"); const $oldContouredCell = this._getContouredCell(); const $newContouredCell = this._getCellByDate(contouredDate); $oldContouredCell.removeClass("dx-calendar-contoured-date"); if (contouredDate) { $newContouredCell.addClass("dx-calendar-contoured-date") } } _getContouredCell() { return this._$table.find(".dx-calendar-contoured-date") } _renderValue() { if (!this.option("allowValueSelection")) { return } let value = this.option("value"); if (!Array.isArray(value)) { value = [value] } this._updateSelectedClass(value) } _updateSelectedClass(value) { var _this$_$selectedCells; if (this._isRangeMode() && !this._isMonthView()) { return } null === (_this$_$selectedCells = this._$selectedCells) || void 0 === _this$_$selectedCells || _this$_$selectedCells.forEach(($cell => { $cell.removeClass("dx-calendar-selected-date") })); this._$selectedCells = value.map((value => this._getCellByDate(value))); this._$selectedCells.forEach(($cell => { $cell.addClass("dx-calendar-selected-date") })) } _renderRange() { var _this$_$rangeCells, _this$_$hoveredRangeC, _this$_$rangeStartHov, _this$_$rangeEndHover, _this$_$rangeStartDat, _this$_$rangeEndDateC, _this$_$rangeStartDat2, _this$_$rangeEndDateC2; const { allowValueSelection: allowValueSelection, value: value, range: range } = this.option(); if (!allowValueSelection || !this._isRangeMode() || !this._isMonthView()) { return } null === (_this$_$rangeCells = this._$rangeCells) || void 0 === _this$_$rangeCells || _this$_$rangeCells.forEach(($cell => { $cell.removeClass("dx-calendar-cell-in-range") })); null === (_this$_$hoveredRangeC = this._$hoveredRangeCells) || void 0 === _this$_$hoveredRangeC || _this$_$hoveredRangeC.forEach(($cell => { $cell.removeClass("dx-calendar-cell-range-hover") })); null === (_this$_$rangeStartHov = this._$rangeStartHoverCell) || void 0 === _this$_$rangeStartHov || _this$_$rangeStartHov.removeClass("dx-calendar-cell-range-hover-start"); null === (_this$_$rangeEndHover = this._$rangeEndHoverCell) || void 0 === _this$_$rangeEndHover || _this$_$rangeEndHover.removeClass("dx-calendar-cell-range-hover-end"); null === (_this$_$rangeStartDat = this._$rangeStartDateCell) || void 0 === _this$_$rangeStartDat || _this$_$rangeStartDat.removeClass("dx-calendar-range-start-date"); null === (_this$_$rangeEndDateC = this._$rangeEndDateCell) || void 0 === _this$_$rangeEndDateC || _this$_$rangeEndDateC.removeClass("dx-calendar-range-end-date"); this._$rangeCells = range.map((value => this._getCellByDate(value))); this._$rangeStartDateCell = this._getCellByDate(value[0]); this._$rangeEndDateCell = this._getCellByDate(value[1]); this._$rangeCells.forEach(($cell => { $cell.addClass("dx-calendar-cell-in-range") })); null === (_this$_$rangeStartDat2 = this._$rangeStartDateCell) || void 0 === _this$_$rangeStartDat2 || _this$_$rangeStartDat2.addClass("dx-calendar-range-start-date"); null === (_this$_$rangeEndDateC2 = this._$rangeEndDateCell) || void 0 === _this$_$rangeEndDateC2 || _this$_$rangeEndDateC2.addClass("dx-calendar-range-end-date") } _renderHoveredRange() { var _this$_$hoveredRangeC2, _this$_$rangeStartHov2, _this$_$rangeEndHover2, _this$_$rangeStartHov3, _this$_$rangeEndHover3; const { allowValueSelection: allowValueSelection, hoveredRange: hoveredRange } = this.option(); if (!allowValueSelection || !this._isRangeMode() || !this._isMonthView()) { return } null === (_this$_$hoveredRangeC2 = this._$hoveredRangeCells) || void 0 === _this$_$hoveredRangeC2 || _this$_$hoveredRangeC2.forEach(($cell => { $cell.removeClass("dx-calendar-cell-range-hover") })); null === (_this$_$rangeStartHov2 = this._$rangeStartHoverCell) || void 0 === _this$_$rangeStartHov2 || _this$_$rangeStartHov2.removeClass("dx-calendar-cell-range-hover-start"); null === (_this$_$rangeEndHover2 = this._$rangeEndHoverCell) || void 0 === _this$_$rangeEndHover2 || _this$_$rangeEndHover2.removeClass("dx-calendar-cell-range-hover-end"); this._$hoveredRangeCells = hoveredRange.map((value => this._getCellByDate(value))); this._$rangeStartHoverCell = this._getCellByDate(hoveredRange[0]); this._$rangeEndHoverCell = this._getCellByDate(hoveredRange[hoveredRange.length - 1]); this._$hoveredRangeCells.forEach(($cell => { $cell.addClass("dx-calendar-cell-range-hover") })); null === (_this$_$rangeStartHov3 = this._$rangeStartHoverCell) || void 0 === _this$_$rangeStartHov3 || _this$_$rangeStartHov3.addClass("dx-calendar-cell-range-hover-start"); null === (_this$_$rangeEndHover3 = this._$rangeEndHoverCell) || void 0 === _this$_$rangeEndHover3 || _this$_$rangeEndHover3.addClass("dx-calendar-cell-range-hover-end") } _isMonthView() { const { zoomLevel: zoomLevel } = this.option(); return "month" === zoomLevel } _isRangeMode() { const { selectionMode: selectionMode } = this.option(); return selectionMode === SELECTION_MODE_range } _getCurrentDateFormat() { return null } getCellAriaLabel(date) { const viewName = this._getViewName(); const isToday = this._isTodayCell(date); const format = this._getCurrentDateFormat(); const dateRangeText = format ? _date.default.format(date, format) : this._getCellText(date); const ariaLabel = isToday ? `${dateRangeText}. ${CURRENT_DATE_TEXT[viewName]}` : dateRangeText; return ariaLabel } _getFirstAvailableDate() { let date = this.option("date"); const min = this.option("min"); date = _date2.default.getViewFirstCellDate(this._getViewName(), date); return new Date(min && date < min ? min : date) } _getCellByDate(contouredDate) { _class.default.abstract() } isBoundary(date) { _class.default.abstract() } _optionChanged(args) { const { name: name, value: value } = args; switch (name) { case "value": this._renderValue(); this._updateTableAriaLabel(); break; case "range": this._renderRange(); break; case "hoveredRange": this._renderHoveredRange(); break; case "contouredDate": this._renderContouredDate(value); break; case "onCellClick": this._createCellClickAction(); break; case "onCellHover": this._createCellHoverAction(); break; case "min": case "max": case "disabledDates": case "cellTemplate": case "selectionMode": this._invalidate(); break; case "_todayDate": this._renderBody(); break; default: super._optionChanged(args) } } } exports.default = BaseView }, 82110: /*!**********************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/ui/calendar/m_calendar.js ***! \**********************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _animation = __webpack_require__( /*! ../../../common/core/animation */ 16826); var _translator = __webpack_require__( /*! ../../../common/core/animation/translator */ 88603); var _events_engine = _interopRequireDefault(__webpack_require__( /*! ../../../common/core/events/core/events_engine */ 92774)); var _swipeable = _interopRequireDefault(__webpack_require__( /*! ../../../common/core/events/gesture/swipeable */ 18278)); var _hover = __webpack_require__( /*! ../../../common/core/events/hover */ 638); var _index = __webpack_require__( /*! ../../../common/core/events/utils/index */ 98834); var _date = _interopRequireDefault(__webpack_require__( /*! ../../../common/core/localization/date */ 38662)); var _message = _interopRequireDefault(__webpack_require__( /*! ../../../common/core/localization/message */ 4671)); var _component_registrator = _interopRequireDefault(__webpack_require__( /*! ../../../core/component_registrator */ 92848)); var _devices = _interopRequireDefault(__webpack_require__( /*! ../../../core/devices */ 65951)); var _guid = _interopRequireDefault(__webpack_require__( /*! ../../../core/guid */ 19427)); var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../../core/renderer */ 64553)); var _function_template = __webpack_require__( /*! ../../../core/templates/function_template */ 38699); var _date2 = _interopRequireDefault(__webpack_require__( /*! ../../../core/utils/date */ 41380)); var _date_serialization = _interopRequireDefault(__webpack_require__( /*! ../../../core/utils/date_serialization */ 71051)); var _extend = __webpack_require__( /*! ../../../core/utils/extend */ 52576); var _math = __webpack_require__( /*! ../../../core/utils/math */ 50254); var _size = __webpack_require__( /*! ../../../core/utils/size */ 57653); var _type = __webpack_require__( /*! ../../../core/utils/type */ 11528); var _window = __webpack_require__( /*! ../../../core/utils/window */ 3104); var _button = _interopRequireDefault(__webpack_require__( /*! ../../../ui/button */ 64973)); var _themes = __webpack_require__( /*! ../../../ui/themes */ 52071); var _editor = _interopRequireDefault(__webpack_require__( /*! ../../ui/editor/editor */ 24768)); var _m_calendarMultipleSelection = _interopRequireDefault(__webpack_require__( /*! ./m_calendar.multiple.selection.strategy */ 56579)); var _m_calendar = _interopRequireDefault(__webpack_require__( /*! ./m_calendar.navigator */ 64357)); var _m_calendarRangeSelection = _interopRequireDefault(__webpack_require__( /*! ./m_calendar.range.selection.strategy */ 43670)); var _m_calendarSingleSelection = _interopRequireDefault(__webpack_require__( /*! ./m_calendar.single.selection.strategy */ 11147)); var _m_calendar2 = _interopRequireDefault(__webpack_require__( /*! ./m_calendar.views */ 17350)); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } function _extends() { return _extends = Object.assign ? Object.assign.bind() : function(n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) { ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]) } } return n }, _extends.apply(null, arguments) } const CALENDAR_DXHOVEREND_EVENT_NAME = (0, _index.addNamespace)(_hover.end, "dxCalendar"); const LEVEL_COMPARE_MAP = { month: 3, year: 2, decade: 1, century: 0 }; const ZOOM_LEVEL_MONTH = "month", ZOOM_LEVEL_YEAR = "year", ZOOM_LEVEL_DECADE = "decade", ZOOM_LEVEL_CENTURY = "century"; const SELECTION_STRATEGIES = { SingleSelection: _m_calendarSingleSelection.default, MultipleSelection: _m_calendarMultipleSelection.default, RangeSelection: _m_calendarRangeSelection.default }; class Calendar extends _editor.default { _getDefaultOptions() { return _extends({}, super._getDefaultOptions(), { hoverStateEnabled: true, activeStateEnabled: true, currentDate: new Date, value: null, min: new Date(1e3, 0), max: new Date(3e3, 0), viewsCount: 1, zoomLevel: ZOOM_LEVEL_MONTH, maxZoomLevel: ZOOM_LEVEL_MONTH, minZoomLevel: ZOOM_LEVEL_CENTURY, selectionMode: "single", selectWeekOnClick: true, showTodayButton: false, showWeekNumbers: false, weekNumberRule: "auto", cellTemplate: "cell", disabledDates: null, onCellClick: null, onContouredChanged: null, skipFocusCheck: false, _todayDate: () => new Date }) } _defaultOptionsRules() { return super._defaultOptionsRules().concat([{ device: () => "desktop" === _devices.default.real().deviceType && !_devices.default.isSimulator(), options: { focusStateEnabled: true } }]) } _supportedKeys() { return _extends({}, super._supportedKeys(), { rightArrow(e) { e.preventDefault(); if ((0, _index.isCommandKeyPressed)(e)) { this._waitRenderView(1) } else { this._moveCurrentDateByOffset(1 * this._getRtlCorrection()) } }, leftArrow(e) { e.preventDefault(); if ((0, _index.isCommandKeyPressed)(e)) { this._waitRenderView(-1) } else { this._moveCurrentDateByOffset(-1 * this._getRtlCorrection()) } }, upArrow(e) { e.preventDefault(); if ((0, _index.isCommandKeyPressed)(e)) { this._navigateUp() } else { if (_animation.fx.isAnimating(this._view.$element())) { return } this._moveCurrentDateByOffset(-1 * this._view.option("colCount")) } }, downArrow(e) { e.preventDefault(); if ((0, _index.isCommandKeyPressed)(e)) { this._navigateDown() } else { if (_animation.fx.isAnimating(this._view.$element())) { return } this._moveCurrentDateByOffset(1 * this._view.option("colCount")) } }, home(e) { e.preventDefault(); const zoomLevel = this.option("zoomLevel"); const currentDate = this.option("currentDate"); const min = this._dateOption("min"); if (this._view.isDateDisabled(currentDate)) { return } const date = _date2.default.sameView(zoomLevel, currentDate, min) ? min : _date2.default.getViewFirstCellDate(zoomLevel, currentDate); this._moveToClosestAvailableDate(date) }, end(e) { e.preventDefault(); const zoomLevel = this.option("zoomLevel"); const currentDate = this.option("currentDate"); const max = this._dateOption("max"); if (this._view.isDateDisabled(currentDate)) { return } const date = _date2.default.sameView(zoomLevel, currentDate, max) ? max : _date2.default.getViewLastCellDate(zoomLevel, currentDate); this._moveToClosestAvailableDate(date) }, pageUp(e) { e.preventDefault(); this._waitRenderView(-1 * this._getRtlCorrection()) }, pageDown(e) { e.preventDefault(); this._waitRenderView(1 * this._getRtlCorrection()) }, tab() {}, enter: this._enterKeyHandler }) } _enterKeyHandler(e) { if (!this._isMaxZoomLevel()) { this._navigateDown() } else if (!this._view.isDateDisabled(this.option("currentDate"))) { const value = this._updateTimeComponent(this.option("currentDate")); this._selectionStrategy.selectValue(value, e) } } _getSerializationFormat(optionName) { const value = this.option(optionName || "value"); if (this.option("dateSerializationFormat")) { return this.option("dateSerializationFormat") } if ((0, _type.isNumeric)(value)) { return "number" } if (!(0, _type.isString)(value)) { return } return _date_serialization.default.getDateSerializationFormat(value) } _convertToDate(value) { return _date_serialization.default.deserializeDate(value) } _dateValue(value, event) { if (event) { if ("keydown" === event.type) { const cellElement = this._view._getContouredCell().get(0); event.target = cellElement } this._saveValueChangeEvent(event) } this._dateOption("value", value) } _dateOption(optionName, optionValue) { const isArray = "value" === optionName && !this._isSingleMode(); const value = this.option("value"); if (1 === arguments.length) { return isArray ? (value ?? []).map((value => this._convertToDate(value))) : this._convertToDate(this.option(optionName)) } const serializationFormat = this._getSerializationFormat(optionName); const serializedValue = isArray ? (null === optionValue || void 0 === optionValue ? void 0 : optionValue.map((value => _date_serialization.default.serializeDate(value, serializationFormat)))) || [] : _date_serialization.default.serializeDate(optionValue, serializationFormat); this.option(optionName, serializedValue) } _isSingleMode() { const { selectionMode: selectionMode } = this.option(); return "single" === selectionMode } _shiftDate(zoomLevel, date, offset, reverse) { switch (zoomLevel) { case ZOOM_LEVEL_MONTH: date.setDate(date.getDate() + offset * reverse); break; case ZOOM_LEVEL_YEAR: date.setMonth(date.getMonth() + offset * reverse); break; case ZOOM_LEVEL_DECADE: date.setFullYear(date.getFullYear() + offset * reverse); break; case ZOOM_LEVEL_CENTURY: date.setFullYear(date.getFullYear() + 10 * offset * reverse) } } _moveCurrentDateByOffset(offset) { const baseDate = this.option("currentDate"); let currentDate = new Date(baseDate); const zoomLevel = this.option("zoomLevel"); this._shiftDate(zoomLevel, currentDate, offset, 1); const maxDate = this._getMaxDate(); const minDate = this._getMinDate(); let isDateForwardInNeighborView = this._areDatesInNeighborView(zoomLevel, currentDate, baseDate); let isDateForwardInRange = (0, _math.inRange)(currentDate, minDate, maxDate) && isDateForwardInNeighborView; const dateForward = new Date(currentDate); while (isDateForwardInRange) { if (!this._view.isDateDisabled(dateForward)) { currentDate = dateForward; break } this._shiftDate(zoomLevel, dateForward, offset, 1); isDateForwardInNeighborView = this._areDatesInNeighborView(zoomLevel, dateForward, baseDate); isDateForwardInRange = (0, _math.inRange)(dateForward, minDate, maxDate) && isDateForwardInNeighborView } if (this._view.isDateDisabled(baseDate) || this._view.isDateDisabled(currentDate)) { const direction = offset > 0 ? 1 : -1; const isViewDisabled = 1 === direction ? this._isNextViewDisabled() : this._isPrevViewDisabled(); if (!isViewDisabled) { this._waitRenderView(direction) } else { this._moveToClosestAvailableDate(currentDate) } } else { this._skipNavigate = true; this.option("currentDate", currentDate) } } _isNextViewDisabled() { return this._navigator._nextButton.option("disabled") } _isPrevViewDisabled() { return this._navigator._prevButton.option("disabled") } _areDatesInSameView(zoomLevel, date1, date2) { switch (zoomLevel) { case ZOOM_LEVEL_MONTH: return date1.getMonth() === date2.getMonth(); case ZOOM_LEVEL_YEAR: return date1.getYear() === date2.getYear(); case ZOOM_LEVEL_DECADE: return parseInt(date1.getYear() / 10) === parseInt(date2.getYear() / 10); case ZOOM_LEVEL_CENTURY: return parseInt(date1.getYear() / 100) === parseInt(date2.getYear() / 100) } } _areDatesInNeighborView(zoomLevel, date1, date2) { switch (zoomLevel) { case ZOOM_LEVEL_MONTH: return ((a, b) => { const abs = Math.abs(a - b); return Math.min(abs, 12 - abs) })(date1.getMonth(), date2.getMonth()) <= 1; case ZOOM_LEVEL_YEAR: return Math.abs(date1.getYear() - date2.getYear()) <= 1; case ZOOM_LEVEL_DECADE: return Math.abs(date1.getYear() - date2.getYear()) <= 10; case ZOOM_LEVEL_CENTURY: return Math.abs(date1.getYear() - date2.getYear()) <= 100 } } _moveToClosestAvailableDate() { let baseDate = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : this.option("currentDate"); let currentDate = new Date(baseDate); const zoomLevel = this.option("zoomLevel"); const isCurrentDateAvailable = !this._isDateNotAvailable(currentDate); let isDateForwardAvailable = isCurrentDateAvailable; let isDateBackwardAvailable = isCurrentDateAvailable; let isDateForwardInStartView; let isDateBackwardInStartView; const dateForward = new Date(currentDate); const dateBackward = new Date(currentDate); do { if (isDateForwardAvailable) { currentDate = dateForward; break } if (isDateBackwardAvailable) { currentDate = dateBackward; break } this._shiftDate(zoomLevel, dateForward, 1, 1); this._shiftDate(zoomLevel, dateBackward, 1, -1); isDateForwardInStartView = this._areDatesInSameView(zoomLevel, dateForward, baseDate); isDateBackwardInStartView = this._areDatesInSameView(zoomLevel, dateBackward, baseDate); isDateForwardAvailable = isDateForwardInStartView && !this._isDateNotAvailable(dateForward); isDateBackwardAvailable = isDateBackwardInStartView && !this._isDateNotAvailable(dateBackward) } while (isDateForwardInStartView || isDateBackwardInStartView); this.option("currentDate", currentDate) } _isDateNotAvailable(date) { const maxDate = this._getMaxDate(); const minDate = this._getMinDate(); return !(0, _math.inRange)(date, minDate, maxDate) || this._view.isDateDisabled(date) } _init() { super._init(); this._activeStateUnit = ".dx-calendar-cell"; this._initSelectionStrategy(); this._correctZoomLevel(); this._initCurrentDate(); this._initActions() } _initSelectionStrategy() { const strategyName = this._getSelectionStrategyName(); const strategy = SELECTION_STRATEGIES[strategyName]; if (!this._selectionStrategy || this._selectionStrategy.NAME !== strategyName) { this._selectionStrategy = new strategy(this) } } _refreshSelectionStrategy() { this._initSelectionStrategy(); this._selectionStrategy.restoreValue(); this._refresh() } _getSelectionStrategyName() { const { selectionMode: selectionMode } = this.option(); switch (selectionMode) { case "multiple": return "MultipleSelection"; case "range": return "RangeSelection"; default: return "SingleSelection" } } _correctZoomLevel() { const { minZoomLevel: minZoomLevel, maxZoomLevel: maxZoomLevel, zoomLevel: zoomLevel } = this.option(); if (LEVEL_COMPARE_MAP[maxZoomLevel] < LEVEL_COMPARE_MAP[minZoomLevel]) { return } if (LEVEL_COMPARE_MAP[zoomLevel] > LEVEL_COMPARE_MAP[maxZoomLevel]) { this.option("zoomLevel", maxZoomLevel) } else if (LEVEL_COMPARE_MAP[zoomLevel] < LEVEL_COMPARE_MAP[minZoomLevel]) { this.option("zoomLevel", minZoomLevel) } } _initCurrentDate() { const currentDate = this._getNormalizedDate(this._selectionStrategy.getDefaultCurrentDate()) ?? this._getNormalizedDate(this.option("currentDate")); this.option("currentDate", currentDate) } _getNormalizedDate(date) { date = _date2.default.normalizeDate(date, this._getMinDate(), this._getMaxDate()); return (0, _type.isDefined)(date) ? this._getDate(date) : date } _initActions() { this._cellClickAction = this._createActionByOption("onCellClick"); this._onContouredChanged = this._createActionByOption("onContouredChanged") } _initTemplates() { this._templateManager.addDefaultTemplates({ cell: new _function_template.FunctionTemplate((options => { const data = options.model; (0, _renderer.default)(options.container).append((0, _renderer.default)("<span>").text((null === data || void 0 === data ? void 0 : data.text) || String(data))) })) }); super._initTemplates() } _updateCurrentDate(date) { if (_animation.fx.isAnimating(this._$viewsWrapper)) { _animation.fx.stop(this._$viewsWrapper, true) } const min = this._getMinDate(); const max = this._getMaxDate(); if (min > max) { this.option("currentDate", new Date); return } const normalizedDate = this._getNormalizedDate(date); if (date.getTime() !== normalizedDate.getTime()) { this.option("currentDate", new Date(normalizedDate)); return } let offset = this._getViewsOffset(this._view.option("date"), normalizedDate); if (0 !== offset && !this._isMaxZoomLevel() && this._isOtherViewCellClicked) { offset = 0 } if (this._view && 0 !== offset && !this._suppressNavigation) { if (this._additionalView) { if (offset > 2 || offset < -1) { this._refreshViews(); this._setViewContoured(normalizedDate); this._updateAriaId(normalizedDate); this._renderNavigator() } else if (1 === offset && this._skipNavigate) { this._setViewContoured(normalizedDate); this._updateAriaId(normalizedDate) } else { this._navigate(offset, normalizedDate) } } else { this._navigate(offset, normalizedDate) } } else { this._renderNavigator(); this._setViewContoured(normalizedDate); this._updateAriaId(normalizedDate) } this._skipNavigate = false } _isAdditionalViewDate(date) { if (!this._additionalView) { return false } return date >= this._additionalView._getFirstAvailableDate() } _getActiveView(date) { return this._isAdditionalViewDate(date) ? this._additionalView : this._view } _setViewContoured(date) { if (this.option("skipFocusCheck") || (0, _renderer.default)(this._$viewsWrapper).is(":focus")) { var _this$_additionalView; this._view.option("contouredDate", null); null === (_this$_additionalView = this._additionalView) || void 0 === _this$_additionalView || _this$_additionalView.option("contouredDate", null); const view = this._isAdditionalViewDate(date) ? this._additionalView : this._view; view.option("contouredDate", date) } } _getMinDate() { const _rangeMin = this.option("_rangeMin"); if (_rangeMin) { return _rangeMin } if (this.min) { return this.min } this.min = this._dateOption("min") || new Date(1e3, 0); return this.min } _getMaxDate() { const _rangeMax = this.option("_rangeMax"); if (_rangeMax) { return _rangeMax } if (this.max) { return this.max } this.max = this._dateOption("max") || new Date(3e3, 0); return this.max } _getViewsOffset(startDate, endDate) { const { zoomLevel: zoomLevel } = this.option(); if (zoomLevel === ZOOM_LEVEL_MONTH) { return this._getMonthsOffset(startDate, endDate) } let zoomCorrection; switch (zoomLevel) { case ZOOM_LEVEL_CENTURY: zoomCorrection = 100; break; case ZOOM_LEVEL_DECADE: zoomCorrection = 10; break; default: zoomCorrection = 1 } return parseInt(endDate.getFullYear() / zoomCorrection) - parseInt(startDate.getFullYear() / zoomCorrection) } _getMonthsOffset(startDate, endDate) { const yearOffset = endDate.getFullYear() - startDate.getFullYear(); const monthOffset = endDate.getMonth() - startDate.getMonth(); return 12 * yearOffset + monthOffset } _waitRenderView(offset) { if (this._alreadyViewRender) { return } this._alreadyViewRender = true; const date = this._getDateByOffset(offset * this._getRtlCorrection()); this._moveToClosestAvailableDate(date); this._waitRenderViewTimeout = setTimeout((() => { this._alreadyViewRender = false })) } _getRtlCorrection() { return this.option("rtlEnabled") ? -1 : 1 } _getDateByOffset(offset, date) { date = this._getDate(date ?? this.option("currentDate")); const currentDay = date.getDate(); const difference = _date2.default.getDifferenceInMonth(this.option("zoomLevel")) * offset; date.setDate(1); date.setMonth(date.getMonth() + difference); const lastDay = _date2.default.getLastMonthDate(date).getDate(); date.setDate(currentDay > lastDay ? lastDay : currentDay); return date } _focusTarget() { return this._$viewsWrapper } _focusEventTarget() { return this.$element() } _initMarkup() { this._renderSubmitElement(); const $element = this.$element(); $element.addClass("dx-calendar"); const { selectionMode: selectionMode } = this.option(); $element.toggleClass("dx-calendar-range", "range" === selectionMode); this._renderBody(); $element.append(this.$body); this._renderViews(); this._renderNavigator(); super._initMarkup(); this._renderEvents(); $element.prepend(this._navigator.$element()); this._renderSwipeable(); this._renderFooter(); this._selectionStrategy.updateAriaSelected(); this._updateAriaId(); this._updateNavigatorLabels(); this.setAria("role", "application"); this._updateAriaLabelAndRole(); this._moveToClosestAvailableDate() } _render() { super._render(); this._setViewContoured(this.option("currentDate")) } _renderBody() { if (!this._$viewsWrapper) { this.$body = (0, _renderer.default)("<div>").addClass("dx-calendar-body"); this._$viewsWrapper = (0, _renderer.default)("<div>").addClass("dx-calendar-views-wrapper"); this.$body.append(this._$viewsWrapper) } } _updateAriaLabelAndRole() { const readOnly = this.option("readOnly"); const $element = this.$element(); const aria = { role: readOnly ? "group" : void 0, label: readOnly ? _message.default.format("dxCalendar-readOnlyLabel") : void 0 }; this.setAria(aria, $element) } _setAriaReadonly() {} _getKeyboardListeners() { return super._getKeyboardListeners().concat([this._view]) } _renderViews() { const { zoomLevel: zoomLevel } = this.option(); this.$element().addClass(`dx-calendar-view-${zoomLevel}`); const { currentDate: currentDate, viewsCount: viewsCount } = this.option(); this.$element().toggleClass("dx-calendar-multiview", viewsCount > 1); this._view = this._renderSpecificView(currentDate); if ((0, _window.hasWindow)()) { const beforeDate = this._getDateByOffset(-1, currentDate); this._beforeView = this._isViewAvailable(beforeDate) ? this._renderSpecificView(beforeDate) : null; const afterDate = this._getDateByOffset(viewsCount, currentDate); afterDate.setDate(1); this._afterView = this._isViewAvailable(afterDate) ? this._renderSpecificView(afterDate) : null } if (viewsCount > 1) { this._additionalView = this._renderSpecificView(this._getDateByOffset(1, currentDate)) } this._translateViews() } _renderSpecificView(date) { const { zoomLevel: zoomLevel } = this.option(); const specificView = _m_calendar2.default[zoomLevel]; const $view = (0, _renderer.default)("<div>").appendTo(this._$viewsWrapper); const config = this._viewConfig(date); const view = this._createComponent($view, specificView, config); return view } _viewConfig(date) { let disabledDates = this.option("disabledDates"); disabledDates = (0, _type.isFunction)(disabledDates) ? this._injectComponent(disabledDates.bind(this)) : disabledDates; return _extends({}, this._selectionStrategy.getViewOptions(), { date: date, min: this._getMinDate(), max: this._getMaxDate(), firstDayOfWeek: this.option("firstDayOfWeek") ?? _date.default.firstDayOfWeekIndex(), showWeekNumbers: this.option("showWeekNumbers"), selectWeekOnClick: this.option("selectWeekOnClick"), weekNumberRule: this.option("weekNumberRule"), zoomLevel: this.option("zoomLevel"), tabIndex: void 0, focusStateEnabled: this.option("focusStateEnabled"), hoverStateEnabled: this.option("hoverStateEnabled"), disabledDates: disabledDates, onCellClick: this._cellClickHandler.bind(this), cellTemplate: this._getTemplateByOption("cellTemplate"), allowValueSelection: this._isMaxZoomLevel(), _todayDate: this.option("_todayDate") }) } _renderEvents() { _events_engine.default.off(this._$viewsWrapper, CALENDAR_DXHOVEREND_EVENT_NAME); const { selectionMode: selectionMode } = this.option(); if ("range" === selectionMode) { _events_engine.default.on(this._$viewsWrapper, CALENDAR_DXHOVEREND_EVENT_NAME, null, (() => { this._updateViewsOption("hoveredRange", []) })) } } _injectComponent(func) { const that = this; return function(params) { (0, _extend.extend)(params, { component: that }); return func(params) } } _isViewAvailable(date) { const zoomLevel = this.option("zoomLevel"); const min = _date2.default.getViewMinBoundaryDate(zoomLevel, this._getMinDate()); const max = _date2.default.getViewMaxBoundaryDate(zoomLevel, this._getMaxDate()); return _date2.default.dateInRange(date, min, max) } _translateViews() { const { viewsCount: viewsCount } = this.option(); (0, _translator.move)(this._view.$element(), { left: 0, top: 0 }); this._moveViewElement(this._beforeView, -1); this._moveViewElement(this._afterView, viewsCount); this._moveViewElement(this._additionalView, 1) } _moveViewElement(view, coefficient) { view && (0, _translator.move)(view.$element(), { left: this._getViewPosition(coefficient), top: 0 }) } _getViewPosition(coefficient) { const rtlCorrection = this.option("rtlEnabled") ? -1 : 1; return 100 * coefficient * rtlCorrection + "%" } _cellClickHandler(e) { const zoomLevel = this.option("zoomLevel"); const nextView = _date2.default.getViewDown(zoomLevel); const isMaxZoomLevel = this._isMaxZoomLevel(); if (nextView && !isMaxZoomLevel) { this._navigateDown(e.event.currentTarget) } else { var _this$_cellClickActio; const newValue = this._updateTimeComponent(e.value); this._selectionStrategy.selectValue(newValue, e.event); null === (_this$_cellClickActio = this._cellClickAction) || void 0 === _this$_cellClickActio || _this$_cellClickActio.call(this, e) } } _updateTimeComponent(date) { const result = new Date(date); const currentValue = this._dateOption("value"); if (currentValue && this._isSingleMode()) { result.setHours(currentValue.getHours()); result.setMinutes(currentValue.getMinutes()); result.setSeconds(currentValue.getSeconds()); result.setMilliseconds(currentValue.getMilliseconds()) } return result } _isMaxZoomLevel() { return this.option("zoomLevel") === this.option("maxZoomLevel") } _navigateDown(cell) { const zoomLevel = this.option("zoomLevel"); if (this._isMaxZoomLevel()) { return } const nextView = _date2.default.getViewDown(zoomLevel); if (!nextView) { return } let newCurrentDate = this._view.option("contouredDate") || this._view.option("date"); if (cell) { newCurrentDate = (0, _renderer.default)(cell).data("dxDateValueKey") } this._isOtherViewCellClicked = true; this.option("currentDate", newCurrentDate); this.option("zoomLevel", nextView); this._isOtherViewCellClicked = false; this._renderNavigator(); this._animateShowView(); this._moveToClosestAvailableDate(); this._setViewContoured(this._getNormalizedDate(this.option("currentDate"))) } _renderNavigator() { if (!this._navigator) { this._navigator = new _m_calendar.default((0, _renderer.default)("<div>"), this._navigatorConfig()) } this._navigator.option("text", this._getViewsCaption(this._view, this._additionalView)); this._updateButtonsVisibility() } _navigatorConfig() { const { focusStateEnabled: focusStateEnabled, rtlEnabled: rtlEnabled } = this.option(); return { text: this._getViewsCaption(this._view, this._additionalView), onClick: this._navigatorClickHandler.bind(this), onCaptionClick: this._navigateUp.bind(this), focusStateEnabled: focusStateEnabled, rtlEnabled: rtlEnabled, tabIndex: void 0 } } _navigatorClickHandler(e) { const { currentDate: currentDate, viewsCount: viewsCount } = this.option(); let offset = e.direction; if (viewsCount > 1) { const additionalViewActive = this._isAdditionalViewDate(currentDate); const shouldDoubleOffset = additionalViewActive && offset < 0 || !additionalViewActive && offset > 0; if (shouldDoubleOffset) { offset *= 2 } } const newCurrentDate = this._getDateByOffset(offset, currentDate); this._moveToClosestAvailableDate(newCurrentDate) } _navigateUp() { const zoomLevel = this.option("zoomLevel"); const nextView = _date2.default.getViewUp(zoomLevel); if (!nextView || this._isMinZoomLevel(zoomLevel)) { return } this.option("zoomLevel", nextView); this._renderNavigator(); this._animateShowView(); this._moveToClosestAvailableDate(); this._setViewContoured(this._getNormalizedDate(this.option("currentDate"))) } _isMinZoomLevel(zoomLevel) { const min = this._getMinDate(); const max = this._getMaxDate(); return _date2.default.sameView(zoomLevel, min, max) || this.option("minZoomLevel") === zoomLevel } _updateButtonsVisibility() { this._navigator.toggleButton("next", !(0, _type.isDefined)(this._afterView)); this._navigator.toggleButton("prev", !(0, _type.isDefined)(this._beforeView)) } _renderSwipeable() { if (!this._swipeable) { this._swipeable = this._createComponent(this.$element(), _swipeable.default, { onStart: this._swipeStartHandler.bind(this), onUpdated: this._swipeUpdateHandler.bind(this), onEnd: this._swipeEndHandler.bind(this), itemSizeFunc: this._viewWidth.bind(this) }) } } _swipeStartHandler(e) { _animation.fx.stop(this._$viewsWrapper, true); const { viewsCount: viewsCount } = this.option(); this._toggleGestureCoverCursor("grabbing"); e.event.maxLeftOffset = this._getRequiredView("next") ? 1 / viewsCount : 0; e.event.maxRightOffset = this._getRequiredView("prev") ? 1 / viewsCount : 0 } _toggleGestureCoverCursor(cursor) { (0, _renderer.default)(".dx-gesture-cover").css("cursor", cursor) } _getRequiredView(name) { let view; const isRtl = this.option("rtlEnabled"); if ("next" === name) { view = isRtl ? this._beforeView : this._afterView } else if ("prev" === name) { view = isRtl ? this._afterView : this._beforeView } return view } _swipeUpdateHandler(e) { const { offset: offset } = e.event; (0, _translator.move)(this._$viewsWrapper, { left: offset * this._viewWidth(), top: 0 }); this._updateNavigatorCaption(offset) } _swipeEndHandler(e) { this._toggleGestureCoverCursor("auto"); const { currentDate: currentDate, rtlEnabled: rtlEnabled } = this.option(); const { targetOffset: targetOffset } = e.event; const moveOffset = !targetOffset ? 0 : targetOffset / Math.abs(targetOffset); const isAdditionalViewActive = this._isAdditionalViewDate(currentDate); const shouldDoubleOffset = isAdditionalViewActive && (rtlEnabled ? -1 === moveOffset : 1 === moveOffset); if (0 === moveOffset) { this._animateWrapper(0, 250); return } const offset = -moveOffset * this._getRtlCorrection() * (shouldDoubleOffset ? 2 : 1); let date = this._getDateByOffset(offset); if (this._isDateInInvalidRange(date)) { if (moveOffset >= 0) { date = new Date(this._getMinDate()) } else { date = new Date(this._getMaxDate()) } } this.option("currentDate", date) } _viewWidth() { if (!this._viewWidthValue) { const { viewsCount: viewsCount } = this.option(); this._viewWidthValue = (0, _size.getWidth)(this.$element()) / viewsCount } return this._viewWidthValue } _updateNavigatorCaption(offset) { offset *= this._getRtlCorrection(); const { viewsCount: viewsCount } = this.option(); const isMultiView = viewsCount > 1; let view; let additionalView; if (offset > .5 && this._beforeView) { view = this._beforeView; additionalView = isMultiView && this._view } else if (offset < -.5 && this._afterView) { view = isMultiView ? this._additionalView : this._afterView; additionalView = isMultiView ? this._afterView : null } else { view = this._view; additionalView = isMultiView ? this._additionalView : null } this._navigator.option("text", this._getViewsCaption(view, additionalView)) } _getViewsCaption(view, additionalView) { let caption = view.getNavigatorCaption(); const { viewsCount: viewsCount } = this.option(); if (viewsCount > 1 && additionalView) { const additionalViewCaption = additionalView.getNavigatorCaption(); caption = `${caption} - ${additionalViewCaption}` } return caption } _isDateInInvalidRange(date) { if (this._view.isBoundary(date)) { return } const min = this._getMinDate(); const max = this._getMaxDate(); const normalizedDate = _date2.default.normalizeDate(date, min, max); return normalizedDate === min || normalizedDate === max } _renderFooter() { const showTodayButton = this.option("showTodayButton"); if (showTodayButton) { const $todayButton = this._createComponent((0, _renderer.default)("<div>"), _button.default, { focusStateEnabled: this.option("focusStateEnabled"), text: _message.default.format("dxCalendar-todayButtonText"), onClick: args => { this._toTodayView(args) }, type: (0, _themes.isFluent)() ? "normal" : "default", stylingMode: (0, _themes.isFluent)() ? "outlined" : "text", integrationOptions: {} }).$element().addClass("dx-calendar-today-button"); this._$footer = (0, _renderer.default)("<div>").addClass("dx-calendar-footer").append($todayButton); this.$element().append(this._$footer) } this.$element().toggleClass("dx-calendar-with-footer", showTodayButton) } _renderSubmitElement() { this._$submitElement = (0, _renderer.default)("<input>").attr("type", "hidden").appendTo(this.$element()); this._setSubmitValue(this.option("value")) } _setSubmitValue(value) { const dateValue = this._convertToDate(value); this._getSubmitElement().val(_date_serialization.default.serializeDate(dateValue, "yyyy-MM-dd")) } _getSubmitElement() { return this._$submitElement } _animateShowView() { _animation.fx.stop(this._view.$element(), true); this._popAnimationView(this._view, .6, 1, 250); const { viewsCount: viewsCount } = this.option(); if (viewsCount > 1) { _animation.fx.stop(this._additionalView.$element(), true); this._popAnimationView(this._additionalView, .6, 1, 250) } } _popAnimationView(view, from, to, duration) { return _animation.fx.animate(view.$element(), { type: "pop", from: { scale: from, opacity: from }, to: { scale: to, opacity: to }, duration: duration }) } _navigate(offset, value) { if (0 !== offset && 1 !== Math.abs(offset) && this._isViewAvailable(value)) { const newView = this._renderSpecificView(value); if (offset > 0) { var _this$_afterView; null === (_this$_afterView = this._afterView) || void 0 === _this$_afterView || _this$_afterView.$element().remove(); this._afterView = newView } else { var _this$_beforeView; null === (_this$_beforeView = this._beforeView) || void 0 === _this$_beforeView || _this$_beforeView.$element().remove(); this._beforeView = newView } this._translateViews() } const rtlCorrection = this._getRtlCorrection(); const offsetSign = offset > 0 ? 1 : offset < 0 ? -1 : 0; const endPosition = -rtlCorrection * offsetSign * this._viewWidth(); const viewsWrapperPosition = this._$viewsWrapper.position().left; if (viewsWrapperPosition !== endPosition) { if (this._preventViewChangeAnimation) { this._wrapperAnimationEndHandler(offset, value) } else { this._animateWrapper(endPosition, 250).done(this._wrapperAnimationEndHandler.bind(this, offset, value)) } } } _animateWrapper(to, duration) { return _animation.fx.animate(this._$viewsWrapper, { type: "slide", from: { left: this._$viewsWrapper.position().left }, to: { left: to }, duration: duration }) } _getDate(value) { return new Date(value) } _toTodayView(args) { const today = new Date; if (this._isMaxZoomLevel()) { this._selectionStrategy.selectValue(today, args.event); return } this._preventViewChangeAnimation = true; this.option("zoomLevel", this.option("maxZoomLevel")); this._selectionStrategy.selectValue(today, args.event); this._animateShowView(); this._preventViewChangeAnimation = false } _wrapperAnimationEndHandler(offset, newDate) { this._rearrangeViews(offset); this._translateViews(); this._resetLocation(); this._renderNavigator(); this._setViewContoured(newDate); this._updateAriaId(newDate); this._selectionStrategy.updateAriaSelected() } _rearrangeViews(offset) { var _this$viewToRemoveKey; if (0 === offset) { return } const { viewsCount: viewsCount } = this.option(); let viewOffset; let viewToCreateKey; let viewToRemoveKey; let viewBeforeCreateKey; let viewAfterRemoveKey; if (offset < 0) { viewOffset = 1; viewToCreateKey = "_beforeView"; viewToRemoveKey = "_afterView"; viewBeforeCreateKey = "_view"; viewAfterRemoveKey = 1 === viewsCount ? "_view" : "_additionalView" } else { viewOffset = -1; viewToCreateKey = "_afterView"; viewToRemoveKey = "_beforeView"; viewBeforeCreateKey = 1 === viewsCount ? "_view" : "_additionalView"; viewAfterRemoveKey = "_view" } if (!this[viewToCreateKey]) { return } const destinationDate = this[viewToCreateKey].option("date"); null === (_this$viewToRemoveKey = this[viewToRemoveKey]) || void 0 === _this$viewToRemoveKey || _this$viewToRemoveKey.$element().remove(); this[viewToRemoveKey] = this._renderSpecificView(this._getDateByOffset(viewOffset * viewsCount, destinationDate)); this[viewAfterRemoveKey].$element().remove(); if (1 === viewsCount) { this[viewAfterRemoveKey] = this[viewToCreateKey] } else { this[viewAfterRemoveKey] = this[viewBeforeCreateKey]; this[viewBeforeCreateKey] = this[viewToCreateKey] } const dateByOffset = this._getDateByOffset(-viewOffset, destinationDate); this[viewToCreateKey] = this._isViewAvailable(dateByOffset) ? this._renderSpecificView(dateByOffset) : null } _resetLocation() { (0, _translator.move)(this._$viewsWrapper, { left: 0, top: 0 }) } _clean() { super._clean(); this._clearViewWidthCache(); delete this._$viewsWrapper; delete this._navigator; delete this._$footer } _clearViewWidthCache() { delete this._viewWidthValue } _disposeViews() { var _this$_beforeView2, _this$_additionalView2, _this$_afterView2; this._view.$element().remove(); null === (_this$_beforeView2 = this._beforeView) || void 0 === _this$_beforeView2 || _this$_beforeView2.$element().remove(); null === (_this$_additionalView2 = this._additionalView) || void 0 === _this$_additionalView2 || _this$_additionalView2.$element().remove(); null === (_this$_afterView2 = this._afterView) || void 0 === _this$_afterView2 || _this$_afterView2.$element().remove(); delete this._view; delete this._additionalView; delete this._beforeView; delete this._afterView; delete this._skipNavigate } _dispose() { clearTimeout(this._waitRenderViewTimeout); super._dispose() } _refreshViews() { this._resetActiveState(); this._disposeViews(); this._renderViews() } _visibilityChanged() { this._translateViews() } _shouldSkipFocusEvent(event) { const { target: target, relatedTarget: relatedTarget } = event; return (0, _renderer.default)(target).parents(".dx-calendar").length && (0, _renderer.default)(relatedTarget).parents(".dx-calendar").length } _focusInHandler(event) { if ((0, _renderer.default)(event.target).is(this._$viewsWrapper)) { this._setViewContoured(this.option("currentDate")) } if (this._shouldSkipFocusEvent(event)) { return } super._focusInHandler.apply(this, arguments); this._toggleFocusClass(true, this.$element()) } _focusOutHandler(event) { if ((0, _renderer.default)(event.target).is(this._$viewsWrapper)) { var _this$_additionalView3; this._view.option("contouredDate", null); null === (_this$_additionalView3 = this._additionalView) || void 0 === _this$_additionalView3 || _this$_additionalView3.option("contouredDate", null) } if (this._shouldSkipFocusEvent(event)) { return } super._focusOutHandler.apply(this, arguments); this._toggleFocusClass(false, this.$element()) } _updateViewsOption(optionName, newValue) { var _this$_additionalView4, _this$_beforeView3, _this$_afterView3; this._view.option(optionName, newValue); null === (_this$_additionalView4 = this._additionalView) || void 0 === _this$_additionalView4 || _this$_additionalView4.option(optionName, newValue); null === (_this$_beforeView3 = this._beforeView) || void 0 === _this$_beforeView3 || _this$_beforeView3.option(optionName, newValue); null === (_this$_afterView3 = this._afterView) || void 0 === _this$_afterView3 || _this$_afterView3.option(optionName, newValue) } _setViewsMinOption(min) { this._restoreViewsMinMaxOptions(); this.option("_rangeMin", this._convertToDate(min)); this._updateViewsOption("min", this._getMinDate()) } _setViewsMaxOption(max) { this._restoreViewsMinMaxOptions(); this.option("_rangeMax", this._convertToDate(max)); this._updateViewsOption("max", this._getMaxDate()) } _restoreViewsMinMaxOptions() { this._resetActiveState(); this.option({ _rangeMin: null, _rangeMax: null }); this._updateViewsOption("min", this._getMinDate()); this._updateViewsOption("max", this._getMaxDate()) } _updateNavigatorLabels() { let { zoomLevel: zoomLevel } = this.option(); zoomLevel = zoomLevel.charAt(0).toUpperCase() + zoomLevel.slice(1); const captionButtonText = this._navigator._caption.option("text"); const localizedPrevButtonLabel = _message.default.format(`dxCalendar-previous${zoomLevel}ButtonLabel`); const localizedCaptionLabel = _message.default.format(`dxCalendar-caption${zoomLevel}Label`); const localizedNextButtonLabel = _message.default.format(`dxCalendar-next${zoomLevel}ButtonLabel`); this.setAria("label", localizedPrevButtonLabel, this._navigator._prevButton.$element()); this.setAria("label", `${captionButtonText}. ${localizedCaptionLabel}`, this._navigator._caption.$element()); this.setAria("label", localizedNextButtonLabel, this._navigator._nextButton.$element()) } _updateAriaSelected(value, previousValue) { previousValue.forEach((item => { this.setAria("selected", false, this._view._getCellByDate(item)) })); value.forEach((item => { this.setAria("selected", true, this._view._getCellByDate(item)) })); const { viewsCount: viewsCount } = this.option(); if (viewsCount > 1) { previousValue.forEach((item => { this.setAria("selected", false, this._additionalView._getCellByDate(item)) })); value.forEach((item => { this.setAria("selected", true, this._additionalView._getCellByDate(item)) })) } } _updateAriaId(value) { var _this$_onContouredCha; value = value ?? this.option("currentDate"); const ariaId = `dx-${new _guid.default}`; const view = this._getActiveView(value); const $newCell = view._getCellByDate(value); this.setAria("id", ariaId, $newCell); this.setAria("activedescendant", ariaId); null === (_this$_onContouredCha = this._onContouredChanged) || void 0 === _this$_onContouredCha || _this$_onContouredCha.call(this, ariaId) } _suppressingNavigation(callback, args) { this._suppressNavigation = true; callback.apply(this, args); delete this._suppressNavigation } _optionChanged(args) { const { value: value, previousValue: previousValue } = args; switch (args.name) { case "width": super._optionChanged(args); this._clearViewWidthCache(); break; case "min": case "max": this.min = void 0; this.max = void 0; this._suppressingNavigation(this._updateCurrentDate, [this.option("currentDate")]); this._refreshViews(); this._renderNavigator(); break; case "selectionMode": this._refreshSelectionStrategy(); this._initCurrentDate(); break; case "selectWeekOnClick": case "_todayDate": case "showWeekNumbers": case "weekNumberRule": this._refreshViews(); break; case "firstDayOfWeek": this._refreshViews(); this._updateButtonsVisibility(); break; case "focusStateEnabled": case "disabledDates": case "dateSerializationFormat": case "cellTemplate": case "showTodayButton": this._invalidate(); break; case "currentDate": this.setAria("id", void 0, this._view._getCellByDate(previousValue)); this._updateCurrentDate(value); break; case "zoomLevel": this.$element().removeClass(`dx-calendar-view-${previousValue}`); this._correctZoomLevel(); this._refreshViews(); this._renderNavigator(); this._updateAriaId(); this._updateNavigatorLabels(); break; case "minZoomLevel": case "maxZoomLevel": this._correctZoomLevel(); this._updateButtonsVisibility(); break; case "value": { const isSameValue = _date2.default.sameDatesArrays(value, previousValue); if (!isSameValue) { this._selectionStrategy.processValueChanged(value, previousValue) } this._setSubmitValue(value); super._optionChanged(args); break } case "viewsCount": this._refreshViews(); this._renderNavigator(); break; case "onCellClick": this._view.option("onCellClick", value); break; case "onContouredChanged": this._onContouredChanged = this._createActionByOption("onContouredChanged"); break; case "readOnly": super._optionChanged(args); this._updateAriaLabelAndRole(); break; case "skipFocusCheck": break; default: super._optionChanged(args) } } getContouredDate() { const { contouredDate: contouredDate } = this._view.option(); return contouredDate } }(0, _component_registrator.default)("dxCalendar", Calendar); exports.default = Calendar }, 56579: /*!**************************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/ui/calendar/m_calendar.multiple.selection.strategy.js ***! \**************************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _m_calendarSelection = (e = __webpack_require__( /*! ./m_calendar.selection.strategy */ 68139), e && e.__esModule ? e : { default: e }); var e; class CalendarMultiSelectionStrategy extends _m_calendarSelection.default { constructor(component) { super(component); this.NAME = "MultiSelection" } getViewOptions() { return { value: this.dateOption("value"), range: [], selectionMode: "multiple", onWeekNumberClick: this._shouldHandleWeekNumberClick() ? this._weekNumberClickHandler.bind(this) : null } } selectValue(selectedValue, e) { const value = [...this.dateOption("value")]; const alreadySelectedIndex = value.findIndex((date => (null === date || void 0 === date ? void 0 : date.toDateString()) === selectedValue.toDateString())); if (alreadySelectedIndex > -1) { value.splice(alreadySelectedIndex, 1) } else { value.push(selectedValue) } this.skipNavigate(); this._updateCurrentDate(selectedValue); this._currentDateChanged = true; this.dateValue(value, e) } updateAriaSelected(value, previousValue) { value ?? (value = this.dateOption("value")); previousValue ?? (previousValue = []); super.updateAriaSelected(value, previousValue) } getDefaultCurrentDate() { const dates = this.dateOption("value").filter(Boolean); return this._getLowestDateInArray(dates) } restoreValue() { this.calendar.option("value", []) } _weekNumberClickHandler(_ref) { let { rowDates: rowDates, event: event } = _ref; const selectedDates = rowDates.filter((date => !this._isDateDisabled(date))); this.dateValue(selectedDates, event) } } exports.default = CalendarMultiSelectionStrategy }, 64357: /*!********************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/ui/calendar/m_calendar.navigator.js ***! \********************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../../core/renderer */ 64553)); var _button = _interopRequireDefault(__webpack_require__( /*! ../../../ui/button */ 64973)); var _themes = __webpack_require__( /*! ../../../ui/themes */ 52071); var _widget = _interopRequireDefault(__webpack_require__( /*! ../../core/widget/widget */ 89275)); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } function _extends() { return _extends = Object.assign ? Object.assign.bind() : function(n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) { ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]) } } return n }, _extends.apply(null, arguments) } class Navigator extends _widget.default { _getDefaultOptions() { return _extends({}, super._getDefaultOptions(), { onClick: void 0, onCaptionClick: void 0, type: "normal", stylingMode: "outlined", text: "" }) } _defaultOptionsRules() { return super._defaultOptionsRules().concat([{ device: () => (0, _themes.isMaterial)(), options: { type: "default", stylingMode: "text" } }, { device: () => (0, _themes.isFluent)(), options: { type: "normal", stylingMode: "text" } }]) } _init() { super._init(); this._initActions() } _initActions() { this._clickAction = this._createActionByOption("onClick"); this._captionClickAction = this._createActionByOption("onCaptionClick") } _initMarkup() { super._initMarkup(); (0, _renderer.default)(this.element()).addClass("dx-calendar-navigator"); this._renderButtons(); this._renderCaption() } _renderButtons() { const { rtlEnabled: rtlEnabled, type: type, stylingMode: stylingMode, focusStateEnabled: focusStateEnabled } = this.option(); this._prevButton = this._createComponent((0, _renderer.default)("<div>"), _button.default, { focusStateEnabled: focusStateEnabled, icon: rtlEnabled ? "chevronright" : "chevronleft", onClick: e => { var _this$_clickAction; null === (_this$_clickAction = this._clickAction) || void 0 === _this$_clickAction || _this$_clickAction.call(this, { direction: -1, event: e }) }, type: type, stylingMode: stylingMode, integrationOptions: {} }); const $prevButton = (0, _renderer.default)(this._prevButton.element()).addClass("dx-calendar-navigator-previous-view").addClass("dx-calendar-navigator-previous-month"); this._nextButton = this._createComponent((0, _renderer.default)("<div>"), _button.default, { focusStateEnabled: focusStateEnabled, icon: rtlEnabled ? "chevronleft" : "chevronright", onClick: e => { var _this$_clickAction2; null === (_this$_clickAction2 = this._clickAction) || void 0 === _this$_clickAction2 || _this$_clickAction2.call(this, { direction: 1, event: e }) }, type: type, stylingMode: stylingMode, integrationOptions: {} }); const $nextButton = (0, _renderer.default)(this._nextButton.element()).addClass("dx-calendar-navigator-next-view").addClass("dx-calendar-navigator-next-month"); this._caption = this._createComponent((0, _renderer.default)("<div>").addClass("dx-calendar-caption-button"), _button.default, { focusStateEnabled: focusStateEnabled, onClick: e => { var _this$_captionClickAc; null === (_this$_captionClickAc = this._captionClickAction) || void 0 === _this$_captionClickAc || _this$_captionClickAc.call(this, { event: e }) }, type: type, stylingMode: stylingMode, template: (_, content) => { const { text: text } = this.option(); const viewCaptionTexts = text.split(" - "); viewCaptionTexts.forEach((captionText => { (0, _renderer.default)(content).append((0, _renderer.default)("<span>").addClass("dx-button-text").text(captionText)) })) }, integrationOptions: {} }); const $caption = this._caption.$element(); this.$element().append($prevButton).append($caption).append($nextButton) } _renderCaption() { var _this$_caption; const { text: text } = this.option(); null === (_this$_caption = this._caption) || void 0 === _this$_caption || _this$_caption.option("text", text) } toggleButton(buttonPrefix, value) { const buttonName = `_${buttonPrefix}Button`; const button = this[buttonName]; if (button) { button.option("disabled", value); button.$element().toggleClass("dx-calendar-disabled-navigator-link", value) } } _optionChanged(args) { if ("text" === args.name) { this._renderCaption() } else { super._optionChanged(args) } } } exports.default = Navigator }, 43670: /*!***********************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/ui/calendar/m_calendar.range.selection.strategy.js ***! \***********************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _date = _interopRequireDefault(__webpack_require__( /*! ../../../core/utils/date */ 41380)); var _m_calendarSelection = _interopRequireDefault(__webpack_require__( /*! ./m_calendar.selection.strategy */ 68139)); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } class CalendarRangeSelectionStrategy extends _m_calendarSelection.default { constructor(component) { super(component); this.NAME = "RangeSelection" } getViewOptions() { const value = this._getValue(); const range = this._getDaysInRange(value[0], value[1]); return { value: value, range: range, selectionMode: "range", onCellHover: this._cellHoverHandler.bind(this), onWeekNumberClick: this._shouldHandleWeekNumberClick() ? this._weekNumberClickHandler.bind(this) : null } } selectValue(selectedValue, e) { const [startDate, endDate] = this._getValue(); this.skipNavigate(); this._updateCurrentDate(selectedValue); this._currentDateChanged = true; if (true === this.calendar.option("_allowChangeSelectionOrder")) { this.calendar._valueSelected = true; if ("startDate" === this.calendar.option("_currentSelection")) { if (this.calendar._convertToDate(selectedValue) > this.calendar._convertToDate(endDate)) { this.dateValue([selectedValue, null], e) } else { this.dateValue([selectedValue, endDate], e) } } else if (this.calendar._convertToDate(selectedValue) >= this.calendar._convertToDate(startDate)) { this.dateValue([startDate, selectedValue], e) } else { this.dateValue([selectedValue, null], e) } } else if (!startDate || endDate) { this.dateValue([selectedValue, null], e) } else { this.dateValue(startDate < selectedValue ? [startDate, selectedValue] : [selectedValue, startDate], e) } } updateAriaSelected(value, previousValue) { value ?? (value = this._getValue()); previousValue ?? (previousValue = []); super.updateAriaSelected(value, previousValue) } processValueChanged(value, previousValue) { super.processValueChanged(value, previousValue); const range = this._getRange(); this._updateViewsOption("range", range) } getDefaultCurrentDate() { const { _allowChangeSelectionOrder: _allowChangeSelectionOrder, _currentSelection: _currentSelection } = this.calendar.option(); const value = this.dateOption("value"); if (_allowChangeSelectionOrder) { if ("startDate" === _currentSelection && value[0]) { return value[0] } if ("endDate" === _currentSelection && value[1]) { return value[1] } } const dates = value.filter((value => value)); return this._getLowestDateInArray(dates) } restoreValue() { this.calendar.option("value", [null, null]) } _getValue() { const value = this.dateOption("value"); if (!value.length) { return value } let [startDate, endDate] = value; if (startDate && endDate && startDate > endDate) { [startDate, endDate] = [endDate, startDate] } return [startDate, endDate] } _getRange() { const [startDate, endDate] = this._getValue(); return this._getDaysInRange(startDate, endDate) } _getDaysInRange(startDate, endDate) { if (!startDate || !endDate) { return [] } const { currentDate: currentDate, viewsCount: viewsCount } = this.calendar.option(); const isAdditionalViewDate = this.calendar._isAdditionalViewDate(currentDate); const firstDateInViews = _date.default.getFirstMonthDate(currentDate, isAdditionalViewDate ? -2 : -1); const lastDateInViews = _date.default.getLastMonthDate(currentDate, isAdditionalViewDate ? 1 : viewsCount); const rangeStartDate = new Date(Math.max(firstDateInViews, startDate)); const rangeEndDate = new Date(Math.min(lastDateInViews, endDate)); return [..._date.default.getDatesOfInterval(rangeStartDate, rangeEndDate, 864e5), rangeEndDate] } _cellHoverHandler(e) { const isMaxZoomLevel = this._isMaxZoomLevel(); const [startDate, endDate] = this._getValue(); const { _allowChangeSelectionOrder: _allowChangeSelectionOrder, _currentSelection: _currentSelection } = this.calendar.option(); if (isMaxZoomLevel) { const skipHoveredRange = _allowChangeSelectionOrder && "startDate" === _currentSelection; if (startDate && !endDate && !skipHoveredRange) { if (e.value > startDate) { this._updateViewsOption("hoveredRange", this._getDaysInRange(startDate, e.value)); return } } else if (!startDate && endDate && !(_allowChangeSelectionOrder && "endDate" === _currentSelection)) { if (e.value < endDate) { this._updateViewsOption("hoveredRange", this._getDaysInRange(e.value, endDate)); return } } else if (startDate && endDate) { if ("startDate" === _currentSelection && e.value < startDate) { this._updateViewsOption("hoveredRange", this._getDaysInRange(e.value, startDate)); return } if ("endDate" === _currentSelection && e.value > endDate) { this._updateViewsOption("hoveredRange", this._getDaysInRange(endDate, e.value)); return } } this._updateViewsOption("hoveredRange", []) } } _weekNumberClickHandler(_ref) { let { rowDates: rowDates, event: event } = _ref; const selectedDates = rowDates.filter((date => !this._isDateDisabled(date))); const value = selectedDates.length ? [selectedDates[0], selectedDates[selectedDates.length - 1]] : [null, null]; this.dateValue(value, event) } } exports.default = CalendarRangeSelectionStrategy }, 68139: /*!*****************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/ui/calendar/m_calendar.selection.strategy.js ***! \*****************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _date = (e = __webpack_require__( /*! ../../../core/utils/date */ 41380), e && e.__esModule ? e : { default: e }); var e; var _type = __webpack_require__( /*! ../../../core/utils/type */ 11528); exports.default = class { constructor(component) { this.calendar = component } dateOption(optionName) { return this.calendar._dateOption(optionName) } dateValue(value, e) { this.calendar._dateValue(value, e) } skipNavigate() { this.calendar._skipNavigate = true } updateAriaSelected(value, previousValue) { this.calendar._updateAriaSelected(value, previousValue); if (value[0] && this.calendar.option("currentDate").getTime() === value[0].getTime()) { this.calendar._updateAriaId(value[0]) } } processValueChanged(value, previousValue) { var _value, _previousValue; if ((0, _type.isDefined)(value) && !Array.isArray(value)) { value = [value] } if ((0, _type.isDefined)(previousValue) && !Array.isArray(previousValue)) { previousValue = [previousValue] } value = (null === (_value = value) || void 0 === _value ? void 0 : _value.map((item => this._convertToDate(item)))) || []; previousValue = (null === (_previousValue = previousValue) || void 0 === _previousValue ? void 0 : _previousValue.map((item => this._convertToDate(item)))) || []; this._updateViewsValue(value); this.updateAriaSelected(value, previousValue); if (!this._currentDateChanged) { this.calendar._initCurrentDate() } this._currentDateChanged = false } _isDateDisabled(date) { const min = this.calendar._dateOption("min"); const max = this.calendar._dateOption("max"); const isLessThanMin = (0, _type.isDefined)(min) && date < min && !_date.default.sameDate(min, date); const isBiggerThanMax = (0, _type.isDefined)(max) && date > max && !_date.default.sameDate(max, date); return this.calendar._view.isDateDisabled(date) || isLessThanMin || isBiggerThanMax } _getLowestDateInArray(dates) { if (dates.length) { return new Date(Math.min(...dates)) } } _convertToDate(value) { return this.calendar._convertToDate(value) } _isMaxZoomLevel() { return this.calendar._isMaxZoomLevel() } _updateViewsOption(optionName, optionValue) { this.calendar._updateViewsOption(optionName, optionValue) } _updateViewsValue(value) { this._updateViewsOption("value", value) } _updateCurrentDate(value) { this.calendar.option("currentDate", value ?? new Date) } _shouldHandleWeekNumberClick() { const { selectionMode: selectionMode, selectWeekOnClick: selectWeekOnClick } = this.calendar.option(); return selectWeekOnClick && "single" !== selectionMode } } }, 11147: /*!************************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/ui/calendar/m_calendar.single.selection.strategy.js ***! \************************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _m_calendarSelection = (e = __webpack_require__( /*! ./m_calendar.selection.strategy */ 68139), e && e.__esModule ? e : { default: e }); var e; class CalendarSingleSelectionStrategy extends _m_calendarSelection.default { constructor(component) { super(component); this.NAME = "SingleSelection" } getViewOptions() { return { value: this.dateOption("value"), range: [], selectionMode: "single" } } selectValue(selectedValue, e) { this.skipNavigate(); this.dateValue(selectedValue, e) } updateAriaSelected(value, previousValue) { value ?? (value = [this.dateOption("value")]); previousValue ?? (previousValue = []); super.updateAriaSelected(value, previousValue) } getDefaultCurrentDate() { const date = this.dateOption("value"); if ("" === date) { return new Date } return date } restoreValue() { this.calendar.option("value", null) } _updateViewsValue(value) { this._updateViewsOption("value", value[0]) } } exports.default = CalendarSingleSelectionStrategy }, 17350: /*!****************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/ui/calendar/m_calendar.views.js ***! \****************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = exports.YearView = exports.MonthView = exports.DecadeView = exports.CenturyView = void 0; var _date = _interopRequireDefault(__webpack_require__( /*! ../../../common/core/localization/date */ 38662)); var _dom_adapter = _interopRequireDefault(__webpack_require__( /*! ../../../core/dom_adapter */ 64960)); var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../../core/renderer */ 64553)); var _date2 = _interopRequireDefault(__webpack_require__( /*! ../../../core/utils/date */ 41380)); var _date_serialization = _interopRequireDefault(__webpack_require__( /*! ../../../core/utils/date_serialization */ 71051)); var _m_calendar = _interopRequireDefault(__webpack_require__( /*! ./m_calendar.base_view */ 15139)); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } function _extends() { return _extends = Object.assign ? Object.assign.bind() : function(n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) { ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]) } } return n }, _extends.apply(null, arguments) } class MonthView extends _m_calendar.default { _getViewName() { return "month" } _getCurrentDateFormat() { return "longdate" } _getDefaultOptions() { return _extends({}, super._getDefaultOptions(), { firstDayOfWeek: 0, rowCount: 6, colCount: 7 }) } _renderImpl() { super._renderImpl(); this._renderHeader() } _renderBody() { super._renderBody(); this._$table.find(".dx-calendar-other-view").addClass("dx-calendar-other-month") } _renderFocusTarget() {} _renderHeader() { const $headerRow = (0, _renderer.default)("<tr>"); const $header = (0, _renderer.default)("<thead>").append($headerRow); this._$table.prepend($header); const { colCount: columnsCount, showWeekNumbers: showWeekNumbers } = this.option(); for (let colIndex = 0, colCount = columnsCount; colIndex < colCount; colIndex++) { this._renderHeaderCell(colIndex, $headerRow) } if (showWeekNumbers) { this._renderWeekHeaderCell($headerRow) } } _renderHeaderCell(cellIndex, $headerRow) { const { firstDayOfWeek: firstDayOfWeek } = this.option(); const { full: fullCaption, abbreviated: abbrCaption } = this._getDayCaption(firstDayOfWeek + cellIndex); const $cell = (0, _renderer.default)("<th>").attr({ scope: "col", abbr: fullCaption }).text(abbrCaption); $headerRow.append($cell) } _renderWeekHeaderCell($headerRow) { const $weekNumberHeaderCell = (0, _renderer.default)("<th>").attr({ scope: "col", abbr: "WeekNumber", class: "dx-week-number-header" }); $headerRow.prepend($weekNumberHeaderCell) } _renderWeekNumberCell(rowData) { const { showWeekNumbers: showWeekNumbers, cellTemplate: cellTemplate, selectionMode: selectionMode, selectWeekOnClick: selectWeekOnClick } = this.option(); if (!showWeekNumbers) { return } const weekNumber = this._getWeekNumber(rowData.prevCellDate); const cell = _dom_adapter.default.createElement("td"); const $cell = (0, _renderer.default)(cell); cell.className = "dx-calendar-week-number-cell"; if ("single" !== selectionMode && selectWeekOnClick) { $cell.addClass("dx-calendar-week-selection") } if (cellTemplate) { cellTemplate.render(this._prepareCellTemplateData(weekNumber, -1, $cell)) } else { cell.innerHTML = weekNumber } rowData.row.prepend(cell); this.setAria({ role: "gridcell", label: `Week ${weekNumber}` }, $cell) } _getWeekNumber(date) { const { weekNumberRule: weekNumberRule, firstDayOfWeek: firstDayOfWeek } = this.option(); if ("auto" === weekNumberRule) { return _date2.default.getWeekNumber(date, firstDayOfWeek, 1 === firstDayOfWeek ? "firstFourDays" : "firstDay") } return _date2.default.getWeekNumber(date, firstDayOfWeek, weekNumberRule) } getNavigatorCaption() { const { date: date } = this.option(); return _date.default.format(date, "monthandyear") } _isTodayCell(cellDate) { const { _todayDate: today } = this.option(); return _date2.default.sameDate(cellDate, today()) } _isDateOutOfRange(cellDate) { const minDate = this.option("min"); const maxDate = this.option("max"); return !_date2.default.dateInRange(cellDate, minDate, maxDate, "date") } _isOtherView(cellDate) { const { date: date } = this.option(); return cellDate.getMonth() !== date.getMonth() } _isStartDayOfMonth(cellDate) { return _date2.default.sameDate(cellDate, _date2.default.getFirstMonthDate(this.option("date"))) } _isEndDayOfMonth(cellDate) { return _date2.default.sameDate(cellDate, _date2.default.getLastMonthDate(this.option("date"))) } _getCellText(cellDate) { return _date.default.format(cellDate, "d") } _getDayCaption(day) { const { colCount: daysInWeek } = this.option(); const dayIndex = day % daysInWeek; return { full: _date.default.getDayNames()[dayIndex], abbreviated: _date.default.getDayNames("abbreviated")[dayIndex] } } _getFirstCellData() { const { firstDayOfWeek: firstDayOfWeek } = this.option(); const firstDay = _date2.default.getFirstMonthDate(this.option("date")); let firstMonthDayOffset = firstDayOfWeek - firstDay.getDay(); const { colCount: daysInWeek } = this.option(); if (firstMonthDayOffset >= 0) { firstMonthDayOffset -= daysInWeek } firstDay.setDate(firstDay.getDate() + firstMonthDayOffset); return firstDay } _getNextCellData(date) { date = new Date(date); date.setDate(date.getDate() + 1); return date } _getCellByDate(date) { return this._$table.find(`td[data-value='${_date_serialization.default.serializeDate(date,_date2.default.getShortDateFormat())}']`) } isBoundary(date) { return _date2.default.sameMonthAndYear(date, this.option("min")) || _date2.default.sameMonthAndYear(date, this.option("max")) } _getDefaultDisabledDatesHandler(disabledDates) { return function(args) { const isDisabledDate = disabledDates.some((item => _date2.default.sameDate(item, args.date))); if (isDisabledDate) { return true } } } } exports.MonthView = MonthView; class YearView extends _m_calendar.default { _getViewName() { return "year" } _getCurrentDateFormat() { return "monthandyear" } _isTodayCell(cellDate) { const { _todayDate: today } = this.option(); return _date2.default.sameMonthAndYear(cellDate, today()) } _isDateOutOfRange(cellDate) { return !_date2.default.dateInRange(cellDate, _date2.default.getFirstMonthDate(this.option("min")), _date2.default.getLastMonthDate(this.option("max"))) } _isOtherView() { return false } _isStartDayOfMonth() { return false } _isEndDayOfMonth() { return false } _getCellText(cellDate) { return _date.default.getMonthNames("abbreviated")[cellDate.getMonth()] } _getFirstCellData() { const { date: currentDate } = this.option(); const data = new Date(currentDate); data.setDate(1); data.setMonth(0); return data } _getNextCellData(date) { date = new Date(date); date.setMonth(date.getMonth() + 1); return date } _getCellByDate(date) { const foundDate = new Date(date); foundDate.setDate(1); return this._$table.find(`td[data-value='${_date_serialization.default.serializeDate(foundDate,_date2.default.getShortDateFormat())}']`) } getNavigatorCaption() { const { date: date } = this.option(); return _date.default.format(date, "yyyy") } isBoundary(date) { return _date2.default.sameYear(date, this.option("min")) || _date2.default.sameYear(date, this.option("max")) } _renderWeekNumberCell() {} } exports.YearView = YearView; class DecadeView extends _m_calendar.default { _getViewName() { return "decade" } _isTodayCell(cellDate) { const { _todayDate: today } = this.option(); return _date2.default.sameYear(cellDate, today()) } _isDateOutOfRange(cellDate) { const min = this.option("min"); const max = this.option("max"); return !_date2.default.dateInRange(cellDate.getFullYear(), null === min || void 0 === min ? void 0 : min.getFullYear(), null === max || void 0 === max ? void 0 : max.getFullYear()) } _isOtherView(cellDate) { const date = new Date(cellDate); date.setMonth(1); return !_date2.default.sameDecade(date, this.option("date")) } _isStartDayOfMonth() { return false } _isEndDayOfMonth() { return false } _getCellText(cellDate) { return _date.default.format(cellDate, "yyyy") } _getFirstCellData() { const year = _date2.default.getFirstYearInDecade(this.option("date")) - 1; return _date2.default.createDateWithFullYear(year, 0, 1) } _getNextCellData(date) { date = new Date(date); date.setFullYear(date.getFullYear() + 1); return date } getNavigatorCaption() { const { date: currentDate } = this.option(); const firstYearInDecade = _date2.default.getFirstYearInDecade(currentDate); const startDate = new Date(currentDate); const endDate = new Date(currentDate); startDate.setFullYear(firstYearInDecade); endDate.setFullYear(firstYearInDecade + 9); return `${_date.default.format(startDate,"yyyy")}-${_date.default.format(endDate,"yyyy")}` } _isValueOnCurrentView(currentDate, value) { return _date2.default.sameDecade(currentDate, value) } _getCellByDate(date) { const foundDate = new Date(date); foundDate.setDate(1); foundDate.setMonth(0); return this._$table.find(`td[data-value='${_date_serialization.default.serializeDate(foundDate,_date2.default.getShortDateFormat())}']`) } isBoundary(date) { return _date2.default.sameDecade(date, this.option("min")) || _date2.default.sameDecade(date, this.option("max")) } _renderWeekNumberCell() {} } exports.DecadeView = DecadeView; class CenturyView extends _m_calendar.default { _getViewName() { return "century" } _isTodayCell(cellDate) { const { _todayDate: today } = this.option(); return _date2.default.sameDecade(cellDate, today()) } _isDateOutOfRange(cellDate) { const decade = _date2.default.getFirstYearInDecade(cellDate); const minDecade = _date2.default.getFirstYearInDecade(this.option("min")); const maxDecade = _date2.default.getFirstYearInDecade(this.option("max")); return !_date2.default.dateInRange(decade, minDecade, maxDecade) } _isOtherView(cellDate) { const date = new Date(cellDate); date.setMonth(1); return !_date2.default.sameCentury(date, this.option("date")) } _isStartDayOfMonth() { return false } _isEndDayOfMonth() { return false } _getCellText(cellDate) { const startDate = _date.default.format(cellDate, "yyyy"); const endDate = new Date(cellDate); endDate.setFullYear(endDate.getFullYear() + 9); return `${startDate} - ${_date.default.format(endDate,"yyyy")}` } _getFirstCellData() { const decade = _date2.default.getFirstDecadeInCentury(this.option("date")) - 10; return _date2.default.createDateWithFullYear(decade, 0, 1) } _getNextCellData(date) { date = new Date(date); date.setFullYear(date.getFullYear() + 10); return date } _getCellByDate(date) { const foundDate = new Date(date); foundDate.setDate(1); foundDate.setMonth(0); foundDate.setFullYear(_date2.default.getFirstYearInDecade(foundDate)); return this._$table.find(`td[data-value='${_date_serialization.default.serializeDate(foundDate,_date2.default.getShortDateFormat())}']`) } getNavigatorCaption() { const { date: currentDate } = this.option(); const firstDecadeInCentury = _date2.default.getFirstDecadeInCentury(currentDate); const startDate = new Date(currentDate); const endDate = new Date(currentDate); startDate.setFullYear(firstDecadeInCentury); endDate.setFullYear(firstDecadeInCentury + 99); return `${_date.default.format(startDate,"yyyy")}-${_date.default.format(endDate,"yyyy")}` } isBoundary(date) { return _date2.default.sameCentury(date, this.option("min")) || _date2.default.sameCentury(date, this.option("max")) } _renderWeekNumberCell() {} } exports.CenturyView = CenturyView; exports.default = { month: MonthView, year: YearView, decade: DecadeView, century: CenturyView } }, 9716: /*!*****************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/ui/chat/alertlist.js ***! \*****************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _message = _interopRequireDefault(__webpack_require__( /*! ../../../common/core/localization/message */ 4671)); var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../../core/renderer */ 64553)); var _widget = _interopRequireDefault(__webpack_require__( /*! ../../core/widget/widget */ 89275)); var _informer = _interopRequireDefault(__webpack_require__( /*! ../../ui/informer/informer */ 83706)); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } function _extends() { return _extends = Object.assign ? Object.assign.bind() : function(n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) { ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]) } } return n }, _extends.apply(null, arguments) } class AlertList extends _widget.default { _getDefaultOptions() { return _extends({}, super._getDefaultOptions(), { items: [] }) } _initMarkup() { (0, _renderer.default)(this.element()).addClass("dx-chat-alertlist"); super._initMarkup(); const { items: items } = this.option(); this._renderItems(items); this._updateAria() } _renderItems(items) { this._informersInstances = []; if (null !== items && void 0 !== items && items.length) { items.forEach((itemData => { this._renderItem(itemData) })) } } _renderItem(itemData) { const $informer = (0, _renderer.default)("<div>").addClass("dx-chat-alertlist-error"); this.$element().append($informer); const informer = this._createComponent($informer, _informer.default, { text: (null === itemData || void 0 === itemData ? void 0 : itemData.message) ?? "", icon: "errorcircle", showBackground: false }); this._informersInstances.push(informer) } _cleanItems() { this._informersInstances.forEach((informerInstance => { informerInstance.dispose() })) } _updateAria() { const aria = { role: "log", atomic: "false", label: _message.default.format("dxChat-alertListAriaLabel"), live: "polite", relevant: "additions" }; this.setAria(aria) } _clean() { this._cleanItems(); super._clean() } _optionChanged(args) { const { name: name } = args; if ("items" === name) { this._invalidate() } else { super._optionChanged(args) } } } exports.default = AlertList }, 95093: /*!**************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/ui/chat/avatar.js ***! \**************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _message = _interopRequireDefault(__webpack_require__( /*! ../../../common/core/localization/message */ 4671)); var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../../core/renderer */ 64553)); var _type = __webpack_require__( /*! ../../../core/utils/type */ 11528); var _widget = _interopRequireDefault(__webpack_require__( /*! ../../core/widget/widget */ 89275)); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } function _extends() { return _extends = Object.assign ? Object.assign.bind() : function(n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) { ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]) } } return n }, _extends.apply(null, arguments) } class Avatar extends _widget.default { _getDefaultOptions() { return _extends({}, super._getDefaultOptions(), { name: "Unknown User", url: "", alt: "" }) } _initMarkup() { (0, _renderer.default)(this.element()).addClass("dx-avatar"); super._initMarkup(); this._renderAvatarContent() } _renderAvatarContent() { var _this$_$content; null === (_this$_$content = this._$content) || void 0 === _this$_$content || _this$_$content.remove(); if (this._isValuableUrl()) { this._renderImage(); return } this._renderInitials() } _renderImage() { this._renderImageElement(); this._updateUrl(); this._updateAlt() } _renderInitials() { this._renderInitialsElement(); this._updateInitials() } _renderImageElement() { this._$content = (0, _renderer.default)("<img>").addClass("dx-avatar-image").appendTo(this.element()) } _renderInitialsElement() { this._$content = (0, _renderer.default)("<div>").addClass("dx-avatar-initials").appendTo(this.element()) } _updateInitials() { var _this$_$content2; const { name: name } = this.option(); null === (_this$_$content2 = this._$content) || void 0 === _this$_$content2 || _this$_$content2.text(this._getInitials(name)) } _updateUrl() { var _this$_$content3; const { url: url } = this.option(); null === (_this$_$content3 = this._$content) || void 0 === _this$_$content3 || _this$_$content3.attr("src", url ?? "") } _updateAlt() { var _this$_$content4; const { alt: alt, name: name } = this.option(); const altText = alt || name || _message.default.format("dxAvatar-defaultImageAlt"); null === (_this$_$content4 = this._$content) || void 0 === _this$_$content4 || _this$_$content4.attr("alt", altText) } _isValuableUrl() { var _url$trim; const { url: url } = this.option(); const result = !!(null !== url && void 0 !== url && null !== (_url$trim = url.trim) && void 0 !== _url$trim && _url$trim.call(url)); return result } _getInitials(name) { if ((0, _type.isDefined)(name)) { const splitValue = String(name).trim().split(/\s+/); const firstInitial = this._getFirstChar(splitValue[0]); const secondInitial = this._getFirstChar(splitValue[1]); const result = `${firstInitial}${secondInitial}`; return result } return "" } _getFirstChar(value) { return (null === value || void 0 === value ? void 0 : value.charAt(0).toUpperCase()) ?? "" } _optionChanged(args) { const { name: name } = args; switch (name) { case "alt": case "name": case "url": this._renderAvatarContent(); break; default: super._optionChanged(args) } } } exports.default = Avatar }, 61454: /*!************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/ui/chat/chat.js ***! \************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _common = __webpack_require__( /*! ../../../common */ 83077); var _message = _interopRequireDefault(__webpack_require__( /*! ../../../common/core/localization/message */ 4671)); var _component_registrator = _interopRequireDefault(__webpack_require__( /*! ../../../core/component_registrator */ 92848)); var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../../core/renderer */ 64553)); var _type = __webpack_require__( /*! ../../../core/utils/type */ 11528); var _data_helper = _interopRequireDefault(__webpack_require__( /*! ../../../data_helper */ 87755)); var _conditional_invoke = __webpack_require__( /*! ../../core/utils/conditional_invoke */ 93147); var _widget = _interopRequireDefault(__webpack_require__( /*! ../../core/widget/widget */ 89275)); var _alertlist = _interopRequireDefault(__webpack_require__( /*! ../../ui/chat/alertlist */ 9716)); var _confirmationpopup = _interopRequireDefault(__webpack_require__( /*! ../../ui/chat/confirmationpopup */ 96127)); var _messagebox = _interopRequireDefault(__webpack_require__( /*! ../../ui/chat/messagebox */ 17252)); var _messagelist = _interopRequireDefault(__webpack_require__( /*! ../../ui/chat/messagelist */ 51409)); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } function _extends() { return _extends = Object.assign ? Object.assign.bind() : function(n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) { ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]) } } return n }, _extends.apply(null, arguments) } class Chat extends _widget.default { _getDefaultOptions() { return _extends({}, super._getDefaultOptions(), { showDayHeaders: true, activeStateEnabled: true, editing: { allowUpdating: false, allowDeleting: false }, focusStateEnabled: true, hoverStateEnabled: true, items: [], dataSource: null, user: { id: (new _common.Guid).toString() }, dayHeaderFormat: "shortdate", messageTemplate: null, messageTimestampFormat: "shorttime", alerts: [], showAvatar: true, showUserName: true, showMessageTimestamp: true, typingUsers: [], onMessageEntered: void 0, reloadOnChange: true, onTypingStart: void 0, onTypingEnd: void 0, onMessageEditingStart: void 0, onMessageEditCanceled: void 0, onMessageDeleting: void 0, onMessageDeleted: void 0 }) } _init() { super._init(); this._initDataController(); this._refreshDataSource(); this._createMessageEnteredAction(); this._createMessageEditingStartAction(); this._createMessageEditCanceledAction(); this._createMessageDeletingAction(); this._createMessageDeletedAction(); this._createMessageUpdatingAction(); this._createMessageUpdatedAction(); this._createTypingStartAction(); this._createTypingEndAction() } _dataSourceLoadErrorHandler() { this.option("items", []) } _dataSourceChangedHandler(newItems, e) { if (null !== e && void 0 !== e && e.changes) { this._messageList._modifyByChanges(e.changes); this._setOptionWithoutOptionChange("items", newItems.slice()); this._messageList._setOptionWithoutOptionChange("items", newItems.slice()); this._messageList._toggleEmptyView() } else { this.option("items", newItems.slice()) } } _dataSourceLoadingChangedHandler(isLoading) { var _this$_messageList; null === (_this$_messageList = this._messageList) || void 0 === _this$_messageList || _this$_messageList.option("isLoading", isLoading) } _dataSourceOptions() { return { paginate: false } } _initMarkup() { (0, _renderer.default)(this.element()).addClass("dx-chat"); super._initMarkup(); this._renderMessageList(); this._renderAlertList(); this._renderMessageBox(); this._updateRootAria(); this._updateMessageBoxAria() } _renderMessageList() { const $messageList = (0, _renderer.default)("<div>"); this.$element().append($messageList); this._messageList = this._createComponent($messageList, _messagelist.default, this._getMessageListOptions()) } _getMessageListOptions() { const { items: items = [], user: user, showDayHeaders: showDayHeaders = false, showAvatar: showAvatar = false, showUserName: showUserName = false, showMessageTimestamp: showMessageTimestamp = false, dayHeaderFormat: dayHeaderFormat, messageTimestampFormat: messageTimestampFormat, typingUsers: typingUsers = [] } = this.option(); const isLoading = this._dataController.isLoading(); const currentUserId = null === user || void 0 === user ? void 0 : user.id; const options = { items: items, currentUserId: currentUserId, allowUpdating: message => this._allowEditAction(message), allowDeleting: message => this._allowDeleteAction(message), isEditActionDisabled: message => this._messageToEdit === message, messageTemplate: this._getMessageTemplate(), showDayHeaders: showDayHeaders, showAvatar: showAvatar, showUserName: showUserName, showMessageTimestamp: showMessageTimestamp, dayHeaderFormat: dayHeaderFormat, messageTimestampFormat: messageTimestampFormat, typingUsers: typingUsers, isLoading: isLoading, onMessageEditingStart: e => { this._messageEditingStartHandler(e); return () => this.focus() }, onMessageDeleting: e => { this._messageDeletingHandler(e) }, onEscapeKeyPressed: () => { this.focus() } }; return options } _allowEditAction(message) { const { editing: editing } = this.option(); if (!editing) { return false } const { allowUpdating: allowUpdating } = editing; if ("function" === typeof allowUpdating) { return allowUpdating({ component: this, message: message }) } return allowUpdating ?? false } _allowDeleteAction(message) { const { editing: editing } = this.option(); if (!editing) { return false } const { allowDeleting: allowDeleting } = editing; if ("function" === typeof allowDeleting) { return allowDeleting({ component: this, message: message }) } return allowDeleting ?? false } _getMessageTemplate() { const { messageTemplate: messageTemplate } = this.option(); if (messageTemplate) { return (message, $container) => { const template = this._getTemplateByOption("messageTemplate"); template.render({ container: $container, model: { component: this, message: message } }) } } return null } _messageEditingStartHandler(e) { var _this$_messageEditing; if (this._messageToEdit) { var _this$_messageEditCan; null === (_this$_messageEditCan = this._messageEditCanceledAction) || void 0 === _this$_messageEditCan || _this$_messageEditCan.call(this, { message: this._messageToEdit }) } const messageEditingStartArgs = { message: e.message, cancel: false }; null === (_this$_messageEditing = this._messageEditingStartAction) || void 0 === _this$_messageEditing || _this$_messageEditing.call(this, messageEditingStartArgs); (0, _conditional_invoke.invokeConditionally)(messageEditingStartArgs.cancel, (() => { this._messageBox.option("text", e.message.text); this._messageToEdit = e.message })) } _messageEditCanceledHandler() { if (this._messageToEdit) { var _this$_messageEditCan2; null === (_this$_messageEditCan2 = this._messageEditCanceledAction) || void 0 === _this$_messageEditCan2 || _this$_messageEditCan2.call(this, { message: this._messageToEdit }); this._messageToEdit = void 0 } } _showDeleteConfirmationPopup(e) { this._messageToDelete = e.message; if (!this._deleteConfirmationPopup) { this._deleteConfirmationPopup = new _confirmationpopup.default(this.$element(), { onApplyButtonClick: () => { var _this$_messageDeleted; if (this._messageToEdit === this._messageToDelete) { var _this$_messageEditCan3; this._messageBox.option("text", ""); null === (_this$_messageEditCan3 = this._messageEditCanceledAction) || void 0 === _this$_messageEditCan3 || _this$_messageEditCan3.call(this, { message: this._messageToEdit }); this._messageToEdit = void 0 } null === (_this$_messageDeleted = this._messageDeletedAction) || void 0 === _this$_messageDeleted || _this$_messageDeleted.call(this, { message: this._messageToDelete }) }, rtlEnabled: this.option().rtlEnabled, onHidden: () => { this._messageToDelete = void 0; this._focusTarget()[0].focus() } }) } this._deleteConfirmationPopup.show() } _messageDeletingHandler(e) { var _this$_messageDeletin; const { message: message } = e; const messageDeletingArgs = { message: message, cancel: false }; null === (_this$_messageDeletin = this._messageDeletingAction) || void 0 === _this$_messageDeletin || _this$_messageDeletin.call(this, messageDeletingArgs); (0, _conditional_invoke.invokeConditionally)(messageDeletingArgs.cancel, (() => { this._showDeleteConfirmationPopup(messageDeletingArgs) })) } _messageUpdatingHandler(e) { var _this$_messageUpdatin; const { text: text } = e; const eventArgs = { message: this._messageToEdit, text: text, cancel: false }; null === (_this$_messageUpdatin = this._messageUpdatingAction) || void 0 === _this$_messageUpdatin || _this$_messageUpdatin.call(this, eventArgs); (0, _conditional_invoke.invokeConditionally)(eventArgs.cancel, (() => { var _this$_messageUpdated; this._messageBox.option("text", ""); null === (_this$_messageUpdated = this._messageUpdatedAction) || void 0 === _this$_messageUpdated || _this$_messageUpdated.call(this, eventArgs); this._messageToEdit = void 0 })) } _renderAlertList() { const $errors = (0, _renderer.default)("<div>"); this.$element().append($errors); const { alerts: alerts = [] } = this.option(); this._alertList = this._createComponent($errors, _alertlist.default, { items: alerts }) } _renderMessageBox() { const { activeStateEnabled: activeStateEnabled, focusStateEnabled: focusStateEnabled, hoverStateEnabled: hoverStateEnabled } = this.option(); const $messageBox = (0, _renderer.default)("<div>"); this.$element().append($messageBox); const configuration = { activeStateEnabled: activeStateEnabled, focusStateEnabled: focusStateEnabled, hoverStateEnabled: hoverStateEnabled, onMessageEntered: e => { this._messageEnteredHandler(e) }, onTypingStart: e => { this._typingStartHandler(e) }, onTypingEnd: () => { this._typingEndHandler() }, onMessageEditCanceled: () => { this._messageEditCanceledHandler() }, onMessageUpdating: e => { this._messageUpdatingHandler(e) } }; this._messageBox = this._createComponent($messageBox, _messagebox.default, configuration) } _updateRootAria() { const aria = { role: "group", label: _message.default.format("dxChat-elementAriaLabel") }; this.setAria(aria, this.$element()) } _updateMessageBoxAria() { const emptyViewId = this._messageList.getEmptyViewId(); this._messageBox.updateInputAria(emptyViewId) } _createMessageEnteredAction() { this._messageEnteredAction = this._createActionByOption("onMessageEntered", { excludeValidators: ["disabled"] }) } _createMessageEditingStartAction() { this._messageEditingStartAction = this._createActionByOption("onMessageEditingStart", { excludeValidators: ["disabled"] }) } _createMessageEditCanceledAction() { this._messageEditCanceledAction = this._createActionByOption("onMessageEditCanceled", { excludeValidators: ["disabled"] }) } _createMessageDeletingAction() { this._messageDeletingAction = this._createActionByOption("onMessageDeleting", { excludeValidators: ["disabled"] }) } _createMessageDeletedAction() { this._messageDeletedAction = this._createActionByOption("onMessageDeleted", { excludeValidators: ["disabled"] }) } _createMessageUpdatingAction() { this._messageUpdatingAction = this._createActionByOption("onMessageUpdating", { excludeValidators: ["disabled"] }) } _createMessageUpdatedAction() { this._messageUpdatedAction = this._createActionByOption("onMessageUpdated", { excludeValidators: ["disabled"] }) } _createTypingStartAction() { this._typingStartAction = this._createActionByOption("onTypingStart", { excludeValidators: ["disabled"] }) } _createTypingEndAction() { this._typingEndAction = this._createActionByOption("onTypingEnd", { excludeValidators: ["disabled"] }) } _messageEnteredHandler(e) { var _this$_messageEntered; const { text: text, event: event } = e; const { user: user } = this.option(); const message = { timestamp: new Date, author: user, text: text }; const dataSource = this.getDataSource(); if ((0, _type.isDefined)(dataSource)) { dataSource.store().insert(message).done((() => { const { reloadOnChange: reloadOnChange } = this.option(); if (reloadOnChange) { dataSource.reload() } })) } null === (_this$_messageEntered = this._messageEnteredAction) || void 0 === _this$_messageEntered || _this$_messageEntered.call(this, { message: message, event: event }) } _typingStartHandler(e) { var _this$_typingStartAct; const { event: event } = e; const { user: user } = this.option(); null === (_this$_typingStartAct = this._typingStartAction) || void 0 === _this$_typingStartAct || _this$_typingStartAct.call(this, { user: user, event: event }) } _typingEndHandler() { var _this$_typingEndActio; const { user: user } = this.option(); null === (_this$_typingEndActio = this._typingEndAction) || void 0 === _this$_typingEndActio || _this$_typingEndActio.call(this, { user: user }) } _focusTarget() { const $input = (0, _renderer.default)(this.element()).find(".dx-texteditor-input"); return $input } _optionChanged(args) { const { name: name, value: value } = args; switch (name) { case "activeStateEnabled": case "focusStateEnabled": case "hoverStateEnabled": this._messageBox.option(name, value); break; case "user": { const author = value; this._messageList.option("currentUserId", null === author || void 0 === author ? void 0 : author.id); break } case "editing": case "reloadOnChange": break; case "items": this._messageList.option(name, this.option("items")); this._updateMessageBoxAria(); break; case "dataSource": this._refreshDataSource(); break; case "alerts": this._alertList.option("items", value ?? []); break; case "onMessageEntered": this._createMessageEnteredAction(); break; case "onMessageUpdating": case "onMessageUpdated": case "onMessageEditCanceled": this._createMessageEditCanceledAction(); break; case "onMessageEditingStart": this._createMessageEditingStartAction(); break; case "onMessageDeleting": this._createMessageDeletingAction(); break; case "onMessageDeleted": this._createMessageDeletedAction(); break; case "onTypingStart": this._createTypingStartAction(); break; case "onTypingEnd": this._createTypingEndAction(); break; case "showDayHeaders": case "showAvatar": case "showUserName": case "showMessageTimestamp": this._messageList.option(name, !!value); break; case "dayHeaderFormat": case "messageTimestampFormat": case "typingUsers": this._messageList.option(name, value); break; case "messageTemplate": this._messageList.option(name, this._getMessageTemplate()); break; default: super._optionChanged(args) } } _insertNewItem(item) { const { items: items } = this.option(); const newItems = [...items ?? [], item]; this.option("items", newItems) } renderMessage() { let message = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {}; this._insertNewItem(message) } _dispose() { var _this$_deleteConfirma; null === (_this$_deleteConfirma = this._deleteConfirmationPopup) || void 0 === _this$_deleteConfirma || _this$_deleteConfirma.dispose(); super._dispose() } } Chat.include(_data_helper.default); (0, _component_registrator.default)("dxChat", Chat); exports.default = Chat }, 96127: /*!*************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/ui/chat/confirmationpopup.js ***! \*************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = exports.CHAT_CONFIRMATION_POPUP_WRAPPER_CLASS = void 0; var _events_engine = _interopRequireDefault(__webpack_require__( /*! ../../../common/core/events/core/events_engine */ 92774)); var _guid = _interopRequireDefault(__webpack_require__( /*! ../../../core/guid */ 19427)); var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../../core/renderer */ 64553)); var _extend = __webpack_require__( /*! ../../../core/utils/extend */ 52576); var _message = _interopRequireDefault(__webpack_require__( /*! ../../../localization/message */ 33881)); var _popup = _interopRequireDefault(__webpack_require__( /*! ../../../ui/popup */ 97643)); var _button = __webpack_require__( /*! ../../ui/button/button */ 59310); const _excluded = ["onApplyButtonClick", "onCancelButtonClick"]; function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } function _extends() { return _extends = Object.assign ? Object.assign.bind() : function(n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) { ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]) } } return n }, _extends.apply(null, arguments) } const CHAT_CONFIRMATION_POPUP_WRAPPER_CLASS = exports.CHAT_CONFIRMATION_POPUP_WRAPPER_CLASS = "dx-chat-confirmation-popup-wrapper"; exports.default = class { constructor($container, config) { this._$container = $container; const _ref = config ?? {}, { onApplyButtonClick: onApplyButtonClick, onCancelButtonClick: onCancelButtonClick } = _ref, popupConfig = function(r, e) { if (null == r) { return {} } var t = {}; for (var n in r) { if ({}.hasOwnProperty.call(r, n)) { if (e.includes(n)) { continue } t[n] = r[n] } } return t }(_ref, _excluded); this._actions = { onApplyButtonClick: onApplyButtonClick, onCancelButtonClick: onCancelButtonClick }; this._popupConfig = popupConfig; this._renderPopup() } _renderPopup() { const $popupContainer = (0, _renderer.default)("<div>").appendTo(this._$container); this._popup = new _popup.default($popupContainer.get(0), this._getPopupConfig()) } _getPopupConfig() { const messageId = (new _guid.default).toString(); const $message = (0, _renderer.default)("<div>").html(_message.default.format("dxChat-editingDeleteConfirmText")).attr("id", messageId); return (0, _extend.extend)(_extends({ width: 240, height: "auto", showTitle: false, showCloseButton: false, shading: true, dragEnabled: false, hideOnOutsideClick: true, toolbarItems: this._getToolbarItems(), onContentReady(args) { args.component.$content().append($message); args.component.$overlayContent().attr("aria-labelledby", messageId) }, onShown: e => { const $firstButton = e.component.bottomToolbar().find(`.${_button.BUTTON_CLASS}`).first(); _events_engine.default.trigger($firstButton, "focus") }, wrapperAttr: { class: CHAT_CONFIRMATION_POPUP_WRAPPER_CLASS }, focusStateEnabled: true, position: { my: "center", at: "center", of: this._$container } }, this._popupConfig)) } _getApplyButtonConfig() { return { widget: "dxButton", toolbar: "bottom", location: "before", options: { text: _message.default.format("Yes"), type: "default", stylingMode: "contained", onClick: () => { var _this$_actions, _this$_actions$onAppl; null === (_this$_actions = this._actions) || void 0 === _this$_actions || null === (_this$_actions$onAppl = _this$_actions.onApplyButtonClick) || void 0 === _this$_actions$onAppl || _this$_actions$onAppl.call(_this$_actions); this._popup.hide() } } } } _getCancelButtonConfig() { return { widget: "dxButton", toolbar: "bottom", location: "after", options: { text: _message.default.format("No"), type: "normal", stylingMode: "outlined", onClick: () => { var _this$_actions2, _this$_actions2$onCan; null === (_this$_actions2 = this._actions) || void 0 === _this$_actions2 || null === (_this$_actions2$onCan = _this$_actions2.onCancelButtonClick) || void 0 === _this$_actions2$onCan || _this$_actions2$onCan.call(_this$_actions2); this._popup.hide() } } } } _getToolbarItems() { return [this._getApplyButtonConfig(), this._getCancelButtonConfig()] } show() { this._popup.show() } dispose() { this._popup.dispose() } } }, 63497: /*!***********************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/ui/chat/editing_preview.js ***! \***********************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = exports.CHAT_EDITING_PREVIEW_TEXT_CLASS = exports.CHAT_EDITING_PREVIEW_HIDING_CLASS = exports.CHAT_EDITING_PREVIEW_CONTENT_CLASS = exports.CHAT_EDITING_PREVIEW_CLASS = exports.CHAT_EDITING_PREVIEW_CAPTION_CLASS = exports.CHAT_EDITING_PREVIEW_CANCEL_BUTTON_CLASS = void 0; var _message = _interopRequireDefault(__webpack_require__( /*! ../../../common/core/localization/message */ 4671)); var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../../core/renderer */ 64553)); var _button = _interopRequireDefault(__webpack_require__( /*! ../../../ui/button */ 64973)); var _dom_component = _interopRequireDefault(__webpack_require__( /*! ../../core/widget/dom_component */ 22331)); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } function _extends() { return _extends = Object.assign ? Object.assign.bind() : function(n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) { ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]) } } return n }, _extends.apply(null, arguments) } const CHAT_EDITING_PREVIEW_CLASS = exports.CHAT_EDITING_PREVIEW_CLASS = "dx-chat-editing-preview"; const CHAT_EDITING_PREVIEW_HIDING_CLASS = exports.CHAT_EDITING_PREVIEW_HIDING_CLASS = "dx-chat-editing-preview-hiding"; const CHAT_EDITING_PREVIEW_CONTENT_CLASS = exports.CHAT_EDITING_PREVIEW_CONTENT_CLASS = "dx-chat-editing-preview-content"; const CHAT_EDITING_PREVIEW_CAPTION_CLASS = exports.CHAT_EDITING_PREVIEW_CAPTION_CLASS = "dx-chat-editing-preview-caption"; const CHAT_EDITING_PREVIEW_TEXT_CLASS = exports.CHAT_EDITING_PREVIEW_TEXT_CLASS = "dx-chat-editing-preview-text"; const CHAT_EDITING_PREVIEW_CANCEL_BUTTON_CLASS = exports.CHAT_EDITING_PREVIEW_CANCEL_BUTTON_CLASS = "dx-chat-editing-preview-cancel-button"; class EditingPreview extends _dom_component.default { _getDefaultOptions() { return _extends({}, super._getDefaultOptions(), { activeStateEnabled: true, focusStateEnabled: true, hoverStateEnabled: true, text: "", onCancel: void 0 }) } _init() { super._init(); (0, _renderer.default)(this.element()).addClass(CHAT_EDITING_PREVIEW_CLASS) } _initMarkup() { super._initMarkup(); const { text: text } = this.option(); if (text) { this._renderContent(); return } this._cleanContent() } _renderContent() { this._renderMessagePreview(); this._updateText(); this._renderCloseButton() } _renderMessagePreview() { const $message = (0, _renderer.default)("<div>").addClass(CHAT_EDITING_PREVIEW_CONTENT_CLASS).appendTo(this.element()); (0, _renderer.default)("<div>").addClass(CHAT_EDITING_PREVIEW_CAPTION_CLASS).text(_message.default.format("dxChat-editingMessageCaption")).appendTo($message); this._$messageText = (0, _renderer.default)("<div>").addClass(CHAT_EDITING_PREVIEW_TEXT_CLASS).appendTo($message) } _updateText() { const { text: text = "" } = this.option(); this._$messageText.text(text) } _renderCloseButton() { const { onCancel: onCancel, activeStateEnabled: activeStateEnabled, focusStateEnabled: focusStateEnabled, hoverStateEnabled: hoverStateEnabled } = this.option(); const $button = (0, _renderer.default)("<div>").addClass(CHAT_EDITING_PREVIEW_CANCEL_BUTTON_CLASS).appendTo(this.element()); this._closeButton = this._createComponent($button, _button.default, { activeStateEnabled: activeStateEnabled, focusStateEnabled: focusStateEnabled, hoverStateEnabled: hoverStateEnabled, icon: "remove", type: "normal", stylingMode: "text", elementAttr: { "aria-label": _message.default.format("dxChat-cancelEditingButtonAriaLabel") }, onClick: e => { null === onCancel || void 0 === onCancel || onCancel(e) } }) } _processTextUpdate(previousValue) { const { text: text = "" } = this.option(); if (previousValue && text) { this._updateText(); return } if (text) { this._renderContent(); return } this.$element().get(0).addEventListener("animationend", (() => { this._cleanContent() }), { once: true }); this.$element().addClass(CHAT_EDITING_PREVIEW_HIDING_CLASS) } _cleanContent() { super._dispose(); this.$element().remove() } _optionChanged(args) { const { name: name, value: value, previousValue: previousValue } = args; switch (name) { case "activeStateEnabled": case "focusStateEnabled": case "hoverStateEnabled": this._closeButton.option(name, value); break; case "text": this._processTextUpdate(previousValue); break; case "onCancel": this._closeButton.option("onClick", value); break; default: super._optionChanged(args) } } } exports.default = EditingPreview }, 17252: /*!******************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/ui/chat/messagebox.js ***! \******************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = exports.TYPING_END_DELAY = exports.CHAT_MESSAGEBOX_TEXTAREA_CLASS = exports.CHAT_MESSAGEBOX_INPUT_CONTAINER_CLASS = exports.CHAT_MESSAGEBOX_CLASS = exports.CHAT_MESSAGEBOX_BUTTON_CLASS = void 0; var _message = _interopRequireDefault(__webpack_require__( /*! ../../../common/core/localization/message */ 4671)); var _devices = _interopRequireDefault(__webpack_require__( /*! ../../../core/devices */ 65951)); var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../../core/renderer */ 64553)); var _button = _interopRequireDefault(__webpack_require__( /*! ../../../ui/button */ 64973)); var _dom_component = _interopRequireDefault(__webpack_require__( /*! ../../core/widget/dom_component */ 22331)); var _editing_preview = _interopRequireDefault(__webpack_require__( /*! ../../ui/chat/editing_preview */ 63497)); var _m_text_area = _interopRequireDefault(__webpack_require__( /*! ../../ui/m_text_area */ 36234)); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } function _extends() { return _extends = Object.assign ? Object.assign.bind() : function(n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) { ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]) } } return n }, _extends.apply(null, arguments) } const CHAT_MESSAGEBOX_CLASS = exports.CHAT_MESSAGEBOX_CLASS = "dx-chat-messagebox"; const CHAT_MESSAGEBOX_INPUT_CONTAINER_CLASS = exports.CHAT_MESSAGEBOX_INPUT_CONTAINER_CLASS = "dx-chat-messagebox-input-container"; const CHAT_MESSAGEBOX_TEXTAREA_CLASS = exports.CHAT_MESSAGEBOX_TEXTAREA_CLASS = "dx-chat-messagebox-textarea"; const CHAT_MESSAGEBOX_BUTTON_CLASS = exports.CHAT_MESSAGEBOX_BUTTON_CLASS = "dx-chat-messagebox-button"; const TYPING_END_DELAY = exports.TYPING_END_DELAY = 2e3; const isMobile = () => "desktop" !== _devices.default.current().deviceType; class MessageBox extends _dom_component.default { _getDefaultOptions() { return _extends({}, super._getDefaultOptions(), { activeStateEnabled: true, focusStateEnabled: true, hoverStateEnabled: true, onMessageEntered: void 0, onTypingStart: void 0, onTypingEnd: void 0, onMessageEditCanceled: void 0, onMessageUpdating: void 0, text: "" }) } _init() { super._init(); this._createMessageEnteredAction(); this._createTypingStartAction(); this._createTypingEndAction() } _initMarkup() { (0, _renderer.default)(this.element()).addClass(CHAT_MESSAGEBOX_CLASS); super._initMarkup(); if (this.option("text")) { this._renderEditingPreview() } this._renderInputContainer() } _renderInputContainer() { const $messageBox = (0, _renderer.default)("<div>").addClass(CHAT_MESSAGEBOX_INPUT_CONTAINER_CLASS).appendTo(this.element()); this._renderTextArea($messageBox); this._renderButton($messageBox) } _cancelMessageEdit() { const { onMessageEditCanceled: onMessageEditCanceled } = this.option(); this.option("text", ""); this._textArea.focus(); null === onMessageEditCanceled || void 0 === onMessageEditCanceled || onMessageEditCanceled() } _renderEditingPreview() { const $editingPreview = (0, _renderer.default)("<div>").prependTo(this.element()); const { activeStateEnabled: activeStateEnabled, focusStateEnabled: focusStateEnabled, hoverStateEnabled: hoverStateEnabled, text: text } = this.option(); this._editingPreview = this._createComponent($editingPreview, _editing_preview.default, { activeStateEnabled: activeStateEnabled, focusStateEnabled: focusStateEnabled, hoverStateEnabled: hoverStateEnabled, text: text, onCancel: () => this._cancelMessageEdit() }) } _renderTextArea($parent) { const { activeStateEnabled: activeStateEnabled, focusStateEnabled: focusStateEnabled, hoverStateEnabled: hoverStateEnabled } = this.option(); const $textArea = (0, _renderer.default)("<div>").addClass(CHAT_MESSAGEBOX_TEXTAREA_CLASS); $parent.append($textArea); this._textArea = this._createComponent($textArea, _m_text_area.default, { activeStateEnabled: activeStateEnabled, focusStateEnabled: focusStateEnabled, hoverStateEnabled: hoverStateEnabled, stylingMode: "outlined", placeholder: _message.default.format("dxChat-textareaPlaceholder"), autoResizeEnabled: true, valueChangeEvent: "input", maxHeight: "8em", onInput: e => { const shouldButtonBeDisabled = !this._isValuableTextEntered(); this._toggleButtonDisableState(shouldButtonBeDisabled); this._triggerTypingStartAction(e); this._updateTypingEndTimeout() }, onEnterKey: e => { var _e$event; if (isMobile()) { return } if (!(null !== (_e$event = e.event) && void 0 !== _e$event && _e$event.shiftKey)) { this._sendHandler(e) } } }); this._textArea.registerKeyHandler("enter", (event => { if (!event.shiftKey && this._isValuableTextEntered() && !isMobile()) { event.preventDefault() } })); this._textArea.registerKeyHandler("escape", (() => { if (this.option("text")) { this._cancelMessageEdit() } })) } _renderButton($parent) { const { activeStateEnabled: activeStateEnabled, focusStateEnabled: focusStateEnabled, hoverStateEnabled: hoverStateEnabled } = this.option(); const $button = (0, _renderer.default)("<div>").addClass(CHAT_MESSAGEBOX_BUTTON_CLASS); $parent.append($button); this._button = this._createComponent($button, _button.default, { activeStateEnabled: activeStateEnabled, focusStateEnabled: focusStateEnabled, hoverStateEnabled: hoverStateEnabled, icon: "sendfilled", type: "default", stylingMode: "text", disabled: true, elementAttr: { "aria-label": _message.default.format("dxChat-sendButtonAriaLabel") }, onClick: e => { this._sendHandler(e) } }) } _createMessageEnteredAction() { this._messageEnteredAction = this._createActionByOption("onMessageEntered", { excludeValidators: ["disabled"] }) } _createTypingStartAction() { this._typingStartAction = this._createActionByOption("onTypingStart", { excludeValidators: ["disabled"] }) } _createTypingEndAction() { this._typingEndAction = this._createActionByOption("onTypingEnd", { excludeValidators: ["disabled"] }) } _triggerTypingStartAction(e) { if (!this._typingEndTimeoutId) { var _this$_typingStartAct; null === (_this$_typingStartAct = this._typingStartAction) || void 0 === _this$_typingStartAct || _this$_typingStartAct.call(this, { event: e.event }) } } _updateTypingEndTimeout() { clearTimeout(this._typingEndTimeoutId); this._typingEndTimeoutId = setTimeout((() => { var _this$_typingEndActio; null === (_this$_typingEndActio = this._typingEndAction) || void 0 === _this$_typingEndActio || _this$_typingEndActio.call(this); this._clearTypingEndTimeout() }), TYPING_END_DELAY) } _clearTypingEndTimeout() { clearTimeout(this._typingEndTimeoutId); this._typingEndTimeoutId = void 0 } _sendHandler(e) { var _this$_typingEndActio2, _this$_messageEntered; if (!this._isValuableTextEntered()) { return } this._clearTypingEndTimeout(); null === (_this$_typingEndActio2 = this._typingEndAction) || void 0 === _this$_typingEndActio2 || _this$_typingEndActio2.call(this); const { text: text = "" } = this._textArea.option(); const { text: previewText } = this.option(); if (previewText) { const { onMessageUpdating: onMessageUpdating } = this.option(); null === onMessageUpdating || void 0 === onMessageUpdating || onMessageUpdating({ text: text }); return } this._textArea.reset(); this._toggleButtonDisableState(true); null === (_this$_messageEntered = this._messageEnteredAction) || void 0 === _this$_messageEntered || _this$_messageEntered.call(this, { text: text, event: e.event }) } _toggleButtonDisableState(state) { this._button.option("disabled", state) } _isValuableTextEntered() { const { text: text } = this._textArea.option(); return !!(null !== text && void 0 !== text && text.trim()) } _optionChanged(args) { const { name: name, value: value } = args; switch (name) { case "activeStateEnabled": case "focusStateEnabled": case "hoverStateEnabled": var _this$_editingPreview; this._button.option(name, value); this._textArea.option(name, value); null === (_this$_editingPreview = this._editingPreview) || void 0 === _this$_editingPreview || _this$_editingPreview.option(name, value); break; case "onMessageEntered": this._createMessageEnteredAction(); break; case "onTypingStart": this._createTypingStartAction(); break; case "onTypingEnd": this._createTypingEndAction(); break; case "text": this._updateEditingPreview(value); this._updateInputContainer(value); break; default: super._optionChanged(args) } } _clean() { this._clearTypingEndTimeout(); super._clean() } updateInputAria(emptyViewId) { this._textArea.option({ inputAttr: { "aria-labelledby": emptyViewId } }) } _updateEditingPreview(text) { if (this._editingPreview) { this._editingPreview.option("text", text); if (!text) { this._editingPreview = null } } else { this._renderEditingPreview() } } _updateInputContainer(value) { this._textArea.option("value", value); const shouldButtonBeDisabled = !this._isValuableTextEntered(); this._toggleButtonDisableState(shouldButtonBeDisabled) } } exports.default = MessageBox }, 1243: /*!*********************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/ui/chat/messagebubble.js ***! \*********************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = exports.MESSAGE_DATA_KEY = exports.CHAT_MESSAGEBUBBLE_IMAGE_CLASS = exports.CHAT_MESSAGEBUBBLE_ICON_PROHIBITION_CLASS = exports.CHAT_MESSAGEBUBBLE_HAS_IMAGE_CLASS = exports.CHAT_MESSAGEBUBBLE_DELETED_CLASS = exports.CHAT_MESSAGEBUBBLE_CONTENT_CLASS = exports.CHAT_MESSAGEBUBBLE_CLASS = void 0; var _message = _interopRequireDefault(__webpack_require__( /*! ../../../common/core/localization/message */ 4671)); var _element = __webpack_require__( /*! ../../../core/element */ 61404); var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../../core/renderer */ 64553)); var _m_icon = __webpack_require__( /*! ../../core/utils/m_icon */ 42463); var _widget = _interopRequireDefault(__webpack_require__( /*! ../../core/widget/widget */ 89275)); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } function _extends() { return _extends = Object.assign ? Object.assign.bind() : function(n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) { ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]) } } return n }, _extends.apply(null, arguments) } const CHAT_MESSAGEBUBBLE_CLASS = exports.CHAT_MESSAGEBUBBLE_CLASS = "dx-chat-messagebubble"; const CHAT_MESSAGEBUBBLE_DELETED_CLASS = exports.CHAT_MESSAGEBUBBLE_DELETED_CLASS = "dx-chat-messagebubble-deleted"; const CHAT_MESSAGEBUBBLE_CONTENT_CLASS = exports.CHAT_MESSAGEBUBBLE_CONTENT_CLASS = "dx-chat-messagebubble-content"; const CHAT_MESSAGEBUBBLE_ICON_PROHIBITION_CLASS = exports.CHAT_MESSAGEBUBBLE_ICON_PROHIBITION_CLASS = `${_m_icon.ICON_CLASS}-cursorprohibition`; const CHAT_MESSAGEBUBBLE_HAS_IMAGE_CLASS = exports.CHAT_MESSAGEBUBBLE_HAS_IMAGE_CLASS = "dx-has-image"; const CHAT_MESSAGEBUBBLE_IMAGE_CLASS = exports.CHAT_MESSAGEBUBBLE_IMAGE_CLASS = "dx-chat-messagebubble-image"; const MESSAGE_DATA_KEY = exports.MESSAGE_DATA_KEY = "dxMessageData"; class MessageBubble extends _widget.default { _getDefaultOptions() { return _extends({}, super._getDefaultOptions(), { isDeleted: false, isEdited: false, text: "", template: null }) } _initMarkup() { const $element = (0, _renderer.default)(this.element()); $element.addClass(CHAT_MESSAGEBUBBLE_CLASS); (0, _renderer.default)("<div>").addClass(CHAT_MESSAGEBUBBLE_CONTENT_CLASS).appendTo($element); super._initMarkup(); this._updateContent() } _updateContent() { const { template: template, type: type, text: text, src: src, alt: alt, isDeleted: isDeleted = false } = this.option(); this.$element().removeClass(CHAT_MESSAGEBUBBLE_DELETED_CLASS); const $bubbleContainer = (0, _renderer.default)(this.element()).find(`.${CHAT_MESSAGEBUBBLE_CONTENT_CLASS}`); $bubbleContainer.empty(); if (template) { template({ type: type, text: text, src: src, alt: alt }, (0, _element.getPublicElement)($bubbleContainer)); return } if (isDeleted) { this.$element().addClass(CHAT_MESSAGEBUBBLE_DELETED_CLASS); const icon = (0, _renderer.default)("<div>").addClass(_m_icon.ICON_CLASS).addClass(CHAT_MESSAGEBUBBLE_ICON_PROHIBITION_CLASS); const deletedMessage = (0, _renderer.default)("<div>").text(_message.default.format("dxChat-deletedMessageText")); $bubbleContainer.append(icon).append(deletedMessage); return } if ("image" === type) { this.$element().addClass(CHAT_MESSAGEBUBBLE_HAS_IMAGE_CLASS); (0, _renderer.default)("<img>").attr("src", src ?? "").attr("alt", alt ?? _message.default.format("dxChat-defaultImageAlt")).addClass(CHAT_MESSAGEBUBBLE_IMAGE_CLASS).appendTo($bubbleContainer) } else { $bubbleContainer.text(text ?? "") } } _updateMessageData(property, value) { const messageData = this.$element().data(MESSAGE_DATA_KEY) || {}; messageData[property] = value; this.$element().data(MESSAGE_DATA_KEY, messageData) } _optionChanged(args) { const { name: name, value: value } = args; switch (name) { case "text": case "src": case "alt": case "isDeleted": this._updateMessageData(name, value); this._updateContent(); break; case "template": this._updateContent(); break; case "isEdited": this._updateMessageData(name, value); break; default: super._optionChanged(args) } } } exports.default = MessageBubble }, 97806: /*!********************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/ui/chat/messagegroup.js ***! \********************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = exports.CHAT_MESSAGEGROUP_CLASS = exports.CHAT_MESSAGEGROUP_ALIGNMENT_START_CLASS = exports.CHAT_MESSAGEGROUP_ALIGNMENT_END_CLASS = void 0; var _date = _interopRequireDefault(__webpack_require__( /*! ../../../common/core/localization/date */ 38662)); var _message = _interopRequireDefault(__webpack_require__( /*! ../../../common/core/localization/message */ 4671)); var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../../core/renderer */ 64553)); var _date_serialization = _interopRequireDefault(__webpack_require__( /*! ../../../core/utils/date_serialization */ 71051)); var _type = __webpack_require__( /*! ../../../core/utils/type */ 11528); var _widget = _interopRequireDefault(__webpack_require__( /*! ../../core/widget/widget */ 89275)); var _avatar = _interopRequireDefault(__webpack_require__( /*! ./avatar */ 95093)); var _messagebubble = function(e, r) { if (!r && e && e.__esModule) { return e } if (null === e || "object" != typeof e && "function" != typeof e) { return { default: e } } var t = _getRequireWildcardCache(r); if (t && t.has(e)) { return t.get(e) } var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) { if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u] } } return n.default = e, t && t.set(e, n), n }(__webpack_require__( /*! ./messagebubble */ 1243)); function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) { return null } var r = new WeakMap, t = new WeakMap; return (_getRequireWildcardCache = function(e) { return e ? t : r })(e) } function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } function _extends() { return _extends = Object.assign ? Object.assign.bind() : function(n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) { ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]) } } return n }, _extends.apply(null, arguments) } const CHAT_MESSAGEGROUP_CLASS = exports.CHAT_MESSAGEGROUP_CLASS = "dx-chat-messagegroup"; const CHAT_MESSAGEGROUP_ALIGNMENT_START_CLASS = exports.CHAT_MESSAGEGROUP_ALIGNMENT_START_CLASS = "dx-chat-messagegroup-alignment-start"; const CHAT_MESSAGEGROUP_ALIGNMENT_END_CLASS = exports.CHAT_MESSAGEGROUP_ALIGNMENT_END_CLASS = "dx-chat-messagegroup-alignment-end"; class MessageGroup extends _widget.default { _getDefaultOptions() { return _extends({}, super._getDefaultOptions(), { items: [], alignment: "start", showAvatar: true, showUserName: true, showMessageTimestamp: true, messageTemplate: null, messageTimestampFormat: "shorttime" }) } _updateAlignmentClass() { (0, _renderer.default)(this.element()).removeClass(CHAT_MESSAGEGROUP_ALIGNMENT_START_CLASS).removeClass(CHAT_MESSAGEGROUP_ALIGNMENT_END_CLASS); const alignmentClass = this._isAlignmentStart() ? CHAT_MESSAGEGROUP_ALIGNMENT_START_CLASS : CHAT_MESSAGEGROUP_ALIGNMENT_END_CLASS; (0, _renderer.default)(this.element()).addClass(alignmentClass) } _initMarkup() { const { items: items, showAvatar: showAvatar } = this.option(); (0, _renderer.default)(this.element()).addClass(CHAT_MESSAGEGROUP_CLASS); this._updateAlignmentClass(); super._initMarkup(); if (0 === items.length) { return } if (showAvatar && this._isAlignmentStart()) { this._renderAvatar() } this._renderMessageGroupInformation(null === items || void 0 === items ? void 0 : items[0]); this._renderMessageBubbles(items) } _renderAvatar() { const $avatar = (0, _renderer.default)("<div>").appendTo(this.element()); const { items: items } = this.option(); const { author: author } = items[0]; const authorName = null === author || void 0 === author ? void 0 : author.name; const authorAvatarUrl = null === author || void 0 === author ? void 0 : author.avatarUrl; const authorAvatarAlt = null === author || void 0 === author ? void 0 : author.avatarAlt; this._avatar = this._createComponent($avatar, _avatar.default, { name: authorName, url: authorAvatarUrl, alt: authorAvatarAlt }) } _renderMessageBubble(message) { const $bubble = (0, _renderer.default)("<div>").data(_messagebubble.MESSAGE_DATA_KEY, message); this._createComponent($bubble, _messagebubble.default, this._getMessageBubbleOptions(message)); this._$messageBubbleContainer.append($bubble) } _getMessageBubbleOptions(message) { const options = { isDeleted: message.isDeleted, type: message.type }; const { messageTemplate: messageTemplate } = this.option(); if ("image" === message.type) { options.alt = message.alt; options.src = message.src } else { options.text = message.text } if (messageTemplate) { options.template = (messageData, container) => { messageTemplate(_extends({}, message, messageData), container) } } return options } _renderMessageBubbles(items) { this._$messageBubbleContainer = (0, _renderer.default)("<div>").addClass("dx-chat-messagegroup-content"); items.forEach(((message, index) => { const shouldCreateEditedElement = 0 !== index && "image" !== message.type && true === message.isEdited && !message.isDeleted; if (shouldCreateEditedElement) { const $edited = this._createEditedElement(); $edited.appendTo(this._$messageBubbleContainer) } this._renderMessageBubble(message) })); this._$messageBubbleContainer.appendTo(this.element()) } _renderMessageGroupInformation(message, shouldRenderEditedMessage) { const { showUserName: showUserName, showMessageTimestamp: showMessageTimestamp } = this.option(); const { timestamp: timestamp, author: author } = message; const isEdited = (0, _type.isDefined)(shouldRenderEditedMessage) ? shouldRenderEditedMessage : "image" !== message.type && message.isEdited; const isAlignmentStart = this._isAlignmentStart(); this.$element().find(".dx-chat-messagegroup-information").remove(); const $information = (0, _renderer.default)("<div>").addClass("dx-chat-messagegroup-information"); if (showUserName) { const authorName = (null === author || void 0 === author ? void 0 : author.name) ?? _message.default.format("dxChat-defaultUserName"); const authorNameText = isAlignmentStart ? authorName : ""; (0, _renderer.default)("<div>").addClass("dx-chat-messagegroup-author-name").text(authorNameText).appendTo($information) } if (isEdited && !isAlignmentStart) { $information.append(this._createEditedElement()) } if (showMessageTimestamp) { const $time = (0, _renderer.default)("<div>").addClass("dx-chat-messagegroup-time").appendTo($information); const shouldAddTimeValue = this._shouldAddTimeValue(timestamp); if (shouldAddTimeValue) { const timeValue = this._getTimeValue(timestamp); $time.text(timeValue) } } if (isEdited && isAlignmentStart) { $information.append(this._createEditedElement()) } $information.appendTo(this.element()) } _createEditedElement() { const $edited = (0, _renderer.default)("<div>").addClass("dx-chat-message-edited"); (0, _renderer.default)("<div>").addClass("dx-chat-message-edited-icon").appendTo($edited); const editedMessageText = _message.default.format("dxChat-editedMessageText"); (0, _renderer.default)("<div>").addClass("dx-chat-message-edited-text").text(editedMessageText).appendTo($edited); return $edited } _updateMessageEditedText($message) { let isEdited = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : false; const $firstMessage = this._$messageBubbleContainer.find(`.${_messagebubble.CHAT_MESSAGEBUBBLE_CLASS}`).first(); const removeWithAnimation = $editedElement => { $editedElement.get(0).addEventListener("animationend", (() => { $editedElement.remove() }), { once: true }); $editedElement.addClass("dx-chat-message-edited-hiding") }; if ($message.is($firstMessage)) { const items = this.option("items"); const $information = this.$element().find(".dx-chat-messagegroup-information"); const $edited = $information.find(".dx-chat-message-edited"); if ($edited.length && isEdited) { return } if ($edited.length && !isEdited) { removeWithAnimation($edited); return } if (isEdited) { this._renderMessageGroupInformation(items[0], true) } return } const $prevElement = $message.prev(); if ($prevElement.hasClass("dx-chat-message-edited")) { if (!isEdited) { removeWithAnimation($prevElement) } return } if (isEdited) { const $edited = this._createEditedElement(); $edited.insertBefore($message) } } _isAlignmentStart() { const { alignment: alignment } = this.option(); return "start" === alignment } _shouldAddTimeValue(timestamp) { const deserializedDate = _date_serialization.default.deserializeDate(timestamp); return (0, _type.isDate)(deserializedDate) && !isNaN(deserializedDate.getTime()) } _getTimeValue(timestamp) { const deserializedDate = _date_serialization.default.deserializeDate(timestamp); const { messageTimestampFormat: messageTimestampFormat } = this.option(); const formattedTime = _date.default.format(deserializedDate, messageTimestampFormat); return formattedTime } _optionChanged(args) { const { name: name } = args; switch (name) { case "items": case "alignment": case "showAvatar": case "showUserName": case "showMessageTimestamp": case "messageTemplate": case "messageTimestampFormat": this._invalidate(); break; default: super._optionChanged(args) } } renderMessage(message) { const { items: items } = this.option(); const newItems = [...items, message]; this._setOptionWithoutOptionChange("items", newItems); this._renderMessageBubble(message) } } exports.default = MessageGroup }, 51409: /*!*******************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/ui/chat/messagelist.js ***! \*******************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = exports.MESSAGEGROUP_TIMEOUT = exports.CHAT_MESSAGELIST_CONTEXT_MENU_TARGET = exports.CHAT_MESSAGELIST_CONTEXT_MENU_CONTENT_CLASS = exports.CHAT_MESSAGELIST_CONTEXT_MENU_CLASS = void 0; var _common = __webpack_require__( /*! ../../../common */ 83077); var _date = _interopRequireDefault(__webpack_require__( /*! ../../../common/core/localization/date */ 38662)); var _message = _interopRequireDefault(__webpack_require__( /*! ../../../common/core/localization/message */ 4671)); var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../../core/renderer */ 64553)); var _resize_observer = _interopRequireDefault(__webpack_require__( /*! ../../../core/resize_observer */ 11787)); var _common2 = __webpack_require__( /*! ../../../core/utils/common */ 17781); var _date2 = _interopRequireDefault(__webpack_require__( /*! ../../../core/utils/date */ 41380)); var _date_serialization = _interopRequireDefault(__webpack_require__( /*! ../../../core/utils/date_serialization */ 71051)); var _dom = __webpack_require__( /*! ../../../core/utils/dom */ 86858); var _size = __webpack_require__( /*! ../../../core/utils/size */ 57653); var _type = __webpack_require__( /*! ../../../core/utils/type */ 11528); var _widget = _interopRequireDefault(__webpack_require__( /*! ../../core/widget/widget */ 89275)); var _m_context_menu = _interopRequireDefault(__webpack_require__( /*! ../../ui/context_menu/m_context_menu */ 66900)); var _m_scroll_view = _interopRequireDefault(__webpack_require__( /*! ../../ui/scroll_view/m_scroll_view */ 97972)); var _get_scroll_top_max = __webpack_require__( /*! ../../ui/scroll_view/utils/get_scroll_top_max */ 27104); var _layout = __webpack_require__( /*! ../splitter/utils/layout */ 49291); var _messagebubble = _interopRequireWildcard(__webpack_require__( /*! ./messagebubble */ 1243)); var _messagegroup = _interopRequireWildcard(__webpack_require__( /*! ./messagegroup */ 97806)); var _typingindicator = _interopRequireDefault(__webpack_require__( /*! ./typingindicator */ 85134)); function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) { return null } var r = new WeakMap, t = new WeakMap; return (_getRequireWildcardCache = function(e) { return e ? t : r })(e) } function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) { return e } if (null === e || "object" != typeof e && "function" != typeof e) { return { default: e } } var t = _getRequireWildcardCache(r); if (t && t.has(e)) { return t.get(e) } var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) { if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u] } } return n.default = e, t && t.set(e, n), n } function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } function _extends() { return _extends = Object.assign ? Object.assign.bind() : function(n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) { ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]) } } return n }, _extends.apply(null, arguments) } const CHAT_MESSAGELIST_CONTEXT_MENU_CLASS = exports.CHAT_MESSAGELIST_CONTEXT_MENU_CLASS = "dx-messagelist-context-menu"; const CHAT_MESSAGELIST_CONTEXT_MENU_CONTENT_CLASS = exports.CHAT_MESSAGELIST_CONTEXT_MENU_CONTENT_CLASS = "dx-messagelist-context-menu-content"; const CHAT_MESSAGELIST_CONTEXT_MENU_TARGET = exports.CHAT_MESSAGELIST_CONTEXT_MENU_TARGET = `.${_messagegroup.CHAT_MESSAGEGROUP_ALIGNMENT_END_CLASS} .${_messagebubble.CHAT_MESSAGEBUBBLE_CLASS}`; const MESSAGEGROUP_TIMEOUT = exports.MESSAGEGROUP_TIMEOUT = 3e5; class MessageList extends _widget.default { _getDefaultOptions() { return _extends({}, super._getDefaultOptions(), { allowUpdating: () => false, allowDeleting: () => false, isEditActionDisabled: () => false, items: [], currentUserId: "", showDayHeaders: true, dayHeaderFormat: "shortdate", messageTimestampFormat: "shorttime", typingUsers: [], isLoading: false, showAvatar: true, showUserName: true, showMessageTimestamp: true, messageTemplate: null }) } _init() { super._init(); this._lastMessageDate = null } _initMarkup() { (0, _renderer.default)(this.element()).addClass("dx-chat-messagelist"); super._initMarkup(); this._renderScrollView(); this._renderMessageListContent(); this._toggleEmptyView(); this._renderMessageGroups(); this._renderTypingIndicator(); this._renderContextMenu(); this._updateAria(); this._scrollDownContent() } _renderContentImpl() { super._renderContentImpl(); this._attachResizeObserverSubscription() } _attachResizeObserverSubscription() { const element = this.$element().get(0); _resize_observer.default.unobserve(element); _resize_observer.default.observe(element, (entry => this._resizeHandler(entry))) } _resizeHandler(_ref) { let { contentRect: contentRect, target: target } = _ref; if (!(0, _dom.isElementInDom)((0, _renderer.default)(target)) || !(0, _layout.isElementVisible)(target)) { return } const isInitialRendering = !(0, _type.isDefined)(this._containerClientHeight); const newHeight = contentRect.height; if (isInitialRendering) { this._scrollDownContent() } else { const heightChange = this._containerClientHeight - newHeight; const isHeightDecreasing = heightChange > 0; let scrollTop = this._scrollView.scrollTop(); if (isHeightDecreasing) { scrollTop += heightChange; this._scrollView.scrollTo({ top: scrollTop }) } } this._containerClientHeight = newHeight } _renderEmptyViewContent() { const $emptyView = (0, _renderer.default)("<div>").addClass("dx-chat-messagelist-empty-view").attr("id", `dx-${new _common.Guid}`); (0, _renderer.default)("<div>").appendTo($emptyView).addClass("dx-chat-messagelist-empty-image"); const messageText = _message.default.format("dxChat-emptyListMessage"); (0, _renderer.default)("<div>").appendTo($emptyView).addClass("dx-chat-messagelist-empty-message").text(messageText); const promptText = _message.default.format("dxChat-emptyListPrompt"); (0, _renderer.default)("<div>").appendTo($emptyView).addClass("dx-chat-messagelist-empty-prompt").text(promptText); $emptyView.appendTo(this._$content) } _renderTypingIndicator() { const { typingUsers: typingUsers } = this.option(); const $typingIndicator = (0, _renderer.default)("<div>").appendTo(this._$scrollViewContent()); this._typingIndicator = this._createComponent($typingIndicator, _typingindicator.default, { typingUsers: typingUsers }) } _isEmpty() { const { items: items } = this.option(); return 0 === items.length } _isCurrentUser(id) { const { currentUserId: currentUserId } = this.option(); return currentUserId === id } _messageGroupAlignment(id) { return this._isCurrentUser(id) ? "end" : "start" } _createMessageGroupComponent(items, userId) { const { showAvatar: showAvatar, showUserName: showUserName, showMessageTimestamp: showMessageTimestamp, messageTemplate: messageTemplate, messageTimestampFormat: messageTimestampFormat } = this.option(); const $messageGroup = (0, _renderer.default)("<div>").appendTo(this._$content); this._createComponent($messageGroup, _messagegroup.default, { items: items, alignment: this._messageGroupAlignment(userId), showAvatar: showAvatar, showUserName: showUserName, showMessageTimestamp: showMessageTimestamp, messageTemplate: messageTemplate, messageTimestampFormat: messageTimestampFormat }) } _getContextMenuButtons(message) { const { allowUpdating: allowUpdating, allowDeleting: allowDeleting, isEditActionDisabled: isEditActionDisabled, onMessageEditingStart: onMessageEditingStart, onMessageDeleting: onMessageDeleting } = this.option(); const editText = _message.default.format("dxChat-editingEditMessage"); const deleteText = _message.default.format("dxChat-editingDeleteMessage"); const buttons = []; if (allowUpdating(message) && "image" !== message.type) { buttons.push({ icon: "edit", text: editText, disabled: isEditActionDisabled(message), onClick: e => { const onMessageEditStarted = null === onMessageEditingStart || void 0 === onMessageEditingStart ? void 0 : onMessageEditingStart({ event: e.event, message: message }); const onContextMenuHidden = () => { this._contextMenu.off("hidden", onContextMenuHidden); null === onMessageEditStarted || void 0 === onMessageEditStarted || onMessageEditStarted() }; this._contextMenu.on("hidden", onContextMenuHidden) } }) } if (allowDeleting(message)) { buttons.push({ icon: "trash", text: deleteText, onClick(e) { null === onMessageDeleting || void 0 === onMessageDeleting || onMessageDeleting({ event: e.event, message: message }) } }) } return buttons } _renderContextMenu() { const $contextMenu = (0, _renderer.default)("<div>"); this._contextMenu = this._createComponent($contextMenu, _m_context_menu.default, { target: CHAT_MESSAGELIST_CONTEXT_MENU_TARGET, onShowing: e => { this._onContextMenuShowing(e) }, elementAttr: { class: CHAT_MESSAGELIST_CONTEXT_MENU_CLASS }, cssClass: CHAT_MESSAGELIST_CONTEXT_MENU_CONTENT_CLASS, hideOnParentScroll: false, overlayContainer: this._scrollView.container(), visualContainer: this._scrollView.container(), boundaryOffset: { h: 16 } }); this._contextMenu.registerKeyHandler("escape", (event => { this._contextMenu.hide(); const { onEscapeKeyPressed: onEscapeKeyPressed } = this.option(); null === onEscapeKeyPressed || void 0 === onEscapeKeyPressed || onEscapeKeyPressed(event) })); $contextMenu.appendTo(this.$element()) } _onContextMenuShowing(e) { const { jQEvent: jQEvent } = e; if (!(0, _type.isDefined)(jQEvent)) { e.cancel = true; return } const { currentTarget: currentTarget } = jQEvent; const message = this._getMessageData(currentTarget); if (null !== message && void 0 !== message && message.isDeleted) { e.cancel = true; return } const items = this._getContextMenuButtons(message); if (!items.length) { e.cancel = true; return } e.component.option("items", items); e.element.focus() } _renderScrollView() { const $scrollable = (0, _renderer.default)("<div>").appendTo(this.$element()); this._scrollView = this._createComponent($scrollable, _m_scroll_view.default, { useKeyboard: false, bounceEnabled: false, reachBottomText: "", indicateLoading: false, onReachBottom: _common2.noop }) } _shouldAddDayHeader(timestamp) { const { showDayHeaders: showDayHeaders } = this.option(); if (!showDayHeaders) { return false } const deserializedDate = _date_serialization.default.deserializeDate(timestamp); if (!(0, _type.isDate)(deserializedDate) || isNaN(deserializedDate.getTime())) { return false } return !_date2.default.sameDate(this._lastMessageDate, deserializedDate) } _createDayHeader(timestamp) { const deserializedDate = _date_serialization.default.deserializeDate(timestamp); const today = new Date; const yesterday = new Date((new Date).setDate(today.getDate() - 1)); const { dayHeaderFormat: dayHeaderFormat } = this.option(); this._lastMessageDate = deserializedDate; let headerDate = _date.default.format(deserializedDate, dayHeaderFormat); if (_date2.default.sameDate(deserializedDate, today)) { headerDate = `${_message.default.format("Today")} ${headerDate}` } if (_date2.default.sameDate(deserializedDate, yesterday)) { headerDate = `${_message.default.format("Yesterday")} ${headerDate}` }(0, _renderer.default)("<div>").addClass("dx-chat-messagelist-day-header").text(headerDate).appendTo(this._$content) } _updateLoadingState(isLoading) { if (!this._scrollView) { return } this.$element().toggleClass("dx-chat-messagelist-empty-loading", this._isEmpty() && isLoading); this._scrollView.release(!isLoading) } _renderMessageListContent() { this._$content = (0, _renderer.default)("<div>").addClass("dx-chat-messagelist-content").appendTo(this._$scrollViewContent()) } _toggleEmptyView() { this._getEmptyView().remove(); const { isLoading: isLoading } = this.option(); this.$element().toggleClass("dx-chat-messagelist-empty", this._isEmpty() && !isLoading).toggleClass("dx-chat-messagelist-empty-loading", this._isEmpty() && isLoading); if (this._isEmpty() && !isLoading) { this._renderEmptyViewContent(); this._updateLoadingState(false) } } _renderMessageGroups() { var _items$; const { isLoading: isLoading, items: items } = this.option(); if (this._isEmpty() && !isLoading) { return } let currentMessageGroupUserId = null === (_items$ = items[0]) || void 0 === _items$ || null === (_items$ = _items$.author) || void 0 === _items$ ? void 0 : _items$.id; let currentMessageGroupItems = []; items.forEach(((item, index) => { var _newMessageGroupItem$; const newMessageGroupItem = item ?? {}; const id = null === (_newMessageGroupItem$ = newMessageGroupItem.author) || void 0 === _newMessageGroupItem$ ? void 0 : _newMessageGroupItem$.id; const shouldCreateDayHeader = this._shouldAddDayHeader(newMessageGroupItem.timestamp); const isTimeoutExceeded = this._isTimeoutExceeded(currentMessageGroupItems[currentMessageGroupItems.length - 1] ?? {}, item); const shouldCreateMessageGroup = shouldCreateDayHeader && currentMessageGroupItems.length || isTimeoutExceeded || id !== currentMessageGroupUserId; if (shouldCreateMessageGroup) { this._createMessageGroupComponent(currentMessageGroupItems, currentMessageGroupUserId); currentMessageGroupUserId = id; currentMessageGroupItems = []; currentMessageGroupItems.push(newMessageGroupItem) } else { currentMessageGroupItems.push(newMessageGroupItem) } if (shouldCreateDayHeader) { this._createDayHeader(null === item || void 0 === item ? void 0 : item.timestamp) } if (items.length - 1 === index) { this._createMessageGroupComponent(currentMessageGroupItems, currentMessageGroupUserId) } })); this._setLastMessageGroupClasses(); this._updateLoadingState(isLoading) } _setLastMessageGroupClasses() { this._$content.find(".dx-chat-last-messagegroup-alignment-start").removeClass("dx-chat-last-messagegroup-alignment-start"); this._$content.find(".dx-chat-last-messagegroup-alignment-end").removeClass("dx-chat-last-messagegroup-alignment-end"); const $lastAlignmentStartGroup = this._$content.find(`.${_messagegroup.CHAT_MESSAGEGROUP_ALIGNMENT_START_CLASS}`).last(); const $lastAlignmentEndGroup = this._$content.find(`.${_messagegroup.CHAT_MESSAGEGROUP_ALIGNMENT_END_CLASS}`).last(); $lastAlignmentStartGroup.addClass("dx-chat-last-messagegroup-alignment-start"); $lastAlignmentEndGroup.addClass("dx-chat-last-messagegroup-alignment-end") } _getLastMessageGroup() { const $lastMessageGroup = this._$content.find(`.${_messagegroup.CHAT_MESSAGEGROUP_CLASS}`).last(); if ($lastMessageGroup.length) { return _messagegroup.default.getInstance($lastMessageGroup) } return } _renderMessage(message) { const { timestamp: timestamp } = message; const shouldCreateDayHeader = this._shouldAddDayHeader(timestamp); if (shouldCreateDayHeader) { this._createDayHeader(timestamp); this._renderMessageIntoGroup(message); return } const lastMessageGroup = this._getLastMessageGroup(); if (!lastMessageGroup) { this._renderMessageIntoGroup(message); return } const lastMessageGroupMessage = this._getLastMessageGroupItem(lastMessageGroup); const isTimeoutExceeded = this._isTimeoutExceeded(lastMessageGroupMessage, message); if (this._isSameAuthor(message, lastMessageGroupMessage) && !isTimeoutExceeded) { this._renderMessageIntoGroup(message, lastMessageGroup); return } this._renderMessageIntoGroup(message) } _getLastMessageGroupItem(lastMessageGroup) { const { items: items } = lastMessageGroup.option(); return items[items.length - 1] } _isSameAuthor(lastMessageGroupMessage, message) { var _lastMessageGroupMess, _message$author; return (null === (_lastMessageGroupMess = lastMessageGroupMessage.author) || void 0 === _lastMessageGroupMess ? void 0 : _lastMessageGroupMess.id) === (null === (_message$author = message.author) || void 0 === _message$author ? void 0 : _message$author.id) } _renderMessageIntoGroup(message, messageGroup) { const { author: author } = message; this._setIsReachedBottom(); if (messageGroup) { messageGroup.renderMessage(message) } else { this._createMessageGroupComponent([message], null === author || void 0 === author ? void 0 : author.id); this._setLastMessageGroupClasses() } this._processScrollDownContent(this._isCurrentUser(null === author || void 0 === author ? void 0 : author.id)) } _getMessageData(message) { return (0, _renderer.default)(message).data(_messagebubble.MESSAGE_DATA_KEY) } _findMessageElementByKey(key) { const $bubbles = this.$element().find(`.${_messagebubble.CHAT_MESSAGEBUBBLE_CLASS}`); let result = (0, _renderer.default)(); $bubbles.each(((_, item) => { const messageData = this._getMessageData(item); if (messageData.id === key) { result = (0, _renderer.default)(item); return false } return true })); return result } _getMessageGroupByBubbleElement($bubble) { const $currentMessageGroup = $bubble.closest(`.${_messagegroup.CHAT_MESSAGEGROUP_CLASS}`); const group = _messagegroup.default.getInstance($currentMessageGroup); return group } _updateMessageByKey(key, data) { if ((0, _type.isDefined)(key)) { const $targetMessage = this._findMessageElementByKey(key); const bubble = _messagebubble.default.getInstance($targetMessage); bubble.option(data); if ("image" !== data.type) { const $currentMessageGroup = $targetMessage.closest(`.${_messagegroup.CHAT_MESSAGEGROUP_CLASS}`); const group = _messagegroup.default.getInstance($currentMessageGroup); const isEdited = true === data.isEdited && !data.isDeleted; group._updateMessageEditedText($targetMessage, isEdited) } } } _removeMessageByKey(key) { if (!key) { return } const $targetMessage = this._findMessageElementByKey(key); if (!$targetMessage.length) { return } const group = this._getMessageGroupByBubbleElement($targetMessage); const { items: items } = group.option(); const newItems = items.filter((item => item.id !== key)); if (0 === newItems.length) { const { showDayHeaders: showDayHeaders } = this.option(); if (showDayHeaders) { const $prev = group.$element().prev(); const $next = group.$element().next(); const shouldRemoveDayHeader = $prev.length && $prev.hasClass("dx-chat-messagelist-day-header") && ($next.length && $next.hasClass("dx-chat-messagelist-day-header") || !$next.length); if (shouldRemoveDayHeader) { $prev.remove() } } group.$element().remove() } else { group.option("items", newItems) } this._setLastMessageGroupClasses() } _scrollDownContent() { this._scrollView.scrollTo({ top: (0, _get_scroll_top_max.getScrollTopMax)(this._scrollableContainer()) }) } _scrollableContainer() { return (0, _renderer.default)(this._scrollView.element()).find(".dx-scrollable-container").get(0) } _isMessageAddedToEnd(value, previousValue) { const valueLength = value.length; const previousValueLength = previousValue.length; if (0 === valueLength) { return false } if (0 === previousValueLength) { return 1 === valueLength } const lastValueItem = value[valueLength - 1]; const lastPreviousValueItem = previousValue[previousValueLength - 1]; const isLastItemNotTheSame = lastValueItem !== lastPreviousValueItem; const isLengthIncreasedByOne = valueLength - previousValueLength === 1; return isLastItemNotTheSame && isLengthIncreasedByOne } _processItemsUpdating(value, previousValue) { const shouldItemsBeUpdatedCompletely = !this._isMessageAddedToEnd(value, previousValue); if (shouldItemsBeUpdatedCompletely) { this._invalidate() } else { this._toggleEmptyView(); const newMessage = value[value.length - 1]; this._renderMessage(newMessage ?? {}) } } _isTimeoutExceeded(lastMessage, newMessage) { const lastMessageTimestamp = null === lastMessage || void 0 === lastMessage ? void 0 : lastMessage.timestamp; const newMessageTimestamp = null === newMessage || void 0 === newMessage ? void 0 : newMessage.timestamp; if (!lastMessageTimestamp || !newMessageTimestamp) { return false } const lastMessageTimestampInMs = _date_serialization.default.deserializeDate(lastMessageTimestamp); const newMessageTimestampInMs = _date_serialization.default.deserializeDate(newMessageTimestamp); const result = newMessageTimestampInMs - lastMessageTimestampInMs > MESSAGEGROUP_TIMEOUT; return result } _updateAria() { const aria = { role: "log", atomic: "false", label: _message.default.format("dxChat-messageListAriaLabel"), live: "polite", relevant: "additions text" }; this.setAria(aria) } _setIsReachedBottom() { this._isBottomReached = !this._isContentOverflowing() || this._scrollView.isBottomReached() } _isContentOverflowing() { return (0, _size.getHeight)(this._scrollView.content()) > (0, _size.getHeight)(this._scrollView.container()) } _processScrollDownContent() { let shouldForceProcessing = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : false; if (this._isBottomReached || shouldForceProcessing) { this._scrollDownContent() } this._isBottomReached = false } _$scrollViewContent() { return (0, _renderer.default)(this._scrollView.content()) } _getEmptyView() { return this._$content.find(".dx-chat-messagelist-empty-view") } _dimensionChanged() { var _this$_contextMenu; null === (_this$_contextMenu = this._contextMenu) || void 0 === _this$_contextMenu || _this$_contextMenu.hide() } _clean() { this._lastMessageDate = null; super._clean() } _modifyByChanges(changes) { changes.forEach((change => { switch (change.type) { case "update": this._updateMessageByKey(change.key, change.data ?? {}); break; case "insert": { const { items: items } = this.option(); this.option("items", [...items, change.data ?? {}]); break } case "remove": this._removeMessageByKey(change.key) } })) } _optionChanged(args) { const { name: name, value: value, previousValue: previousValue } = args; switch (name) { case "currentUserId": case "showDayHeaders": case "showAvatar": case "showUserName": case "showMessageTimestamp": case "messageTemplate": case "dayHeaderFormat": case "messageTimestampFormat": this._invalidate(); break; case "items": this._processItemsUpdating(value ?? [], previousValue ?? []); break; case "typingUsers": this._setIsReachedBottom(); this._typingIndicator.option(name, value); this._processScrollDownContent(); break; case "isLoading": this._updateLoadingState(!!value); break; default: super._optionChanged(args) } } getEmptyViewId() { if (this._isEmpty()) { const $emptyView = this._getEmptyView(); const emptyViewId = $emptyView.attr("id") ?? null; return emptyViewId } return null } } exports.default = MessageList }, 85134: /*!***********************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/ui/chat/typingindicator.js ***! \***********************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _message = _interopRequireDefault(__webpack_require__( /*! ../../../common/core/localization/message */ 4671)); var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../../core/renderer */ 64553)); var _dom_component = _interopRequireDefault(__webpack_require__( /*! ../../core/widget/dom_component */ 22331)); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } function _extends() { return _extends = Object.assign ? Object.assign.bind() : function(n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) { ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]) } } return n }, _extends.apply(null, arguments) } class TypingIndicator extends _dom_component.default { _getDefaultOptions() { return _extends({}, super._getDefaultOptions(), { typingUsers: [] }) } _init() { super._init(); (0, _renderer.default)(this.element()).addClass("dx-chat-typingindicator") } _initMarkup() { super._initMarkup(); const { typingUsers: typingUsers } = this.option(); if (null !== typingUsers && void 0 !== typingUsers && typingUsers.length) { this._renderContent() } } _renderContent() { this._renderContentElement(); this._renderTextElement(); this._updateText(); this._renderBubble() } _renderContentElement() { this._$content = (0, _renderer.default)("<div>").addClass("dx-chat-typingindicator-content").appendTo(this.element()) } _renderTextElement() { if (this._$content) { this._$text = (0, _renderer.default)("<div>").addClass("dx-chat-typingindicator-text").appendTo(this._$content) } } _renderBubble() { if (this._$content) { const $bubble = (0, _renderer.default)("<div>").addClass("dx-chat-typingindicator-bubble"); new Array(3).fill(0).forEach((() => { (0, _renderer.default)("<div>").addClass("dx-chat-typingindicator-circle").appendTo($bubble) })); $bubble.appendTo(this._$content) } } _getText() { const { typingUsers: typingUsers } = this.option(); const usernames = null === typingUsers || void 0 === typingUsers ? void 0 : typingUsers.map((user => { var _user$name; const name = (null === (_user$name = user.name) || void 0 === _user$name ? void 0 : _user$name.trim()) || _message.default.format("dxChat-defaultUserName"); return name })); if (1 === (null === usernames || void 0 === usernames ? void 0 : usernames.length)) { const username = usernames[0]; return _message.default.format("dxChat-typingMessageSingleUser", username) } if (2 === (null === usernames || void 0 === usernames ? void 0 : usernames.length)) { const [usernameFirst, usernameSecond] = usernames; return _message.default.format("dxChat-typingMessageTwoUsers", usernameFirst, usernameSecond) } if (3 === (null === usernames || void 0 === usernames ? void 0 : usernames.length)) { const [usernameFirst, usernameSecond, usernameThird] = usernames; return _message.default.format("dxChat-typingMessageThreeUsers", usernameFirst, usernameSecond, usernameThird) } const usernameString = usernames.slice(0, 3).join(", "); return _message.default.format("dxChat-typingMessageMultipleUsers", usernameString) } _updateText() { var _this$_$text; const value = this._getText(); null === (_this$_$text = this._$text) || void 0 === _this$_$text || _this$_$text.text(value) } _processTypingUsersUpdating(previousValue) { const { typingUsers: typingUsers } = this.option(); if (null !== previousValue && void 0 !== previousValue && previousValue.length && null !== typingUsers && void 0 !== typingUsers && typingUsers.length) { this._updateText(); return } if (null !== typingUsers && void 0 !== typingUsers && typingUsers.length) { this._renderContent(); return } this._cleanContent() } _cleanContent() { this.$element().empty() } _optionChanged(args) { const { name: name, previousValue: previousValue } = args; if ("typingUsers" === name) { this._processTypingUsersUpdating(previousValue ?? []) } else { super._optionChanged(args) } } } exports.default = TypingIndicator }, 54516: /*!**********************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/ui/check_box/check_box.js ***! \**********************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.defaultCheckBoxProps = exports.CheckBox = void 0; exports.defaultOptions = function(rule) { __defaultOptionRules.push(rule); CheckBox.defaultProps = Object.create(Object.prototype, Object.assign(Object.getOwnPropertyDescriptors(CheckBox.defaultProps), Object.getOwnPropertyDescriptors(function(defaultProps) { const twoWayProps = ["value"]; return Object.keys(defaultProps).reduce(((props, propName) => { const propValue = defaultProps[propName]; const defaultPropName = twoWayProps.some((p => p === propName)) ? `default${propName.charAt(0).toUpperCase()}${propName.slice(1)}` : propName; props[defaultPropName] = propValue; return props }), {}) }((0, _utils.convertRulesToOptions)(__defaultOptionRules))))) }; var _inferno = __webpack_require__( /*! inferno */ 76231); var _devices = (e = __webpack_require__( /*! ../../../core/devices */ 65951), e && e.__esModule ? e : { default: e }); var e; var _utils = __webpack_require__( /*! ../../../core/options/utils */ 53904); var _index = __webpack_require__( /*! ../../core/r1/runtime/inferno/index */ 6257); var _combine_classes = __webpack_require__( /*! ../../core/utils/combine_classes */ 46190); var _check_box_icon = __webpack_require__( /*! ./check_box_icon */ 11186); var _editor = __webpack_require__( /*! ./editor_base/editor */ 33453); const _excluded = ["accessKey", "activeStateEnabled", "aria", "className", "classes", "defaultValue", "disabled", "enableThreeStateBehavior", "focusStateEnabled", "height", "hint", "hoverStateEnabled", "iconSize", "inputAttr", "isDirty", "isValid", "name", "onClick", "onFocusIn", "onKeyDown", "readOnly", "rtlEnabled", "saveValueChangeEvent", "tabIndex", "text", "validationError", "validationErrors", "validationMessageMode", "validationMessagePosition", "validationStatus", "value", "valueChange", "visible", "width"]; function _extends() { return _extends = Object.assign ? Object.assign.bind() : function(n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) { ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]) } } return n }, _extends.apply(null, arguments) } const defaultCheckBoxProps = exports.defaultCheckBoxProps = _extends({}, _editor.defaultEditorProps, { text: "", enableThreeStateBehavior: false, activeStateEnabled: true, hoverStateEnabled: true, get focusStateEnabled() { return "desktop" === _devices.default.real().deviceType && !_devices.default.isSimulator() }, defaultValue: false, valueChange: () => {} }); class CheckBox extends _index.InfernoWrapperComponent { constructor(props) { super(props); this.editorRef = (0, _inferno.createRef)(); this.state = { value: void 0 !== this.props.value ? this.props.value : this.props.defaultValue }; this.focus = this.focus.bind(this); this.blur = this.blur.bind(this); this.onWidgetClick = this.onWidgetClick.bind(this); this.keyDown = this.keyDown.bind(this) } createEffects() { return [(0, _index.createReRenderEffect)()] } onWidgetClick(event) { const { enableThreeStateBehavior: enableThreeStateBehavior, readOnly: readOnly, saveValueChangeEvent: saveValueChangeEvent } = this.props; if (!readOnly) { null === saveValueChangeEvent || void 0 === saveValueChangeEvent || saveValueChangeEvent(event); if (enableThreeStateBehavior) { var _this$props$valueChan, _this$props; let __newValue; this.setState((__state_argument => { __newValue = null === (void 0 !== this.props.value ? this.props.value : __state_argument.value) || (!(void 0 !== this.props.value ? this.props.value : __state_argument.value) ? null : false); return { value: __newValue } })); null === (_this$props$valueChan = (_this$props = this.props).valueChange) || void 0 === _this$props$valueChan || _this$props$valueChan.call(_this$props, __newValue) } else { var _this$props$valueChan2, _this$props2; let __newValue; this.setState((__state_argument => { __newValue = !((void 0 !== this.props.value ? this.props.value : __state_argument.value) ?? false); return { value: __newValue } })); null === (_this$props$valueChan2 = (_this$props2 = this.props).valueChange) || void 0 === _this$props$valueChan2 || _this$props$valueChan2.call(_this$props2, __newValue) } } } keyDown(e) { const { onKeyDown: onKeyDown } = this.props; const { keyName: keyName, originalEvent: originalEvent, which: which } = e; const result = null === onKeyDown || void 0 === onKeyDown ? void 0 : onKeyDown(e); if (null !== result && void 0 !== result && result.cancel) { return result } if ("space" === keyName || "space" === which) { originalEvent.preventDefault(); this.onWidgetClick(originalEvent) } return } get cssClasses() { return (model => { const { text: text, value: value } = model; const checked = value; const indeterminate = null === checked; const classesMap = { "dx-checkbox": true, "dx-checkbox-checked": true === checked, "dx-checkbox-has-text": !!text, "dx-checkbox-indeterminate": indeterminate }; return (0, _combine_classes.combineClasses)(classesMap) })(_extends({}, this.props, { value: void 0 !== this.props.value ? this.props.value : this.state.value })) } get aria() { const checked = true === (void 0 !== this.props.value ? this.props.value : this.state.value); const indeterminate = null === (void 0 !== this.props.value ? this.props.value : this.state.value); const result = { role: "checkbox", checked: indeterminate ? "mixed" : `${checked}` }; return _extends({}, result, this.props.aria) } get restAttributes() { const _this$props3 = this.props, restProps = function(r, e) { if (null == r) { return {} } var t = {}; for (var n in r) { if ({}.hasOwnProperty.call(r, n)) { if (e.includes(n)) { continue } t[n] = r[n] } } return t }(_this$props3, _excluded); return restProps } focus() { this.editorRef.current.focus() } blur() { this.editorRef.current.blur() } render() { const value = void 0 !== this.props.value ? this.props.value : this.state.value; return (0, _inferno.normalizeProps)((0, _inferno.createComponentVNode)(2, _editor.Editor, _extends({ aria: this.aria, classes: this.cssClasses, onClick: this.onWidgetClick, onKeyDown: this.keyDown, accessKey: this.props.accessKey, activeStateEnabled: this.props.activeStateEnabled, focusStateEnabled: this.props.focusStateEnabled, hoverStateEnabled: this.props.hoverStateEnabled, className: this.props.className, disabled: this.props.disabled, readOnly: this.props.readOnly, hint: this.props.hint, height: this.props.height, width: this.props.width, rtlEnabled: this.props.rtlEnabled, tabIndex: this.props.tabIndex, visible: this.props.visible, validationError: this.props.validationError, validationErrors: this.props.validationErrors, validationMessageMode: this.props.validationMessageMode, validationMessagePosition: this.props.validationMessagePosition, validationStatus: this.props.validationStatus, isValid: this.props.isValid, onFocusIn: this.props.onFocusIn }, this.restAttributes, { children: (0, _inferno.createFragment)([(0, _inferno.normalizeProps)((0, _inferno.createVNode)(64, "input", null, null, 1, _extends({ type: "hidden", value: `${value}` }, this.props.name && { name: this.props.name }))), (0, _inferno.createVNode)(1, "div", "dx-checkbox-container", [(0, _inferno.createComponentVNode)(2, _check_box_icon.CheckBoxIcon, { size: this.props.iconSize, isChecked: true === value }), this.props.text && (0, _inferno.createVNode)(1, "span", "dx-checkbox-text", this.props.text, 0)], 0)], 4) }), null, this.editorRef)) } } exports.CheckBox = CheckBox; CheckBox.defaultProps = defaultCheckBoxProps; const __defaultOptionRules = [] }, 11186: /*!***************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/ui/check_box/check_box_icon.js ***! \***************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.defaultCheckBoxIconProps = exports.CheckBoxIcon = void 0; var _inferno = __webpack_require__( /*! inferno */ 76231); __webpack_require__( /*! ../../../ui/themes */ 52071); var _style = __webpack_require__( /*! ../../../core/utils/style */ 58515); var _index = __webpack_require__( /*! ../../core/r1/runtime/inferno/index */ 6257); const _excluded = ["size"]; const defaultCheckBoxIconProps = exports.defaultCheckBoxIconProps = {}; class CheckBoxIcon extends _index.BaseInfernoComponent { constructor(props) { super(props); this.state = {}; this.elementRef = (0, _inferno.createRef)(); this.__getterCache = {} } get cssStyles() { if (void 0 !== this.__getterCache.cssStyles) { return this.__getterCache.cssStyles } return this.__getterCache.cssStyles = (() => { const { size: size } = this.props; const fontSize = (0, _style.normalizeStyleProp)("fontSize", size); return { fontSize: fontSize } })() } get restAttributes() { const _this$props = this.props, restProps = function(r, e) { if (null == r) { return {} } var t = {}; for (var n in r) { if ({}.hasOwnProperty.call(r, n)) { if (e.includes(n)) { continue } t[n] = r[n] } } return t }(_this$props, _excluded); return restProps } componentWillUpdate(nextProps) { if (this.props.size !== nextProps.size) { this.__getterCache.cssStyles = void 0 } } render() { const { elementRef: elementRef, cssStyles: cssStyles } = this; return (0, _inferno.createVNode)(1, "span", "dx-checkbox-icon", null, 1, { style: (0, _index.normalizeStyles)(cssStyles) }, null, elementRef) } } exports.CheckBoxIcon = CheckBoxIcon; CheckBoxIcon.defaultProps = defaultCheckBoxIconProps }, 33453: /*!*******************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/ui/check_box/editor_base/editor.js ***! \*******************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.defaultEditorProps = exports.Editor = void 0; exports.defaultOptions = function(rule) { __defaultOptionRules.push(rule); Editor.defaultProps = Object.create(Object.prototype, Object.assign(Object.getOwnPropertyDescriptors(Editor.defaultProps), Object.getOwnPropertyDescriptors(function(defaultProps) { const twoWayProps = ["value"]; return Object.keys(defaultProps).reduce(((props, propName) => { const propValue = defaultProps[propName]; const defaultPropName = twoWayProps.some((p => p === propName)) ? `default${propName.charAt(0).toUpperCase()}${propName.slice(1)}` : propName; props[defaultPropName] = propValue; return props }), {}) }((0, _utils.convertRulesToOptions)(__defaultOptionRules))))) }; var _inferno = __webpack_require__( /*! inferno */ 76231); var _guid = (e = __webpack_require__( /*! ../../../../core/guid */ 19427), e && e.__esModule ? e : { default: e }); var e; var _utils = __webpack_require__( /*! ../../../../core/options/utils */ 53904); var _index = __webpack_require__( /*! ../../../core/r1/runtime/inferno/index */ 6257); var _widget = __webpack_require__( /*! ../../../core/r1/widget */ 93796); var _combine_classes = __webpack_require__( /*! ../../../core/utils/combine_classes */ 46190); var _validation_message = __webpack_require__( /*! ../wrappers/validation_message */ 91568); const _excluded = ["accessKey", "activeStateEnabled", "aria", "children", "className", "classes", "defaultValue", "disabled", "focusStateEnabled", "height", "hint", "hoverStateEnabled", "inputAttr", "isDirty", "isValid", "name", "onClick", "onFocusIn", "onKeyDown", "readOnly", "rtlEnabled", "tabIndex", "validationError", "validationErrors", "validationMessageMode", "validationMessagePosition", "validationStatus", "value", "valueChange", "visible", "width"]; function _extends() { return _extends = Object.assign ? Object.assign.bind() : function(n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) { ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]) } } return n }, _extends.apply(null, arguments) } const defaultEditorProps = exports.defaultEditorProps = _extends({}, _widget.WidgetDefaultProps, { readOnly: false, name: "", validationError: null, validationErrors: null, validationMessageMode: "auto", validationMessagePosition: "bottom", validationStatus: "valid", isValid: true, isDirty: false, inputAttr: {}, defaultValue: null, valueChange: () => {} }); class Editor extends _index.InfernoWrapperComponent { constructor(props) { super(props); this.state = {}; this.widgetRef = (0, _inferno.createRef)(); this.rootElementRef = (0, _inferno.createRef)(); this.__getterCache = {}; this.state = { validationMessageGuid: `dx-${new _guid.default}`, isValidationMessageVisible: false, value: void 0 !== this.props.value ? this.props.value : this.props.defaultValue }; this.updateValidationMessageVisibility = this.updateValidationMessageVisibility.bind(this); this.focus = this.focus.bind(this); this.blur = this.blur.bind(this); this.onFocusIn = this.onFocusIn.bind(this) } createEffects() { return [new _index.InfernoEffect(this.updateValidationMessageVisibility, [this.props.isValid, this.props.validationStatus, this.props.validationError, this.props.validationErrors]), (0, _index.createReRenderEffect)()] } updateEffects() { var _this$_effects; null === (_this$_effects = this._effects) || void 0 === _this$_effects || null === (_this$_effects = _this$_effects[0]) || void 0 === _this$_effects || _this$_effects.update([this.props.isValid, this.props.validationStatus, this.props.validationError, this.props.validationErrors]) } updateValidationMessageVisibility() { this.setState((() => ({ isValidationMessageVisible: this.shouldShowValidationMessage }))) } onFocusIn(event) { const { onFocusIn: onFocusIn } = this.props; null === onFocusIn || void 0 === onFocusIn || onFocusIn(event) } get cssClasses() { return `${(model=>{const{classes:classes,isValid:isValid,readOnly:readOnly}=model;const classesMap={"dx-state-readonly":!!readOnly,"dx-invalid":!isValid,[String(classes)]:!!classes};return(0,_combine_classes.combineClasses)(classesMap)})(_extends({},this.props,{value:void 0!==this.props.value?this.props.value:this.state.value}))}` } get shouldShowValidationMessage() { const { isValid: isValid, validationStatus: validationStatus } = this.props; const validationErrors = this.validationErrors ?? []; const isEditorValid = isValid && "invalid" !== validationStatus; return !isEditorValid && validationErrors.length > 0 } get aria() { const { isValid: isValid, readOnly: readOnly } = this.props; const result = { readonly: readOnly ? "true" : "false", invalid: !isValid ? "true" : "false" }; if (this.shouldShowValidationMessage) { result.describedBy = this.state.validationMessageGuid } return _extends({}, result, this.props.aria) } get validationErrors() { if (void 0 !== this.__getterCache.validationErrors) { return this.__getterCache.validationErrors } return this.__getterCache.validationErrors = (() => { const { validationError: validationError, validationErrors: validationErrors } = this.props; let allValidationErrors = validationErrors && [...validationErrors]; if (!allValidationErrors && validationError) { allValidationErrors = [_extends({}, validationError)] } return allValidationErrors })() } get validationMessageTarget() { var _this$rootElementRef; return null === (_this$rootElementRef = this.rootElementRef) || void 0 === _this$rootElementRef ? void 0 : _this$rootElementRef.current } get restAttributes() { const _this$props = this.props, restProps = function(r, e) { if (null == r) { return {} } var t = {}; for (var n in r) { if ({}.hasOwnProperty.call(r, n)) { if (e.includes(n)) { continue } t[n] = r[n] } } return t }(_this$props, _excluded); return restProps } focus() { this.widgetRef.current.focus() } blur() { this.widgetRef.current.blur() } componentWillUpdate(nextProps) { super.componentWillUpdate(); if (this.props.validationError !== nextProps.validationError || this.props.validationErrors !== nextProps.validationErrors) { this.__getterCache.validationErrors = void 0 } } render() { return (0, _inferno.normalizeProps)((0, _inferno.createComponentVNode)(2, _widget.Widget, _extends({ rootElementRef: this.rootElementRef, aria: this.aria, classes: this.cssClasses, activeStateEnabled: this.props.activeStateEnabled, focusStateEnabled: this.props.focusStateEnabled, hoverStateEnabled: this.props.hoverStateEnabled, accessKey: this.props.accessKey, className: this.props.className, rtlEnabled: this.props.rtlEnabled, hint: this.props.hint, disabled: this.props.disabled, height: this.props.height, width: this.props.width, onFocusIn: this.props.onFocusIn, onClick: this.props.onClick, onKeyDown: this.props.onKeyDown, tabIndex: this.props.tabIndex, visible: this.props.visible }, this.restAttributes, { children: (0, _inferno.createFragment)([this.props.children, this.state.isValidationMessageVisible && (0, _inferno.createComponentVNode)(2, _validation_message.ValidationMessage, { validationErrors: this.validationErrors, mode: this.props.validationMessageMode, positionSide: this.props.validationMessagePosition, rtlEnabled: this.props.rtlEnabled, target: this.validationMessageTarget, boundary: this.validationMessageTarget, visualContainer: this.validationMessageTarget, contentId: this.state.validationMessageGuid })], 0) }), null, this.widgetRef)) } } exports.Editor = Editor; Editor.defaultProps = defaultEditorProps; const __defaultOptionRules = [] }, 16753: /*!********************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/ui/check_box/editor_base/wrapper.js ***! \********************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _element_data = __webpack_require__( /*! ../../../../core/element_data */ 74663); var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../../../core/renderer */ 64553)); var _callbacks = _interopRequireDefault(__webpack_require__( /*! ../../../../core/utils/callbacks */ 84718)); var _extend = __webpack_require__( /*! ../../../../core/utils/extend */ 52576); var _type = __webpack_require__( /*! ../../../../core/utils/type */ 11528); var _editor = _interopRequireDefault(__webpack_require__( /*! ../../../../ui/editor/editor */ 78694)); var _validation_engine = _interopRequireDefault(__webpack_require__( /*! ../../../../ui/validation_engine */ 19391)); var _component_wrapper = __webpack_require__( /*! ../../../core/r1/component_wrapper */ 34993); var _dom = __webpack_require__( /*! ../../../core/r1/utils/dom */ 8808); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } class Editor extends _component_wrapper.ComponentWrapper { getProps() { const props = super.getProps(); props.onFocusIn = () => { const isValidationMessageShownOnFocus = "auto" === this.option("validationMessageMode"); if (isValidationMessageShownOnFocus) { const $validationMessageWrapper = (0, _renderer.default)((0, _dom.querySelectorInSameDocument)(this.element(), ".dx-invalid-message.dx-overlay-wrapper")); null === $validationMessageWrapper || void 0 === $validationMessageWrapper || $validationMessageWrapper.removeClass("dx-invalid-message-auto"); const timeToWaitBeforeShow = 150; if (this.showValidationMessageTimeout) { clearTimeout(this.showValidationMessageTimeout) } this.showValidationMessageTimeout = setTimeout((() => { null === $validationMessageWrapper || void 0 === $validationMessageWrapper || $validationMessageWrapper.addClass("dx-invalid-message-auto") }), timeToWaitBeforeShow) } }; props.saveValueChangeEvent = e => { this._valueChangeEventInstance = e }; return props } _createElement(element) { super._createElement(element); this.showValidationMessageTimeout = void 0; this.validationRequest = (0, _callbacks.default)(); (0, _element_data.data)(this.$element()[0], "dx-validation-target", this) } _render() { var _this$option; null === (_this$option = this.option("_onMarkupRendered")) || void 0 === _this$option || _this$option() } _init() { super._init(); this._initialValue = this.option("value") } _initializeComponent() { super._initializeComponent(); this._valueChangeAction = this._createActionByOption("onValueChanged", { excludeValidators: ["disabled", "readOnly"] }) } _initOptions(options) { super._initOptions(options); this.option(_validation_engine.default.initValidationOptions(options)) } _getDefaultOptions() { return (0, _extend.extend)(super._getDefaultOptions(), { validationMessageOffset: { h: 0, v: 0 }, validationTooltipOptions: {} }) } _bindInnerWidgetOptions(innerWidget, optionsContainer) { const innerWidgetOptions = (0, _extend.extend)({}, innerWidget.option()); const syncOptions = () => this._silent(optionsContainer, innerWidgetOptions); syncOptions(); innerWidget.on("optionChanged", syncOptions) } _raiseValidation(value, previousValue) { const areValuesEmpty = !(0, _type.isDefined)(value) && !(0, _type.isDefined)(previousValue); if (value !== previousValue && !areValuesEmpty) { this.validationRequest.fire({ value: value, editor: this }) } } _raiseValueChangeAction(value, previousValue) { var _this$_valueChangeAct; null === (_this$_valueChangeAct = this._valueChangeAction) || void 0 === _this$_valueChangeAct || _this$_valueChangeAct.call(this, { element: this.$element(), previousValue: previousValue, value: value, event: this._valueChangeEventInstance }); this._valueChangeEventInstance = void 0 } _optionChanged(option) { const { name: name, previousValue: previousValue, value: value } = option; if (name && void 0 !== this._getActionConfigs()[name]) { this._addAction(name) } switch (name) { case "value": this._raiseValidation(value, previousValue); this.option("isDirty", this._initialValue !== value); this._raiseValueChangeAction(value, previousValue); break; case "onValueChanged": this._valueChangeAction = this._createActionByOption("onValueChanged", { excludeValidators: ["disabled", "readOnly"] }); break; case "isValid": case "validationError": case "validationErrors": case "validationStatus": this.option(_validation_engine.default.synchronizeValidationOptions(option, this.option())) } super._optionChanged(option) } clear() { const { value: value } = this._getDefaultOptions(); this.option({ value: value }) } reset() { let value = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : void 0; if (arguments.length) { this._initialValue = value } this.option("value", this._initialValue); this.option("isDirty", false); this.option("isValid", true) } _dispose() { super._dispose(); (0, _element_data.data)(this.element(), "dx-validation-target", null); if (this.showValidationMessageTimeout) { clearTimeout(this.showValidationMessageTimeout) } } } exports.default = Editor; const prevIsEditor = _editor.default.isEditor; const newIsEditor = instance => prevIsEditor(instance) || instance instanceof Editor; Editor.isEditor = newIsEditor; _editor.default.isEditor = newIsEditor }, 3535: /*!******************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/ui/check_box/generated_wrapper.js ***! \******************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _component_registrator = _interopRequireDefault(__webpack_require__( /*! ../../../core/component_registrator */ 92848)); var _check_box = __webpack_require__( /*! ./check_box */ 54516); var _wrapper = _interopRequireDefault(__webpack_require__( /*! ./wrapper */ 81529)); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } class CheckBox extends _wrapper.default { getProps() { const props = super.getProps(); props.onKeyDown = this._wrapKeyDownHandler(props.onKeyDown); return props } focus() { var _this$viewRef; return null === (_this$viewRef = this.viewRef) || void 0 === _this$viewRef ? void 0 : _this$viewRef.focus(...arguments) } blur() { var _this$viewRef2; return null === (_this$viewRef2 = this.viewRef) || void 0 === _this$viewRef2 ? void 0 : _this$viewRef2.blur(...arguments) } _getActionConfigs() { return { onFocusIn: {}, onClick: {} } } get _propsInfo() { return { twoWay: [ ["value", "defaultValue", "valueChange"] ], allowNull: ["defaultValue", "validationError", "validationErrors", "value"], elements: [], templates: [], props: ["text", "iconSize", "enableThreeStateBehavior", "activeStateEnabled", "hoverStateEnabled", "focusStateEnabled", "saveValueChangeEvent", "defaultValue", "valueChange", "readOnly", "name", "validationError", "validationErrors", "validationMessageMode", "validationMessagePosition", "validationStatus", "isValid", "isDirty", "inputAttr", "onFocusIn", "className", "accessKey", "disabled", "height", "hint", "onClick", "onKeyDown", "rtlEnabled", "tabIndex", "visible", "width", "aria", "value"] } } get _viewComponent() { return _check_box.CheckBox } } exports.default = CheckBox; (0, _component_registrator.default)("dxCheckBox", CheckBox); CheckBox.defaultOptions = _check_box.defaultOptions }, 50758: /*!******************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/ui/check_box/index.js ***! \******************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _generated_wrapper = (e = __webpack_require__( /*! ./generated_wrapper */ 3535), e && e.__esModule ? e : { default: e }); var e; exports.default = _generated_wrapper.default }, 81529: /*!********************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/ui/check_box/wrapper.js ***! \********************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _wrapper = (e = __webpack_require__( /*! ./editor_base/wrapper */ 16753), e && e.__esModule ? e : { default: e }); var e; class CheckBox extends _wrapper.default { _useTemplates() { return false } _isFocused() { const focusTarget = this.$element()[0]; return focusTarget.classList.contains("dx-state-focused") } getSupportedKeyNames() { return ["space"] } getProps() { const props = super.getProps(); if (null !== props.value) { props.value = Boolean(props.value) } return props } } exports.default = CheckBox }, 91568: /*!****************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/ui/check_box/wrappers/validation_message.js ***! \****************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.defaultValidationMessageProps = exports.ValidationMessage = void 0; var _inferno = __webpack_require__( /*! inferno */ 76231); var _validation_message = (e = __webpack_require__( /*! ../../../../ui/validation_message */ 59098), e && e.__esModule ? e : { default: e }); var e; var _base_props = __webpack_require__( /*! ../../../core/r1/base_props */ 28112); var _dom_component_wrapper = __webpack_require__( /*! ../../../core/r1/dom_component_wrapper */ 10922); var _index = __webpack_require__( /*! ../../../core/r1/runtime/inferno/index */ 6257); const _excluded = ["accessKey", "activeStateEnabled", "boundary", "className", "contentId", "disabled", "focusStateEnabled", "height", "hint", "hoverStateEnabled", "mode", "offset", "onClick", "onKeyDown", "positionSide", "rtlEnabled", "tabIndex", "target", "validationErrors", "visible", "visualContainer", "width"]; function _extends() { return _extends = Object.assign ? Object.assign.bind() : function(n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) { ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]) } } return n }, _extends.apply(null, arguments) } const defaultValidationMessageProps = exports.defaultValidationMessageProps = _extends({}, _base_props.BaseWidgetDefaultProps, { mode: "auto", positionSide: "top", offset: Object.freeze({ h: 0, v: 0 }), isReactComponentWrapper: true }); class ValidationMessage extends _index.BaseInfernoComponent { constructor(props) { super(props); this.state = {} } get restAttributes() { const _this$props = this.props, restProps = function(r, e) { if (null == r) { return {} } var t = {}; for (var n in r) { if ({}.hasOwnProperty.call(r, n)) { if (e.includes(n)) { continue } t[n] = r[n] } } return t }(_this$props, _excluded); return restProps } render() { return (0, _inferno.normalizeProps)((0, _inferno.createComponentVNode)(2, _dom_component_wrapper.DomComponentWrapper, _extends({ componentType: _validation_message.default, componentProps: this.props, templateNames: [] }, this.restAttributes))) } } exports.ValidationMessage = ValidationMessage; ValidationMessage.defaultProps = defaultValidationMessageProps }, 36266: /*!************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/ui/collection/collection_widget.base.js ***! \************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _click = __webpack_require__( /*! ../../../common/core/events/click */ 64044); var _contextmenu = __webpack_require__( /*! ../../../common/core/events/contextmenu */ 80248); var _events_engine = _interopRequireDefault(__webpack_require__( /*! ../../../common/core/events/core/events_engine */ 92774)); var _hold = _interopRequireDefault(__webpack_require__( /*! ../../../common/core/events/hold */ 68095)); var _pointer = _interopRequireDefault(__webpack_require__( /*! ../../../common/core/events/pointer */ 89797)); var _index = __webpack_require__( /*! ../../../common/core/events/utils/index */ 98834); var _message = _interopRequireDefault(__webpack_require__( /*! ../../../common/core/localization/message */ 4671)); var _action = _interopRequireDefault(__webpack_require__( /*! ../../../core/action */ 88412)); var _dom_adapter = _interopRequireDefault(__webpack_require__( /*! ../../../core/dom_adapter */ 64960)); var _guid = _interopRequireDefault(__webpack_require__( /*! ../../../core/guid */ 19427)); var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../../core/renderer */ 64553)); var _bindable_template = __webpack_require__( /*! ../../../core/templates/bindable_template */ 27286); var _common = __webpack_require__( /*! ../../../core/utils/common */ 17781); var _data = __webpack_require__( /*! ../../../core/utils/data */ 31e3); var _deferred = __webpack_require__( /*! ../../../core/utils/deferred */ 87739); var _extend = __webpack_require__( /*! ../../../core/utils/extend */ 52576); var _iterator = __webpack_require__( /*! ../../../core/utils/iterator */ 21274); var _size = __webpack_require__( /*! ../../../core/utils/size */ 57653); var _template_manager = __webpack_require__( /*! ../../../core/utils/template_manager */ 49194); var _type = __webpack_require__( /*! ../../../core/utils/type */ 11528); var _data_helper = _interopRequireDefault(__webpack_require__( /*! ../../../data_helper */ 87755)); var _selectors = __webpack_require__( /*! ../../../ui/widget/selectors */ 35944); var _m_element = __webpack_require__( /*! ../../core/m_element */ 93630); var _widget = _interopRequireDefault(__webpack_require__( /*! ../../core/widget/widget */ 89275)); var _item = _interopRequireDefault(__webpack_require__( /*! ../../ui/collection/item */ 30845)); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } function _extends() { return _extends = Object.assign ? Object.assign.bind() : function(n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) { ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]) } } return n }, _extends.apply(null, arguments) } const ITEM_CLASS = "dx-item"; const ITEM_PATH_REGEX = /^([^.]+\[\d+\]\.)+([\w.]+)$/; class CollectionWidget extends _widget.default { _supportedKeys() { const move = (location, e) => { if (!(0, _index.isCommandKeyPressed)(e)) { e.preventDefault(); e.stopPropagation(); this._moveFocus(location, e) } }; return _extends({}, super._supportedKeys(), { space: e => { e.preventDefault(); this._enterKeyHandler(e) }, enter: this._enterKeyHandler, leftArrow: move.bind(this, "left"), rightArrow: move.bind(this, "right"), upArrow: move.bind(this, "up"), downArrow: move.bind(this, "down"), pageUp: move.bind(this, "up"), pageDown: move.bind(this, "down"), home: move.bind(this, "first"), end: move.bind(this, "last") }) } _getHandlerExtendedParams(e, $target) { const params = (0, _extend.extend)({}, e, { target: $target.get(0), currentTarget: $target.get(0) }); return params } _enterKeyHandler(e) { const { focusedElement: focusedElement } = this.option(); const $itemElement = (0, _renderer.default)(focusedElement); if (!$itemElement.length) { return } const itemData = this._getItemData($itemElement); if (null !== itemData && void 0 !== itemData && itemData.onClick) { this._itemEventHandlerByHandler($itemElement, itemData.onClick, { event: e }) } this._itemClickHandler(this._getHandlerExtendedParams(e, $itemElement)) } _getDefaultOptions() { return _extends({}, super._getDefaultOptions(), { selectOnFocus: false, loopItemFocus: true, items: [], itemTemplate: "item", onItemRendered: null, onItemClick: null, onItemHold: null, itemHoldTimeout: 750, onItemContextMenu: null, onFocusedItemChanged: null, noDataText: _message.default.format("dxCollectionWidget-noDataText"), encodeNoDataText: false, dataSource: null, _dataController: null, _itemAttributes: {}, itemTemplateProperty: "template", focusedElement: null, displayExpr: void 0, disabledExpr: data => data ? data.disabled : void 0, visibleExpr: data => data ? data.visible : void 0 }) } _init() { this._compileDisplayGetter(); this._initDataController(); super._init(); this._activeStateUnit = `.${ITEM_CLASS}`; this._cleanRenderedItems(); this._refreshDataSource() } _compileDisplayGetter() { const { displayExpr: displayExpr } = this.option(); this._displayGetter = displayExpr ? (0, _data.compileGetter)(displayExpr) : void 0 } _initTemplates() { this._initItemsFromMarkup(); this._initDefaultItemTemplate(); super._initTemplates() } _getAnonymousTemplateName() { return "item" } _initDefaultItemTemplate() { const fieldsMap = this._getFieldsMap(); this._templateManager.addDefaultTemplates({ item: new _bindable_template.BindableTemplate((($container, data) => { if ((0, _type.isPlainObject)(data)) { this._prepareDefaultItemTemplate(data, $container) } else { if (fieldsMap && (0, _type.isFunction)(fieldsMap.text)) { data = fieldsMap.text(data) } $container.text(String((0, _common.ensureDefined)(data, ""))) } }), this._getBindableFields(), this.option("integrationOptions.watchMethod"), fieldsMap) }) } _getBindableFields() { return ["text", "html"] } _getFieldsMap() { if (this._displayGetter) { return { text: this._displayGetter } } return } _prepareDefaultItemTemplate(data, $container) { const { text: text, html: html } = data; if ((0, _type.isDefined)(text)) { $container.text(text) } if ((0, _type.isDefined)(html)) { $container.html(html) } } _initItemsFromMarkup() { const rawItems = (0, _template_manager.findTemplates)(this.$element(), "dxItem"); if (!rawItems.length || this.option("items").length) { return } const items = rawItems.map((_ref => { let { element: element, options: options } = _ref; const isTemplateRequired = /\S/.test(element.innerHTML) && !options.template; if (isTemplateRequired) { options.template = this._prepareItemTemplate(element) } else { (0, _renderer.default)(element).remove() } return options })); this.option("items", items) } _prepareItemTemplate(item) { const templateId = `tmpl-${new _guid.default}`; const $template = (0, _renderer.default)(item).detach().clone().removeAttr("data-options").addClass("dx-template-wrapper"); this._saveTemplate(templateId, $template); return templateId } _dataSourceOptions() { return { paginate: false } } _cleanRenderedItems() { this._renderedItemsCount = 0 } _focusTarget() { return this.$element() } _focusInHandler(e) { super._focusInHandler(e); if (!this._isFocusTarget(e.target)) { return } const $focusedElement = (0, _renderer.default)(this.option("focusedElement")); if ($focusedElement.length) { this._shouldSkipSelectOnFocus = true; this._setFocusedItem($focusedElement); this._shouldSkipSelectOnFocus = false } else { const $activeItem = this._getActiveItem(); if ($activeItem.length) { this.option("focusedElement", (0, _m_element.getPublicElement)($activeItem)) } } } _focusOutHandler(e) { super._focusOutHandler(e); const { focusedElement: focusedElement } = this.option(); const $target = (0, _renderer.default)(focusedElement); this._updateFocusedItemState($target, false) } _findActiveTarget($element) { return $element.find(this._activeStateUnit) } _getActiveItem(last) { const { focusedElement: focusedElement } = this.option(); const $focusedElement = (0, _renderer.default)(focusedElement); if ($focusedElement.length) { return $focusedElement } return this._determineFocusedElement(last) } _determineFocusedElement(last) { let index = this._getFocusedElementIndex(); const activeElements = this._getActiveElement(); const lastIndex = activeElements.length - 1; if (index < 0) { index = last ? lastIndex : 0 } return activeElements.eq(index) } _getFocusedElementIndex() { return 0 } _moveFocus(location, e) { const $items = this._getAvailableItems(); let $newTarget = (0, _renderer.default)(); switch (location) { case "pageup": case "up": $newTarget = this._prevItem($items); break; case "pagedown": case "down": $newTarget = this._nextItem($items); break; case "right": $newTarget = this.option("rtlEnabled") ? this._prevItem($items) : this._nextItem($items); break; case "left": $newTarget = this.option("rtlEnabled") ? this._nextItem($items) : this._prevItem($items); break; case "first": $newTarget = $items.first(); break; case "last": $newTarget = $items.last(); break; default: return false } if (0 !== $newTarget.length) { this.option("focusedElement", (0, _m_element.getPublicElement)($newTarget)) } } _getVisibleItems($itemElements) { const $items = $itemElements ?? this._itemElements(); return $items.filter(":visible") } _getAvailableItems($itemElements) { return this._getVisibleItems($itemElements) } _prevItem($items) { const $target = this._getActiveItem(); const targetIndex = $items.index($target); const $last = $items.last(); let $item = (0, _renderer.default)($items[targetIndex - 1]); const loop = this.option("loopItemFocus"); if (0 === $item.length && loop) { $item = $last } return $item } _nextItem($items) { const $target = this._getActiveItem(true); const targetIndex = $items.index($target); const $first = $items.first(); let $item = (0, _renderer.default)($items[targetIndex + 1]); const loop = this.option("loopItemFocus"); if (0 === $item.length && loop) { $item = $first } return $item } _selectFocusedItem($target) { this.selectItem($target) } _updateFocusedItemState(target, isFocused, needCleanItemId) { const $target = (0, _renderer.default)(target); if ($target.length) { this._refreshActiveDescendant(); this._refreshItemId($target, needCleanItemId); this._toggleFocusClass(isFocused, $target) } this._updateParentActiveDescendant() } _getElementClassToSkipRefreshId() { return "" } _shouldSkipRefreshId(target) { const elementClass = this._getElementClassToSkipRefreshId(); const shouldSkipRefreshId = (0, _renderer.default)(target).hasClass(elementClass); return shouldSkipRefreshId } _refreshActiveDescendant($target) { const { focusedElement: focusedElement } = this.option(); if ((0, _type.isDefined)(focusedElement)) { const shouldSetExistingId = this._shouldSkipRefreshId(focusedElement); const id = shouldSetExistingId ? (0, _renderer.default)(focusedElement).attr("id") : this.getFocusedItemId(); this.setAria("activedescendant", id, $target); return } this.setAria("activedescendant", null, $target) } _refreshItemId($target, needCleanItemId) { const { focusedElement: focusedElement } = this.option(); const shouldSkipRefreshId = this._shouldSkipRefreshId($target); if (shouldSkipRefreshId) { return } if (!needCleanItemId && focusedElement) { this.setAria("id", this.getFocusedItemId(), $target) } else { this.setAria("id", null, $target) } } _isDisabled($element) { return $element && "true" === (0, _renderer.default)($element).attr("aria-disabled") } _setFocusedItem($target) { if (!$target || !$target.length) { return } this._updateFocusedItemState($target, true); this.onFocusedItemChanged(this.getFocusedItemId()); const { selectOnFocus: selectOnFocus } = this.option(); const isTargetDisabled = this._isDisabled($target); if (selectOnFocus && !isTargetDisabled && !this._shouldSkipSelectOnFocus) { this._selectFocusedItem($target) } } _findItemElementByItem(item) { let result = (0, _renderer.default)(); const itemDataKey = this._itemDataKey(); this.itemElements().each(((index, itemElement) => { const $item = (0, _renderer.default)(itemElement); if ($item.data(itemDataKey) === item) { result = $item; return false } return true })); return result } _getIndexByItem(item) { const { items: items } = this.option(); return items.indexOf(item) } _itemOptionChanged(item, property, value, prevValue) { const $item = this._findItemElementByItem(item); if (!$item.length) { return } if (!this.constructor.ItemClass.getInstance($item).setDataField(property, value)) { this._refreshItem($item, item) } const isDisabling = "disabled" === property && value; if (isDisabling) { this._resetItemFocus($item) } } _resetItemFocus($item) { if ($item.is(this.option("focusedElement"))) { this._resetFocusedElement() } } _resetFocusedElement() { this.option("focusedElement", null) } _refreshItem($item, item) { const itemData = this._getItemData($item); const index = $item.data(this._itemIndexKey()); this._renderItem(this._renderedItemsCount + index, itemData, null, $item) } _updateParentActiveDescendant() {} _optionChanged(args) { const { name: name, value: value, previousValue: previousValue, fullName: fullName } = args; if ("items" === name) { const matches = fullName.match(ITEM_PATH_REGEX); if (null !== matches && void 0 !== matches && matches.length) { const property = matches[matches.length - 1]; const itemPath = fullName.replace(`.${property}`, ""); const item = this.option(itemPath); this._itemOptionChanged(item, property, value, previousValue); return } } switch (name) { case "items": case "_itemAttributes": case "itemTemplateProperty": case "useItemTextAsTitle": this._cleanRenderedItems(); this._invalidate(); break; case "dataSource": this._refreshDataSource(); this._renderEmptyMessage(); break; case "noDataText": case "encodeNoDataText": this._renderEmptyMessage(); break; case "itemTemplate": case "visibleExpr": case "disabledExpr": this._invalidate(); break; case "onItemRendered": this._createItemRenderAction(); break; case "onItemClick": case "selectOnFocus": case "loopItemFocus": break; case "onItemHold": case "itemHoldTimeout": this._attachHoldEvent(); break; case "onItemContextMenu": this._attachContextMenuEvent(); break; case "onFocusedItemChanged": this.onFocusedItemChanged = this._createActionByOption("onFocusedItemChanged"); break; case "focusedElement": this._updateFocusedItemState(previousValue, false, true); this._setFocusedItem((0, _renderer.default)(value)); break; case "displayExpr": this._compileDisplayGetter(); this._initDefaultItemTemplate(); this._invalidate(); break; default: super._optionChanged(args) } } _invalidate() { this._resetFocusedElement(); super._invalidate() } _loadNextPage() { this._expectNextPageLoading(); return this._dataController.loadNextPage() } _expectNextPageLoading() { this._startIndexForAppendedItems = 0 } _expectLastItemLoading() { this._startIndexForAppendedItems = -1 } _forgetNextPageLoading() { this._startIndexForAppendedItems = null } _dataSourceChangedHandler(newItems, e) { const items = this.option("items"); if (this._initialized && items && this._shouldAppendItems()) { this._renderedItemsCount = items.length; if (!this._isLastPage() || -1 !== this._startIndexForAppendedItems) { this.option().items = items.concat(newItems.slice(this._startIndexForAppendedItems)) } this._forgetNextPageLoading(); this._refreshContent() } else { this.option("items", newItems.slice()) } } _refreshContent() { this._prepareContent(); this._renderContent() } _dataSourceLoadErrorHandler() { this._forgetNextPageLoading(); this.option("items", this.option("items")) } _shouldAppendItems() { return null != this._startIndexForAppendedItems && this._allowDynamicItemsAppend() } _allowDynamicItemsAppend() { return false } _clean() { this._cleanFocusState(); this._cleanItemContainer(); if (this._inkRipple) { delete this._inkRipple } this._resetActiveState() } _cleanItemContainer() { (0, _renderer.default)(this._itemContainer()).empty() } _dispose() { super._dispose(); clearTimeout(this._itemFocusTimeout) } _refresh() { this._cleanRenderedItems(); super._refresh() } _itemContainer(searchEnabled, previousSelectAllEnabled) { return this.$element() } _itemClass() { return ITEM_CLASS } _itemContentClass() { return `${this._itemClass()}-content` } _itemResponseWaitClass() { return "dx-item-response-wait" } _itemSelector() { return `.${this._itemClass()}` } _itemDataKey() { return "dxItemData" } _itemIndexKey() { return "dxItemIndex" } _itemElements() { return this._itemContainer().find(this._itemSelector()) } _initMarkup() { super._initMarkup(); this.onFocusedItemChanged = this._createActionByOption("onFocusedItemChanged"); this.$element().addClass("dx-collection"); this._prepareContent() } _prepareContent() { (0, _common.deferRenderer)((() => { this._renderContentImpl() }))() } _renderContent() { this._fireContentReadyAction() } _render() { super._render(); this._attachClickEvent(); this._attachHoldEvent(); this._attachContextMenuEvent() } _getPointerEvent() { return _pointer.default.down } _attachClickEvent() { const itemSelector = this._itemSelector(); const pointerEvent = this._getPointerEvent(); const clickEventNamespace = (0, _index.addNamespace)(_click.name, this.NAME); const pointerEventNamespace = (0, _index.addNamespace)(pointerEvent, this.NAME); const pointerAction = new _action.default((args => { const { event: event } = args; this._itemPointerDownHandler(event) })); _events_engine.default.off(this._itemContainer(), clickEventNamespace, itemSelector); _events_engine.default.off(this._itemContainer(), pointerEventNamespace, itemSelector); _events_engine.default.on(this._itemContainer(), clickEventNamespace, itemSelector, (e => this._itemClickHandler(e))); _events_engine.default.on(this._itemContainer(), pointerEventNamespace, itemSelector, (e => { pointerAction.execute({ element: (0, _renderer.default)(e.target), event: e }) })) } _itemClickHandler(e, args, config) { this._itemDXEventHandler(e, "onItemClick", args, config) } _itemPointerDownHandler(e) { if (!this.option("focusStateEnabled")) { return } this._itemFocusHandler = () => { clearTimeout(this._itemFocusTimeout); this._itemFocusHandler = void 0; if (e.isDefaultPrevented()) { return } const $target = (0, _renderer.default)(e.target); const $closestItem = $target.closest(this._itemElements()); const $closestFocusable = this._closestFocusable($target); if ($closestItem.length && this._isFocusTarget(null === $closestFocusable || void 0 === $closestFocusable ? void 0 : $closestFocusable.get(0))) { this._shouldSkipSelectOnFocus = true; this.option("focusedElement", (0, _m_element.getPublicElement)($closestItem)); this._shouldSkipSelectOnFocus = false } }; this._itemFocusTimeout = setTimeout(this._forcePointerDownFocus.bind(this)) } _closestFocusable($target) { if ($target.is(_selectors.focusable)) { return $target } let $nextTarget = $target.parent(); while ($nextTarget.length && !_dom_adapter.default.isDocument($nextTarget.get(0)) && !_dom_adapter.default.isDocumentFragment($nextTarget.get(0))) { if ($nextTarget.is(_selectors.focusable)) { return $nextTarget } $nextTarget = $nextTarget.parent() } return } _forcePointerDownFocus() { if (this._itemFocusHandler) { this._itemFocusHandler() } } _updateFocusState(e, isFocused) { super._updateFocusState(e, isFocused); this._forcePointerDownFocus() } _attachHoldEvent() { const $itemContainer = this._itemContainer(); const itemSelector = this._itemSelector(); const eventName = (0, _index.addNamespace)(_hold.default.name, this.NAME); _events_engine.default.off($itemContainer, eventName, itemSelector); _events_engine.default.on($itemContainer, eventName, itemSelector, { timeout: this._getHoldTimeout() }, this._itemHoldHandler.bind(this)) } _getHoldTimeout() { const { itemHoldTimeout: itemHoldTimeout } = this.option(); return itemHoldTimeout } _shouldFireHoldEvent() { return this.hasActionSubscription("onItemHold") } _itemHoldHandler(e) { if (this._shouldFireHoldEvent()) { this._itemDXEventHandler(e, "onItemHold") } else { e.cancel = true } } _attachContextMenuEvent() { const $itemContainer = this._itemContainer(); const itemSelector = this._itemSelector(); const eventName = (0, _index.addNamespace)(_contextmenu.name, this.NAME); _events_engine.default.off($itemContainer, eventName, itemSelector); _events_engine.default.on($itemContainer, eventName, itemSelector, this._itemContextMenuHandler.bind(this)) } _shouldFireContextMenuEvent() { return this.hasActionSubscription("onItemContextMenu") } _itemContextMenuHandler(e) { if (this._shouldFireContextMenuEvent()) { this._itemDXEventHandler(e, "onItemContextMenu") } else { e.cancel = true } } _renderContentImpl() { const { items: items } = this.option(); const itemsToRender = items ?? []; if (this._renderedItemsCount) { this._renderItems(itemsToRender.slice(this._renderedItemsCount)) } else { this._renderItems(itemsToRender) } } _renderItems(items) { if (items.length) { (0, _iterator.each)(items, ((index, itemData) => { this._renderItem(this._renderedItemsCount + index, itemData) })) } this._renderEmptyMessage() } _getItemsContainer() { return this._itemContainer() } _setAttributes($element) { const attributes = _extends({}, this.option("_itemAttributes")); const { class: customClassValue } = attributes; if (customClassValue) { const currentClassValue = $element.get(0).className; attributes.class = [currentClassValue, customClassValue].join(" ") } $element.attr(attributes) } _renderItem(index, itemData, $container, $itemToReplace) { const itemIndex = (null === index || void 0 === index ? void 0 : index.item) ?? index; const $containerToRender = $container ?? this._getItemsContainer(); const $itemFrame = this._renderItemFrame(itemIndex, itemData, $containerToRender, $itemToReplace); this._setElementData($itemFrame, itemData, itemIndex); this._setAttributes($itemFrame); this._attachItemClickEvent(itemData, $itemFrame); const $itemContent = this._getItemContent($itemFrame); const { itemTemplate: itemTemplate } = this.option(); const renderContentPromise = this._renderItemContent({ index: itemIndex, itemData: itemData, container: (0, _m_element.getPublicElement)($itemContent), contentClass: this._itemContentClass(), defaultTemplateName: itemTemplate }); (0, _deferred.when)(renderContentPromise).done(($content => { this._postprocessRenderItem({ itemElement: $itemFrame, itemContent: $content, itemData: itemData, itemIndex: itemIndex }); this._executeItemRenderAction(index, itemData, (0, _m_element.getPublicElement)($itemFrame)) })); return $itemFrame } _getItemContent($itemFrame) { const $itemContent = $itemFrame.find(".dx-item-content-placeholder"); $itemContent.removeClass("dx-item-content-placeholder"); return $itemContent } _attachItemClickEvent(itemData, $itemElement) { if (!itemData || !itemData.onClick) { return } _events_engine.default.on($itemElement, _click.name, (e => { this._itemEventHandlerByHandler($itemElement, itemData.onClick, { event: e }) })) } _renderItemContent(args) { const itemTemplateName = this._getItemTemplateName(args); const itemTemplate = this._getTemplate(itemTemplateName); this._addItemContentClasses(args); const $templateResult = (0, _renderer.default)(this._createItemByTemplate(itemTemplate, args)); if (!$templateResult.hasClass("dx-template-wrapper")) { return args.container } return this._renderItemContentByNode(args, $templateResult) } _renderItemContentByNode(args, $node) { (0, _renderer.default)(args.container).replaceWith($node); args.container = (0, _m_element.getPublicElement)($node); this._addItemContentClasses(args); return $node } _addItemContentClasses(args) { const classes = [ITEM_CLASS + "-content", args.contentClass]; (0, _renderer.default)(args.container).addClass(classes.join(" ")) } _appendItemToContainer($container, $itemFrame, index) { $itemFrame.appendTo($container) } _renderItemFrame(index, itemData, $container, $itemToReplace) { const $itemFrame = (0, _renderer.default)("<div>"); new this.constructor.ItemClass($itemFrame, this._itemOptions(), itemData || {}); if (null !== $itemToReplace && void 0 !== $itemToReplace && $itemToReplace.length) { $itemToReplace.replaceWith($itemFrame) } else { this._appendItemToContainer.call(this, $container, $itemFrame, index) } if (this.option("useItemTextAsTitle")) { const displayValue = this._displayGetter ? this._displayGetter(itemData) : itemData; $itemFrame.attr("title", displayValue) } return $itemFrame } _itemOptions() { return { watchMethod: () => this.option("integrationOptions.watchMethod"), owner: this, fieldGetter: field => { const expr = this.option(`${field}Expr`); const getter = (0, _data.compileGetter)(expr); return getter } } } _postprocessRenderItem(args) {} _executeItemRenderAction(index, itemData, itemElement) { this._getItemRenderAction()({ itemElement: itemElement, itemIndex: index, itemData: itemData }) } _setElementData(element, data, index) { element.addClass([ITEM_CLASS, this._itemClass()].join(" ")).data(this._itemDataKey(), data).data(this._itemIndexKey(), index) } _createItemRenderAction() { this._itemRenderAction = this._createActionByOption("onItemRendered", { element: this.element(), excludeValidators: ["disabled", "readOnly"], category: "rendering" }); return this._itemRenderAction } _getItemRenderAction() { return this._itemRenderAction ?? this._createItemRenderAction() } _getItemTemplateName(args) { const data = args.itemData; const templateProperty = args.templateProperty || this.option("itemTemplateProperty"); const template = data && data[templateProperty]; return template || args.defaultTemplateName } _createItemByTemplate(itemTemplate, renderArgs) { const { itemData: itemData, container: container, index: index } = renderArgs; return itemTemplate.render({ model: itemData, container: container, index: index, onRendered: this._onItemTemplateRendered(itemTemplate, renderArgs) }) } _onItemTemplateRendered(itemTemplate, renderArgs) { return () => {} } _emptyMessageContainer() { return this._itemContainer() } _renderEmptyMessage(rootNodes) { const items = rootNodes ?? this.option("items"); const noDataText = this.option("noDataText"); const hideNoData = !noDataText || items && items.length || this._dataController.isLoading(); if (hideNoData && this._$noData) { this._$noData.remove(); this._$noData = null; this.setAria("label", void 0) } if (!hideNoData) { this._$noData = this._$noData ?? (0, _renderer.default)("<div>").addClass("dx-empty-message"); this._$noData.appendTo(this._emptyMessageContainer()); if (this.option("encodeNoDataText")) { this._$noData.text(noDataText) } else { this._$noData.html(noDataText) } } this.$element().toggleClass("dx-empty-collection", !hideNoData) } _itemDXEventHandler(dxEvent, handlerOptionName, actionArgs, actionConfig) { this._itemEventHandler(dxEvent.target, handlerOptionName, (0, _extend.extend)(actionArgs, { event: dxEvent }), actionConfig) } _itemEventHandler(initiator, handlerOptionName, actionArgs, actionConfig) { const action = this._createActionByOption(handlerOptionName, (0, _extend.extend)({ validatingTargetName: "itemElement" }, actionConfig)); return this._itemEventHandlerImpl(initiator, action, actionArgs) } _itemEventHandlerByHandler(initiator, handler, actionArgs, actionConfig) { const action = this._createAction(handler, (0, _extend.extend)({ validatingTargetName: "itemElement" }, actionConfig)); return this._itemEventHandlerImpl(initiator, action, actionArgs) } _itemEventHandlerImpl(initiator, action, actionArgs) { const $itemElement = this._closestItemElement((0, _renderer.default)(initiator)); const args = (0, _extend.extend)({}, actionArgs); return action((0, _extend.extend)(actionArgs, this._extendActionArgs($itemElement), args)) } _extendActionArgs($itemElement) { return { itemElement: (0, _m_element.getPublicElement)($itemElement), itemIndex: this._itemElements().index($itemElement), itemData: this._getItemData($itemElement) } } _closestItemElement($element) { return (0, _renderer.default)($element).closest(this._itemSelector()) } _getItemData(itemElement) { return (0, _renderer.default)(itemElement).data(this._itemDataKey()) } _getSummaryItemsSize(dimension, items, includeMargin) { let result = 0; if (items) { (0, _iterator.each)(items, ((_, item) => { if ("width" === dimension) { result += (0, _size.getOuterWidth)(item, includeMargin ?? false) } else if ("height" === dimension) { result += (0, _size.getOuterHeight)(item, includeMargin ?? false) } })) } return result } getFocusedItemId() { if (!this._focusedItemId) { this._focusedItemId = `dx-${new _guid.default}` } return this._focusedItemId } itemElements() { return this._itemElements() } itemsContainer() { return this._itemContainer() } } CollectionWidget.include(_data_helper.default); CollectionWidget.ItemClass = _item.default; exports.default = CollectionWidget }, 30845: /*!******************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/ui/collection/item.js ***! \******************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _class = _interopRequireDefault(__webpack_require__( /*! ../../../core/class */ 55620)); var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../../core/renderer */ 64553)); var _iterator = __webpack_require__( /*! ../../../core/utils/iterator */ 21274); var _public_component = __webpack_require__( /*! ../../../core/utils/public_component */ 85521); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } class CollectionItem extends(_class.default.inherit({})) { ctor($element, options, rawData) { this._$element = $element; this._options = options; this._rawData = rawData; (0, _public_component.attachInstanceToElement)($element, this, this._dispose); this._render() } _render() { const $placeholder = (0, _renderer.default)("<div>").addClass("dx-item-content-placeholder"); this._$element.append($placeholder); this._watchers = []; this._renderWatchers() } _renderWatchers() { this._startWatcher("disabled", this._renderDisabled.bind(this)); this._startWatcher("visible", this._renderVisible.bind(this)) } _startWatcher(field, render) { const rawData = this._rawData; const exprGetter = this._options.fieldGetter(field); const watcher = ((watchMethod, fn, callback) => { const filteredCallback = (() => { let oldValue; return value => { if (oldValue !== value) { callback(value, oldValue); oldValue = value } } })(); return { dispose: watchMethod(fn, filteredCallback), force() { filteredCallback(fn()) } } })(this._options.watchMethod(), (() => exprGetter(rawData)), ((value, oldValue) => { this._dirty = true; render(value, oldValue) })); this._watchers.push(watcher) } setDataField() { this._dirty = false; (0, _iterator.each)(this._watchers, ((_, watcher) => { watcher.force() })); return this._dirty } _renderDisabled(value, oldValue) { this._$element.toggleClass("dx-state-disabled", !!value); this._$element.attr("aria-disabled", !!value); this._updateOwnerFocus(value) } _updateOwnerFocus(isDisabled) { const ownerComponent = this._options.owner; if (ownerComponent && isDisabled) { ownerComponent._resetItemFocus(this._$element) } } _renderVisible(value, oldValue) { this._$element.toggleClass("dx-state-invisible", void 0 !== value && !value) } _dispose() { (0, _iterator.each)(this._watchers, ((_, watcher) => { watcher.dispose() })) } static getInstance($element) { return (0, _public_component.getInstanceByElement)($element, this) } } exports.default = CollectionItem }, 88575: /*!***************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/ui/collection/m_collection_widget.async.js ***! \***************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _guid = _interopRequireDefault(__webpack_require__( /*! ../../../core/guid */ 19427)); var _deferred = __webpack_require__( /*! ../../../core/utils/deferred */ 87739); var _m_collection_widget = _interopRequireDefault(__webpack_require__( /*! ../../ui/collection/m_collection_widget.edit */ 3391)); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } function _extends() { return _extends = Object.assign ? Object.assign.bind() : function(n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) { ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]) } } return n }, _extends.apply(null, arguments) } class CollectionWidgetAsync extends _m_collection_widget.default { _initMarkup() { this._asyncTemplateItemsMap = {}; super._initMarkup() } _render() { super._render(); this._planPostRenderActions() } _renderItemContent(args) { const renderContentDeferred = (0, _deferred.Deferred)(); const itemDeferred = (0, _deferred.Deferred)(); const uniqueKey = `dx${new _guid.default}`; this._asyncTemplateItemsMap[uniqueKey] = itemDeferred; const $itemContent = super._renderItemContent(_extends({}, args, { uniqueKey: uniqueKey })); itemDeferred.done((() => { renderContentDeferred.resolve($itemContent) })); return renderContentDeferred.promise() } _onItemTemplateRendered(itemTemplate, renderArgs) { return () => { const { uniqueKey: uniqueKey } = renderArgs; if (uniqueKey) { var _this$_asyncTemplateI; null === (_this$_asyncTemplateI = this._asyncTemplateItemsMap[uniqueKey]) || void 0 === _this$_asyncTemplateI || _this$_asyncTemplateI.resolve() } } } _postProcessRenderItems() {} _planPostRenderActions() { for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { args[_key] = arguments[_key] } const d = (0, _deferred.Deferred)(); const asyncTemplateItems = Object.values(this._asyncTemplateItemsMap); _deferred.when.apply(this, asyncTemplateItems).done((() => { this._postProcessRenderItems(...args); d.resolve().done((() => { this._asyncTemplateItemsMap = {} })) })); return d.promise() } _clean() { super._clean(); const asyncTemplateItems = Object.values(this._asyncTemplateItemsMap); asyncTemplateItems.forEach((item => { item.reject() })); this._asyncTemplateItemsMap = {} } } exports.default = CollectionWidgetAsync }, 3391: /*!**************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/ui/collection/m_collection_widget.edit.js ***! \**************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = exports.NOT_EXISTING_INDEX = void 0; var _events_engine = _interopRequireDefault(__webpack_require__( /*! ../../../common/core/events/core/events_engine */ 92774)); var _data_source = __webpack_require__( /*! ../../../common/data/data_source/data_source */ 68216); var _utils = __webpack_require__( /*! ../../../common/data/data_source/utils */ 97169); var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../../core/renderer */ 64553)); var _common = __webpack_require__( /*! ../../../core/utils/common */ 17781); var _data = __webpack_require__( /*! ../../../core/utils/data */ 31e3); var _deferred = __webpack_require__( /*! ../../../core/utils/deferred */ 87739); var _extend = __webpack_require__( /*! ../../../core/utils/extend */ 52576); var _iterator = __webpack_require__( /*! ../../../core/utils/iterator */ 21274); var _type = __webpack_require__( /*! ../../../core/utils/type */ 11528); var _ui = _interopRequireDefault(__webpack_require__( /*! ../../../ui/widget/ui.errors */ 35185)); var _collection_widget = _interopRequireDefault(__webpack_require__( /*! ../../ui/collection/collection_widget.base */ 36266)); var _m_collection_widgetEditStrategy = _interopRequireDefault(__webpack_require__( /*! ../../ui/collection/m_collection_widget.edit.strategy.plain */ 60498)); var _m_selection = _interopRequireDefault(__webpack_require__( /*! ../../ui/selection/m_selection */ 53544)); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } function _extends() { return _extends = Object.assign ? Object.assign.bind() : function(n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) { ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]) } } return n }, _extends.apply(null, arguments) } const NOT_EXISTING_INDEX = exports.NOT_EXISTING_INDEX = -1; const indexExists = index => index !== NOT_EXISTING_INDEX; class CollectionWidget extends _collection_widget.default { _setOptionsByReference() { super._setOptionsByReference(); (0, _extend.extend)(this._optionsByReference, { selectedItem: true }) } _getDefaultOptions() { return _extends({}, super._getDefaultOptions(), { selectionMode: "none", selectionRequired: false, selectByClick: true, selectedItems: [], selectedItemKeys: [], maxFilterLengthInRequest: 1500, keyExpr: null, selectedIndex: NOT_EXISTING_INDEX, focusOnSelectedItem: true, selectedItem: null, onSelectionChanging: null, onSelectionChanged: null, onItemReordered: null, onItemDeleting: null, onItemDeleted: null }) } ctor(element, options) { this._userOptions = options || {}; super.ctor(element, options) } _init() { this._initEditStrategy(); super._init(); this._initKeyGetter(); this._initActions(); this._initSelectionModule() } _initKeyGetter() { this._keyGetter = (0, _data.compileGetter)(this.option("keyExpr")) } _selectedItemClass() { return "dx-item-selected" } _getActionsList() { return ["onSelectionChanging", "onSelectionChanged"] } _initActions() { this._actions = {}; const actions = this._getActionsList(); actions.forEach((action => { this._actions[action] = this._createActionByOption(action, { excludeValidators: ["disabled", "readOnly"] }) ?? _common.noop })) } _getKeysByItems(selectedItems) { return this._editStrategy.getKeysByItems(selectedItems) } _getItemsByKeys(selectedItemKeys, selectedItems) { return this._editStrategy.getItemsByKeys(selectedItemKeys, selectedItems) } _getKeyByIndex(index) { return this._editStrategy.getKeyByIndex(index) } _getIndexByKey(key) { return this._editStrategy.getIndexByKey(key) } _getIndexByItemData(itemData) { return this._editStrategy.getIndexByItemData(itemData) } _isKeySpecified() { return !!this._dataController.key() } _getCombinedFilter() { return this._dataController.filter() } key() { const { keyExpr: keyExpr } = this.option(); if (keyExpr) { return keyExpr } return this._dataController.key() } keyOf(item) { let key = item; if (this.option("keyExpr")) { key = this._keyGetter(item) } else if (this._dataController.store()) { key = this._dataController.keyOf(item) } return key } _nullValueSelectionSupported() { return false } _initSelectionModule() { const that = this; const { itemsGetter: itemsGetter } = this._editStrategy; this._selection = new _m_selection.default({ allowNullValue: this._nullValueSelectionSupported(), mode: this.option("selectionMode"), maxFilterLengthInRequest: this.option("maxFilterLengthInRequest"), equalByReference: !this._isKeySpecified(), onSelectionChanging: args => { var _this$_actions$onSele, _this$_actions; const isSelectionChanged = args.addedItemKeys.length || args.removedItemKeys.length; if (!this._rendered || !isSelectionChanged) { return } const selectionChangingArgs = { removedItems: args.removedItems, addedItems: args.addedItems, cancel: false }; null === (_this$_actions$onSele = (_this$_actions = this._actions).onSelectionChanging) || void 0 === _this$_actions$onSele || _this$_actions$onSele.call(_this$_actions, selectionChangingArgs); args.cancel = selectionChangingArgs.cancel }, onSelectionChanged: args => { if (args.addedItemKeys.length || args.removedItemKeys.length) { this.option("selectedItems", this._getItemsByKeys(args.selectedItemKeys, args.selectedItems)); this._updateSelectedItems(args) } }, filter: this._getCombinedFilter.bind(this), totalCount: () => { const { items: items } = this.option(); const totalCount = this._dataController.totalCount(); return totalCount >= 0 ? totalCount : this._getItemsCount(items) }, key: this.key.bind(this), keyOf: this.keyOf.bind(this), load(options) { var _dataController$loadO; const dataController = that._dataController; options.customQueryParams = null === (_dataController$loadO = dataController.loadOptions()) || void 0 === _dataController$loadO ? void 0 : _dataController$loadO.customQueryParams; options.userData = dataController.userData(); if (dataController.store()) { return dataController.loadFromStore(options).done((loadResult => { if (that._disposed) { return } const items = (0, _utils.normalizeLoadResult)(loadResult).data; dataController.applyMapFunction(items) })) } return (0, _deferred.Deferred)().resolve(this.plainItems()) }, dataFields: () => this._dataController.select(), plainItems: itemsGetter.bind(this._editStrategy) }) } _getItemsCount(items) { return items.reduce(((itemsCount, item) => itemsCount + (item.items ? this._getItemsCount(item.items) : 1)), 0) } _initEditStrategy() { this._editStrategy = new _m_collection_widgetEditStrategy.default(this) } _getSelectedItemIndices(keys) { const indices = []; keys = keys || this._selection.getSelectedItemKeys(); this._editStrategy.beginCache(); (0, _iterator.each)(keys, ((_, key) => { const selectedIndex = this._getIndexByKey(key); if (indexExists(selectedIndex)) { indices.push(selectedIndex) } })); this._editStrategy.endCache(); return indices } _initMarkup() { this._rendering = true; if (!this._dataController.isLoading()) { this._syncSelectionOptions().done((() => this._normalizeSelectedItems())) } super._initMarkup() } _render() { super._render(); this._rendering = false } _fireContentReadyAction() { this._rendering = false; this._rendered = true; super._fireContentReadyAction() } _syncSelectionOptions(byOption) { byOption = byOption ?? this._chooseSelectOption(); let selectedItem; let selectedIndex; let selectedItemKeys; let selectedItems; switch (byOption) { case "selectedIndex": selectedItem = this._editStrategy.getItemDataByIndex(this.option("selectedIndex")); if ((0, _type.isDefined)(selectedItem)) { this._setOptionWithoutOptionChange("selectedItems", [selectedItem]); this._setOptionWithoutOptionChange("selectedItem", selectedItem); this._setOptionWithoutOptionChange("selectedItemKeys", this._editStrategy.getKeysByItems([selectedItem])) } else { this._setOptionWithoutOptionChange("selectedItems", []); this._setOptionWithoutOptionChange("selectedItemKeys", []); this._setOptionWithoutOptionChange("selectedItem", null) } break; case "selectedItems": selectedItems = this.option("selectedItems") || []; selectedIndex = selectedItems.length ? this._editStrategy.getIndexByItemData(selectedItems[0]) : NOT_EXISTING_INDEX; if (this.option("selectionRequired") && !indexExists(selectedIndex)) { return this._syncSelectionOptions("selectedIndex") } this._setOptionWithoutOptionChange("selectedItem", selectedItems[0]); this._setOptionWithoutOptionChange("selectedIndex", selectedIndex); this._setOptionWithoutOptionChange("selectedItemKeys", this._editStrategy.getKeysByItems(selectedItems)); break; case "selectedItem": selectedItem = this.option("selectedItem"); selectedIndex = this._editStrategy.getIndexByItemData(selectedItem); if (this.option("selectionRequired") && !indexExists(selectedIndex)) { return this._syncSelectionOptions("selectedIndex") } if ((0, _type.isDefined)(selectedItem)) { this._setOptionWithoutOptionChange("selectedItems", [selectedItem]); this._setOptionWithoutOptionChange("selectedIndex", selectedIndex); this._setOptionWithoutOptionChange("selectedItemKeys", this._editStrategy.getKeysByItems([selectedItem])) } else { this._setOptionWithoutOptionChange("selectedItems", []); this._setOptionWithoutOptionChange("selectedItemKeys", []); this._setOptionWithoutOptionChange("selectedIndex", NOT_EXISTING_INDEX) } break; case "selectedItemKeys": selectedItemKeys = this.option("selectedItemKeys"); if (this.option("selectionRequired")) { const selectedItemIndex = this._getIndexByKey(selectedItemKeys[0]); if (!indexExists(selectedItemIndex)) { return this._syncSelectionOptions("selectedIndex") } } return this._selection.setSelection(selectedItemKeys) } return (0, _deferred.Deferred)().resolve().promise() } _chooseSelectOption() { let optionName = "selectedIndex"; const isOptionDefined = name => { const optionValue = this.option(name); const length = (0, _type.isDefined)(optionValue) && optionValue.length; return length || name in this._userOptions }; if (isOptionDefined("selectedItems")) { optionName = "selectedItems" } else if (isOptionDefined("selectedItem")) { optionName = "selectedItem" } else if (isOptionDefined("selectedItemKeys")) { optionName = "selectedItemKeys" } return optionName } _compareKeys(oldKeys, newKeys) { if (oldKeys.length !== newKeys.length) { return false } for (let i = 0; i < newKeys.length; i++) { if (oldKeys[i] !== newKeys[i]) { return false } } return true } _normalizeSelectedItems() { const { selectionMode: selectionMode, selectedItems: selectedItems, items: items } = this.option(); if ("none" === selectionMode) { this._setOptionWithoutOptionChange("selectedItems", []); this._syncSelectionOptions("selectedItems") } else if ("single" === selectionMode) { const newSelection = selectedItems ?? []; if (newSelection.length > 1 || !newSelection.length && this.option("selectionRequired") && null !== items && void 0 !== items && items.length) { var _normalizedSelection; const currentSelection = this._selection.getSelectedItems(); let normalizedSelection = void 0 === newSelection[0] ? currentSelection[0] : newSelection[0]; if (void 0 === normalizedSelection) { normalizedSelection = this._editStrategy.itemsGetter()[0] } if (this.option("grouped") && null !== (_normalizedSelection = normalizedSelection) && void 0 !== _normalizedSelection && _normalizedSelection.items) { normalizedSelection.items = [normalizedSelection.items[0]] } this._selection.setSelection(this._getKeysByItems([normalizedSelection])); this._setOptionWithoutOptionChange("selectedItems", [normalizedSelection]); return this._syncSelectionOptions("selectedItems") } this._selection.setSelection(this._getKeysByItems(newSelection)) } else { const newKeys = this._getKeysByItems(this.option("selectedItems")); const oldKeys = this._selection.getSelectedItemKeys(); if (!this._compareKeys(oldKeys, newKeys)) { this._selection.setSelection(newKeys) } } return (0, _deferred.Deferred)().resolve().promise() } _itemClickHandler(e, args, config) { let itemSelectPromise = (0, _deferred.Deferred)().resolve(); this._createAction((e => { itemSelectPromise = this._itemSelectHandler(e.event) ?? itemSelectPromise }), { validatingTargetName: "itemElement" })({ itemElement: (0, _renderer.default)(e.currentTarget), event: e }); itemSelectPromise.always((() => { super._itemClickHandler(e, args, config) })) } _itemSelectHandler(e, shouldIgnoreSelectByClick) { if (!shouldIgnoreSelectByClick && !this.option("selectByClick")) { return } const $itemElement = e.currentTarget; if (this.isItemSelected($itemElement)) { this.unselectItem(e.currentTarget) } else { const itemSelectPromise = this.selectItem(e.currentTarget); return null === itemSelectPromise || void 0 === itemSelectPromise ? void 0 : itemSelectPromise.promise() } } _selectedItemElement(index) { return this._itemElements().eq(index) } _postprocessRenderItem(args) { const { selectionMode: selectionMode } = this.option(); if ("none" !== selectionMode) { const $itemElement = (0, _renderer.default)(args.itemElement); const normalizedItemIndex = this._editStrategy.getNormalizedIndex($itemElement); const isItemSelected = this._isItemSelected(normalizedItemIndex); this._processSelectableItem($itemElement, isItemSelected) } } _processSelectableItem($itemElement, isSelected) { $itemElement.toggleClass(this._selectedItemClass(), isSelected); this._setAriaSelectionAttribute($itemElement, String(isSelected)) } _updateSelectedItems(args) { const { addedItemKeys: addedItemKeys, removedItemKeys: removedItemKeys } = args; if (this._rendered && (addedItemKeys.length || removedItemKeys.length)) { if (!this._rendering) { const addedSelection = []; const removedSelection = []; this._editStrategy.beginCache(); for (let i = 0; i < addedItemKeys.length; i += 1) { const normalizedIndex = this._getIndexByKey(addedItemKeys[i]); addedSelection.push(normalizedIndex); this._addSelection(normalizedIndex) } for (let i = 0; i < removedItemKeys.length; i += 1) { const normalizedIndex = this._getIndexByKey(removedItemKeys[i]); removedSelection.push(normalizedIndex); this._removeSelection(normalizedIndex) } this._editStrategy.endCache(); this._updateSelection(addedSelection, removedSelection) } this._actions.onSelectionChanged({ addedItems: args.addedItems, removedItems: args.removedItems }) } } _updateSelection(addedSelection, removedSelection) {} _setAriaSelectionAttribute($target, value) { this.setAria("selected", value, $target) } _getFocusedElementIndex() { const { focusOnSelectedItem: focusOnSelectedItem } = this.option(); return focusOnSelectedItem ? this._getFlatIndex() : super._getFocusedElementIndex() } _getFlatIndex() { const { selectedIndex: selectedIndex = NOT_EXISTING_INDEX } = this.option(); return selectedIndex } _removeSelection(normalizedIndex) { const $itemElement = this._editStrategy.getItemElement(normalizedIndex); if (indexExists(normalizedIndex)) { this._processSelectableItem($itemElement, false); _events_engine.default.triggerHandler($itemElement, "stateChanged", false) } } _addSelection(normalizedIndex) { const $itemElement = this._editStrategy.getItemElement(normalizedIndex); if (indexExists(normalizedIndex)) { this._processSelectableItem($itemElement, true); _events_engine.default.triggerHandler($itemElement, "stateChanged", true) } } _isItemSelected(index) { const key = this._getKeyByIndex(index); return this._selection.isItemSelected(key, { checkPending: true }) } _optionChanged(args) { switch (args.name) { case "selectionMode": this._invalidate(); break; case "dataSource": if (!args.value || Array.isArray(args.value) && !args.value.length) { this.option("selectedItemKeys", []) } super._optionChanged(args); break; case "selectedIndex": case "selectedItem": case "selectedItems": case "selectedItemKeys": this._syncSelectionOptions(args.name).done((() => this._normalizeSelectedItems())); break; case "keyExpr": this._initKeyGetter(); break; case "selectionRequired": this._normalizeSelectedItems(); break; case "onSelectionChanging": case "onSelectionChanged": this._initActions(); break; case "selectByClick": case "onItemDeleting": case "onItemDeleted": case "onItemReordered": case "maxFilterLengthInRequest": case "focusOnSelectedItem": break; default: super._optionChanged(args) } } _clearSelectedItems() { this._setOptionWithoutOptionChange("selectedItems", []); this._syncSelectionOptions("selectedItems") } _waitDeletingPrepare($itemElement) { if ($itemElement.data("dxItemDeleting")) { return (0, _deferred.Deferred)().resolve().promise() } $itemElement.data("dxItemDeleting", true); const deferred = (0, _deferred.Deferred)(); const deletingActionArgs = { cancel: false }; const deletePromise = this._itemEventHandler($itemElement, "onItemDeleting", deletingActionArgs, { excludeValidators: ["disabled", "readOnly"] }); (0, _deferred.when)(deletePromise).always((function(value) { const deletePromiseExists = !deletePromise; const deletePromiseResolved = !deletePromiseExists && "resolved" === deletePromise.state(); const argumentsSpecified = !!arguments.length; const shouldDelete = deletePromiseExists || deletePromiseResolved && !argumentsSpecified || deletePromiseResolved && value; (0, _deferred.when)((0, _deferred.fromPromise)(deletingActionArgs.cancel)).always((() => { $itemElement.data("dxItemDeleting", false) })).done((cancel => { if (shouldDelete && !cancel) { deferred.resolve() } else { deferred.reject() } })).fail(deferred.reject) })); return deferred.promise() } _deleteItemFromDS($item) { const dataController = this._dataController; const deferred = (0, _deferred.Deferred)(); const disabledState = this.option("disabled"); const dataStore = dataController.store(); if (!dataStore) { return (0, _deferred.Deferred)().resolve().promise() } if (!dataStore.remove) { throw _ui.default.Error("E1011") } this.option("disabled", true); dataStore.remove(dataController.keyOf(this._getItemData($item))).done((key => { if (void 0 !== key) { deferred.resolve() } else { deferred.reject() } })).fail((() => { deferred.reject() })); deferred.always((() => { this.option("disabled", disabledState) })); return deferred } _tryRefreshLastPage() { const deferred = (0, _deferred.Deferred)(); if (this._isLastPage() || this.option("grouped")) { deferred.resolve() } else { this._refreshLastPage().done((() => { deferred.resolve() })) } return deferred.promise() } _refreshLastPage() { this._expectLastItemLoading(); return this._dataController.load() } _updateSelectionAfterDelete(index) { const key = this._getKeyByIndex(index); this._selection.deselect([key]) } _updateIndicesAfterIndex(index) { const itemElements = this._itemElements(); for (let i = index + 1; i < itemElements.length; i += 1) { (0, _renderer.default)(itemElements[i]).data(this._itemIndexKey(), i - 1) } } _simulateOptionChange(optionName) { var _this$_optionChangedA; const optionValue = this.option(optionName); if (optionValue instanceof _data_source.DataSource) { return } null === (_this$_optionChangedA = this._optionChangedAction) || void 0 === _this$_optionChangedA || _this$_optionChangedA.call(this, { name: optionName, fullName: optionName, value: optionValue }) } isItemSelected(itemElement) { return this._isItemSelected(this._editStrategy.getNormalizedIndex(itemElement)) } selectItem(itemElement) { const { selectionMode: selectionMode } = this.option(); if ("none" === selectionMode) { return (0, _deferred.Deferred)().resolve() } const itemIndex = this._editStrategy.getNormalizedIndex(itemElement); if (!indexExists(itemIndex)) { return (0, _deferred.Deferred)().resolve() } const key = this._getKeyByIndex(itemIndex); if (this._selection.isItemSelected(key)) { return (0, _deferred.Deferred)().resolve() } if ("single" === selectionMode) { return this._selection.setSelection([key]) } const { selectedItemKeys: selectedItemKeys } = this.option(); return this._selection.setSelection([...selectedItemKeys ?? [], key], [key]) } unselectItem(itemElement) { const itemIndex = this._editStrategy.getNormalizedIndex(itemElement); if (!indexExists(itemIndex)) { return } const selectedItemKeys = this._selection.getSelectedItemKeys(); if (this.option("selectionRequired") && selectedItemKeys.length <= 1) { return } const key = this._getKeyByIndex(itemIndex); if (!this._selection.isItemSelected(key, { checkPending: true })) { return } this._selection.deselect([key]) } _deleteItemElementByIndex(index) { this._updateSelectionAfterDelete(index); this._updateIndicesAfterIndex(index); this._editStrategy.deleteItemAtIndex(index) } _afterItemElementDeleted($item, deletedActionArgs) { const changingOption = this._dataController.getDataSource() ? "dataSource" : "items"; this._simulateOptionChange(changingOption); this._itemEventHandler($item, "onItemDeleted", deletedActionArgs, { beforeExecute() { $item.remove() }, excludeValidators: ["disabled", "readOnly"] }); this._renderEmptyMessage() } deleteItem(itemElement) { const deferred = (0, _deferred.Deferred)(); const $item = this._editStrategy.getItemElement(itemElement); const index = this._editStrategy.getNormalizedIndex(itemElement); const itemResponseWaitClass = this._itemResponseWaitClass(); if (indexExists(index)) { this._waitDeletingPrepare($item).done((() => { $item.addClass(itemResponseWaitClass); const deletedActionArgs = this._extendActionArgs($item); this._deleteItemFromDS($item).done((() => { this._deleteItemElementByIndex(index); this._afterItemElementDeleted($item, deletedActionArgs); this._tryRefreshLastPage().done((() => { deferred.resolveWith(this) })) })).fail((() => { $item.removeClass(itemResponseWaitClass); deferred.rejectWith(this) })) })).fail((() => { deferred.rejectWith(this) })) } else { deferred.rejectWith(this) } return deferred.promise() } reorderItem(itemElement, toItemElement) { const deferred = (0, _deferred.Deferred)(); const strategy = this._editStrategy; const $movingItem = strategy.getItemElement(itemElement); const $destinationItem = strategy.getItemElement(toItemElement); const movingIndex = strategy.getNormalizedIndex(itemElement); const destinationIndex = strategy.getNormalizedIndex(toItemElement); const changingOption = this._dataController.getDataSource() ? "dataSource" : "items"; const canMoveItems = indexExists(movingIndex) && indexExists(destinationIndex) && movingIndex !== destinationIndex; if (canMoveItems) { deferred.resolveWith(this) } else { deferred.rejectWith(this) } return deferred.promise().done((() => { $destinationItem[strategy.itemPlacementFunc(movingIndex, destinationIndex)]($movingItem); strategy.moveItemAtIndexToIndex(movingIndex, destinationIndex); this._updateIndicesAfterIndex(movingIndex); this.option("selectedItems", this._getItemsByKeys(this._selection.getSelectedItemKeys(), this._selection.getSelectedItems())); if ("items" === changingOption) { this._simulateOptionChange(changingOption) } this._itemEventHandler($movingItem, "onItemReordered", { fromIndex: strategy.getIndex(movingIndex), toIndex: strategy.getIndex(destinationIndex) }, { excludeValidators: ["disabled", "readOnly"] }) })) } } exports.default = CollectionWidget }, 86984: /*!***********************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/ui/collection/m_collection_widget.edit.strategy.js ***! \***********************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _class = _interopRequireDefault(__webpack_require__( /*! ../../../core/class */ 55620)); var _dom_adapter = _interopRequireDefault(__webpack_require__( /*! ../../../core/dom_adapter */ 64960)); var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../../core/renderer */ 64553)); var _common = __webpack_require__( /*! ../../../core/utils/common */ 17781); var _type = __webpack_require__( /*! ../../../core/utils/type */ 11528); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } class EditStrategy extends(_class.default.inherit({})) { constructor(collectionWidget) { super(); this._collectionWidget = collectionWidget } getIndexByItemData(value) { return _class.default.abstract() } getItemDataByIndex(index) { _class.default.abstract() } getKeysByItems(items) { _class.default.abstract() } getItemsByKeys(keys, items) { _class.default.abstract() } itemsGetter() { _class.default.abstract() } getKeyByIndex(index) { const resultIndex = this._denormalizeItemIndex(index); return this.getKeysByItems([this.getItemDataByIndex(resultIndex)])[0] } _equalKeys(key1, key2) { if (this._collectionWidget._isKeySpecified()) { return (0, _common.equalByValue)(key1, key2) } return key1 === key2 } beginCache() { this._cache = {} } endCache() { this._cache = null } getIndexByKey(key) { return _class.default.abstract() } getNormalizedIndex(value) { if (this._isNormalizedItemIndex(value)) { return value } if (this._isItemIndex(value)) { return this._normalizeItemIndex(value) } if (this._isNode(value)) { return this._getNormalizedItemIndex(value) } return this._normalizeItemIndex(this.getIndexByItemData(value)) } getIndex(value) { if (this._isNormalizedItemIndex(value)) { return this._denormalizeItemIndex(value) } if (this._isItemIndex(value)) { return value } if (this._isNode(value)) { return this._denormalizeItemIndex(this._getNormalizedItemIndex(value)) } return this.getIndexByItemData(value) } getItemElement(value) { if (this._isNormalizedItemIndex(value)) { return this._getItemByNormalizedIndex(value) } if (this._isItemIndex(value)) { return this._getItemByNormalizedIndex(this._normalizeItemIndex(value)) } if (this._isNode(value)) { return (0, _renderer.default)(value) } const normalizedItemIndex = this._normalizeItemIndex(this.getIndexByItemData(value)); return this._getItemByNormalizedIndex(normalizedItemIndex) } _isNode(el) { return _dom_adapter.default.isNode(el && (0, _type.isRenderer)(el) ? el.get(0) : el) } deleteItemAtIndex(index) { _class.default.abstract() } itemPlacementFunc(movingIndex, destinationIndex) { return this._itemsFromSameParent(movingIndex, destinationIndex) && movingIndex < destinationIndex ? "after" : "before" } moveItemAtIndexToIndex(movingIndex, destinationIndex) { _class.default.abstract() } _isNormalizedItemIndex(index) { return "number" === typeof index && Math.round(index) === index } _isItemIndex(index) { return _class.default.abstract() } _getNormalizedItemIndex(value) { return _class.default.abstract() } _normalizeItemIndex(index) { return _class.default.abstract() } _denormalizeItemIndex(index) { return _class.default.abstract() } _getItemByNormalizedIndex(value) { return _class.default.abstract() } _itemsFromSameParent(movingIndex, destinationIndex) { return _class.default.abstract() } } exports.default = EditStrategy }, 60498: /*!*****************************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/ui/collection/m_collection_widget.edit.strategy.plain.js ***! \*****************************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _m_collection_widgetEdit = (e = __webpack_require__( /*! ./m_collection_widget.edit.strategy */ 86984), e && e.__esModule ? e : { default: e }); var e; class PlainEditStrategy extends _m_collection_widgetEdit.default { _getPlainItems() { return this._collectionWidget.option("items") || [] } getIndexByItemData(itemData) { const keyOf = this._collectionWidget.keyOf.bind(this._collectionWidget); if (keyOf) { return this.getIndexByKey(keyOf(itemData)) } return this._getPlainItems().indexOf(itemData) } getItemDataByIndex(index) { return this._getPlainItems()[index] } deleteItemAtIndex(index) { this._getPlainItems().splice(index, 1) } itemsGetter() { return this._getPlainItems() } getKeysByItems(items) { const keyOf = this._collectionWidget.keyOf.bind(this._collectionWidget); let result = items; if (keyOf) { result = []; for (let i = 0; i < items.length; i++) { result.push(keyOf(items[i])) } } return result } getIndexByKey(key) { const cache = this._cache; const keys = cache && cache.keys || this.getKeysByItems(this._getPlainItems()); if (cache && !cache.keys) { cache.keys = keys } if ("object" === typeof key) { for (let i = 0, { length: length } = keys; i < length; i++) { if (this._equalKeys(key, keys[i])) { return i } } } else { return keys.indexOf(key) } return -1 } getItemsByKeys(keys, items) { return (items || keys).slice() } moveItemAtIndexToIndex(movingIndex, destinationIndex) { const items = this._getPlainItems(); const movedItemData = items[movingIndex]; items.splice(movingIndex, 1); items.splice(destinationIndex, 0, movedItemData) } _isItemIndex(index) { return "number" === typeof index && Math.round(index) === index } _getNormalizedItemIndex(itemElement) { return this._collectionWidget._itemElements().index(itemElement) } _normalizeItemIndex(index) { return index } _denormalizeItemIndex(index) { return index } _getItemByNormalizedIndex(index) { return index > -1 ? this._collectionWidget._itemElements().eq(index) : null } _itemsFromSameParent(firstIndex, secondIndex) { return true } } exports.default = PlainEditStrategy }, 68005: /*!*********************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/ui/collection/m_collection_widget.live_update.js ***! \*********************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _array_utils = __webpack_require__( /*! ../../../common/data/array_utils */ 43792); var _utils = __webpack_require__( /*! ../../../common/data/utils */ 89358); var _dom_adapter = _interopRequireDefault(__webpack_require__( /*! ../../../core/dom_adapter */ 64960)); var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../../core/renderer */ 64553)); var _array_compare = __webpack_require__( /*! ../../../core/utils/array_compare */ 13387); var _deferred = __webpack_require__( /*! ../../../core/utils/deferred */ 87739); var _extend = __webpack_require__( /*! ../../../core/utils/extend */ 52576); var _iterator = __webpack_require__( /*! ../../../core/utils/iterator */ 21274); var _m_collection_widget = _interopRequireDefault(__webpack_require__( /*! ../../ui/collection/m_collection_widget.async */ 88575)); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } function _extends() { return _extends = Object.assign ? Object.assign.bind() : function(n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) { ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]) } } return n }, _extends.apply(null, arguments) } const PRIVATE_KEY_FIELD = "__dx_key__"; class CollectionWidgetLiveUpdate extends _m_collection_widget.default { _getDefaultOptions() { return _extends({}, super._getDefaultOptions(), { repaintChangesOnly: false }) } _customizeStoreLoadOptions(e) { const dataController = this._dataController; if (dataController.getDataSource() && !this._dataController.isLoaded()) { this._correctionIndex = 0 } if (this._correctionIndex && e.storeLoadOptions) { e.storeLoadOptions.skip += this._correctionIndex } } reload() { this._correctionIndex = 0 } _init() { super._init(); this._refreshItemsCache(); this._correctionIndex = 0; this._subscribeLoadOptionsCustomization(true) } _findItemElementByKey(key) { let result = (0, _renderer.default)(); const keyExpr = this.key(); this.itemElements().each(((_, item) => { const $item = (0, _renderer.default)(item); const itemData = this._getItemData($item); if (keyExpr ? (0, _utils.keysEqual)(keyExpr, this.keyOf(itemData), key) : this._isItemEquals(itemData, key)) { result = $item; return false } })); return result } _dataSourceChangedHandler(newItems, e) { if (null !== e && void 0 !== e && e.changes) { this._modifyByChanges(e.changes) } else { super._dataSourceChangedHandler(newItems, e); this._refreshItemsCache() } } _isItemEquals(item1, item2) { if (item1 && item1.__dx_key__) { item1 = item1.data } try { return JSON.stringify(item1) === JSON.stringify(item2) } catch (e) { return item1 === item2 } } _isItemStrictEquals(item1, item2) { return this._isItemEquals(item1, item2) } _shouldAddNewGroup(changes, items) { let result = false; if (this.option("grouped")) { if (!changes.length) { result = true }(0, _iterator.each)(changes, ((i, change) => { if ("insert" === change.type) { result = true; (0, _iterator.each)(items, ((_, item) => { if (void 0 !== change.data.key && change.data.key === item.key) { result = false; return false } })) } })) } return result } _partialRefresh() { if (this.option("repaintChangesOnly")) { const keyOf = data => { if (data && void 0 !== data.__dx_key__) { return data.__dx_key__ } return this.keyOf(data) }; const result = (0, _array_compare.findChanges)(this._itemsCache, this._editStrategy.itemsGetter(), keyOf, this._isItemStrictEquals.bind(this)); if (result && this._itemsCache.length && !this._shouldAddNewGroup(result, this._itemsCache)) { this._modifyByChanges(result, true); this._renderEmptyMessage(); return true } this._refreshItemsCache() } return false } _refreshItemsCache() { if (this.option("repaintChangesOnly")) { const items = this._editStrategy.itemsGetter(); try { this._itemsCache = (0, _extend.extend)(true, [], items); if (!this.key()) { this._itemsCache = this._itemsCache.map(((itemCache, index) => ({ [PRIVATE_KEY_FIELD]: items[index], data: itemCache }))) } } catch (e) { this._itemsCache = (0, _extend.extend)([], items) } } } _dispose() { this._subscribeLoadOptionsCustomization(false); super._dispose() } _updateByChange(keyInfo, items, change, isPartialRefresh) { if (isPartialRefresh) { this._renderItem(change.index, change.data, null, this._findItemElementByKey(change.key)) } else { const changedItem = items[(0, _array_utils.indexByKey)(keyInfo, items, change.key)]; if (changedItem) { (0, _array_utils.update)(keyInfo, items, change.key, change.data).done((() => { this._renderItem(items.indexOf(changedItem), changedItem, null, this._findItemElementByKey(change.key)) })) } } } _insertByChange(keyInfo, items, change, isPartialRefresh) { (0, _deferred.when)(isPartialRefresh || (0, _array_utils.insert)(keyInfo, items, change.data, change.index)).done((() => { this._beforeItemElementInserted(change); this._renderItem(change.index ?? items.length, change.data); this._afterItemElementInserted(); this._correctionIndex++ })) } _updateSelectionAfterRemoveByChange(removeIndex) { const { selectedIndex: selectedIndex, selectedItems: selectedItems } = this.option(); if (selectedIndex > removeIndex) { this.option("selectedIndex", selectedIndex - 1) } else if (selectedIndex === removeIndex && 1 === selectedItems.length) { this.option("selectedItems", []) } else { this._normalizeSelectedItems() } } _beforeItemElementInserted(change) { const { selectedIndex: selectedIndex } = this.option(); if (change.index <= selectedIndex) { this.option("selectedIndex", selectedIndex + 1) } } _afterItemElementInserted() { this._renderEmptyMessage() } _removeByChange(keyInfo, items, change, isPartialRefresh) { const index = isPartialRefresh ? change.index : (0, _array_utils.indexByKey)(keyInfo, items, change.key); const removedItem = isPartialRefresh ? change.oldItem : items[index]; if (removedItem) { const $removedItemElement = this._findItemElementByKey(change.key); const deletedActionArgs = this._extendActionArgs($removedItemElement); this._waitDeletingPrepare($removedItemElement).done((() => { if (isPartialRefresh) { this._updateIndicesAfterIndex(index - 1); this._afterItemElementDeleted($removedItemElement, deletedActionArgs); this._updateSelectionAfterRemoveByChange(index) } else { this._deleteItemElementByIndex(index); this._afterItemElementDeleted($removedItemElement, deletedActionArgs) } })); this._correctionIndex-- } } _modifyByChanges(changes, isPartialRefresh) { const items = this._editStrategy.itemsGetter(); const keyInfo = { key: this.key.bind(this), keyOf: this.keyOf.bind(this) }; const dataController = this._dataController; const paginate = dataController.paginate(); const group = dataController.group(); if (paginate || group) { changes = changes.filter((item => "insert" !== item.type || void 0 !== item.index)) } changes.forEach((change => this[`_${change.type}ByChange`](keyInfo, items, change, isPartialRefresh))); this._renderedItemsCount = items.length; this._refreshItemsCache(); this._fireContentReadyAction() } _appendItemToContainer($container, $itemFrame, index) { const nextSiblingElement = $container.children(this._itemSelector()).get(index); _dom_adapter.default.insertElement($container.get(0), $itemFrame.get(0), nextSiblingElement) } _subscribeLoadOptionsCustomization(enable) { if (!this._dataController) { return } if (enable) { this._correctionIndex = 0; this._dataController.on("customizeStoreLoadOptions", this._customizeStoreLoadOptions.bind(this)) } else { this._dataController.off("customizeStoreLoadOptions", this._customizeStoreLoadOptions.bind(this)) } } _optionChanged(args) { switch (args.name) { case "items": { const isItemsUpdated = this._partialRefresh(args.value); if (!isItemsUpdated) { super._optionChanged(args) } break } case "dataSource": if (!this.option("repaintChangesOnly") || !args.value) { this.option("items", []) } this._subscribeLoadOptionsCustomization(false); super._optionChanged(args); this._subscribeLoadOptionsCustomization(true); break; case "repaintChangesOnly": break; default: super._optionChanged(args) } } } exports.default = CollectionWidgetLiveUpdate }, 5285: /*!*******************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/ui/collection/m_data_controller.js ***! \*******************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _common = __webpack_require__( /*! ../../../core/utils/common */ 17781); var _deferred = __webpack_require__( /*! ../../../core/utils/deferred */ 87739); const DataControllerMock = { load: () => (0, _deferred.Deferred)().reject(), loadSingle: () => (0, _deferred.Deferred)().reject(), loadFromStore: () => (0, _deferred.Deferred)().reject(), loadNextPage: () => (0, _deferred.Deferred)().reject(), loadOptions: _common.noop, userData: _common.noop, cancel: _common.noop, cancelAll: _common.noop, filter: _common.noop, addSearchFilter: _common.noop, group: _common.noop, paginate: _common.noop, pageSize: _common.noop, pageIndex: _common.noop, resetDataSourcePageIndex: _common.noop, totalCount: _common.noop, isLastPage: _common.noop, isLoading: _common.noop, isLoaded: _common.noop, searchValue: _common.noop, searchOperation: _common.noop, searchExpr: _common.noop, select: _common.noop, key: _common.noop, keyOf: _common.noop, store: _common.noop, items: _common.noop, applyMapFunction: _common.noop, getDataSource: _common.noop, reload: _common.noop, on: _common.noop, off: _common.noop }; exports.default = class { constructor(dataSource) { if (!dataSource) { return DataControllerMock } this._dataSource = dataSource } load() { return this._dataSource.load() } loadSingle(propName, propValue) { if (arguments.length < 2) { propValue = propName; propName = this.key() } return this._dataSource.loadSingle(propName, propValue) } loadFromStore(loadOptions) { return this.store().load(loadOptions) } loadNextPage() { this.pageIndex(1 + this.pageIndex()); return this.load() } loadOptions() { return this._dataSource.loadOptions() } userData() { return this._dataSource._userData } cancel(operationId) { this._dataSource.cancel(operationId) } cancelAll() { this._dataSource.cancelAll() } filter(filter) { return this._dataSource.filter(filter) } addSearchFilter(storeLoadOptions) { this._dataSource._addSearchFilter(storeLoadOptions) } group(group) { return this._dataSource.group(group) } paginate() { return this._dataSource.paginate() } pageSize() { return this._dataSource._pageSize } pageIndex(pageIndex) { return this._dataSource.pageIndex(pageIndex) } resetDataSourcePageIndex() { if (this.pageIndex()) { this.pageIndex(0); this.load() } } totalCount() { return this._dataSource.totalCount() } isLastPage() { return this._dataSource.isLastPage() || !this._dataSource._pageSize } isLoading() { return this._dataSource.isLoading() } isLoaded() { return this._dataSource.isLoaded() } searchValue(value) { if (!arguments.length) { return this._dataSource.searchValue() } return this._dataSource.searchValue(value) } searchOperation(operation) { return this._dataSource.searchOperation(operation) } searchExpr(expr) { if (!arguments.length) { return this._dataSource.searchExpr() } return this._dataSource.searchExpr(expr) } select() { return this._dataSource.select(...arguments) } key() { return this._dataSource.key() } keyOf(item) { return this.store().keyOf(item) } store() { return this._dataSource.store() } items() { return this._dataSource.items() } applyMapFunction(data) { return this._dataSource._applyMapFunction(data) } getDataSource() { return this._dataSource || null } reload() { return this._dataSource.reload() } on(event, handler) { this._dataSource.on(event, handler) } off(event, handler) { this._dataSource.off(event, handler) } } }, 45966: /*!********************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/ui/collection/m_search_box_mixin.js ***! \********************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _message = _interopRequireDefault(__webpack_require__( /*! ../../../common/core/localization/message */ 4671)); var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../../core/renderer */ 64553)); var _deferred = __webpack_require__( /*! ../../../core/utils/deferred */ 87739); var _extend = __webpack_require__( /*! ../../../core/utils/extend */ 52576); var _stubs = __webpack_require__( /*! ../../../core/utils/stubs */ 45479); var _ui = _interopRequireDefault(__webpack_require__( /*! ../../../ui/widget/ui.errors */ 35185)); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } let EditorClass = (0, _stubs.stubComponent)("TextBox"); exports.default = { _getDefaultOptions() { return (0, _extend.extend)(this.callBase(), { searchMode: "", searchExpr: null, searchValue: "", searchEnabled: false, searchEditorOptions: {} }) }, _initMarkup() { this._renderSearch(); this.callBase() }, _renderSearch() { const $element = this.$element(); const searchEnabled = this.option("searchEnabled"); const searchBoxClassName = this._addWidgetPrefix("search"); const rootElementClassName = this._addWidgetPrefix("with-search"); if (!searchEnabled) { $element.removeClass(rootElementClassName); this._removeSearchBox(); return } const editorOptions = this._getSearchEditorOptions(); if (this._searchEditor) { this._searchEditor.option(editorOptions) } else { $element.addClass(rootElementClassName); this._$searchEditorElement = (0, _renderer.default)("<div>").addClass(searchBoxClassName).prependTo($element); this._searchEditor = this._createComponent(this._$searchEditorElement, EditorClass, editorOptions) } }, _removeSearchBox() { this._$searchEditorElement && this._$searchEditorElement.remove(); delete this._$searchEditorElement; delete this._searchEditor }, _getSearchEditorOptions() { const that = this; const userEditorOptions = that.option("searchEditorOptions"); const searchText = _message.default.format("Search"); return (0, _extend.extend)({ mode: "search", placeholder: searchText, tabIndex: that.option("tabIndex"), value: that.option("searchValue"), valueChangeEvent: "input", inputAttr: { "aria-label": searchText }, onValueChanged(e) { const searchTimeout = that.option("searchTimeout"); that._valueChangeDeferred = (0, _deferred.Deferred)(); clearTimeout(that._valueChangeTimeout); that._valueChangeDeferred.done(function() { this.option("searchValue", e.value) }.bind(that)); if (e.event && "input" === e.event.type && searchTimeout) { that._valueChangeTimeout = setTimeout((() => { that._valueChangeDeferred.resolve() }), searchTimeout) } else { that._valueChangeDeferred.resolve() } } }, userEditorOptions) }, _getAriaTarget() { if (this.option("searchEnabled")) { return this._itemContainer(true) } return this.callBase() }, _focusTarget() { if (this.option("searchEnabled")) { return this._itemContainer(true) } return this.callBase() }, _updateFocusState(e, isFocused) { if (this.option("searchEnabled")) { this._toggleFocusClass(isFocused, this.$element()) } this.callBase(e, isFocused) }, getOperationBySearchMode: searchMode => "equals" === searchMode ? "=" : searchMode, _optionChanged(args) { switch (args.name) { case "searchEnabled": case "searchEditorOptions": this._invalidate(); break; case "searchExpr": case "searchMode": case "searchValue": if (!this._dataSource) { _ui.default.log("W1009"); return } if ("searchMode" === args.name) { this._dataSource.searchOperation(this.getOperationBySearchMode(args.value)) } else { this._dataSource[args.name](args.value) } this._dataSource.load(); break; case "searchTimeout": break; default: this.callBase(args) } }, focus() { if (!this.option("focusedElement") && this.option("searchEnabled")) { this._searchEditor && this._searchEditor.focus(); return } this.callBase() }, _cleanAria() { const $element = this.$element(); this.setAria({ role: null, activedescendant: null }, $element); $element.attr("tabIndex", null) }, _clean() { this.callBase(); this._cleanAria() }, _refresh() { if (this._valueChangeDeferred) { this._valueChangeDeferred.resolve() } this.callBase() }, setEditorClass(value) { EditorClass = value } } }, 26988: /*!************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/ui/color_box/m_color_box.js ***! \************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _color = _interopRequireDefault(__webpack_require__( /*! ../../../color */ 43101)); var _component_registrator = _interopRequireDefault(__webpack_require__( /*! ../../../core/component_registrator */ 92848)); var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../../core/renderer */ 64553)); var _m_drop_down_editor = _interopRequireDefault(__webpack_require__( /*! ../../ui/drop_down_editor/m_drop_down_editor */ 28906)); var _m_color_view = _interopRequireDefault(__webpack_require__( /*! ./m_color_view */ 98264)); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } function _extends() { return _extends = Object.assign ? Object.assign.bind() : function(n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) { ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]) } } return n }, _extends.apply(null, arguments) } const colorEditorPrototype = _m_color_view.default.prototype; const colorUtils = { makeTransparentBackground: colorEditorPrototype._makeTransparentBackground.bind(colorEditorPrototype), makeRgba: colorEditorPrototype._makeRgba.bind(colorEditorPrototype) }; class ColorBox extends _m_drop_down_editor.default { _supportedKeys() { const arrowHandler = function(e) { e.stopPropagation(); if (this.option("opened")) { e.preventDefault(); return true } }; return _extends({}, super._supportedKeys(), { enter: this._enterKeyHandler, leftArrow: arrowHandler, rightArrow: arrowHandler, upArrow: function(e) { if (!this.option("opened")) { e.preventDefault(); return false } if (e.altKey) { this.close(); return false } return true }, downArrow: function(e) { if (!this.option("opened") && !e.altKey) { e.preventDefault(); return false } if (!this.option("opened") && e.altKey) { this._validatedOpening(); return false } return true } }) } _getDefaultOptions() { return _extends({}, super._getDefaultOptions(), { editAlphaChannel: false, applyValueMode: "useButtons", keyStep: 1, fieldTemplate: null, buttonsLocation: "bottom after" }) } _popupHidingHandler() { super._popupHidingHandler(); const { applyValueMode: applyValueMode } = this.option(); if ("useButtons" === applyValueMode) { this._updateColorViewValue(this.option("value")) } } _popupConfig() { return _extends({}, super._popupConfig(), { width: "" }) } _contentReadyHandler() { this._createColorView(); this._addPopupBottomClasses() } _addPopupBottomClasses() { const $popupBottom = this._popup.bottomToolbar(); if ($popupBottom) { $popupBottom.addClass("dx-colorview-container-cell").addClass("dx-colorview-button-cell").find(".dx-toolbar-items-container").addClass("dx-colorview-buttons-container"); $popupBottom.find(".dx-popup-done").addClass("dx-colorview-apply-button"); $popupBottom.find(".dx-popup-cancel").addClass("dx-colorview-cancel-button") } } _createColorView() { this._popup.$overlayContent().addClass("dx-colorbox-overlay"); const $colorView = (0, _renderer.default)("<div>").appendTo(this._popup.$content()); this._colorView = this._createComponent($colorView, _m_color_view.default, this._colorViewConfig()) } _applyNewColor(value) { this.option("value", value); if (value) { colorUtils.makeTransparentBackground(this._$colorResultPreview, value) } if (this._colorViewEnterKeyPressed) { this.close(); this._colorViewEnterKeyPressed = false } } _colorViewConfig() { const { editAlphaChannel: editAlphaChannel, value: value, applyValueMode: applyValueMode, focusStateEnabled: focusStateEnabled, stylingMode: stylingMode } = this.option(); const that = this; return { value: value, matchValue: value, editAlphaChannel: editAlphaChannel, applyValueMode: applyValueMode, focusStateEnabled: focusStateEnabled, stylingMode: stylingMode, target: this._input(), onEnterKeyPressed(_ref) { let { event: event } = _ref; that._colorViewEnterKeyPressed = true; if (that._colorView.option("value") !== that.option("value")) { that._saveValueChangeEvent(event); that._applyNewColor(that._colorView.option("value")); that.close() } }, onValueChanged(_ref2) { let { event: event, value: value, previousValue: previousValue } = _ref2; const instantlyMode = "instantly" === that.option("applyValueMode"); const isOldValue = colorUtils.makeRgba(value) === previousValue; const changesApplied = instantlyMode || that._colorViewEnterKeyPressed; const valueCleared = that._shouldSaveEmptyValue; if (isOldValue || !changesApplied || valueCleared) { return } if (event) { that._saveValueChangeEvent(event) } that._applyNewColor(value) } } } _enterKeyHandler(e) { const newValue = this._input().val(); const { value: value, editAlphaChannel: editAlphaChannel } = this.option(); const oldValue = value && editAlphaChannel ? colorUtils.makeRgba(value) : value; if (!newValue) { return false } const color = new _color.default(newValue); if (color.colorIsInvalid) { this._input().val(oldValue); return } if (newValue !== oldValue) { this._applyColorFromInput(newValue); this._saveValueChangeEvent(e); this.option("value", this.option("editAlphaChannel") ? colorUtils.makeRgba(newValue) : newValue) } if (this._colorView) { const colorViewValue = this._colorView.option("value"); if (value !== colorViewValue) { this._saveValueChangeEvent(e); this.option("value", colorViewValue) } } this.close(); return false } _applyButtonHandler(e) { this._saveValueChangeEvent(e.event); this._applyNewColor(this._colorView.option("value")); super._applyButtonHandler() } _cancelButtonHandler() { this._resetInputValue(); super._cancelButtonHandler() } _getKeyboardListeners() { return super._getKeyboardListeners().concat([this._colorView]) } _init() { super._init() } _initMarkup() { this.$element().addClass("dx-colorbox"); super._initMarkup() } _renderInput() { super._renderInput(); this._input().addClass("dx-colorbox-input"); this._renderColorPreview() } _renderColorPreview() { this.$element().wrapInner((0, _renderer.default)("<div>").addClass("dx-colorbox-input-container")); this._$colorBoxInputContainer = this.$element().children().eq(0); this._$colorResultPreview = (0, _renderer.default)("<div>").addClass("dx-colorbox-color-result-preview").appendTo(this._$textEditorInputContainer); if (!this.option("value")) { this._$colorBoxInputContainer.addClass("dx-colorbox-color-is-not-defined") } else { colorUtils.makeTransparentBackground(this._$colorResultPreview, this.option("value")) } } _renderValue() { const { value: value, editAlphaChannel: editAlphaChannel } = this.option(); const shouldConvertToColor = value && editAlphaChannel; const text = shouldConvertToColor ? colorUtils.makeRgba(value) : value; this.option("text", text); return super._renderValue() } _resetInputValue() { const $input = this._input(); const value = this.option("value"); $input.val(value); this._updateColorViewValue(value) } _updateColorViewValue(value) { if (this._colorView) { this._colorView.option({ value: value, matchValue: value }) } } _valueChangeEventHandler(e) { let value = this._input().val(); if (value) { value = this._applyColorFromInput(value); this._updateColorViewValue(value) } super._valueChangeEventHandler(e, value) } _applyColorFromInput(value) { const { editAlphaChannel: editAlphaChannel } = this.option(); const newColor = new _color.default(value); if (newColor.colorIsInvalid) { this._resetInputValue(); return this.option("value") } if (editAlphaChannel) { return colorUtils.makeRgba(value) } return value } _clean() { super._clean(); delete this._shouldSaveEmptyValue } _optionChanged(args) { const { name: name, value: value } = args; switch (name) { case "value": this._$colorBoxInputContainer.toggleClass("dx-colorbox-color-is-not-defined", !value); if (value) { colorUtils.makeTransparentBackground(this._$colorResultPreview, value) } else { this._$colorResultPreview.removeAttr("style") } if (null === value) { this._shouldSaveEmptyValue = true } this._updateColorViewValue(value); this._shouldSaveEmptyValue = false; super._optionChanged(args); break; case "applyButtonText": case "cancelButtonText": super._optionChanged(args); this._popup && this._addPopupBottomClasses(); break; case "editAlphaChannel": case "keyStep": if (this._colorView) { this._colorView.option(name, value) } break; default: super._optionChanged(args) } } }(0, _component_registrator.default)("dxColorBox", ColorBox); exports.default = ColorBox }, 98264: /*!*************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/ui/color_box/m_color_view.js ***! \*************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _color = _interopRequireDefault(__webpack_require__( /*! ../../../color */ 43101)); var _translator = __webpack_require__( /*! ../../../common/core/animation/translator */ 88603); var _click = __webpack_require__( /*! ../../../common/core/events/click */ 64044); var _events_engine = _interopRequireDefault(__webpack_require__( /*! ../../../common/core/events/core/events_engine */ 92774)); var _index = __webpack_require__( /*! ../../../common/core/events/utils/index */ 98834); var _message = _interopRequireDefault(__webpack_require__( /*! ../../../common/core/localization/message */ 4671)); var _component_registrator = _interopRequireDefault(__webpack_require__( /*! ../../../core/component_registrator */ 92848)); var _devices = _interopRequireDefault(__webpack_require__( /*! ../../../core/devices */ 65951)); var _guid = _interopRequireDefault(__webpack_require__( /*! ../../../core/guid */ 19427)); var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../../core/renderer */ 64553)); var _extend = __webpack_require__( /*! ../../../core/utils/extend */ 52576); var _size = __webpack_require__( /*! ../../../core/utils/size */ 57653); var _draggable = _interopRequireDefault(__webpack_require__( /*! ../../../ui/draggable */ 5298)); var _editor = _interopRequireDefault(__webpack_require__( /*! ../../ui/editor/editor */ 24768)); var _m_number_box = _interopRequireDefault(__webpack_require__( /*! ../../ui/number_box/m_number_box */ 42284)); var _m_text_box = _interopRequireDefault(__webpack_require__( /*! ../../ui/text_box/m_text_box */ 85968)); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } function _extends() { return _extends = Object.assign ? Object.assign.bind() : function(n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) { ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]) } } return n }, _extends.apply(null, arguments) } const COLOR_VIEW_PALETTE_GRADIENT_CLASS = "dx-colorview-palette-gradient"; const COLOR_VIEW_PALETTE_GRADIENT_WHITE_CLASS = "dx-colorview-palette-gradient-white"; const COLOR_VIEW_PALETTE_GRADIENT_BLACK_CLASS = "dx-colorview-palette-gradient-black"; const COLOR_VIEW_COLOR_PREVIEW = "dx-colorview-color-preview"; const COLOR_VIEW_COLOR_PREVIEW_COLOR_CURRENT = "dx-colorview-color-preview-color-current"; const COLOR_VIEW_COLOR_PREVIEW_COLOR_NEW = "dx-colorview-color-preview-color-new"; class ColorView extends _editor.default { _supportedKeys() { const isRTL = this.option("rtlEnabled"); const that = this; const getHorizontalPaletteStep = function(e) { let step = 100 / that._paletteWidth; if (e.shiftKey) { const { keyStep: keyStep } = that.option(); step *= keyStep } step = step > 1 ? step : 1; return Math.round(step) }; const updateHorizontalPaletteValue = function(step) { let value = that._currentColor.hsv.s + step; if (value > 100) { value = 100 } else if (value < 0) { value = 0 } that._currentColor.hsv.s = value; updatePaletteValue() }; const getVerticalPaletteStep = function(e) { let step = 100 / that._paletteHeight; if (e.shiftKey) { const { keyStep: keyStep } = that.option(); step *= keyStep } step = step > 1 ? step : 1; return Math.round(step) }; const updateVerticalPaletteValue = function(step) { let value = that._currentColor.hsv.v + step; if (value > 100) { value = 100 } else if (value < 0) { value = 0 } that._currentColor.hsv.v = value; updatePaletteValue() }; function updatePaletteValue() { that._placePaletteHandle(); that._updateColorFromHsv(that._currentColor.hsv.h, that._currentColor.hsv.s, that._currentColor.hsv.v) } const getHueScaleStep = function(e) { let step = 360 / (that._hueScaleWrapperHeight - that._hueScaleHandleHeight); if (e.shiftKey) { const { keyStep: keyStep } = that.option(); step *= keyStep } step = step > 1 ? step : 1; return step }; const updateHueScaleValue = function(step) { that._currentColor.hsv.h += step; that._placeHueScaleHandle(); const handleLocation = (0, _translator.locate)(that._$hueScaleHandle); that._updateColorHue(handleLocation.top + that._hueScaleHandleHeight / 2) }; const getAlphaScaleStep = function(e) { let step = 1 / that._alphaChannelScaleWorkWidth; if (e.shiftKey) { const { keyStep: keyStep } = that.option(); step *= keyStep } step = step > .01 ? step : .01; step = isRTL ? -step : step; return step }; const updateAlphaScaleValue = function(step) { that._currentColor.a += step; that._placeAlphaChannelHandle(); const handleLocation = (0, _translator.locate)(that._$alphaChannelHandle); that._calculateColorTransparencyByScaleWidth(handleLocation.left + that._alphaChannelHandleWidth / 2) }; return _extends({}, super._supportedKeys(), { upArrow(e) { e.preventDefault(); e.stopPropagation(); if ((0, _index.isCommandKeyPressed)(e)) { if (this._currentColor.hsv.h <= 360 && !this._isTopColorHue) { this._saveValueChangeEvent(e); updateHueScaleValue(getHueScaleStep(e)) } } else if (this._currentColor.hsv.v < 100) { this._saveValueChangeEvent(e); updateVerticalPaletteValue(getVerticalPaletteStep(e)) } }, downArrow(e) { e.preventDefault(); e.stopPropagation(); if ((0, _index.isCommandKeyPressed)(e)) { if (this._currentColor.hsv.h >= 0) { if (this._isTopColorHue) { this._currentColor.hsv.h = 360 } this._saveValueChangeEvent(e); updateHueScaleValue(-getHueScaleStep(e)) } } else if (this._currentColor.hsv.v > 0) { this._saveValueChangeEvent(e); updateVerticalPaletteValue(-getVerticalPaletteStep(e)) } }, rightArrow(e) { e.preventDefault(); e.stopPropagation(); if ((0, _index.isCommandKeyPressed)(e)) { if (isRTL ? this._currentColor.a < 1 : this._currentColor.a > 0 && this.option("editAlphaChannel")) { this._saveValueChangeEvent(e); updateAlphaScaleValue(-getAlphaScaleStep(e)) } } else if (this._currentColor.hsv.s < 100) { this._saveValueChangeEvent(e); updateHorizontalPaletteValue(getHorizontalPaletteStep(e)) } }, leftArrow(e) { e.preventDefault(); e.stopPropagation(); if ((0, _index.isCommandKeyPressed)(e)) { if (isRTL ? this._currentColor.a > 0 : this._currentColor.a < 1 && this.option("editAlphaChannel")) { this._saveValueChangeEvent(e); updateAlphaScaleValue(getAlphaScaleStep(e)) } } else if (this._currentColor.hsv.s > 0) { this._saveValueChangeEvent(e); updateHorizontalPaletteValue(-getHorizontalPaletteStep(e)) } }, enter(e) { this._fireEnterKeyPressed(e) } }) } _getDefaultOptions() { return _extends({}, super._getDefaultOptions(), { value: null, matchValue: null, onEnterKeyPressed: void 0, editAlphaChannel: false, keyStep: 1, stylingMode: void 0 }) } _defaultOptionsRules() { return super._defaultOptionsRules().concat([{ device: () => "desktop" === _devices.default.real().deviceType && !_devices.default.isSimulator(), options: { focusStateEnabled: true } }]) } _init() { super._init(); this._initColorAndOpacity(); this._initEnterKeyPressedAction() } _initEnterKeyPressedAction() { this._onEnterKeyPressedAction = this._createActionByOption("onEnterKeyPressed") } _fireEnterKeyPressed(e) { if (!this._onEnterKeyPressedAction) { return } this._onEnterKeyPressedAction({ event: e }) } _initColorAndOpacity() { this._setCurrentColor(this.option("value")) } _setCurrentColor(value) { value = value || "#000000"; const newColor = new _color.default(value); if (!newColor.colorIsInvalid) { if (!this._currentColor || this._makeRgba(this._currentColor) !== this._makeRgba(newColor)) { this._currentColor = newColor; if (this._$currentColor) { this._makeTransparentBackground(this._$currentColor, newColor) } } } else { if (!this._currentColor) { this._currentColor = new _color.default("#000000") } this.option("value", this._currentColor.baseColor) } } _setBaseColor(value) { const color = value || "#000000"; const newColor = new _color.default(color); if (!newColor.colorIsInvalid) { const { matchValue: matchValue } = this.option(); const isBaseColorChanged = this._makeRgba(matchValue !== this._makeRgba(newColor)); if (isBaseColorChanged) { if (this._$baseColor) { this._makeTransparentBackground(this._$baseColor, newColor) } } } } _initMarkup() { super._initMarkup(); this.$element().addClass("dx-colorview"); this._renderColorPickerContainer() } _render() { super._render(); this._renderPalette(); this._renderHueScale(); this._renderControlsContainer(); this._renderControls(); this._renderAlphaChannelElements() } _makeTransparentBackground($el, color) { if (!(color instanceof _color.default)) { color = new _color.default(color) } $el.css("backgroundColor", this._makeRgba(color)) } _makeRgba(color) { if (!(color instanceof _color.default)) { color = new _color.default(color) } return `rgba(${[color.r,color.g,color.b,color.a].join(", ")})` } _renderColorPickerContainer() { const $parent = this.$element(); this._$colorPickerContainer = (0, _renderer.default)("<div>").addClass("dx-colorview-container").appendTo($parent); this._renderHtmlRows() } _renderHtmlRows(updatedOption) { const $renderedRows = this._$colorPickerContainer.find(".dx-colorview-container-row"); const renderedRowsCount = $renderedRows.length; const rowCount = this.option("editAlphaChannel") ? 2 : 1; let delta = renderedRowsCount - rowCount; if (delta > 0) { $renderedRows.eq(-1).remove() } if (delta < 0) { delta = Math.abs(delta); const rows = []; let i; for (i = 0; i < delta; i++) { rows.push((0, _renderer.default)("<div>").addClass("dx-colorview-container-row")) } if (renderedRowsCount) { for (i = 0; i < rows.length; i++) { $renderedRows.eq(0).after(rows[i]) } } else { this._$colorPickerContainer.append(rows) } } } _renderHtmlCellInsideRow(index, $rowParent, additionalClass) { return (0, _renderer.default)("<div>").addClass("dx-colorview-container-cell").addClass(additionalClass).appendTo($rowParent.find(".dx-colorview-container-row").eq(index)) } _renderPalette() { const $paletteCell = this._renderHtmlCellInsideRow(0, this._$colorPickerContainer, "dx-colorview-palette-cell"); const $paletteGradientWhite = (0, _renderer.default)("<div>").addClass([COLOR_VIEW_PALETTE_GRADIENT_CLASS, COLOR_VIEW_PALETTE_GRADIENT_WHITE_CLASS].join(" ")); const $paletteGradientBlack = (0, _renderer.default)("<div>").addClass([COLOR_VIEW_PALETTE_GRADIENT_CLASS, COLOR_VIEW_PALETTE_GRADIENT_BLACK_CLASS].join(" ")); this._$palette = (0, _renderer.default)("<div>").addClass("dx-colorview-palette").css("backgroundColor", this._currentColor.getPureColor().toHex()).appendTo($paletteCell); this._paletteHeight = (0, _size.getHeight)(this._$palette); this._paletteWidth = (0, _size.getWidth)(this._$palette); this._renderPaletteHandle(); this._$palette.append([$paletteGradientWhite, $paletteGradientBlack]) } _renderPaletteHandle() { this._$paletteHandle = (0, _renderer.default)("<div>").addClass("dx-colorview-palette-handle").appendTo(this._$palette); const ariaId = `dx-${new _guid.default}`; const handleAria = { id: ariaId, role: "application" }; this.setAria(handleAria, this._$paletteHandle); this.setAria("activedescendant", ariaId, this.option("target")); this._createComponent(this._$paletteHandle, _draggable.default, { contentTemplate: null, boundary: this._$palette, allowMoveByClick: true, boundOffset: function() { return -this._paletteHandleHeight / 2 }.bind(this), onDragMove: _ref => { let { event: event } = _ref; const paletteHandlePosition = (0, _translator.locate)(this._$paletteHandle); this._updateByDrag = true; this._saveValueChangeEvent(event); this._updateColorFromHsv(this._currentColor.hsv.h, this._calculateColorSaturation(paletteHandlePosition), this._calculateColorValue(paletteHandlePosition)) } }); this._paletteHandleWidth = (0, _size.getWidth)(this._$paletteHandle); this._paletteHandleHeight = (0, _size.getHeight)(this._$paletteHandle); this._placePaletteHandle() } _placePaletteHandle() { (0, _translator.move)(this._$paletteHandle, { left: Math.round(this._paletteWidth * this._currentColor.hsv.s / 100 - this._paletteHandleWidth / 2), top: Math.round(this._paletteHeight - this._paletteHeight * this._currentColor.hsv.v / 100 - this._paletteHandleHeight / 2) }) } _calculateColorValue(paletteHandlePosition) { const value = Math.floor(paletteHandlePosition.top + this._paletteHandleHeight / 2); return 100 - Math.round(100 * value / this._paletteHeight) } _calculateColorSaturation(paletteHandlePosition) { const saturation = Math.floor(paletteHandlePosition.left + this._paletteHandleWidth / 2); return Math.round(100 * saturation / this._paletteWidth) } _updateColorFromHsv(hue, saturation, value) { const { a: a } = this._currentColor; this._currentColor = new _color.default(`hsv(${[hue,saturation,value].join(",")})`); this._currentColor.a = a; this._updateColorParamsAndColorPreview(); this.applyColor() } _renderHueScale() { const $hueScaleCell = this._renderHtmlCellInsideRow(0, this._$colorPickerContainer, "dx-colorview-hue-scale-cell"); this._$hueScaleWrapper = (0, _renderer.default)("<div>").addClass("dx-colorview-hue-scale-wrapper").appendTo($hueScaleCell); this._$hueScale = (0, _renderer.default)("<div>").addClass("dx-colorview-hue-scale").appendTo(this._$hueScaleWrapper); this._hueScaleHeight = (0, _size.getHeight)(this._$hueScale); this._hueScaleWrapperHeight = (0, _size.getOuterHeight)(this._$hueScaleWrapper); this._renderHueScaleHandle() } _renderHueScaleHandle() { this._$hueScaleHandle = (0, _renderer.default)("<div>").addClass("dx-colorview-hue-scale-handle").appendTo(this._$hueScaleWrapper); this._createComponent(this._$hueScaleHandle, _draggable.default, { contentTemplate: null, boundary: this._$hueScaleWrapper, allowMoveByClick: true, dragDirection: "vertical", onDragMove: _ref2 => { let { event: event } = _ref2; this._updateByDrag = true; this._saveValueChangeEvent(event); this._updateColorHue((0, _translator.locate)(this._$hueScaleHandle).top + this._hueScaleHandleHeight / 2) } }); this._hueScaleHandleHeight = (0, _size.getHeight)(this._$hueScaleHandle); this._placeHueScaleHandle() } _placeHueScaleHandle() { const hueScaleHeight = this._hueScaleWrapperHeight; const handleHeight = this._hueScaleHandleHeight; let top = (hueScaleHeight - handleHeight) * (360 - this._currentColor.hsv.h) / 360; if (hueScaleHeight < top + handleHeight) { top = hueScaleHeight - handleHeight } if (top < 0) { top = 0 }(0, _translator.move)(this._$hueScaleHandle, { top: Math.round(top) }) } _updateColorHue(handlePosition) { let hue = 360 - Math.round(360 * (handlePosition - this._hueScaleHandleHeight / 2) / (this._hueScaleWrapperHeight - this._hueScaleHandleHeight)); const saturation = this._currentColor.hsv.s; const value = this._currentColor.hsv.v; this._isTopColorHue = false; hue = hue < 0 ? 0 : hue; if (hue >= 360) { this._isTopColorHue = true; hue = 0 } this._updateColorFromHsv(hue, saturation, value); this._$palette.css("backgroundColor", this._currentColor.getPureColor().toHex()) } _renderControlsContainer() { const $controlsContainerCell = this._renderHtmlCellInsideRow(0, this._$colorPickerContainer); this._$controlsContainer = (0, _renderer.default)("<div>").addClass("dx-colorview-controls-container").appendTo($controlsContainerCell) } _renderControls() { this._renderColorsPreview(); this._renderRgbInputs(); this._renderHexInput() } _renderColorsPreview() { const $colorsPreviewContainer = (0, _renderer.default)("<div>").addClass("dx-colorview-color-preview-container").appendTo(this._$controlsContainer); const $colorsPreviewContainerInner = (0, _renderer.default)("<div>").addClass("dx-colorview-color-preview-container-inner").appendTo($colorsPreviewContainer); this._$currentColor = (0, _renderer.default)("<div>").addClass([COLOR_VIEW_COLOR_PREVIEW, COLOR_VIEW_COLOR_PREVIEW_COLOR_NEW].join(" ")); this._$baseColor = (0, _renderer.default)("<div>").addClass([COLOR_VIEW_COLOR_PREVIEW, COLOR_VIEW_COLOR_PREVIEW_COLOR_CURRENT].join(" ")); this._makeTransparentBackground(this._$baseColor, this.option("matchValue")); this._makeTransparentBackground(this._$currentColor, this._currentColor); $colorsPreviewContainerInner.append([this._$baseColor, this._$currentColor]) } _renderAlphaChannelElements() { if (this.option("editAlphaChannel")) { this._$colorPickerContainer.find(".dx-colorview-container-row").eq(1).addClass("dx-colorview-alpha-channel-row"); this._renderAlphaChannelScale(); this._renderAlphaChannelInput() } } _renderRgbInputs() { this._rgbInputsWithLabels = [this._renderEditorWithLabel({ editorType: _m_number_box.default, value: this._currentColor.r, onValueChanged: this._updateColor.bind(this, false), labelText: "R", labelAriaText: _message.default.format("dxColorView-ariaRed"), labelClass: "dx-colorview-label-red" }), this._renderEditorWithLabel({ editorType: _m_number_box.default, value: this._currentColor.g, onValueChanged: this._updateColor.bind(this, false), labelText: "G", labelAriaText: _message.default.format("dxColorView-ariaGreen"), labelClass: "dx-colorview-label-green" }), this._renderEditorWithLabel({ editorType: _m_number_box.default, value: this._currentColor.b, onValueChanged: this._updateColor.bind(this, false), labelText: "B", labelAriaText: _message.default.format("dxColorView-ariaBlue"), labelClass: "dx-colorview-label-blue" })]; this._$controlsContainer.append(this._rgbInputsWithLabels); this._rgbInputs = [this._rgbInputsWithLabels[0].find(".dx-numberbox").dxNumberBox("instance"), this._rgbInputsWithLabels[1].find(".dx-numberbox").dxNumberBox("instance"), this._rgbInputsWithLabels[2].find(".dx-numberbox").dxNumberBox("instance")] } _renderEditorWithLabel(options) { const $editor = (0, _renderer.default)("<div>"); const $label = (0, _renderer.default)("<label>").addClass(options.labelClass).text(`${options.labelText}:`).append($editor); _events_engine.default.off($label, _click.name); _events_engine.default.on($label, _click.name, (e => { e.preventDefault() })); const { editorType: editorType } = options; const editorOptions = (0, _extend.extend)({ value: options.value, onValueChanged: options.onValueChanged, onKeyboardHandled: opts => this._keyboardHandler(opts) }, { stylingMode: this.option("stylingMode") }); if (editorType === _m_number_box.default) { editorOptions.min = options.min || 0; editorOptions.max = options.max || 255; editorOptions.step = options.step || 1 } const editor = new editorType($editor, editorOptions); editor.registerKeyHandler("enter", (e => { this._fireEnterKeyPressed(e) })); this.setAria("label", options.labelAriaText, $editor); return $label } hexInputOptions() { return { editorType: _m_text_box.default, value: this._currentColor.toHex().replace("#", ""), onValueChanged: this._updateColor.bind(this, true), labelClass: "dx-colorview-label-hex", labelText: "#", labelAriaText: _message.default.format("dxColorView-ariaHex") } } _renderHexInput() { this._hexInput = _m_text_box.default.getInstance(this._renderEditorWithLabel(this.hexInputOptions()).appendTo(this._$controlsContainer).find(".dx-textbox")); const inputId = `dx-${new _guid.default}`; const $hexInput = this._$controlsContainer.find(".dx-colorview-label-hex").find(".dx-texteditor-input"); this.setAria("id", inputId, $hexInput); this.setAria("labelledby", inputId, this._$paletteHandle) } _renderAlphaChannelScale() { const $alphaChannelScaleCell = this._renderHtmlCellInsideRow(1, this._$colorPickerContainer, "dx-colorview-alpha-channel-cell"); const $alphaChannelBorder = (0, _renderer.default)("<div>").addClass("dx-colorview-alpha-channel-border").appendTo($alphaChannelScaleCell); const $alphaChannelScaleWrapper = (0, _renderer.default)("<div>").addClass("dx-colorview-alpha-channel-wrapper").appendTo($alphaChannelBorder); this._$alphaChannelScale = (0, _renderer.default)("<div>").addClass("dx-colorview-alpha-channel-scale").appendTo($alphaChannelScaleWrapper); this._makeCSSLinearGradient(this._$alphaChannelScale); this._renderAlphaChannelHandle($alphaChannelScaleCell) } _makeCSSLinearGradient($el) { const color = this._currentColor; const colorAsRgb = `${color.r},${color.g},${color.b}`; const rtlEnabled = this.option("rtlEnabled"); const startColor = `rgba(${colorAsRgb}, ${rtlEnabled?"1":"0"})`; const finishColor = `rgba(${colorAsRgb}, ${rtlEnabled?"0":"1"})`; const backgroundImage = `linear-gradient(-90deg, ${startColor}, ${finishColor})`; $el.css("backgroundImage", backgroundImage) } _renderAlphaChannelInput() { const that = this; const $alphaChannelInputCell = this._renderHtmlCellInsideRow(1, this._$colorPickerContainer); that._alphaChannelInput = this._renderEditorWithLabel({ editorType: _m_number_box.default, value: this._currentColor.a, max: 1, step: .1, onValueChanged(args) { let { value: value } = args; value = that._currentColor.isValidAlpha(value) ? value : that._currentColor.a; args.event && that._saveValueChangeEvent(args.event); that._updateColorTransparency(value); that._placeAlphaChannelHandle() }, labelClass: "dx-colorview-alpha-channel-label", labelText: "Alpha", labelAriaText: _message.default.format("dxColorView-ariaAlpha") }).appendTo($alphaChannelInputCell).find(".dx-numberbox").dxNumberBox("instance") } _updateColorTransparency(transparency) { this._currentColor.a = transparency; this.applyColor() } _renderAlphaChannelHandle($parent) { this._$alphaChannelHandle = (0, _renderer.default)("<div>").addClass("dx-colorview-alpha-channel-handle").appendTo($parent); this._createComponent(this._$alphaChannelHandle, _draggable.default, { contentTemplate: null, boundary: $parent, allowMoveByClick: true, dragDirection: "horizontal", onDragMove: _ref3 => { let { event: event } = _ref3; this._updateByDrag = true; const $alphaChannelHandle = this._$alphaChannelHandle; const alphaChannelHandlePosition = (0, _translator.locate)($alphaChannelHandle).left + this._alphaChannelHandleWidth / 2; this._saveValueChangeEvent(event); this._calculateColorTransparencyByScaleWidth(alphaChannelHandlePosition) } }); this._alphaChannelHandleWidth = (0, _size.getWidth)(this._$alphaChannelHandle); this._alphaChannelScaleWorkWidth = (0, _size.getWidth)($parent) - this._alphaChannelHandleWidth; this._placeAlphaChannelHandle() } _calculateColorTransparencyByScaleWidth(handlePosition) { let transparency = (handlePosition - this._alphaChannelHandleWidth / 2) / this._alphaChannelScaleWorkWidth; const rtlEnabled = this.option("rtlEnabled"); transparency = rtlEnabled ? transparency : 1 - transparency; if (handlePosition >= this._alphaChannelScaleWorkWidth + this._alphaChannelHandleWidth / 2) { transparency = rtlEnabled ? 1 : 0 } else if (transparency < 1) { transparency = transparency.toFixed(2) } const previousTransparency = this._alphaChannelInput.option("value"); transparency = Math.max(transparency, 0); transparency = Math.min(transparency, 1); if (transparency === previousTransparency) { this._updateByDrag = false } else { this._alphaChannelInput.option("value", transparency) } } _placeAlphaChannelHandle() { let left = this._alphaChannelScaleWorkWidth * (1 - this._currentColor.a); if (left < 0) { left = 0 } if (this._alphaChannelScaleWorkWidth < left) { left = this._alphaChannelScaleWorkWidth }(0, _translator.move)(this._$alphaChannelHandle, { left: this.option("rtlEnabled") ? this._alphaChannelScaleWorkWidth - left : left }) } applyColor() { const previousValue = this.option("value"); const colorValue = this.option("editAlphaChannel") ? this._makeRgba(this._currentColor) : this._currentColor.toHex(); this._makeTransparentBackground(this._$currentColor, this._currentColor); if (colorValue === previousValue) { this._updateByDrag = false } else { this.option("value", colorValue) } } cancelColor() { this._initColorAndOpacity(); this._refreshMarkup() } _updateColor(isHex, args) { let rgba; let newColor; if (isHex) { newColor = this._validateHex(`#${this._hexInput.option("value")}`) } else { rgba = this._validateRgb(); if (this._alphaChannelInput) { rgba.push(this._alphaChannelInput.option("value")); newColor = `rgba(${rgba.join(", ")})` } else { newColor = `rgb(${rgba.join(", ")})` } } if (!this._suppressEditorsValueUpdating) { this._currentColor = new _color.default(newColor); this._saveValueChangeEvent(args.event); this.applyColor(); this._refreshMarkup() } } _validateHex(hex) { return this._currentColor.isValidHex(hex) ? hex : this._currentColor.toHex() } _validateRgb() { let r = this._rgbInputs[0].option("value"); let g = this._rgbInputs[1].option("value"); let b = this._rgbInputs[2].option("value"); if (!this._currentColor.isValidRGB(r, g, b)) { r = this._currentColor.r; g = this._currentColor.g; b = this._currentColor.b } return [r, g, b] } _refreshMarkup() { this._placeHueScaleHandle(); this._placePaletteHandle(); this._updateColorParamsAndColorPreview(); this._$palette.css("backgroundColor", this._currentColor.getPureColor().toHex()); if (this._$alphaChannelHandle) { this._updateColorTransparency(this._currentColor.a); this._placeAlphaChannelHandle() } } _updateColorParamsAndColorPreview() { this._suppressEditorsValueUpdating = true; this._hexInput.option("value", this._currentColor.toHex().replace("#", "")); this._rgbInputs[0].option("value", this._currentColor.r); this._rgbInputs[1].option("value", this._currentColor.g); this._rgbInputs[2].option("value", this._currentColor.b); this._suppressEditorsValueUpdating = false; if (this.option("editAlphaChannel")) { this._makeCSSLinearGradient.call(this, this._$alphaChannelScale); this._alphaChannelInput.option("value", this._currentColor.a) } } _optionChanged(args) { const { value: value } = args; switch (args.name) { case "value": this._setCurrentColor(value); if (!this._updateByDrag) { this._refreshMarkup() } this._updateByDrag = false; super._optionChanged(_extends({}, args, { value: this.option("value") })); break; case "matchValue": this._setBaseColor(value); break; case "onEnterKeyPressed": this._initEnterKeyPressedAction(); break; case "editAlphaChannel": if (this._$colorPickerContainer) { this._renderHtmlRows("editAlphaChannel"); this._renderAlphaChannelElements() } break; case "keyStep": break; case "stylingMode": this._renderControls(); break; default: super._optionChanged(args) } } }(0, _component_registrator.default)("dxColorView", ColorView); exports.default = ColorView }, 66900: /*!******************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/ui/context_menu/m_context_menu.js ***! \******************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = exports.DX_MENU_ITEM_CLASS = exports.DX_CONTEXT_MENU_CLASS = void 0; var _animation = __webpack_require__( /*! ../../../common/core/animation */ 16826); var _position = _interopRequireDefault(__webpack_require__( /*! ../../../common/core/animation/position */ 3030)); var _contextmenu = __webpack_require__( /*! ../../../common/core/events/contextmenu */ 80248); var _events_engine = _interopRequireDefault(__webpack_require__( /*! ../../../common/core/events/core/events_engine */ 92774)); var _hold = _interopRequireDefault(__webpack_require__( /*! ../../../common/core/events/hold */ 68095)); var _utils = __webpack_require__( /*! ../../../common/core/events/utils */ 98834); var _component_registrator = _interopRequireDefault(__webpack_require__( /*! ../../../core/component_registrator */ 92848)); var _devices = _interopRequireDefault(__webpack_require__( /*! ../../../core/devices */ 65951)); var _dom_adapter = _interopRequireDefault(__webpack_require__( /*! ../../../core/dom_adapter */ 64960)); var _element = __webpack_require__( /*! ../../../core/element */ 61404); var _guid = _interopRequireDefault(__webpack_require__( /*! ../../../core/guid */ 19427)); var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../../core/renderer */ 64553)); var _common = __webpack_require__( /*! ../../../core/utils/common */ 17781); var _deferred = __webpack_require__( /*! ../../../core/utils/deferred */ 87739); var _dom = __webpack_require__( /*! ../../../core/utils/dom */ 86858); var _extend = __webpack_require__( /*! ../../../core/utils/extend */ 52576); var _iterator = __webpack_require__( /*! ../../../core/utils/iterator */ 21274); var _size = __webpack_require__( /*! ../../../core/utils/size */ 57653); var _type = __webpack_require__( /*! ../../../core/utils/type */ 11528); var _window = __webpack_require__( /*! ../../../core/utils/window */ 3104); var _ui = _interopRequireDefault(__webpack_require__( /*! ../../../ui/overlay/ui.overlay */ 89132)); var _ui2 = _interopRequireDefault(__webpack_require__( /*! ../../../ui/scroll_view/ui.scrollable */ 20876)); var _themes = __webpack_require__( /*! ../../../ui/themes */ 52071); var _m_menu_base = _interopRequireDefault(__webpack_require__( /*! ../../ui/context_menu/m_menu_base */ 76882)); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } const DX_MENU_ITEM_CLASS = exports.DX_MENU_ITEM_CLASS = "dx-menu-item"; const DX_MENU_ITEM_EXPANDED_CLASS = `${DX_MENU_ITEM_CLASS}-expanded`; const DX_MENU_ITEM_WRAPPER_CLASS = `${DX_MENU_ITEM_CLASS}-wrapper`; const DX_CONTEXT_MENU_CLASS = exports.DX_CONTEXT_MENU_CLASS = "dx-context-menu"; const ACTIONS = ["onShowing", "onShown", "onSubmenuCreated", "onHiding", "onHidden", "onPositioning", "onLeftFirstItem", "onLeftLastItem", "onCloseRootSubmenu", "onExpandLastSubmenu"]; const LOCAL_SUBMENU_DIRECTIONS = ["up", "down", "first", "last"]; const window = (0, _window.getWindow)(); class ContextMenu extends _m_menu_base.default { getShowEvent(showEventOption) { if ((0, _type.isObject)(showEventOption)) { if (null !== showEventOption.name) { return showEventOption.name ?? "dxcontextmenu" } } else { return showEventOption } return null } getShowDelay(showEventOption) { return (0, _type.isObject)(showEventOption) && showEventOption.delay } _getDefaultOptions() { return (0, _extend.extend)(super._getDefaultOptions(), { showEvent: "dxcontextmenu", hideOnOutsideClick: true, position: { at: "top left", my: "top left" }, onShowing: null, onShown: null, onSubmenuCreated: null, onHiding: null, onHidden: null, onPositioning: null, submenuDirection: "auto", visible: false, target: void 0, onLeftFirstItem: null, onLeftLastItem: null, onCloseRootSubmenu: null, onExpandLastSubmenu: null, hideOnParentScroll: true, visualContainer: window }) } _defaultOptionsRules() { return super._defaultOptionsRules().concat([{ device: () => !(0, _window.hasWindow)(), options: { animation: null } }]) } _initActions() { this._actions = {}; (0, _iterator.each)(ACTIONS, ((index, action) => { this._actions[action] = this._createActionByOption(action) || _common.noop })) } _setOptionsByReference() { super._setOptionsByReference(); (0, _extend.extend)(this._optionsByReference, { animation: true, selectedItem: true }) } _focusInHandler() {} _itemContainer() { return this._overlay ? this._overlay.$content() : (0, _renderer.default)() } _eventBindingTarget() { return this._itemContainer() } itemsContainer() { return this._overlay ? this._overlay.$content() : void 0 } _supportedKeys() { return (0, _extend.extend)(super._supportedKeys(), { space: () => { const $item = (0, _renderer.default)(this.option("focusedElement")); this.hide(); if (!$item.length || !this._isSelectionEnabled()) { return } this.selectItem($item[0]) }, escape: this.hide }) } _getActiveItem(last) { const $availableItems = this._getAvailableItems(); const $focusedItem = $availableItems.filter(".dx-state-focused"); const $hoveredItem = $availableItems.filter(".dx-state-hover"); const $hoveredItemContainer = $hoveredItem.closest(".dx-menu-items-container"); if ($hoveredItemContainer.find(`.${DX_MENU_ITEM_CLASS}`).index($focusedItem) >= 0) { return $focusedItem } if ($hoveredItem.length) { return $hoveredItem } return super._getActiveItem() } _moveFocus(location) { const $items = this._getItemsByLocation(location); const $oldTarget = this._getActiveItem(true); const $hoveredItem = this.itemsContainer().find(".dx-state-hover"); const $focusedItem = (0, _renderer.default)(this.option("focusedElement")); const $activeItemHighlighted = !!($focusedItem.length || $hoveredItem.length); let $newTarget; switch (location) { case "up": $newTarget = $activeItemHighlighted ? this._prevItem($items) : $oldTarget; this._setFocusedElement($newTarget); if ($oldTarget.is($items.first())) { this._actions.onLeftFirstItem($oldTarget) } break; case "down": $newTarget = $activeItemHighlighted ? this._nextItem($items) : $oldTarget; this._setFocusedElement($newTarget); if ($oldTarget.is($items.last())) { this._actions.onLeftLastItem($oldTarget) } break; case "right": $newTarget = this.option("rtlEnabled") ? this._hideSubmenuHandler() : this._expandSubmenuHandler($items, location); this._setFocusedElement($newTarget); break; case "left": $newTarget = this.option("rtlEnabled") ? this._expandSubmenuHandler($items, location) : this._hideSubmenuHandler(); this._setFocusedElement($newTarget); break; case "first": $newTarget = $items.first(); this._setFocusedElement($newTarget); break; case "last": $newTarget = $items.last(); this._setFocusedElement($newTarget); break; default: return super._moveFocus(location) } } _setFocusedElement($element) { if ($element && 0 !== $element.length) { this.option("focusedElement", (0, _element.getPublicElement)($element)); this._scrollToElement($element) } } _scrollToElement($element) { const $scrollableElement = $element.closest(".dx-scrollable"); const scrollableInstance = $scrollableElement.dxScrollable("instance"); null === scrollableInstance || void 0 === scrollableInstance || scrollableInstance.scrollToElement($element) } _getItemsByLocation(location) { const $activeItem = this._getActiveItem(true); let $items; if (LOCAL_SUBMENU_DIRECTIONS.includes(location)) { $items = $activeItem.closest(".dx-menu-items-container").children().children() } $items = this._getAvailableItems($items); return $items } _getAriaTarget() { return this.$element() } _refreshActiveDescendant() { if ((0, _type.isDefined)(this._overlay)) { const $target = this._overlay.$content(); super._refreshActiveDescendant($target) } } _hideSubmenuHandler() { const $curItem = this._getActiveItem(true); const $parentItem = $curItem.parents(`.${DX_MENU_ITEM_EXPANDED_CLASS}`).first(); if ($parentItem.length) { this._hideSubmenusOnSameLevel($parentItem); this._hideSubmenu($curItem.closest(".dx-submenu")); return $parentItem } this._actions.onCloseRootSubmenu($curItem) } _expandSubmenuHandler($items, location) { const $curItem = this._getActiveItem(true); const itemData = this._getItemData($curItem); const node = this._dataAdapter.getNodeByItem(itemData); const isItemHasSubmenu = this._hasSubmenu(node); const $submenu = $curItem.children(".dx-submenu"); if (isItemHasSubmenu && !$curItem.hasClass("dx-state-disabled")) { if (!$submenu.length || "hidden" === $submenu.css("visibility")) { this._showSubmenu($curItem) } return this._nextItem(this._getItemsByLocation(location)) } this._actions.onExpandLastSubmenu($curItem); return } _clean() { if (this._overlay) { this._overlay.$element().remove(); this._overlay = null } this._detachShowContextMenuEvents(this._getTarget()); this._shownSubmenus = []; super._clean() } _initMarkup() { this.$element().addClass("dx-has-context-menu"); this._eventNamespace = `${this.NAME}${new _guid.default}`; super._initMarkup() } _render() { super._render(); this._renderVisibility(this.option("visible")); this._addWidgetClass() } _isTargetOutOfComponent(relatedTarget) { const isInsideContextMenu = 0 !== (0, _renderer.default)(relatedTarget).closest(`.${DX_CONTEXT_MENU_CLASS}`).length; return !isInsideContextMenu } _focusOutHandler(e) { const { relatedTarget: relatedTarget } = e; if (relatedTarget) { const isTargetOutside = this._isTargetOutOfComponent(relatedTarget); if (isTargetOutside) { this.hide() } } super._focusOutHandler(e) } _renderContentImpl() { this._detachShowContextMenuEvents(this._getTarget()); this._showContextMenuEventHandler = this._createShowContextMenuEventHandler(); this._attachShowContextMenuEvents() } _attachKeyboardEvents() { !this._keyboardListenerId && this._focusTarget().length && super._attachKeyboardEvents() } _renderContextMenuOverlay() { if (this._overlay) { return } const overlayOptions = this._getOverlayOptions(); this._overlay = this._createComponent((0, _renderer.default)("<div>").appendTo(this._$element), _ui.default, overlayOptions); const $overlayContent = this._overlay.$content(); $overlayContent.addClass(DX_CONTEXT_MENU_CLASS); this._addCustomCssClass($overlayContent); this._addPlatformDependentClass($overlayContent); this._attachContextMenuEvent() } preventShowingDefaultContextMenuAboveOverlay() { const $itemContainer = this._itemContainer(); const eventName = (0, _utils.addNamespace)(_contextmenu.name, this._eventNamespace); _events_engine.default.off($itemContainer, eventName, ".dx-submenu"); _events_engine.default.on($itemContainer, eventName, ".dx-submenu", (e => { e.stopPropagation(); e.preventDefault(); _events_engine.default.off($itemContainer, eventName, ".dx-submenu") })) } _itemContextMenuHandler(e) { super._itemContextMenuHandler(e); e.stopPropagation() } _addPlatformDependentClass($element) { if (_devices.default.current().phone) { $element.addClass("dx-menu-phone-overlay") } } _createShowContextMenuEventHandler() { const showContextMenuAction = this._createAction((e => { const { showEvent: showEvent } = this.option(); const delay = this.getShowDelay(showEvent); if (delay) { setTimeout((() => this._show(e.event)), delay) } else { this._show(e.event) } }), { validatingTargetName: "target" }); return e => showContextMenuAction({ event: e, target: (0, _renderer.default)(e.currentTarget) }) } _detachShowContextMenuEvents(target, event) { const { showEvent: showEventOption } = this.option(); const showEvent = this.getShowEvent(event ?? showEventOption); if (!showEvent) { return } const isSelector = (0, _type.isString)(target); const eventName = (0, _utils.addNamespace)(showEvent, this._eventNamespace); if (isSelector) { _events_engine.default.off(_dom_adapter.default.getDocument(), eventName, target, this._showContextMenuEventHandler) } else { _events_engine.default.off((0, _renderer.default)(target), eventName, this._showContextMenuEventHandler) } } _attachShowContextMenuEvents() { const { showEvent: showEventOption, disabled: disabled } = this.option(); const showEvent = this.getShowEvent(showEventOption); if (!showEvent || disabled) { return } const target = this._getTarget(); const isSelector = (0, _type.isString)(target); const eventName = (0, _utils.addNamespace)(showEvent, this._eventNamespace); if (isSelector) { _events_engine.default.on(_dom_adapter.default.getDocument(), eventName, target, this._showContextMenuEventHandler) } else { _events_engine.default.on(target, eventName, this._showContextMenuEventHandler) } } _hoverEndHandler(e) { super._hoverEndHandler(e); e.stopPropagation() } _renderDimensions() {} _renderContainer($wrapper, submenuContainer) { const $holder = submenuContainer || this._itemContainer(); $wrapper = (0, _renderer.default)("<div>"); $wrapper.appendTo($holder).addClass("dx-submenu").css("visibility", submenuContainer ? "hidden" : "visible"); if (!$wrapper.parent().hasClass("dx-overlay-content")) { this._addCustomCssClass($wrapper) } const $itemsContainer = super._renderContainer($wrapper); if (submenuContainer) { return $itemsContainer } if (this.option("width")) { return $itemsContainer.css("minWidth", this.option("width")) } if (this.option("height")) { return $itemsContainer.css("minHeight", this.option("height")) } return $itemsContainer } _renderSubmenuItems(node, $itemFrame) { this._renderItems(this._getChildNodes(node), $itemFrame); const $submenu = $itemFrame.children(".dx-submenu"); this._actions.onSubmenuCreated({ itemElement: (0, _element.getPublicElement)($itemFrame), itemData: node.internalFields.item, submenuElement: (0, _element.getPublicElement)($submenu) }); this._initScrollable($submenu); this.setAria({ role: "menu" }, $submenu) } _getOverlayOptions() { const position = this.option("position"); const overlayOptions = { focusStateEnabled: this.option("focusStateEnabled"), animation: this.option("animation"), innerOverlay: true, hideOnOutsideClick: e => this._hideOnOutsideClickHandler(e), propagateOutsideClick: true, hideOnParentScroll: this.option("hideOnParentScroll"), deferRendering: false, container: this.option("overlayContainer"), position: { at: position.at, my: position.my, of: this._getTarget(), collision: "flipfit", boundary: this.option("visualContainer"), boundaryOffset: this.option("boundaryOffset") }, shading: false, showTitle: false, height: "auto", width: "auto", onShown: this._overlayShownActionHandler.bind(this), onHiding: this._overlayHidingActionHandler.bind(this), onHidden: this._overlayHiddenActionHandler.bind(this), visualContainer: this.option("visualContainer") }; return overlayOptions } _overlayShownActionHandler(arg) { this._actions.onShown(arg) } _overlayHidingActionHandler(arg) { this._actions.onHiding(arg); if (!arg.cancel) { this._hideAllShownSubmenus(); this._setOptionWithoutOptionChange("visible", false) } } _overlayHiddenActionHandler(arg) { this._actions.onHidden(arg) } _shouldHideOnOutsideClick(e) { const hideOnOutsideClick = this.option("hideOnOutsideClick"); if ((0, _type.isFunction)(hideOnOutsideClick)) { return hideOnOutsideClick(e) } return hideOnOutsideClick } _hideOnOutsideClickHandler(e) { if (!this._shouldHideOnOutsideClick(e)) { return false } if (_dom_adapter.default.isDocument(e.target)) { return true } const $activeItemContainer = this._getActiveItemsContainer(e.target); const $itemContainers = this._getItemsContainers(); const $clickedItem = this._searchActiveItem(e.target); const $rootItem = this.$element().parents(`.${DX_MENU_ITEM_CLASS}`); const isRootItemClicked = $clickedItem[0] === $rootItem[0] && $clickedItem.length && $rootItem.length; const isInnerOverlayClicked = this._isIncludeOverlay($activeItemContainer, $itemContainers) && $clickedItem.length; if (isInnerOverlayClicked || isRootItemClicked) { if ("onClick" === this._getShowSubmenuMode()) { this._hideAllShownChildSubmenus($clickedItem) } return false } return true } _getActiveItemsContainer(target) { return (0, _renderer.default)(target).closest(".dx-menu-items-container") } _getItemsContainers() { return this._overlay.$content().find(".dx-menu-items-container") } _searchActiveItem(target) { return (0, _renderer.default)(target).closest(`.${DX_MENU_ITEM_CLASS}`).eq(0) } _isIncludeOverlay($activeOverlay, $allOverlays) { let isSame = false; (0, _iterator.each)($allOverlays, ((index, $overlay) => { if ($activeOverlay.is($overlay) && !isSame) { isSame = true } })); return isSame } _hideAllShownChildSubmenus($clickedItem) { const $submenuElements = $clickedItem.find(".dx-submenu"); const shownSubmenus = (0, _extend.extend)([], this._shownSubmenus); if ($submenuElements.length > 0) { (0, _iterator.each)(shownSubmenus, ((index, $submenu) => { const $context = this._searchActiveItem($submenu.context).parent(); if ($context.parent().is($clickedItem.parent().parent()) && !$context.is($clickedItem.parent())) { this._hideSubmenu($submenu) } })) } } _initScrollable($container) { this._createComponent($container, _ui2.default, { useKeyboard: false, _onVisibilityChanged: scrollable => { scrollable.scrollTo(0) } }) } _setSubMenuHeight($submenu, anchor, isNestedSubmenu) { const $itemsContainer = $submenu.find(".dx-menu-items-container"); const contentHeight = (0, _size.getOuterHeight)($itemsContainer); const maxHeight = this._getMaxHeight(anchor, !isNestedSubmenu); const menuHeight = Math.min(contentHeight, maxHeight); $submenu.css("height", isNestedSubmenu ? menuHeight : "100%") } _getMaxHeight(anchor) { let considerAnchorHeight = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : true; const windowHeight = (0, _size.getOuterHeight)(window); const isAnchorRenderer = (0, _type.isRenderer)(anchor); const document = _dom_adapter.default.getDocument(); const isAnchorDocument = anchor.length && anchor[0] === document; if (!isAnchorRenderer || isAnchorDocument) { return windowHeight } const offsetTop = anchor[0].getBoundingClientRect().top; const anchorHeight = (0, _size.getOuterHeight)(anchor); const availableHeight = considerAnchorHeight ? Math.max(offsetTop, windowHeight - offsetTop - anchorHeight) : Math.max(offsetTop + anchorHeight, windowHeight - offsetTop); return availableHeight - 10 } _dimensionChanged() { if (!this._shownSubmenus) { return } this._shownSubmenus.forEach(($submenu => { const $item = $submenu.closest(`.${DX_MENU_ITEM_CLASS}`); this._setSubMenuHeight($submenu, $item, true); this._scrollToElement($item); const submenuPosition = this._getSubmenuPosition($item); _position.default.setup($submenu, submenuPosition) })) } _getSubmenuBorderWidth() { return (0, _themes.isGeneric)((0, _themes.current)()) ? 1 : 0 } _showSubmenu($item) { const node = this._dataAdapter.getNodeByItem(this._getItemData($item)); this._hideSubmenusOnSameLevel($item); if (!this._hasSubmenu(node)) { return } let $submenu = $item.children(".dx-submenu"); const isSubmenuRendered = $submenu.length; super._showSubmenu($item); if (!isSubmenuRendered) { this._renderSubmenuItems(node, $item); $submenu = $item.children(".dx-submenu") } this._planPostRenderActions($submenu) } _setSubmenuVisible($submenu) { if (!$submenu) { return } const $item = null === $submenu || void 0 === $submenu ? void 0 : $submenu.closest(`.${DX_MENU_ITEM_CLASS}`); this._setSubMenuHeight($submenu, $item, true); if (!this._isSubmenuVisible($submenu) && $item) { this._drawSubmenu($item) } } _hideSubmenusOnSameLevel($item) { const $expandedItems = $item.parent(`.${DX_MENU_ITEM_WRAPPER_CLASS}`).siblings().find(`.${DX_MENU_ITEM_EXPANDED_CLASS}`); if ($expandedItems.length) { $expandedItems.removeClass(DX_MENU_ITEM_EXPANDED_CLASS); this._hideSubmenu($expandedItems.find(".dx-submenu")) } } _hideSubmenuGroup($submenu) { if (this._isSubmenuVisible($submenu)) { this._hideSubmenuCore($submenu) } } _isSubmenuVisible($submenu) { return "visible" === $submenu.css("visibility") } _drawSubmenu($itemElement) { var _this$_overlay; const animation = this.option("animation") ? this.option("animation").show : {}; const $submenu = $itemElement.children(".dx-submenu"); const submenuPosition = this._getSubmenuPosition($itemElement); if (null !== (_this$_overlay = this._overlay) && void 0 !== _this$_overlay && _this$_overlay.option("visible")) { if (!(0, _type.isDefined)(this._shownSubmenus)) { this._shownSubmenus = [] } if (!this._shownSubmenus.includes($submenu)) { this._shownSubmenus.push($submenu) } if (animation) { _animation.fx.stop($submenu) } _position.default.setup($submenu, submenuPosition); if (animation) { if ((0, _type.isPlainObject)(animation.to)) { animation.to.position = submenuPosition } this._animate($submenu, animation) } $submenu.css("visibility", "visible") } } _animate($container, options) { _animation.fx.animate($container, options) } _getSubmenuPosition($rootItem) { const submenuDirection = this.option("submenuDirection").toLowerCase(); const $rootItemWrapper = $rootItem.parent(`.${DX_MENU_ITEM_WRAPPER_CLASS}`); const position = { collision: "flip", of: $rootItemWrapper, offset: { h: 0, v: -1 } }; switch (submenuDirection) { case "left": position.at = "left top"; position.my = "right top"; break; case "right": position.at = "right top"; position.my = "left top"; break; default: if (this.option("rtlEnabled")) { position.at = "left top"; position.my = "right top" } else { position.at = "right top"; position.my = "left top" } } return position } _updateSubmenuVisibilityOnClick(actionArgs) { if (!actionArgs.args.length) { return } const { itemData: itemData } = actionArgs.args[0]; const node = this._dataAdapter.getNodeByItem(itemData); if (!node) { return } const $itemElement = (0, _renderer.default)(actionArgs.args[0].itemElement); let $submenu = $itemElement.find(".dx-submenu"); const shouldRenderSubmenu = this._hasSubmenu(node) && !$submenu.length; if (shouldRenderSubmenu) { this._renderSubmenuItems(node, $itemElement); $submenu = $itemElement.find(".dx-submenu") } if ($itemElement.context === $submenu.context && "visible" === $submenu.css("visibility")) { return } this._updateSelectedItemOnClick(actionArgs); const notCloseMenuOnItemClick = itemData && false === itemData.closeMenuOnClick; if (!itemData || itemData.disabled || notCloseMenuOnItemClick) { return } if (0 === $submenu.length) { var _this$_overlay2; const $prevSubmenu = (0, _renderer.default)($itemElement.parents(".dx-submenu")[0]); this._hideSubmenu($prevSubmenu); if (!actionArgs.canceled && null !== (_this$_overlay2 = this._overlay) && void 0 !== _this$_overlay2 && _this$_overlay2.option("visible")) { this.option("visible", false) } } else { if (this._shownSubmenus && this._shownSubmenus.length > 0) { if (this._shownSubmenus[0].is($submenu)) { this._hideSubmenu($submenu) } } this._showSubmenu($itemElement) } } _hideSubmenu($curSubmenu) { const shownSubmenus = (0, _extend.extend)([], this._shownSubmenus); (0, _iterator.each)(shownSubmenus, ((index, $submenu) => { if ($curSubmenu.is($submenu) || (0, _dom.contains)($curSubmenu[0], $submenu[0])) { $submenu.parent().removeClass(DX_MENU_ITEM_EXPANDED_CLASS); this._hideSubmenuCore($submenu) } })) } _hideSubmenuCore($submenu) { const index = this._shownSubmenus.indexOf($submenu); const animation = this.option("animation") ? this.option("animation").hide : null; if (index >= 0) { this._shownSubmenus.splice(index, 1) } this._stopAnimate($submenu); animation && this._animate($submenu, animation); $submenu.css("visibility", "hidden"); const scrollableInstance = $submenu.dxScrollable("instance"); scrollableInstance.scrollTo(0); this.option("focusedElement", null) } _stopAnimate($container) { _animation.fx.stop($container, true) } _hideAllShownSubmenus() { const shownSubmenus = (0, _extend.extend)([], this._shownSubmenus); const $expandedItems = this._overlay.$content().find(`.${DX_MENU_ITEM_EXPANDED_CLASS}`); $expandedItems.removeClass(DX_MENU_ITEM_EXPANDED_CLASS); (0, _iterator.each)(shownSubmenus, ((_, $submenu) => { this._hideSubmenu($submenu) })) } _visibilityChanged(visible) { if (visible) { this._renderContentImpl() } } _optionChanged(args) { const { name: name, value: value, previousValue: previousValue } = args; if (ACTIONS.includes(name)) { this._initActions(); return } switch (name) { case "visible": this._renderVisibility(value); break; case "disabled": case "position": case "submenuDirection": this._invalidate(); break; case "showEvent": if (previousValue) { this._detachShowContextMenuEvents(this._getTarget(), previousValue) } this._invalidate(); break; case "target": if (previousValue) { this._detachShowContextMenuEvents(previousValue) } this._invalidate(); break; case "hideOnOutsideClick": case "hideOnParentScroll": case "visualContainer": break; default: super._optionChanged(args) } } _renderVisibility(showing) { return showing ? this._show() : this._hide() } _toggleVisibility() {} _show(event) { const args = { jQEvent: event }; let promise = (0, _deferred.Deferred)().reject().promise(); this._actions.onShowing(args); if (args.cancel) { return promise } const position = this._positionContextMenu(event); if (position) { var _event$originalEvent; if (!this._overlay) { this._renderContextMenuOverlay(); this._overlay.$content().addClass(this._widgetClass()); this._renderFocusState(); this._attachHoverEvents(); this._attachClickEvent(); this._renderItems(this._dataAdapter.getRootNodes()) } const $subMenu = (0, _renderer.default)(this._overlay.content()).children(".dx-submenu"); this._setOptionWithoutOptionChange("visible", true); this._overlay.option({ height: () => this._getMaxHeight(position.of), maxHeight: () => { const $content = $subMenu.find(".dx-menu-items-container"); const borderWidth = this._getSubmenuBorderWidth(); return (0, _size.getOuterHeight)($content) + 2 * borderWidth }, position: position }); if ($subMenu.length) { this._setSubMenuHeight($subMenu, position.of, false) } promise = this._overlay.show(); null === event || void 0 === event || event.stopPropagation(); this._setAriaAttributes(); if ((null === event || void 0 === event || null === (_event$originalEvent = event.originalEvent) || void 0 === _event$originalEvent ? void 0 : _event$originalEvent.type) === _hold.default.name) { this.preventShowingDefaultContextMenuAboveOverlay() } } return promise } _renderItems(nodes, submenuContainer) { super._renderItems(nodes, submenuContainer); const $submenu = (0, _renderer.default)(this._overlay.content()).children(".dx-submenu"); if ($submenu.length) { this._initScrollable($submenu) } } _setAriaAttributes() { this._overlayContentId = `dx-${new _guid.default}`; this.setAria("owns", this._overlayContentId); this.setAria({ id: this._overlayContentId, role: "menu" }, this._overlay.$content()) } _cleanAriaAttributes() { this._overlay && this.setAria("id", null, this._overlay.$content()); this.setAria("owns", void 0) } _getTarget() { return this.option("target") || this.option("position").of || (0, _renderer.default)(_dom_adapter.default.getDocument()) } _getContextMenuPosition() { return (0, _extend.extend)({}, this.option("position"), { of: this._getTarget() }) } _positionContextMenu(jQEvent) { let position = this._getContextMenuPosition(); const isInitialPosition = this._isInitialOptionValue("position"); const positioningAction = this._createActionByOption("onPositioning"); if (null !== jQEvent && void 0 !== jQEvent && jQEvent.preventDefault && isInitialPosition) { position.of = jQEvent } const actionArgs = { position: position, event: jQEvent }; positioningAction(actionArgs); if (actionArgs.cancel) { position = null } else if (actionArgs.event) { actionArgs.event.cancel = true; jQEvent.preventDefault() } return position } _refresh() { if (!(0, _window.hasWindow)()) { super._refresh() } else if (this._overlay) { const lastPosition = this._overlay.option("position"); super._refresh(); this._overlay && this._overlay.option("position", lastPosition) } else { super._refresh() } } _hide() { let promise; if (this._overlay) { promise = this._overlay.hide(); this._setOptionWithoutOptionChange("visible", false) } this._cleanAriaAttributes(); this.option("focusedElement", null); return promise || (0, _deferred.Deferred)().reject().promise() } toggle(showing) { const visible = this.option("visible"); showing = void 0 === showing ? !visible : showing; return this._renderVisibility(showing) } show() { return this.toggle(true) } hide() { return this.toggle(false) } _postProcessRenderItems($submenu) { this._setSubmenuVisible($submenu) } }(0, _component_registrator.default)("dxContextMenu", ContextMenu); exports.default = ContextMenu }, 45067: /*!*****************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/ui/context_menu/m_menu_base.edit.strategy.js ***! \*****************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../../core/renderer */ 64553)); var _iterator = __webpack_require__( /*! ../../../core/utils/iterator */ 21274); var _m_collection_widgetEditStrategy = _interopRequireDefault(__webpack_require__( /*! ../../ui/collection/m_collection_widget.edit.strategy.plain */ 60498)); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } class MenuBaseEditStrategy extends _m_collection_widgetEditStrategy.default { _getPlainItems() { return (0, _iterator.map)(this._collectionWidget.option("items"), (function getMenuItems(item) { return item.items ? [item].concat((0, _iterator.map)(item.items, getMenuItems)) : item })) } _stringifyItem(item) { return JSON.stringify(item, ((key, value) => { if ("template" === key) { return this._getTemplateString(value) } return value })) } _getTemplateString(template) { let result; if ("object" === typeof template) { result = (0, _renderer.default)(template).text() } else { result = template.toString() } return result } } exports.default = MenuBaseEditStrategy }, 76882: /*!***************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/ui/context_menu/m_menu_base.js ***! \***************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _devices = _interopRequireDefault(__webpack_require__( /*! ../../../core/devices */ 65951)); var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../../core/renderer */ 64553)); var _common = __webpack_require__( /*! ../../../core/utils/common */ 17781); var _extend = __webpack_require__( /*! ../../../core/utils/extend */ 52576); var _iterator = __webpack_require__( /*! ../../../core/utils/iterator */ 21274); var _type = __webpack_require__( /*! ../../../core/utils/type */ 11528); var _utils = __webpack_require__( /*! ../../../ui/widget/utils.ink_ripple */ 63322); var _item = _interopRequireDefault(__webpack_require__( /*! ../../ui/collection/item */ 30845)); var _m_menu_baseEdit = _interopRequireDefault(__webpack_require__( /*! ../../ui/context_menu/m_menu_base.edit.strategy */ 45067)); var _m_hierarchical_collection_widget = _interopRequireDefault(__webpack_require__( /*! ../../ui/hierarchical_collection/m_hierarchical_collection_widget */ 16383)); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } const ITEM_CLASS = "dx-menu-item"; const DX_ITEM_CONTENT_CLASS = `${ITEM_CLASS}-content`; const DX_MENU_SELECTED_ITEM_CLASS = `${ITEM_CLASS}-selected`; const DX_MENU_ITEM_WRAPPER_CLASS = `${ITEM_CLASS}-wrapper`; const DX_MENU_ITEM_EXPANDED_CLASS = `${ITEM_CLASS}-expanded`; const DX_ITEM_HAS_TEXT = `${ITEM_CLASS}-has-text`; const DX_ITEM_HAS_ICON = `${ITEM_CLASS}-has-icon`; const DX_ITEM_HAS_SUBMENU = `${ITEM_CLASS}-has-submenu`; const DX_MENU_ITEM_POPOUT_CLASS = `${ITEM_CLASS}-popout`; const DX_MENU_ITEM_POPOUT_CONTAINER_CLASS = `${DX_MENU_ITEM_POPOUT_CLASS}-container`; const DX_MENU_ITEM_CAPTION_CLASS = `${ITEM_CLASS}-text`; const DEFAULT_DELAY = { show: 50, hide: 300 }; const DX_MENU_ITEM_CAPTION_URL_CLASS = `${DX_MENU_ITEM_CAPTION_CLASS}-with-url`; class MenuBase extends _m_hierarchical_collection_widget.default { _getDefaultOptions() { return (0, _extend.extend)(super._getDefaultOptions(), { items: [], cssClass: "", activeStateEnabled: true, showSubmenuMode: { name: "onHover", delay: { show: 50, hide: 300 } }, animation: { show: { type: "fade", from: 0, to: 1, duration: 100 }, hide: { type: "fade", from: 1, to: 0, duration: 100 } }, selectByClick: false, focusOnSelectedItem: false, keyExpr: null, _itemAttributes: { role: "menuitem" }, useInkRipple: false }) } _itemDataKey() { return "dxMenuItemDataKey" } _itemClass() { return ITEM_CLASS } _setAriaSelectionAttribute($itemElement, isSelected) {} _selectedItemClass() { return DX_MENU_SELECTED_ITEM_CLASS } _widgetClass() { return "dx-menu-base" } _focusTarget() { return this._itemContainer() } _clean() { this.option("focusedElement", null); super._clean() } _supportedKeys() { return (0, _extend.extend)(super._supportedKeys(), { space: () => { const $item = (0, _renderer.default)(this.option("focusedElement")); if (!$item.length || !this._isSelectionEnabled()) { return } this.selectItem($item[0]) }, pageUp: _common.noop, pageDown: _common.noop }) } _isSelectionEnabled() { const { selectionMode: selectionMode } = this.option(); return "single" === selectionMode } _init() { super._init(); this._activeStateUnit = `.${ITEM_CLASS}`; this._renderSelectedItem(); this._initActions() } _getLinkContainer(iconContainer, textContainer, itemData) { const { linkAttr: linkAttr, url: url } = itemData; null === iconContainer || void 0 === iconContainer || iconContainer.addClass("dx-icon-with-url"); null === textContainer || void 0 === textContainer || textContainer.addClass(DX_MENU_ITEM_CAPTION_URL_CLASS); return super._getLinkContainer(iconContainer, textContainer, { linkAttr: linkAttr, url: url }) } _addContent($container, itemData) { const { html: html, url: url } = itemData; if (url) { $container.html(html); const link = this._getLinkContainer(this._getIconContainer(itemData), this._getTextContainer(itemData), itemData); $container.append(link) } else { super._addContent($container, itemData) } $container.append(this._getPopoutContainer(itemData)); this._addContentClasses(itemData, $container.parent()) } _getTextContainer(itemData) { const { text: text } = itemData; if (!text) { return } const $itemContainer = (0, _renderer.default)("<span>").addClass(DX_MENU_ITEM_CAPTION_CLASS); const itemText = (0, _type.isPlainObject)(itemData) ? text : String(itemData); return $itemContainer.text(itemText) } _getItemExtraPropNames() { return ["url", "linkAttr"] } _getPopoutContainer(itemData) { const { items: items } = itemData; let $popOutContainer; if (null !== items && void 0 !== items && items.length) { const $popOutImage = (0, _renderer.default)("<div>").addClass(DX_MENU_ITEM_POPOUT_CLASS); $popOutContainer = (0, _renderer.default)("<span>").addClass(DX_MENU_ITEM_POPOUT_CONTAINER_CLASS).append($popOutImage) } return $popOutContainer } _getDataAdapterOptions() { return { rootValue: 0, multipleSelection: false, recursiveSelection: false, recursiveExpansion: false, searchValue: "" } } _selectByItem(selectedItem) { if (!selectedItem) { return } const nodeToSelect = this._dataAdapter.getNodeByItem(selectedItem); this._dataAdapter.toggleSelection(nodeToSelect.internalFields.key, true) } _renderSelectedItem() { const selectedKeys = this._dataAdapter.getSelectedNodesKeys(); const selectedKey = selectedKeys.length && selectedKeys[0]; const selectedItem = this.option("selectedItem"); if (!selectedKey) { this._selectByItem(selectedItem); return } const node = this._dataAdapter.getNodeByKey(selectedKey); if (false === node.selectable) { return } if (!selectedItem) { this.option("selectedItem", node.internalFields.item); return } if (selectedItem !== node.internalFields.item) { this._dataAdapter.toggleSelection(selectedKey, false); this._selectByItem(selectedItem) } } _initActions() {} _initMarkup() { super._initMarkup(); this.option("useInkRipple") && this._renderInkRipple() } _renderInkRipple() { this._inkRipple = (0, _utils.render)() } _toggleActiveState($element, value, e) { super._toggleActiveState.apply(this, arguments); if (!this._inkRipple) { return } const config = { element: $element, event: e }; if (value) { this._inkRipple.showWave(config) } else { this._inkRipple.hideWave(config) } } _getShowSubmenuMode() { const { showSubmenuMode: showSubmenuMode } = this.option(); const showMode = (0, _type.isObject)(showSubmenuMode) ? showSubmenuMode.name : showSubmenuMode; return this._isDesktopDevice() ? showMode : "onClick" } _initSelectedItems() {} _isDesktopDevice() { return "desktop" === _devices.default.real().deviceType } _initEditStrategy() { const Strategy = _m_menu_baseEdit.default; this._editStrategy = new Strategy(this) } _addCustomCssClass($element) { $element.addClass(this.option("cssClass")) } _itemWrapperSelector() { return `.${DX_MENU_ITEM_WRAPPER_CLASS}` } _hoverStartHandler(e) { const $itemElement = this._getItemElementByEventArgs(e); if (!$itemElement || this._isItemDisabled($itemElement)) { return } e.stopPropagation(); if ("onHover" === this._getShowSubmenuMode()) { const submenuDelay = this._getSubmenuDelay("show"); if (0 === submenuDelay) { this._showSubmenu($itemElement) } else { clearTimeout(this._showSubmenusTimeout); this._showSubmenusTimeout = setTimeout(this._showSubmenu.bind(this, $itemElement), submenuDelay) } } } _getAvailableItems($itemElements) { return super._getAvailableItems($itemElements).filter((function() { return "hidden" !== (0, _renderer.default)(this).css("visibility") })) } _isItemDisabled($item) { return this._disabledGetter($item.data(this._itemDataKey())) } _showSubmenu($itemElement) { this._addExpandedClass($itemElement) } _addExpandedClass(itemElement) { (0, _renderer.default)(itemElement).addClass(DX_MENU_ITEM_EXPANDED_CLASS) } _getSubmenuDelay(action) { const { delay: delay } = this.option("showSubmenuMode"); if (!(0, _type.isDefined)(delay)) { return DEFAULT_DELAY[action] } return (0, _type.isObject)(delay) ? delay[action] : delay } _getItemElementByEventArgs(eventArgs) { let $target = (0, _renderer.default)(eventArgs.target); if ($target.hasClass(this._itemClass()) || $target.get(0) === eventArgs.currentTarget) { return $target } while (!$target.hasClass(this._itemClass())) { $target = $target.parent(); if ($target.hasClass("dx-submenu")) { return null } } return $target } _hoverEndHandler(event) { clearTimeout(this._showSubmenusTimeout) } _hasSubmenu(node) { return null === node || void 0 === node ? void 0 : node.internalFields.childrenKeys.length } _renderContentImpl() { this._renderItems(this._dataAdapter.getRootNodes()) } _renderItems(nodes, submenuContainer) { if (!nodes.length) { return } this.hasIcons = false; const $nodeContainer = this._renderContainer(this.$element(), submenuContainer); let firstVisibleIndex = -1; let nextGroupFirstIndex = -1; (0, _iterator.each)(nodes, ((index, node) => { const isVisibleNode = false !== node.visible; if (isVisibleNode && firstVisibleIndex < 0) { firstVisibleIndex = index } const isBeginGroup = firstVisibleIndex < index && (node.beginGroup || index === nextGroupFirstIndex); if (isBeginGroup) { nextGroupFirstIndex = isVisibleNode ? index : index + 1 } if (index === nextGroupFirstIndex && firstVisibleIndex < index) { this._renderSeparator($nodeContainer) } this._renderItem(index, node, $nodeContainer) })); if (!this.hasIcons) { $nodeContainer.addClass("dx-menu-no-icons") } } _renderContainer($wrapper, submenuContainer) { const $container = (0, _renderer.default)("<ul>"); this.setAria("role", "none", $container); return $container.appendTo($wrapper).addClass("dx-menu-items-container") } _createDOMElement($nodeContainer) { const $node = (0, _renderer.default)("<li>"); this.setAria("role", "none", $node); return $node.appendTo($nodeContainer).addClass(DX_MENU_ITEM_WRAPPER_CLASS) } _renderItem(index, node, $nodeContainer, $nodeElement) { var _items; const { items: items = [] } = this.option(); const $node = $nodeElement ?? this._createDOMElement($nodeContainer); if (null !== (_items = items[index + 1]) && void 0 !== _items && _items.beginGroup) { $node.addClass("dx-menu-last-group-item") } const $itemFrame = super._renderItem(index, node.internalFields.item, $node); if (node.internalFields.item === this.option("selectedItem")) { $itemFrame.addClass(DX_MENU_SELECTED_ITEM_CLASS) } $itemFrame.attr("tabIndex", -1); if (this._hasSubmenu(node)) { this.setAria("haspopup", "true", $itemFrame) } return $itemFrame } _renderItemFrame(index, itemData, $itemContainer) { const $itemFrame = $itemContainer.children(`.${ITEM_CLASS}`); return $itemFrame.length ? $itemFrame : super._renderItemFrame.apply(this, arguments) } _refreshItem($item, item) { const node = this._dataAdapter.getNodeByItem(item); const index = $item.data(this._itemIndexKey()); const $nodeContainer = $item.closest("ul"); const $nodeElement = $item.closest("li"); this._renderItem(index, node, $nodeContainer, $nodeElement) } _addContentClasses(itemData, $itemFrame) { const hasText = itemData.text ? !!itemData.text.length : false; const hasIcon = !!itemData.icon; const hasSubmenu = itemData.items ? !!itemData.items.length : false; $itemFrame.toggleClass(DX_ITEM_HAS_TEXT, hasText); $itemFrame.toggleClass(DX_ITEM_HAS_ICON, hasIcon); if (!this.hasIcons) { this.hasIcons = hasIcon } $itemFrame.toggleClass(DX_ITEM_HAS_SUBMENU, hasSubmenu) } _getItemContent($itemFrame) { let $itemContent = super._getItemContent($itemFrame); if (!$itemContent.length) { $itemContent = $itemFrame.children(`.${DX_ITEM_CONTENT_CLASS}`) } return $itemContent } _postprocessRenderItem(args) { const $itemElement = (0, _renderer.default)(args.itemElement); const selectedIndex = this._dataAdapter.getSelectedNodesKeys(); if (!selectedIndex.length || !this._selectedGetter(args.itemData) || !this._isItemSelectable(args.itemData)) { this._setAriaSelectionAttribute($itemElement, "false"); return } const node = this._dataAdapter.getNodeByItem(args.itemData); if (node.internalFields.key === selectedIndex[0]) { $itemElement.addClass(this._selectedItemClass()); this._setAriaSelectionAttribute($itemElement, "true") } else { this._setAriaSelectionAttribute($itemElement, "false") } } _isItemSelectable(item) { return false !== item.selectable } _renderSeparator($itemsContainer) { (0, _renderer.default)("<li>").appendTo($itemsContainer).addClass("dx-menu-separator") } _itemClickHandler(e) { if (e._skipHandling) { return } const itemClickActionHandler = this._createAction(this._updateSubmenuVisibilityOnClick.bind(this)); this._itemDXEventHandler(e, "onItemClick", {}, { beforeExecute: this._itemClick, afterExecute: itemClickActionHandler.bind(this) }); e._skipHandling = true } _itemClick(actionArgs) { const { event: event, itemData: itemData } = actionArgs.args[0]; const $itemElement = this._getItemElementByEventArgs(event); const link = $itemElement && $itemElement.find(".dx-item-url").get(0); if (itemData.url && link) { link.click() } } _updateSubmenuVisibilityOnClick(actionArgs) { this._updateSelectedItemOnClick(actionArgs); if ("onClick" === this._getShowSubmenuMode()) { this._addExpandedClass(actionArgs.args[0].itemElement) } } _updateSelectedItemOnClick(actionArgs) { const args = actionArgs.args ? actionArgs.args[0] : actionArgs; if (!this._isItemSelectAllowed(args.itemData)) { return } const selectedItemKey = this._dataAdapter.getSelectedNodesKeys(); const selectedNode = selectedItemKey.length && this._dataAdapter.getNodeByKey(selectedItemKey[0]); if (selectedNode) { this._toggleItemSelection(selectedNode, false) } if (!selectedNode || selectedNode.internalFields.item !== args.itemData) { this.selectItem(args.itemData) } else { this._fireSelectionChangeEvent(null, this.option("selectedItem")); this._setOptionWithoutOptionChange("selectedItem", null) } } _isItemSelectAllowed(item) { const isSelectByClickEnabled = this._isSelectionEnabled() && this.option("selectByClick"); return !this._isContainerEmpty() && isSelectByClickEnabled && this._isItemSelectable(item) && !this._itemsGetter(item) } _isContainerEmpty() { return this._itemContainer().is(":empty") } _syncSelectionOptions() { return (0, _common.asyncNoop)() } _optionChanged(args) { switch (args.name) { case "showSubmenuMode": break; case "selectedItem": { const node = this._dataAdapter.getNodeByItem(args.value); const selectedKey = this._dataAdapter.getSelectedNodesKeys()[0]; if (node && node.internalFields.key !== selectedKey) { if (false === node.selectable) { break } if (selectedKey) { this._toggleItemSelection(this._dataAdapter.getNodeByKey(selectedKey), false) } this._toggleItemSelection(node, true); this._updateSelectedItems() } break } case "cssClass": case "position": case "selectByClick": case "animation": case "useInkRipple": this._invalidate(); break; default: super._optionChanged(args) } } _toggleItemSelection(node, value) { const itemElement = this._getElementByItem(node.internalFields.item); itemElement && (0, _renderer.default)(itemElement).toggleClass(DX_MENU_SELECTED_ITEM_CLASS); this._dataAdapter.toggleSelection(node.internalFields.key, value) } _getElementByItem(itemData) { let result; (0, _iterator.each)(this._itemElements(), ((_, itemElement) => { if ((0, _renderer.default)(itemElement).data(this._itemDataKey()) !== itemData) { return true } result = itemElement; return false })); return result } _updateSelectedItems(oldSelection, newSelection) { if (oldSelection || newSelection) { this._fireSelectionChangeEvent(newSelection, oldSelection) } } _fireSelectionChangeEvent(addedSelection, removedSelection) { this._createActionByOption("onSelectionChanged", { excludeValidators: ["disabled", "readOnly"] })({ addedItems: [addedSelection], removedItems: [removedSelection] }) } selectItem(itemElement) { const itemData = itemElement.nodeType ? this._getItemData(itemElement) : itemElement; const selectedKey = this._dataAdapter.getSelectedNodesKeys()[0]; const selectedItem = this.option("selectedItem"); const node = this._dataAdapter.getNodeByItem(itemData); if (node.internalFields.key !== selectedKey) { if (selectedKey) { this._toggleItemSelection(this._dataAdapter.getNodeByKey(selectedKey), false) } this._toggleItemSelection(node, true); this._updateSelectedItems(selectedItem, itemData); this._setOptionWithoutOptionChange("selectedItem", itemData) } } unselectItem(itemElement) { const itemData = itemElement.nodeType ? this._getItemData(itemElement) : itemElement; const node = this._dataAdapter.getNodeByItem(itemData); const selectedItem = this.option("selectedItem"); if (node.internalFields.selected) { this._toggleItemSelection(node, false); this._updateSelectedItems(selectedItem, null); this._setOptionWithoutOptionChange("selectedItem", null) } } } MenuBase.ItemClass = _item.default; exports.default = MenuBase }, 10291: /*!***************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/ui/date_box/m_date_box.base.js ***! \***************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _date = _interopRequireDefault(__webpack_require__( /*! ../../../common/core/localization/date */ 38662)); var _message = _interopRequireDefault(__webpack_require__( /*! ../../../common/core/localization/message */ 4671)); var _config = _interopRequireDefault(__webpack_require__( /*! ../../../core/config */ 66636)); var _devices = _interopRequireDefault(__webpack_require__( /*! ../../../core/devices */ 65951)); var _browser = _interopRequireDefault(__webpack_require__( /*! ../../../core/utils/browser */ 48314)); var _date2 = _interopRequireDefault(__webpack_require__( /*! ../../../core/utils/date */ 41380)); var _date_serialization = _interopRequireDefault(__webpack_require__( /*! ../../../core/utils/date_serialization */ 71051)); var _dom = __webpack_require__( /*! ../../../core/utils/dom */ 86858); var _extend = __webpack_require__( /*! ../../../core/utils/extend */ 52576); var _iterator = __webpack_require__( /*! ../../../core/utils/iterator */ 21274); var _support = __webpack_require__( /*! ../../../core/utils/support */ 4785); var _type = __webpack_require__( /*! ../../../core/utils/type */ 11528); var _window = __webpack_require__( /*! ../../../core/utils/window */ 3104); var _m_drop_down_editor = _interopRequireDefault(__webpack_require__( /*! ../../ui/drop_down_editor/m_drop_down_editor */ 28906)); var _m_date_boxStrategy = _interopRequireDefault(__webpack_require__( /*! ./m_date_box.strategy.calendar */ 49403)); var _m_date_boxStrategy2 = _interopRequireDefault(__webpack_require__( /*! ./m_date_box.strategy.calendar_with_time */ 34092)); var _m_date_boxStrategy3 = _interopRequireDefault(__webpack_require__( /*! ./m_date_box.strategy.date_view */ 25417)); var _m_date_boxStrategy4 = _interopRequireDefault(__webpack_require__( /*! ./m_date_box.strategy.list */ 62905)); var _m_date_boxStrategy5 = _interopRequireDefault(__webpack_require__( /*! ./m_date_box.strategy.native */ 19838)); var _m_date_utils = _interopRequireDefault(__webpack_require__( /*! ./m_date_utils */ 14922)); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } function _extends() { return _extends = Object.assign ? Object.assign.bind() : function(n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) { ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]) } } return n }, _extends.apply(null, arguments) } const window = (0, _window.getWindow)(); const PICKER_TYPE = { calendar: "calendar", rollers: "rollers", list: "list", native: "native" }; const TYPE = { date: "date", datetime: "datetime", time: "time" }; const STRATEGY_NAME_calendar = "Calendar", STRATEGY_NAME_dateView = "DateView", STRATEGY_NAME_native = "Native", STRATEGY_NAME_calendarWithTime = "CalendarWithTime", STRATEGY_NAME_list = "List"; const STRATEGY_CLASSES = { Calendar: _m_date_boxStrategy.default, DateView: _m_date_boxStrategy3.default, Native: _m_date_boxStrategy5.default, CalendarWithTime: _m_date_boxStrategy2.default, List: _m_date_boxStrategy4.default }; class DateBox extends _m_drop_down_editor.default { _supportedKeys() { return _extends({}, super._supportedKeys(), this._strategy.supportedKeys()) } _renderButtonContainers() { super._renderButtonContainers.apply(this, arguments); this._strategy.customizeButtons() } _getDefaultOptions() { return _extends({}, super._getDefaultOptions(), { type: "date", showAnalogClock: true, value: null, displayFormat: null, interval: 30, disabledDates: null, pickerType: PICKER_TYPE.calendar, invalidDateMessage: _message.default.format("dxDateBox-validation-datetime"), dateOutOfRangeMessage: _message.default.format("validation-range"), applyButtonText: _message.default.format("OK"), adaptivityEnabled: false, calendarOptions: {}, useHiddenSubmitElement: true, _showValidationIcon: true }) } _defaultOptionsRules() { return super._defaultOptionsRules().concat([{ device: { platform: "ios" }, options: { "dropDownOptions.showTitle": true } }, { device: { platform: "android" }, options: { buttonsLocation: "bottom after" } }, { device() { const realDevice = _devices.default.real(); const { platform: platform } = realDevice; return "ios" === platform || "android" === platform }, options: { pickerType: PICKER_TYPE.native } }, { device: { platform: "generic", deviceType: "desktop" }, options: { buttonsLocation: "bottom after" } }]) } _initOptions(options) { this._userOptions = (0, _extend.extend)({}, options); super._initOptions(options); this._updatePickerOptions() } _updatePickerOptions() { let { pickerType: pickerType } = this.option(); const { type: type } = this.option(); if (pickerType === PICKER_TYPE.list && (type === TYPE.datetime || type === TYPE.date)) { pickerType = PICKER_TYPE.calendar } if (type === TYPE.time && pickerType === PICKER_TYPE.calendar) { pickerType = PICKER_TYPE.list } this._pickerType = pickerType; this._setShowDropDownButtonOption() } _setShowDropDownButtonOption() { const { platform: platform } = _devices.default.real(); const isMozillaOnAndroid = "android" === platform && _browser.default.mozilla; const isNativePickerType = this._isNativeType(); let showDropDownButton = "generic" !== platform || !isNativePickerType; if (isNativePickerType && isMozillaOnAndroid) { showDropDownButton = false } this.option({ showDropDownButton: showDropDownButton }) } _init() { this._initStrategy(); this.option((0, _extend.extend)({}, this._strategy.getDefaultOptions(), this._userOptions)); delete this._userOptions; super._init() } _toLowerCaseFirstLetter(string) { return string.charAt(0).toLowerCase() + string.substr(1) } _initStrategy() { const strategyName = this._getStrategyName(this._getFormatType()); const strategy = STRATEGY_CLASSES[strategyName]; if (!(this._strategy && this._strategy.NAME === strategyName)) { this._strategy = new strategy(this) } } _getFormatType() { const currentType = this.option("type"); const isTime = /h|m|s/g.test(currentType); const isDate = /d|M|Y/g.test(currentType); let type = ""; if (isDate) { type += TYPE.date } if (isTime) { type += TYPE.time } return type } _getStrategyName(type) { const pickerType = this._pickerType; if (pickerType === PICKER_TYPE.rollers) { return STRATEGY_NAME_dateView } if (pickerType === PICKER_TYPE.native) { return STRATEGY_NAME_native } if (type === TYPE.date) { return STRATEGY_NAME_calendar } if (type === TYPE.datetime) { return STRATEGY_NAME_calendarWithTime } return STRATEGY_NAME_list } _initMarkup() { this.$element().addClass("dx-datebox"); super._initMarkup(); this._refreshFormatClass(); this._refreshPickerTypeClass(); this._strategy.renderInputMinMax(this._input()) } _render() { super._render(); this._formatValidationIcon() } _renderDimensions() { super._renderDimensions(); this.$element().toggleClass("dx-auto-width", !this.option("width")); this._updatePopupWidth(); this._updatePopupHeight() } _dimensionChanged() { super._dimensionChanged(); this._updatePopupHeight() } _updatePopupHeight() { if (this._popup) { var _this$_strategy$_upda, _this$_strategy; null === (_this$_strategy$_upda = (_this$_strategy = this._strategy)._updatePopupHeight) || void 0 === _this$_strategy$_upda || _this$_strategy$_upda.call(_this$_strategy) } } _refreshFormatClass() { const $element = this.$element(); (0, _iterator.each)(TYPE, ((_, item) => { $element.removeClass(`dx-datebox-${item}`) })); const { type: type } = this.option(); $element.addClass(`dx-datebox-${type}`) } _refreshPickerTypeClass() { const $element = this.$element(); (0, _iterator.each)(PICKER_TYPE, ((_, item) => { $element.removeClass(`dx-datebox-${item}`) })); $element.addClass(`dx-datebox-${this._pickerType}`) } _formatValidationIcon() { if (!(0, _window.hasWindow)()) { return } const inputElement = this._input().get(0); const isRtlEnabled = this.option("rtlEnabled"); const clearButtonWidth = this._getClearButtonWidth(); const longestElementDimensions = this._getLongestElementDimensions(); const curWidth = parseFloat(window.getComputedStyle(inputElement).width) - clearButtonWidth; const shouldHideValidationIcon = longestElementDimensions.width > curWidth; const { style: style } = inputElement; const { _showValidationIcon: showValidationIcon } = this.option(); this.$element().toggleClass("dx-show-invalid-badge", !shouldHideValidationIcon && showValidationIcon); if (shouldHideValidationIcon) { if (void 0 === this._storedPadding) { this._storedPadding = isRtlEnabled ? longestElementDimensions.leftPadding : longestElementDimensions.rightPadding } isRtlEnabled ? style.paddingLeft = 0 : style.paddingRight = 0 } else { isRtlEnabled ? style.paddingLeft = `${this._storedPadding}px` : style.paddingRight = `${this._storedPadding}px` } } _getClearButtonWidth() { let clearButtonWidth = 0; if (this._isClearButtonVisible() && "" === this._input().val()) { const clearButtonElement = this.$element().find(".dx-clear-button-area").get(0); clearButtonWidth = parseFloat(window.getComputedStyle(clearButtonElement).width) } return clearButtonWidth } _getLongestElementDimensions() { const format = this._strategy.getDisplayFormat(this.option("displayFormat")); const longestValue = _date.default.format(_m_date_utils.default.getLongestDate(format, _date.default.getMonthNames(), _date.default.getDayNames()), format); const $input = this._input(); const inputElement = $input.get(0); const $longestValueElement = (0, _dom.createTextElementHiddenCopy)($input, longestValue); const isPaddingStored = void 0 !== this._storedPadding; const storedPadding = !isPaddingStored ? 0 : this._storedPadding; $longestValueElement.appendTo(this.$element()); const elementWidth = parseFloat(window.getComputedStyle($longestValueElement.get(0)).width); const rightPadding = parseFloat(window.getComputedStyle(inputElement).paddingRight); const leftPadding = parseFloat(window.getComputedStyle(inputElement).paddingLeft); const necessaryWidth = elementWidth + leftPadding + rightPadding + storedPadding; $longestValueElement.remove(); return { width: necessaryWidth, leftPadding: leftPadding, rightPadding: rightPadding } } _getKeyboardListeners() { var _this$_strategy2; return super._getKeyboardListeners().concat([null === (_this$_strategy2 = this._strategy) || void 0 === _this$_strategy2 ? void 0 : _this$_strategy2.getKeyboardListener()]) } _renderPopup() { var _this$_popup; super._renderPopup(); null === (_this$_popup = this._popup) || void 0 === _this$_popup || _this$_popup.$wrapper().addClass("dx-datebox-wrapper"); this._renderPopupWrapper() } _getPopupToolbarItems() { var _this$_strategy$_getP, _this$_strategy3; const defaultItems = super._getPopupToolbarItems(); return (null === (_this$_strategy$_getP = (_this$_strategy3 = this._strategy)._getPopupToolbarItems) || void 0 === _this$_strategy$_getP ? void 0 : _this$_strategy$_getP.call(_this$_strategy3, defaultItems)) ?? defaultItems } _popupConfig() { const popupConfig = super._popupConfig(); return _extends({}, this._strategy.popupConfig(popupConfig), { title: this._getPopupTitle(), dragEnabled: false }) } _renderPopupWrapper() { if (!this._popup) { return } const $element = this.$element(); const classPostfixes = (0, _extend.extend)({}, TYPE, PICKER_TYPE); (0, _iterator.each)(classPostfixes, ((_, item) => { $element.removeClass(`dx-datebox-wrapper-${item}`) })); const { type: type } = this.option(); this._popup.$wrapper().addClass(`dx-datebox-wrapper-${type}`).addClass(`dx-datebox-wrapper-${this._pickerType}`).addClass("dx-dropdowneditor-overlay") } _renderPopupContent() { super._renderPopupContent(); this._strategy.renderPopupContent() } _popupShowingHandler() { super._popupShowingHandler(); this._strategy.popupShowingHandler() } _popupShownHandler() { super._popupShownHandler(); this._strategy.renderOpenedState() } _popupHiddenHandler() { super._popupHiddenHandler(); this._strategy.renderOpenedState(); this._strategy.popupHiddenHandler() } _visibilityChanged(visible) { if (visible) { this._formatValidationIcon() } } _clearValueHandler(e) { this.option("text", ""); super._clearValueHandler(e) } _readOnlyPropValue() { if (this._pickerType === PICKER_TYPE.rollers) { return true } const { platform: platform } = _devices.default.real(); const isCustomValueDisabled = this._isNativeType() && ("ios" === platform || "android" === platform); if (isCustomValueDisabled) { const { readOnly: readOnly } = this.option(); return readOnly } return super._readOnlyPropValue() } _isClearButtonVisible() { return super._isClearButtonVisible() && !this._isNativeType() } _renderValue() { const value = this.dateOption("value"); this.option("text", this._getDisplayedText(value)); this._strategy.renderValue(); return super._renderValue() } _setSubmitValue() { const value = this.dateOption("value"); const { type: type, dateSerializationFormat: dateSerializationFormat } = this.option(); const submitFormat = _m_date_utils.default.SUBMIT_FORMATS_MAP[type]; const submitValue = dateSerializationFormat ? _date_serialization.default.serializeDate(value, dateSerializationFormat) : _m_date_utils.default.toStandardDateFormat(value, submitFormat); this._getSubmitElement().val(submitValue) } _getDisplayedText(value) { const { mode: mode } = this.option(); let displayedText; if ("text" === mode) { const displayFormat = this._strategy.getDisplayFormat(this.option("displayFormat")); displayedText = _date.default.format(value, displayFormat) } else { const format = this._getFormatByMode(mode); if (format) { displayedText = _date.default.format(value, format) } else { displayedText = _m_date_utils.default.toStandardDateFormat(value, mode) } } return displayedText } _getFormatByMode(mode) { return (0, _support.inputType)(mode) ? null : _m_date_utils.default.FORMATS_MAP[mode] } _valueChangeEventHandler(e) { const { text: text, type: type, validationError: validationError } = this.option(); const currentValue = this.dateOption("value"); if (text === this._getDisplayedText(currentValue)) { this._recallInternalValidation(currentValue, validationError); return } const parsedDate = this._getParsedDate(text); const value = currentValue ?? this._getDateByDefault(); const newValue = _m_date_utils.default.mergeDates(value, parsedDate, type); const date = parsedDate && "time" === type ? newValue : parsedDate; if (this._applyInternalValidation(date).isValid) { const displayedText = this._getDisplayedText(newValue); if (value && newValue && value.getTime() === newValue.getTime() && displayedText !== text) { this._renderValue() } else { this.dateValue(newValue, e) } } } _recallInternalValidation(value, validationError) { if (!validationError || validationError.editorSpecific) { this._applyInternalValidation(value); this._applyCustomValidation(value) } } _getDateByDefault() { return this._strategy.useCurrentDateByDefault() && this._strategy.getDefaultDate() } _getParsedDate(text) { const displayFormat = this._strategy.getDisplayFormat(this.option("displayFormat")); const parsedText = this._strategy.getParsedText(text, displayFormat); return parsedText ?? void 0 } _applyInternalValidation(value) { const text = this.option("text"); const hasText = !!text && null !== value; const isDate = !!value && (0, _type.isDate)(value) && !isNaN(value.getTime()); const isDateInRange = isDate && _date2.default.dateInRange(value, this.dateOption("min"), this.dateOption("max"), this.option("type")); const isValid = !hasText && !value || isDateInRange; let validationMessage = ""; const { invalidDateMessage: invalidDateMessage, dateOutOfRangeMessage: dateOutOfRangeMessage } = this.option(); if (!isDate) { validationMessage = invalidDateMessage } else if (!isDateInRange) { validationMessage = dateOutOfRangeMessage } this._updateInternalValidationState(isValid, validationMessage); return { isValid: isValid, isDate: isDate } } _updateInternalValidationState(isValid, validationMessage) { this.option({ isValid: isValid, validationError: isValid ? null : { editorSpecific: true, message: validationMessage } }) } _applyCustomValidation(value) { this.validationRequest.fire({ editor: this, value: this._serializeDate(value) }) } _isValueChanged(newValue) { const oldValue = this.dateOption("value"); const oldTime = oldValue && oldValue.getTime(); const newTime = newValue && newValue.getTime(); return oldTime !== newTime } _isTextChanged(newValue) { const oldText = this.option("text"); const newText = newValue && this._getDisplayedText(newValue) || ""; return oldText !== newText } _renderProps() { super._renderProps(); this._input().attr("autocomplete", "off") } _renderOpenedState() { if (!this._isNativeType()) { super._renderOpenedState() } if (this._strategy.isAdaptivityChanged()) { this._refreshStrategy() } } _getPopupTitle() { const { placeholder: placeholder } = this.option(); if (placeholder) { return placeholder } const { type: type } = this.option(); if (type === TYPE.time) { return _message.default.format("dxDateBox-simulatedDataPickerTitleTime") } if (type === TYPE.date || type === TYPE.datetime) { return _message.default.format("dxDateBox-simulatedDataPickerTitleDate") } return "" } _refreshStrategy() { this._strategy.dispose(); this._initStrategy(); this.option(this._strategy.getDefaultOptions()); this._refresh() } _applyButtonHandler(e) { const value = this._strategy.getValue(); this.dateValue(value, e.event); super._applyButtonHandler() } _dispose() { var _this$_strategy4; super._dispose(); null === (_this$_strategy4 = this._strategy) || void 0 === _this$_strategy4 || _this$_strategy4.dispose() } _isNativeType() { return this._pickerType === PICKER_TYPE.native } _updatePopupTitle() { var _this$_popup2; null === (_this$_popup2 = this._popup) || void 0 === _this$_popup2 || _this$_popup2.option("title", this._getPopupTitle()) } _optionChanged(args) { switch (args.name) { case "showClearButton": case "buttons": case "isValid": case "readOnly": super._optionChanged.apply(this, arguments); this._formatValidationIcon(); break; case "pickerType": this._updatePickerOptions(); this._refreshStrategy(); this._refreshPickerTypeClass(); this._invalidate(); break; case "type": this._updatePickerOptions(); this._refreshStrategy(); this._refreshFormatClass(); this._renderPopupWrapper(); this._formatValidationIcon(); this._updateValue(); break; case "placeholder": super._optionChanged.apply(this, arguments); this._updatePopupTitle(); break; case "min": case "max": { const isValid = this.option("isValid"); this._applyInternalValidation(this.dateOption("value")); if (!isValid) { this._applyCustomValidation(this.dateOption("value")) } this._invalidate(); break } case "dateSerializationFormat": case "interval": case "disabledDates": case "calendarOptions": this._invalidate(); break; case "displayFormat": this.option("text", this._getDisplayedText(this.dateOption("value"))); this._renderInputValue(); break; case "text": this._strategy.textChangedHandler(args.value); super._optionChanged.apply(this, arguments); break; case "showDropDownButton": this._formatValidationIcon(); super._optionChanged.apply(this, arguments); break; case "todayButtonText": this._setPopupOption("toolbarItems", this._getPopupToolbarItems()); break; case "invalidDateMessage": case "dateOutOfRangeMessage": case "adaptivityEnabled": case "showAnalogClock": case "_showValidationIcon": break; default: super._optionChanged.apply(this, arguments) } } _getSerializationFormat() { const value = this.option("value"); if (this.option("dateSerializationFormat") && (0, _config.default)().forceIsoDateParsing) { return this.option("dateSerializationFormat") } if ((0, _type.isNumeric)(value)) { return "number" } if (!(0, _type.isString)(value)) { return } return _date_serialization.default.getDateSerializationFormat(value) } _updateValue(value) { super._updateValue(); this._applyInternalValidation(value ?? this.dateOption("value")) } dateValue(value, dxEvent) { const isValueChanged = this._isValueChanged(value); if (isValueChanged && dxEvent) { this._saveValueChangeEvent(dxEvent) } if (!isValueChanged) { const { text: text } = this.option(); if (this._isTextChanged(value)) { this._updateValue(value) } else if ("" === text) { this._applyCustomValidation(value) } } return this.dateOption("value", value) } dateOption(optionName, value) { if (1 === arguments.length) { return _date_serialization.default.deserializeDate(this.option(optionName)) } this.option(optionName, this._serializeDate(value)) } _serializeDate(date) { const serializationFormat = this._getSerializationFormat(); return _date_serialization.default.serializeDate(date, serializationFormat) } _clearValue() { const value = this.option("value"); super._clearValue(); if (null === value) { this._applyCustomValidation(null) } } clear() { const value = this.option("value"); super.clear(); if (null === value) { this._applyInternalValidation(null) } } } exports.default = DateBox }, 92782: /*!**********************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/ui/date_box/m_date_box.js ***! \**********************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _component_registrator = _interopRequireDefault(__webpack_require__( /*! ../../../core/component_registrator */ 92848)); var _m_date_box = _interopRequireDefault(__webpack_require__( /*! ./m_date_box.mask */ 174)); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } }(0, _component_registrator.default)("dxDateBox", _m_date_box.default); exports.default = _m_date_box.default }, 174: /*!***************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/ui/date_box/m_date_box.mask.js ***! \***************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _events_engine = _interopRequireDefault(__webpack_require__( /*! ../../../common/core/events/core/events_engine */ 92774)); var _index = __webpack_require__( /*! ../../../common/core/events/utils/index */ 98834); var _date = _interopRequireDefault(__webpack_require__( /*! ../../../common/core/localization/date */ 38662)); var _default_date_names = _interopRequireDefault(__webpack_require__( /*! ../../../common/core/localization/default_date_names */ 81179)); var _date2 = __webpack_require__( /*! ../../../common/core/localization/ldml/date.format */ 83445); var _date3 = __webpack_require__( /*! ../../../common/core/localization/ldml/date.parser */ 46981); var _number = _interopRequireDefault(__webpack_require__( /*! ../../../common/core/localization/number */ 52771)); var _devices = _interopRequireDefault(__webpack_require__( /*! ../../../core/devices */ 65951)); var _browser = _interopRequireDefault(__webpack_require__( /*! ../../../core/utils/browser */ 48314)); var _dom = __webpack_require__( /*! ../../../core/utils/dom */ 86858); var _math = __webpack_require__( /*! ../../../core/utils/math */ 50254); var _type = __webpack_require__( /*! ../../../core/utils/type */ 11528); var _m_date_box = _interopRequireDefault(__webpack_require__( /*! ./m_date_box.base */ 10291)); var _m_date_boxMask = __webpack_require__( /*! ./m_date_box.mask.parts */ 18674); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } function _extends() { return _extends = Object.assign ? Object.assign.bind() : function(n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) { ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]) } } return n }, _extends.apply(null, arguments) } class DateBoxMask extends _m_date_box.default { _supportedKeys() { const originalHandlers = super._supportedKeys(); const callOriginalHandler = e => { const originalHandler = originalHandlers[(0, _index.normalizeKeyName)(e)]; return null === originalHandler || void 0 === originalHandler ? void 0 : originalHandler.apply(this, [e]) }; const applyHandler = (e, maskHandler) => { if (this._shouldUseOriginalHandler(e)) { return callOriginalHandler.apply(this, [e]) } return maskHandler.apply(this, [e]) }; return _extends({}, originalHandlers, { del: e => applyHandler(e, (event => { this._revertPart(1); this._isAllSelected() || event.preventDefault() })), backspace: e => applyHandler(e, (event => { this._revertPart(-1); this._isAllSelected() || event.preventDefault() })), home: e => applyHandler(e, (event => { this._selectFirstPart(); event.preventDefault() })), end: e => applyHandler(e, (event => { this._selectLastPart(); event.preventDefault() })), escape: e => applyHandler(e, (() => { this._revertChanges() })), enter: e => applyHandler(e, (() => { this._enterHandler() })), leftArrow: e => applyHandler(e, (event => { this._selectNextPart(-1); event.preventDefault() })), rightArrow: e => applyHandler(e, (event => { this._selectNextPart(1); event.preventDefault() })), upArrow: e => applyHandler(e, (event => { this._upDownArrowHandler(1); event.preventDefault() })), downArrow: e => applyHandler(e, (event => { this._upDownArrowHandler(-1); event.preventDefault() })) }) } _shouldUseOriginalHandler(e) { const isNotDeletingInCalendar = this.option("opened") && e && !["backspace", "del"].includes((0, _index.normalizeKeyName)(e)); return !this._useMaskBehavior() || isNotDeletingInCalendar || e && e.altKey } _upDownArrowHandler(step) { this._setNewDateIfEmpty(); const originalValue = this._getActivePartValue(this._initialMaskValue); const currentValue = this._getActivePartValue(); const delta = currentValue - originalValue; this._loadMaskValue(this._initialMaskValue); this._changePartValue(delta + step, true) } _changePartValue(step, lockOtherParts) { const activePartPattern = this._getActivePartProp("pattern"); const isAmPmPartActive = /^a{1,5}$/.test(activePartPattern); if (isAmPmPartActive) { this._toggleAmPm() } else { this._partIncrease(step, lockOtherParts) } } _toggleAmPm() { const currentValue = this._getActivePartProp("text"); const indexOfCurrentValue = _default_date_names.default.getPeriodNames().indexOf(currentValue); const newValue = 1 ^ indexOfCurrentValue; this._setActivePartValue(newValue) } _getDefaultOptions() { return _extends({}, super._getDefaultOptions(), { useMaskBehavior: false, emptyDateValue: new Date(2e3, 0, 1, 0, 0, 0) }) } _isSingleCharKey(_ref) { let { originalEvent: originalEvent, alt: alt } = _ref; const key = originalEvent.data || originalEvent.key; return "string" === typeof key && 1 === key.length && !alt && !(0, _index.isCommandKeyPressed)(originalEvent) } _isSingleDigitKey(e) { var _e$originalEvent; const data = null === (_e$originalEvent = e.originalEvent) || void 0 === _e$originalEvent ? void 0 : _e$originalEvent.data; return 1 === (null === data || void 0 === data ? void 0 : data.length) && parseInt(data, 10) } _useBeforeInputEvent() { return _devices.default.real().android } _keyInputHandler(e, key) { const oldInputValue = this._input().val(); this._processInputKey(key); e.preventDefault(); const isValueChanged = oldInputValue !== this._input().val(); isValueChanged && _events_engine.default.trigger(this._input(), "input") } _keyboardHandler(e) { let { key: key } = e.originalEvent; const result = super._keyboardHandler(e); if (!this._useMaskBehavior() || this._useBeforeInputEvent()) { return result } if (_browser.default.chrome && "Process" === e.key && 0 === e.code.indexOf("Digit")) { key = e.code.replace("Digit", ""); this._processInputKey(key); this._maskInputHandler = () => { this._renderSelectedPart() } } else if (this._isSingleCharKey(e)) { this._keyInputHandler(e.originalEvent, key) } return result } _maskBeforeInputHandler(e) { this._maskInputHandler = null; const { inputType: inputType } = e.originalEvent; if ("insertCompositionText" === inputType) { this._maskInputHandler = () => { this._renderSelectedPart() } } const isBackwardDeletion = "deleteContentBackward" === inputType; const isForwardDeletion = "deleteContentForward" === inputType; if (isBackwardDeletion || isForwardDeletion) { const direction = isBackwardDeletion ? -1 : 1; this._maskInputHandler = () => { this._revertPart(); this._selectNextPart(direction) } } if (!this._useMaskBehavior() || !this._isSingleCharKey(e)) { return } const key = e.originalEvent.data; this._keyInputHandler(e, key); return true } _keyPressHandler(e) { const { originalEvent: event } = e; if ("insertCompositionText" === (null === event || void 0 === event ? void 0 : event.inputType) && this._isSingleDigitKey(e)) { this._processInputKey(event.data); this._renderDisplayText(this._getDisplayedText(this._maskValue)); this._selectNextPart() } super._keyPressHandler(e); if (this._maskInputHandler) { this._maskInputHandler(); this._maskInputHandler = null } } _processInputKey(key) { if (this._isAllSelected()) { this._activePartIndex = 0 } this._setNewDateIfEmpty(); if (isNaN(parseInt(key))) { this._searchString(key) } else { this._searchNumber(key) } } _isAllSelected() { const caret = this._caret(); const { text: text } = this.option(); return caret.end - caret.start === text.length } _getFormatPattern() { if (this._formatPattern) { return this._formatPattern } const format = this._strategy.getDisplayFormat(this.option("displayFormat")); const isLDMLPattern = (0, _type.isString)(format) && !_date.default._getPatternByFormat(format); if (isLDMLPattern) { this._formatPattern = format } else { this._formatPattern = (0, _date2.getFormat)((value => _date.default.format(value, format))) } return this._formatPattern } _setNewDateIfEmpty() { if (!this._maskValue) { const { type: type } = this.option(); const value = "time" === type ? new Date(null) : new Date; this._maskValue = value; this._initialMaskValue = value; this._renderDateParts() } } _partLimitsReached(max) { const maxLimitLength = String(max).length; const formatLength = this._getActivePartProp("pattern").length; const isShortFormat = 1 === formatLength; const maxSearchLength = isShortFormat ? maxLimitLength : Math.min(formatLength, maxLimitLength); const isLengthExceeded = this._searchValue.length === maxSearchLength; const isValueOverflowed = parseInt(`${this._searchValue}0`) > max; return isLengthExceeded || isValueOverflowed } _searchNumber(char) { const { max: max } = this._getActivePartLimits(); const maxLimitLength = String(max).length; this._searchValue = (this._searchValue + char).substr(-maxLimitLength); if (isNaN(this._searchValue)) { this._searchValue = char } this._setActivePartValue(this._searchValue); if (this._partLimitsReached(max)) { this._selectNextPart(1) } } _searchString(char) { if (!isNaN(parseInt(this._getActivePartProp("text")))) { return } const limits = this._getActivePartProp("limits")(this._maskValue); const startString = this._searchValue + char.toLowerCase(); const endLimit = limits.max - limits.min; for (let i = 0; i <= endLimit; i++) { this._loadMaskValue(this._initialMaskValue); this._changePartValue(i + 1); if (0 === this._getActivePartProp("text").toLowerCase().indexOf(startString)) { this._searchValue = startString; return } } this._setNewDateIfEmpty(); if (this._searchValue) { this._clearSearchValue(); this._searchString(char) } } _clearSearchValue() { this._searchValue = "" } _revertPart(direction) { if (!this._isAllSelected()) { const actual = this._getActivePartValue(this.option("emptyDateValue")); this._setActivePartValue(actual); this._selectNextPart(direction) } this._clearSearchValue() } _useMaskBehavior() { const { mode: mode } = this.option(); return this.option("useMaskBehavior") && "text" === mode } _prepareRegExpInfo() { this._regExpInfo = (0, _date3.getRegExpInfo)(this._getFormatPattern(), _date.default); const { regexp: regexp } = this._regExpInfo; const { source: source } = regexp; const { flags: flags } = regexp; const quantifierRegexp = new RegExp(/(\{[0-9]+,?[0-9]*\})/); const convertedSource = source.split(quantifierRegexp).map((sourcePart => quantifierRegexp.test(sourcePart) ? sourcePart : _number.default.convertDigits(sourcePart, false))).join(""); this._regExpInfo.regexp = new RegExp(convertedSource, flags) } _initMaskState() { this._activePartIndex = 0; this._formatPattern = null; this._prepareRegExpInfo(); this._loadMaskValue() } _renderMask() { super._renderMask(); this._detachMaskEvents(); this._clearMaskState(); if (this._useMaskBehavior()) { this._attachMaskEvents(); this._initMaskState(); this._renderDateParts() } } _renderDateParts() { if (!this._useMaskBehavior()) { return } const text = this.option("text") || this._getDisplayedText(this._maskValue); if (text) { this._dateParts = (0, _m_date_boxMask.renderDateParts)(text, this._regExpInfo); if (!this._input().is(":hidden")) { this._selectNextPart() } } } _detachMaskEvents() { _events_engine.default.off(this._input(), ".dateBoxMask") } _attachMaskEvents() { _events_engine.default.on(this._input(), (0, _index.addNamespace)("dxclick", "dateBoxMask"), this._maskClickHandler.bind(this)); _events_engine.default.on(this._input(), (0, _index.addNamespace)("paste", "dateBoxMask"), this._maskPasteHandler.bind(this)); _events_engine.default.on(this._input(), (0, _index.addNamespace)("drop", "dateBoxMask"), (() => { this._renderSelectedPart() })); _events_engine.default.on(this._input(), (0, _index.addNamespace)("compositionend", "dateBoxMask"), this._maskCompositionEndHandler.bind(this)); if (this._useBeforeInputEvent()) { _events_engine.default.on(this._input(), (0, _index.addNamespace)("beforeinput", "dateBoxMask"), this._maskBeforeInputHandler.bind(this)) } } _renderSelectedPart() { this._renderDisplayText(this._getDisplayedText(this._maskValue)); this._selectNextPart() } _selectLastPart() { if (this.option("text")) { this._activePartIndex = this._dateParts.length; this._selectNextPart(-1) } } _selectFirstPart() { if (this.option("text") && this._dateParts) { this._activePartIndex = -1; this._selectNextPart(1) } } _hasMouseWheelHandler() { return true } _onMouseWheel(e) { if (this._useMaskBehavior()) { this._partIncrease(e.delta > 0 ? 1 : -1, e) } } _selectNextPart() { let step = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : 0; if (!this.option("text") || this._disposed) { return } if (step) { this._initialMaskValue = new Date(this._maskValue) } let index = (0, _math.fitIntoRange)(this._activePartIndex + step, 0, this._dateParts.length - 1); if (this._dateParts[index].isStub) { const isBoundaryIndex = 0 === index && step < 0 || index === this._dateParts.length - 1 && step > 0; if (!isBoundaryIndex) { this._selectNextPart(step >= 0 ? step + 1 : step - 1); return } index = this._activePartIndex } if (this._activePartIndex !== index) { this._clearSearchValue() } this._activePartIndex = index; this._caret(this._getActivePartProp("caret")) } _getRealLimitsPattern() { if ("d" === this._getActivePartProp("pattern")[0]) { return "dM" } } _getActivePartLimits(lockOtherParts) { const limitFunction = this._getActivePartProp("limits"); return limitFunction(this._maskValue, lockOtherParts && this._getRealLimitsPattern()) } _getActivePartValue(dateValue) { dateValue = dateValue || this._maskValue; const getter = this._getActivePartProp("getter"); return (0, _type.isFunction)(getter) ? getter(dateValue) : dateValue[getter]() } _addLeadingZeroes(value) { const zeroes = /^0+/.exec(this._searchValue); const limits = this._getActivePartLimits(); const maxLimitLength = String(limits.max).length; return ((zeroes && zeroes[0] || "") + String(value)).substr(-maxLimitLength) } _setActivePartValue(value, dateValue) { dateValue = dateValue || this._maskValue; const setter = this._getActivePartProp("setter"); const limits = this._getActivePartLimits(); value = (0, _math.inRange)(value, limits.min, limits.max) ? value : value % 10; value = this._addLeadingZeroes((0, _math.fitIntoRange)(value, limits.min, limits.max)); (0, _type.isFunction)(setter) ? setter(dateValue, value): dateValue[setter](value); this._renderDisplayText(this._getDisplayedText(dateValue)); this._renderDateParts() } _getActivePartProp(property) { if (!this._dateParts || !this._dateParts[this._activePartIndex]) { return } return this._dateParts[this._activePartIndex][property] } _loadMaskValue() { let value = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : this.dateOption("value"); this._maskValue = value && new Date(value); this._initialMaskValue = value && new Date(value) } _saveMaskValue() { const value = this._maskValue && new Date(this._maskValue); const { type: type } = this.option(); if (value && "date" === type) { value.setHours(0, 0, 0, 0) } this._initialMaskValue = new Date(value); this.dateOption("value", value) } _revertChanges() { this._loadMaskValue(); this._renderDisplayText(this._getDisplayedText(this._maskValue)); this._renderDateParts() } _renderDisplayText(text) { super._renderDisplayText(text); if (this._useMaskBehavior()) { this.option("text", text) } } _partIncrease(step, lockOtherParts) { this._setNewDateIfEmpty(); const { max: max, min: min } = this._getActivePartLimits(lockOtherParts); let newValue = step + this._getActivePartValue(); if (newValue > max) { newValue = this._applyLimits(newValue, { limitBase: min, limitClosest: max, max: max }) } else if (newValue < min) { newValue = this._applyLimits(newValue, { limitBase: max, limitClosest: min, max: max }) } this._setActivePartValue(newValue) } _applyLimits(newValue, _ref2) { let { limitBase: limitBase, limitClosest: limitClosest, max: max } = _ref2; const delta = (newValue - limitClosest) % max; return delta ? limitBase + delta - 1 * (0, _math.sign)(delta) : limitClosest } _maskClickHandler() { this._loadMaskValue(this._maskValue); if (this.option("text")) { this._activePartIndex = (0, _m_date_boxMask.getDatePartIndexByPosition)(this._dateParts, this._caret().start); if (!this._isAllSelected()) { this._clearSearchValue(); if ((0, _type.isDefined)(this._activePartIndex)) { this._caret(this._getActivePartProp("caret")) } else { this._selectLastPart() } } } } _maskCompositionEndHandler(e) { this._input().val(this._getDisplayedText(this._maskValue)); this._selectNextPart(); this._maskInputHandler = () => { this._renderSelectedPart() } } _maskPasteHandler(e) { const newText = this._replaceSelectedText(this.option("text"), this._caret(), (0, _dom.clipboardText)(e)); const date = _date.default.parse(newText, this._getFormatPattern()); if (date && this._isDateValid(date)) { this._maskValue = date; this._renderDisplayText(this._getDisplayedText(this._maskValue)); this._renderDateParts(); this._selectNextPart() } e.preventDefault() } _isDateValid(date) { return (0, _type.isDate)(date) && !isNaN(date) } _isValueDirty() { const value = this.dateOption("value"); return (this._maskValue && this._maskValue.getTime()) !== (value && value.getTime()) } _fireChangeEvent() { this._clearSearchValue(); if (this._isValueDirty()) { _events_engine.default.trigger(this._input(), "change") } } _enterHandler() { this._fireChangeEvent(); this._selectNextPart(1) } _focusOutHandler(e) { const shouldFireChangeEvent = this._useMaskBehavior() && !e.isDefaultPrevented(); if (shouldFireChangeEvent) { this._fireChangeEvent(); super._focusOutHandler(e); this._selectFirstPart() } else { super._focusOutHandler(e) } } _valueChangeEventHandler(e) { const text = this.option("text"); if (this._useMaskBehavior()) { this._saveValueChangeEvent(e); if (!text) { this._maskValue = null } else if (null === this._maskValue) { this._loadMaskValue(text) } this._saveMaskValue() } else { super._valueChangeEventHandler(e) } } _optionChanged(args) { switch (args.name) { case "useMaskBehavior": this._renderMask(); break; case "displayFormat": case "mode": super._optionChanged(args); this._renderMask(); break; case "value": this._loadMaskValue(); super._optionChanged(args); this._renderDateParts(); break; case "emptyDateValue": break; default: super._optionChanged(args) } } _clearMaskState() { this._clearSearchValue(); delete this._dateParts; delete this._activePartIndex; delete this._maskValue } clear() { this._clearMaskState(); this._activePartIndex = 0; super.clear() } _clean() { super._clean(); this._detachMaskEvents(); this._clearMaskState() } } exports.default = DateBoxMask }, 18674: /*!*********************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/ui/date_box/m_date_box.mask.parts.js ***! \*********************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.renderDateParts = exports.getDatePartIndexByPosition = void 0; var _date = __webpack_require__( /*! ../../../common/core/localization/ldml/date.parser */ 46981); var _common = __webpack_require__( /*! ../../../core/utils/common */ 17781); var _extend = __webpack_require__( /*! ../../../core/utils/extend */ 52576); var _math = __webpack_require__( /*! ../../../core/utils/math */ 50254); const monthGetter = date => date.getMonth() + 1; const monthSetter = (date, value) => { const day = date.getDate(); const monthLimits = getLimits("M", date); const newValue = (0, _math.fitIntoRange)(parseInt(value), monthLimits.min, monthLimits.max); date.setMonth(newValue - 1, 1); const { min: min, max: max } = getLimits("dM", date); const newDay = (0, _math.fitIntoRange)(day, min, max); date.setDate(newDay) }; const PATTERN_GETTERS = { a: date => date.getHours() < 12 ? 0 : 1, E: "getDay", y: "getFullYear", M: monthGetter, L: monthGetter, d: "getDate", H: "getHours", h: "getHours", m: "getMinutes", s: "getSeconds", S: "getMilliseconds", x: "getTimezoneOffset" }; const PATTERN_SETTERS = (0, _extend.extend)({}, (0, _date.getPatternSetters)(), { a: (date, value) => { const hours = date.getHours(); const current = hours >= 12; if (current === !!parseInt(value)) { return } date.setHours((hours + 12) % 24) }, d: (date, value) => { const lastDayInMonth = getLimits("dM", date).max; if (value > lastDayInMonth) { date.setMonth(date.getMonth() + 1) } date.setDate(value) }, h: (date, value) => { const isPM = date.getHours() >= 12; date.setHours(+value % 12 + (isPM ? 12 : 0)) }, M: monthSetter, L: monthSetter, E: (date, value) => { if (value < 0) { return } date.setDate(date.getDate() - date.getDay() + parseInt(value)) }, y: (date, value) => { const currentYear = date.getFullYear(); const valueLength = String(value).length; const maxLimitLength = String(getLimits("y", date).max).length; const newValue = parseInt(String(currentYear).substr(0, maxLimitLength - valueLength) + value); date.setFullYear(newValue) }, x: date => date }); const getPatternGetter = patternChar => PATTERN_GETTERS[patternChar] || (() => patternChar); exports.renderDateParts = (text, regExpInfo) => { const result = regExpInfo.regexp.exec(text); let start = 0; let end = 0; const sections = []; for (let i = 1; i < result.length; i++) { start = end; end = start + result[i].length; const pattern = regExpInfo.patterns[i - 1].replace(/^'|'$/g, ""); const getter = getPatternGetter(pattern[0]); sections.push({ index: i - 1, isStub: pattern === result[i], caret: { start: start, end: end }, pattern: pattern, text: result[i], limits: function() { for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { args[_key] = arguments[_key] } return getLimits(pattern[0], ...args) }, setter: PATTERN_SETTERS[pattern[0]] || _common.noop, getter: getter }) } return sections }; const getLimits = (pattern, date, forcedPattern) => { const limits = { y: { min: 0, max: 9999 }, M: { min: 1, max: 12 }, L: { min: 1, max: 12 }, d: { min: 1, max: 31 }, dM: { min: 1, max: new Date(date.getFullYear(), date.getMonth() + 1, 0).getDate() }, E: { min: 0, max: 6 }, H: { min: 0, max: 23 }, h: { min: 1, max: 12 }, m: { min: 0, max: 59 }, s: { min: 0, max: 59 }, S: { min: 0, max: 999 }, a: { min: 0, max: 1 }, x: { min: 0, max: 0 } }; return limits[forcedPattern || pattern] || limits.getAmPm }; exports.getDatePartIndexByPosition = (dateParts, position) => { for (let i = 0; i < dateParts.length; i++) { const caretInGroup = dateParts[i].caret.end >= position; if (!dateParts[i].isStub && caretInGroup) { return i } } return null } }, 49403: /*!****************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/ui/date_box/m_date_box.strategy.calendar.js ***! \****************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _message = _interopRequireDefault(__webpack_require__( /*! ../../../common/core/localization/message */ 4671)); var _common = __webpack_require__( /*! ../../../core/utils/common */ 17781); var _date = _interopRequireDefault(__webpack_require__( /*! ../../../core/utils/date */ 41380)); var _extend = __webpack_require__( /*! ../../../core/utils/extend */ 52576); var _type = __webpack_require__( /*! ../../../core/utils/type */ 11528); var _calendar = _interopRequireDefault(__webpack_require__( /*! ../../../ui/calendar */ 22195)); var _themes = __webpack_require__( /*! ../../../ui/themes */ 52071); var _m_date_box = _interopRequireDefault(__webpack_require__( /*! ./m_date_box.strategy */ 19127)); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } function _extends() { return _extends = Object.assign ? Object.assign.bind() : function(n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) { ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]) } } return n }, _extends.apply(null, arguments) } class CalendarStrategy extends _m_date_box.default { ctor(dateBox) { super.ctor(dateBox); this.NAME = "Calendar" } getDefaultOptions() { return _extends({}, super.getDefaultOptions(), { todayButtonText: _message.default.format("dxCalendar-todayButtonText") }) } supportedKeys() { const homeEndHandler = function(e) { if (this.option("opened")) { e.preventDefault(); return true } return false }; return { rightArrow() { if (this.option("opened")) { return true } }, leftArrow() { if (this.option("opened")) { return true } }, enter: function(e) { if (this.dateBox.option("opened")) { e.preventDefault(); if (this._widget.option("zoomLevel") === this._widget.option("maxZoomLevel")) { const viewValue = this._getContouredValue(); const lastActionElement = this._lastActionElement; const shouldCloseDropDown = this._closeDropDownByEnter(); if (shouldCloseDropDown && viewValue && "calendar" === lastActionElement) { this.dateBoxValue(viewValue, e) } shouldCloseDropDown && this.dateBox.close(); this.dateBox._valueChangeEventHandler(e); return !shouldCloseDropDown } return true } this.dateBox._valueChangeEventHandler(e) }.bind(this), home: homeEndHandler, end: homeEndHandler } } getDisplayFormat(displayFormat) { return displayFormat || "shortdate" } _closeDropDownByEnter() { return true } _getWidgetName() { return _calendar.default } _getContouredValue() { return this._widget._view.option("contouredDate") } getKeyboardListener() { return this._widget } _getWidgetOptions() { const disabledDates = this.dateBox.option("disabledDates"); return (0, _extend.extend)(this.dateBox.option("calendarOptions"), { value: this.dateBoxValue() || null, selectionMode: "single", dateSerializationFormat: null, min: this.dateBox.dateOption("min"), max: this.dateBox.dateOption("max"), onValueChanged: this._valueChangedHandler.bind(this), onCellClick: this._cellClickHandler.bind(this), disabledDates: (0, _type.isFunction)(disabledDates) ? this._injectComponent(disabledDates.bind(this.dateBox)) : disabledDates, onContouredChanged: this._refreshActiveDescendant.bind(this), skipFocusCheck: true }) } _injectComponent(func) { const that = this; return function(params) { (0, _extend.extend)(params, { component: that.dateBox }); return func(params) } } _refreshActiveDescendant(e) { this._lastActionElement = "calendar"; this.dateBox.setAria("activedescendant", e.actionValue) } _getTodayButtonConfig() { const buttonsLocation = this.dateBox.option("buttonsLocation"); const isButtonsLocationDefault = "default" === buttonsLocation; const position = isButtonsLocationDefault ? ["bottom", "center"] : (0, _common.splitPair)(buttonsLocation); const stylingMode = (0, _themes.isMaterial)() ? "text" : "outlined"; return { widget: "dxButton", toolbar: position[0], location: "after" === position[1] ? "before" : position[1], options: { onClick: args => { this._widget._toTodayView(args) }, text: this.dateBox.option("todayButtonText"), elementAttr: { class: "dx-button-today" }, stylingMode: stylingMode } } } _isCalendarVisible() { const { calendarOptions: calendarOptions } = this.dateBox.option(); return (0, _type.isEmptyObject)(calendarOptions) || false !== calendarOptions.visible } _getPopupToolbarItems(toolbarItems) { const useButtons = "useButtons" === this.dateBox.option("applyValueMode"); const shouldRenderTodayButton = useButtons && this._isCalendarVisible(); if (shouldRenderTodayButton) { const todayButton = this._getTodayButtonConfig(); return [todayButton, ...toolbarItems] } return toolbarItems } popupConfig(popupConfig) { return (0, _extend.extend)(true, popupConfig, { position: { collision: "flipfit flip" }, width: "auto" }) } _valueChangedHandler(e) { const { value: value } = e; const prevValue = e.previousValue; if (_date.default.sameDate(value, prevValue) && _date.default.sameHoursAndMinutes(value, prevValue)) { return } if ("instantly" === this.dateBox.option("applyValueMode")) { this.dateBoxValue(this.getValue(), e.event) } } _updateValue(preventDefaultValue) { if (!this._widget) { return } this._widget.option("value", this.dateBoxValue()) } textChangedHandler() { this._lastActionElement = "input"; if (this.dateBox.option("opened") && this._widget) { this._updateValue(true) } } _cellClickHandler(e) { const { dateBox: dateBox } = this; if ("instantly" === dateBox.option("applyValueMode")) { dateBox.option("opened", false); this.dateBoxValue(this.getValue(), e.event) } } } exports.default = CalendarStrategy }, 34092: /*!**************************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/ui/date_box/m_date_box.strategy.calendar_with_time.js ***! \**************************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _date = _interopRequireDefault(__webpack_require__( /*! ../../../common/core/localization/date */ 38662)); var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../../core/renderer */ 64553)); var _date2 = _interopRequireDefault(__webpack_require__( /*! ../../../core/utils/date */ 41380)); var _extend = __webpack_require__( /*! ../../../core/utils/extend */ 52576); var _size = __webpack_require__( /*! ../../../core/utils/size */ 57653); var _window = __webpack_require__( /*! ../../../core/utils/window */ 3104); var _m_time_view = _interopRequireDefault(__webpack_require__( /*! ../../ui/date_box/m_time_view */ 14705)); var _m_box = _interopRequireDefault(__webpack_require__( /*! ../../ui/m_box */ 30434)); var _m_date_boxStrategy = _interopRequireDefault(__webpack_require__( /*! ./m_date_box.strategy.calendar */ 49403)); var _m_date_utils = _interopRequireDefault(__webpack_require__( /*! ./m_date_utils */ 14922)); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } function _extends() { return _extends = Object.assign ? Object.assign.bind() : function(n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) { ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]) } } return n }, _extends.apply(null, arguments) } const window = (0, _window.getWindow)(); class CalendarWithTimeStrategy extends _m_date_boxStrategy.default { ctor(dateBox) { super.ctor(dateBox); this.NAME = "CalendarWithTime" } getDefaultOptions() { return _extends({}, super.getDefaultOptions(), { applyValueMode: "useButtons", buttonsLocation: "bottom after", "dropDownOptions.showTitle": false }) } _closeDropDownByEnter() { return _date2.default.sameDate(this._getContouredValue(), this.widgetOption("value")) } getDisplayFormat(displayFormat) { return displayFormat || "shortdateshorttime" } _is24HourFormat() { return _date.default.is24HourFormat(this.getDisplayFormat(this.dateBox.option("displayFormat"))) } _getContouredValue() { const viewDate = super._getContouredValue(); return this._updateDateTime(viewDate) } _renderWidget() { super._renderWidget(); this._timeView = this.dateBox._createComponent((0, _renderer.default)("<div>"), _m_time_view.default, { value: this.dateBoxValue(), _showClock: !this._isShrinkView(), use24HourFormat: this._is24HourFormat(), onValueChanged: this._valueChangedHandler.bind(this), stylingMode: this.dateBox.option("stylingMode") }) } renderOpenedState() { super.renderOpenedState(); const popup = this._getPopup(); if (popup) { popup.$wrapper().toggleClass("dx-datebox-adaptivity-mode", this._isSmallScreen()) } clearTimeout(this._repaintTimer); this._repaintTimer = setTimeout((() => { var _this$_getPopup; null === (_this$_getPopup = this._getPopup()) || void 0 === _this$_getPopup || _this$_getPopup.repaint() }), 0) } isAdaptivityChanged() { const isAdaptiveMode = this._isShrinkView(); const currentAdaptiveMode = this._currentAdaptiveMode; if (isAdaptiveMode !== currentAdaptiveMode) { this._currentAdaptiveMode = isAdaptiveMode; return void 0 !== currentAdaptiveMode } return super.isAdaptivityChanged() } _updateValue(preventDefaultValue) { let date = this.dateBoxValue(); if (!date && !preventDefaultValue) { date = new Date; _m_date_utils.default.normalizeTime(date) } super._updateValue(); if (this._timeView) { date && this._timeView.option("value", date); this._timeView.option("use24HourFormat", this._is24HourFormat()) } } _isSmallScreen() { return (0, _size.getWidth)(window) <= 573 } _isShrinkView() { return !this.dateBox.option("showAnalogClock") || this.dateBox.option("adaptivityEnabled") && this._isSmallScreen() } _getBoxItems() { const items = [{ ratio: 0, shrink: 0, baseSize: "auto", name: "calendar" }]; if (!this._isShrinkView()) { items.push({ ratio: 0, shrink: 0, baseSize: "auto", name: "time" }) } return items } renderPopupContent() { super.renderPopupContent(); this._currentAdaptiveMode = this._isShrinkView(); const $popupContent = this._getPopup().$content(); this._box = this.dateBox._createComponent((0, _renderer.default)("<div>").appendTo($popupContent), _m_box.default, { direction: "row", crossAlign: "stretch", items: this._getBoxItems(), itemTemplate: function(data, i, element) { const $container = (0, _renderer.default)("<div>"); switch (data.name) { case "calendar": $container.append(this._widget.$element()); if (this._isShrinkView()) { this._timeView.$element().addClass("dx-datebox-datetime-time-side"); $container.append(this._timeView.$element()) } break; case "time": $container.append(this._timeView.$element()); (0, _renderer.default)(element).addClass("dx-datebox-datetime-time-side") } return $container }.bind(this) }) } popupConfig(popupConfig) { const calendarPopupConfig = super.popupConfig(popupConfig); return (0, _extend.extend)(calendarPopupConfig, { width: "auto" }) } _preventFocusOnPopup(e) { if (!(0, _renderer.default)(e.target).hasClass("dx-texteditor-input")) { super._preventFocusOnPopup.apply(this, arguments); if (!this.dateBox._hasFocusClass()) { this.dateBox.focus() } } } _updateDateTime(date) { const { value: time } = this._timeView.option(); date.setHours(time.getHours(), time.getMinutes(), time.getSeconds(), time.getMilliseconds()); return date } getValue() { let date = this._widget.option("value") ?? this._widget.getContouredDate(); date = date ? new Date(date) : new Date; return this._updateDateTime(date) } dispose() { clearTimeout(this._removeMinWidthTimer); clearTimeout(this._repaintTimer); super.dispose() } } exports.default = CalendarWithTimeStrategy }, 25417: /*!*****************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/ui/date_box/m_date_box.strategy.date_view.js ***! \*****************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _message = _interopRequireDefault(__webpack_require__( /*! ../../../common/core/localization/message */ 4671)); var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../../core/renderer */ 64553)); var _support = __webpack_require__( /*! ../../../core/utils/support */ 4785); var _window = __webpack_require__( /*! ../../../core/utils/window */ 3104); var _m_date_box = _interopRequireDefault(__webpack_require__( /*! ./m_date_box.strategy */ 19127)); var _m_date_utils = _interopRequireDefault(__webpack_require__( /*! ./m_date_utils */ 14922)); var _m_date_view = _interopRequireDefault(__webpack_require__( /*! ./m_date_view */ 76982)); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } function _extends() { return _extends = Object.assign ? Object.assign.bind() : function(n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) { ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]) } } return n }, _extends.apply(null, arguments) } const window = (0, _window.getWindow)(); class DateViewStrategy extends _m_date_box.default { ctor(dateBox) { super.ctor(dateBox); this.NAME = "DateView" } getDefaultOptions() { return _extends({}, super.getDefaultOptions(), { openOnFieldClick: true, applyButtonText: _message.default.format("OK"), "dropDownOptions.showTitle": true }) } getDisplayFormat(displayFormat) { return displayFormat || _m_date_utils.default.FORMATS_MAP[this.dateBox.option("type")] } popupConfig(config) { return { toolbarItems: this.dateBox._popupToolbarItemsConfig(), onInitialized: config.onInitialized, defaultOptionsRules: [{ device: { platform: "android" }, options: { width: 333, height: 331 } }, { device(device) { const { platform: platform } = device; return "generic" === platform || "ios" === platform }, options: { width: "auto", height: "auto" } }, { device(device) { const { platform: platform } = device; const { phone: phone } = device; return "generic" === platform && phone }, options: { width: 333, maxWidth: "100%", maxHeight: "100%", height: "auto", position: { collision: "flipfit flip" } } }, { device: { platform: "ios", phone: true }, options: { width: "100%", position: { my: "bottom", at: "bottom", of: window } } }] } } _renderWidget() { if ((0, _support.inputType)(this.dateBox.option("mode")) && this.dateBox._isNativeType() || this.dateBox.option("readOnly")) { if (this._widget) { this._widget.$element().remove(); this._widget = null } return } const popup = this._getPopup(); if (this._widget) { this._widget.option(this._getWidgetOptions()) } else { const element = (0, _renderer.default)("<div>").appendTo(popup.$content()); this._widget = this._createWidget(element) } this._widget.$element().appendTo(this._getWidgetContainer()) } _getWidgetName() { return _m_date_view.default } renderOpenedState() { super.renderOpenedState(); if (this._widget) { this._widget.option("value", this._widget._getCurrentDate()) } } _getWidgetOptions() { return { value: this.dateBoxValue() || new Date, type: this.dateBox.option("type"), minDate: this.dateBox.dateOption("min") || new Date(1900, 0, 1), maxDate: this.dateBox.dateOption("max") || new Date(Date.now() + 50 * _m_date_utils.default.ONE_YEAR), onDisposing: function() { this._widget = null }.bind(this) } } } exports.default = DateViewStrategy }, 19127: /*!*******************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/ui/date_box/m_date_box.strategy.js ***! \*******************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _events_engine = _interopRequireDefault(__webpack_require__( /*! ../../../common/core/events/core/events_engine */ 92774)); var _date = _interopRequireDefault(__webpack_require__( /*! ../../../common/core/localization/date */ 38662)); var _class = _interopRequireDefault(__webpack_require__( /*! ../../../core/class */ 55620)); var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../../core/renderer */ 64553)); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } class DateBoxStrategy extends(_class.default.inherit({})) { ctor(dateBox) { this.dateBox = dateBox } widgetOption(option) { var _this$_widget; return null === (_this$_widget = this._widget) || void 0 === _this$_widget ? void 0 : _this$_widget.option.apply(this._widget, arguments) } _renderWidget(element) { element = element || (0, _renderer.default)("<div>"); this._widget = this._createWidget(element); this._widget.$element().appendTo(this._getWidgetContainer()) } _createWidget(element) { const widgetName = this._getWidgetName(); const widgetOptions = this._getWidgetOptions(); return this.dateBox._createComponent(element, widgetName, widgetOptions) } _getWidgetOptions() { _class.default.abstract() } _getWidgetName() { _class.default.abstract() } getDefaultOptions() { return { mode: "text" } } getDisplayFormat(displayFormat) { _class.default.abstract() } supportedKeys() {} getKeyboardListener() {} customizeButtons() {} getParsedText(text, format) { const value = _date.default.parse(text, format); return value || _date.default.parse(text) } renderInputMinMax() {} renderOpenedState() { this._updateValue() } popupConfig(popupConfig) { _class.default.abstract() } _dimensionChanged() { var _this$_getPopup; null === (_this$_getPopup = this._getPopup()) || void 0 === _this$_getPopup || _this$_getPopup.repaint() } renderPopupContent() { const popup = this._getPopup(); this._renderWidget(); const $popupContent = popup.$content().parent(); _events_engine.default.off($popupContent, "mousedown"); _events_engine.default.on($popupContent, "mousedown", this._preventFocusOnPopup.bind(this)) } _preventFocusOnPopup(e) { e.preventDefault() } _getWidgetContainer() { return this._getPopup().$content() } _getPopup() { return this.dateBox._popup } popupShowingHandler() {} popupHiddenHandler() {} _updateValue(preventDefaultValue) { var _this$_widget2; null === (_this$_widget2 = this._widget) || void 0 === _this$_widget2 || _this$_widget2.option("value", this.dateBoxValue()) } useCurrentDateByDefault() {} getDefaultDate() { return new Date } textChangedHandler() {} renderValue() { if (this.dateBox.option("opened")) { this._updateValue() } } getValue() { return this._widget.option("value") } isAdaptivityChanged() { return false } dispose() { const popup = this._getPopup(); if (popup) { popup.$content().empty() } } dateBoxValue(value, event) { if (arguments.length) { return this.dateBox.dateValue.apply(this.dateBox, arguments) } return this.dateBox.dateOption.apply(this.dateBox, ["value"]) } } exports.default = DateBoxStrategy }, 62905: /*!************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/ui/date_box/m_date_box.strategy.list.js ***! \************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; __webpack_require__( /*! ../../ui/list/modules/m_selection */ 44804); var _date = _interopRequireDefault(__webpack_require__( /*! ../../../common/core/localization/date */ 38662)); var _common = __webpack_require__( /*! ../../../core/utils/common */ 17781); var _date_serialization = _interopRequireDefault(__webpack_require__( /*! ../../../core/utils/date_serialization */ 71051)); var _size = __webpack_require__( /*! ../../../core/utils/size */ 57653); var _type = __webpack_require__( /*! ../../../core/utils/type */ 11528); var _window = __webpack_require__( /*! ../../../core/utils/window */ 3104); var _list_light = _interopRequireDefault(__webpack_require__( /*! ../../../ui/list_light */ 80070)); var _m_utils = __webpack_require__( /*! ../../ui/drop_down_editor/m_utils */ 6807); var _m_date_box = _interopRequireDefault(__webpack_require__( /*! ./m_date_box.strategy */ 19127)); var _m_date_utils = _interopRequireDefault(__webpack_require__( /*! ./m_date_utils */ 14922)); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } function _extends() { return _extends = Object.assign ? Object.assign.bind() : function(n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) { ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]) } } return n }, _extends.apply(null, arguments) } const window = (0, _window.getWindow)(); const BOUNDARY_VALUES = { min: new Date(0, 0, 0, 0, 0), max: new Date(0, 0, 0, 23, 59) }; class ListStrategy extends _m_date_box.default { ctor(dateBox) { super.ctor(dateBox); this.NAME = "List" } supportedKeys() { return { space: _common.noop, home: _common.noop, end: _common.noop } } getDefaultOptions() { return _extends({}, super.getDefaultOptions(), { applyValueMode: "instantly" }) } getDisplayFormat(displayFormat) { return displayFormat || "shorttime" } popupConfig(popupConfig) { return popupConfig } getValue() { const selectedIndex = this._widget.option("selectedIndex"); if (-1 === selectedIndex) { return this.dateBox.option("value") } const itemData = this._widgetItems[selectedIndex]; return this._getDateByItemData(itemData) } useCurrentDateByDefault() { return true } getDefaultDate() { return new Date(null) } popupShowingHandler() { this.dateBox._dimensionChanged() } _renderWidget() { super._renderWidget(); this._refreshItems() } _getWidgetName() { return _list_light.default } _getWidgetOptions() { return { itemTemplate: this._timeListItemTemplate.bind(this), onItemClick: this._listItemClickHandler.bind(this), tabIndex: -1, onFocusedItemChanged: this._refreshActiveDescendant.bind(this), selectionMode: "single" } } _refreshActiveDescendant(e) { this.dateBox.setAria("activedescendant", ""); this.dateBox.setAria("activedescendant", e.actionValue) } _refreshItems() { this._widgetItems = this._getTimeListItems(); this._widget.option("items", this._widgetItems) } renderOpenedState() { if (!this._widget) { return } this._widget.option("focusedElement", null); this._setSelectedItemsByValue(); if (this._widget.option("templatesRenderAsynchronously")) { this._asyncScrollTimeout = setTimeout(this._scrollToSelectedItem.bind(this)) } else { this._scrollToSelectedItem() } } dispose() { super.dispose(); clearTimeout(this._asyncScrollTimeout) } _updateValue() { if (!this._widget) { return } this._refreshItems(); this._setSelectedItemsByValue(); this._scrollToSelectedItem() } _setSelectedItemsByValue() { const value = this.dateBoxValue(); const dateIndex = this._getDateIndex(value); if (-1 === dateIndex) { this._widget.option("selectedItems", []) } else { this._widget.option("selectedIndex", dateIndex) } } _scrollToSelectedItem() { this._widget.scrollToItem(this._widget.option("selectedIndex")) } _getDateIndex(date) { let result = -1; for (let i = 0, n = this._widgetItems.length; i < n; i++) { if (this._areDatesEqual(date, this._widgetItems[i])) { result = i; break } } return result } _areDatesEqual(first, second) { return (0, _type.isDate)(first) && (0, _type.isDate)(second) && first.getHours() === second.getHours() && first.getMinutes() === second.getMinutes() } _getTimeListItems() { let min = this.dateBox.dateOption("min") || this._getBoundaryDate("min"); const max = this.dateBox.dateOption("max") || this._getBoundaryDate("max"); const value = this.dateBox.dateOption("value") || null; let delta = max - min; const minutes = min.getMinutes() % this.dateBox.option("interval"); if (delta < 0) { return [] } if (delta > _m_date_utils.default.ONE_DAY) { delta = _m_date_utils.default.ONE_DAY } if (value - min < _m_date_utils.default.ONE_DAY) { return this._getRangeItems(min, new Date(min), delta) } min = this._getBoundaryDate("min"); min.setMinutes(minutes); if (value && Math.abs(value - max) < _m_date_utils.default.ONE_DAY) { delta = (60 * max.getHours() + Math.abs(max.getMinutes() - minutes)) * _m_date_utils.default.ONE_MINUTE } return this._getRangeItems(min, new Date(min), delta) } _getRangeItems(startValue, currentValue, rangeDuration) { const rangeItems = []; const interval = this.dateBox.option("interval"); while (currentValue - startValue <= rangeDuration) { rangeItems.push(new Date(currentValue)); currentValue.setMinutes(currentValue.getMinutes() + interval) } return rangeItems } _getBoundaryDate(boundary) { const boundaryValue = BOUNDARY_VALUES[boundary]; const currentValue = new Date((0, _common.ensureDefined)(this.dateBox.dateOption("value"), 0)); return new Date(currentValue.getFullYear(), currentValue.getMonth(), currentValue.getDate(), boundaryValue.getHours(), boundaryValue.getMinutes()) } _timeListItemTemplate(itemData) { const displayFormat = this.dateBox.option("displayFormat"); return _date.default.format(itemData, this.getDisplayFormat(displayFormat)) } _listItemClickHandler(e) { if ("useButtons" === this.dateBox.option("applyValueMode")) { return } const date = this._getDateByItemData(e.itemData); this.dateBox.option("opened", false); this.dateBoxValue(date, e.event) } _getDateByItemData(itemData) { let date = this.dateBox.option("value"); const hours = itemData.getHours(); const minutes = itemData.getMinutes(); const seconds = itemData.getSeconds(); const year = itemData.getFullYear(); const month = itemData.getMonth(); const day = itemData.getDate(); if (date) { if (this.dateBox.option("dateSerializationFormat")) { date = _date_serialization.default.deserializeDate(date) } else { date = new Date(date) } date.setHours(hours); date.setMinutes(minutes); date.setSeconds(seconds); date.setFullYear(year); date.setMonth(month); date.setDate(day) } else { date = new Date(year, month, day, hours, minutes, 0, 0) } return date } getKeyboardListener() { return this._widget } _updatePopupHeight() { var _this$dateBox$_timeLi; const dropDownOptionsHeight = (0, _m_utils.getSizeValue)(this.dateBox.option("dropDownOptions.height")); if (void 0 === dropDownOptionsHeight || "auto" === dropDownOptionsHeight) { this.dateBox._setPopupOption("height", "auto"); const popupHeight = (0, _size.getOuterHeight)(this._widget.$element()); const maxHeight = .45 * (0, _size.getHeight)(window); this.dateBox._setPopupOption("height", Math.min(popupHeight, maxHeight)) } null === (_this$dateBox$_timeLi = this.dateBox._timeList) || void 0 === _this$dateBox$_timeLi || _this$dateBox$_timeLi.updateDimensions() } getParsedText(text, format) { let value = super.getParsedText(text, format); if (value) { value = _m_date_utils.default.mergeDates(value, new Date(null), "date") } return value } } exports.default = ListStrategy }, 19838: /*!**************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/ui/date_box/m_date_box.strategy.native.js ***! \**************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _devices = _interopRequireDefault(__webpack_require__( /*! ../../../core/devices */ 65951)); var _date_serialization = _interopRequireDefault(__webpack_require__( /*! ../../../core/utils/date_serialization */ 71051)); var _support = __webpack_require__( /*! ../../../core/utils/support */ 4785); var _m_date_box = _interopRequireDefault(__webpack_require__( /*! ./m_date_box.strategy */ 19127)); var _m_date_utils = _interopRequireDefault(__webpack_require__( /*! ./m_date_utils */ 14922)); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } function _extends() { return _extends = Object.assign ? Object.assign.bind() : function(n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) { ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]) } } return n }, _extends.apply(null, arguments) } class NativeStrategy extends _m_date_box.default { ctor(dateBox) { super.ctor(dateBox); this.NAME = "Native" } popupConfig(popupConfig) { return _extends({}, popupConfig, { width: "auto" }) } getParsedText(text) { if (!text) { return null } if ("datetime" === this.dateBox.option("type")) { return new Date(text.replace(/-/g, "/").replace("T", " ").split(".")[0]) } return _m_date_utils.default.fromStandardDateFormat(text) } renderPopupContent() {} _getWidgetName() {} _getWidgetOptions() {} _getDateBoxType() { let { type: type } = this.dateBox.option(); if (!_m_date_utils.default.SUPPORTED_FORMATS.includes(type)) { type = "date" } else if ("datetime" === type && !(0, _support.inputType)(type)) { type = "datetime-local" } return type } customizeButtons() { const dropDownButton = this.dateBox.getButton("dropDown"); if (_devices.default.real().android && dropDownButton) { dropDownButton.on("click", (() => { this.dateBox._input().get(0).click() })) } } getDefaultOptions() { return { mode: this._getDateBoxType() } } getDisplayFormat(displayFormat) { const type = this._getDateBoxType(); return displayFormat || _m_date_utils.default.FORMATS_MAP[type] } renderInputMinMax($input) { const type = this.dateBox.option("type"); const format = { datetime: "yyyy-MM-ddTHH:mm:ss", date: "yyyy-MM-dd", time: "HH:mm:ss" } [type] ?? "yyyy-MM-dd"; $input.attr({ min: _date_serialization.default.serializeDate(this.dateBox.dateOption("min"), format), max: _date_serialization.default.serializeDate(this.dateBox.dateOption("max"), format) }) } } exports.default = NativeStrategy }, 14922: /*!************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/ui/date_box/m_date_utils.js ***! \************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _date = _interopRequireDefault(__webpack_require__( /*! ../../../common/core/localization/date */ 38662)); var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../../core/renderer */ 64553)); var _date_serialization = _interopRequireDefault(__webpack_require__( /*! ../../../core/utils/date_serialization */ 71051)); var _iterator = __webpack_require__( /*! ../../../core/utils/iterator */ 21274); var _type = __webpack_require__( /*! ../../../core/utils/type */ 11528); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } const DATE_COMPONENTS = ["year", "day", "month", "day"]; const TIME_COMPONENTS = ["hours", "minutes", "seconds", "milliseconds"]; const dateUtils = { SUPPORTED_FORMATS: ["date", "time", "datetime"], ONE_MINUTE: 6e4, ONE_DAY: 864e5, ONE_YEAR: 31536e6, MIN_DATEVIEW_DEFAULT_DATE: new Date(1900, 0, 1), MAX_DATEVIEW_DEFAULT_DATE: function() { const newDate = new Date; return new Date(newDate.getFullYear() + 50, newDate.getMonth(), newDate.getDate(), 23, 59, 59) }(), FORMATS_INFO: { date: { getStandardPattern: () => "yyyy-MM-dd", components: DATE_COMPONENTS }, time: { getStandardPattern: () => "HH:mm", components: TIME_COMPONENTS }, datetime: { getStandardPattern() { let standardPattern; ! function() { const $input = (0, _renderer.default)("<input>").attr("type", "datetime"); $input.val("2000-01-01T01:01Z"); if ($input.val()) { standardPattern = "yyyy-MM-ddTHH:mmZ" } }(); if (!standardPattern) { standardPattern = "yyyy-MM-ddTHH:mm:ssZ" } dateUtils.FORMATS_INFO.datetime.getStandardPattern = function() { return standardPattern }; return standardPattern }, components: [...DATE_COMPONENTS, ...TIME_COMPONENTS] }, "datetime-local": { getStandardPattern: () => "yyyy-MM-ddTHH:mm:ss", components: [...DATE_COMPONENTS, "hours", "minutes", "seconds"] } }, FORMATS_MAP: { date: "shortdate", time: "shorttime", datetime: "shortdateshorttime" }, SUBMIT_FORMATS_MAP: { date: "date", time: "time", datetime: "datetime-local" }, toStandardDateFormat(date, type) { const pattern = dateUtils.FORMATS_INFO[type].getStandardPattern(); return _date_serialization.default.serializeDate(date, pattern) }, fromStandardDateFormat(text) { const date = _date_serialization.default.dateParser(text); return (0, _type.isDate)(date) ? date : void 0 }, getMaxMonthDay: (year, month) => new Date(year, month + 1, 0).getDate(), mergeDates(oldValue, newValue, format) { if (!newValue) { return newValue || null } if (!oldValue || isNaN(oldValue.getTime())) { const now = new Date(null); oldValue = new Date(now.getFullYear(), now.getMonth(), now.getDate()) } const result = new Date(oldValue.valueOf()); const formatInfo = dateUtils.FORMATS_INFO[format]; (0, _iterator.each)(formatInfo.components, (function() { const componentInfo = dateUtils.DATE_COMPONENTS_INFO[this]; result[componentInfo.setter](newValue[componentInfo.getter]()) })); return result }, getLongestCaptionIndex(captionArray) { let longestIndex = 0; let longestCaptionLength = 0; let i; for (i = 0; i < captionArray.length; ++i) { if (captionArray[i].length > longestCaptionLength) { longestIndex = i; longestCaptionLength = captionArray[i].length } } return longestIndex }, formatUsesMonthName: format => _date.default.formatUsesMonthName(format), formatUsesDayName: format => _date.default.formatUsesDayName(format), getLongestDate(format, monthNames, dayNames) { const stringFormat = function(format) { const formatType = typeof format; if ("string" === formatType) { return "format" } if ("object" === formatType && void 0 !== format.type) { return format.type } return null }(format); let month = 9; if (!stringFormat || dateUtils.formatUsesMonthName(stringFormat)) { month = dateUtils.getLongestCaptionIndex(monthNames) } const longestDate = new Date(1888, month, 21, 23, 59, 59, 999); if (!stringFormat || dateUtils.formatUsesDayName(stringFormat)) { const date = longestDate.getDate() - longestDate.getDay() + dateUtils.getLongestCaptionIndex(dayNames); longestDate.setDate(date) } return longestDate }, normalizeTime(date) { date.setSeconds(0); date.setMilliseconds(0) } }; dateUtils.DATE_COMPONENTS_INFO = { year: { getter: "getFullYear", setter: "setFullYear", formatter(value, date) { const formatDate = new Date(date.getTime()); formatDate.setFullYear(value); return _date.default.format(formatDate, "yyyy") }, startValue: void 0, endValue: void 0 }, day: { getter: "getDate", setter: "setDate", formatter(value, date) { const formatDate = new Date(date.getTime()); formatDate.setDate(value); return _date.default.format(formatDate, "d") }, startValue: 1, endValue: void 0 }, month: { getter: "getMonth", setter: "setMonth", formatter: value => _date.default.getMonthNames()[value], startValue: 0, endValue: 11 }, hours: { getter: "getHours", setter: "setHours", formatter: value => _date.default.format(new Date(0, 0, 0, value), "hour"), startValue: 0, endValue: 23 }, minutes: { getter: "getMinutes", setter: "setMinutes", formatter: value => _date.default.format(new Date(0, 0, 0, 0, value), "minute"), startValue: 0, endValue: 59 }, seconds: { getter: "getSeconds", setter: "setSeconds", formatter: value => _date.default.format(new Date(0, 0, 0, 0, 0, value), "second"), startValue: 0, endValue: 59 }, milliseconds: { getter: "getMilliseconds", setter: "setMilliseconds", formatter: value => _date.default.format(new Date(0, 0, 0, 0, 0, 0, value), "millisecond"), startValue: 0, endValue: 999 } }; exports.default = dateUtils }, 76982: /*!***********************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/ui/date_box/m_date_view.js ***! \***********************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _date = _interopRequireDefault(__webpack_require__( /*! ../../../common/core/localization/date */ 38662)); var _component_registrator = _interopRequireDefault(__webpack_require__( /*! ../../../core/component_registrator */ 92848)); var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../../core/renderer */ 64553)); var _date2 = _interopRequireDefault(__webpack_require__( /*! ../../../core/utils/date */ 41380)); var _iterator = __webpack_require__( /*! ../../../core/utils/iterator */ 21274); var _editor = _interopRequireDefault(__webpack_require__( /*! ../../ui/editor/editor */ 24768)); var _m_date_utils = _interopRequireDefault(__webpack_require__( /*! ./m_date_utils */ 14922)); var _m_date_view_roller = _interopRequireDefault(__webpack_require__( /*! ./m_date_view_roller */ 24845)); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } function _extends() { return _extends = Object.assign ? Object.assign.bind() : function(n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) { ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]) } } return n }, _extends.apply(null, arguments) } const TYPE_date = "date"; const ROLLER_TYPE_year = "year", ROLLER_TYPE_month = "month", ROLLER_TYPE_day = "day", ROLLER_TYPE_hours = "hours"; class DateView extends _editor.default { _valueOption() { const { value: value } = this.option(); const date = new Date(value); return !value || isNaN(date) ? this._getDefaultDate() : date } _getDefaultDate() { const date = new Date; const { type: type } = this.option(); if (type === TYPE_date) { return new Date(date.getFullYear(), date.getMonth(), date.getDate()) } return date } _getDefaultOptions() { return _extends({}, super._getDefaultOptions(), { minDate: _m_date_utils.default.MIN_DATEVIEW_DEFAULT_DATE, maxDate: _m_date_utils.default.MAX_DATEVIEW_DEFAULT_DATE, type: TYPE_date, value: new Date, applyCompactClass: false }) } _defaultOptionsRules() { return super._defaultOptionsRules().concat([{ device: device => "desktop" !== device.deviceType, options: { applyCompactClass: true } }]) } _render() { super._render(); this.$element().addClass("dx-dateview"); const { type: type } = this.option(); this._toggleFormatClasses(type); this._toggleCompactClass() } _toggleFormatClasses(currentFormat, previousFormat) { this.$element().addClass(`dx-dateview-${currentFormat}`); previousFormat && this.$element().removeClass(`dx-dateview-${previousFormat}`) } _toggleCompactClass() { const { applyCompactClass: applyCompactClass } = this.option(); this.$element().toggleClass("dx-dateview-compact", applyCompactClass) } _wrapper() { return this._$wrapper } _renderContentImpl() { this._$wrapper = (0, _renderer.default)("<div>").addClass("dx-dateview-wrapper"); this._renderRollers(); this._$wrapper.appendTo(this.$element()) } _renderRollers() { if (!this._$rollersContainer) { this._$rollersContainer = (0, _renderer.default)("<div>").addClass("dx-dateview-rollers") } this._$rollersContainer.empty(); this._createRollerConfigs(); this._rollers = {}; const that = this; (0, _iterator.each)(that._rollerConfigs, (name => { const $roller = (0, _renderer.default)("<div>").appendTo(that._$rollersContainer).addClass(`dx-dateviewroller-${that._rollerConfigs[name].type}`); that._rollers[that._rollerConfigs[name].type] = that._createComponent($roller, _m_date_view_roller.default, { items: that._rollerConfigs[name].displayItems, selectedIndex: that._rollerConfigs[name].selectedIndex, showScrollbar: "never", scrollByContent: true, onStart(e) { const roller = e.component; roller._toggleActive(true); that._setActiveRoller(that._rollerConfigs[name]) }, onEnd(e) { const roller = e.component; roller._toggleActive(false) }, onClick(e) { const roller = e.component; roller._toggleActive(true); that._setActiveRoller(that._rollerConfigs[name]); that._setRollerState(that._rollerConfigs[name], roller.option("selectedIndex")); roller._toggleActive(false) }, onSelectedIndexChanged(e) { const roller = e.component; that._setRollerState(that._rollerConfigs[name], roller.option("selectedIndex")) } }) })); that._$rollersContainer.appendTo(that._wrapper()) } _createRollerConfigs(type) { const that = this; type = type || that.option("type"); that._rollerConfigs = {}; _date.default.getFormatParts(_m_date_utils.default.FORMATS_MAP[type]).forEach((partName => { that._createRollerConfig(partName) })) } _createRollerConfig(componentName) { const componentInfo = _m_date_utils.default.DATE_COMPONENTS_INFO[componentName]; const valueRange = this._calculateRollerConfigValueRange(componentName); const { startValue: startValue } = valueRange; const { endValue: endValue } = valueRange; const { formatter: formatter } = componentInfo; const curDate = this._getCurrentDate(); const config = { type: componentName, setValue: componentInfo.setter, valueItems: [], displayItems: [], getIndex: value => value[componentInfo.getter]() - startValue }; for (let i = startValue; i <= endValue; i++) { config.valueItems.push(i); config.displayItems.push(formatter(i, curDate)) } config.selectedIndex = config.getIndex(curDate); this._rollerConfigs[componentName] = config } _setActiveRoller(currentRoller) { const activeRoller = currentRoller && this._rollers[currentRoller.type]; (0, _iterator.each)(this._rollers, (function() { this.toggleActiveState(this === activeRoller) })) } _updateRollersPosition() { const that = this; (0, _iterator.each)(this._rollers, (function(type) { const correctIndex = that._rollerConfigs[type].getIndex(that._getCurrentDate()); this.option("selectedIndex", correctIndex) })) } _setRollerState(roller, selectedIndex) { if (selectedIndex !== roller.selectedIndex) { const rollerValue = roller.valueItems[selectedIndex]; const { setValue: setValue } = roller; let currentValue = new Date(this._getCurrentDate()); let currentDate = currentValue.getDate(); const minDate = this.option("minDate"); const maxDate = this.option("maxDate"); if (roller.type === ROLLER_TYPE_month) { currentDate = Math.min(currentDate, _m_date_utils.default.getMaxMonthDay(currentValue.getFullYear(), rollerValue)) } else if (roller.type === ROLLER_TYPE_year) { currentDate = Math.min(currentDate, _m_date_utils.default.getMaxMonthDay(rollerValue, currentValue.getMonth())) } currentValue.setDate(currentDate); currentValue[setValue](rollerValue); const normalizedDate = _date2.default.normalizeDate(currentValue, minDate, maxDate); currentValue = _m_date_utils.default.mergeDates(normalizedDate, currentValue, "time"); currentValue = _date2.default.normalizeDate(currentValue, minDate, maxDate); this.option("value", currentValue); roller.selectedIndex = selectedIndex } if (roller.type === ROLLER_TYPE_year) { this._refreshRollers() } if (roller.type === ROLLER_TYPE_month) { this._refreshRoller(ROLLER_TYPE_day); this._refreshRoller(ROLLER_TYPE_hours) } } _refreshRoller(rollerType) { const roller = this._rollers[rollerType]; if (roller) { this._createRollerConfig(rollerType); const rollerConfig = this._rollerConfigs[rollerType]; if (rollerType === ROLLER_TYPE_day || rollerConfig.displayItems.toString() !== roller.option("items").toString()) { roller.option({ items: rollerConfig.displayItems, selectedIndex: rollerConfig.selectedIndex }) } } } _getCurrentDate() { const curDate = this._valueOption(); const minDate = this.option("minDate"); const maxDate = this.option("maxDate"); return _date2.default.normalizeDate(curDate, minDate, maxDate) } _calculateRollerConfigValueRange(componentName) { const curDate = this._getCurrentDate(); const { minDate: minDate, maxDate: maxDate } = this.option(); const minYear = _date2.default.sameYear(curDate, minDate); const minMonth = minYear && curDate.getMonth() === minDate.getMonth(); const maxYear = _date2.default.sameYear(curDate, maxDate); const maxMonth = maxYear && curDate.getMonth() === maxDate.getMonth(); const minHour = minMonth && curDate.getDate() === minDate.getDate(); const maxHour = maxMonth && curDate.getDate() === maxDate.getDate(); const componentInfo = _m_date_utils.default.DATE_COMPONENTS_INFO[componentName]; let { startValue: startValue } = componentInfo; let { endValue: endValue } = componentInfo; if (componentName === ROLLER_TYPE_year) { startValue = minDate.getFullYear(); endValue = maxDate.getFullYear() } if (componentName === ROLLER_TYPE_month) { if (minYear) { startValue = minDate.getMonth() } if (maxYear) { endValue = maxDate.getMonth() } } if (componentName === ROLLER_TYPE_day) { endValue = _m_date_utils.default.getMaxMonthDay(curDate.getFullYear(), curDate.getMonth()); if (minYear && minMonth) { startValue = minDate.getDate() } if (maxYear && maxMonth) { endValue = maxDate.getDate() } } if (componentName === ROLLER_TYPE_hours) { startValue = minHour ? minDate.getHours() : startValue; endValue = maxHour ? maxDate.getHours() : endValue } return { startValue: startValue, endValue: endValue } } _refreshRollers() { this._refreshRoller(ROLLER_TYPE_month); this._refreshRoller(ROLLER_TYPE_day); this._refreshRoller(ROLLER_TYPE_hours) } _optionChanged(args) { switch (args.name) { case "minDate": case "maxDate": case "type": this._renderRollers(); this._toggleFormatClasses(args.value, args.previousValue); break; case "visible": super._optionChanged(args); if (args.value) { this._renderRollers() } break; case "value": this.option("value", this._valueOption()); this._refreshRollers(); this._updateRollersPosition(); break; default: super._optionChanged(args) } } _clean() { super._clean(); delete this._$rollersContainer } }(0, _component_registrator.default)("dxDateView", DateView); exports.default = DateView }, 24845: /*!******************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/ui/date_box/m_date_view_roller.js ***! \******************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _animation = __webpack_require__( /*! ../../../common/core/animation */ 16826); var _translator = __webpack_require__( /*! ../../../common/core/animation/translator */ 88603); var _click = __webpack_require__( /*! ../../../common/core/events/click */ 64044); var _events_engine = _interopRequireDefault(__webpack_require__( /*! ../../../common/core/events/core/events_engine */ 92774)); var _index = __webpack_require__( /*! ../../../common/core/events/utils/index */ 98834); var _component_registrator = _interopRequireDefault(__webpack_require__( /*! ../../../core/component_registrator */ 92848)); var _devices = _interopRequireDefault(__webpack_require__( /*! ../../../core/devices */ 65951)); var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../../core/renderer */ 64553)); var _iterator = __webpack_require__( /*! ../../../core/utils/iterator */ 21274); var _size = __webpack_require__( /*! ../../../core/utils/size */ 57653); var _convert_location = __webpack_require__( /*! ../../ui/scroll_view/utils/convert_location */ 32330); var _m_scrollable = _interopRequireDefault(__webpack_require__( /*! ../scroll_view/m_scrollable */ 94790)); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } function _extends() { return _extends = Object.assign ? Object.assign.bind() : function(n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) { ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]) } } return n }, _extends.apply(null, arguments) } class DateViewRoller extends _m_scrollable.default { _getDefaultOptions() { return _extends({}, super._getDefaultOptions(), { showScrollbar: "never", useNative: false, selectedIndex: 0, bounceEnabled: false, items: [], showOnClick: false, onClick: null, onSelectedIndexChanged: null, scrollByContent: true }) } _init() { super._init(); this.option("onVisibilityChange", this._visibilityChangedHandler.bind(this)); this.option("onEnd", this._endActionHandler.bind(this)) } _render() { super._render(); this._renderSelectedItemFrame(); this.$element().addClass("dx-dateviewroller"); this._renderContainerClick(); this._renderItems(); this._renderSelectedValue(); this._renderItemsClick(); this._renderWheelEvent(); this._renderSelectedIndexChanged() } _renderSelectedIndexChanged() { this._selectedIndexChanged = this._createActionByOption("onSelectedIndexChanged") } _renderWheelEvent() { _events_engine.default.on((0, _renderer.default)(this.container()), "dxmousewheel", (e => { this._isWheelScrolled = true })) } _renderContainerClick() { if (!this.option("showOnClick")) { return } const eventName = (0, _index.addNamespace)(_click.name, this.NAME); const clickAction = this._createActionByOption("onClick"); _events_engine.default.off((0, _renderer.default)(this.container()), eventName); _events_engine.default.on((0, _renderer.default)(this.container()), eventName, (e => { clickAction({ event: e }) })) } _renderItems() { const items = this.option("items") || []; let $items = (0, _renderer.default)(); (0, _renderer.default)(this.content()).empty(); items.forEach((item => { $items = $items.add((0, _renderer.default)("<div>").addClass("dx-dateview-item").append(item)) })); (0, _renderer.default)(this.content()).append($items); this._$items = $items; this.update() } _renderSelectedItemFrame() { (0, _renderer.default)("<div>").addClass("dx-dateview-item-selected-frame").append((0, _renderer.default)("<div>").addClass("dx-dateview-item-selected-border")).appendTo((0, _renderer.default)(this.container())) } _renderSelectedValue(selectedIndex) { const index = this._fitIndex(selectedIndex ?? this.option("selectedIndex")); this._moveTo({ top: this._getItemPosition(index) }); this._renderActiveStateItem() } _fitIndex(index) { const items = this.option("items") || []; const itemCount = items.length; if (index >= itemCount) { return itemCount - 1 } if (index < 0) { return 0 } return index } _getItemPosition(index) { return Math.round(this._itemHeight() * index) } _renderItemsClick() { const itemSelector = this._getItemSelector(); const eventName = (0, _index.addNamespace)(_click.name, this.NAME); _events_engine.default.off(this.$element(), eventName, itemSelector); _events_engine.default.on(this.$element(), eventName, itemSelector, this._itemClickHandler.bind(this)) } _getItemSelector() { return ".dx-dateview-item" } _itemClickHandler(e) { this.option("selectedIndex", this._itemElementIndex(e.currentTarget)) } _itemElementIndex(itemElement) { return this._itemElements().index(itemElement) } _itemElements() { return this.$element().find(this._getItemSelector()) } _renderActiveStateItem() { const selectedIndex = this.option("selectedIndex"); (0, _iterator.each)(this._$items, (function(index) { (0, _renderer.default)(this).toggleClass("dx-dateview-item-selected", selectedIndex === index) })) } _shouldScrollToNeighborItem() { return "desktop" === _devices.default.real().deviceType && this._isWheelScrolled } _moveTo(targetLocation) { const { top: top, left: left } = (0, _convert_location.convertToLocation)(targetLocation); const location = this.scrollOffset(); const delta = { x: location.left - left, y: location.top - top }; if (this._isVisible() && (delta.x || delta.y)) { this._prepareDirections(true); if (this._animation && !this._shouldScrollToNeighborItem()) { const that = this; _animation.fx.stop((0, _renderer.default)(this.content())); _animation.fx.animate((0, _renderer.default)(this.content()), { duration: 200, type: "slide", to: { top: Math.floor(delta.y) }, complete() { (0, _translator.resetPosition)((0, _renderer.default)(that.content())); that.handleMove({ delta: delta }) } }); delete this._animation } else { this.handleMove({ delta: delta }) } } } _validate(e) { return this._moveIsAllowed(e) } _fitSelectedIndexInRange(index) { const itemsCount = this.option("items").length; return Math.max(Math.min(index, itemsCount - 1), 0) } _isInNullNeighborhood(x) { return -.1 <= x && x <= .1 } _getSelectedIndexAfterScroll(currentSelectedIndex) { const locationTop = this.scrollOffset().top; const currentSelectedIndexPosition = currentSelectedIndex * this._itemHeight(); const dy = locationTop - currentSelectedIndexPosition; if (this._isInNullNeighborhood(dy)) { return currentSelectedIndex } const direction = dy > 0 ? 1 : -1; const newSelectedIndex = this._fitSelectedIndexInRange(currentSelectedIndex + direction); return newSelectedIndex } _getNewSelectedIndex(currentSelectedIndex) { if (this._shouldScrollToNeighborItem()) { return this._getSelectedIndexAfterScroll(currentSelectedIndex) } this._animation = true; const ratio = this.scrollOffset().top / this._itemHeight(); return Math.round(ratio) } _endActionHandler() { const currentSelectedIndex = this.option("selectedIndex"); const newSelectedIndex = this._getNewSelectedIndex(currentSelectedIndex); if (newSelectedIndex === currentSelectedIndex) { this._renderSelectedValue(newSelectedIndex) } else { this.option("selectedIndex", newSelectedIndex) } this._isWheelScrolled = false } _itemHeight() { const $item = this._$items.first(); return (0, _size.getHeight)($item) } _toggleActive(state) { this.$element().toggleClass("dx-state-active", state) } _isVisible() { return (0, _renderer.default)(this.container()).is(":visible") } _fireSelectedIndexChanged(value, previousValue) { var _this$_selectedIndexC; null === (_this$_selectedIndexC = this._selectedIndexChanged) || void 0 === _this$_selectedIndexC || _this$_selectedIndexC.call(this, { value: value, previousValue: previousValue, event: void 0 }) } _visibilityChanged(visible) { super._visibilityChanged(visible); this._visibilityChangedHandler(visible) } _visibilityChangedHandler(visible) { if (visible) { this._visibilityTimer = setTimeout((() => { this._renderSelectedValue(this.option("selectedIndex")) })) } this.toggleActiveState(false) } toggleActiveState(state) { this.$element().toggleClass("dx-dateviewroller-current", state) } _refreshSelectedIndex() { const selectedIndex = this.option("selectedIndex"); const fitIndex = this._fitIndex(selectedIndex); if (fitIndex === selectedIndex) { this._renderActiveStateItem() } else { this.option("selectedIndex", fitIndex) } } _optionChanged(args) { switch (args.name) { case "selectedIndex": this._fireSelectedIndexChanged(args.value, args.previousValue); this._renderSelectedValue(args.value); break; case "items": this._renderItems(); this._refreshSelectedIndex(); break; case "onClick": case "showOnClick": this._renderContainerClick(); break; case "onSelectedIndexChanged": this._renderSelectedIndexChanged(); break; default: super._optionChanged(args) } } _dispose() { clearTimeout(this._visibilityTimer); super._dispose() } }(0, _component_registrator.default)("dxDateViewRoller", DateViewRoller); exports.default = DateViewRoller }, 14705: /*!***********************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/ui/date_box/m_time_view.js ***! \***********************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _date = _interopRequireDefault(__webpack_require__( /*! ../../../common/core/localization/date */ 38662)); var _component_registrator = _interopRequireDefault(__webpack_require__( /*! ../../../core/component_registrator */ 92848)); var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../../core/renderer */ 64553)); var _editor = _interopRequireDefault(__webpack_require__( /*! ../../ui/editor/editor */ 24768)); var _m_box = _interopRequireDefault(__webpack_require__( /*! ../../ui/m_box */ 30434)); var _m_select_box = _interopRequireDefault(__webpack_require__( /*! ../../ui/m_select_box */ 30149)); var _m_number_box = _interopRequireDefault(__webpack_require__( /*! ../../ui/number_box/m_number_box */ 42284)); var _m_date_utils = _interopRequireDefault(__webpack_require__( /*! ./m_date_utils */ 14922)); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } function _extends() { return _extends = Object.assign ? Object.assign.bind() : function(n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) { ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]) } } return n }, _extends.apply(null, arguments) } const rotateArrow = function($arrow, angle, offset) { cssRotate($arrow, angle, offset) }; const cssRotate = function($arrow, angle, offset) { $arrow.css("transform", `rotate(${angle}deg) translate(0,${offset}px)`) }; class TimeView extends _editor.default { _getDefaultOptions() { return _extends({}, super._getDefaultOptions(), { value: new Date(Date.now()), use24HourFormat: true, _showClock: true, _arrowOffset: 5 }) } _getValue() { const { value: value } = this.option(); return value || new Date } _init() { super._init(); this.$element().addClass("dx-timeview") } _render() { super._render(); this._renderBox(); this._updateTime() } _renderBox() { const $box = (0, _renderer.default)("<div>").appendTo(this.$element()); const items = []; if (this.option("_showClock")) { items.push({ ratio: 1, shrink: 0, baseSize: "auto", template: this._renderClock.bind(this) }) } items.push({ ratio: 0, shrink: 0, baseSize: "auto", template: this._renderField.bind(this) }); this._createComponent($box, _m_box.default, { height: "100%", width: "100%", direction: "col", items: items }) } _renderClock(_, __, container) { this._$hourArrow = (0, _renderer.default)("<div>").addClass("dx-timeview-hourarrow"); this._$minuteArrow = (0, _renderer.default)("<div>").addClass("dx-timeview-minutearrow"); const $container = (0, _renderer.default)(container); $container.addClass("dx-timeview-clock").append(this._$hourArrow).append(this._$minuteArrow); this.setAria("role", "presentation", $container) } _updateClock() { const time = this._getValue(); const hourArrowAngle = time.getHours() / 12 * 360 + time.getMinutes() / 60 * 30; const minuteArrowAngle = time.getMinutes() / 60 * 360; rotateArrow(this._$hourArrow, hourArrowAngle, this.option("_arrowOffset")); rotateArrow(this._$minuteArrow, minuteArrowAngle, this.option("_arrowOffset")) } _getBoxItems(is12HourFormat) { const items = [{ ratio: 0, shrink: 0, baseSize: "auto", template: () => this._hourBox.$element() }, { ratio: 0, shrink: 0, baseSize: "auto", template: (0, _renderer.default)("<div>").addClass("dx-timeview-time-separator").text(_date.default.getTimeSeparator()) }, { ratio: 0, shrink: 0, baseSize: "auto", template: () => this._minuteBox.$element() }]; if (is12HourFormat) { items.push({ ratio: 0, shrink: 0, baseSize: "auto", template: () => this._format12.$element() }) } return items } _renderField() { const is12HourFormat = !this.option("use24HourFormat"); this._createHourBox(is12HourFormat); this._createMinuteBox(); if (is12HourFormat) { this._createFormat12Box() } return this._createComponent((0, _renderer.default)("<div>").addClass("dx-timeview-field"), _m_box.default, { direction: "row", align: "center", crossAlign: "center", items: this._getBoxItems(is12HourFormat) }).$element() } _createHourBox(is12HourFormat) { this._hourBox = this._createComponent((0, _renderer.default)("<div>"), _m_number_box.default, _extends({ min: -1, max: is12HourFormat ? 13 : 24, value: this._getValue().getHours(), onValueChanged: this._onHourBoxValueChanged.bind(this), onKeyboardHandled: opts => this._keyboardHandler(opts) }, this._getNumberBoxConfig())); this._hourBox.setAria("label", "hours") } _isPM() { return !this.option("use24HourFormat") && 1 === this._format12.option("value") } _onHourBoxValueChanged(_ref) { let { value: value, component: component } = _ref; const currentValue = this._getValue(); const newValue = new Date(currentValue); let newHours = this._convertMaxHourToMin(value); component.option("value", newHours); if (this._isPM()) { newHours += 12 } newValue.setHours(newHours); _m_date_utils.default.normalizeTime(newValue); this.option("value", newValue) } _convertMaxHourToMin(hours) { const maxHoursValue = this.option("use24HourFormat") ? 24 : 12; return (maxHoursValue + hours) % maxHoursValue } _createMinuteBox() { this._minuteBox = this._createComponent((0, _renderer.default)("<div>"), _m_number_box.default, _extends({ min: -1, max: 60, value: this._getValue().getMinutes(), onKeyboardHandled: opts => this._keyboardHandler(opts), onValueChanged: _ref2 => { let { value: value, component: component } = _ref2; const newMinutes = (60 + value) % 60; component.option("value", newMinutes); const time = new Date(this._getValue()); time.setMinutes(newMinutes); _m_date_utils.default.normalizeTime(time); this.option("value", time) } }, this._getNumberBoxConfig())); this._minuteBox.setAria("label", "minutes") } _createFormat12Box() { const periodNames = _date.default.getPeriodNames(); this._format12 = this._createComponent((0, _renderer.default)("<div>").addClass("dx-timeview-format12"), _m_select_box.default, { items: [{ value: -1, text: periodNames[0] }, { value: 1, text: periodNames[1] }], valueExpr: "value", displayExpr: "text", onKeyboardHandled: opts => this._keyboardHandler(opts), onValueChanged: _ref3 => { let { value: value } = _ref3; const hours = this._getValue().getHours(); const time = new Date(this._getValue()); const newHours = (hours + 12 * value) % 24; time.setHours(newHours); this.option("value", time) }, value: this._getValue().getHours() >= 12 ? 1 : -1, stylingMode: this.option("stylingMode") }); this._format12.setAria("label", "type") } _refreshFormat12() { if (this.option("use24HourFormat")) { return } const value = this._getValue(); const hours = value.getHours(); const isPM = hours >= 12; const newValue = isPM ? 1 : -1; this._silentEditorValueUpdate(this._format12, newValue) } _silentEditorValueUpdate(editor, value) { if (editor) { editor._suppressValueChangeAction(); editor.option("value", value); editor._resumeValueChangeAction() } } _getNumberBoxConfig() { const { stylingMode: stylingMode } = this.option(); return { showSpinButtons: true, displayValueFormatter: value => (value < 10 ? "0" : "") + value, stylingMode: stylingMode } } _normalizeHours(hours) { return this.option("use24HourFormat") ? hours : hours % 12 || 12 } _updateField() { const hours = this._normalizeHours(this._getValue().getHours()); this._silentEditorValueUpdate(this._hourBox, hours); this._silentEditorValueUpdate(this._minuteBox, this._getValue().getMinutes()); this._refreshFormat12() } _updateTime() { if (this.option("_showClock")) { this._updateClock() } this._updateField() } _visibilityChanged(visible) { if (visible) { this._updateTime() } } _optionChanged(args) { switch (args.name) { case "value": this._updateTime(); super._optionChanged(args); break; case "_arrowOffset": break; case "use24HourFormat": case "_showClock": case "stylingMode": this._invalidate(); break; default: super._optionChanged(args) } } }(0, _component_registrator.default)("dxTimeView", TimeView); exports.default = TimeView }, 96375: /*!************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/ui/date_range_box/m_date_range.utils.js ***! \************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.sortDatesArray = exports.monthDifference = exports.isSameDates = exports.isSameDateArrays = exports.getDeserializedDate = void 0; var _date = _interopRequireDefault(__webpack_require__( /*! ../../../core/utils/date */ 41380)); var _date_serialization = _interopRequireDefault(__webpack_require__( /*! ../../../core/utils/date_serialization */ 71051)); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } const getDeserializedDate = value => _date_serialization.default.deserializeDate(value); exports.getDeserializedDate = getDeserializedDate; const isSameDates = (date1, date2) => { if (!date1 && !date2) { return true } return _date.default.sameDate(getDeserializedDate(date1), getDeserializedDate(date2)) }; exports.isSameDates = isSameDates; exports.isSameDateArrays = (value, previousValue) => { const [startDate, endDate] = value; const [previousStartDate, previousEndDate] = previousValue; return isSameDates(startDate, previousStartDate) && isSameDates(endDate, previousEndDate) }; exports.sortDatesArray = value => { const [startDate, endDate] = value; if (startDate && endDate && getDeserializedDate(startDate) > getDeserializedDate(endDate)) { return [endDate, startDate] } return value }; exports.monthDifference = (date1, date2) => 12 * (date2.getFullYear() - date1.getFullYear()) - date1.getMonth() + date2.getMonth() }, 61238: /*!**********************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/ui/date_range_box/m_date_range_box.js ***! \**********************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _events_engine = _interopRequireDefault(__webpack_require__( /*! ../../../common/core/events/core/events_engine */ 92774)); var _index = __webpack_require__( /*! ../../../common/core/events/utils/index */ 98834); var _message = _interopRequireDefault(__webpack_require__( /*! ../../../common/core/localization/message */ 4671)); var _component_registrator = _interopRequireDefault(__webpack_require__( /*! ../../../core/component_registrator */ 92848)); var _config = _interopRequireDefault(__webpack_require__( /*! ../../../core/config */ 66636)); var _devices = _interopRequireDefault(__webpack_require__( /*! ../../../core/devices */ 65951)); var _dom_adapter = _interopRequireDefault(__webpack_require__( /*! ../../../core/dom_adapter */ 64960)); var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../../core/renderer */ 64553)); var _function_template = __webpack_require__( /*! ../../../core/templates/function_template */ 38699); var _extend = __webpack_require__( /*! ../../../core/utils/extend */ 52576); var _icon = __webpack_require__( /*! ../../../core/utils/icon */ 69629); var _inflector = __webpack_require__( /*! ../../../core/utils/inflector */ 53124); var _iterator = __webpack_require__( /*! ../../../core/utils/iterator */ 21274); var _editor = _interopRequireDefault(__webpack_require__( /*! ../../../ui/editor/editor */ 78694)); var _themes = __webpack_require__( /*! ../../../ui/themes */ 52071); var _m_drop_down_button = _interopRequireDefault(__webpack_require__( /*! ../../ui/drop_down_editor/m_drop_down_button */ 96379)); var _m_text_editor = _interopRequireDefault(__webpack_require__( /*! ../../ui/text_box/m_text_editor.clear */ 90987)); var _m_index = _interopRequireDefault(__webpack_require__( /*! ../../ui/text_box/texteditor_button_collection/m_index */ 79686)); var _m_date_range = __webpack_require__( /*! ./m_date_range.utils */ 96375); var _m_multiselect_date_box = _interopRequireDefault(__webpack_require__( /*! ./m_multiselect_date_box */ 49402)); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } function _extends() { return _extends = Object.assign ? Object.assign.bind() : function(n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) { ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]) } } return n }, _extends.apply(null, arguments) } const EVENTS_LIST = ["KeyDown", "KeyUp", "Change", "Cut", "Copy", "Paste", "Input", "EnterKey"]; class DateRangeBox extends _editor.default { _getDefaultOptions() { return (0, _extend.extend)(super._getDefaultOptions(), { acceptCustomValue: true, activeStateEnabled: true, applyButtonText: _message.default.format("OK"), applyValueMode: "instantly", buttons: void 0, calendarOptions: {}, cancelButtonText: _message.default.format("Cancel"), endDateOutOfRangeMessage: _message.default.format("dxDateRangeBox-endDateOutOfRangeMessage"), dateSerializationFormat: void 0, deferRendering: true, disableOutOfRangeSelection: false, disabledDates: null, displayFormat: null, dropDownButtonTemplate: "dropDownButton", dropDownOptions: {}, endDate: null, endDateInputAttr: {}, endDateLabel: _message.default.format("dxDateRangeBox-endDateLabel"), endDateName: "", endDatePlaceholder: "", endDateText: void 0, focusStateEnabled: true, hoverStateEnabled: true, invalidStartDateMessage: _message.default.format("dxDateRangeBox-invalidStartDateMessage"), invalidEndDateMessage: _message.default.format("dxDateRangeBox-invalidEndDateMessage"), isValid: true, labelMode: "static", max: void 0, min: void 0, multiView: true, onChange: null, onClosed: null, onCopy: null, onCut: null, onEnterKey: null, onInput: null, onKeyDown: null, onKeyUp: null, onOpened: null, onPaste: null, onValueChanged: null, openOnFieldClick: true, opened: false, pickerType: "calendar", readOnly: false, showClearButton: false, showDropDownButton: true, spellcheck: false, startDate: null, startDateInputAttr: {}, startDateLabel: _message.default.format("dxDateRangeBox-startDateLabel"), startDateName: "", startDateOutOfRangeMessage: _message.default.format("dxDateRangeBox-startDateOutOfRangeMessage"), startDatePlaceholder: "", startDateText: void 0, stylingMode: (0, _config.default)().editorStylingMode ?? "outlined", todayButtonText: _message.default.format("dxCalendar-todayButtonText"), useHiddenSubmitElement: false, useMaskBehavior: false, validationError: null, validationErrors: null, validationMessageMode: "auto", validationMessagePosition: "auto", validationStatus: "valid", value: [null, null], valueChangeEvent: "change", _internalValidationErrors: [], _currentSelection: "startDate" }) } _defaultOptionsRules() { return super._defaultOptionsRules().concat([{ device() { const themeName = (0, _themes.current)(); return (0, _themes.isMaterial)(themeName) }, options: { labelMode: "floating", stylingMode: (0, _config.default)().editorStylingMode ?? "filled" } }, { device() { const themeName = (0, _themes.current)(); return (0, _themes.isFluent)(themeName) }, options: { labelMode: "outside" } }, { device() { const realDevice = _devices.default.real(); const { platform: platform } = realDevice; return "ios" === platform || "android" === platform }, options: { multiView: false } }]) } _initOptions(options) { super._initOptions(options); const { value: initialValue } = this.initialOption(); let { value: value, startDate: startDate, endDate: endDate } = this.option(); if (value[0] && value[1] && (0, _m_date_range.getDeserializedDate)(value[0]) > (0, _m_date_range.getDeserializedDate)(value[1])) { value = [value[1], value[0]] } if (startDate && endDate && (0, _m_date_range.getDeserializedDate)(startDate) > (0, _m_date_range.getDeserializedDate)(endDate)) { [startDate, endDate] = [endDate, startDate] } if ((0, _m_date_range.isSameDateArrays)(initialValue, value)) { value = [startDate, endDate] } else { [startDate, endDate] = value } this.option({ startDate: startDate, endDate: endDate, value: value }) } _createOpenAction() { this._openAction = this._createActionByOption("onOpened", { excludeValidators: ["disabled", "readOnly"] }) } _raiseOpenAction() { if (!this._openAction) { this._createOpenAction() } this._openAction() } _createCloseAction() { this._closeAction = this._createActionByOption("onClosed", { excludeValidators: ["disabled", "readOnly"] }) } _raiseCloseAction() { if (!this._closeAction) { this._createCloseAction() } this._closeAction() } _createEventAction(eventName) { this[`_${(0,_inflector.camelize)(eventName)}Action`] = this._createActionByOption(`on${eventName}`, { excludeValidators: ["readOnly"] }) } _raiseAction(eventName, event) { const action = this[`_${(0,_inflector.camelize)(eventName)}Action`]; if (!action) { this._createEventAction(eventName) } this[`_${(0,_inflector.camelize)(eventName)}Action`]({ event: event }) } _initTemplates() { this._templateManager.addDefaultTemplates({ dropDownButton: new _function_template.FunctionTemplate((options => { const $icon = (0, _renderer.default)("<div>").addClass("dx-dropdowneditor-icon"); (0, _renderer.default)(options.container).append($icon) })) }); super._initTemplates() } _getDefaultButtons() { return [{ name: "clear", Ctor: _m_text_editor.default }, { name: "dropDown", Ctor: _m_drop_down_button.default }] } _initMarkup() { (0, _renderer.default)(this.element()).addClass("dx-daterangebox").addClass("dx-texteditor").addClass("dx-dropdowneditor"); this._toggleDropDownEditorActiveClass(); this._toggleEditorLabelClass(); this._toggleReadOnlyState(); this._renderStylingMode(); this._renderEndDateBox(); this._renderSeparator(); this._renderStartDateBox(); this._toggleEmptinessState(); this._renderEmptinessEvent(); this._renderButtonsContainer(); super._initMarkup(); (0, _renderer.default)(this.element()).removeClass("dx-show-invalid-badge") } _renderEmptinessEvent() { const eventName = (0, _index.addNamespace)("input blur", this.NAME); _events_engine.default.off(this._focusTarget(), eventName); _events_engine.default.on(this._focusTarget(), eventName, this._toggleEmptinessState.bind(this)) } _toggleEmptinessState() { const isEmpty = (0, _renderer.default)(this.getStartDateBox().element()).hasClass("dx-texteditor-empty") && (0, _renderer.default)(this.getEndDateBox().element()).hasClass("dx-texteditor-empty"); (0, _renderer.default)(this.element()).toggleClass("dx-texteditor-empty", isEmpty) } _attachKeyboardEvents() { if (!this.option("readOnly")) { super._attachKeyboardEvents() } } _toggleReadOnlyState() { const { readOnly: readOnly } = this.option(); (0, _renderer.default)(this.element()).toggleClass("dx-state-readonly", !!readOnly) } _toggleDropDownEditorActiveClass() { const { opened: opened } = this.option(); (0, _renderer.default)(this.element()).toggleClass("dx-dropdowneditor-active", opened) } _toggleEditorLabelClass() { const { startDateLabel: startDateLabel, endDateLabel: endDateLabel, labelMode: labelMode } = this.option(); const isLabelVisible = (!!startDateLabel || !!endDateLabel) && "hidden" !== labelMode; (0, _renderer.default)(this.element()).removeClass("dx-texteditor-with-floating-label").removeClass("dx-texteditor-label-outside").removeClass("dx-texteditor-with-label"); if (isLabelVisible) { (0, _renderer.default)(this.element()).addClass("floating" === labelMode ? "dx-texteditor-with-floating-label" : "dx-texteditor-with-label"); if ("outside" === labelMode) { (0, _renderer.default)(this.element()).addClass("dx-texteditor-label-outside") } } } _renderStartDateBox() { this._$startDateBox = (0, _renderer.default)("<div>").addClass("dx-start-datebox").prependTo(this.$element()); this._startDateBox = this._createComponent(this._$startDateBox, _m_multiselect_date_box.default, this._getStartDateBoxConfig()); this._startDateBox.NAME = "_StartDateBox" } _renderEndDateBox() { this._$endDateBox = (0, _renderer.default)("<div>").addClass("dx-end-datebox").appendTo(this.$element()); this._endDateBox = this._createComponent(this._$endDateBox, _m_multiselect_date_box.default, this._getEndDateBoxConfig()); this._endDateBox.NAME = "_EndDateBox" } _renderSeparator() { const $icon = (0, _icon.getImageContainer)("to"); this._$separator = (0, _renderer.default)("<div>").addClass("dx-daterangebox-separator").prependTo(this.$element()); this._renderPreventBlurOnSeparatorClick(); null === $icon || void 0 === $icon || $icon.appendTo(this._$separator) } _renderPreventBlurOnSeparatorClick() { const eventName = (0, _index.addNamespace)("mousedown", this.NAME); _events_engine.default.off(this._$separator, eventName); _events_engine.default.on(this._$separator, eventName, (e => { if (!this._hasActiveElement()) { this.focus() } e.preventDefault() })) } _renderButtonsContainer() { this._buttonCollection = new _m_index.default(this, this._getDefaultButtons()); this._$beforeButtonsContainer = void 0; this._$afterButtonsContainer = void 0; const { buttons: buttons } = this.option(); this._$beforeButtonsContainer = this._buttonCollection.renderBeforeButtons(buttons, this.$element()); this._$afterButtonsContainer = this._buttonCollection.renderAfterButtons(buttons, this.$element()) } _updateButtons(names) { this._buttonCollection.updateButtons(names) } _openHandler() { this._toggleOpenState() } _shouldCallOpenHandler() { return true } _toggleOpenState() { const { opened: opened } = this.option(); if (!opened) { this.getStartDateBox()._focusInput() } if (!this.option("readOnly")) { this.option("opened", !this.option("opened")) } } _clearValueHandler(e) { e.stopPropagation(); this._saveValueChangeEvent(e); this.clear(); !this._isStartDateActiveElement() && this.focus(); _events_engine.default.trigger((0, _renderer.default)(this.startDateField()), "input") } _isClearButtonVisible() { return this.option("showClearButton") && !this.option("readOnly") } _focusInHandler(event) { if (this._shouldSkipFocusEvent(event)) { return } super._focusInHandler(event) } _focusOutHandler(event) { if (this._shouldSkipFocusEvent(event)) { return } super._focusOutHandler(event) } _shouldSkipFocusEvent(event) { const { target: target, relatedTarget: relatedTarget } = event; return (0, _renderer.default)(target).is((0, _renderer.default)(this.startDateField())) && (0, _renderer.default)(relatedTarget).is((0, _renderer.default)(this.endDateField())) || (0, _renderer.default)(target).is((0, _renderer.default)(this.endDateField())) && (0, _renderer.default)(relatedTarget).is((0, _renderer.default)(this.startDateField())) } _getPickerType() { const { pickerType: pickerType } = this.option(); return ["calendar", "native"].includes(pickerType) ? pickerType : "calendar" } _getRestErrors(allErrors, partialErrors) { return allErrors.filter((error => !partialErrors.some((prevError => error.message === prevError.message)))) } _syncValidationErrors(optionName, newPartialErrors, previousPartialErrors) { newPartialErrors || (newPartialErrors = []); previousPartialErrors || (previousPartialErrors = []); const allErrors = this.option(optionName) || []; const otherErrors = this._getRestErrors(allErrors, previousPartialErrors); this.option(optionName, [...otherErrors, ...newPartialErrors]) } _getDateBoxConfig() { const options = this.option(); const dateBoxConfig = { acceptCustomValue: options.acceptCustomValue, activeStateEnabled: options.activeStateEnabled, applyValueMode: options.applyValueMode, dateSerializationFormat: options.dateSerializationFormat, deferRendering: options.deferRendering, disabled: options.disabled, displayFormat: options.displayFormat, focusStateEnabled: options.focusStateEnabled, isValid: options.isValid, tabIndex: options.tabIndex, height: options.height, hoverStateEnabled: options.hoverStateEnabled, labelMode: options.labelMode, max: options.max, min: options.min, openOnFieldClick: options.openOnFieldClick, pickerType: this._getPickerType(), readOnly: options.readOnly, rtlEnabled: options.rtlEnabled, spellcheck: options.spellcheck, stylingMode: options.stylingMode, type: "date", useMaskBehavior: options.useMaskBehavior, validationMessageMode: options.validationMessageMode, validationMessagePosition: options.validationMessagePosition, valueChangeEvent: options.valueChangeEvent, onKeyDown: options.onKeyDown, onKeyUp: options.onKeyUp, onChange: options.onChange, onInput: options.onInput, onCut: options.onCut, onCopy: options.onCopy, onPaste: options.onPaste, onEnterKey: options.onEnterKey, _dateRangeBoxInstance: this, _showValidationMessage: false }; (0, _iterator.each)(EVENTS_LIST, ((_, eventName) => { const optionName = `on${eventName}`; if (this.hasActionSubscription(optionName)) { dateBoxConfig[optionName] = e => { this._raiseAction(eventName, e.event) } } })); return dateBoxConfig } _hideOnOutsideClickHandler(_ref) { let { target: target } = _ref; const $target = (0, _renderer.default)(target); const dropDownButton = this.getButton("dropDown"); const $dropDownButton = null === dropDownButton || void 0 === dropDownButton ? void 0 : dropDownButton.$element(); const isInputClicked = !!$target.closest((0, _renderer.default)(this.element())).length; const isDropDownButtonClicked = !!$target.closest($dropDownButton).length; const isOutsideClick = !isInputClicked && !isDropDownButtonClicked; return isOutsideClick } _getStartDateBoxConfig() { var _options$dropDownOpti; const options = this.option(); return _extends({}, this._getDateBoxConfig(), { applyButtonText: options.applyButtonText, calendarOptions: options.calendarOptions, cancelButtonText: options.cancelButtonText, dateOutOfRangeMessage: options.startDateOutOfRangeMessage, deferRendering: options.deferRendering, disabledDates: null === (_options$dropDownOpti = options.dropDownOptions) || void 0 === _options$dropDownOpti ? void 0 : _options$dropDownOpti.disabledDates, dropDownOptions: _extends({ showTitle: false, title: "", hideOnOutsideClick: e => this._hideOnOutsideClickHandler(e), hideOnParentScroll: false, preventScrollEvents: false }, options.dropDownOptions), invalidDateMessage: options.invalidStartDateMessage, onValueChanged: _ref2 => { let { value: value, event: event } = _ref2; const newValue = [value, this.option("value")[1]]; this.updateValue(newValue, event) }, opened: options.opened, onOpened: () => { this._raiseOpenAction() }, onClosed: () => { this._raiseCloseAction() }, onOptionChanged: args => { const { name: name, value: value, previousValue: previousValue } = args; if ("text" === name) { this.option("startDateText", value) } if ("validationErrors" === name) { this._syncValidationErrors("_internalValidationErrors", value, previousValue) } }, todayButtonText: options.todayButtonText, showClearButton: false, showDropDownButton: false, value: this.option("value")[0], label: options.startDateLabel, placeholder: options.startDatePlaceholder, inputAttr: options.startDateInputAttr, name: options.startDateName, _showValidationIcon: false }) } _getEndDateBoxConfig() { const options = this.option(); return _extends({}, this._getDateBoxConfig(), { invalidDateMessage: options.invalidEndDateMessage, dateOutOfRangeMessage: options.endDateOutOfRangeMessage, onValueChanged: _ref3 => { let { value: value, event: event } = _ref3; const newValue = [this.option("value")[0], value]; this.updateValue(newValue, event) }, onOptionChanged: args => { const { name: name, value: value, previousValue: previousValue } = args; if ("text" === name) { this.option("endDateText", value) } if ("validationErrors" === name) { this._syncValidationErrors("_internalValidationErrors", value, previousValue) } }, opened: options.opened, showClearButton: false, showDropDownButton: false, value: this.option("value")[1], label: options.endDateLabel, placeholder: options.endDatePlaceholder, deferRendering: true, inputAttr: options.endDateInputAttr, name: options.endDateName }) } _getValidationMessagePosition() { const { validationMessagePosition: validationMessagePosition } = this.option(); if ("auto" === validationMessagePosition) { return this.option("opened") ? "top" : "bottom" } return validationMessagePosition } _getSerializedDates(_ref4) { let [startDate, endDate] = _ref4; return [this.getStartDateBox()._serializeDate((0, _m_date_range.getDeserializedDate)(startDate)), this.getStartDateBox()._serializeDate((0, _m_date_range.getDeserializedDate)(endDate))] } updateValue(newValue, event) { if (!(0, _m_date_range.isSameDateArrays)(newValue, this.option("value"))) { if (event) { this._saveValueChangeEvent(event) } this.option("value", this._getSerializedDates(newValue)) } } _updateDateBoxesValue(newValue) { const startDateBox = this.getStartDateBox(); const endDateBox = this.getEndDateBox(); const [newStartDate, newEndDate] = newValue; const oldStartDate = startDateBox.option("value"); const oldEndDate = endDateBox.option("value"); if (!(0, _m_date_range.isSameDates)(newStartDate, oldStartDate)) { startDateBox.option("value", newStartDate) } if (!(0, _m_date_range.isSameDates)(newEndDate, oldEndDate)) { endDateBox.option("value", newEndDate) } } _renderAccessKey() { const $startDateInput = (0, _renderer.default)(this.field()[0]); const { accessKey: accessKey } = this.option(); $startDateInput.attr("accesskey", accessKey) } _focusTarget() { return (0, _renderer.default)(this.element()).find(".dx-texteditor-input") } _focusEventTarget() { return this.element() } _focusClassTarget() { return this.$element() } _toggleFocusClass(isFocused) { super._toggleFocusClass(isFocused, this._focusClassTarget()) } _hasActiveElement() { return this._isStartDateActiveElement() || this._isEndDateActiveElement() } _isStartDateActiveElement() { return this._isActiveElement(this.startDateField()) } _isEndDateActiveElement() { return this._isActiveElement(this.endDateField()) } _isActiveElement(input) { return (0, _renderer.default)(input).is((0, _renderer.default)(_dom_adapter.default.getActiveElement(input))) } _popupContentIdentifier(identifier) { if (identifier) { this._popupContentId = identifier } return this._popupContentId } _setAriaAttributes() { const { opened: opened } = this.option(); const arias = { expanded: opened, controls: this._popupContentIdentifier() }; const ariaOwns = opened ? this._popupContentIdentifier() : void 0; this.setAria(arias); this.setAria("owns", ariaOwns, this.$element()) } _cleanButtonContainers() { var _this$_$beforeButtons, _this$_$afterButtonsC; null === (_this$_$beforeButtons = this._$beforeButtonsContainer) || void 0 === _this$_$beforeButtons || _this$_$beforeButtons.remove(); null === (_this$_$afterButtonsC = this._$afterButtonsContainer) || void 0 === _this$_$afterButtonsC || _this$_$afterButtonsC.remove(); this._buttonCollection.clean(); this._$beforeButtonsContainer = void 0; this._$afterButtonsContainer = void 0 } _applyCustomValidation(value) { this.validationRequest.fire({ editor: this, value: value }) } _clean() { var _this$_$startDateBox, _this$_$endDateBox, _this$_$separator; this._cleanButtonContainers(); null === (_this$_$startDateBox = this._$startDateBox) || void 0 === _this$_$startDateBox || _this$_$startDateBox.remove(); null === (_this$_$endDateBox = this._$endDateBox) || void 0 === _this$_$endDateBox || _this$_$endDateBox.remove(); null === (_this$_$separator = this._$separator) || void 0 === _this$_$separator || _this$_$separator.remove(); super._clean() } _optionChanged(args) { const { name: name, fullName: fullName, value: value, previousValue: previousValue } = args; switch (name) { case "acceptCustomValue": case "dateSerializationFormat": case "displayFormat": case "max": case "min": case "openOnFieldClick": case "spellcheck": case "useMaskBehavior": case "valueChangeEvent": this.getStartDateBox().option(name, value); this.getEndDateBox().option(name, value); break; case "rtlEnabled": default: super._optionChanged(args); break; case "labelMode": this._toggleEditorLabelClass(); this.getStartDateBox().option(name, value); this.getEndDateBox().option(name, value); break; case "applyButtonText": case "applyValueMode": case "cancelButtonText": case "deferRendering": case "disabledDates": case "todayButtonText": this.getStartDateBox().option(name, value); break; case "opened": this._toggleDropDownEditorActiveClass(); this.getStartDateBox().option(name, value); this.getEndDateBox()._setOptionWithoutOptionChange(name, value); break; case "buttons": this._cleanButtonContainers(); this._renderButtonsContainer(); break; case "calendarOptions": case "dropDownOptions": this.getStartDateBox().option(fullName, value); break; case "pickerType": { const pickerType = this._getPickerType(); this.getStartDateBox().option(name, pickerType); this.getEndDateBox().option(name, pickerType); break } case "height": this.getStartDateBox().option(name, value); this.getEndDateBox().option(name, value); super._optionChanged(args); break; case "dropDownButtonTemplate": case "showDropDownButton": this._updateButtons(["dropDown"]); break; case "showClearButton": this._updateButtons(["clear"]); break; case "endDate": this.updateValue([this.option("value")[0], value]); break; case "startDateLabel": this._toggleEditorLabelClass(); this.getStartDateBox().option("label", value); break; case "endDateLabel": this._toggleEditorLabelClass(); this.getEndDateBox().option("label", value); break; case "startDatePlaceholder": this.getStartDateBox().option("placeholder", value); break; case "endDatePlaceholder": this.getEndDateBox().option("placeholder", value); break; case "startDateInputAttr": this.getStartDateBox().option("inputAttr", value); break; case "startDateName": this.getStartDateBox().option("name", value); break; case "endDateInputAttr": this.getEndDateBox().option("inputAttr", value); break; case "endDateName": this.getEndDateBox().option("name", value); break; case "multiView": this.getStartDateBox().option("calendarOptions.viewsCount", value ? 2 : 1); break; case "tabIndex": case "activeStateEnabled": case "focusStateEnabled": case "hoverStateEnabled": super._optionChanged(args); this.getStartDateBox().option(name, value); this.getEndDateBox().option(name, value); break; case "onValueChanged": this._createValueChangeAction(); break; case "onOpened": this._createOpenAction(); break; case "onClosed": this._createCloseAction(); break; case "onKeyDown": case "onKeyUp": case "onChange": case "onInput": case "onCut": case "onCopy": case "onPaste": case "onEnterKey": this._createEventAction(name.replace("on", "")); break; case "readOnly": case "disabled": this._updateButtons(); super._optionChanged(args); this.getStartDateBox().option(name, value); this.getEndDateBox().option(name, value); break; case "disableOutOfRangeSelection": case "startDateText": case "endDateText": case "useHiddenSubmitElement": case "_currentSelection": break; case "startDate": this.updateValue([value, this.option("value")[1]]); break; case "stylingMode": this._renderStylingMode(); this.getStartDateBox().option(name, value); this.getEndDateBox().option(name, value); break; case "invalidStartDateMessage": this.getStartDateBox().option("invalidDateMessage", value); break; case "invalidEndDateMessage": this.getEndDateBox().option("invalidDateMessage", value); break; case "startDateOutOfRangeMessage": this.getStartDateBox().option("dateOutOfRangeMessage", value); break; case "endDateOutOfRangeMessage": this.getEndDateBox().option("dateOutOfRangeMessage", value); break; case "validationMessagePosition": this.getStartDateBox().option(name, value); super._optionChanged(args); break; case "_internalValidationErrors": { this._syncValidationErrors("validationErrors", value, previousValue); const validationErrors = this.option("validationErrors"); this.option("isValid", !(null !== validationErrors && void 0 !== validationErrors && validationErrors.length)); break } case "isValid": { this.getStartDateBox().option(name, value); this.getEndDateBox().option(name, value); const isValid = value && !this.option("_internalValidationErrors").length; if (this._shouldSkipIsValidChange || isValid === value) { super._optionChanged(args); return } this._shouldSkipIsValidChange = true; this.option("isValid", isValid); this._shouldSkipIsValidChange = false; break } case "validationErrors": { const internalValidationErrors = this.option("_internalValidationErrors") || []; const allErrors = value || []; const externalErrors = this._getRestErrors(allErrors, internalValidationErrors); const errors = [...externalErrors, ...internalValidationErrors]; const newValue = errors.length ? errors : null; this._options.silent("validationErrors", newValue); super._optionChanged(_extends({}, args, { value: newValue })); break } case "value": { const newValue = (0, _m_date_range.sortDatesArray)(value); if (!(0, _m_date_range.isSameDateArrays)(newValue, previousValue)) { const isDirty = !(0, _m_date_range.isSameDateArrays)(newValue, this._initialValue); this.option("isDirty", isDirty); this._setOptionWithoutOptionChange("value", newValue); this._setOptionWithoutOptionChange("startDate", newValue[0]); this._setOptionWithoutOptionChange("endDate", newValue[1]); this._applyCustomValidation(newValue); this._updateDateBoxesValue(newValue); this.getStartDateBox().getStrategy().renderValue(); this._toggleEmptinessState(); this._raiseValueChangeAction(newValue, previousValue); this._saveValueChangeEvent(void 0) } break } } } getStartDateBox() { return this._startDateBox } getEndDateBox() { return this._endDateBox } getButton(name) { return this._buttonCollection.getButton(name) } open() { this.option("opened", true) } close() { this.option("opened", false) } content() { return this.getStartDateBox().content() } field() { return [this.startDateField(), this.endDateField()] } startDateField() { return this.getStartDateBox().field() } endDateField() { return this.getEndDateBox().field() } focus() { this.getStartDateBox().focus() } reset() { super.reset(); const startDateBox = this.getStartDateBox(); const endDateBox = this.getEndDateBox(); startDateBox.reset(); endDateBox.reset(); startDateBox._updateInternalValidationState(true); endDateBox._updateInternalValidationState(true) } clear() { super.clear(); this.getEndDateBox().clear(); this.getStartDateBox().clear() } }(0, _component_registrator.default)("dxDateRangeBox", DateRangeBox); exports.default = DateRangeBox }, 49402: /*!****************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/ui/date_range_box/m_multiselect_date_box.js ***! \****************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _events_engine = _interopRequireDefault(__webpack_require__( /*! ../../../common/core/events/core/events_engine */ 92774)); var _index = __webpack_require__( /*! ../../../common/core/events/utils/index */ 98834); var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../../core/renderer */ 64553)); var _size = __webpack_require__( /*! ../../../core/utils/size */ 57653); var _date_box = _interopRequireDefault(__webpack_require__( /*! ../../../ui/date_box */ 2739)); var _m_date_range = __webpack_require__( /*! ./m_date_range.utils */ 96375); var _m_rangeCalendar = _interopRequireDefault(__webpack_require__( /*! ./strategy/m_rangeCalendar */ 37091)); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } const TypedDateBox = _date_box.default; exports.default = class extends TypedDateBox { _initStrategy() { this._strategy = new _m_rangeCalendar.default(this) } _initMarkup() { super._initMarkup(); this._renderInputClickEvent() } _renderInputClickEvent() { const clickEventName = (0, _index.addNamespace)("dxclick", this.NAME); _events_engine.default.off(this._input(), clickEventName); _events_engine.default.on(this._input(), clickEventName, (e => { this._processValueChange(e) })) } _applyButtonHandler(_ref) { let { event: event } = _ref; const strategy = this.getStrategy(); const value = strategy.getValue(); strategy.getDateRangeBox().updateValue(value, event); this.close(); this.option("focusStateEnabled") && this.focus() } _openHandler(e) { if (this.getStrategy().getDateRangeBox().option("opened")) { return } super._openHandler(e) } _renderOpenedState() { const { opened: opened } = this.option(); this._getDateRangeBox().option("opened", opened); if (this._isStartDateBox()) { if (opened) { this._createPopup() } this._getDateRangeBox()._popupContentIdentifier(this._getControlsAria()); this._setPopupOption("visible", opened); this._getDateRangeBox()._setAriaAttributes() } } _getDateRangeBox() { return this.getStrategy().getDateRangeBox() } _isStartDateBox() { return (0, _renderer.default)(this.element()).hasClass("dx-start-datebox") } _renderPopup() { super._renderPopup(); if (this._isStartDateBox()) { this._getDateRangeBox()._bindInnerWidgetOptions(this._popup, "dropDownOptions") } } _popupShownHandler() { var _this$_getDateRangeBo; super._popupShownHandler(); null === (_this$_getDateRangeBo = this._getDateRangeBox()._validationMessage) || void 0 === _this$_getDateRangeBo || _this$_getDateRangeBo.option("positionSide", this._getValidationMessagePositionSide()) } _popupHiddenHandler() { var _this$_getDateRangeBo2; super._popupHiddenHandler(); null === (_this$_getDateRangeBo2 = this._getDateRangeBox()._validationMessage) || void 0 === _this$_getDateRangeBo2 || _this$_getDateRangeBo2.option("positionSide", this._getValidationMessagePositionSide()) } _focusInHandler(e) { super._focusInHandler(e); this._processValueChange(e) } _popupTabHandler(e) { const $element = (0, _renderer.default)(e.target); if (e.shiftKey && $element.is(this._getFirstPopupElement())) { this._getDateRangeBox().getEndDateBox().focus(); e.preventDefault() } if (!e.shiftKey && $element.is(this._getLastPopupElement())) { this._getDateRangeBox().getStartDateBox().focus(); e.preventDefault() } } _processValueChange(e) { const { target: target } = e; const dateRangeBox = this._getDateRangeBox(); const [startDateInput, endDateInput] = dateRangeBox.field(); if ((0, _renderer.default)(target).is((0, _renderer.default)(startDateInput))) { dateRangeBox.option("_currentSelection", "startDate") } if ((0, _renderer.default)(target).is((0, _renderer.default)(endDateInput))) { dateRangeBox.option("_currentSelection", "endDate") } if (!dateRangeBox.getStartDateBox().getStrategy().getWidget()) { return } const calendar = dateRangeBox.getStartDateBox().getStrategy().getWidget(); const { value: value } = calendar.option(); const startDate = (0, _m_date_range.getDeserializedDate)(null === value || void 0 === value ? void 0 : value[0]); const endDate = (0, _m_date_range.getDeserializedDate)(null === value || void 0 === value ? void 0 : value[1]); if ((0, _renderer.default)(target).is((0, _renderer.default)(startDateInput))) { if (startDate) { calendar._skipNavigate = true; calendar.option("currentDate", startDate) } this.getStrategy().setActiveStartDateBox(); calendar.option("_currentSelection", "startDate"); if (dateRangeBox.option("disableOutOfRangeSelection")) { calendar._setViewsMaxOption(endDate) } } if ((0, _renderer.default)(target).is((0, _renderer.default)(endDateInput))) { if (endDate) { if (startDate && (0, _m_date_range.monthDifference)(startDate, endDate) > 1) { calendar.option("currentDate", calendar._getDateByOffset(null, endDate)); calendar.option("currentDate", calendar._getDateByOffset(-1, endDate)) } calendar._skipNavigate = true; calendar.option("currentDate", endDate) } dateRangeBox.getStartDateBox().getStrategy().setActiveEndDateBox(); calendar.option("_currentSelection", "endDate"); if (dateRangeBox.option("disableOutOfRangeSelection")) { calendar._setViewsMinOption(startDate) } } } _invalidate() { super._invalidate(); this._refreshStrategy() } _updateInternalValidationState(isValid, validationMessage) { this.option({ isValid: isValid, validationError: isValid ? null : { message: validationMessage } }) } _recallInternalValidation(value) { this._applyInternalValidation(value) } _isTargetOutOfComponent(target) { const $dateRangeBox = (0, _renderer.default)(this._getDateRangeBox().element()); const isTargetOutOfDateRangeBox = 0 === (0, _renderer.default)(target).closest($dateRangeBox).length; return super._isTargetOutOfComponent(target) && isTargetOutOfDateRangeBox } _updateLabelWidth() { const $beforeButtonsContainer = this._getDateRangeBox()._$beforeButtonsContainer; const { labelMode: labelMode } = this.option(); if ("outside" === labelMode && $beforeButtonsContainer && this._isStartDateBox()) { this._label._updateLabelTransform((0, _size.getWidth)($beforeButtonsContainer)); return } super._updateLabelWidth() } _optionChanged(args) { switch (args.name) { case "isValid": { const isValid = this._getDateRangeBox().option("isValid"); if (this._skipIsValidOptionChange || isValid === args.value) { super._optionChanged(args); return } this._skipIsValidOptionChange = true; this.option({ isValid: isValid }); this._skipIsValidOptionChange = false; break } default: super._optionChanged(args) } } close() { this.getStrategy().getDateRangeBox().getStartDateBox().option("opened", false) } getStrategy() { return this._strategy } } }, 37091: /*!******************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/ui/date_range_box/strategy/m_rangeCalendar.js ***! \******************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _events_engine = _interopRequireDefault(__webpack_require__( /*! ../../../../common/core/events/core/events_engine */ 92774)); var _extend = __webpack_require__( /*! ../../../../core/utils/extend */ 52576); var _type = __webpack_require__( /*! ../../../../core/utils/type */ 11528); var _m_date_boxStrategy = _interopRequireDefault(__webpack_require__( /*! ../../date_box/m_date_box.strategy.calendar */ 49403)); var _m_date_range = __webpack_require__( /*! ../m_date_range.utils */ 96375); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } function _extends() { return _extends = Object.assign ? Object.assign.bind() : function(n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) { ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]) } } return n }, _extends.apply(null, arguments) } class RangeCalendarStrategy extends _m_date_boxStrategy.default { constructor(dateBox) { super(); this._dateSelectedCounter = 0; this.dateBox = dateBox; this.dateRangeBox = dateBox.option("_dateRangeBoxInstance") } popupConfig(popupConfig) { return (0, _extend.extend)(true, super.popupConfig(popupConfig), { position: { of: this.getDateRangeBox().$element() } }) } popupShowingHandler() { this.getWidget()._restoreViewsMinMaxOptions(); this._dateSelectedCounter = 0 } _getPopup() { return super._getPopup() || this.getDateRangeBox().getStartDateBox()._popup } supportedKeys() { const dateRangeBox = this.getDateRangeBox(); return _extends({}, super.supportedKeys(), { rightArrow: () => { if (dateRangeBox.option("opened")) { return true } return }, leftArrow: () => { if (dateRangeBox.option("opened")) { return true } return }, enter: e => { if (dateRangeBox.option("opened")) { const dateBoxValue = this.dateBox.dateOption("value"); this.dateBox._valueChangeEventHandler(e); const newDateBoxValue = this.dateBox.dateOption("value"); const dateBoxValueChanged = !(0, _m_date_range.isSameDates)(dateBoxValue, newDateBoxValue); if (dateBoxValueChanged) { dateRangeBox.getStartDateBox().getStrategy().getWidget().option("value", dateRangeBox.option("value")) } else { dateRangeBox.getStartDateBox().getStrategy().getWidget()._enterKeyHandler(e) } return false } return }, tab: e => { if (!dateRangeBox.option("opened")) { return } if (!this._getPopup().getFocusableElements().length) { if (!e.shiftKey && dateRangeBox._isEndDateActiveElement() || e.shiftKey && dateRangeBox._isStartDateActiveElement()) { dateRangeBox.close() } return } if (!e.shiftKey && dateRangeBox._isStartDateActiveElement() || e.shiftKey && dateRangeBox._isEndDateActiveElement()) { return } const $focusableElement = e.shiftKey ? dateRangeBox.getStartDateBox()._getLastPopupElement() : dateRangeBox.getStartDateBox()._getFirstPopupElement(); if ($focusableElement) { _events_engine.default.trigger($focusableElement, "focus"); $focusableElement.select() } e.preventDefault() } }) } _getWidgetOptions() { const { disabledDates: disabledDatesValue, value: value, multiView: multiView } = this.dateRangeBox.option(); const disabledDates = (0, _type.isFunction)(disabledDatesValue) ? this._injectComponent(disabledDatesValue) : disabledDatesValue ?? void 0; return (0, _extend.extend)(super._getWidgetOptions(), { disabledDates: disabledDates, value: value, selectionMode: "range", viewsCount: multiView ? 2 : 1, _allowChangeSelectionOrder: true, _currentSelection: this.getCurrentSelection() }) } _refreshActiveDescendant(e) { this.getDateRangeBox().setAria("activedescendant", e.actionValue) } _injectComponent(func) { return params => func((0, _extend.extend)(params, { component: this.getDateRangeBox() })) } getKeyboardListener() { const dateRangeBox = this.getDateRangeBox(); return dateRangeBox.getStartDateBox() ? dateRangeBox.getStartDateBox().getStrategy().getWidget() : this.getWidget() } getValue() { return this.getWidget().option("value") } _updateValue() { const { value: value } = this.getDateRangeBox().option(); if (!this.getWidget()) { return } this._shouldPreventFocusChange = true; this.getWidget().option("value", value) } _isInstantlyMode() { return "instantly" === this.getDateRangeBox().option("applyValueMode") } _valueChangedHandler(_ref) { let { value: value, previousValue: previousValue, event: event } = _ref; if ((0, _m_date_range.isSameDateArrays)(value, previousValue) && !this.getWidget()._valueSelected) { this._shouldPreventFocusChange = false; return } this.getWidget()._valueSelected = false; const dateRangeBox = this.getDateRangeBox(); if (this._isInstantlyMode()) { if (!dateRangeBox.option("disableOutOfRangeSelection")) { if ("startDate" === this._getCalendarCurrentSelection()) { this._dateSelectedCounter = 0 } else { this._dateSelectedCounter = 1; if (!value[0]) { this._dateSelectedCounter = -1 } else if ((0, _m_date_range.getDeserializedDate)(value[0]) > (0, _m_date_range.getDeserializedDate)(value[1])) { dateRangeBox.updateValue([value[0], null], event); return } } } dateRangeBox.updateValue(value, event); this._dateSelectedCounter += 1; if (2 === this._dateSelectedCounter) { dateRangeBox.close(); return } } else if ("endDate" === this._getCalendarCurrentSelection()) { if (value[0] && (0, _m_date_range.getDeserializedDate)(value[0]) > (0, _m_date_range.getDeserializedDate)(value[1])) { return } } if (!this._shouldPreventFocusChange) { this._moveFocusToNextInput() } this._shouldPreventFocusChange = false } _moveFocusToNextInput() { const targetDateBox = "startDate" === this._getCalendarCurrentSelection() ? this.getDateRangeBox().getEndDateBox() : this.getDateRangeBox().getStartDateBox(); targetDateBox.focus(); _events_engine.default.trigger(targetDateBox.field(), "dxclick") } getCurrentSelection() { return this.getDateRangeBox().option("_currentSelection") } _getCalendarCurrentSelection() { return this.getWidget().option("_currentSelection") } _closeDropDownByEnter() { if ("startDate" === this._getCalendarCurrentSelection()) { return false } return true } dateBoxValue() { const { dateBox: dateBox } = this; if (arguments.length) { return dateBox.dateValue.apply(dateBox, arguments) } return dateBox.dateOption.apply(dateBox, ["value"]) } _cellClickHandler() {} setActiveStartDateBox() { this.dateBox = this.getDateRangeBox().getStartDateBox() } setActiveEndDateBox() { this.dateBox = this.getDateRangeBox().getEndDateBox() } getDateRangeBox() { return this.dateRangeBox } getWidget() { return this._widget } } exports.default = RangeCalendarStrategy }, 89500: /*!****************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/ui/drawer/m_drawer.animation.js ***! \****************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.animation = void 0; var _animation = __webpack_require__( /*! ../../../common/core/animation */ 16826); var _inflector = __webpack_require__( /*! ../../../core/utils/inflector */ 53124); exports.animation = { moveTo(config) { const { $element: $element } = config; const { position: position } = config; const direction = config.direction || "left"; const toConfig = {}; let animationType; switch (direction) { case "right": toConfig.transform = `translate(${position}px, 0px)`; animationType = "custom"; break; case "left": toConfig.left = position; animationType = "slide"; break; case "top": case "bottom": toConfig.top = position; animationType = "slide" } _animation.fx.animate($element, { type: animationType, to: toConfig, duration: config.duration, complete: config.complete }) }, margin(config) { const { $element: $element } = config; const { margin: margin } = config; const direction = config.direction || "left"; const toConfig = {}; toConfig[`margin${(0,_inflector.camelize)(direction,true)}`] = margin; _animation.fx.animate($element, { to: toConfig, duration: config.duration, complete: config.complete }) }, fade($element, config, duration, completeAction) { _animation.fx.animate($element, { type: "fade", to: config.to, from: config.from, duration: duration, complete: completeAction }) }, size(config) { const { $element: $element } = config; const { size: size } = config; const direction = config.direction || "left"; const marginTop = config.marginTop || 0; const { duration: duration } = config; const toConfig = {}; if ("right" === direction || "left" === direction) { toConfig.width = size } else { toConfig.height = size } if ("bottom" === direction) { toConfig.marginTop = marginTop } _animation.fx.animate($element, { to: toConfig, duration: duration, complete: config.complete }) }, complete($element) { _animation.fx.stop($element, true) } } }, 13768: /*!******************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/ui/drawer/m_drawer.js ***! \******************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _animation = __webpack_require__( /*! ../../../common/core/animation */ 16826); var _click = __webpack_require__( /*! ../../../common/core/events/click */ 64044); var _events_engine = _interopRequireDefault(__webpack_require__( /*! ../../../common/core/events/core/events_engine */ 92774)); var _visibility_change = __webpack_require__( /*! ../../../common/core/events/visibility_change */ 18029); var _component_registrator = _interopRequireDefault(__webpack_require__( /*! ../../../core/component_registrator */ 92848)); var _element = __webpack_require__( /*! ../../../core/element */ 61404); var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../../core/renderer */ 64553)); var _empty_template = __webpack_require__( /*! ../../../core/templates/empty_template */ 48650); var _deferred = __webpack_require__( /*! ../../../core/utils/deferred */ 87739); var _position = __webpack_require__( /*! ../../../core/utils/position */ 41639); var _type = __webpack_require__( /*! ../../../core/utils/type */ 11528); var _window = __webpack_require__( /*! ../../../core/utils/window */ 3104); var _widget = _interopRequireDefault(__webpack_require__( /*! ../../core/widget/widget */ 89275)); var _m_drawer = __webpack_require__( /*! ../../ui/drawer/m_drawer.animation */ 89500); var _m_drawerRenderingStrategy = _interopRequireDefault(__webpack_require__( /*! ../../ui/drawer/m_drawer.rendering.strategy.overlap */ 80222)); var _m_drawerRenderingStrategy2 = _interopRequireDefault(__webpack_require__( /*! ../../ui/drawer/m_drawer.rendering.strategy.push */ 35733)); var _m_drawerRenderingStrategy3 = _interopRequireDefault(__webpack_require__( /*! ../../ui/drawer/m_drawer.rendering.strategy.shrink */ 22168)); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } function _extends() { return _extends = Object.assign ? Object.assign.bind() : function(n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) { ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]) } } return n }, _extends.apply(null, arguments) } class Drawer extends _widget.default { _getDefaultOptions() { return _extends({}, super._getDefaultOptions(), { position: "left", opened: false, minSize: null, maxSize: null, shading: false, template: "panel", openedStateMode: "shrink", revealMode: "slide", animationEnabled: true, animationDuration: 400, closeOnOutsideClick: false, contentTemplate: "content" }) } _init() { super._init(); this._initStrategy(); this.$element().addClass("dx-drawer"); this._whenAnimationCompleted = void 0; this._whenPanelContentRendered = void 0; this._whenPanelContentRefreshed = void 0; this._$wrapper = (0, _renderer.default)("<div>").addClass("dx-drawer-wrapper"); this._$viewContentWrapper = (0, _renderer.default)("<div>").addClass("dx-drawer-content"); this._$wrapper.append(this._$viewContentWrapper); this.$element().append(this._$wrapper) } _initStrategy() { const { openedStateMode: openedStateMode } = this.option(); switch (openedStateMode) { case "push": default: this._strategy = new _m_drawerRenderingStrategy2.default(this); break; case "shrink": this._strategy = new _m_drawerRenderingStrategy3.default(this); break; case "overlap": this._strategy = new _m_drawerRenderingStrategy.default(this) } } _getAnonymousTemplateName() { return "content" } _initTemplates() { const defaultTemplates = {}; defaultTemplates.panel = new _empty_template.EmptyTemplate; defaultTemplates.content = new _empty_template.EmptyTemplate; this._templateManager.addDefaultTemplates(defaultTemplates); super._initTemplates() } _viewContentWrapperClickHandler(e) { let closeOnOutsideClick = this.option("closeOnOutsideClick"); if ((0, _type.isFunction)(closeOnOutsideClick)) { closeOnOutsideClick = closeOnOutsideClick(e) } if (closeOnOutsideClick && this.option("opened")) { this.stopAnimations(); if (this.option("shading")) { e.preventDefault() } this.hide() } } _initMarkup() { super._initMarkup(); const { opened: opened } = this.option(); this._toggleOpenedStateClass(opened); this._renderPanelContentWrapper(); this._refreshOpenedStateModeClass(); this._refreshRevealModeClass(); this._renderShader(); this._refreshPositionClass(); this._whenPanelContentRendered = (0, _deferred.Deferred)(); this._strategy.renderPanelContent(this._whenPanelContentRendered); this._strategy.onPanelContentRendered(); this._renderViewContent(); _events_engine.default.off(this._$viewContentWrapper, _click.name); _events_engine.default.on(this._$viewContentWrapper, _click.name, this._viewContentWrapperClickHandler.bind(this)); this._refreshWrapperChildrenOrder() } _render() { var _this$_whenPanelConte; this._initMinMaxSize(); super._render(); null === (_this$_whenPanelConte = this._whenPanelContentRendered) || void 0 === _this$_whenPanelConte || _this$_whenPanelConte.always((() => { this._initMinMaxSize(); const { revealMode: revealMode, opened: opened } = this.option(); this._strategy.refreshPanelElementSize("slide" === revealMode); this._renderPosition(opened, true); this._removePanelManualPosition() })) } _removePanelManualPosition() { if (this._$panelContentWrapper.attr("manualposition")) { this._$panelContentWrapper.removeAttr("manualPosition"); this._$panelContentWrapper.css({ position: "", top: "", left: "", right: "", bottom: "" }) } } _togglePanelContentHiddenClass() { const callback = () => { const { minSize: minSize, opened: opened } = this.option(); const shouldBeSet = minSize ? false : !opened; this._$panelContentWrapper.toggleClass("dx-drawer-panel-content-hidden", shouldBeSet) }; if (this._whenAnimationCompleted && !this.option("opened")) { (0, _deferred.when)(this._whenAnimationCompleted).done(callback) } else { callback() } } _renderPanelContentWrapper() { const { openedStateMode: openedStateMode, opened: opened, minSize: minSize } = this.option(); this._$panelContentWrapper = (0, _renderer.default)("<div>").addClass("dx-drawer-panel-content"); this._togglePanelContentHiddenClass(); const position = this.calcTargetPosition(); if ("push" === openedStateMode && ["top", "bottom"].includes(position)) { this._$panelContentWrapper.addClass("dx-drawer-panel-content-push-top-or-bottom") } if ("overlap" !== openedStateMode && !opened && !minSize) { this._$panelContentWrapper.attr("manualposition", true); this._$panelContentWrapper.css({ position: "absolute", top: "-10000px", left: "-10000px", right: "auto", bottom: "auto" }) } this._$wrapper.append(this._$panelContentWrapper) } _refreshOpenedStateModeClass(prevOpenedStateMode) { if (prevOpenedStateMode) { this.$element().removeClass(`dx-drawer-${prevOpenedStateMode}`) } const { openedStateMode: openedStateMode } = this.option(); this.$element().addClass(`dx-drawer-${openedStateMode}`) } _refreshPositionClass() { this.$element().removeClass(["left", "right", "top", "bottom"].map((position => `dx-drawer-${position}`)).join(" ")).addClass(`dx-drawer-${this.calcTargetPosition()}`) } _refreshWrapperChildrenOrder() { const position = this.calcTargetPosition(); if (this._strategy.isViewContentFirst(position, this.option("rtlEnabled"))) { this._$wrapper.prepend(this._$viewContentWrapper) } else { this._$wrapper.prepend(this._$panelContentWrapper) } } _refreshRevealModeClass(prevRevealMode) { if (prevRevealMode) { this.$element().removeClass(`dx-drawer-${prevRevealMode}`) } const { revealMode: revealMode } = this.option(); this.$element().addClass(`dx-drawer-${revealMode}`) } _renderViewContent() { const contentTemplateOption = this.option("contentTemplate"); const contentTemplate = this._getTemplate(contentTemplateOption); if (contentTemplate) { const $viewTemplate = contentTemplate.render({ container: this.viewContent(), noModel: true, transclude: this._templateManager.anonymousTemplateName === contentTemplateOption }); if ($viewTemplate.hasClass("ng-scope")) { (0, _renderer.default)(this._$viewContentWrapper).children().not(".dx-drawer-shader").replaceWith($viewTemplate) } } } _renderShader() { this._$shader = this._$shader || (0, _renderer.default)("<div>").addClass("dx-drawer-shader"); this._$shader.appendTo(this.viewContent()); const { opened: opened } = this.option(); this._toggleShaderVisibility(opened) } _initSize() { this._initMinMaxSize() } _initMinMaxSize() { const realPanelSize = this.isHorizontalDirection() ? this.getRealPanelWidth() : this.getRealPanelHeight(); const { maxSize: maxSize, minSize: minSize } = this.option(); this._maxSize = maxSize || realPanelSize; this._minSize = minSize || 0 } calcTargetPosition() { const { position: position, rtlEnabled: rtlEnabled } = this.option(); if ("before" === position) { return rtlEnabled ? "right" : "left" } if ("after" === position) { return rtlEnabled ? "left" : "right" } return position } getOverlayTarget() { return this._$wrapper } getOverlay() { return this._overlay } getMaxSize() { return this._maxSize } getMinSize() { return this._minSize } getRealPanelWidth() { if ((0, _window.hasWindow)()) { const { templateSize: templateSize } = this.option(); if ((0, _type.isDefined)(templateSize)) { return templateSize } return (0, _position.getBoundingRect)(this._getPanelTemplateElement()).width } return 0 } getRealPanelHeight() { if ((0, _window.hasWindow)()) { const { templateSize: templateSize } = this.option(); if ((0, _type.isDefined)(templateSize)) { return templateSize } return (0, _position.getBoundingRect)(this._getPanelTemplateElement()).height } return 0 } _getPanelTemplateElement() { const $panelContent = this._strategy.getPanelContent(); let $result = $panelContent; if ($panelContent.children().length) { $result = $panelContent.children().eq(0); if ($panelContent.hasClass("dx-overlay-content") && $result.hasClass("dx-template-wrapper") && $result.children().length) { $result = $result.children().eq(0) } } return $result.get(0) } getElementHeight($element) { const $children = $element.children(); return $children.length ? (0, _position.getBoundingRect)($children.eq(0).get(0)).height : (0, _position.getBoundingRect)($element.get(0)).height } isHorizontalDirection() { const position = this.calcTargetPosition(); return "left" === position || "right" === position } stopAnimations(jumpToEnd) { _animation.fx.stop(this._$shader, jumpToEnd); _animation.fx.stop((0, _renderer.default)(this.content()), jumpToEnd); _animation.fx.stop((0, _renderer.default)(this.viewContent()), jumpToEnd); const overlay = this.getOverlay(); if (overlay) { _animation.fx.stop((0, _renderer.default)(overlay.$content()), jumpToEnd) } } setZIndex(zIndex) { this._$shader.css("zIndex", zIndex - 1); this._$panelContentWrapper.css("zIndex", zIndex) } resizeContent() { this.resizeViewContent } resizeViewContent() { (0, _visibility_change.triggerResizeEvent)(this.viewContent()) } _isInvertedPosition() { const position = this.calcTargetPosition(); return "right" === position || "bottom" === position } _renderPosition(isDrawerOpened, disableAnimation, jumpToEnd) { this.stopAnimations(jumpToEnd); this._whenAnimationCompleted = (0, _deferred.Deferred)(); let { animationEnabled: animationEnabled } = this.option(); if (true === disableAnimation) { animationEnabled = false } if (!animationEnabled) { this._whenAnimationCompleted.resolve() } if (!(0, _window.hasWindow)()) { return }(0, _renderer.default)(this.viewContent()).css("paddingLeft", 0); (0, _renderer.default)(this.viewContent()).css("paddingRight", 0); (0, _renderer.default)(this.viewContent()).css("paddingTop", 0); (0, _renderer.default)(this.viewContent()).css("paddingBottom", 0); if (isDrawerOpened) { this._toggleShaderVisibility(isDrawerOpened) } this._strategy.renderPosition(animationEnabled, this.option("animationDuration")) } _animationCompleteHandler() { var _this$_whenAnimationC; this.resizeViewContent(); null === (_this$_whenAnimationC = this._whenAnimationCompleted) || void 0 === _this$_whenAnimationC || _this$_whenAnimationC.resolve() } _getPositionCorrection() { return this._isInvertedPosition() ? -1 : 1 } _dispose() { _m_drawer.animation.complete((0, _renderer.default)(this.viewContent())); super._dispose() } _visibilityChanged(visible) { if (visible) { this._dimensionChanged() } } _dimensionChanged() { this._initMinMaxSize(); const { revealMode: revealMode } = this.option(); this._strategy.refreshPanelElementSize("slide" === revealMode); this._renderPosition(this.option("opened"), true) } _toggleShaderVisibility(visible) { if (this.option("shading")) { this._$shader.toggleClass("dx-state-invisible", !visible); this._$shader.css("visibility", visible ? "visible" : "hidden") } else { this._$shader.toggleClass("dx-state-invisible", true) } } _toggleOpenedStateClass(opened) { this.$element().toggleClass("dx-drawer-opened", opened) } _refreshPanel() { (0, _renderer.default)(this.viewContent()).css("left", 0); (0, _renderer.default)(this.viewContent()).css("transform", "translate(0px, 0px)"); (0, _renderer.default)(this.viewContent()).removeClass("dx-theme-background-color"); this._removePanelContentWrapper(); this._removeOverlay(); this._renderPanelContentWrapper(); this._refreshWrapperChildrenOrder(); this._whenPanelContentRefreshed = (0, _deferred.Deferred)(); this._strategy.renderPanelContent(this._whenPanelContentRefreshed); this._strategy.onPanelContentRendered(); if ((0, _window.hasWindow)()) { this._whenPanelContentRefreshed.always((() => { const { revealMode: revealMode } = this.option(); this._strategy.refreshPanelElementSize("slide" === revealMode); this._renderPosition(this.option("opened"), true, true); this._removePanelManualPosition() })) } } _clean() { this._cleanFocusState(); this._removePanelContentWrapper(); this._removeOverlay() } _removePanelContentWrapper() { if (this._$panelContentWrapper) { this._$panelContentWrapper.remove() } } _removeOverlay() { if (this._overlay) { this._overlay.dispose(); delete this._overlay; delete this._$panelContentWrapper } } _optionChanged(args) { switch (args.name) { case "width": super._optionChanged(args); this._dimensionChanged(); break; case "opened": this._renderPosition(this.option("opened")); this._toggleOpenedStateClass(args.value); this._togglePanelContentHiddenClass(); break; case "position": this._refreshPositionClass(); this._refreshWrapperChildrenOrder(); this._invalidate(); break; case "contentTemplate": case "template": this._invalidate(); break; case "openedStateMode": this._initStrategy(); this._refreshOpenedStateModeClass(args.previousValue); this._refreshPanel(); break; case "minSize": this._initMinMaxSize(); this._renderPosition(this.option("opened"), true); this._togglePanelContentHiddenClass(); break; case "maxSize": this._initMinMaxSize(); this._renderPosition(this.option("opened"), true); break; case "revealMode": this._refreshRevealModeClass(args.previousValue); this._refreshPanel(); break; case "shading": { const { opened: opened } = this.option(); this._toggleShaderVisibility(opened); break } case "animationEnabled": case "animationDuration": case "closeOnOutsideClick": break; default: super._optionChanged(args) } } content() { return (0, _element.getPublicElement)(this._$panelContentWrapper) } viewContent() { return (0, _element.getPublicElement)(this._$viewContentWrapper) } show() { return this.toggle(true) } hide() { return this.toggle(false) } toggle(opened) { var _this$_whenAnimationC2; const targetOpened = void 0 === opened ? !this.option("opened") : opened; this.option("opened", targetOpened); return null === (_this$_whenAnimationC2 = this._whenAnimationCompleted) || void 0 === _this$_whenAnimationC2 ? void 0 : _this$_whenAnimationC2.promise() } }(0, _component_registrator.default)("dxDrawer", Drawer); exports.default = Drawer }, 43247: /*!*************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/ui/drawer/m_drawer.rendering.strategy.js ***! \*************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _renderer = (e = __webpack_require__( /*! ../../../core/renderer */ 64553), e && e.__esModule ? e : { default: e }); var e; var _deferred = __webpack_require__( /*! ../../../core/utils/deferred */ 87739); var _size = __webpack_require__( /*! ../../../core/utils/size */ 57653); var _m_drawer = __webpack_require__( /*! ./m_drawer.animation */ 89500); exports.default = class { constructor(drawer) { this._drawer = drawer } getDrawerInstance() { return this._drawer } renderPanelContent(whenPanelContentRendered) { const drawer = this.getDrawerInstance(); const template = drawer._getTemplate(drawer.option("template")); if (template) { template.render({ container: drawer.content(), onRendered: () => { whenPanelContentRendered.resolve() } }) } } renderPosition(changePositionUsingFxAnimation, animationDuration) { const whenPositionAnimationCompleted = (0, _deferred.Deferred)(); const whenShaderAnimationCompleted = (0, _deferred.Deferred)(); const drawer = this.getDrawerInstance(); if (changePositionUsingFxAnimation) { _deferred.when.apply(_renderer.default, [whenPositionAnimationCompleted, whenShaderAnimationCompleted]).done((() => { drawer._animationCompleteHandler() })) } this._internalRenderPosition(changePositionUsingFxAnimation, whenPositionAnimationCompleted); if (!changePositionUsingFxAnimation) { drawer.resizeViewContent() } this.renderShaderVisibility(changePositionUsingFxAnimation, animationDuration, whenShaderAnimationCompleted) } _getPanelOffset(isDrawerOpened) { const drawer = this.getDrawerInstance(); const size = drawer.isHorizontalDirection() ? drawer.getRealPanelWidth() : drawer.getRealPanelHeight(); if (isDrawerOpened) { return -(size - drawer.getMaxSize()) } return -(size - drawer.getMinSize()) } _getPanelSize(isDrawerOpened) { return isDrawerOpened ? this.getDrawerInstance().getMaxSize() : this.getDrawerInstance().getMinSize() } renderShaderVisibility(changePositionUsingFxAnimation, duration, whenAnimationCompleted) { const drawer = this.getDrawerInstance(); const isShaderVisible = drawer.option("opened"); const fadeConfig = isShaderVisible ? { from: 0, to: 1 } : { from: 1, to: 0 }; if (changePositionUsingFxAnimation) { _m_drawer.animation.fade((0, _renderer.default)(drawer._$shader), fadeConfig, duration, (() => { this._drawer._toggleShaderVisibility(isShaderVisible); whenAnimationCompleted.resolve() })) } else { drawer._toggleShaderVisibility(isShaderVisible); drawer._$shader.css("opacity", fadeConfig.to) } } getPanelContent() { return (0, _renderer.default)(this.getDrawerInstance().content()) } setPanelSize(calcFromRealPanelSize) { this.refreshPanelElementSize(calcFromRealPanelSize) } refreshPanelElementSize(calcFromRealPanelSize) { const drawer = this.getDrawerInstance(); const panelSize = this._getPanelSize(drawer.option("opened")); if (drawer.isHorizontalDirection()) { (0, _size.setWidth)((0, _renderer.default)(drawer.content()), calcFromRealPanelSize ? drawer.getRealPanelWidth() : panelSize) } else { (0, _size.setHeight)((0, _renderer.default)(drawer.content()), calcFromRealPanelSize ? drawer.getRealPanelHeight() : panelSize) } } isViewContentFirst() { return false } onPanelContentRendered() {} } }, 80222: /*!*********************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/ui/drawer/m_drawer.rendering.strategy.overlap.js ***! \*********************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _translator = __webpack_require__( /*! ../../../common/core/animation/translator */ 88603); var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../../core/renderer */ 64553)); var _common = __webpack_require__( /*! ../../../core/utils/common */ 17781); var _inflector = __webpack_require__( /*! ../../../core/utils/inflector */ 53124); var _size = __webpack_require__( /*! ../../../core/utils/size */ 57653); var _m_overlay = _interopRequireDefault(__webpack_require__( /*! ../../ui/overlay/m_overlay */ 68632)); var _m_drawer = __webpack_require__( /*! ./m_drawer.animation */ 89500); var _m_drawerRendering = _interopRequireDefault(__webpack_require__( /*! ./m_drawer.rendering.strategy */ 43247)); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } class OverlapStrategy extends _m_drawerRendering.default { renderPanelContent(whenPanelContentRendered) { delete this._initialPosition; const drawer = this.getDrawerInstance(); const { opened: opened, minSize: minSize } = drawer.option(); drawer._overlay = drawer._createComponent(drawer.content(), _m_overlay.default, { shading: false, container: drawer.content(), visualContainer: drawer.getOverlayTarget(), position: this._getOverlayPosition(), width: opened ? "auto" : minSize || 0, height: "100%", templatesRenderAsynchronously: drawer.option("templatesRenderAsynchronously"), animation: { show: { duration: 0 } }, onPositioned: function(e) { this._fixOverlayPosition(e.component.$content()) }.bind(this), contentTemplate: drawer.option("template"), onContentReady: args => { whenPanelContentRendered.resolve(); this._processOverlayZIndex(args.component.content()) }, visible: true, propagateOutsideClick: true }) } _fixOverlayPosition($overlayContent) { const position = (0, _common.ensureDefined)(this._initialPosition, { left: 0, top: 0 }); (0, _translator.move)($overlayContent, position); if ("right" === this.getDrawerInstance().calcTargetPosition()) { $overlayContent.css("left", "auto") } if ("bottom" === this.getDrawerInstance().calcTargetPosition()) { $overlayContent.css("top", "auto"); $overlayContent.css("bottom", "0px") } } _getOverlayPosition() { const drawer = this.getDrawerInstance(); const panelPosition = drawer.calcTargetPosition(); let result = {}; switch (panelPosition) { case "left": result = { my: "top left", at: "top left" }; break; case "right": result = { my: drawer.option("rtlEnabled") ? "top left" : "top right", at: "top right" }; break; case "top": case "bottom": result = { my: panelPosition, at: panelPosition } } result.of = drawer.getOverlayTarget(); return result } refreshPanelElementSize(calcFromRealPanelSize) { const drawer = this.getDrawerInstance(); const overlay = drawer.getOverlay(); if (drawer.isHorizontalDirection()) { overlay.option("height", "100%"); overlay.option("width", calcFromRealPanelSize ? drawer.getRealPanelWidth() : this._getPanelSize(drawer.option("opened"))) } else { overlay.option("width", (0, _size.getWidth)(drawer.getOverlayTarget())); overlay.option("height", calcFromRealPanelSize ? drawer.getRealPanelHeight() : this._getPanelSize(drawer.option("opened"))) } } onPanelContentRendered() { this._updateViewContentStyles() } _updateViewContentStyles() { const drawer = this.getDrawerInstance(); (0, _renderer.default)(drawer.viewContent()).css(`padding${(0,_inflector.camelize)(drawer.calcTargetPosition(),true)}`, drawer.option("minSize")); (0, _renderer.default)(drawer.viewContent()).css("transform", "inherit") } _internalRenderPosition(changePositionUsingFxAnimation, whenAnimationCompleted) { const drawer = this.getDrawerInstance(); const $panel = (0, _renderer.default)(drawer.content()); const $panelOverlayContent = drawer.getOverlay().$content(); const revealMode = drawer.option("revealMode"); const targetPanelPosition = drawer.calcTargetPosition(); const panelSize = this._getPanelSize(drawer.option("opened")); const panelOffset = this._getPanelOffset(drawer.option("opened")) * drawer._getPositionCorrection(); const marginTop = drawer.getRealPanelHeight() - panelSize; this._updateViewContentStyles(); if (changePositionUsingFxAnimation) { if ("slide" === revealMode) { this._initialPosition = drawer.isHorizontalDirection() ? { left: panelOffset } : { top: panelOffset }; _m_drawer.animation.moveTo({ complete: () => { whenAnimationCompleted.resolve() }, duration: drawer.option("animationDuration"), direction: targetPanelPosition, $element: $panel, position: panelOffset }) } else if ("expand" === revealMode) { this._initialPosition = drawer.isHorizontalDirection() ? { left: 0 } : { top: 0 }; (0, _translator.move)($panelOverlayContent, this._initialPosition); _m_drawer.animation.size({ complete: () => { whenAnimationCompleted.resolve() }, duration: drawer.option("animationDuration"), direction: targetPanelPosition, $element: $panelOverlayContent, size: panelSize, marginTop: marginTop }) } } else if ("slide" === revealMode) { this._initialPosition = drawer.isHorizontalDirection() ? { left: panelOffset } : { top: panelOffset }; (0, _translator.move)($panel, this._initialPosition) } else if ("expand" === revealMode) { this._initialPosition = drawer.isHorizontalDirection() ? { left: 0 } : { top: 0 }; (0, _translator.move)($panelOverlayContent, this._initialPosition); if (drawer.isHorizontalDirection()) { (0, _renderer.default)($panelOverlayContent).css("width", panelSize) } else { (0, _renderer.default)($panelOverlayContent).css("height", panelSize); if ("bottom" === targetPanelPosition) { (0, _renderer.default)($panelOverlayContent).css("marginTop", marginTop) } } } } getPanelContent() { return (0, _renderer.default)(this.getDrawerInstance().getOverlay().content()) } _processOverlayZIndex($element) { const styles = (0, _renderer.default)($element).get(0).style; const zIndex = styles.zIndex || 1; this.getDrawerInstance().setZIndex(zIndex) } isViewContentFirst(position) { return "right" === position || "bottom" === position } } exports.default = OverlapStrategy }, 35733: /*!******************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/ui/drawer/m_drawer.rendering.strategy.push.js ***! \******************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _translator = __webpack_require__( /*! ../../../common/core/animation/translator */ 88603); var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../../core/renderer */ 64553)); var _m_drawer = __webpack_require__( /*! ./m_drawer.animation */ 89500); var _m_drawerRendering = _interopRequireDefault(__webpack_require__( /*! ./m_drawer.rendering.strategy */ 43247)); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } class PushStrategy extends _m_drawerRendering.default { _internalRenderPosition(changePositionUsingFxAnimation, whenAnimationCompleted) { const drawer = this.getDrawerInstance(); const openedPanelSize = this._getPanelSize(true); const contentPosition = this._getPanelSize(drawer.option("opened")) * drawer._getPositionCorrection(); (0, _renderer.default)(drawer.content()).css(drawer.isHorizontalDirection() ? "width" : "height", openedPanelSize); if (drawer.getMinSize()) { let paddingCssPropertyName = "padding"; switch (drawer.calcTargetPosition()) { case "left": paddingCssPropertyName += "Right"; break; case "right": paddingCssPropertyName += "Left"; break; case "top": paddingCssPropertyName += "Bottom"; break; case "bottom": paddingCssPropertyName += "Top" }(0, _renderer.default)(drawer.viewContent()).css(paddingCssPropertyName, drawer.getMinSize()) } if (changePositionUsingFxAnimation) { _m_drawer.animation.moveTo({ $element: (0, _renderer.default)(drawer.viewContent()), position: contentPosition, direction: drawer.calcTargetPosition(), duration: drawer.option("animationDuration"), complete: () => { whenAnimationCompleted.resolve() } }) } else if (drawer.isHorizontalDirection()) { (0, _translator.move)((0, _renderer.default)(drawer.viewContent()), { left: contentPosition }) } else { (0, _translator.move)((0, _renderer.default)(drawer.viewContent()), { top: contentPosition }) } } onPanelContentRendered() { (0, _renderer.default)(this.getDrawerInstance().viewContent()).addClass("dx-theme-background-color") } } exports.default = PushStrategy }, 22168: /*!********************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/ui/drawer/m_drawer.rendering.strategy.shrink.js ***! \********************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../../core/renderer */ 64553)); var _inflector = __webpack_require__( /*! ../../../core/utils/inflector */ 53124); var _m_drawer = __webpack_require__( /*! ./m_drawer.animation */ 89500); var _m_drawerRendering = _interopRequireDefault(__webpack_require__( /*! ./m_drawer.rendering.strategy */ 43247)); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } class ShrinkStrategy extends _m_drawerRendering.default { _internalRenderPosition(changePositionUsingFxAnimation, whenAnimationCompleted) { const drawer = this.getDrawerInstance(); const direction = drawer.calcTargetPosition(); const $panel = (0, _renderer.default)(drawer.content()); const panelSize = this._getPanelSize(drawer.option("opened")); const panelOffset = this._getPanelOffset(drawer.option("opened")); const revealMode = drawer.option("revealMode"); if (changePositionUsingFxAnimation) { if ("slide" === revealMode) { _m_drawer.animation.margin({ complete: () => { whenAnimationCompleted.resolve() }, $element: $panel, duration: drawer.option("animationDuration"), direction: direction, margin: panelOffset }) } else if ("expand" === revealMode) { _m_drawer.animation.size({ complete: () => { whenAnimationCompleted.resolve() }, $element: $panel, duration: drawer.option("animationDuration"), direction: direction, size: panelSize }) } } else if ("slide" === revealMode) { $panel.css(`margin${(0,_inflector.camelize)(direction,true)}`, panelOffset) } else if ("expand" === revealMode) { $panel.css(drawer.isHorizontalDirection() ? "width" : "height", panelSize) } } isViewContentFirst(position, isRtl) { return (isRtl ? "left" === position : "right" === position) || "bottom" === position } } exports.default = ShrinkStrategy }, 96379: /*!**************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/ui/drop_down_editor/m_drop_down_button.js ***! \**************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _events_engine = _interopRequireDefault(__webpack_require__( /*! ../../../common/core/events/core/events_engine */ 92774)); var _message = _interopRequireDefault(__webpack_require__( /*! ../../../common/core/localization/message */ 4671)); var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../../core/renderer */ 64553)); var _extend = __webpack_require__( /*! ../../../core/utils/extend */ 52576); var _button = _interopRequireDefault(__webpack_require__( /*! ../../../ui/button */ 64973)); var _m_button = _interopRequireDefault(__webpack_require__( /*! ../text_box/texteditor_button_collection/m_button */ 88244)); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } class DropDownButton extends _m_button.default { constructor(name, editor, options) { super(name, editor, options); this.currentTemplate = null } _attachEvents(instance) { const { editor: editor } = this; instance.option("onClick", (e => { var _editor$_shouldCallOp; if (null !== (_editor$_shouldCallOp = editor._shouldCallOpenHandler) && void 0 !== _editor$_shouldCallOp && _editor$_shouldCallOp.call(editor)) { editor._openHandler(e); return }!editor.option("openOnFieldClick") && editor._openHandler(e) })); _events_engine.default.on(instance.$element(), "mousedown", (e => { if (editor.$element().is(".dx-state-focused")) { e.preventDefault() } })) } _create() { const { editor: editor } = this; const $element = (0, _renderer.default)("<div>"); const options = this._getOptions(); this._addToContainer($element); const instance = editor._createComponent($element, _button.default, (0, _extend.extend)({}, options, { elementAttr: { "aria-label": _message.default.format("dxDropDownEditor-selectLabel") } })); this._legacyRender(editor.$element(), $element, options.visible); return { $element: $element, instance: instance } } _getOptions() { const { editor: editor } = this; const visible = this._isVisible(); const isReadOnly = editor.option("readOnly"); const options = { focusStateEnabled: false, hoverStateEnabled: false, activeStateEnabled: false, useInkRipple: false, disabled: isReadOnly, visible: visible }; this._addTemplate(options); return options } _isVisible() { const { editor: editor } = this; return super._isVisible() && editor.option("showDropDownButton") } _legacyRender($editor, $element, isVisible) { $editor.toggleClass("dx-dropdowneditor-button-visible", isVisible); if ($element) { $element.removeClass("dx-button").removeClass("dx-button-mode-contained").addClass("dx-dropdowneditor-button") } } _isSameTemplate() { return this.editor.option("dropDownButtonTemplate") === this.currentTemplate } _addTemplate(options) { if (!this._isSameTemplate()) { options.template = this.editor._getTemplateByOption("dropDownButtonTemplate"); this.currentTemplate = this.editor.option("dropDownButtonTemplate") } } update() { const shouldUpdate = super.update(); if (shouldUpdate) { const { editor: editor, instance: instance } = this; const $editor = editor.$element(); const options = this._getOptions(); null === instance || void 0 === instance || instance.option(options); this._legacyRender($editor, null === instance || void 0 === instance ? void 0 : instance.$element(), options.visible) } } } exports.default = DropDownButton }, 28906: /*!**************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/ui/drop_down_editor/m_drop_down_editor.js ***! \**************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = exports.DROP_DOWN_EDITOR_CLASS = void 0; var _position = _interopRequireDefault(__webpack_require__( /*! ../../../common/core/animation/position */ 3030)); var _translator = __webpack_require__( /*! ../../../common/core/animation/translator */ 88603); var _click = __webpack_require__( /*! ../../../common/core/events/click */ 64044); var _events_engine = _interopRequireDefault(__webpack_require__( /*! ../../../common/core/events/core/events_engine */ 92774)); var _index = __webpack_require__( /*! ../../../common/core/events/utils/index */ 98834); var _message = _interopRequireDefault(__webpack_require__( /*! ../../../common/core/localization/message */ 4671)); var _component_registrator = _interopRequireDefault(__webpack_require__( /*! ../../../core/component_registrator */ 92848)); var _devices = _interopRequireDefault(__webpack_require__( /*! ../../../core/devices */ 65951)); var _element = __webpack_require__( /*! ../../../core/element */ 61404); var _guid = _interopRequireDefault(__webpack_require__( /*! ../../../core/guid */ 19427)); var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../../core/renderer */ 64553)); var _function_template = __webpack_require__( /*! ../../../core/templates/function_template */ 38699); var _browser = _interopRequireDefault(__webpack_require__( /*! ../../../core/utils/browser */ 48314)); var _common = __webpack_require__( /*! ../../../core/utils/common */ 17781); var _extend = __webpack_require__( /*! ../../../core/utils/extend */ 52576); var _iterator = __webpack_require__( /*! ../../../core/utils/iterator */ 21274); var _position2 = __webpack_require__( /*! ../../../core/utils/position */ 41639); var _type = __webpack_require__( /*! ../../../core/utils/type */ 11528); var _window = __webpack_require__( /*! ../../../core/utils/window */ 3104); var _ui = _interopRequireDefault(__webpack_require__( /*! ../../../ui/popup/ui.popup */ 10720)); var _selectors = __webpack_require__( /*! ../../../ui/widget/selectors */ 35944); var _ui2 = _interopRequireDefault(__webpack_require__( /*! ../../../ui/widget/ui.errors */ 35185)); var _ui3 = _interopRequireDefault(__webpack_require__( /*! ../../../ui/widget/ui.widget */ 11118)); var _m_text_box = _interopRequireDefault(__webpack_require__( /*! ../../ui/text_box/m_text_box */ 85968)); var _m_drop_down_button = _interopRequireDefault(__webpack_require__( /*! ./m_drop_down_button */ 96379)); var _m_utils = __webpack_require__( /*! ./m_utils */ 6807); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } function _extends() { return _extends = Object.assign ? Object.assign.bind() : function(n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) { ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]) } } return n }, _extends.apply(null, arguments) } const DROP_DOWN_EDITOR_CLASS = exports.DROP_DOWN_EDITOR_CLASS = "dx-dropdowneditor"; const isIOs = "ios" === _devices.default.current().platform; function createTemplateWrapperElement() { return (0, _renderer.default)("<div>").addClass("dx-dropdowneditor-field-template-wrapper") } class DropDownEditor extends _m_text_box.default { _supportedKeys() { return _extends({}, super._supportedKeys(), { tab: e => { if (!this.option("opened")) { return } if (!this._popup.getFocusableElements().length) { this.close(); return } const $focusableElement = e.shiftKey ? this._getLastPopupElement() : this._getFirstPopupElement(); if ($focusableElement) { _events_engine.default.trigger($focusableElement, "focus"); $focusableElement.select() } e.preventDefault() }, escape: e => { if (this.option("opened")) { e.preventDefault() } this.close(); return true }, upArrow: e => { if (!(0, _index.isCommandKeyPressed)(e)) { e.preventDefault(); e.stopPropagation(); if (e.altKey) { this.close(); return false } } return true }, downArrow: e => { if (!(0, _index.isCommandKeyPressed)(e)) { e.preventDefault(); e.stopPropagation(); if (e.altKey) { this._validatedOpening(); return false } } return true }, enter: e => { if (this.option("opened")) { e.preventDefault(); this._valueChangeEventHandler(e) } return true } }) } _getDefaultButtons() { return super._getDefaultButtons().concat([{ name: "dropDown", Ctor: _m_drop_down_button.default }]) } _getDefaultOptions() { return _extends({}, super._getDefaultOptions(), { value: null, onOpened: null, onClosed: null, opened: false, acceptCustomValue: true, applyValueMode: "instantly", deferRendering: true, activeStateEnabled: true, dropDownButtonTemplate: "dropDownButton", fieldTemplate: null, openOnFieldClick: false, showDropDownButton: true, buttons: void 0, dropDownOptions: { showTitle: false }, popupPosition: this._getDefaultPopupPosition(), onPopupInitialized: null, applyButtonText: _message.default.format("OK"), cancelButtonText: _message.default.format("Cancel"), buttonsLocation: "default", useHiddenSubmitElement: false, validationMessagePosition: "auto" }) } _useTemplates() { return true } _getDefaultPopupPosition(isRtlEnabled) { const position = (0, _position2.getDefaultAlignment)(isRtlEnabled); return { offset: { h: 0, v: -1 }, my: `${position} top`, at: `${position} bottom`, collision: "flip flip" } } _defaultOptionsRules() { return super._defaultOptionsRules().concat([{ device(device) { const isGeneric = "generic" === device.platform; return isGeneric }, options: { popupPosition: { offset: { v: 0 } } } }]) } _inputWrapper() { return this.$element().find(".dx-dropdowneditor-input-wrapper").first() } _init() { super._init(); this._initVisibilityActions(); this._initPopupInitializedAction(); const { rtlEnabled: rtlEnabled, dropDownOptions: dropDownOptions } = this.option(); this._updatePopupPosition(rtlEnabled); this._options.cache("dropDownOptions", dropDownOptions) } _updatePopupPosition(isRtlEnabled) { const { my: my, at: at } = this._getDefaultPopupPosition(isRtlEnabled); const currentPosition = this.option("popupPosition"); this.option("popupPosition", (0, _extend.extend)({}, currentPosition, { my: my, at: at })) } _initVisibilityActions() { this._openAction = this._createActionByOption("onOpened", { excludeValidators: ["disabled", "readOnly"] }); this._closeAction = this._createActionByOption("onClosed", { excludeValidators: ["disabled", "readOnly"] }) } _initPopupInitializedAction() { this._popupInitializedAction = this._createActionByOption("onPopupInitialized", { excludeValidators: ["disabled", "readOnly"] }) } _initMarkup() { this._renderSubmitElement(); super._initMarkup(); this.$element().addClass(DROP_DOWN_EDITOR_CLASS); this.setAria("role", this._getAriaRole()) } _render() { this._detachFocusEvents(); super._render(); this._renderOpenHandler(); this._attachFocusOutHandler(); this._renderOpenedState() } _renderContentImpl() { if (!this.option("deferRendering")) { this._createPopup() } } _renderInput() { super._renderInput(); this._renderTemplateWrapper(); this._wrapInput(); this._setDefaultAria() } _wrapInput() { this._$container = this.$element().wrapInner((0, _renderer.default)("<div>").addClass("dx-dropdowneditor-input-wrapper")).children().eq(0) } _getAriaHasPopup() { return "true" } _getAriaAutocomplete() { return "none" } _getAriaRole() { return "combobox" } _setDefaultAria() { this.setAria({ haspopup: this._getAriaHasPopup(), autocomplete: this._getAriaAutocomplete(), role: this._getAriaRole() }) } _readOnlyPropValue() { return !this._isEditable() || super._readOnlyPropValue() } _cleanFocusState() { super._cleanFocusState(); if (this.option("fieldTemplate")) { this._detachFocusEvents() } } _getFieldTemplate() { return this.option("fieldTemplate") && this._getTemplateByOption("fieldTemplate") } _renderMask() { if (this.option("fieldTemplate")) { return } super._renderMask() } _renderField() { const fieldTemplate = this._getFieldTemplate(); if (fieldTemplate) { this._renderTemplatedField(fieldTemplate, this._fieldRenderData()) } } _renderPlaceholder() { const hasFieldTemplate = !!this._getFieldTemplate(); if (!hasFieldTemplate) { super._renderPlaceholder() } } _renderValue() { if (this.option("useHiddenSubmitElement")) { this._setSubmitValue() } const promise = super._renderValue(); return promise.always(this._renderField.bind(this)) } _getButtonsContainer() { const fieldTemplate = this._getFieldTemplate(); return fieldTemplate ? this._$container : this._$textEditorContainer } _renderTemplateWrapper() { const fieldTemplate = this._getFieldTemplate(); if (!fieldTemplate) { return } if (!this._$templateWrapper) { this._$templateWrapper = createTemplateWrapperElement().prependTo(this.$element()) } } _renderTemplatedField(fieldTemplate, data) { const isFocused = (0, _selectors.focused)(this._input()); this._detachKeyboardEvents(); this._detachFocusEvents(); this._$textEditorContainer.remove(); const $newTemplateWrapper = createTemplateWrapperElement(); this._$templateWrapper.replaceWith($newTemplateWrapper); this._$templateWrapper = $newTemplateWrapper; const currentRenderContext = Symbol("renderContext"); this._activeRenderContext = currentRenderContext; fieldTemplate.render({ model: data, container: (0, _element.getPublicElement)(this._$templateWrapper), onRendered: () => { if (this._activeRenderContext !== currentRenderContext) { return } const $input = this._input(); if (!$input.length) { throw _ui2.default.Error("E1010") } this._integrateInput(); if (!isFocused) { return } if (_browser.default.mozilla) { const inputElement = $input.get(0); inputElement.focus({ preventScroll: true }) } else { _events_engine.default.trigger($input, "focus") } } }) } _integrateInput() { const { isValid: isValid } = this.option(); this._renderFocusState(); this._refreshValueChangeEvent(); this._refreshEvents(); this._refreshEmptinessEvent(); this._setDefaultAria(); this._setFieldAria(); this._toggleValidationClasses(!isValid); const { _onMarkupRendered: markupRendered } = this.option(); null === markupRendered || void 0 === markupRendered || markupRendered() } _refreshEmptinessEvent() { _events_engine.default.off(this._input(), "input blur", this._toggleEmptinessEventHandler); this._renderEmptinessEvent() } _fieldRenderData() { return this.option("value") } _initTemplates() { this._templateManager.addDefaultTemplates({ dropDownButton: new _function_template.FunctionTemplate((options => { const $icon = (0, _renderer.default)("<div>").addClass("dx-dropdowneditor-icon"); (0, _renderer.default)(options.container).append($icon) })) }); super._initTemplates() } _renderOpenHandler() { const $inputWrapper = this._inputWrapper(); const eventName = (0, _index.addNamespace)(_click.name, this.NAME); const { openOnFieldClick: openOnFieldClick } = this.option(); _events_engine.default.off($inputWrapper, eventName); _events_engine.default.on($inputWrapper, eventName, this._getInputClickHandler(openOnFieldClick)); this.$element().toggleClass("dx-dropdowneditor-field-clickable", openOnFieldClick); if (openOnFieldClick) { this._openOnFieldClickAction = this._createAction(this._openHandler.bind(this)) } } _attachFocusOutHandler() { if (isIOs) { this._detachFocusOutEvents(); _events_engine.default.on(this._inputWrapper(), (0, _index.addNamespace)("focusout", this.NAME), (event => { const newTarget = event.relatedTarget; if (newTarget && this.option("opened")) { const isNewTargetOutside = this._isTargetOutOfComponent(newTarget); if (isNewTargetOutside) { this.close() } } })) } } _isTargetOutOfComponent(newTarget) { const popupWrapper = this.content ? (0, _renderer.default)(this.content()).closest(".dx-dropdowneditor-overlay") : this._$popup; const isTargetOutsidePopup = 0 === (0, _renderer.default)(newTarget).closest(".dx-dropdowneditor-overlay", popupWrapper).length; return isTargetOutsidePopup } _detachFocusOutEvents() { isIOs && _events_engine.default.off(this._inputWrapper(), (0, _index.addNamespace)("focusout", this.NAME)) } _getInputClickHandler(openOnFieldClick) { return openOnFieldClick ? e => { this._executeOpenAction(e) } : () => { this._focusInput() } } _openHandler() { this._toggleOpenState() } _executeOpenAction(e) { var _this$_openOnFieldCli; null === (_this$_openOnFieldCli = this._openOnFieldClickAction) || void 0 === _this$_openOnFieldCli || _this$_openOnFieldCli.call(this, { event: e }) } _keyboardEventBindingTarget() { return this._input() } _focusInput() { if (this.option("disabled")) { return false } if (this.option("focusStateEnabled") && !(0, _selectors.focused)(this._input())) { this._resetCaretPosition(); _events_engine.default.trigger(this._input(), "focus") } return true } _resetCaretPosition() { let ignoreEditable = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : false; const inputElement = this._input().get(0); if (inputElement) { const { value: value } = inputElement; const caretPosition = (0, _type.isDefined)(value) && (ignoreEditable || this._isEditable()) ? value.length : 0; this._caret({ start: caretPosition, end: caretPosition }, true) } } _isEditable() { const { acceptCustomValue: acceptCustomValue } = this.option(); return acceptCustomValue } _toggleOpenState(isVisible) { if (!this._focusInput()) { return } if (!this.option("readOnly")) { isVisible = arguments.length ? isVisible : !this.option("opened"); this.option("opened", isVisible) } } _getControlsAria() { return this._popup && this._popupContentId } _renderOpenedState() { const opened = this.option("opened"); if (opened) { this._createPopup() } this.$element().toggleClass("dx-dropdowneditor-active", opened); this._setPopupOption("visible", opened); const arias = { expanded: opened, controls: this._getControlsAria() }; this.setAria(arias); this.setAria("owns", opened ? this._popupContentId : void 0, this.$element()) } _createPopup() { if (this._$popup) { return } this._$popup = (0, _renderer.default)("<div>").addClass("dx-dropdowneditor-overlay").appendTo(this.$element()); this._renderPopup(); this._renderPopupContent(); this._setPopupAriaLabel() } _setPopupAriaLabel() { const $overlayContent = this._popup.$overlayContent(); this.setAria("label", "Dropdown", $overlayContent) } _renderPopupContent() {} _renderPopup() { const popupConfig = (0, _extend.extend)(this._popupConfig(), this._options.cache("dropDownOptions")); this._popup = this._createComponent(this._$popup, _ui.default, popupConfig); this._popup.on({ showing: this._popupShowingHandler.bind(this), shown: this._popupShownHandler.bind(this), hiding: this._popupHidingHandler.bind(this), hidden: this._popupHiddenHandler.bind(this), contentReady: this._contentReadyHandler.bind(this) }); this._attachPopupKeyHandler(); this._contentReadyHandler(); this._setPopupContentId(this._popup.$content()); this._bindInnerWidgetOptions(this._popup, "dropDownOptions") } _attachPopupKeyHandler() { _events_engine.default.on(this._popup.$overlayContent(), (0, _index.addNamespace)("keydown", this.NAME), (e => this._popupKeyHandler(e))) } _popupKeyHandler(e) { switch ((0, _index.normalizeKeyName)(e)) { case "tab": this._popupTabHandler(e); break; case "escape": this._popupEscHandler() } } _popupTabHandler(e) { const $target = (0, _renderer.default)(e.target); const moveBackward = e.shiftKey && $target.is(this._getFirstPopupElement()); const moveForward = !e.shiftKey && $target.is(this._getLastPopupElement()); if (moveForward || moveBackward) { _events_engine.default.trigger(this.field(), "focus"); e.preventDefault() } } _popupEscHandler() { _events_engine.default.trigger(this._input(), "focus"); this.close() } _setPopupContentId($popupContent) { this._popupContentId = `dx-${new _guid.default}`; this.setAria("id", this._popupContentId, $popupContent) } _contentReadyHandler() {} _popupConfig() { return { onInitialized: this._getPopupInitializedHandler(), position: (0, _extend.extend)(this.option("popupPosition"), { of: this.$element() }), showTitle: this.option("dropDownOptions.showTitle"), _ignoreFunctionValueDeprecation: true, width: () => (0, _m_utils.getElementWidth)(this.$element()), height: "auto", shading: false, hideOnParentScroll: true, hideOnOutsideClick: e => this._closeOutsideDropDownHandler(e), animation: { show: { type: "fade", duration: 0, from: 0, to: 1 }, hide: { type: "fade", duration: 400, from: 1, to: 0 } }, deferRendering: false, focusStateEnabled: false, showCloseButton: false, dragEnabled: false, toolbarItems: this._getPopupToolbarItems(), onPositioned: this._popupPositionedHandler.bind(this), fullScreen: false, contentTemplate: null, _hideOnParentScrollTarget: this.$element(), _wrapperClassExternal: "dx-dropdowneditor-overlay", _ignorePreventScrollEventsDeprecation: true } } _popupInitializedHandler() {} _getPopupInitializedHandler() { const onPopupInitialized = this.option("onPopupInitialized"); return e => { this._popupInitializedHandler(); if (onPopupInitialized) { this._popupInitializedAction({ popup: e.component }) } } } _dimensionChanged() { if ((0, _window.hasWindow)() && !this.$element().is(":visible")) { this.close(); return } this._updatePopupWidth() } _updatePopupWidth() { const popupWidth = (0, _m_utils.getSizeValue)(this.option("dropDownOptions.width")); if (void 0 === popupWidth) { this._setPopupOption("width", (() => (0, _m_utils.getElementWidth)(this.$element()))) } } _popupPositionedHandler(e) { var _e$position; const { labelMode: labelMode, stylingMode: stylingMode } = this.option(); if (!this._popup) { return } const $popupOverlayContent = this._popup.$overlayContent(); const isOverlayFlipped = null === (_e$position = e.position) || void 0 === _e$position || null === (_e$position = _e$position.v) || void 0 === _e$position ? void 0 : _e$position.flip; const shouldIndentForLabel = "hidden" !== labelMode && "outside" !== labelMode && "outlined" === stylingMode; if (e.position) { $popupOverlayContent.toggleClass("dx-dropdowneditor-overlay-flipped", isOverlayFlipped) } if (isOverlayFlipped && shouldIndentForLabel && this._label.isVisible()) { const $label = this._label.$element(); (0, _translator.move)($popupOverlayContent, { top: (0, _translator.locate)($popupOverlayContent).top - parseInt($label.css("fontSize")) }) } } _popupShowingHandler() {} _popupHidingHandler() { this.option("opened", false) } _popupShownHandler() { var _this$_validationMess; this._openAction(); null === (_this$_validationMess = this._validationMessage) || void 0 === _this$_validationMess || _this$_validationMess.option("positionSide", this._getValidationMessagePositionSide()) } _popupHiddenHandler() { var _this$_validationMess2; this._closeAction(); null === (_this$_validationMess2 = this._validationMessage) || void 0 === _this$_validationMess2 || _this$_validationMess2.option("positionSide", this._getValidationMessagePositionSide()) } _getValidationMessagePositionSide() { var _this$_popup; const { validationMessagePosition: validationMessagePosition } = this.option(); if ("auto" !== validationMessagePosition) { return validationMessagePosition } let positionSide = "bottom"; if (null !== (_this$_popup = this._popup) && void 0 !== _this$_popup && _this$_popup.option("visible")) { const { top: myTop } = _position.default.setup(this.$element()); const { top: popupTop } = _position.default.setup(this._popup.$content()); positionSide = myTop + this.option("popupPosition").offset.v > popupTop ? "bottom" : "top" } return positionSide } _closeOutsideDropDownHandler(event) { const { target: target } = event; const $target = (0, _renderer.default)(target); const dropDownButton = this.getButton("dropDown"); const $dropDownButton = null === dropDownButton || void 0 === dropDownButton ? void 0 : dropDownButton.$element(); const isInputClicked = !!$target.closest(this.$element()).length; const isDropDownButtonClicked = !!$target.closest($dropDownButton).length; const isOutsideClick = !isInputClicked && !isDropDownButtonClicked; return isOutsideClick } _clean() { delete this._openOnFieldClickAction; delete this._$templateWrapper; if (this._$popup) { this._$popup.remove(); delete this._$popup; delete this._popup } super._clean() } _setPopupOption(optionName, value) { this._setWidgetOption("_popup", arguments) } _validatedOpening() { if (!this.option("readOnly")) { this._toggleOpenState(true) } } _getPopupToolbarItems() { const { applyValueMode: applyValueMode } = this.option(); return "useButtons" === applyValueMode ? this._popupToolbarItemsConfig() : [] } _getFirstPopupElement() { return (0, _renderer.default)(this._popup.getFocusableElements()).first() } _getLastPopupElement() { return (0, _renderer.default)(this._popup.getFocusableElements()).last() } _popupToolbarItemsConfig() { const buttonsConfig = [{ shortcut: "done", options: { onClick: this._applyButtonHandler.bind(this), text: this.option("applyButtonText") } }, { shortcut: "cancel", options: { onClick: this._cancelButtonHandler.bind(this), text: this.option("cancelButtonText") } }]; return this._applyButtonsLocation(buttonsConfig) } _applyButtonsLocation(buttonsConfig) { const { buttonsLocation: buttonsLocation } = this.option(); const resultConfig = buttonsConfig; if ("default" !== buttonsLocation) { const position = (0, _common.splitPair)(buttonsLocation); (0, _iterator.each)(resultConfig, ((_, element) => { (0, _extend.extend)(element, { toolbar: position[0], location: position[1] }) })) } return resultConfig } _applyButtonHandler(args) { this.close(); if (this.option("focusStateEnabled")) { this.focus() } } _cancelButtonHandler() { this.close(); if (this.option("focusStateEnabled")) { this.focus() } } _popupOptionChanged(args) { const options = _ui3.default.getOptionsFromContainer(args); this._setPopupOption(options); const optionsKeys = Object.keys(options); if (optionsKeys.includes("width") || optionsKeys.includes("height")) { this._dimensionChanged() } } _renderSubmitElement() { if (this.option("useHiddenSubmitElement")) { this._$submitElement = (0, _renderer.default)("<input>").attr("type", "hidden").appendTo(this.$element()) } } _setSubmitValue() { const { value: value } = this.option(); this._getSubmitElement().val(value) } _getSubmitElement() { if (this.option("useHiddenSubmitElement")) { return this._$submitElement } return super._getSubmitElement() } _dispose() { this._detachFocusOutEvents(); super._dispose() } _optionChanged(args) { var _this$_popup2; const { name: name, value: value } = args; switch (name) { case "width": case "height": super._optionChanged(args); null === (_this$_popup2 = this._popup) || void 0 === _this$_popup2 || _this$_popup2.repaint(); break; case "opened": this._renderOpenedState(); break; case "onOpened": case "onClosed": this._initVisibilityActions(); break; case "onPopupInitialized": this._initPopupInitializedAction(); break; case "fieldTemplate": case "acceptCustomValue": case "openOnFieldClick": this._invalidate(); break; case "dropDownButtonTemplate": case "showDropDownButton": this._updateButtons(["dropDown"]); break; case "dropDownOptions": { this._popupOptionChanged(args); const { dropDownOptions: dropDownOptions } = this.option(); this._options.cache("dropDownOptions", dropDownOptions); break } case "popupPosition": break; case "deferRendering": if ((0, _window.hasWindow)()) { this._createPopup() } break; case "applyValueMode": case "applyButtonText": case "cancelButtonText": case "buttonsLocation": this._setPopupOption("toolbarItems", this._getPopupToolbarItems()); break; case "useHiddenSubmitElement": if (this._$submitElement) { this._$submitElement.remove(); this._$submitElement = void 0 } this._renderSubmitElement(); break; case "rtlEnabled": this._updatePopupPosition(value); super._optionChanged(args); break; default: super._optionChanged(args) } } open() { this.option("opened", true) } close() { this.option("opened", false) } field() { return (0, _element.getPublicElement)(this._input()) } content() { return this._popup ? this._popup.content() : null } }(0, _component_registrator.default)("dxDropDownEditor", DropDownEditor); exports.default = DropDownEditor }, 20287: /*!************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/ui/drop_down_editor/m_drop_down_list.js ***! \************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _events_engine = _interopRequireDefault(__webpack_require__( /*! ../../../common/core/events/core/events_engine */ 92774)); var _index = __webpack_require__( /*! ../../../common/core/events/utils/index */ 98834); var _message = _interopRequireDefault(__webpack_require__( /*! ../../../common/core/localization/message */ 4671)); var _query = _interopRequireDefault(__webpack_require__( /*! ../../../common/data/query */ 30771)); var _component_registrator = _interopRequireDefault(__webpack_require__( /*! ../../../core/component_registrator */ 92848)); var _devices = _interopRequireDefault(__webpack_require__( /*! ../../../core/devices */ 65951)); var _guid = _interopRequireDefault(__webpack_require__( /*! ../../../core/guid */ 19427)); var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../../core/renderer */ 64553)); var _child_default_template = __webpack_require__( /*! ../../../core/templates/child_default_template */ 91585); var _common = __webpack_require__( /*! ../../../core/utils/common */ 17781); var _deferred = __webpack_require__( /*! ../../../core/utils/deferred */ 87739); var _extend = __webpack_require__( /*! ../../../core/utils/extend */ 52576); var _iterator = __webpack_require__( /*! ../../../core/utils/iterator */ 21274); var _size = __webpack_require__( /*! ../../../core/utils/size */ 57653); var _type = __webpack_require__( /*! ../../../core/utils/type */ 11528); var _window = __webpack_require__( /*! ../../../core/utils/window */ 3104); var _ui = _interopRequireDefault(__webpack_require__( /*! ../../../ui/editor/ui.data_expression */ 7632)); var _list_light = _interopRequireDefault(__webpack_require__( /*! ../../../ui/list_light */ 80070)); var _ui2 = _interopRequireDefault(__webpack_require__( /*! ../../../ui/widget/ui.errors */ 35185)); var _m_drop_down_editor = _interopRequireDefault(__webpack_require__( /*! ../../ui/drop_down_editor/m_drop_down_editor */ 28906)); var _m_grouped_data_converter_mixin = _interopRequireDefault(__webpack_require__( /*! ../../ui/shared/m_grouped_data_converter_mixin */ 59803)); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } function _extends() { return _extends = Object.assign ? Object.assign.bind() : function(n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) { ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]) } } return n }, _extends.apply(null, arguments) } const window = (0, _window.getWindow)(); const SEARCH_MODES = ["startswith", "contains", "endwith", "notcontains"]; const useCompositionEvents = "android" !== _devices.default.real().platform; class DropDownList extends _m_drop_down_editor.default { _supportedKeys() { const parentSupportedKeys = super._supportedKeys(); return _extends({}, parentSupportedKeys, { tab(e) { if (this._allowSelectItemByTab()) { this._saveValueChangeEvent(e); const $focusedItem = (0, _renderer.default)(this._list.option("focusedElement")); $focusedItem.length && this._setSelectedElement($focusedItem) } parentSupportedKeys.tab(e) }, space: _common.noop, home: _common.noop, end: _common.noop }) } _allowSelectItemByTab() { const { opened: opened, applyValueMode: applyValueMode } = this.option(); return opened && "instantly" === applyValueMode } _setSelectedElement($element) { const value = this._valueGetter(this._list._getItemData($element)); this._setValue(value) } _setValue(value) { this.option("value", value) } _getDefaultOptions() { return _extends({}, super._getDefaultOptions(), _ui.default._dataExpressionDefaultOptions(), { displayValue: void 0, searchEnabled: false, searchMode: "contains", searchTimeout: 500, minSearchLength: 0, searchExpr: null, valueChangeEvent: "input change keyup", selectedItem: null, noDataText: _message.default.format("dxCollectionWidget-noDataText"), encodeNoDataText: false, onSelectionChanged: null, onItemClick: _common.noop, showDataBeforeSearch: false, grouped: false, groupTemplate: "group", popupPosition: { my: "left top", at: "left bottom", offset: { h: 0, v: 0 }, collision: "flip" }, wrapItemText: false, useItemTextAsTitle: false }) } _defaultOptionsRules() { return super._defaultOptionsRules().concat([{ device: { platform: "ios" }, options: { popupPosition: { offset: { v: -1 } } } }, { device: { platform: "generic" }, options: { buttonsLocation: "bottom center" } }]) } _setOptionsByReference() { super._setOptionsByReference(); (0, _extend.extend)(this._optionsByReference, { value: true, selectedItem: true, displayValue: true }) } _init() { super._init(); this._initDataExpressions(); this._initActions(); this._setListDataSource(); this._validateSearchMode(); this._clearSelectedItem(); this._initItems() } _setListFocusedElementOptionChange() { this._list._updateParentActiveDescendant = this._updateActiveDescendant.bind(this) } _initItems() { const { items: items } = this.option(); if (items && !items.length && this._dataSource) { this.option().items = this._dataSource.items() } } _initActions() { this._initContentReadyAction(); this._initSelectionChangedAction(); this._initItemClickAction() } _initContentReadyAction() { this._contentReadyAction = this._createActionByOption("onContentReady", { excludeValidators: ["disabled", "readOnly"] }) } _initSelectionChangedAction() { this._selectionChangedAction = this._createActionByOption("onSelectionChanged", { excludeValidators: ["disabled", "readOnly"] }) } _initItemClickAction() { this._itemClickAction = this._createActionByOption("onItemClick") } _initTemplates() { super._initTemplates(); this._templateManager.addDefaultTemplates({ item: new _child_default_template.ChildDefaultTemplate("item") }) } _isEditable() { const { searchEnabled: searchEnabled } = this.option(); return super._isEditable() || searchEnabled } _saveFocusOnWidget() { var _this$_list; if (null !== (_this$_list = this._list) && void 0 !== _this$_list && _this$_list.initialOption("focusStateEnabled")) { this._focusInput() } } _fitIntoRange(value, start, end) { if (value > end) { return start } if (value < start) { return end } return value } _items() { const items = this._getPlainItems(!this._list && this._dataSource.items()); const availableItems = new _query.default(items).filter("disabled", "<>", true).toArray(); return availableItems } _calcNextItem(step) { const items = this._items(); const nextIndex = this._fitIntoRange(this._getSelectedIndex() + step, 0, items.length - 1); return items[nextIndex] } _getSelectedIndex() { const items = this._items(); const selectedItem = this.option("selectedItem"); let result = -1; (0, _iterator.each)(items, ((index, item) => { if (this._isValueEquals(item, selectedItem)) { result = index; return false } })); return result } _createPopup() { super._createPopup(); this._updateCustomBoundaryContainer(); this._popup.$wrapper().addClass(this._popupWrapperClass()); const $popupContent = this._popup.$content(); _events_engine.default.off($popupContent, "mouseup"); _events_engine.default.on($popupContent, "mouseup", this._saveFocusOnWidget.bind(this)) } _updateCustomBoundaryContainer() { const customContainer = this.option("dropDownOptions.container"); const $container = customContainer && (0, _renderer.default)(customContainer); if ($container && $container.length && !(0, _type.isWindow)($container.get(0))) { const $containerWithParents = [].slice.call($container.parents()); $containerWithParents.unshift($container.get(0)); (0, _iterator.each)($containerWithParents, ((i, parent) => { if (parent === (0, _renderer.default)("body").get(0)) { return false } if ("hidden" === window.getComputedStyle(parent).overflowY) { this._$customBoundaryContainer = (0, _renderer.default)(parent); return false } })) } } _popupWrapperClass() { return "dx-dropdownlist-popup-wrapper" } _renderInputValue() { var _this = this; let { value: value, renderOnly: renderOnly } = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {}; const currentValue = value ?? this._getCurrentValue(); this._rejectValueLoading(); if (renderOnly) { return super._renderInputValue(currentValue) } return this._loadInputValue(currentValue, (function() { _this._setSelectedItem(...arguments) })).always(super._renderInputValue.bind(this, currentValue)) } _loadInputValue(value, callback) { return this._loadItem(value).always(callback) } _getItemFromPlain(value, cache) { let plainItems; let selectedItem; if (cache && "object" !== typeof value) { if (!cache.itemByValue) { cache.itemByValue = {}; plainItems = this._getPlainItems(); plainItems.forEach((function(item) { cache.itemByValue[this._valueGetter(item)] = item }), this) } selectedItem = cache.itemByValue[value] } if (!selectedItem) { plainItems = this._getPlainItems(); selectedItem = (0, _common.grep)(plainItems, (item => this._isValueEquals(this._valueGetter(item), value)))[0] } return selectedItem } _resetInputText() { this._renderInputValue({ renderOnly: true }) } _loadItem(value, cache) { const selectedItem = this._getItemFromPlain(value, cache); return void 0 !== selectedItem ? (0, _deferred.Deferred)().resolve(selectedItem).promise() : this._loadValue(value) } _getPlainItems(items) { let plainItems = []; const grouped = this._getGroupedOption(); items = items || this.option("items") || this._dataSource.items() || []; for (let i = 0; i < items.length; i++) { var _items$i; if (grouped && null !== (_items$i = items[i]) && void 0 !== _items$i && _items$i.items) { plainItems = plainItems.concat(items[i].items) } else { plainItems.push(items[i]) } } return plainItems } _updateActiveDescendant($target) { var _this$_list2; const opened = this.option("opened"); const listFocusedItemId = null === (_this$_list2 = this._list) || void 0 === _this$_list2 ? void 0 : _this$_list2.getFocusedItemId(); const isElementOnDom = (0, _renderer.default)(`#${listFocusedItemId}`).length > 0; const activedescendant = opened && isElementOnDom && listFocusedItemId; this.setAria({ activedescendant: activedescendant || null }, $target) } _setSelectedItem(item) { const displayValue = this._displayValue(item); this.option("selectedItem", (0, _common.ensureDefined)(item, null)); this.option("displayValue", displayValue) } _displayValue(item) { return this._displayGetter(item) } _refreshSelected() { const cache = {}; this._listItemElements().each(((_, itemElement) => { const $itemElement = (0, _renderer.default)(itemElement); const itemValue = this._valueGetter($itemElement.data("dxListItemData")); const isItemSelected = this._isSelectedValue(itemValue, cache); if (isItemSelected) { this._list.selectItem($itemElement) } else { this._list.unselectItem($itemElement) } })) } _popupShownHandler() { super._popupShownHandler(); this._setFocusPolicy() } _setFocusPolicy() { if (!this.option("focusStateEnabled") || !this._list) { return } this._list.option("focusedElement", null) } _isSelectedValue(value, cache) { return this._isValueEquals(value, this.option("value")) } _validateSearchMode() { const searchMode = this.option("searchMode"); const normalizedSearchMode = searchMode.toLowerCase(); if (!SEARCH_MODES.includes(normalizedSearchMode)) { throw _ui2.default.Error("E1019", searchMode) } } _clearSelectedItem() { this.option("selectedItem", null) } _processDataSourceChanging() { this._initDataController(); this._setListOption("_dataController", this._dataController); this._setListDataSource(); this._renderInputValue().fail((() => { if (this._isCustomValueAllowed()) { return } this._clearSelectedItem() })) } _isCustomValueAllowed() { return this.option("displayCustomValue") } clear() { super.clear(); this._clearFilter(); this._clearSelectedItem() } _listItemElements() { return this._$list ? this._$list.find(".dx-list-item") : (0, _renderer.default)() } _popupConfig() { return _extends({}, super._popupConfig(), { templatesRenderAsynchronously: false, autoResizeEnabled: false, maxHeight: this._getMaxHeight.bind(this) }) } _renderPopupContent() { super._renderPopupContent(); this._renderList() } _getKeyboardListeners() { const canListHaveFocus = this._canListHaveFocus(); return super._getKeyboardListeners().concat([!canListHaveFocus && this._list]) } _renderList() { this._listId = `dx-${(new _guid.default)._value}`; const $list = (0, _renderer.default)("<div>").attr("id", this._listId).appendTo(this._popup.$content()); this._$list = $list; this._list = this._createComponent($list, _list_light.default, this._listConfig()); this._refreshList(); this._renderPreventBlurOnListClick(); this._setListFocusedElementOptionChange() } _renderPreventBlurOnListClick() { const eventName = (0, _index.addNamespace)("mousedown", "dxDropDownList"); _events_engine.default.off(this._$list, eventName); _events_engine.default.on(this._$list, eventName, (e => e.preventDefault())) } _getControlsAria() { return this._list && this._listId } _renderOpenedState() { super._renderOpenedState(); this._list && this._updateActiveDescendant(); this.setAria("owns", this._popup && this._popupContentId) } _getAriaHasPopup() { return "listbox" } _refreshList() { if (this._list && this._shouldRefreshDataSource()) { this._setListDataSource() } } _shouldRefreshDataSource() { const dataSourceProvided = !!this._list.option("dataSource"); return dataSourceProvided !== this._needPassDataSourceToList() } _isDesktopDevice() { return "desktop" === _devices.default.real().deviceType } _listConfig() { const options = { selectionMode: "single", _templates: this.option("_templates"), templateProvider: this.option("templateProvider"), noDataText: this.option("noDataText"), encodeNoDataText: this.option("encodeNoDataText"), grouped: this.option("grouped"), wrapItemText: this.option("wrapItemText"), useItemTextAsTitle: this.option("useItemTextAsTitle"), onContentReady: this._listContentReadyHandler.bind(this), itemTemplate: this.option("itemTemplate"), indicateLoading: false, keyExpr: this._getCollectionKeyExpr(), displayExpr: this._displayGetterExpr(), groupTemplate: this.option("groupTemplate"), onItemClick: this._listItemClickAction.bind(this), dataSource: this._getDataSource(), _dataController: this._dataController, hoverStateEnabled: this._isDesktopDevice() ? this.option("hoverStateEnabled") : false, focusStateEnabled: this._isDesktopDevice() ? this.option("focusStateEnabled") : false, _onItemsRendered: () => { this._popup.repaint() } }; if (!this._canListHaveFocus()) { options.tabIndex = null } return options } _canListHaveFocus() { return false } _getDataSource() { return this._needPassDataSourceToList() ? this._dataSource : null } _dataSourceOptions() { return { paginate: false } } _getGroupedOption() { return this.option("grouped") } _dataSourceFromUrlLoadMode() { return "raw" } _listContentReadyHandler() { this._list = this._list || this._$list.dxList("instance"); if (!this.option("deferRendering")) { this._refreshSelected() } this._updatePopupWidth(); this._updateListDimensions(); this._contentReadyAction() } _setListOption(optionName, value) { this._setWidgetOption("_list", arguments) } _listItemClickAction(e) { this._listItemClickHandler(e); this._itemClickAction(e) } _listItemClickHandler(e) {} _setListDataSource() { if (!this._list) { return } this._setListOption("dataSource", this._getDataSource()); if (!this._needPassDataSourceToList()) { this._setListOption("items", []) } } _needPassDataSourceToList() { const { showDataBeforeSearch: showDataBeforeSearch } = this.option(); return showDataBeforeSearch || this._isMinSearchLengthExceeded() } _isMinSearchLengthExceeded() { return this._searchValue().toString().length >= this.option("minSearchLength") } _needClearFilter() { return this._canKeepDataSource() ? false : this._needPassDataSourceToList() } _canKeepDataSource() { const isMinSearchLengthExceeded = this._isMinSearchLengthExceeded(); return this._dataController.isLoaded() && this.option("showDataBeforeSearch") && this.option("minSearchLength") && !isMinSearchLengthExceeded && !this._isLastMinSearchLengthExceeded } _searchValue() { return this._input().val() || "" } _getSearchEvent() { return (0, _index.addNamespace)("input", `${this.NAME}Search`) } _getCompositionStartEvent() { return (0, _index.addNamespace)("compositionstart", `${this.NAME}CompositionStart`) } _getCompositionEndEvent() { return (0, _index.addNamespace)("compositionend", `${this.NAME}CompositionEnd`) } _getSetFocusPolicyEvent() { return (0, _index.addNamespace)("input", `${this.NAME}FocusPolicy`) } _renderEvents() { super._renderEvents(); _events_engine.default.on(this._input(), this._getSetFocusPolicyEvent(), (() => { this._setFocusPolicy() })); if (this._shouldRenderSearchEvent()) { _events_engine.default.on(this._input(), this._getSearchEvent(), (e => { this._searchHandler(e) })); if (useCompositionEvents) { _events_engine.default.on(this._input(), this._getCompositionStartEvent(), (() => { this._isTextCompositionInProgress(true) })); _events_engine.default.on(this._input(), this._getCompositionEndEvent(), (e => { this._isTextCompositionInProgress(void 0); this._searchHandler(e, this._searchValue()) })) } } } _shouldRenderSearchEvent() { return this.option("searchEnabled") } _refreshEvents() { _events_engine.default.off(this._input(), this._getSearchEvent()); _events_engine.default.off(this._input(), this._getSetFocusPolicyEvent()); if (useCompositionEvents) { _events_engine.default.off(this._input(), this._getCompositionStartEvent()); _events_engine.default.off(this._input(), this._getCompositionEndEvent()) } super._refreshEvents() } _isTextCompositionInProgress(value) { if (arguments.length) { this._isTextComposition = value } else { return this._isTextComposition } } _searchHandler(e, searchValue) { if (this._isTextCompositionInProgress()) { return } if (!this._isMinSearchLengthExceeded()) { this._searchCanceled(); return } const { searchTimeout: searchTimeout } = this.option(); if (searchTimeout) { this._clearSearchTimer(); this._searchTimer = setTimeout((() => { this._searchDataSource(searchValue) }), searchTimeout) } else { this._searchDataSource(searchValue) } } _searchCanceled() { this._clearSearchTimer(); if (this._needClearFilter()) { this._filterDataSource(null) } this._refreshList() } _searchDataSource() { let searchValue = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : this._searchValue(); this._filterDataSource(searchValue) } _filterDataSource(searchValue) { this._clearSearchTimer(); const dataController = this._dataController; dataController.searchExpr(this.option("searchExpr") || this._displayGetterExpr()); dataController.searchOperation(this.option("searchMode")); dataController.searchValue(searchValue); dataController.load().done(this._dataSourceFiltered.bind(this, searchValue)) } _clearFilter() { const dataController = this._dataController; dataController.searchValue() && dataController.searchValue(null) } _dataSourceFiltered(searchValue) { this._isLastMinSearchLengthExceeded = this._isMinSearchLengthExceeded(); this._refreshList(); this._refreshPopupVisibility() } _shouldOpenPopup() { return this._hasItemsToShow() } _refreshPopupVisibility() { if (this.option("readOnly") || !this._searchValue()) { return } const shouldOpenPopup = this._shouldOpenPopup(); if (shouldOpenPopup && !this._isFocused()) { return } this.option("opened", shouldOpenPopup); if (shouldOpenPopup) { this._updatePopupWidth(); this._updateListDimensions() } } _dataSourceChangedHandler(newItems) { if (0 === this._dataController.pageIndex()) { this.option().items = newItems } else { this.option().items = this.option().items.concat(newItems) } } _hasItemsToShow() { const dataController = this._dataController; const resultItems = dataController.items() || []; const resultAmount = resultItems.length; const isMinSearchLengthExceeded = this._needPassDataSourceToList(); return !!(isMinSearchLengthExceeded && resultAmount) } _clearSearchTimer() { clearTimeout(this._searchTimer); delete this._searchTimer } _popupShowingHandler() { this._updatePopupWidth(); this._updateListDimensions() } _dimensionChanged() { super._dimensionChanged(); this._updateListDimensions() } _needPopupRepaint() { const dataController = this._dataController; const currentPageIndex = dataController.pageIndex(); const needRepaint = (0, _type.isDefined)(this._pageIndex) && currentPageIndex <= this._pageIndex || dataController.isLastPage() && !this._list._scrollViewIsFull(); this._pageIndex = currentPageIndex; return needRepaint } _updateListDimensions() { if (!this._popup) { return } if (this._needPopupRepaint()) { this._popup.repaint() } if (this._list) { this._list.updateDimensions() } } _getMaxHeight() { const $element = this.$element(); const $customBoundaryContainer = this._$customBoundaryContainer; const offsetTop = $element.offset().top - ($customBoundaryContainer ? $customBoundaryContainer.offset().top : 0); const windowHeight = (0, _size.getOuterHeight)(window); const containerHeight = $customBoundaryContainer ? Math.min((0, _size.getOuterHeight)($customBoundaryContainer), windowHeight) : windowHeight; const maxHeight = Math.max(offsetTop, containerHeight - offsetTop - (0, _size.getOuterHeight)($element)); return Math.min(.5 * containerHeight, maxHeight) } _clean() { if (this._list) { delete this._list } delete this._isLastMinSearchLengthExceeded; super._clean() } _dispose() { this._clearSearchTimer(); super._dispose() } _setCollectionWidgetOption() { this._setListOption.apply(this, arguments) } _setSubmitValue() { const value = this.option("value"); const submitValue = this._shouldUseDisplayValue(value) ? this._displayGetter(value) : value; this._getSubmitElement().val(submitValue) } _shouldUseDisplayValue(value) { return "this" === this.option("valueExpr") && (0, _type.isObject)(value) } _optionChanged(args) { this._dataExpressionOptionChanged(args); switch (args.name) { case "hoverStateEnabled": case "focusStateEnabled": this._isDesktopDevice() && this._setListOption(args.name, args.value); super._optionChanged(args); break; case "items": if (!this.option("dataSource")) { this._processDataSourceChanging() } break; case "dataSource": this._processDataSourceChanging(); break; case "valueExpr": this._renderValue(); this._setListOption("keyExpr", this._getCollectionKeyExpr()); break; case "displayExpr": this._renderValue(); this._setListOption("displayExpr", this._displayGetterExpr()); break; case "searchMode": this._validateSearchMode(); break; case "minSearchLength": this._refreshList(); break; case "searchEnabled": case "showDataBeforeSearch": case "searchExpr": this._invalidate(); break; case "onContentReady": this._initContentReadyAction(); break; case "onSelectionChanged": this._initSelectionChangedAction(); break; case "onItemClick": this._initItemClickAction(); break; case "grouped": case "groupTemplate": case "wrapItemText": case "noDataText": case "encodeNoDataText": case "useItemTextAsTitle": this._setListOption(args.name); break; case "displayValue": this.option("text", args.value); break; case "itemTemplate": case "searchTimeout": break; case "selectedItem": if (args.previousValue !== args.value) { this._selectionChangedAction({ selectedItem: args.value }) } break; default: super._optionChanged(args) } } } DropDownList.include(_ui.default, _m_grouped_data_converter_mixin.default); (0, _component_registrator.default)("dxDropDownList", DropDownList); exports.default = DropDownList }, 6807: /*!***************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/ui/drop_down_editor/m_utils.js ***! \***************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.getSizeValue = exports.getElementWidth = void 0; var _size = __webpack_require__( /*! ../../../core/utils/size */ 57653); var _window = __webpack_require__( /*! ../../../core/utils/window */ 3104); exports.getElementWidth = function($element) { if ((0, _window.hasWindow)()) { return (0, _size.getOuterWidth)($element) } }; exports.getSizeValue = function(size) { if (null === size) { size = void 0 } if ("function" === typeof size) { size = size() } return size } }, 24768: /*!****************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/ui/editor/editor.js ***! \****************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _events_engine = _interopRequireDefault(__webpack_require__( /*! ../../../common/core/events/core/events_engine */ 92774)); var _index = __webpack_require__( /*! ../../../common/core/events/utils/index */ 98834); var _element_data = __webpack_require__( /*! ../../../core/element_data */ 74663); var _guid = _interopRequireDefault(__webpack_require__( /*! ../../../core/guid */ 19427)); var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../../core/renderer */ 64553)); var _callbacks = _interopRequireDefault(__webpack_require__( /*! ../../../core/utils/callbacks */ 84718)); var _extend = __webpack_require__( /*! ../../../core/utils/extend */ 52576); var _window = __webpack_require__( /*! ../../../core/utils/window */ 3104); var _validation_engine = _interopRequireDefault(__webpack_require__( /*! ../../../ui/validation_engine */ 19391)); var _validation_message = _interopRequireDefault(__webpack_require__( /*! ../../../ui/validation_message */ 59098)); var _widget = _interopRequireDefault(__webpack_require__( /*! ../../core/widget/widget */ 89275)); var _m_dom = _interopRequireDefault(__webpack_require__( /*! ../../core/utils/m_dom */ 76400)); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } function _extends() { return _extends = Object.assign ? Object.assign.bind() : function(n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) { ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]) } } return n }, _extends.apply(null, arguments) } const ALLOWED_STYLING_MODES = ["outlined", "filled", "underlined"]; const VALIDATION_MESSAGE_KEYS_MAP = { validationMessageMode: "mode", validationMessagePosition: "positionSide", validationMessageOffset: "offset", validationBoundary: "boundary" }; class Editor extends _widget.default { ctor(element, options) { this.showValidationMessageTimeout = void 0; this.validationRequest = (0, _callbacks.default)(); super.ctor(element, options) } _createElement(element) { super._createElement(element); const $element = this.$element(); if ($element) { (0, _element_data.data)($element[0], "dx-validation-target", this) } } _initOptions(options) { super._initOptions(options); this.option(_validation_engine.default.initValidationOptions(options)) } _init() { this._initialValue = this.option("value"); super._init(); const { validationTooltipOptions: validationTooltipOptions } = this.option(); this._options.cache("validationTooltipOptions", validationTooltipOptions); const $element = this.$element(); $element.addClass("dx-show-invalid-badge") } _getDefaultOptions() { return _extends({}, super._getDefaultOptions(), { value: null, name: "", onValueChanged: null, readOnly: false, isValid: true, validationError: null, validationErrors: null, validationStatus: "valid", validationMessageMode: "auto", validationMessagePosition: "bottom", validationBoundary: void 0, validationMessageOffset: { h: 0, v: 0 }, validationTooltipOptions: {}, _showValidationMessage: true, isDirty: false }) } _shouldAttachKeyboardEvents() { const { readOnly: readOnly } = this.option(); return !readOnly } _attachKeyboardEvents() { if (this._shouldAttachKeyboardEvents()) { super._attachKeyboardEvents() } } _setOptionsByReference() { super._setOptionsByReference(); (0, _extend.extend)(this._optionsByReference, { validationError: true }) } _createValueChangeAction() { this._valueChangeAction = this._createActionByOption("onValueChanged", { excludeValidators: ["disabled", "readOnly"] }) } _suppressValueChangeAction() { this._valueChangeActionSuppressed = true } _resumeValueChangeAction() { this._valueChangeActionSuppressed = false } _initMarkup() { this._toggleReadOnlyState(); const { name: name, _onMarkupRendered: markupRendered } = this.option(); this._setSubmitElementName(name); super._initMarkup(); this._renderValidationState(); null === markupRendered || void 0 === markupRendered || markupRendered() } _raiseValueChangeAction(value, previousValue) { if (!this._valueChangeAction) { this._createValueChangeAction() } this._valueChangeAction(this._valueChangeArgs(value, previousValue)) } _valueChangeArgs(value, previousValue) { return { value: value, previousValue: previousValue, event: this._valueChangeEventInstance } } _saveValueChangeEvent(e) { this._valueChangeEventInstance = e } _focusInHandler(e) { const { validationMessageMode: validationMessageMode } = this.option(); const isValidationMessageShownOnFocus = "auto" === validationMessageMode; if (this._canValueBeChangedByClick() && isValidationMessageShownOnFocus) { var _this$_validationMess; const $validationMessageWrapper = null === (_this$_validationMess = this._validationMessage) || void 0 === _this$_validationMess ? void 0 : _this$_validationMess.$wrapper(); null === $validationMessageWrapper || void 0 === $validationMessageWrapper || $validationMessageWrapper.removeClass("dx-invalid-message-auto"); clearTimeout(this.showValidationMessageTimeout); this.showValidationMessageTimeout = setTimeout((() => null === $validationMessageWrapper || void 0 === $validationMessageWrapper ? void 0 : $validationMessageWrapper.addClass("dx-invalid-message-auto")), 150) } super._focusInHandler(e) } _canValueBeChangedByClick() { return false } _getStylingModePrefix() { return "dx-editor-" } _renderStylingMode() { const { stylingMode: stylingMode } = this.option(); const prefix = this._getStylingModePrefix(); const allowedStylingClasses = ALLOWED_STYLING_MODES.map((mode => prefix + mode)); allowedStylingClasses.forEach((className => this.$element().removeClass(className))); let stylingModeClass = prefix + String(stylingMode); if (!allowedStylingClasses.includes(stylingModeClass)) { const optionName = "stylingMode"; const defaultOptionValue = this._getDefaultOptions()[optionName]; const platformOptionValue = this._convertRulesToOptions(this._defaultOptionsRules())[optionName]; stylingModeClass = prefix + (platformOptionValue ?? defaultOptionValue) } this.$element().addClass(stylingModeClass) } _getValidationErrors() { let { validationErrors: validationErrors } = this.option(); const { validationError: validationError } = this.option(); if (!validationErrors && validationError) { validationErrors = [validationError] } return validationErrors } _disposeValidationMessage() { if (this._$validationMessage) { this._$validationMessage.remove(); this.setAria("describedby", null); this._$validationMessage = void 0; this._validationMessage = void 0 } } _toggleValidationClasses(isInvalid) { this.$element().toggleClass("dx-invalid", isInvalid); this.setAria("invalid", isInvalid || void 0) } _renderValidationState() { const { validationStatus: validationStatus, _showValidationMessage: showValidationMessage } = this.option(); const isValid = this.option("isValid") && "invalid" !== validationStatus; const validationErrors = this._getValidationErrors(); const $element = this.$element(); this._toggleValidationClasses(!isValid); if (!(0, _window.hasWindow)() || !showValidationMessage) { return } this._disposeValidationMessage(); if (!isValid && validationErrors) { const { validationMessageMode: validationMessageMode, validationMessageOffset: validationMessageOffset, validationBoundary: validationBoundary, rtlEnabled: rtlEnabled } = this.option(); this._$validationMessage = (0, _renderer.default)("<div>").appendTo($element); const validationMessageContentId = `dx-${new _guid.default}`; this.setAria("describedby", validationMessageContentId); this._validationMessage = new _validation_message.default(this._$validationMessage, (0, _extend.extend)({ validationErrors: validationErrors, rtlEnabled: rtlEnabled, target: this._getValidationMessageTarget(), visualContainer: $element, mode: validationMessageMode, positionSide: this._getValidationMessagePosition(), offset: validationMessageOffset, boundary: validationBoundary, contentId: validationMessageContentId }, this._options.cache("validationTooltipOptions"))); this._bindInnerWidgetOptions(this._validationMessage, "validationTooltipOptions") } } _getValidationMessagePosition() { const { validationMessagePosition: validationMessagePosition } = this.option(); return validationMessagePosition } _getValidationMessageTarget() { return this.$element() } _toggleReadOnlyState() { const { readOnly: readOnly } = this.option(); this._toggleBackspaceHandler(readOnly); this.$element().toggleClass("dx-state-readonly", !!readOnly); this._setAriaReadonly(readOnly) } _setAriaReadonly(readOnly) { this.setAria("readonly", readOnly || void 0) } _toggleBackspaceHandler(isReadOnly) { const $eventTarget = this._keyboardEventBindingTarget(); const eventName = (0, _index.addNamespace)("keydown", "editorReadOnly"); _events_engine.default.off($eventTarget, eventName); if (isReadOnly) { _events_engine.default.on($eventTarget, eventName, (e => { if ("backspace" === (0, _index.normalizeKeyName)(e)) { e.preventDefault() } })) } } _dispose() { const element = this.$element()[0]; (0, _element_data.data)(element, "dx-validation-target", null); clearTimeout(this.showValidationMessageTimeout); this._disposeValidationMessage(); super._dispose() } _setSubmitElementName(name) { const $submitElement = this._getSubmitElement(); if (!$submitElement) { return } if (name && name.length > 0) { $submitElement.attr("name", name) } else { $submitElement.removeAttr("name") } } _getSubmitElement() { return null } _setValidationMessageOption(_ref) { var _this$_validationMess2; let { name: name, value: value } = _ref; const optionKey = VALIDATION_MESSAGE_KEYS_MAP[String(name)] ? VALIDATION_MESSAGE_KEYS_MAP[String(name)] : name; null === (_this$_validationMess2 = this._validationMessage) || void 0 === _this$_validationMess2 || _this$_validationMess2.option(optionKey, value) } _hasActiveElement() { return false } _optionChanged(args) { var _this$_validationMess3; const { name: name, value: value, previousValue: previousValue } = args; switch (name) { case "onValueChanged": this._createValueChangeAction(); break; case "readOnly": this._toggleReadOnlyState(); this._refreshFocusState(); break; case "value": if (value != previousValue) { this.option("isDirty", this._initialValue !== value); this.validationRequest.fire({ value: value, editor: this }) } if (!this._valueChangeActionSuppressed) { this._raiseValueChangeAction(value, previousValue); this._saveValueChangeEvent(void 0) } break; case "width": super._optionChanged(args); null === (_this$_validationMess3 = this._validationMessage) || void 0 === _this$_validationMess3 || _this$_validationMess3.updateMaxWidth(); break; case "name": this._setSubmitElementName(value); break; case "isValid": case "validationError": case "validationErrors": case "validationStatus": this.option(_validation_engine.default.synchronizeValidationOptions(args, this.option())); this._renderValidationState(); break; case "validationBoundary": case "validationMessageMode": case "validationMessagePosition": case "validationMessageOffset": this._setValidationMessageOption(args); break; case "rtlEnabled": this._setValidationMessageOption(args); super._optionChanged(args); break; case "validationTooltipOptions": this._innerWidgetOptionChanged(this._validationMessage, args); break; case "_showValidationMessage": case "isDirty": break; default: super._optionChanged(args) } } _resetToInitialValue() { this.option("value", this._initialValue) } blur() { if (this._hasActiveElement()) { _m_dom.default.resetActiveElement() } } clear() { const defaultOptions = this._getDefaultOptions(); this.option("value", defaultOptions.value) } reset() { let value = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : void 0; if (arguments.length) { this._initialValue = value } this._resetToInitialValue(); this.option("isDirty", false); this.option("isValid", true) } } Editor.isEditor = instance => instance instanceof Editor; exports.default = Editor }, 42006: /*!***************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/ui/editor/m_data_expression.js ***! \***************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _array_store = _interopRequireDefault(__webpack_require__( /*! ../../../common/data/array_store */ 80556)); var _data_source = _interopRequireDefault(__webpack_require__( /*! ../../../common/data/data_source */ 14479)); var _common = __webpack_require__( /*! ../../../core/utils/common */ 17781); var _data = __webpack_require__( /*! ../../../core/utils/data */ 31e3); var _deferred = __webpack_require__( /*! ../../../core/utils/deferred */ 87739); var _extend = __webpack_require__( /*! ../../../core/utils/extend */ 52576); var _type = __webpack_require__( /*! ../../../core/utils/type */ 11528); var _variable_wrapper = _interopRequireDefault(__webpack_require__( /*! ../../../core/utils/variable_wrapper */ 40216)); var _data_helper = _interopRequireDefault(__webpack_require__( /*! ../../../data_helper */ 87755)); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } const DataExpressionMixin = (0, _extend.extend)({}, _data_helper.default, { _dataExpressionDefaultOptions: () => ({ items: [], dataSource: null, itemTemplate: "item", value: null, valueExpr: "this", displayExpr: void 0 }), _initDataExpressions() { this._compileValueGetter(); this._compileDisplayGetter(); this._initDynamicTemplates(); this._initDataSource(); this._itemsToDataSource() }, _itemsToDataSource() { if (!this.option("dataSource")) { this._dataSource = new _data_source.default({ store: new _array_store.default(this.option("items")), pageSize: 0 }); this._initDataController() } }, _compileDisplayGetter() { this._displayGetter = (0, _data.compileGetter)(this._displayGetterExpr()) }, _displayGetterExpr() { return this.option("displayExpr") }, _compileValueGetter() { this._valueGetter = (0, _data.compileGetter)(this._valueGetterExpr()) }, _valueGetterExpr() { return this.option("valueExpr") || "this" }, _loadValue(value) { const deferred = (0, _deferred.Deferred)(); value = this._unwrappedValue(value); if (!(0, _type.isDefined)(value)) { return deferred.reject().promise() } this._loadSingle(this._valueGetterExpr(), value).done((item => { this._isValueEquals(this._valueGetter(item), value) ? deferred.resolve(item) : deferred.reject() })).fail((() => { deferred.reject() })); this._loadValueDeferred = deferred; return deferred.promise() }, _rejectValueLoading() { var _this$_loadValueDefer; null === (_this$_loadValueDefer = this._loadValueDeferred) || void 0 === _this$_loadValueDefer || _this$_loadValueDefer.reject({ shouldSkipCallback: true }) }, _getCurrentValue() { return this.option("value") }, _unwrappedValue(value) { value = value ?? this._getCurrentValue(); if (value && this._dataSource && "this" === this._valueGetterExpr()) { value = this._getItemKey(value) } return _variable_wrapper.default.unwrap(value) }, _getItemKey(value) { const key = this._dataSource.key(); if (Array.isArray(key)) { const result = {}; for (let i = 0, n = key.length; i < n; i++) { result[key[i]] = value[key[i]] } return result } if (key && "object" === typeof value) { value = value[key] } return value }, _isValueEquals(value1, value2) { const dataSourceKey = this._dataSource && this._dataSource.key(); let result = this._compareValues(value1, value2); if (!result && dataSourceKey && (0, _type.isDefined)(value1) && (0, _type.isDefined)(value2)) { if (Array.isArray(dataSourceKey)) { result = this._compareByCompositeKey(value1, value2, dataSourceKey) } else { result = this._compareByKey(value1, value2, dataSourceKey) } } return result }, _compareByCompositeKey(value1, value2, key) { const isObject = _type.isObject; if (!isObject(value1) || !isObject(value2)) { return false } for (let i = 0, n = key.length; i < n; i++) { if (value1[key[i]] !== value2[key[i]]) { return false } } return true }, _compareByKey(value1, value2, key) { const unwrapObservable = _variable_wrapper.default.unwrap; const valueKey1 = (0, _common.ensureDefined)(unwrapObservable(value1[key]), value1); const valueKey2 = (0, _common.ensureDefined)(unwrapObservable(value2[key]), value2); return this._compareValues(valueKey1, valueKey2) }, _compareValues: (value1, value2) => (0, _data.toComparable)(value1, true) === (0, _data.toComparable)(value2, true), _initDynamicTemplates: _common.noop, _setCollectionWidgetItemTemplate() { this._initDynamicTemplates(); this._setCollectionWidgetOption("itemTemplate", this.option("itemTemplate")) }, _getCollectionKeyExpr() { const valueExpr = this.option("valueExpr"); const isValueExprField = (0, _type.isString)(valueExpr) && "this" !== valueExpr || (0, _type.isFunction)(valueExpr); return isValueExprField ? valueExpr : null }, _dataExpressionOptionChanged(args) { switch (args.name) { case "items": this._itemsToDataSource(); this._setCollectionWidgetOption("items"); break; case "dataSource": this._initDataSource(); break; case "itemTemplate": this._setCollectionWidgetItemTemplate(); break; case "valueExpr": this._compileValueGetter(); break; case "displayExpr": this._compileDisplayGetter(); this._initDynamicTemplates(); this._setCollectionWidgetOption("displayExpr") } } }); exports.default = DataExpressionMixin }, 28365: /*!********************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/ui/form/components/m_button_item.js ***! \********************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.renderButtonItem = function(_ref) { let { item: item, $parent: $parent, rootElementCssClassList: rootElementCssClassList, validationGroup: validationGroup, createComponentCallback: createComponentCallback } = _ref; const $rootElement = (0, _renderer.default)("<div>").appendTo($parent).addClass(rootElementCssClassList.join(" ")).addClass(FIELD_BUTTON_ITEM_CLASS).css("textAlign", (horizontalAlignment = item.horizontalAlignment, (0, _type.isDefined)(horizontalAlignment) ? horizontalAlignment : "right")); var horizontalAlignment; $parent.css("justifyContent", function(verticalAlignment) { switch (verticalAlignment) { case "center": return "center"; case "bottom": return "flex-end"; default: return "flex-start" } }(item.verticalAlignment)); const $button = (0, _renderer.default)("<div>").appendTo($rootElement); return { $rootElement: $rootElement, buttonInstance: createComponentCallback($button, "dxButton", (0, _extend.extend)({ validationGroup: validationGroup }, item.buttonOptions)) } }; var _renderer = (e = __webpack_require__( /*! ../../../../core/renderer */ 64553), e && e.__esModule ? e : { default: e }); var e; var _extend = __webpack_require__( /*! ../../../../core/utils/extend */ 52576); var _type = __webpack_require__( /*! ../../../../core/utils/type */ 11528); const FIELD_BUTTON_ITEM_CLASS = "dx-field-button-item" }, 15602: /*!*******************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/ui/form/components/m_empty_item.js ***! \*******************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.FIELD_EMPTY_ITEM_CLASS = void 0; exports.renderEmptyItem = function(_ref) { let { $parent: $parent, rootElementCssClassList: rootElementCssClassList } = _ref; return (0, _renderer.default)("<div>").addClass(FIELD_EMPTY_ITEM_CLASS).html(" ").addClass(rootElementCssClassList.join(" ")).appendTo($parent) }; var _renderer = (e = __webpack_require__( /*! ../../../../core/renderer */ 64553), e && e.__esModule ? e : { default: e }); var e; const FIELD_EMPTY_ITEM_CLASS = exports.FIELD_EMPTY_ITEM_CLASS = "dx-field-empty-item" }, 64949: /*!*******************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/ui/form/components/m_field_item.js ***! \*******************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.TOGGLE_CONTROLS_PADDING_CLASS = exports.LABEL_VERTICAL_ALIGNMENT_CLASS = exports.LABEL_HORIZONTAL_ALIGNMENT_CLASS = exports.FLEX_LAYOUT_CLASS = exports.FIELD_ITEM_REQUIRED_CLASS = exports.FIELD_ITEM_OPTIONAL_CLASS = exports.FIELD_ITEM_LABEL_ALIGN_CLASS = exports.FIELD_ITEM_HELP_TEXT_CLASS = exports.FIELD_ITEM_CONTENT_WRAPPER_CLASS = exports.FIELD_ITEM_CONTENT_LOCATION_CLASS = void 0; exports.renderFieldItem = function(_ref) { let { $parent: $parent, rootElementCssClassList: rootElementCssClassList, formOrLayoutManager: formOrLayoutManager, createComponentCallback: createComponentCallback, labelOptions: labelOptions, labelNeedBaselineAlign: labelNeedBaselineAlign, labelLocation: labelLocation, needRenderLabel: needRenderLabel, formLabelLocation: formLabelLocation, item: item, editorOptions: editorOptions, isSimpleItem: isSimpleItem, isRequired: isRequired, template: template, helpID: helpID, labelID: labelID, name: name, helpText: helpText, requiredMessageTemplate: requiredMessageTemplate, validationGroup: validationGroup } = _ref; const $rootElement = (0, _renderer.default)("<div>").addClass(rootElementCssClassList.join(" ")).appendTo($parent); $rootElement.addClass(isRequired ? FIELD_ITEM_REQUIRED_CLASS : FIELD_ITEM_OPTIONAL_CLASS); if (isSimpleItem) { $rootElement.addClass(FLEX_LAYOUT_CLASS) } if (isSimpleItem && labelNeedBaselineAlign) { $rootElement.addClass(FIELD_ITEM_LABEL_ALIGN_CLASS) } const $fieldEditorContainer = (0, _renderer.default)("<div>"); $fieldEditorContainer.data("dx-form-item", item); $fieldEditorContainer.addClass(_constants.FIELD_ITEM_CONTENT_CLASS).addClass(FIELD_ITEM_CONTENT_LOCATION_CLASS + { right: "left", left: "right", top: "bottom" } [formLabelLocation]); let $label = null; if (needRenderLabel) { if (labelOptions.labelTemplate) { labelOptions.labelTemplateData = getTemplateData(item, editorOptions, formOrLayoutManager) } $label = (0, _m_label.renderLabel)(labelOptions) } if ($label) { const { editorType: editorType } = item; $rootElement.append($label); if ("top" === labelLocation || "left" === labelLocation) { $rootElement.append($fieldEditorContainer) } if ("right" === labelLocation) { $rootElement.prepend($fieldEditorContainer) } if ("top" === labelLocation) { $rootElement.addClass(LABEL_VERTICAL_ALIGNMENT_CLASS) } else { $rootElement.addClass(LABEL_HORIZONTAL_ALIGNMENT_CLASS) } if ("dxCheckBox" === editorType || "dxSwitch" === editorType) { _events_engine.default.on($label, _click.name, (() => { _events_engine.default.trigger($fieldEditorContainer.children(), _click.name) })) } const toggleControls = ["dxCheckBox", "dxSwitch", "dxRadioGroup"]; const isToggleControls = toggleControls.includes(editorType); const labelAlignment = labelOptions.alignment; const isLabelAlignmentLeft = "left" === labelAlignment || !labelAlignment; const hasNotTemplate = !template; const isLabelOnTop = "top" === labelLocation; if (hasNotTemplate && isToggleControls && isLabelOnTop && isLabelAlignmentLeft) { $fieldEditorContainer.addClass(TOGGLE_CONTROLS_PADDING_CLASS) } } else { $rootElement.append($fieldEditorContainer) } let widgetInstance; if (template) { template.render({ container: (0, _element.getPublicElement)($fieldEditorContainer), model: getTemplateData(item, editorOptions, formOrLayoutManager), onRendered() { const $validationTarget = getValidationTarget($fieldEditorContainer); const validationTargetInstance = function($validationTarget) { var _$validationTarget$pa; return (null === $validationTarget || void 0 === $validationTarget ? void 0 : $validationTarget.data(VALIDATION_TARGET_CLASS)) || (null === $validationTarget || void 0 === $validationTarget || null === (_$validationTarget$pa = $validationTarget.parent) || void 0 === _$validationTarget$pa || null === (_$validationTarget$pa = _$validationTarget$pa.call($validationTarget)) || void 0 === _$validationTarget$pa ? void 0 : _$validationTarget$pa.data(VALIDATION_TARGET_CLASS)) }($validationTarget); subscribeWrapperInvalidClassToggle(validationTargetInstance) } }) } else { const $div = (0, _renderer.default)("<div>").appendTo($fieldEditorContainer); try { widgetInstance = createComponentCallback($div, item.editorType, editorOptions); widgetInstance.setAria("describedby", helpID); if (labelID) { widgetInstance.setAria("labelledby", labelID) } widgetInstance.setAria("required", isRequired) } catch (e) { _ui.default.log("E1035", e.message) } } const $validationTarget = getValidationTarget($fieldEditorContainer); const validationTargetInstance = $validationTarget && $validationTarget.data(VALIDATION_TARGET_CLASS); if (validationTargetInstance) { const isItemHaveCustomLabel = item.label && item.label.text; const itemName = isItemHaveCustomLabel ? null : name; const fieldName = isItemHaveCustomLabel ? item.label.text : itemName && (0, _inflector.captionize)(itemName); let validationRules; if (isSimpleItem) { if (item.validationRules) { validationRules = item.validationRules } else { const requiredMessage = (0, _string.format)(requiredMessageTemplate, fieldName || ""); validationRules = item.isRequired ? [{ type: "required", message: requiredMessage }] : null } } if (Array.isArray(validationRules) && validationRules.length) { createComponentCallback($validationTarget, _validator.default, { validationRules: validationRules, validationGroup: validationGroup, dataGetter: () => ({ formItem: item }) }) } subscribeWrapperInvalidClassToggle(validationTargetInstance) } if (helpText && isSimpleItem) { const $editorParent = $fieldEditorContainer.parent(); $editorParent.append((0, _renderer.default)("<div>").addClass(FIELD_ITEM_CONTENT_WRAPPER_CLASS).append($fieldEditorContainer).append((0, _renderer.default)("<div>").addClass(FIELD_ITEM_HELP_TEXT_CLASS).attr("id", helpID).text(helpText))) } return { $fieldEditorContainer: $fieldEditorContainer, $rootElement: $rootElement, widgetInstance: widgetInstance } }; var _click = __webpack_require__( /*! ../../../../common/core/events/click */ 64044); var _events_engine = _interopRequireDefault(__webpack_require__( /*! ../../../../common/core/events/core/events_engine */ 92774)); var _element = __webpack_require__( /*! ../../../../core/element */ 61404); var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../../../core/renderer */ 64553)); var _inflector = __webpack_require__( /*! ../../../../core/utils/inflector */ 53124); var _string = __webpack_require__( /*! ../../../../core/utils/string */ 54497); var _themes = __webpack_require__( /*! ../../../../ui/themes */ 52071); var _validator = _interopRequireDefault(__webpack_require__( /*! ../../../../ui/validator */ 71775)); var _ui = _interopRequireDefault(__webpack_require__( /*! ../../../../ui/widget/ui.errors */ 35185)); var _constants = __webpack_require__( /*! ../constants */ 96891); var _m_label = __webpack_require__( /*! ./m_label */ 43305); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } const FLEX_LAYOUT_CLASS = exports.FLEX_LAYOUT_CLASS = "dx-flex-layout"; const FIELD_ITEM_OPTIONAL_CLASS = exports.FIELD_ITEM_OPTIONAL_CLASS = "dx-field-item-optional"; const FIELD_ITEM_REQUIRED_CLASS = exports.FIELD_ITEM_REQUIRED_CLASS = "dx-field-item-required"; const FIELD_ITEM_CONTENT_WRAPPER_CLASS = exports.FIELD_ITEM_CONTENT_WRAPPER_CLASS = "dx-field-item-content-wrapper"; const FIELD_ITEM_CONTENT_LOCATION_CLASS = exports.FIELD_ITEM_CONTENT_LOCATION_CLASS = "dx-field-item-content-location-"; const FIELD_ITEM_LABEL_ALIGN_CLASS = exports.FIELD_ITEM_LABEL_ALIGN_CLASS = "dx-field-item-label-align"; const FIELD_ITEM_HELP_TEXT_CLASS = exports.FIELD_ITEM_HELP_TEXT_CLASS = "dx-field-item-help-text"; const LABEL_VERTICAL_ALIGNMENT_CLASS = exports.LABEL_VERTICAL_ALIGNMENT_CLASS = "dx-label-v-align"; const LABEL_HORIZONTAL_ALIGNMENT_CLASS = exports.LABEL_HORIZONTAL_ALIGNMENT_CLASS = "dx-label-h-align"; const TOGGLE_CONTROLS_PADDING_CLASS = exports.TOGGLE_CONTROLS_PADDING_CLASS = "dx-toggle-controls-paddings"; const TEMPLATE_WRAPPER_CLASS = "dx-template-wrapper"; const VALIDATION_TARGET_CLASS = "dx-validation-target"; const INVALID_CLASS = "dx-invalid"; function getValidationTarget($fieldEditorContainer) { const $editor = $fieldEditorContainer.children().first(); return $editor.hasClass(TEMPLATE_WRAPPER_CLASS) ? $editor.children().first() : $editor } function subscribeWrapperInvalidClassToggle(validationTargetInstance) { if (validationTargetInstance && (0, _themes.isMaterialBased)()) { const wrapperClass = `.${FIELD_ITEM_CONTENT_WRAPPER_CLASS}`; const toggleInvalidClass = _ref2 => { let { element: element, component: component } = _ref2; const { isValid: isValid, validationMessageMode: validationMessageMode } = component.option(); (0, _renderer.default)(element).parents(wrapperClass).toggleClass(INVALID_CLASS, false === isValid && (component._isFocused() || "always" === validationMessageMode)) }; validationTargetInstance.on("optionChanged", (e => { if ("isValid" !== e.name) { return } toggleInvalidClass(e) })); validationTargetInstance.on("focusIn", toggleInvalidClass).on("focusOut", toggleInvalidClass).on("enterKey", toggleInvalidClass) } } function getTemplateData(item, editorOptions, formOrLayoutManager) { return { dataField: item.dataField, editorType: item.editorType, editorOptions: editorOptions, component: formOrLayoutManager, name: item.name } } }, 43305: /*!**************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/ui/form/components/m_label.js ***! \**************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.GET_LABEL_WIDTH_BY_TEXT_CLASS = exports.FIELD_ITEM_REQUIRED_MARK_CLASS = exports.FIELD_ITEM_OPTIONAL_MARK_CLASS = exports.FIELD_ITEM_LABEL_TEXT_CLASS = exports.FIELD_ITEM_LABEL_LOCATION_CLASS = void 0; exports.renderLabel = function(_ref) { let { text: text, id: id, location: location, alignment: alignment, labelID: labelID = null, markOptions: markOptions = {}, labelTemplate: labelTemplate, labelTemplateData: labelTemplateData, onLabelTemplateRendered: onLabelTemplateRendered } = _ref; if ((!(0, _type.isDefined)(text) || text.length <= 0) && !(0, _type.isDefined)(labelTemplate)) { return null } const $label = (0, _renderer.default)("<label>").addClass(`${_constants.FIELD_ITEM_LABEL_CLASS} ${FIELD_ITEM_LABEL_LOCATION_CLASS}${location}`).attr("for", id).attr("id", labelID).css("textAlign", alignment); const $labelContainer = (0, _renderer.default)("<span>").addClass(_constants.FIELD_ITEM_LABEL_CONTENT_CLASS); let $labelContent = (0, _renderer.default)("<span>").addClass(FIELD_ITEM_LABEL_TEXT_CLASS).text(text); if (labelTemplate) { $labelContent = (0, _renderer.default)("<div>").addClass("dx-field-item-custom-label-content"); labelTemplateData.text = text; labelTemplate.render({ container: (0, _element.getPublicElement)($labelContent), model: labelTemplateData, onRendered() { null === onLabelTemplateRendered || void 0 === onLabelTemplateRendered || onLabelTemplateRendered() } }) } return $label.append($labelContainer.append($labelContent, function(markOptions) { const markText = (0, _m_formLayout_manager.getLabelMarkText)(markOptions); if ("" === markText) { return null } return (0, _renderer.default)("<span>").addClass(markOptions.showRequiredMark ? FIELD_ITEM_REQUIRED_MARK_CLASS : FIELD_ITEM_OPTIONAL_MARK_CLASS).text(markText) }(markOptions))) }; exports.setLabelWidthByMaxLabelWidth = function($targetContainer, labelsSelector, labelMarkOptions) { const FIELD_ITEM_LABEL_CONTENT_CLASS_Selector = `${labelsSelector} > .${_constants.FIELD_ITEM_LABEL_CLASS}:not(.${FIELD_ITEM_LABEL_LOCATION_CLASS}top) > .${_constants.FIELD_ITEM_LABEL_CONTENT_CLASS}`; const $FIELD_ITEM_LABEL_CONTENT_CLASS_Items = $targetContainer.find(FIELD_ITEM_LABEL_CONTENT_CLASS_Selector); const FIELD_ITEM_LABEL_CONTENT_CLASS_Length = $FIELD_ITEM_LABEL_CONTENT_CLASS_Items.length; let labelWidth; let i; let maxWidth = 0; for (i = 0; i < FIELD_ITEM_LABEL_CONTENT_CLASS_Length; i++) { labelWidth = getLabelWidthByHTML($FIELD_ITEM_LABEL_CONTENT_CLASS_Items[i]); if (labelWidth > maxWidth) { maxWidth = labelWidth } } for (i = 0; i < FIELD_ITEM_LABEL_CONTENT_CLASS_Length; i++) { $FIELD_ITEM_LABEL_CONTENT_CLASS_Items[i].style.width = `${maxWidth}px` } }; var _element = __webpack_require__( /*! ../../../../core/element */ 61404); var _renderer = (e = __webpack_require__( /*! ../../../../core/renderer */ 64553), e && e.__esModule ? e : { default: e }); var e; var _type = __webpack_require__( /*! ../../../../core/utils/type */ 11528); var _constants = __webpack_require__( /*! ../constants */ 96891); var _m_formLayout_manager = __webpack_require__( /*! ../m_form.layout_manager.utils */ 44551); exports.GET_LABEL_WIDTH_BY_TEXT_CLASS = "dx-layout-manager-hidden-label"; const FIELD_ITEM_REQUIRED_MARK_CLASS = exports.FIELD_ITEM_REQUIRED_MARK_CLASS = "dx-field-item-required-mark"; const FIELD_ITEM_LABEL_LOCATION_CLASS = exports.FIELD_ITEM_LABEL_LOCATION_CLASS = "dx-field-item-label-location-"; const FIELD_ITEM_OPTIONAL_MARK_CLASS = exports.FIELD_ITEM_OPTIONAL_MARK_CLASS = "dx-field-item-optional-mark"; const FIELD_ITEM_LABEL_TEXT_CLASS = exports.FIELD_ITEM_LABEL_TEXT_CLASS = "dx-field-item-label-text"; function getLabelWidthByHTML(labelContent) { let result = 0; const itemsCount = labelContent.children.length; for (let i = 0; i < itemsCount; i++) { const child = labelContent.children[i]; result += child.offsetWidth } return result } }, 96891: /*!*****************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/ui/form/constants.js ***! \*****************************************************************************/ function(__unused_webpack_module, exports) { Object.defineProperty(exports, "__esModule", { value: true }); exports.WIDGET_CLASS = exports.SINGLE_COLUMN_ITEM_CONTENT = exports.SIMPLE_ITEM_TYPE = exports.ROOT_SIMPLE_ITEM_CLASS = exports.LAYOUT_MANAGER_ONE_COLUMN = exports.GROUP_COL_COUNT_CLASS = exports.GROUP_COL_COUNT_ATTR = exports.FORM_VALIDATION_SUMMARY = exports.FORM_UNDERLINED_CLASS = exports.FORM_LAYOUT_MANAGER_CLASS = exports.FORM_GROUP_WITH_CAPTION_CLASS = exports.FORM_GROUP_CUSTOM_CAPTION_CLASS = exports.FORM_GROUP_CONTENT_CLASS = exports.FORM_GROUP_CLASS = exports.FORM_GROUP_CAPTION_CLASS = exports.FORM_FIELD_ITEM_COL_CLASS = exports.FORM_CLASS = exports.FIELD_ITEM_TAB_CLASS = exports.FIELD_ITEM_LABEL_CONTENT_CLASS = exports.FIELD_ITEM_LABEL_CLASS = exports.FIELD_ITEM_CONTENT_HAS_TABS_CLASS = exports.FIELD_ITEM_CONTENT_HAS_GROUP_CLASS = exports.FIELD_ITEM_CONTENT_CLASS = exports.FIELD_ITEM_CLASS = void 0; exports.WIDGET_CLASS = "dx-widget"; exports.FORM_CLASS = "dx-form"; exports.FORM_GROUP_CLASS = "dx-form-group"; exports.FORM_GROUP_CAPTION_CLASS = "dx-form-group-caption"; exports.FORM_GROUP_CUSTOM_CAPTION_CLASS = "dx-form-group-custom-caption"; exports.FORM_FIELD_ITEM_COL_CLASS = "dx-col-"; exports.FIELD_ITEM_CLASS = "dx-field-item"; exports.LAYOUT_MANAGER_ONE_COLUMN = "dx-layout-manager-one-col"; exports.FIELD_ITEM_LABEL_CONTENT_CLASS = "dx-field-item-label-content"; exports.FORM_LAYOUT_MANAGER_CLASS = "dx-layout-manager"; exports.FIELD_ITEM_LABEL_CLASS = "dx-field-item-label"; exports.FIELD_ITEM_CONTENT_CLASS = "dx-field-item-content"; exports.SINGLE_COLUMN_ITEM_CONTENT = "dx-single-column-item-content"; exports.ROOT_SIMPLE_ITEM_CLASS = "dx-root-simple-item"; exports.FORM_GROUP_CONTENT_CLASS = "dx-form-group-content"; exports.FIELD_ITEM_CONTENT_HAS_GROUP_CLASS = "dx-field-item-has-group"; exports.FIELD_ITEM_CONTENT_HAS_TABS_CLASS = "dx-field-item-has-tabs"; exports.FORM_GROUP_WITH_CAPTION_CLASS = "dx-form-group-with-caption"; exports.FIELD_ITEM_TAB_CLASS = "dx-field-item-tab"; exports.GROUP_COL_COUNT_CLASS = "dx-group-colcount-"; exports.GROUP_COL_COUNT_ATTR = "group-col-count"; exports.FORM_VALIDATION_SUMMARY = "dx-form-validation-summary"; exports.FORM_UNDERLINED_CLASS = "dx-form-styling-mode-underlined"; exports.SIMPLE_ITEM_TYPE = "simple" }, 77414: /*!*********************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/ui/form/m_form.item_option_action.js ***! \*********************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _class = (e = __webpack_require__( /*! ../../../core/class */ 55620), e && e.__esModule ? e : { default: e }); var e; exports.default = class { constructor(options) { this._options = options; this._itemsRunTimeInfo = this._options.itemsRunTimeInfo } findInstance() { return this._itemsRunTimeInfo.findWidgetInstanceByItem(this._options.item) } findItemContainer() { return this._itemsRunTimeInfo.findItemContainerByItem(this._options.item) } findPreparedItem() { return this._itemsRunTimeInfo.findPreparedItemByItem(this._options.item) } tryExecute() { _class.default.abstract() } } }, 78820: /*!***********************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/ui/form/m_form.item_options_actions.js ***! \***********************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _element_data = __webpack_require__( /*! ../../../core/element_data */ 74663); var _extend = __webpack_require__( /*! ../../../core/utils/extend */ 52576); var _m_form = (e = __webpack_require__( /*! ./m_form.item_option_action */ 77414), e && e.__esModule ? e : { default: e }); var e; var _m_form2 = __webpack_require__( /*! ./m_form.utils */ 7165); class WidgetOptionItemOptionAction extends _m_form.default { tryExecute() { const { value: value } = this._options; const instance = this.findInstance(); if (instance) { instance.option(value); return true } return false } } class TabOptionItemOptionAction extends _m_form.default { tryExecute() { const tabPanel = this.findInstance(); if (tabPanel) { const { optionName: optionName, item: item, value: value } = this._options; const itemIndex = this._itemsRunTimeInfo.findItemIndexByItem(item); if (itemIndex >= 0) { tabPanel.option((0, _m_form2.getFullOptionName)(`items[${itemIndex}]`, optionName), value); return true } } return false } } class SimpleItemTemplateChangedAction extends _m_form.default { tryExecute() { return false } } class GroupItemTemplateChangedAction extends _m_form.default { tryExecute() { const preparedItem = this.findPreparedItem(); if (null != preparedItem && preparedItem._prepareGroupItemTemplate && preparedItem._renderGroupContentTemplate) { preparedItem._prepareGroupItemTemplate(this._options.item.template); preparedItem._renderGroupContentTemplate(); return true } return false } } class TabsOptionItemOptionAction extends _m_form.default { tryExecute() { const tabPanel = this.findInstance(); if (tabPanel) { const { value: value } = this._options; tabPanel.option("dataSource", value); return true } return false } } class ValidationRulesItemOptionAction extends _m_form.default { tryExecute() { const { item: item } = this._options; const instance = this.findInstance(); const validator = instance && (0, _element_data.data)(instance.$element()[0], "dxValidator"); if (validator && item) { const filterRequired = item => "required" === item.type; const oldContainsRequired = (validator.option("validationRules") || []).some(filterRequired); const newContainsRequired = (item.validationRules || []).some(filterRequired); if (!oldContainsRequired && !newContainsRequired || oldContainsRequired && newContainsRequired) { validator.option("validationRules", item.validationRules); return true } } return false } } class CssClassItemOptionAction extends _m_form.default { tryExecute() { const $itemContainer = this.findItemContainer(); const { previousValue: previousValue, value: value } = this._options; if ($itemContainer) { $itemContainer.removeClass(previousValue).addClass(value); return true } return false } } exports.default = (optionName, itemActionOptions) => { switch (optionName) { case "editorOptions": case "buttonOptions": return new WidgetOptionItemOptionAction(itemActionOptions); case "validationRules": return new ValidationRulesItemOptionAction(itemActionOptions); case "cssClass": return new CssClassItemOptionAction(itemActionOptions); case "badge": case "disabled": case "icon": case "tabTemplate": case "title": return new TabOptionItemOptionAction((0, _extend.extend)(itemActionOptions, { optionName: optionName })); case "tabs": return new TabsOptionItemOptionAction(itemActionOptions); case "template": { var _itemActionOptions$it, _itemActionOptions$it2; const itemType = (null === itemActionOptions || void 0 === itemActionOptions || null === (_itemActionOptions$it = itemActionOptions.item) || void 0 === _itemActionOptions$it ? void 0 : _itemActionOptions$it.itemType) ?? (null === (_itemActionOptions$it2 = itemActionOptions.itemsRunTimeInfo.findPreparedItemByItem(null === itemActionOptions || void 0 === itemActionOptions ? void 0 : itemActionOptions.item)) || void 0 === _itemActionOptions$it2 ? void 0 : _itemActionOptions$it2.itemType); if ("simple" === itemType) { return new SimpleItemTemplateChangedAction(itemActionOptions) } if ("group" === itemType) { return new GroupItemTemplateChangedAction(itemActionOptions) } return new TabOptionItemOptionAction((0, _extend.extend)(itemActionOptions, { optionName: optionName })) } default: return null } } }, 15910: /*!*********************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/ui/form/m_form.items_runtime_info.js ***! \*********************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _guid = (e = __webpack_require__( /*! ../../../core/guid */ 19427), e && e.__esModule ? e : { default: e }); var e; var _extend = __webpack_require__( /*! ../../../core/utils/extend */ 52576); var _iterator = __webpack_require__( /*! ../../../core/utils/iterator */ 21274); var _type = __webpack_require__( /*! ../../../core/utils/type */ 11528); exports.default = class { constructor() { this._map = {} } _findWidgetInstance(condition) { let result; (0, _iterator.each)(this._map, ((guid, _ref) => { let { widgetInstance: widgetInstance, item: item } = _ref; if (condition(item)) { result = widgetInstance; return false } })); return result } _findFieldByCondition(callback, valueExpr) { let result; (0, _iterator.each)(this._map, ((key, value) => { if (callback(value)) { result = "guid" === valueExpr ? key : value[valueExpr]; return false } })); return result } clear() { this._map = {} } removeItemsByItems(itemsRunTimeInfo) { (0, _iterator.each)(itemsRunTimeInfo.getItems(), (guid => this.removeItemByKey(guid))) } removeItemByKey(key) { delete this._map[key] } add(options) { const key = options.guid || new _guid.default; this._map[key] = options; return key } addItemsOrExtendFrom(itemsRunTimeInfo) { itemsRunTimeInfo.each(((key, itemRunTimeInfo) => { if (this._map[key]) { if (itemRunTimeInfo.widgetInstance) { this._map[key].widgetInstance = itemRunTimeInfo.widgetInstance } this._map[key].$itemContainer = itemRunTimeInfo.$itemContainer } else { this.add({ item: itemRunTimeInfo.item, widgetInstance: itemRunTimeInfo.widgetInstance, guid: key, $itemContainer: itemRunTimeInfo.$itemContainer }) } })) } extendRunTimeItemInfoByKey(key, options) { if (this._map[key]) { this._map[key] = (0, _extend.extend)(this._map[key], options) } } findWidgetInstanceByItem(item) { return this._findWidgetInstance((storedItem => storedItem === item)) } findGroupOrTabLayoutManagerByPath(targetPath) { return this._findFieldByCondition((_ref2 => { let { path: path } = _ref2; return path === targetPath }), "layoutManager") } findKeyByPath(targetPath) { return this._findFieldByCondition((_ref3 => { let { path: path } = _ref3; return path === targetPath }), "guid") } findWidgetInstanceByName(name) { return this._findWidgetInstance((item => name === item.name)) } findWidgetInstanceByDataField(dataField) { return this._findWidgetInstance((item => dataField === ((0, _type.isString)(item) ? item : item.dataField))) } findItemContainerByItem(item) { for (const key in this._map) { if (this._map[key].item === item) { return this._map[key].$itemContainer } } return null } findItemIndexByItem(targetItem) { return this._findFieldByCondition((_ref4 => { let { item: item } = _ref4; return item === targetItem }), "itemIndex") } findPreparedItemByItem(item) { return this._findFieldByCondition((_ref5 => { let { item: currentItem } = _ref5; return currentItem === item }), "preparedItem") } getItems() { return this._map } each(handler) { (0, _iterator.each)(this._map, ((key, itemRunTimeInfo) => { handler(key, itemRunTimeInfo) })) } removeItemsByPathStartWith(path) { const keys = Object.keys(this._map); const filteredKeys = keys.filter((key => { if (this._map[key].path) { return this._map[key].path.indexOf(path, 0) > -1 } return false })); filteredKeys.forEach((key => this.removeItemByKey(key))) } } }, 67350: /*!**************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/ui/form/m_form.js ***! \**************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; __webpack_require__( /*! ../../../ui/validation_summary */ 10585); __webpack_require__( /*! ../../../ui/validation_group */ 16390); __webpack_require__( /*! ../../ui/form/m_form.layout_manager */ 39376); var _events_engine = _interopRequireDefault(__webpack_require__( /*! ../../../common/core/events/core/events_engine */ 92774)); var _visibility_change = __webpack_require__( /*! ../../../common/core/events/visibility_change */ 18029); var _message = _interopRequireDefault(__webpack_require__( /*! ../../../common/core/localization/message */ 4671)); var _component_registrator = _interopRequireDefault(__webpack_require__( /*! ../../../core/component_registrator */ 92848)); var _config = _interopRequireDefault(__webpack_require__( /*! ../../../core/config */ 66636)); var _element = __webpack_require__( /*! ../../../core/element */ 61404); var _guid = _interopRequireDefault(__webpack_require__( /*! ../../../core/guid */ 19427)); var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../../core/renderer */ 64553)); var _resize_observer = _interopRequireDefault(__webpack_require__( /*! ../../../core/resize_observer */ 11787)); var _common = __webpack_require__( /*! ../../../core/utils/common */ 17781); var _deferred = __webpack_require__( /*! ../../../core/utils/deferred */ 87739); var _extend = __webpack_require__( /*! ../../../core/utils/extend */ 52576); var _iterator = __webpack_require__( /*! ../../../core/utils/iterator */ 21274); var _type = __webpack_require__( /*! ../../../core/utils/type */ 11528); var _window = __webpack_require__( /*! ../../../core/utils/window */ 3104); var _editor = _interopRequireDefault(__webpack_require__( /*! ../../../ui/editor/editor */ 78694)); var _tab_panel = _interopRequireDefault(__webpack_require__( /*! ../../../ui/tab_panel */ 78175)); var _themes = __webpack_require__( /*! ../../../ui/themes */ 52071); var _validation_engine = _interopRequireDefault(__webpack_require__( /*! ../../../ui/validation_engine */ 19391)); var _widget = function(e, r) { if (!r && e && e.__esModule) { return e } if (null === e || "object" != typeof e && "function" != typeof e) { return { default: e } } var t = _getRequireWildcardCache(r); if (t && t.has(e)) { return t.get(e) } var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) { if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u] } } return n.default = e, t && t.set(e, n), n }(__webpack_require__( /*! ../../core/widget/widget */ 89275)); var _m_drop_down_editor = __webpack_require__( /*! ../../ui/drop_down_editor/m_drop_down_editor */ 28906); var _m_label = __webpack_require__( /*! ../../ui/form/components/m_label */ 43305); var _constants = __webpack_require__( /*! ../../ui/form/constants */ 96891); var _m_form2 = _interopRequireDefault(__webpack_require__( /*! ../../ui/form/m_form.item_options_actions */ 78820)); var _m_form3 = _interopRequireDefault(__webpack_require__( /*! ../../ui/form/m_form.items_runtime_info */ 15910)); var _m_formLayout_manager = __webpack_require__( /*! ../../ui/form/m_form.layout_manager.utils */ 44551); var _m_form4 = __webpack_require__( /*! ../../ui/form/m_form.utils */ 7165); var _m_scrollable = _interopRequireDefault(__webpack_require__( /*! ../../ui/scroll_view/m_scrollable */ 94790)); var _m_text_editor = __webpack_require__( /*! ../../ui/text_box/m_text_editor.base */ 34705); var _m_constants = __webpack_require__( /*! ../../ui/toolbar/m_constants */ 96002); function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) { return null } var r = new WeakMap, t = new WeakMap; return (_getRequireWildcardCache = function(e) { return e ? t : r })(e) } function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } function _extends() { return _extends = Object.assign ? Object.assign.bind() : function(n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) { ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]) } } return n }, _extends.apply(null, arguments) } const ITEM_OPTIONS_FOR_VALIDATION_UPDATING = ["items", "isRequired", "validationRules", "visible"]; class Form extends _widget.default { _init() { super._init(); this._dirtyFields = new Set; this._cachedColCountOptions = []; this._itemsRunTimeInfo = new _m_form3.default; this._groupsColCount = []; this._attachSyncSubscriptions() } _getDefaultOptions() { return _extends({}, super._getDefaultOptions(), { formID: `dx-${new _guid.default}`, formData: {}, colCount: 1, screenByWidth: _window.defaultScreenFactorFunc, labelLocation: "left", readOnly: false, onFieldDataChanged: null, customizeItem: null, onEditorEnterKey: null, minColWidth: 200, alignItemLabels: true, alignItemLabelsInAllGroups: true, alignRootItemLabels: true, showColonAfterLabel: true, showRequiredMark: true, showOptionalMark: false, requiredMark: "*", optionalMark: _message.default.format("dxForm-optionalMark"), requiredMessage: _message.default.getFormatter("dxForm-requiredMessage"), showValidationSummary: false, scrollingEnabled: false, stylingMode: (0, _config.default)().editorStylingMode, labelMode: "outside", isDirty: false }) } _defaultOptionsRules() { return super._defaultOptionsRules().concat([{ device: () => (0, _themes.isMaterialBased)(), options: { labelLocation: "top" } }, { device: () => (0, _themes.isMaterial)(), options: { showColonAfterLabel: false } }]) } _setOptionsByReference() { super._setOptionsByReference(); (0, _extend.extend)(this._optionsByReference, { formData: true, validationGroup: true }) } _getGroupColCount($element) { return parseInt($element.attr(_constants.GROUP_COL_COUNT_ATTR)) } _applyLabelsWidthByCol($container, index) { let options = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : {}; let labelMarkOptions = arguments.length > 3 ? arguments[3] : void 0; const fieldItemClass = options.inOneColumn ? _constants.FIELD_ITEM_CLASS : _constants.FORM_FIELD_ITEM_COL_CLASS + index; const cssExcludeTabbedSelector = options.excludeTabbed ? `:not(.${_constants.FIELD_ITEM_TAB_CLASS})` : ""; (0, _m_label.setLabelWidthByMaxLabelWidth)($container, `.${fieldItemClass}${cssExcludeTabbedSelector}`, labelMarkOptions) } _applyLabelsWidth($container, excludeTabbed, inOneColumn, colCount, labelMarkOptions) { colCount = inOneColumn ? 1 : colCount || this._getGroupColCount($container); const applyLabelsOptions = { excludeTabbed: excludeTabbed, inOneColumn: inOneColumn }; let i; for (i = 0; i < colCount; i++) { this._applyLabelsWidthByCol($container, i, applyLabelsOptions, labelMarkOptions) } } _getGroupElementsInColumn($container, columnIndex, colCount) { const cssColCountSelector = (0, _type.isDefined)(colCount) ? `.${_constants.GROUP_COL_COUNT_CLASS}${colCount}` : ""; const groupSelector = `.${_constants.FORM_FIELD_ITEM_COL_CLASS}${columnIndex} > .${_constants.FIELD_ITEM_CONTENT_CLASS} > .${_constants.FORM_GROUP_CLASS}${cssColCountSelector}`; return $container.find(groupSelector) } _applyLabelsWidthWithGroups($container, colCount, excludeTabbed, labelMarkOptions) { const { alignRootItemLabels: alignRootItemLabels } = this.option(); if (true === alignRootItemLabels) { const $rootSimpleItems = $container.find(`.${_constants.ROOT_SIMPLE_ITEM_CLASS}`); for (let colIndex = 0; colIndex < colCount; colIndex++) { this._applyLabelsWidthByCol($rootSimpleItems, colIndex, excludeTabbed, labelMarkOptions) } } const alignItemLabelsInAllGroups = this.option("alignItemLabelsInAllGroups"); if (alignItemLabelsInAllGroups) { this._applyLabelsWidthWithNestedGroups($container, colCount, excludeTabbed, labelMarkOptions) } else { const $groups = this.$element().find(`.${_constants.FORM_GROUP_CLASS}`); let i; for (i = 0; i < $groups.length; i++) { this._applyLabelsWidth($groups.eq(i), excludeTabbed, void 0, void 0, labelMarkOptions) } } } _applyLabelsWidthWithNestedGroups($container, colCount, excludeTabbed, labelMarkOptions) { const applyLabelsOptions = { excludeTabbed: excludeTabbed }; let colIndex; let groupsColIndex; let groupColIndex; let $groupsByCol; for (colIndex = 0; colIndex < colCount; colIndex++) { $groupsByCol = this._getGroupElementsInColumn($container, colIndex); this._applyLabelsWidthByCol($groupsByCol, 0, applyLabelsOptions, labelMarkOptions); for (groupsColIndex = 0; groupsColIndex < this._groupsColCount.length; groupsColIndex++) { $groupsByCol = this._getGroupElementsInColumn($container, colIndex, this._groupsColCount[groupsColIndex]); const groupColCount = this._getGroupColCount($groupsByCol); for (groupColIndex = 1; groupColIndex < groupColCount; groupColIndex++) { this._applyLabelsWidthByCol($groupsByCol, groupColIndex, applyLabelsOptions, labelMarkOptions) } } } } _labelLocation() { const { labelLocation: labelLocation } = this.option(); return labelLocation } _alignLabelsInColumn(_ref) { let { layoutManager: layoutManager, inOneColumn: inOneColumn, $container: $container, excludeTabbed: excludeTabbed, items: items } = _ref; if (!(0, _window.hasWindow)() || "top" === this._labelLocation()) { return } const labelMarkOptions = (0, _m_formLayout_manager.convertToLabelMarkOptions)(layoutManager._getMarkOptions()); if (inOneColumn) { this._applyLabelsWidth($container, excludeTabbed, true, void 0, labelMarkOptions) } else if (this._checkGrouping(items)) { this._applyLabelsWidthWithGroups($container, layoutManager._getColCount(), excludeTabbed, labelMarkOptions) } else { this._applyLabelsWidth($container, excludeTabbed, false, layoutManager._getColCount(), labelMarkOptions) } } _prepareFormData() { if (!(0, _type.isDefined)(this.option("formData"))) { this.option("formData", {}) } } _setStylingModeClass() { const { stylingMode: stylingMode } = this.option(); if ("underlined" === stylingMode) { this.$element().addClass(_constants.FORM_UNDERLINED_CLASS) } } _initMarkup() { _validation_engine.default.addGroup(this._getValidationGroup(), false); this._clearCachedInstances(); this._prepareFormData(); this.$element().addClass(_constants.FORM_CLASS); this._setStylingModeClass(); super._initMarkup(); this.setAria("role", "form", this.$element()); if (this.option("scrollingEnabled")) { this._renderScrollable() } this._renderLayout(); this._renderValidationSummary(); this._lastMarkupScreenFactor = this._targetScreenFactor || this._getCurrentScreenFactor(); this._attachResizeObserverSubscription() } _attachResizeObserverSubscription() { if ((0, _window.hasWindow)()) { const formRootElement = this.$element().get(0); _resize_observer.default.unobserve(formRootElement); _resize_observer.default.observe(formRootElement, (() => { this._resizeHandler() })) } } _resizeHandler() { if (this._cachedLayoutManagers.length) { (0, _iterator.each)(this._cachedLayoutManagers, ((_, layoutManager) => { var _layoutManager$option; null === (_layoutManager$option = layoutManager.option("onLayoutChanged")) || void 0 === _layoutManager$option || _layoutManager$option(layoutManager.isSingleColumnMode()) })) } } _getCurrentScreenFactor() { return (0, _window.hasWindow)() ? (0, _window.getCurrentScreenFactor)(this.option("screenByWidth")) : "lg" } _clearCachedInstances() { this._itemsRunTimeInfo.clear(); this._cachedLayoutManagers = [] } _alignLabels(layoutManager, inOneColumn) { this._alignLabelsInColumn({ $container: this.$element(), layoutManager: layoutManager, excludeTabbed: true, items: this.option("items"), inOneColumn: inOneColumn }); (0, _visibility_change.triggerResizeEvent)(this.$element().find(`.${_m_constants.TOOLBAR_CLASS}`)) } _clean() { this._clearValidationSummary(); super._clean(); this._groupsColCount = []; this._cachedColCountOptions = []; this._lastMarkupScreenFactor = void 0; _resize_observer.default.unobserve(this.$element().get(0)) } _renderScrollable() { const useNativeScrolling = this.option("useNativeScrolling"); this._scrollable = new _m_scrollable.default(this.$element(), { useNative: !!useNativeScrolling, useSimulatedScrollbar: !useNativeScrolling, useKeyboard: false, direction: "both", bounceEnabled: false }) } _getContent() { var _this$_scrollable; return this.option("scrollingEnabled") ? (0, _renderer.default)(null === (_this$_scrollable = this._scrollable) || void 0 === _this$_scrollable ? void 0 : _this$_scrollable.content()) : this.$element() } _clearValidationSummary() { var _this$_$validationSum; null === (_this$_$validationSum = this._$validationSummary) || void 0 === _this$_$validationSum || _this$_$validationSum.remove(); this._$validationSummary = void 0; this._validationSummary = void 0 } _renderValidationSummary() { this._clearValidationSummary(); if (this.option("showValidationSummary")) { this._$validationSummary = (0, _renderer.default)("<div>").addClass(_constants.FORM_VALIDATION_SUMMARY).appendTo(this._getContent()); this._validationSummary = this._$validationSummary.dxValidationSummary({ validationGroup: this._getValidationGroup() }).dxValidationSummary("instance") } } _prepareItems(items, parentIsTabbedItem, currentPath, isTabs) { if (items) { const result = []; for (let i = 0; i < items.length; i++) { let item = items[i]; const path = (0, _m_form4.concatPaths)(currentPath, (0, _m_form4.createItemPathByIndex)(i, isTabs)); const itemRunTimeInfo = { item: item, itemIndex: i, path: path }; const guid = this._itemsRunTimeInfo.add(itemRunTimeInfo); if ((0, _type.isString)(item)) { item = { dataField: item } } if ((0, _type.isObject)(item)) { const preparedItem = _extends({}, item); itemRunTimeInfo.preparedItem = preparedItem; preparedItem.guid = guid; this._tryPrepareGroupItemCaption(preparedItem); this._tryPrepareGroupItem(preparedItem); this._tryPrepareTabbedItem(preparedItem, path); this._tryPrepareItemTemplate(preparedItem); if (parentIsTabbedItem) { preparedItem.cssItemClass = _constants.FIELD_ITEM_TAB_CLASS } if (preparedItem.items) { preparedItem.items = this._prepareItems(preparedItem.items, parentIsTabbedItem, path) } result.push(preparedItem) } else { result.push(item) } } return result } } _tryPrepareGroupItemCaption(item) { if ("group" === item.itemType) { item._prepareGroupCaptionTemplate = captionTemplate => { if (item.captionTemplate) { item.groupCaptionTemplate = this._getTemplate(captionTemplate) } item.captionTemplate = this._itemGroupTemplate.bind(this, item) }; item._prepareGroupCaptionTemplate(item.captionTemplate) } } _tryPrepareGroupItem(item) { if ("group" === item.itemType) { item.alignItemLabels = (0, _common.ensureDefined)(item.alignItemLabels, true); item._prepareGroupItemTemplate = itemTemplate => { if (item.template) { item.groupContentTemplate = this._getTemplate(itemTemplate) } item.template = this._itemGroupTemplate.bind(this, item) }; item._prepareGroupItemTemplate(item.template) } } _tryPrepareTabbedItem(item, path) { if ("tabbed" === item.itemType) { item.template = this._itemTabbedTemplate.bind(this, item); item.tabs = this._prepareItems(item.tabs, true, path, true) } } _tryPrepareItemTemplate(item) { if (item.template) { item.template = this._getTemplate(item.template) } } _checkGrouping(items) { if (items) { for (let i = 0; i < items.length; i++) { const item = items[i]; if ("group" === item.itemType) { return true } } } } _renderLayout() { const that = this; let items = that.option("items"); const $content = that._getContent(); items = that._prepareItems(items); that._rootLayoutManager = that._renderLayoutManager($content, this._createLayoutManagerOptions(items, { isRoot: true, colCount: that.option("colCount"), alignItemLabels: that.option("alignItemLabels"), screenByWidth: this.option("screenByWidth"), colCountByScreen: this.option("colCountByScreen"), onLayoutChanged(inOneColumn) { that._alignLabels.bind(that)(that._rootLayoutManager, inOneColumn) }, onContentReady(e) { that._alignLabels(e.component, e.component.isSingleColumnMode()) } })) } _tryGetItemsForTemplate(item) { return item.items || [] } _itemTabbedTemplate(item, e, $container) { const $tabPanel = (0, _renderer.default)("<div>").appendTo($container); const tabPanelOptions = (0, _extend.extend)({}, item.tabPanelOptions, { dataSource: item.tabs, onItemRendered: args => { var _item$tabPanelOptions, _item$tabPanelOptions2; null === (_item$tabPanelOptions = item.tabPanelOptions) || void 0 === _item$tabPanelOptions || null === (_item$tabPanelOptions2 = _item$tabPanelOptions.onItemRendered) || void 0 === _item$tabPanelOptions2 || _item$tabPanelOptions2.call(_item$tabPanelOptions, args); (0, _visibility_change.triggerShownEvent)(args.itemElement) }, itemTemplate: (itemData, e, container) => { const $container = (0, _renderer.default)(container); const alignItemLabels = (0, _common.ensureDefined)(itemData.alignItemLabels, true); const layoutManager = this._renderLayoutManager($container, this._createLayoutManagerOptions(this._tryGetItemsForTemplate(itemData), { colCount: itemData.colCount, alignItemLabels: alignItemLabels, screenByWidth: this.option("screenByWidth"), colCountByScreen: itemData.colCountByScreen, cssItemClass: itemData.cssItemClass, onLayoutChanged: inOneColumn => { this._alignLabelsInColumn({ $container: $container, layoutManager: layoutManager, items: itemData.items, inOneColumn: inOneColumn }) } })); if (this._itemsRunTimeInfo) { this._itemsRunTimeInfo.extendRunTimeItemInfoByKey(itemData.guid, { layoutManager: layoutManager }) } if (alignItemLabels) { this._alignLabelsInColumn({ $container: $container, layoutManager: layoutManager, items: itemData.items, inOneColumn: layoutManager.isSingleColumnMode() }) } } }); const tryUpdateTabPanelInstance = (items, instance) => { if (Array.isArray(items)) { items.forEach((item => this._itemsRunTimeInfo.extendRunTimeItemInfoByKey(item.guid, { widgetInstance: instance }))) } }; const tabPanel = this._createComponent($tabPanel, _tab_panel.default, tabPanelOptions); (0, _renderer.default)($container).parent().addClass(_constants.FIELD_ITEM_CONTENT_HAS_TABS_CLASS); tabPanel.on("optionChanged", (e => { if ("dataSource" === e.fullName) { tryUpdateTabPanelInstance(e.value, e.component) } })); tryUpdateTabPanelInstance([{ guid: item.guid }, ...item.tabs ?? []], tabPanel) } _itemGroupCaptionTemplate(item, $group, id) { if (item.groupCaptionTemplate) { const $captionTemplate = (0, _renderer.default)("<div>").addClass(_constants.FORM_GROUP_CUSTOM_CAPTION_CLASS).attr("id", id).appendTo($group); item._renderGroupCaptionTemplate = () => { const data = { component: this, caption: item.caption, name: item.name }; item.groupCaptionTemplate.render({ model: data, container: (0, _element.getPublicElement)($captionTemplate) }) }; item._renderGroupCaptionTemplate(); return } if (item.caption) { (0, _renderer.default)("<span>").addClass(_constants.FORM_GROUP_CAPTION_CLASS).text(item.caption).attr("id", id).appendTo($group) } } _itemGroupContentTemplate(item, $group) { const $groupContent = (0, _renderer.default)("<div>").addClass(_constants.FORM_GROUP_CONTENT_CLASS).appendTo($group); if (item.groupContentTemplate) { item._renderGroupContentTemplate = () => { $groupContent.empty(); const data = { formData: this.option("formData"), component: this }; item.groupContentTemplate.render({ model: data, container: (0, _element.getPublicElement)($groupContent) }) }; item._renderGroupContentTemplate() } else { var _this$_itemsRunTimeIn; const layoutManager = this._renderLayoutManager($groupContent, this._createLayoutManagerOptions(this._tryGetItemsForTemplate(item), { colCount: item.colCount, colCountByScreen: item.colCountByScreen, alignItemLabels: item.alignItemLabels, cssItemClass: item.cssItemClass })); null === (_this$_itemsRunTimeIn = this._itemsRunTimeInfo) || void 0 === _this$_itemsRunTimeIn || _this$_itemsRunTimeIn.extendRunTimeItemInfoByKey(item.guid, { layoutManager: layoutManager }); const colCount = layoutManager._getColCount(); if (!this._groupsColCount.includes(colCount)) { this._groupsColCount.push(colCount) } $group.addClass(_constants.GROUP_COL_COUNT_CLASS + colCount); $group.attr(_constants.GROUP_COL_COUNT_ATTR, colCount) } } _itemGroupTemplate(item, options, $container) { const { id: id } = options.editorOptions.inputAttr; const $group = (0, _renderer.default)("<div>").toggleClass(_constants.FORM_GROUP_WITH_CAPTION_CLASS, (0, _type.isDefined)(item.caption) && item.caption.length).addClass(_constants.FORM_GROUP_CLASS).appendTo($container); const groupAria = { role: "group", labelledby: id }; this.setAria(groupAria, $group); (0, _renderer.default)($container).parent().addClass(_constants.FIELD_ITEM_CONTENT_HAS_GROUP_CLASS); this._itemGroupCaptionTemplate(item, $group, id); this._itemGroupContentTemplate(item, $group) } _createLayoutManagerOptions(items, extendedLayoutManagerOptions) { return (0, _m_form4.convertToLayoutManagerOptions)({ form: this, formOptions: this.option(), $formElement: this.$element(), items: items, validationGroup: this._getValidationGroup(), extendedLayoutManagerOptions: extendedLayoutManagerOptions, onFieldDataChanged: args => { if (!this._isDataUpdating) { this._triggerOnFieldDataChanged(args) } }, onContentReady: args => { var _extendedLayoutManage; this._itemsRunTimeInfo.addItemsOrExtendFrom(args.component._itemsRunTimeInfo); null === (_extendedLayoutManage = extendedLayoutManagerOptions.onContentReady) || void 0 === _extendedLayoutManage || _extendedLayoutManage.call(extendedLayoutManagerOptions, args) }, onDisposing: _ref2 => { let { component: component } = _ref2; const nestedItemsRunTimeInfo = component.getItemsRunTimeInfo(); this._itemsRunTimeInfo.removeItemsByItems(nestedItemsRunTimeInfo) }, onFieldItemRendered: () => { var _this$_validationSumm; null === (_this$_validationSumm = this._validationSummary) || void 0 === _this$_validationSumm || _this$_validationSumm.refreshValidationGroup() } }) } _renderLayoutManager($parent, layoutManagerOptions) { const baseColCountByScreen = { lg: layoutManagerOptions.colCount, md: layoutManagerOptions.colCount, sm: layoutManagerOptions.colCount, xs: 1 }; this._cachedColCountOptions.push({ colCountByScreen: (0, _extend.extend)(baseColCountByScreen, layoutManagerOptions.colCountByScreen) }); const $element = (0, _renderer.default)("<div>"); $element.appendTo($parent); const instance = this._createComponent($element, "dxLayoutManager", layoutManagerOptions); instance.on("autoColCountChanged", (() => { this._clearAutoColCountChangedTimeout(); this.autoColCountChangedTimeoutId = setTimeout((() => !this._disposed && this._refresh()), 0) })); this._cachedLayoutManagers.push(instance); return instance } _getValidationGroup() { return this.option("validationGroup") || this } _createComponent($element, type, config) { config = config || {}; this._extendConfig(config, { readOnly: this.option("readOnly") }); return super._createComponent($element, type, config) } _attachSyncSubscriptions() { const that = this; that.on("optionChanged", (args => { const optionFullName = args.fullName; if ("formData" === optionFullName) { if (!(0, _type.isDefined)(args.value)) { that._options.silent("formData", args.value = {}) } that._triggerOnFieldDataChangedByDataSet(args.value) } if (that._cachedLayoutManagers.length) { (0, _iterator.each)(that._cachedLayoutManagers, ((index, layoutManager) => { if ("formData" === optionFullName) { that._isDataUpdating = true; layoutManager.option("layoutData", args.value); that._isDataUpdating = false } if ("readOnly" === args.name || "disabled" === args.name) { layoutManager.option(optionFullName, args.value) } })) } })) } _optionChanged(args) { const splitFullName = args.fullName.split("."); if (splitFullName.length > 1 && -1 !== splitFullName[0].search("items") && this._itemsOptionChangedHandler(args)) { return } if (splitFullName.length > 1 && -1 !== splitFullName[0].search("formData") && this._formDataOptionChangedHandler(args)) { return } this._defaultOptionChangedHandler(args) } _defaultOptionChangedHandler(args) { switch (args.name) { case "formData": if (!this.option("items")) { this._invalidate() } else if ((0, _type.isEmptyObject)(args.value)) { this._clear() } break; case "onFieldDataChanged": case "alignRootItemLabels": case "readOnly": case "isDirty": break; case "items": case "colCount": case "onEditorEnterKey": case "labelLocation": case "labelMode": case "alignItemLabels": case "showColonAfterLabel": case "customizeItem": case "alignItemLabelsInAllGroups": case "showRequiredMark": case "showOptionalMark": case "requiredMark": case "optionalMark": case "requiredMessage": case "scrollingEnabled": case "formID": case "colCountByScreen": case "screenByWidth": case "stylingMode": this._invalidate(); break; case "showValidationSummary": this._renderValidationSummary(); break; case "minColWidth": { const { colCount: colCount } = this.option(); if ("auto" === colCount) { this._invalidate() } break } case "width": super._optionChanged(args); this._rootLayoutManager.option(args.name, args.value); this._alignLabels(this._rootLayoutManager, this._rootLayoutManager.isSingleColumnMode()); break; case "validationGroup": _validation_engine.default.removeGroup(args.previousValue || this); this._invalidate(); break; default: super._optionChanged(args) } } _itemsOptionChangedHandler(args) { const nameParts = args.fullName.split("."); const { value: value } = args; const itemPath = this._getItemPath(nameParts); const item = this.option(itemPath); const optionNameWithoutPath = args.fullName.replace(`${itemPath}.`, ""); const simpleOptionName = optionNameWithoutPath.split(".")[0].replace(/\[\d+]/, ""); const itemAction = this._tryCreateItemOptionAction(simpleOptionName, item, item[simpleOptionName], args.previousValue, itemPath); let result = this._tryExecuteItemOptionAction(itemAction) || this._tryChangeLayoutManagerItemOption(args.fullName, value); if (!result && item) { this._changeItemOption(item, optionNameWithoutPath, value); const items = this._generateItemsFromData(this.option("items")); this.option("items", items); result = true } return result } _formDataOptionChangedHandler(args) { const nameParts = args.fullName.split("."); const { value: value } = args; const dataField = nameParts.slice(1).join("."); const editor = this.getEditor(dataField); if (editor) { editor.option("value", value) } else { this._triggerOnFieldDataChanged({ dataField: dataField, value: value }) } return true } _tryCreateItemOptionAction(optionName, item, value, previousValue, itemPath) { if ("tabs" === optionName) { this._itemsRunTimeInfo.removeItemsByPathStartWith(`${itemPath}.tabs`); value = this._prepareItems(value, true, itemPath, true) } return (0, _m_form2.default)(optionName, { item: item, value: value, previousValue: previousValue, itemsRunTimeInfo: this._itemsRunTimeInfo }) } _tryExecuteItemOptionAction(action) { return null === action || void 0 === action ? void 0 : action.tryExecute() } _updateValidationGroupAndSummaryIfNeeded(fullName) { const optionName = (0, _m_form4.getOptionNameFromFullName)(fullName); if (ITEM_OPTIONS_FOR_VALIDATION_UPDATING.includes(optionName)) { _validation_engine.default.addGroup(this._getValidationGroup(), false); if (this.option("showValidationSummary")) { var _this$_validationSumm2; null === (_this$_validationSumm2 = this._validationSummary) || void 0 === _this$_validationSumm2 || _this$_validationSumm2.refreshValidationGroup() } } } _setLayoutManagerItemOption(layoutManager, optionName, value, path) { if (this._updateLockCount > 0) { !layoutManager._updateLockCount && layoutManager.beginUpdate(); const key = this._itemsRunTimeInfo.findKeyByPath(path); this.postponedOperations.add(key, (() => { !layoutManager._disposed && layoutManager.endUpdate(); return (0, _deferred.Deferred)().resolve() })) } const contentReadyHandler = e => { e.component.off("contentReady", contentReadyHandler); if ((0, _m_form4.isFullPathContainsTabs)(path)) { const tabPath = (0, _m_form4.tryGetTabPath)(path); const tabLayoutManager = this._itemsRunTimeInfo.findGroupOrTabLayoutManagerByPath(tabPath); if (tabLayoutManager) { this._alignLabelsInColumn({ items: tabLayoutManager.option("items"), layoutManager: tabLayoutManager, $container: tabLayoutManager.$element(), inOneColumn: tabLayoutManager.isSingleColumnMode() }) } } else { this._alignLabels(this._rootLayoutManager, this._rootLayoutManager.isSingleColumnMode()) } }; layoutManager.on("contentReady", contentReadyHandler); layoutManager.option(optionName, value); this._updateValidationGroupAndSummaryIfNeeded(optionName) } _tryChangeLayoutManagerItemOption(fullName, value) { const nameParts = fullName.split("."); const optionName = (0, _m_form4.getOptionNameFromFullName)(fullName); if ("items" === optionName && nameParts.length > 1) { const itemPath = this._getItemPath(nameParts); const layoutManager = this._itemsRunTimeInfo.findGroupOrTabLayoutManagerByPath(itemPath); if (layoutManager) { this._itemsRunTimeInfo.removeItemsByItems(layoutManager.getItemsRunTimeInfo()); const items = this._prepareItems(value, false, itemPath); this._setLayoutManagerItemOption(layoutManager, optionName, items, itemPath); return true } } else if (nameParts.length > 2) { const endPartIndex = nameParts.length - 2; const itemPath = this._getItemPath(nameParts.slice(0, endPartIndex)); const layoutManager = this._itemsRunTimeInfo.findGroupOrTabLayoutManagerByPath(itemPath); if (layoutManager) { const fullOptionName = (0, _m_form4.getFullOptionName)(nameParts[endPartIndex], optionName); if ("editorType" === optionName) { if (layoutManager.option(fullOptionName) !== value) { return false } } if ("visible" === optionName) { const formItems = this.option((0, _m_form4.getFullOptionName)(itemPath, "items")); if (null !== formItems && void 0 !== formItems && formItems.length) { const layoutManagerItems = layoutManager.option("items"); formItems.forEach(((item, index) => { const layoutItem = layoutManagerItems[index]; layoutItem.visibleIndex = item.visibleIndex })) } } this._setLayoutManagerItemOption(layoutManager, fullOptionName, value, itemPath); return true } } return false } _tryChangeLayoutManagerItemOptions(itemPath, options) { let result; this.beginUpdate(); (0, _iterator.each)(options, ((optionName, optionValue) => { result = this._tryChangeLayoutManagerItemOption((0, _m_form4.getFullOptionName)(itemPath, optionName), optionValue); if (!result) { return false } })); this.endUpdate(); return result } _getItemPath(nameParts) { let itemPath = nameParts[0]; let i; for (i = 1; i < nameParts.length; i++) { if (-1 !== nameParts[i].search(/items\[\d+]|tabs\[\d+]/)) { itemPath += `.${nameParts[i]}` } else { break } } return itemPath } _triggerOnFieldDataChanged(args) { this._updateIsDirty(args.dataField); this._createActionByOption("onFieldDataChanged")(args) } _triggerOnFieldDataChangedByDataSet(data) { if (data && (0, _type.isObject)(data)) { Object.keys(data).forEach((key => { this._triggerOnFieldDataChanged({ dataField: key, value: data[key] }) })) } } _updateFieldValue(dataField, value) { if ((0, _type.isDefined)(this.option("formData"))) { const editor = this.getEditor(dataField); this.option(`formData.${dataField}`, value); if (editor) { const editorValue = editor.option("value"); if (editorValue !== value) { editor.option("value", value) } } } } _generateItemsFromData(items) { const formData = this.option("formData"); const result = []; if (!items && (0, _type.isDefined)(formData)) { (0, _iterator.each)(formData, (dataField => { result.push({ dataField: dataField }) })) } if (items) { (0, _iterator.each)(items, ((index, item) => { if ((0, _type.isObject)(item)) { result.push(item) } else { result.push({ dataField: item }) } })) } return result } _getItemByField(field, items) { const that = this; const fieldParts = (0, _type.isObject)(field) ? field : that._getFieldParts(field); const { fieldName: fieldName } = fieldParts; const { fieldPath: fieldPath } = fieldParts; let resultItem; if (items.length) { (0, _iterator.each)(items, ((index, item) => { const { itemType: itemType } = item; if (fieldPath.length) { const path = fieldPath.slice(); item = that._getItemByFieldPath(path, fieldName, item) } else if ("group" === itemType && !(item.caption || item.name) || "tabbed" === itemType && !item.name) { const subItemsField = that._getSubItemField(itemType); item.items = that._generateItemsFromData(item.items); item = that._getItemByField({ fieldName: fieldName, fieldPath: fieldPath }, item[subItemsField]) } if ((0, _m_form4.isEqualToDataFieldOrNameOrTitleOrCaption)(item, fieldName)) { resultItem = item; return false } })) } return resultItem } _getFieldParts(field) { let fieldName = field; let separatorIndex = fieldName.indexOf("."); const resultPath = []; while (-1 !== separatorIndex) { resultPath.push(fieldName.substr(0, separatorIndex)); fieldName = fieldName.substr(separatorIndex + 1); separatorIndex = fieldName.indexOf(".") } return { fieldName: fieldName, fieldPath: resultPath.reverse() } } _getItemByFieldPath(path, fieldName, item) { const that = this; const { itemType: itemType } = item; const subItemsField = that._getSubItemField(itemType); const isItemWithSubItems = "group" === itemType || "tabbed" === itemType || item.title; let result; do { if (isItemWithSubItems) { const name = item.name || item.caption || item.title; const isGroupWithName = (0, _type.isDefined)(name); const nameWithoutSpaces = (0, _m_form4.getTextWithoutSpaces)(name); let pathNode; item[subItemsField] = that._generateItemsFromData(item[subItemsField]); if (isGroupWithName) { pathNode = path.pop() } if (!path.length) { result = that._getItemByField(fieldName, item[subItemsField]); if (result) { break } } if (!isGroupWithName || isGroupWithName && nameWithoutSpaces === pathNode) { if (path.length) { result = that._searchItemInEverySubItem(path, fieldName, item[subItemsField]) } } } else { break } } while (path.length && !(0, _type.isDefined)(result)); return result } _getSubItemField(itemType) { return "tabbed" === itemType ? "tabs" : "items" } _searchItemInEverySubItem(path, fieldName, items) { const that = this; let result; (0, _iterator.each)(items, ((index, groupItem) => { result = that._getItemByFieldPath(path.slice(), fieldName, groupItem); if (result) { return false } })); if (!result) { result = false } return result } _changeItemOption(item, option, value) { if ((0, _type.isObject)(item)) { item[option] = value } } _dimensionChanged() { const currentScreenFactor = this._getCurrentScreenFactor(); if (this._lastMarkupScreenFactor !== currentScreenFactor) { if (this._isColCountChanged(this._lastMarkupScreenFactor, currentScreenFactor)) { this._targetScreenFactor = currentScreenFactor; this._refresh(); this._targetScreenFactor = void 0 } this._lastMarkupScreenFactor = currentScreenFactor } } _isColCountChanged(oldScreenSize, newScreenSize) { let isChanged = false; (0, _iterator.each)(this._cachedColCountOptions, ((index, item) => { if (item.colCountByScreen[oldScreenSize] !== item.colCountByScreen[newScreenSize]) { isChanged = true; return false } })); return isChanged } _refresh() { const editorSelector = `.${_m_text_editor.TEXTEDITOR_CLASS}.${_widget.FOCUSED_STATE_CLASS}:not(.${_m_drop_down_editor.DROP_DOWN_EDITOR_CLASS}) .${_m_text_editor.TEXTEDITOR_INPUT_CLASS}`; _events_engine.default.trigger(this.$element().find(editorSelector), "change"); super._refresh() } _updateIsDirty(dataField) { const editor = this.getEditor(dataField); if (!editor) { return } if (editor.option("isDirty")) { this._dirtyFields.add(dataField) } else { this._dirtyFields.delete(dataField) } this.option("isDirty", !!this._dirtyFields.size) } updateRunTimeInfoForEachEditor(editorAction) { this._itemsRunTimeInfo.each(((_, itemRunTimeInfo) => { const { widgetInstance: widgetInstance } = itemRunTimeInfo; if ((0, _type.isDefined)(widgetInstance) && _editor.default.isEditor(widgetInstance)) { editorAction(widgetInstance) } })) } _clear() { this.updateRunTimeInfoForEachEditor((editor => { editor.clear(); editor.option("isValid", true) })); _validation_engine.default.resetGroup(this._getValidationGroup()) } _updateData(data, value, isComplexData) { const that = this; const _data = isComplexData ? value : data; if ((0, _type.isObject)(_data)) { (0, _iterator.each)(_data, ((dataField, fieldValue) => { that._updateData(isComplexData ? `${data}.${dataField}` : dataField, fieldValue, (0, _type.isObject)(fieldValue)) })) } else if ((0, _type.isString)(data)) { that._updateFieldValue(data, value) } } registerKeyHandler(key, handler) { super.registerKeyHandler(key, handler); this._itemsRunTimeInfo.each(((_, itemRunTimeInfo) => { if ((0, _type.isDefined)(itemRunTimeInfo.widgetInstance)) { itemRunTimeInfo.widgetInstance.registerKeyHandler(key, handler) } })) } _focusTarget() { return this.$element().find(`.${_constants.FIELD_ITEM_CONTENT_CLASS} [tabindex]`).first() } _visibilityChanged() { this._alignLabels(this._rootLayoutManager, this._rootLayoutManager.isSingleColumnMode()) } _clearAutoColCountChangedTimeout() { if (this.autoColCountChangedTimeoutId) { clearTimeout(this.autoColCountChangedTimeoutId); this.autoColCountChangedTimeoutId = void 0 } } _dispose() { this._clearAutoColCountChangedTimeout(); _validation_engine.default.removeGroup(this._getValidationGroup()); super._dispose() } clear() { this._clear() } resetValues() { this._clear() } reset(editorsData) { this.updateRunTimeInfoForEachEditor((editor => { const editorName = editor.option("name"); if (editorsData && editorName in editorsData) { editor.reset(editorsData[editorName]); this._updateIsDirty(editorName) } else { editor.reset() } })); this._renderValidationSummary() } updateData(data, value) { this._updateData(data, value) } getEditor(dataField) { return this._itemsRunTimeInfo.findWidgetInstanceByDataField(dataField) || this._itemsRunTimeInfo.findWidgetInstanceByName(dataField) } getButton(name) { return this._itemsRunTimeInfo.findWidgetInstanceByName(name) } updateDimensions() { const that = this; const deferred = (0, _deferred.Deferred)(); if (that._scrollable) { that._scrollable.update().done((() => { deferred.resolveWith(that) })) } else { deferred.resolveWith(that) } return deferred.promise() } itemOption(id, option, value) { const items = this._generateItemsFromData(this.option("items")); const item = this._getItemByField(id, items); const path = (0, _m_form4.getItemPath)(items, item); if (!item) { return } switch (arguments.length) { case 1: return item; case 3: { const itemAction = this._tryCreateItemOptionAction(option, item, value, item[option], path); this._changeItemOption(item, option, value); const fullName = (0, _m_form4.getFullOptionName)(path, option); if (!this._tryExecuteItemOptionAction(itemAction) && !this._tryChangeLayoutManagerItemOption(fullName, value)) { this.option("items", items) } break } default: if ((0, _type.isObject)(option)) { if (!this._tryChangeLayoutManagerItemOptions(path, option)) { let allowUpdateItems; (0, _iterator.each)(option, ((optionName, optionValue) => { const itemAction = this._tryCreateItemOptionAction(optionName, item, optionValue, item[optionName], path); this._changeItemOption(item, optionName, optionValue); if (!allowUpdateItems && !this._tryExecuteItemOptionAction(itemAction)) { allowUpdateItems = true } })); allowUpdateItems && this.option("items", items) } } } } validate() { return _validation_engine.default.validateGroup(this._getValidationGroup()) } getItemID(name) { const { formID: formID } = this.option(); return `dx_${formID}_${name||new _guid.default}` } getTargetScreenFactor() { return this._targetScreenFactor } }(0, _component_registrator.default)("dxForm", Form); exports.default = Form }, 39376: /*!*****************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/ui/form/m_form.layout_manager.js ***! \*****************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; __webpack_require__( /*! ../../../ui/text_box */ 20780); __webpack_require__( /*! ../../../ui/number_box */ 48042); __webpack_require__( /*! ../../../ui/check_box */ 94319); __webpack_require__( /*! ../../../ui/date_box */ 2739); __webpack_require__( /*! ../../../ui/button */ 64973); var _events_engine = _interopRequireDefault(__webpack_require__( /*! ../../../common/core/events/core/events_engine */ 92774)); var _remove = __webpack_require__( /*! ../../../common/core/events/remove */ 28630); var _message = _interopRequireDefault(__webpack_require__( /*! ../../../common/core/localization/message */ 4671)); var _component_registrator = _interopRequireDefault(__webpack_require__( /*! ../../../core/component_registrator */ 92848)); var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../../core/renderer */ 64553)); var _array = __webpack_require__( /*! ../../../core/utils/array */ 94487); var _data = __webpack_require__( /*! ../../../core/utils/data */ 31e3); var _extend = __webpack_require__( /*! ../../../core/utils/extend */ 52576); var _iterator = __webpack_require__( /*! ../../../core/utils/iterator */ 21274); var _size = __webpack_require__( /*! ../../../core/utils/size */ 57653); var _type = __webpack_require__( /*! ../../../core/utils/type */ 11528); var _variable_wrapper = _interopRequireDefault(__webpack_require__( /*! ../../../core/utils/variable_wrapper */ 40216)); var _window = __webpack_require__( /*! ../../../core/utils/window */ 3104); var _widget = _interopRequireDefault(__webpack_require__( /*! ../../core/widget/widget */ 89275)); var _m_responsive_box = _interopRequireDefault(__webpack_require__( /*! ../../ui/m_responsive_box */ 33979)); var _m_button_item = __webpack_require__( /*! ./components/m_button_item */ 28365); var _m_empty_item = __webpack_require__( /*! ./components/m_empty_item */ 15602); var _m_field_item = __webpack_require__( /*! ./components/m_field_item */ 64949); var _constants = __webpack_require__( /*! ./constants */ 96891); var _m_form = _interopRequireDefault(__webpack_require__( /*! ./m_form.items_runtime_info */ 15910)); var _m_formLayout_manager = __webpack_require__( /*! ./m_form.layout_manager.utils */ 44551); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } function _extends() { return _extends = Object.assign ? Object.assign.bind() : function(n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) { ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]) } } return n }, _extends.apply(null, arguments) } class LayoutManager extends _widget.default { _getDefaultOptions() { return _extends({}, super._getDefaultOptions(), { layoutData: {}, readOnly: false, colCount: 1, labelLocation: "left", onFieldDataChanged: null, onEditorEnterKey: null, customizeItem: null, alignItemLabels: true, minColWidth: 200, showRequiredMark: true, screenByWidth: null, showOptionalMark: false, requiredMark: "*", labelMode: "outside", optionalMark: _message.default.format("dxForm-optionalMark"), requiredMessage: _message.default.getFormatter("dxForm-requiredMessage") }) } _setOptionsByReference() { super._setOptionsByReference(); (0, _extend.extend)(this._optionsByReference, { layoutData: true, validationGroup: true }) } _init() { const layoutData = this.option("layoutData"); super._init(); this._itemWatchers = []; this._itemsRunTimeInfo = new _m_form.default; this._updateReferencedOptions(layoutData); this._initDataAndItems(layoutData) } _dispose() { super._dispose(); this._cleanItemWatchers() } _initDataAndItems(initialData) { this._syncDataWithItems(); this._updateItems(initialData) } _syncDataWithItems() { const layoutData = this.option("layoutData"); const userItems = this.option("items"); if ((0, _type.isDefined)(userItems)) { userItems.forEach((item => { if (item.dataField && void 0 === this._getDataByField(item.dataField)) { let value; if (item.editorOptions) { value = item.editorOptions.value } if ((0, _type.isDefined)(value) || item.dataField in layoutData) { this._updateFieldValue(item.dataField, value) } } })) } } _getDataByField(dataField) { return dataField ? this.option(`layoutData.${dataField}`) : null } _isCheckboxUndefinedStateEnabled(_ref) { let { allowIndeterminateState: allowIndeterminateState, editorType: editorType, dataField: dataField } = _ref; if (true === allowIndeterminateState && "dxCheckBox" === editorType) { const nameParts = ["layoutData", ...dataField.split(".")]; const propertyName = nameParts.pop(); const layoutData = this.option(nameParts.join(".")); return layoutData && propertyName in layoutData } return false } _updateFieldValue(dataField, value) { const layoutData = this.option("layoutData"); let newValue = value; if (!_variable_wrapper.default.isWrapped(layoutData[dataField]) && (0, _type.isDefined)(dataField)) { this.option(`layoutData.${dataField}`, newValue) } else if (_variable_wrapper.default.isWritableWrapped(layoutData[dataField])) { newValue = (0, _type.isFunction)(newValue) ? newValue() : newValue; layoutData[dataField](newValue) } this._triggerOnFieldDataChanged({ dataField: dataField, value: newValue }) } _triggerOnFieldDataChanged(args) { this._createActionByOption("onFieldDataChanged")(args) } _updateItems(layoutData) { const that = this; const userItems = this.option("items"); const isUserItemsExist = (0, _type.isDefined)(userItems); const { customizeItem: customizeItem } = this.option(); const items = isUserItemsExist ? userItems : this._generateItemsByData(layoutData); if ((0, _type.isDefined)(items)) { const processedItems = []; (0, _iterator.each)(items, ((index, item) => { if (that._isAcceptableItem(item)) { item = that._processItem(item); customizeItem && customizeItem(item); if ((0, _type.isObject)(item) && false !== _variable_wrapper.default.unwrap(item.visible)) { processedItems.push(item) } } })); if (!that._itemWatchers.length || !isUserItemsExist) { that._updateItemWatchers(items) } this._setItems(processedItems); this._sortItems() } } _cleanItemWatchers() { this._itemWatchers.forEach((dispose => { dispose() })); this._itemWatchers = [] } _updateItemWatchers(items) { const that = this; const watch = that._getWatch(); items.forEach((item => { if ((0, _type.isObject)(item) && (0, _type.isDefined)(item.visible) && (0, _type.isFunction)(watch)) { that._itemWatchers.push(watch((() => _variable_wrapper.default.unwrap(item.visible)), (() => { that._updateItems(that.option("layoutData")); that.repaint() }), { skipImmediate: true })) } })) } _generateItemsByData(layoutData) { const result = []; if ((0, _type.isDefined)(layoutData)) { (0, _iterator.each)(layoutData, (dataField => { result.push({ dataField: dataField }) })) } return result } _isAcceptableItem(item) { const itemField = item.dataField || item; const itemData = this._getDataByField(itemField); return !((0, _type.isFunction)(itemData) && !_variable_wrapper.default.isWrapped(itemData)) } _processItem(item) { if ("string" === typeof item) { item = { dataField: item } } if ("object" === typeof item && !item.itemType) { item.itemType = _constants.SIMPLE_ITEM_TYPE } if (!(0, _type.isDefined)(item.editorType) && (0, _type.isDefined)(item.dataField)) { const value = this._getDataByField(item.dataField); item.editorType = (0, _type.isDefined)(value) ? this._getEditorTypeByDataType((0, _type.type)(value)) : "dxTextBox" } if ("dxCheckBox" === item.editorType) { item.allowIndeterminateState = item.allowIndeterminateState ?? true } return item } _getEditorTypeByDataType(dataType) { switch (dataType) { case "number": return "dxNumberBox"; case "date": return "dxDateBox"; case "boolean": return "dxCheckBox"; default: return "dxTextBox" } } _sortItems() { (0, _array.normalizeIndexes)(this._items, "visibleIndex"); this._sortIndexes() } _sortIndexes() { this._items.sort(((itemA, itemB) => { const indexA = itemA.visibleIndex; const indexB = itemB.visibleIndex; let result; if (indexA > indexB) { result = 1 } else if (indexA < indexB) { result = -1 } else { result = 0 } return result })) } _initMarkup() { this._itemsRunTimeInfo.clear(); this.$element().addClass(_constants.FORM_LAYOUT_MANAGER_CLASS); super._initMarkup(); this._renderResponsiveBox() } _renderResponsiveBox() { const that = this; const templatesInfo = []; if (that._items && that._items.length) { const colCount = that._getColCount(); const $container = (0, _renderer.default)("<div>").appendTo(that.$element()); that._prepareItemsWithMerging(colCount); const layoutItems = that._generateLayoutItems(); that._responsiveBox = that._createComponent($container, _m_responsive_box.default, that._getResponsiveBoxConfig(layoutItems, colCount, templatesInfo)); if (!(0, _window.hasWindow)()) { that._renderTemplates(templatesInfo) } } } _itemStateChangedHandler(e) { this._refresh() } _renderTemplates(templatesInfo) { const that = this; let itemsWithLabelTemplateCount = 0; templatesInfo.forEach((_ref2 => { var _item$label; let { item: item } = _ref2; if (null !== item && void 0 !== item && null !== (_item$label = item.label) && void 0 !== _item$label && _item$label.template) { itemsWithLabelTemplateCount++ } })); (0, _iterator.each)(templatesInfo, ((index, info) => { switch (info.itemType) { case "empty": (0, _m_empty_item.renderEmptyItem)(info); break; case "button": that._renderButtonItem(info); break; default: that._renderFieldItem(info, itemsWithLabelTemplateCount) } })) } _getResponsiveBoxConfig(layoutItems, colCount, templatesInfo) { const that = this; const colCountByScreen = that.option("colCountByScreen"); const xsColCount = colCountByScreen && colCountByScreen.xs; return { onItemStateChanged: this._itemStateChangedHandler.bind(this), onLayoutChanged() { const { onLayoutChanged: onLayoutChanged } = that.option(); const isSingleColumnMode = that.isSingleColumnMode(); if (onLayoutChanged) { that.$element().toggleClass(_constants.LAYOUT_MANAGER_ONE_COLUMN, isSingleColumnMode); onLayoutChanged(isSingleColumnMode) } }, onContentReady(e) { if ((0, _window.hasWindow)()) { that._renderTemplates(templatesInfo) } if (that.option("onLayoutChanged")) { that.$element().toggleClass(_constants.LAYOUT_MANAGER_ONE_COLUMN, that.isSingleColumnMode(e.component)) } }, itemTemplate(e, itemData, itemElement) { if (!e.location) { return } const $itemElement = (0, _renderer.default)(itemElement); const itemRenderedCountInPreviousRows = e.location.row * colCount; const item = that._items[e.location.col + itemRenderedCountInPreviousRows]; if (!item) { return } const itemCssClassList = [item.cssClass]; $itemElement.toggleClass(_constants.SINGLE_COLUMN_ITEM_CONTENT, that.isSingleColumnMode(this)); if (0 === e.location.row) { itemCssClassList.push("dx-first-row") } if (0 === e.location.col) { itemCssClassList.push("dx-first-col") } if (item.itemType === _constants.SIMPLE_ITEM_TYPE && that.option("isRoot")) { $itemElement.addClass(_constants.ROOT_SIMPLE_ITEM_CLASS) } const isLastColumn = e.location.col === colCount - 1 || e.location.col + e.location.colspan === colCount; const rowsCount = that._getRowsCount(); const isLastRow = e.location.row === rowsCount - 1; if (isLastColumn) { itemCssClassList.push("dx-last-col") } if (isLastRow) { itemCssClassList.push("dx-last-row") } if ("empty" !== item.itemType) { itemCssClassList.push(_constants.FIELD_ITEM_CLASS); itemCssClassList.push(that.option("cssItemClass")); if ((0, _type.isDefined)(item.col)) { itemCssClassList.push(`dx-col-${item.col}`) } } templatesInfo.push({ itemType: item.itemType, item: item, $parent: $itemElement, rootElementCssClassList: itemCssClassList }) }, cols: that._generateRatio(colCount), rows: that._generateRatio(that._getRowsCount(), true), dataSource: layoutItems, screenByWidth: that.option("screenByWidth"), singleColumnScreen: xsColCount ? false : "xs" } } _getColCount() { let { colCount: colCount } = this.option(); const colCountByScreen = this.option("colCountByScreen"); if (colCountByScreen) { const { form: form } = this.option(); let screenFactor = null === form || void 0 === form ? void 0 : form.getTargetScreenFactor(); if (!screenFactor) { screenFactor = (0, _window.hasWindow)() ? (0, _window.getCurrentScreenFactor)(this.option("screenByWidth")) : "lg" } colCount = colCountByScreen[screenFactor] || colCount } if ("auto" === colCount) { if (this._cashedColCount) { return this._cashedColCount } this._cashedColCount = colCount = this._getMaxColCount() } return colCount < 1 ? 1 : colCount } _getMaxColCount() { if (!(0, _window.hasWindow)()) { return 1 } const minColWidth = this.option("minColWidth"); const width = (0, _size.getWidth)(this.$element()); const itemsCount = this._items.length; const maxColCount = Math.floor(width / minColWidth) || 1; return itemsCount < maxColCount ? itemsCount : maxColCount } isCachedColCountObsolete() { return this._cashedColCount && this._getMaxColCount() !== this._cashedColCount } _prepareItemsWithMerging(colCount) { const items = this._items.slice(0); let item; let itemsMergedByCol; let result = []; let j; let i; for (i = 0; i < items.length; i++) { item = items[i]; result.push(item); if (this.option("alignItemLabels") || item.alignItemLabels || item.colSpan) { item.col = this._getColByIndex(result.length - 1, colCount) } if (item.colSpan > 1 && item.col + item.colSpan <= colCount) { itemsMergedByCol = []; for (j = 0; j < item.colSpan - 1; j++) { itemsMergedByCol.push({ merged: true }) } result = result.concat(itemsMergedByCol) } else { delete item.colSpan } } this._setItems(result) } _getColByIndex(index, colCount) { return index % colCount } _setItems(items) { this._items = items; this._cashedColCount = null } _generateLayoutItems() { const items = this._items; const colCount = this._getColCount(); const result = []; let item; let i; for (i = 0; i < items.length; i++) { item = items[i]; if (!item.merged) { const generatedItem = { location: { row: parseInt(i / colCount), col: this._getColByIndex(i, colCount) } }; if ((0, _type.isDefined)(item.disabled)) { generatedItem.disabled = item.disabled } if ((0, _type.isDefined)(item.visible)) { generatedItem.visible = item.visible } if ((0, _type.isDefined)(item.colSpan)) { generatedItem.location.colspan = item.colSpan } if ((0, _type.isDefined)(item.rowSpan)) { generatedItem.location.rowspan = item.rowSpan } result.push(generatedItem) } } return result } _renderEmptyItem($container) { (0, _m_empty_item.renderEmptyItem)({ $container: $container }) } _renderButtonItem(_ref3) { let { item: item, $parent: $parent, rootElementCssClassList: rootElementCssClassList } = _ref3; const { $rootElement: $rootElement, buttonInstance: buttonInstance } = (0, _m_button_item.renderButtonItem)({ item: item, $parent: $parent, rootElementCssClassList: rootElementCssClassList, validationGroup: this.option("validationGroup"), createComponentCallback: this._createComponent.bind(this) }); this._itemsRunTimeInfo.add({ item: item, widgetInstance: buttonInstance, guid: item.guid, $itemContainer: $rootElement }) } _renderFieldItem(_ref4, itemsWithLabelTemplateCount) { var _item$label2; let { item: item, $parent: $parent, rootElementCssClassList: rootElementCssClassList } = _ref4; const editorValue = this._getDataByField(item.dataField); let canAssignUndefinedValueToEditor = false; if (void 0 === editorValue) { const { allowIndeterminateState: allowIndeterminateState, editorType: editorType, dataField: dataField } = item; canAssignUndefinedValueToEditor = this._isCheckboxUndefinedStateEnabled({ allowIndeterminateState: allowIndeterminateState, editorType: editorType, dataField: dataField }) } const name = item.dataField || item.name; const formOrLayoutManager = this._getFormOrThis(); const { form: form } = this.option(); const { $fieldEditorContainer: $fieldEditorContainer, widgetInstance: widgetInstance, $rootElement: $rootElement } = (0, _m_field_item.renderFieldItem)((0, _m_formLayout_manager.convertToRenderFieldItemOptions)({ $parent: $parent, rootElementCssClassList: rootElementCssClassList, item: item, name: name, editorValue: editorValue, canAssignUndefinedValueToEditor: canAssignUndefinedValueToEditor, formOrLayoutManager: this._getFormOrThis(), createComponentCallback: this._createComponent.bind(this), formLabelLocation: this.option("labelLocation"), requiredMessageTemplate: this.option("requiredMessage"), validationGroup: this.option("validationGroup"), editorValidationBoundary: this.option("validationBoundary"), editorStylingMode: null === form || void 0 === form ? void 0 : form.option("stylingMode"), showColonAfterLabel: this.option("showColonAfterLabel"), managerLabelLocation: this.option("labelLocation"), template: item.template ? this._getTemplate(item.template) : null, labelTemplate: null !== (_item$label2 = item.label) && void 0 !== _item$label2 && _item$label2.template ? this._getTemplate(item.label.template) : null, itemId: null === form || void 0 === form ? void 0 : form.getItemID(name), managerMarkOptions: this._getMarkOptions(), labelMode: this.option("labelMode"), onLabelTemplateRendered: () => { this._incTemplateRenderedCallCount(); if (this._shouldAlignLabelsOnTemplateRendered(formOrLayoutManager, itemsWithLabelTemplateCount)) { formOrLayoutManager._alignLabels(this, this.isSingleColumnMode(formOrLayoutManager)) } } })); const { onFieldItemRendered: onFieldItemRendered } = this.option(); null === onFieldItemRendered || void 0 === onFieldItemRendered || onFieldItemRendered(); if (widgetInstance && item.dataField) { this._bindDataField(widgetInstance, item.dataField, item.editorType, $fieldEditorContainer) } this._itemsRunTimeInfo.add({ item: item, widgetInstance: widgetInstance, guid: item.guid, $itemContainer: $rootElement }) } _incTemplateRenderedCallCount() { this._labelTemplateRenderedCallCount = (this._labelTemplateRenderedCallCount ?? 0) + 1 } _shouldAlignLabelsOnTemplateRendered(formOrLayoutManager, totalItemsWithLabelTemplate) { return formOrLayoutManager.option("templatesRenderAsynchronously") && this._labelTemplateRenderedCallCount === totalItemsWithLabelTemplate } _getMarkOptions() { return { showRequiredMark: this.option("showRequiredMark"), requiredMark: this.option("requiredMark"), showOptionalMark: this.option("showOptionalMark"), optionalMark: this.option("optionalMark") } } _getFormOrThis() { const { form: form } = this.option(); return form || this } _bindDataField(editorInstance, dataField, editorType, $container) { const formOrThis = this._getFormOrThis(); editorInstance.on("enterKey", (args => { formOrThis._createActionByOption("onEditorEnterKey")((0, _extend.extend)(args, { dataField: dataField })) })); this._createWatcher(editorInstance, $container, dataField); this.linkEditorToDataField(editorInstance, dataField) } _createWatcher(editorInstance, $container, dataField) { const that = this; const watch = that._getWatch(); if (!(0, _type.isFunction)(watch)) { return } const dispose = watch((() => that._getDataByField(dataField)), (() => { const fieldValue = that._getDataByField(dataField); if ("dxTagBox" === editorInstance.NAME) { const editorValue = editorInstance.option("value"); if (fieldValue !== editorValue && function(array1, array2) { if (!Array.isArray(array1) || !Array.isArray(array2) || array1.length !== array2.length) { return false } for (let i = 0; i < array1.length; i++) { if (array1[i] !== array2[i]) { return false } } return true }(fieldValue, editorValue)) { return } } editorInstance.option("value", fieldValue) }), { deep: true, skipImmediate: true }, { createWatcherDataField: dataField }); _events_engine.default.on($container, _remove.removeEvent, dispose) } _getWatch() { if (!(0, _type.isDefined)(this._watch)) { const { form: formInstance } = this.option(); this._watch = formInstance && formInstance.option("integrationOptions.watchMethod") } return this._watch } _createComponent($editor, type, editorOptions) { const readOnlyState = this.option("readOnly"); let hasEditorReadOnly = Object.hasOwn(editorOptions, "readOnly"); const instance = super._createComponent($editor, type, _extends({}, editorOptions, { readOnly: !hasEditorReadOnly ? readOnlyState : editorOptions.readOnly })); let isChangeByForm = false; instance.on("optionChanged", (args => { if ("readOnly" === args.name && !isChangeByForm) { hasEditorReadOnly = true } })); this.on("optionChanged", (args => { if ("readOnly" === args.name && !hasEditorReadOnly) { isChangeByForm = true; instance.option(args.name, args.value); isChangeByForm = false } })); return instance } _generateRatio(count, isAutoSize) { const result = []; let ratio; let i; for (i = 0; i < count; i++) { ratio = { ratio: 1 }; if (isAutoSize) { ratio.baseSize = "auto" } result.push(ratio) } return result } _getRowsCount() { return Math.ceil(this._items.length / this._getColCount()) } _updateReferencedOptions(newLayoutData) { const layoutData = this.option("layoutData"); if ((0, _type.isObject)(layoutData)) { Object.getOwnPropertyNames(layoutData).forEach((property => delete this._optionsByReference[`layoutData.${property}`])) } if ((0, _type.isObject)(newLayoutData)) { Object.getOwnPropertyNames(newLayoutData).forEach((property => this._optionsByReference[`layoutData.${property}`] = true)) } } _clearWidget(instance) { this._disableEditorValueChangedHandler = true; instance.clear(); this._disableEditorValueChangedHandler = false; instance.option("isValid", true) } _optionChanged(args) { if (0 === args.fullName.search("layoutData.")) { return } switch (args.name) { case "showRequiredMark": case "showOptionalMark": case "requiredMark": case "optionalMark": case "alignItemLabels": case "labelLocation": case "labelMode": case "requiredMessage": this._invalidate(); break; case "layoutData": this._updateReferencedOptions(args.value); if (this.option("items")) { if (!(0, _type.isEmptyObject)(args.value)) { this._itemsRunTimeInfo.each(((_, itemRunTimeInfo) => { if ((0, _type.isDefined)(itemRunTimeInfo.item)) { const { dataField: dataField } = itemRunTimeInfo.item; if (dataField && (0, _type.isDefined)(itemRunTimeInfo.widgetInstance)) { const valueGetter = (0, _data.compileGetter)(dataField); const dataValue = valueGetter(args.value); const { allowIndeterminateState: allowIndeterminateState, editorType: editorType } = itemRunTimeInfo.item; if (void 0 !== dataValue || this._isCheckboxUndefinedStateEnabled({ allowIndeterminateState: allowIndeterminateState, editorType: editorType, dataField: dataField })) { itemRunTimeInfo.widgetInstance.option("value", dataValue) } else { this._clearWidget(itemRunTimeInfo.widgetInstance) } } } })) } } else { this._initDataAndItems(args.value); this._invalidate() } break; case "items": this._cleanItemWatchers(); this._initDataAndItems(args.value); this._invalidate(); break; case "customizeItem": this._updateItems(this.option("layoutData")); this._invalidate(); break; case "colCount": case "colCountByScreen": this._resetColCount(); break; case "minColWidth": { const { colCount: colCount } = this.option(); if ("auto" === colCount) { this._resetColCount() } break } case "readOnly": case "onFieldDataChanged": break; case "width": { super._optionChanged(args); const { colCount: colCount } = this.option(); if ("auto" === colCount) { this._resetColCount() } break } default: super._optionChanged(args) } } _resetColCount() { this._cashedColCount = null; this._invalidate() } linkEditorToDataField(editorInstance, dataField) { this.on("optionChanged", (args => { if (args.fullName === `layoutData.${dataField}`) { editorInstance._setOptionWithoutOptionChange("value", args.value) } })); editorInstance.on("valueChanged", (args => { const isValueReferenceType = (0, _type.isObject)(args.value) || Array.isArray(args.value); if (!this._disableEditorValueChangedHandler && !(isValueReferenceType && args.value === args.previousValue)) { this._updateFieldValue(dataField, args.value) } })) } _dimensionChanged() { const { colCount: colCount } = this.option(); if ("auto" === colCount && this.isCachedColCountObsolete()) { this._eventsStrategy.fireEvent("autoColCountChanged") } } updateData(data, value) { const that = this; if ((0, _type.isObject)(data)) { (0, _iterator.each)(data, ((dataField, fieldValue) => { that._updateFieldValue(dataField, fieldValue) })) } else if ("string" === typeof data) { that._updateFieldValue(data, value) } } getEditor(field) { return this._itemsRunTimeInfo.findWidgetInstanceByDataField(field) || this._itemsRunTimeInfo.findWidgetInstanceByName(field) } isSingleColumnMode(component) { const responsiveBox = this._responsiveBox || component; if (responsiveBox) { return responsiveBox.option("currentScreenFactor") === responsiveBox.option("singleColumnScreen") } } getItemsRunTimeInfo() { return this._itemsRunTimeInfo } }(0, _component_registrator.default)("dxLayoutManager", LayoutManager); exports.default = LayoutManager }, 44551: /*!***********************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/ui/form/m_form.layout_manager.utils.js ***! \***********************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.EDITORS_WITHOUT_LABELS = void 0; exports.convertToLabelMarkOptions = convertToLabelMarkOptions; exports.convertToRenderFieldItemOptions = function(_ref) { let { $parent: $parent, rootElementCssClassList: rootElementCssClassList, formOrLayoutManager: formOrLayoutManager, createComponentCallback: createComponentCallback, item: item, template: template, labelTemplate: labelTemplate, name: name, formLabelLocation: formLabelLocation, requiredMessageTemplate: requiredMessageTemplate, validationGroup: validationGroup, editorValue: editorValue, canAssignUndefinedValueToEditor: canAssignUndefinedValueToEditor, editorValidationBoundary: editorValidationBoundary, editorStylingMode: editorStylingMode, showColonAfterLabel: showColonAfterLabel, managerLabelLocation: managerLabelLocation, itemId: itemId, managerMarkOptions: managerMarkOptions, labelMode: labelMode, onLabelTemplateRendered: onLabelTemplateRendered } = _ref; const isRequired = (0, _type.isDefined)(item.isRequired) ? item.isRequired : !! function(rules) { let hasRequiredRule; if (null !== rules && void 0 !== rules && rules.length) { (0, _iterator.each)(rules, ((index, rule) => { if ("required" === rule.type) { hasRequiredRule = true; return false } })) } return hasRequiredRule }(item.validationRules); const isSimpleItem = item.itemType === _constants.SIMPLE_ITEM_TYPE; const helpID = item.helpText ? `dx-${new _guid.default}` : null; const labelOptions = function(_ref6) { let { item: item, id: id, isRequired: isRequired, managerMarkOptions: managerMarkOptions, showColonAfterLabel: showColonAfterLabel, labelLocation: labelLocation, labelTemplate: labelTemplate, formLabelMode: formLabelMode, onLabelTemplateRendered: onLabelTemplateRendered } = _ref6; const isEditorWithoutLabels = EDITORS_WITHOUT_LABELS.includes(item.editorType); const labelOptions = (0, _extend.extend)({ showColon: showColonAfterLabel, location: labelLocation, id: id, visible: "outside" === formLabelMode || isEditorWithoutLabels && "hidden" !== formLabelMode, isRequired: isRequired }, item ? item.label : {}, { markOptions: convertToLabelMarkOptions(managerMarkOptions, isRequired), labelTemplate: labelTemplate, onLabelTemplateRendered: onLabelTemplateRendered }); const editorsRequiringIdForLabel = ["dxRadioGroup", "dxCheckBox", "dxLookup", "dxSlider", "dxRangeSlider", "dxSwitch", "dxHtmlEditor", "dxDateRangeBox"]; if (editorsRequiringIdForLabel.includes(item.editorType)) { labelOptions.labelID = `dx-label-${new _guid.default}` } if (!labelOptions.text && item.dataField) { labelOptions.text = (0, _inflector.captionize)(item.dataField) } if (labelOptions.text) { labelOptions.textWithoutColon = labelOptions.text; labelOptions.text += labelOptions.showColon ? ":" : "" } return labelOptions }({ item: item, id: itemId, isRequired: isRequired, managerMarkOptions: managerMarkOptions, showColonAfterLabel: showColonAfterLabel, labelLocation: managerLabelLocation, formLabelMode: labelMode, labelTemplate: labelTemplate, onLabelTemplateRendered: onLabelTemplateRendered }); const needRenderLabel = labelOptions.visible && (labelOptions.text || labelOptions.labelTemplate && isSimpleItem); const { location: labelLocation, labelID: labelID } = labelOptions; const labelNeedBaselineAlign = "top" !== labelLocation && ["dxTextArea", "dxRadioGroup", "dxCalendar", "dxHtmlEditor"].includes(item.editorType); const editorOptions = function(_ref5) { let { $parent: $parent, editorType: editorType, defaultEditorName: defaultEditorName, editorValue: editorValue, canAssignUndefinedValueToEditor: canAssignUndefinedValueToEditor, externalEditorOptions: externalEditorOptions, editorInputId: editorInputId, editorValidationBoundary: editorValidationBoundary, editorStylingMode: editorStylingMode, formLabelMode: formLabelMode, labelText: labelText, labelMark: labelMark } = _ref5; const editorOptionsWithValue = {}; if (void 0 !== editorValue || canAssignUndefinedValueToEditor) { editorOptionsWithValue.value = editorValue } if (EDITORS_WITH_ARRAY_VALUE.includes(editorType)) { editorOptionsWithValue.value = editorOptionsWithValue.value || [] } let labelMode = null === externalEditorOptions || void 0 === externalEditorOptions ? void 0 : externalEditorOptions.labelMode; if (!(0, _type.isDefined)(labelMode)) { labelMode = "outside" === formLabelMode ? "hidden" : formLabelMode } const stylingMode = (null === externalEditorOptions || void 0 === externalEditorOptions ? void 0 : externalEditorOptions.stylingMode) || editorStylingMode; const useSpecificLabelOptions = EDITORS_WITH_SPECIFIC_LABELS.includes(editorType); const dropDownEditorOptions = function($parent, editorType, editorInputId) { const isDropDownEditor = DROP_DOWN_EDITORS.includes(editorType); if (!isDropDownEditor) { return {} } return { onPopupInitialized: _ref4 => { let { component: component, popup: popup } = _ref4; const openOnFieldClick = component.option("openOnFieldClick"); const initialHideOnOutsideClick = popup.option("hideOnOutsideClick"); if (openOnFieldClick && (0, _type.isFunction)(initialHideOnOutsideClick)) { const hideOnOutsideClick = e => { const $target = (0, _renderer.default)(e.target); const $label = $parent.find(`label[for="${editorInputId}"]`); const isLabelClicked = !!$target.closest($label).length; return !isLabelClicked && initialHideOnOutsideClick(e) }; component.option("dropDownOptions", { hideOnOutsideClick: hideOnOutsideClick }); popup.option({ hideOnOutsideClick: hideOnOutsideClick }) } } } }($parent, editorType, editorInputId); const result = (0, _extend.extend)(true, editorOptionsWithValue, externalEditorOptions, dropDownEditorOptions, { inputAttr: { id: editorInputId }, validationBoundary: editorValidationBoundary, stylingMode: stylingMode, label: useSpecificLabelOptions ? null === externalEditorOptions || void 0 === externalEditorOptions ? void 0 : externalEditorOptions.label : labelText, labelMode: labelMode, labelMark: labelMark }); if (externalEditorOptions) { if (result.dataSource) { result.dataSource = externalEditorOptions.dataSource } if (result.items) { result.items = externalEditorOptions.items } } if (defaultEditorName) { if (EDITORS_WITH_MULTIPLE_INPUT_FIELDS.includes(editorType)) { if ("dxRangeSlider" === editorType) { if (!result.startName) { result.startName = `${defaultEditorName}Start` } if (!result.endName) { result.endName = `${defaultEditorName}End` } } if ("dxDateRangeBox" === editorType) { if (!result.startDateName) { result.startDateName = `${defaultEditorName}Start` } if (!result.endDateName) { result.endDateName = `${defaultEditorName}End` } } return result } if (!result.name) { result.name = defaultEditorName } } return result }({ $parent: $parent, editorType: item.editorType, editorValue: editorValue, defaultEditorName: item.dataField, canAssignUndefinedValueToEditor: canAssignUndefinedValueToEditor, externalEditorOptions: item.editorOptions, editorInputId: itemId, editorValidationBoundary: editorValidationBoundary, editorStylingMode: editorStylingMode, formLabelMode: labelMode, labelText: labelOptions.textWithoutColon, labelMark: labelOptions.markOptions.showRequiredMark ? String.fromCharCode(160) + labelOptions.markOptions.requiredMark : "" }); const needRenderOptionalMarkAsHelpText = labelOptions.markOptions.showOptionalMark && !labelOptions.visible && "hidden" !== editorOptions.labelMode && !(0, _type.isDefined)(item.helpText); const helpText = needRenderOptionalMarkAsHelpText ? labelOptions.markOptions.optionalMark : item.helpText; return { $parent: $parent, rootElementCssClassList: rootElementCssClassList, formOrLayoutManager: formOrLayoutManager, createComponentCallback: createComponentCallback, labelOptions: labelOptions, labelNeedBaselineAlign: labelNeedBaselineAlign, labelLocation: labelLocation, needRenderLabel: needRenderLabel, item: item, isSimpleItem: isSimpleItem, isRequired: isRequired, template: template, helpID: helpID, labelID: labelID, name: name, helpText: helpText, formLabelLocation: formLabelLocation, requiredMessageTemplate: requiredMessageTemplate, validationGroup: validationGroup, editorOptions: editorOptions } }; exports.getLabelMarkText = function(_ref2) { let { showRequiredMark: showRequiredMark, requiredMark: requiredMark, showOptionalMark: showOptionalMark, optionalMark: optionalMark } = _ref2; if (!showRequiredMark && !showOptionalMark) { return "" } return String.fromCharCode(160) + (showRequiredMark ? requiredMark : optionalMark) }; var _guid = _interopRequireDefault(__webpack_require__( /*! ../../../core/guid */ 19427)); var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../../core/renderer */ 64553)); var _extend = __webpack_require__( /*! ../../../core/utils/extend */ 52576); var _inflector = __webpack_require__( /*! ../../../core/utils/inflector */ 53124); var _iterator = __webpack_require__( /*! ../../../core/utils/iterator */ 21274); var _type = __webpack_require__( /*! ../../../core/utils/type */ 11528); var _constants = __webpack_require__( /*! ./constants */ 96891); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } const EDITORS_WITH_ARRAY_VALUE = ["dxTagBox", "dxRangeSlider", "dxDateRangeBox"]; const EDITORS_WITH_MULTIPLE_INPUT_FIELDS = ["dxRangeSlider", "dxDateRangeBox"]; const EDITORS_WITH_SPECIFIC_LABELS = ["dxRangeSlider", "dxSlider"]; const EDITORS_WITHOUT_LABELS = exports.EDITORS_WITHOUT_LABELS = ["dxCalendar", "dxCheckBox", "dxHtmlEditor", "dxRadioGroup", "dxRangeSlider", "dxSlider", "dxSwitch"]; const DROP_DOWN_EDITORS = ["dxSelectBox", "dxDropDownBox", "dxTagBox", "dxLookup", "dxAutocomplete", "dxColorBox", "dxDateBox", "dxDateRangeBox"]; function convertToLabelMarkOptions(_ref3, isRequired) { let { showRequiredMark: showRequiredMark, requiredMark: requiredMark, showOptionalMark: showOptionalMark, optionalMark: optionalMark } = _ref3; return { showRequiredMark: showRequiredMark && isRequired, requiredMark: requiredMark, showOptionalMark: showOptionalMark && !isRequired, optionalMark: optionalMark } } }, 7165: /*!********************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/ui/form/m_form.utils.js ***! \********************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.concatPaths = void 0; exports.convertToLayoutManagerOptions = function(_ref) { let { form: form, $formElement: $formElement, formOptions: formOptions, items: items, validationGroup: validationGroup, extendedLayoutManagerOptions: extendedLayoutManagerOptions, onFieldDataChanged: onFieldDataChanged, onContentReady: onContentReady, onDisposing: onDisposing, onFieldItemRendered: onFieldItemRendered } = _ref; const baseOptions = { form: form, items: items, $formElement: $formElement, validationGroup: validationGroup, onFieldDataChanged: onFieldDataChanged, onContentReady: onContentReady, onDisposing: onDisposing, onFieldItemRendered: onFieldItemRendered, validationBoundary: formOptions.scrollingEnabled ? $formElement : void 0, scrollingEnabled: formOptions.scrollingEnabled, showRequiredMark: formOptions.showRequiredMark, showOptionalMark: formOptions.showOptionalMark, requiredMark: formOptions.requiredMark, optionalMark: formOptions.optionalMark, requiredMessage: formOptions.requiredMessage, screenByWidth: formOptions.screenByWidth, layoutData: formOptions.formData, labelLocation: formOptions.labelLocation, customizeItem: formOptions.customizeItem, minColWidth: formOptions.minColWidth, showColonAfterLabel: formOptions.showColonAfterLabel, onEditorEnterKey: formOptions.onEditorEnterKey, labelMode: formOptions.labelMode }; const result = (0, _extend.extend)(baseOptions, { isRoot: extendedLayoutManagerOptions.isRoot, colCount: extendedLayoutManagerOptions.colCount, alignItemLabels: extendedLayoutManagerOptions.alignItemLabels, cssItemClass: extendedLayoutManagerOptions.cssItemClass, colCountByScreen: extendedLayoutManagerOptions.colCountByScreen, onLayoutChanged: extendedLayoutManagerOptions.onLayoutChanged, width: extendedLayoutManagerOptions.width }); return result }; exports.tryGetTabPath = exports.isFullPathContainsTabs = exports.isEqualToDataFieldOrNameOrTitleOrCaption = exports.getTextWithoutSpaces = exports.getOptionNameFromFullName = exports.getItemPath = exports.getFullOptionName = exports.createItemPathByIndex = void 0; var _extend = __webpack_require__( /*! ../../../core/utils/extend */ 52576); var _type = __webpack_require__( /*! ../../../core/utils/type */ 11528); const createItemPathByIndex = (index, isTabs) => `${isTabs?"tabs":"items"}[${index}]`; exports.createItemPathByIndex = createItemPathByIndex; const concatPaths = (path1, path2) => { if ((0, _type.isDefined)(path1) && (0, _type.isDefined)(path2)) { return `${path1}.${path2}` } return path1 || path2 }; exports.concatPaths = concatPaths; const getTextWithoutSpaces = text => text ? text.replace(/\s/g, "") : void 0; exports.getTextWithoutSpaces = getTextWithoutSpaces; exports.isEqualToDataFieldOrNameOrTitleOrCaption = (item, fieldName) => { if (item) { return item.dataField === fieldName || item.name === fieldName || getTextWithoutSpaces(item.title) === fieldName || "group" === item.itemType && getTextWithoutSpaces(item.caption) === fieldName } return false }; exports.getFullOptionName = (path, optionName) => `${path}.${optionName}`; exports.getOptionNameFromFullName = fullName => { const parts = fullName.split("."); return parts[parts.length - 1].replace(/\[\d+]/, "") }; exports.tryGetTabPath = fullPath => { const pathParts = fullPath.split("."); const resultPathParts = [...pathParts]; for (let i = pathParts.length - 1; i >= 0; i--) { if (isFullPathContainsTabs(pathParts[i])) { return resultPathParts.join(".") } resultPathParts.splice(i, 1) } return "" }; const isFullPathContainsTabs = fullPath => fullPath.indexOf("tabs") > -1; exports.isFullPathContainsTabs = isFullPathContainsTabs; const getItemPath = (items, item, isTabs) => { const index = items.indexOf(item); if (index > -1) { return createItemPathByIndex(index, isTabs) } for (let i = 0; i < items.length; i++) { const targetItem = items[i]; const tabOrGroupItems = targetItem.tabs || targetItem.items; if (tabOrGroupItems) { const itemPath = getItemPath(tabOrGroupItems, item, targetItem.tabs); if (itemPath) { return concatPaths(createItemPathByIndex(i, isTabs), itemPath) } } } }; exports.getItemPath = getItemPath }, 69340: /*!*****************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/ui/hierarchical_collection/m_data_adapter.js ***! \*****************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _query = _interopRequireDefault(__webpack_require__( /*! ../../../common/data/query */ 30771)); var _store_helper = _interopRequireDefault(__webpack_require__( /*! ../../../common/data/store_helper */ 66177)); var _class = _interopRequireDefault(__webpack_require__( /*! ../../../core/class */ 55620)); var _common = __webpack_require__( /*! ../../../core/utils/common */ 17781); var _extend = __webpack_require__( /*! ../../../core/utils/extend */ 52576); var _iterator = __webpack_require__( /*! ../../../core/utils/iterator */ 21274); var _type = __webpack_require__( /*! ../../../core/utils/type */ 11528); var _text_box = _interopRequireDefault(__webpack_require__( /*! ../../../ui/text_box */ 20780)); var _ui = _interopRequireDefault(__webpack_require__( /*! ../../../ui/widget/ui.errors */ 35185)); var _ui2 = _interopRequireDefault(__webpack_require__( /*! ../../../ui/widget/ui.search_box_mixin */ 44690)); var _m_data_converter = _interopRequireDefault(__webpack_require__( /*! ./m_data_converter */ 6267)); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } _ui2.default.setEditorClass(_text_box.default); const DataAdapter = _class.default.inherit({ ctor(options) { this.options = {}; (0, _extend.extend)(this.options, this._defaultOptions(), options); this.options.dataConverter.setDataAccessors(this.options.dataAccessors); this._selectedNodesKeys = []; this._expandedNodesKeys = []; this._dataStructure = []; this._createInternalDataStructure(); this.getTreeNodes() }, setOption(name, value) { this.options[name] = value; if ("recursiveSelection" === name) { this._updateSelection() } }, _defaultOptions: () => ({ dataAccessors: void 0, items: [], multipleSelection: true, recursiveSelection: false, recursiveExpansion: false, rootValue: 0, searchValue: "", dataType: "tree", searchMode: "contains", dataConverter: new _m_data_converter.default, onNodeChanged: _common.noop, sort: null }), _createInternalDataStructure() { this._initialDataStructure = this.options.dataConverter.createPlainStructure(this.options.items, this.options.rootValue, this.options.dataType); this._dataStructure = this.options.searchValue.length ? this.search(this.options.searchValue) : this._initialDataStructure; this.options.dataConverter._dataStructure = this._dataStructure; this._updateSelection(); this._updateExpansion() }, _updateSelection() { if (this.options.recursiveSelection) { this._setChildrenSelection(); this._setParentSelection() } this._selectedNodesKeys = this._updateNodesKeysArray("selected") }, _updateExpansion(key) { if (this.options.recursiveExpansion) { key ? this._updateOneBranch(key) : this._setParentExpansion() } this._expandedNodesKeys = this._updateNodesKeysArray("expanded") }, _updateNodesKeysArray(property) { const that = this; let array = []; (0, _iterator.each)(that._getDataBySelectionMode(), ((_, node) => { if (!that._isNodeVisible(node)) { return } if (node.internalFields[property]) { if ("expanded" === property || that.options.multipleSelection) { array.push(node.internalFields.key) } else { array.length && that.toggleSelection(array[0], false, true); array = [node.internalFields.key] } } })); return array }, _getDataBySelectionMode() { return this.options.multipleSelection ? this.getData() : this.getFullData() }, _isNodeVisible: node => false !== node.internalFields.item.visible, _getByKey(data, key) { return data === this._dataStructure ? this.options.dataConverter._getByKey(key) : this.options.dataConverter.getByKey(data, key) }, _setChildrenSelection() { const that = this; (0, _iterator.each)(this._dataStructure, ((_, node) => { if (!node.internalFields.childrenKeys.length) { return } const isSelected = node.internalFields.selected; true === isSelected && that._toggleChildrenSelection(node, isSelected) })) }, _setParentSelection() { const that = this; (0, _iterator.each)(this._dataStructure, ((_, node) => { const parent = that.options.dataConverter.getParentNode(node); if (parent && node.internalFields.parentKey !== that.options.rootValue) { that._iterateParents(node, (parent => { const newParentState = that._calculateSelectedState(parent); that._setFieldState(parent, "selected", newParentState) })) } })) }, _setParentExpansion() { const that = this; (0, _iterator.each)(this._dataStructure, ((_, node) => { if (!node.internalFields.expanded) { return } that._updateOneBranch(node.internalFields.key) })) }, _updateOneBranch(key) { const that = this; const node = this.getNodeByKey(key); that._iterateParents(node, (parent => { that._setFieldState(parent, "expanded", true) })) }, _iterateChildren(node, recursive, callback, processedKeys) { if (!(0, _type.isFunction)(callback)) { return } const that = this; const nodeKey = node.internalFields.key; processedKeys = processedKeys || []; if (-1 === processedKeys.indexOf(nodeKey)) { processedKeys.push(nodeKey); (0, _iterator.each)(node.internalFields.childrenKeys, ((_, key) => { const child = that.getNodeByKey(key); callback(child); if (child.internalFields.childrenKeys.length && recursive) { that._iterateChildren(child, recursive, callback, processedKeys) } })) } }, _iterateParents(node, callback, processedKeys) { if (node.internalFields.parentKey === this.options.rootValue || !(0, _type.isFunction)(callback)) { return } processedKeys = processedKeys || []; const { key: key } = node.internalFields; if (-1 === processedKeys.indexOf(key)) { processedKeys.push(key); const parent = this.options.dataConverter.getParentNode(node); if (parent) { callback(parent); if (parent.internalFields.parentKey !== this.options.rootValue) { this._iterateParents(parent, callback, processedKeys) } } } }, _calculateSelectedState(node) { const itemsCount = node.internalFields.childrenKeys.length; let selectedItemsCount = 0; let invisibleItemsCount = 0; let result = false; for (let i = 0; i <= itemsCount - 1; i++) { const childNode = this.getNodeByKey(node.internalFields.childrenKeys[i]); const isChildInvisible = false === childNode.internalFields.item.visible; const childState = childNode.internalFields.selected; if (isChildInvisible) { invisibleItemsCount++; continue } if (childState) { selectedItemsCount++ } else if (void 0 === childState) { selectedItemsCount += .5 } } if (selectedItemsCount) { result = selectedItemsCount === itemsCount - invisibleItemsCount ? true : void 0 } return result }, _toggleChildrenSelection(node, state) { const that = this; this._iterateChildren(node, true, (child => { if (that._isNodeVisible(child)) { that._setFieldState(child, "selected", state) } })) }, _setFieldState(node, field, state) { if (node.internalFields[field] === state) { return } node.internalFields[field] = state; if (node.internalFields.publicNode) { node.internalFields.publicNode[field] = state } this.options.dataAccessors.setters[field](node.internalFields.item, state); this.options.onNodeChanged(node) }, _markChildren(keys) { const that = this; (0, _iterator.each)(keys, ((_, key) => { const index = that.getIndexByKey(key); const node = that.getNodeByKey(key); that._dataStructure[index] = 0; node.internalFields.childrenKeys.length && that._markChildren(node.internalFields.childrenKeys) })) }, _removeNode(key) { const node = this.getNodeByKey(key); this._dataStructure[this.getIndexByKey(key)] = 0; this._markChildren(node.internalFields.childrenKeys); const that = this; let counter = 0; const items = (0, _extend.extend)([], this._dataStructure); (0, _iterator.each)(items, ((index, item) => { if (!item) { that._dataStructure.splice(index - counter, 1); counter++ } })) }, _addNode(item) { const { dataConverter: dataConverter } = this.options; const node = dataConverter._convertItemToNode(item, this.options.dataAccessors.getters.parentKey(item)); this._dataStructure = this._dataStructure.concat(node); this._initialDataStructure = this._initialDataStructure.concat(node); dataConverter._dataStructure = dataConverter._dataStructure.concat(node) }, _updateFields() { this.options.dataConverter.updateChildrenKeys(); this._updateSelection(); this._updateExpansion() }, getSelectedNodesKeys() { return this._selectedNodesKeys }, getExpandedNodesKeys() { return this._expandedNodesKeys }, getData() { return this._dataStructure }, getFullData() { return this._initialDataStructure }, getNodeByItem(item) { let result = null; (0, _iterator.each)(this._dataStructure, ((_, node) => { if (node.internalFields.item === item) { result = node; return false } })); return result }, getNodesByItems(items) { const that = this; const nodes = []; (0, _iterator.each)(items, ((_, item) => { const node = that.getNodeByItem(item); node && nodes.push(node) })); return nodes }, getNodeByKey(key, data) { return this._getByKey(data || this._getDataBySelectionMode(), key) }, getTreeNodes() { return this.options.dataConverter.convertToPublicNodes(this.getRootNodes()) }, getItemsCount() { return this.options.dataConverter.getItemsCount() }, getVisibleItemsCount() { return this.options.dataConverter.getVisibleItemsCount() }, getPublicNode: node => node.internalFields.publicNode, getRootNodes() { return this.getChildrenNodes(this.options.rootValue) }, getChildrenNodes(parentKey) { return (0, _query.default)(this._dataStructure, { langParams: this.options.langParams }).filter(["internalFields.parentKey", parentKey]).toArray() }, getIndexByKey(key) { return this.options.dataConverter.getIndexByKey(key) }, addItem(item) { this._addNode(item); this._updateFields() }, removeItem(key) { this._removeNode(key); this._updateFields() }, toggleSelection(key, state, selectRecursive) { const isSingleModeUnselect = this._isSingleModeUnselect(state); const node = this._getByKey(selectRecursive || isSingleModeUnselect ? this._initialDataStructure : this._dataStructure, key); this._setFieldState(node, "selected", state); if (this.options.recursiveSelection && !selectRecursive) { state ? this._setChildrenSelection() : this._toggleChildrenSelection(node, state); this._setParentSelection() } this._selectedNodesKeys = this._updateNodesKeysArray("selected") }, _isSingleModeUnselect(selectionState) { return !this.options.multipleSelection && !selectionState }, toggleNodeDisabledState(key, state) { const node = this.getNodeByKey(key); this._setFieldState(node, "disabled", state) }, toggleSelectAll(state) { if (!(0, _type.isDefined)(state)) { return } const that = this; const lastSelectedKey = that._selectedNodesKeys[that._selectedNodesKeys.length - 1]; const dataStructure = that._isSingleModeUnselect(state) ? this._initialDataStructure : this._dataStructure; (0, _iterator.each)(dataStructure, ((index, node) => { if (!that._isNodeVisible(node)) { return } that._setFieldState(node, "selected", state) })); that._selectedNodesKeys = that._updateNodesKeysArray("selected"); if (!state && that.options.selectionRequired) { that.toggleSelection(lastSelectedKey, true) } }, isAllSelected() { if (this.getSelectedNodesKeys().length) { return this.getSelectedNodesKeys().length === this.getVisibleItemsCount() ? true : void 0 } return false }, toggleExpansion(key, state) { const node = this.getNodeByKey(key); this._setFieldState(node, "expanded", state); if (state) { this._updateExpansion(key) } this._expandedNodesKeys = this._updateNodesKeysArray("expanded") }, isFiltered(item) { return !this.options.searchValue.length || !!this._filterDataStructure(this.options.searchValue, [item]).length }, _createCriteria(selector, value, operation) { const searchFilter = []; if (!Array.isArray(selector)) { return [selector, operation, value] }(0, _iterator.each)(selector, ((i, item) => { searchFilter.push([item, operation, value], "or") })); searchFilter.pop(); return searchFilter }, _filterDataStructure(filterValue, dataStructure) { const selector = this.options.searchExpr || this.options.dataAccessors.getters.display; const operation = _ui2.default.getOperationBySearchMode(this.options.searchMode); const criteria = this._createCriteria(selector, filterValue, operation); dataStructure = dataStructure || this._initialDataStructure; return (0, _query.default)(dataStructure, { langParams: this.options.langParams }).filter(criteria).toArray() }, search(searchValue) { const that = this; let matches = this._filterDataStructure(searchValue); const { dataConverter: dataConverter } = this.options; ! function lookForParents(matches, index) { const { length: length } = matches; while (index < length) { const node = matches[index]; if (node.internalFields.parentKey === that.options.rootValue) { index++; continue } const parent = dataConverter.getParentNode(node); if (!parent) { _ui.default.log("W1007", node.internalFields.parentKey, node.internalFields.key); index++; continue } if (!parent.internalFields.expanded) { that._setFieldState(parent, "expanded", true) } if (matches.includes(parent)) { index++; continue } matches.splice(index, 0, parent); lookForParents(matches, index) } }(matches, 0); if (this.options.sort) { matches = _store_helper.default.queryByOptions((0, _query.default)(matches), { sort: this.options.sort, langParams: this.options.langParams }).toArray() } dataConverter._indexByKey = {}; (0, _iterator.each)(matches, ((index, node) => { node.internalFields.childrenKeys = []; dataConverter._indexByKey[node.internalFields.key] = index })); dataConverter._dataStructure = matches; dataConverter.setChildrenKeys(); return dataConverter._dataStructure } }); exports.default = DataAdapter }, 6267: /*!*******************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/ui/hierarchical_collection/m_data_converter.js ***! \*******************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _class = _interopRequireDefault(__webpack_require__( /*! ../../../core/class */ 55620)); var _extend = __webpack_require__( /*! ../../../core/utils/extend */ 52576); var _iterator = __webpack_require__( /*! ../../../core/utils/iterator */ 21274); var _type = __webpack_require__( /*! ../../../core/utils/type */ 11528); var _ui = _interopRequireDefault(__webpack_require__( /*! ../../../ui/widget/ui.errors */ 35185)); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } const DataConverter = _class.default.inherit({ ctor() { this._dataStructure = []; this._itemsCount = 0; this._visibleItemsCount = 0 }, _indexByKey: {}, _convertItemsToNodes(items, parentKey) { const that = this; (0, _iterator.each)(items, ((_, item) => { const parentId = (0, _type.isDefined)(parentKey) ? parentKey : that._getParentId(item); const node = that._convertItemToNode(item, parentId); that._dataStructure.push(node); that._checkForDuplicateId(node.internalFields.key); that._indexByKey[node.internalFields.key] = that._dataStructure.length - 1; if (that._itemHasChildren(item)) { that._convertItemsToNodes(that._dataAccessors.getters.items(item), node.internalFields.key) } })) }, _checkForDuplicateId(key) { if ((0, _type.isDefined)(this._indexByKey[key])) { throw _ui.default.Error("E1040", key) } }, _getParentId(item) { return "plain" === this._dataType ? this._dataAccessors.getters.parentKey(item) : void 0 }, _itemHasChildren(item) { if ("plain" === this._dataType) { return } const items = this._dataAccessors.getters.items(item); return items && items.length }, _getUniqueKey(item) { const keyGetter = this._dataAccessors.getters.key; const itemKey = keyGetter(item); const isCorrectKey = keyGetter && (itemKey || 0 === itemKey) && (0, _type.isPrimitive)(itemKey); return isCorrectKey ? itemKey : this.getItemsCount() }, _convertItemToNode(item, parentKey) { this._itemsCount++; false !== item.visible && this._visibleItemsCount++; const node = { internalFields: { disabled: this._dataAccessors.getters.disabled(item, { defaultValue: false }), expanded: this._dataAccessors.getters.expanded(item, { defaultValue: false }), selected: this._dataAccessors.getters.selected(item, { defaultValue: false }), key: this._getUniqueKey(item), parentKey: (0, _type.isDefined)(parentKey) ? parentKey : this._rootValue, item: this._makeObjectFromPrimitive(item), childrenKeys: [] } }; (0, _extend.extend)(node, item); delete node.items; return node }, setChildrenKeys() { const that = this; (0, _iterator.each)(this._dataStructure, ((_, node) => { if (node.internalFields.parentKey === that._rootValue) { return } const parent = that.getParentNode(node); parent && parent.internalFields.childrenKeys.push(node.internalFields.key) })) }, _makeObjectFromPrimitive(item) { if ((0, _type.isPrimitive)(item)) { const key = item; item = {}; this._dataAccessors.setters.key(item, key) } return item }, _convertToPublicNode(node, parent) { if (!node) { return null } const publicNode = { text: this._dataAccessors.getters.display(node), key: node.internalFields.key, selected: node.internalFields.selected, expanded: node.internalFields.expanded, disabled: node.internalFields.disabled, parent: parent || null, itemData: node.internalFields.item, children: [], items: [] }; if (publicNode.parent) { publicNode.parent.children.push(publicNode); publicNode.parent.items.push(publicNode) } return publicNode }, convertToPublicNodes(data, parent) { if (!data.length) { return [] } const that = this; const publicNodes = []; (0, _iterator.each)(data, ((_, node) => { node = (0, _type.isPrimitive)(node) ? that._getByKey(node) : node; const publicNode = that._convertToPublicNode(node, parent); publicNode.children = that.convertToPublicNodes(node.internalFields.childrenKeys, publicNode); publicNodes.push(publicNode); node.internalFields.publicNode = publicNode })); return publicNodes }, setDataAccessors(accessors) { this._dataAccessors = accessors }, _getByKey(key) { return this._dataStructure[this.getIndexByKey(key)] || null }, getParentNode(node) { return this._getByKey(node.internalFields.parentKey) }, getByKey(data, key) { if (null === key || void 0 === key) { return null } let result = null; const that = this; return function(data, key) { (0, _iterator.each)(data, ((_, element) => { const currentElementKey = element.internalFields && element.internalFields.key || that._dataAccessors.getters.key(element); if (currentElementKey.toString() === key.toString()) { result = element; return false } })); return result }(data, key) }, getItemsCount() { return this._itemsCount }, getVisibleItemsCount() { return this._visibleItemsCount }, updateIndexByKey() { const that = this; this._indexByKey = {}; (0, _iterator.each)(this._dataStructure, ((index, node) => { that._checkForDuplicateId(node.internalFields.key); that._indexByKey[node.internalFields.key] = index })) }, updateChildrenKeys() { this._indexByKey = {}; this.removeChildrenKeys(); this.updateIndexByKey(); this.setChildrenKeys() }, removeChildrenKeys() { this._indexByKey = {}; (0, _iterator.each)(this._dataStructure, ((index, node) => { node.internalFields.childrenKeys = [] })) }, getIndexByKey(key) { return this._indexByKey[key] }, createPlainStructure(items, rootValue, dataType) { this._itemsCount = 0; this._visibleItemsCount = 0; this._rootValue = rootValue; this._dataType = dataType; this._indexByKey = {}; this._convertItemsToNodes(items); this.setChildrenKeys(); return this._dataStructure } }); exports.default = DataConverter }, 16383: /*!***********************************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/ui/hierarchical_collection/m_hierarchical_collection_widget.js ***! \***********************************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _devices = _interopRequireDefault(__webpack_require__( /*! ../../../core/devices */ 65951)); var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../../core/renderer */ 64553)); var _bindable_template = __webpack_require__( /*! ../../../core/templates/bindable_template */ 27286); var _common = __webpack_require__( /*! ../../../core/utils/common */ 17781); var _data = __webpack_require__( /*! ../../../core/utils/data */ 31e3); var _extend = __webpack_require__( /*! ../../../core/utils/extend */ 52576); var _icon = __webpack_require__( /*! ../../../core/utils/icon */ 69629); var _iterator = __webpack_require__( /*! ../../../core/utils/iterator */ 21274); var _type = __webpack_require__( /*! ../../../core/utils/type */ 11528); var _uiCollection_widget = _interopRequireDefault(__webpack_require__( /*! ../../../ui/collection/ui.collection_widget.async */ 33975)); var _m_data_adapter = _interopRequireDefault(__webpack_require__( /*! ./m_data_adapter */ 69340)); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } function _extends() { return _extends = Object.assign ? Object.assign.bind() : function(n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) { ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]) } } return n }, _extends.apply(null, arguments) } class HierarchicalCollectionWidget extends _uiCollection_widget.default { _getDefaultOptions() { return _extends({}, super._getDefaultOptions(), { keyExpr: "id", displayExpr: "text", selectedExpr: "selected", disabledExpr: "disabled", itemsExpr: "items", hoverStateEnabled: true, parentIdExpr: "parentId", expandedExpr: "expanded" }) } _defaultOptionsRules() { return super._defaultOptionsRules().concat([{ device: () => "desktop" === _devices.default.real().deviceType && !_devices.default.isSimulator(), options: { focusStateEnabled: true } }]) } _init() { super._init(); this._initAccessors(); this._initDataAdapter(); this._initDynamicTemplates() } _initDataSource() { var _this$_dataSource; super._initDataSource(); null === (_this$_dataSource = this._dataSource) || void 0 === _this$_dataSource || _this$_dataSource.paginate(false) } _initDataAdapter() { const accessors = this._createDataAdapterAccessors(); this._dataAdapter = new _m_data_adapter.default((0, _extend.extend)({ dataAccessors: { getters: accessors.getters, setters: accessors.setters }, items: this.option("items") }, this._getDataAdapterOptions())) } _getDataAdapterOptions() {} _getItemExtraPropNames() {} _initDynamicTemplates() { const fields = ["text", "html", "items", "icon"].concat(this._getItemExtraPropNames()); this._templateManager.addDefaultTemplates({ item: new _bindable_template.BindableTemplate(this._addContent.bind(this), fields, this.option("integrationOptions.watchMethod"), { text: this._displayGetter, items: this._itemsGetter }) }) } _addContent($container, itemData) { $container.html(itemData.html).append(this._getIconContainer(itemData)).append(this._getTextContainer(itemData)) } _getLinkContainer(iconContainer, textContainer, itemData) { const { linkAttr: linkAttr, url: url } = itemData; const linkAttributes = (0, _type.isObject)(linkAttr) ? linkAttr : {}; return (0, _renderer.default)("<a>").addClass("dx-item-url").attr(_extends({}, linkAttributes, { href: url })).append(iconContainer).append(textContainer) } _getIconContainer(itemData) { if (!itemData.icon) { return } const $imageContainer = (0, _icon.getImageContainer)(itemData.icon); if ($imageContainer.is("img")) { var _this$NAME; const componentName = null !== (_this$NAME = this.NAME) && void 0 !== _this$NAME && _this$NAME.startsWith("dxPrivateComponent") ? "" : `${this.NAME} `; $imageContainer.attr("alt", `${componentName}item icon`) } return $imageContainer } _getTextContainer(itemData) { return (0, _renderer.default)("<span>").text(itemData.text) } _initAccessors() { const that = this; (0, _iterator.each)(this._getAccessors(), ((_, accessor) => { that._compileAccessor(accessor) })); this._compileDisplayGetter() } _getAccessors() { return ["key", "selected", "items", "disabled", "parentId", "expanded"] } _getChildNodes(node) { const that = this; const arr = []; (0, _iterator.each)(node.internalFields.childrenKeys, ((_, key) => { const childNode = that._dataAdapter.getNodeByKey(key); arr.push(childNode) })); return arr } _hasChildren(node) { return node && node.internalFields.childrenKeys.length } _compileAccessor(optionName) { const getter = `_${optionName}Getter`; const setter = `_${optionName}Setter`; const optionExpr = this.option(`${optionName}Expr`); if (!optionExpr) { this[getter] = _common.noop; this[setter] = _common.noop; return } if ((0, _type.isFunction)(optionExpr)) { this[setter] = function(obj, value) { obj[optionExpr()] = value }; this[getter] = function(obj) { return obj[optionExpr()] }; return } this[getter] = (0, _data.compileGetter)(optionExpr); this[setter] = (0, _data.compileSetter)(optionExpr) } _createDataAdapterAccessors() { const that = this; const accessors = { getters: {}, setters: {} }; (0, _iterator.each)(this._getAccessors(), ((_, accessor) => { const getterName = `_${accessor}Getter`; const setterName = `_${accessor}Setter`; const newAccessor = "parentId" === accessor ? "parentKey" : accessor; accessors.getters[newAccessor] = that[getterName]; accessors.setters[newAccessor] = that[setterName] })); accessors.getters.display = !this._displayGetter ? itemData => itemData.text : this._displayGetter; return accessors } _initMarkup() { super._initMarkup(); this._addWidgetClass() } _addWidgetClass() { this._focusTarget().addClass(this._widgetClass()) } _widgetClass() {} _renderItemFrame(index, itemData, $itemContainer) { const $itemFrame = super._renderItemFrame.apply(this, arguments); $itemFrame.toggleClass("dx-state-disabled", !!this._disabledGetter(itemData)); return $itemFrame } _optionChanged(args) { switch (args.name) { case "displayExpr": case "keyExpr": this._initAccessors(); this._initDynamicTemplates(); this.repaint(); break; case "itemsExpr": case "selectedExpr": case "disabledExpr": case "expandedExpr": case "parentIdExpr": this._initAccessors(); this._initDataAdapter(); this.repaint(); break; case "items": this._initDataAdapter(); super._optionChanged(args); break; default: super._optionChanged(args) } } } exports.default = HierarchicalCollectionWidget }, 76035: /*!*********************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/ui/html_editor/converters/m_delta.js ***! \*********************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _m_converterController = (e = __webpack_require__( /*! ../m_converterController */ 16723), e && e.__esModule ? e : { default: e }); var e; class DeltaConverter { setQuillInstance(quillInstance) { this.quillInstance = quillInstance } toHtml() { if (!this.quillInstance) { return } return this._isQuillEmpty() ? "" : this.quillInstance.getSemanticHTML(0, this.quillInstance.getLength() + 1) } _isQuillEmpty() { const delta = this.quillInstance.getContents(); return 1 === delta.length() && this._isDeltaEmpty(delta) } _isDeltaEmpty(delta) { return delta.reduce(((__, _ref) => { let { insert: insert } = _ref; return -1 !== insert.indexOf("\n") })) } } _m_converterController.default.addConverter("delta", DeltaConverter); exports.default = DeltaConverter }, 58281: /*!******************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/ui/html_editor/formats/m_align.js ***! \******************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _devextremeQuill = (e = __webpack_require__( /*! devextreme-quill */ 40765), e && e.__esModule ? e : { default: e }); var e; let AlignStyle = {}; if (_devextremeQuill.default) { AlignStyle = _devextremeQuill.default.import("attributors/style/align"); AlignStyle.whitelist.push("left") } exports.default = AlignStyle }, 45535: /*!*****************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/ui/html_editor/formats/m_font.js ***! \*****************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _devextremeQuill = (e = __webpack_require__( /*! devextreme-quill */ 40765), e && e.__esModule ? e : { default: e }); var e; let FontStyle = {}; if (_devextremeQuill.default) { FontStyle = _devextremeQuill.default.import("attributors/style/font"); FontStyle.whitelist = null } exports.default = FontStyle }, 93805: /*!******************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/ui/html_editor/formats/m_image.js ***! \******************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _type = __webpack_require__( /*! ../../../../core/utils/type */ 11528); var _devextremeQuill = (e = __webpack_require__( /*! devextreme-quill */ 40765), e && e.__esModule ? e : { default: e }); var e; let ExtImage = {}; if (_devextremeQuill.default) { const Image = _devextremeQuill.default.import("formats/image"); ExtImage = class extends Image { static create(data) { const SRC = data && data.src || data; const node = super.create(SRC); if ((0, _type.isObject)(data)) { const setAttribute = (attr, value) => { data[attr] && node.setAttribute(attr, value) }; setAttribute("alt", data.alt); setAttribute("width", data.width); setAttribute("height", data.height) } return node } static formats(domNode) { const formats = super.formats(domNode); formats.imageSrc = domNode.getAttribute("src"); return formats } formats() { const formats = super.formats(); const floatValue = this.domNode.style.float; if (floatValue) { formats.float = floatValue } return formats } format(name, value) { if ("float" === name) { this.domNode.style[name] = value } else { super.format(name, value) } } static value(domNode) { return { src: domNode.getAttribute("src"), width: domNode.getAttribute("width"), height: domNode.getAttribute("height"), alt: domNode.getAttribute("alt") } } }; ExtImage.blotName = "extendedImage" } exports.default = ExtImage }, 93794: /*!*****************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/ui/html_editor/formats/m_link.js ***! \*****************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _type = __webpack_require__( /*! ../../../../core/utils/type */ 11528); var _devextremeQuill = (e = __webpack_require__( /*! devextreme-quill */ 40765), e && e.__esModule ? e : { default: e }); var e; let ExtLink = {}; if (_devextremeQuill.default) { const Link = _devextremeQuill.default.import("formats/link"); ExtLink = class ExtLink extends Link { static create(data) { const HREF = (null === data || void 0 === data ? void 0 : data.href) ?? data; const node = super.create(HREF); if ((0, _type.isObject)(data)) { if (data.text) { node.innerText = data.text } if (!data.target) { node.removeAttribute("target") } } return node } static formats(domNode) { return { href: domNode.getAttribute("href"), target: domNode.getAttribute("target") } } formats() { const formats = super.formats(); const { href: href, target: target } = ExtLink.formats(this.domNode); formats.link = href; formats.target = target; return formats } format(name, value) { if ("link" === name && (0, _type.isObject)(value)) { if (value.text) { this.domNode.innerText = value.text } if (value.target) { this.domNode.setAttribute("target", "_blank") } else { this.domNode.removeAttribute("target") } this.domNode.setAttribute("href", value.href) } else { super.format(name, value) } } static value(domNode) { return { href: domNode.getAttribute("href"), text: domNode.innerText, target: !!domNode.getAttribute("target") } } } } exports.default = ExtLink }, 11278: /*!********************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/ui/html_editor/formats/m_mention.js ***! \********************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../../../core/renderer */ 64553)); var _devextremeQuill = _interopRequireDefault(__webpack_require__( /*! devextreme-quill */ 40765)); var _m_templates_storage = _interopRequireDefault(__webpack_require__( /*! ../utils/m_templates_storage */ 28552)); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } let Mention = {}; if (_devextremeQuill.default) { const Embed = _devextremeQuill.default.import("blots/embed"); const MENTION_CLASS = "dx-mention"; Mention = class Mention extends Embed { constructor(scroll, node) { super(scroll, node); this.renderContent(this.contentNode, Mention.value(node)) } static create(data) { const node = super.create(); node.setAttribute("spellcheck", false); node.dataset.marker = data.marker; node.dataset.mentionValue = data.value; node.dataset.id = data.id; return node } static value(node) { return { marker: node.dataset.marker, id: node.dataset.id, value: node.dataset.mentionValue } } renderContent(node, data) { const template = Mention._templatesStorage.get({ editorKey: data.keyInTemplateStorage, marker: data.marker }); if (template) { template.render({ model: data, container: node }) } else { this.baseContentRender(node, data) } } baseContentRender(node, data) { const $marker = (0, _renderer.default)("<span>").text(data.marker); (0, _renderer.default)(node).append($marker).append(data.value) } static addTemplate(data, template) { this._templatesStorage.set(data, template) } static removeTemplate(data) { this._templatesStorage.delete(data) } }; Mention.blotName = "mention"; Mention.tagName = "span"; Mention.className = MENTION_CLASS; Mention._templatesStorage = new _m_templates_storage.default } exports.default = Mention }, 51371: /*!*****************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/ui/html_editor/formats/m_size.js ***! \*****************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _devextremeQuill = (e = __webpack_require__( /*! devextreme-quill */ 40765), e && e.__esModule ? e : { default: e }); var e; let SizeStyle = {}; if (_devextremeQuill.default) { SizeStyle = _devextremeQuill.default.import("attributors/style/size"); SizeStyle.whitelist = null } exports.default = SizeStyle }, 90894: /*!*********************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/ui/html_editor/formats/m_variable.js ***! \*********************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _common = __webpack_require__( /*! ../../../../core/utils/common */ 17781); var _extend = __webpack_require__( /*! ../../../../core/utils/extend */ 52576); var _devextremeQuill = (e = __webpack_require__( /*! devextreme-quill */ 40765), e && e.__esModule ? e : { default: e }); var e; let Variable = {}; if (_devextremeQuill.default) { const Embed = _devextremeQuill.default.import("blots/embed"); const VARIABLE_CLASS = "dx-variable"; Variable = class extends Embed { static create(data) { const node = super.create(); let startEscapeChar; let endEscapeChar; const text = data.value; if (Array.isArray(data.escapeChar)) { startEscapeChar = (0, _common.ensureDefined)(data.escapeChar[0], ""); endEscapeChar = (0, _common.ensureDefined)(data.escapeChar[1], "") } else { startEscapeChar = endEscapeChar = data.escapeChar } node.innerText = startEscapeChar + text + endEscapeChar; node.dataset.varStartEscChar = startEscapeChar; node.dataset.varEndEscChar = endEscapeChar; node.dataset.varValue = data.value; return node } static value(node) { return (0, _extend.extend)({}, { value: node.dataset.varValue, escapeChar: [node.dataset.varStartEscChar || "", node.dataset.varEndEscChar || ""] }) } }; Variable.blotName = "variable"; Variable.tagName = "span"; Variable.className = VARIABLE_CLASS } exports.default = Variable }, 90660: /*!**************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/ui/html_editor/html_editor.js ***! \**************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; __webpack_require__( /*! ../../ui/html_editor/converters/m_delta */ 76035); var _events = __webpack_require__( /*! ../../../common/core/events */ 52391); var _events_engine = _interopRequireDefault(__webpack_require__( /*! ../../../common/core/events/core/events_engine */ 92774)); var _emitterGesture = _interopRequireDefault(__webpack_require__( /*! ../../../common/core/events/gesture/emitter.gesture.scroll */ 86548)); var _pointer = _interopRequireDefault(__webpack_require__( /*! ../../../common/core/events/pointer */ 89797)); var _index = __webpack_require__( /*! ../../../common/core/events/utils/index */ 98834); var _component_registrator = _interopRequireDefault(__webpack_require__( /*! ../../../core/component_registrator */ 92848)); var _config = _interopRequireDefault(__webpack_require__( /*! ../../../core/config */ 66636)); var _devices = _interopRequireDefault(__webpack_require__( /*! ../../../core/devices */ 65951)); var _element = __webpack_require__( /*! ../../../core/element */ 61404); var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../../core/renderer */ 64553)); var _empty_template = __webpack_require__( /*! ../../../core/templates/empty_template */ 48650); var _callbacks = _interopRequireDefault(__webpack_require__( /*! ../../../core/utils/callbacks */ 84718)); var _common = __webpack_require__( /*! ../../../core/utils/common */ 17781); var _deferred = __webpack_require__( /*! ../../../core/utils/deferred */ 87739); var _extend = __webpack_require__( /*! ../../../core/utils/extend */ 52576); var _type = __webpack_require__( /*! ../../../core/utils/type */ 11528); var _editor = _interopRequireDefault(__webpack_require__( /*! ../../ui/editor/editor */ 24768)); var _m_converterController = _interopRequireDefault(__webpack_require__( /*! ../../ui/html_editor/m_converterController */ 16723)); var _m_quill_importer = __webpack_require__( /*! ../../ui/html_editor/m_quill_importer */ 58283); var _m_quill_registrator = _interopRequireDefault(__webpack_require__( /*! ../../ui/html_editor/m_quill_registrator */ 80609)); var _m_wordLists = _interopRequireDefault(__webpack_require__( /*! ../../ui/html_editor/matchers/m_wordLists */ 23102)); var _formDialog = _interopRequireDefault(__webpack_require__( /*! ../../ui/html_editor/ui/formDialog */ 47226)); var _html_sanitizer = __webpack_require__( /*! ../../ui/html_editor/utils/html_sanitizer */ 39e3); var _m_utils = __webpack_require__( /*! ../../ui/text_box/m_utils.scroll */ 81569); var _aiDialog = _interopRequireDefault(__webpack_require__( /*! ./ui/aiDialog */ 87534)); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } function _extends() { return _extends = Object.assign ? Object.assign.bind() : function(n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) { ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]) } } return n }, _extends.apply(null, arguments) } const ANONYMOUS_TEMPLATE_NAME = "htmlContent"; const isIos = "ios" === _devices.default.current().platform; let editorsCount = 0; class HtmlEditor extends _editor.default { _getDefaultOptions() { const { editorStylingMode: editorStylingMode } = (0, _config.default)(); const stylingMode = editorStylingMode || "outlined"; return _extends({}, super._getDefaultOptions(), { aiIntegration: null, allowSoftLineBreak: false, converter: null, customizeModules: null, focusStateEnabled: true, imageUpload: null, mediaResizing: null, mentions: null, placeholder: "", stylingMode: stylingMode, tableContextMenu: null, tableResizing: null, toolbar: null, variables: null }) } _init() { this._mentionKeyInTemplateStorage = editorsCount; editorsCount += 1; super._init(); this._cleanCallback = (0, _callbacks.default)(); this._contentInitializedCallback = (0, _callbacks.default)(); this._prepareHtmlConverter() } _prepareHtmlConverter() { const { converter: converter } = this.option(); if (converter) { this._htmlConverter = converter } } _getAnonymousTemplateName() { return "htmlContent" } _initTemplates() { this._templateManager.addDefaultTemplates({ [ANONYMOUS_TEMPLATE_NAME]: new _empty_template.EmptyTemplate }); super._initTemplates() } _focusTarget() { return this._getContent() } _getContent() { return this.$element().find(".dx-htmleditor-content") } _focusInHandler(e) { const { relatedTarget: relatedTarget } = e; if (this._shouldSkipFocusEvent(relatedTarget)) { return } this._toggleFocusClass(true, this.$element()); super._focusInHandler(e) } _focusOutHandler(e) { const { relatedTarget: relatedTarget } = e; if (this._shouldSkipFocusEvent(relatedTarget)) { return } this._toggleFocusClass(false, this.$element()); super._focusOutHandler(e) } _shouldSkipFocusEvent(relatedTarget) { return (0, _renderer.default)(relatedTarget).hasClass("ql-clipboard") } _initMarkup() { this._$htmlContainer = (0, _renderer.default)("<div>").addClass("dx-quill-container"); this.$element().attr("role", "application").addClass("dx-htmleditor").wrapInner(this._$htmlContainer); this._renderStylingMode(); const template = this._getTemplate("htmlContent"); this._$templateResult = null === template || void 0 === template ? void 0 : template.render({ container: (0, _element.getPublicElement)(this._$htmlContainer), noModel: true, transclude: true }); this._renderSubmitElement(); super._initMarkup(); this._updateContainerMarkup() } _renderValidationState() { const $content = this._getContent(); if (1 === $content.length) { super._renderValidationState() } } _renderSubmitElement() { this._$submitElement = (0, _renderer.default)("<textarea>").addClass("dx-htmleditor-submit-element").attr("hidden", true).appendTo(this.$element()); const { value: value } = this.option(); this._setSubmitValue(value) } _setSubmitValue(value) { this._getSubmitElement().val(value) } _getSubmitElement() { return this._$submitElement } _convertToHtml(raw) { var _this$_htmlConverter, _this$_htmlConverter2; const value = raw ?? ""; const result = (0, _type.isFunction)(null === (_this$_htmlConverter = this._htmlConverter) || void 0 === _this$_htmlConverter ? void 0 : _this$_htmlConverter.toHtml) ? String((null === (_this$_htmlConverter2 = this._htmlConverter) || void 0 === _this$_htmlConverter2 ? void 0 : _this$_htmlConverter2.toHtml(value)) ?? "") : value; return result } _convertFromHtml(raw) { var _this$_htmlConverter3, _this$_htmlConverter4; const value = raw ?? ""; const result = (0, _type.isFunction)(null === (_this$_htmlConverter3 = this._htmlConverter) || void 0 === _this$_htmlConverter3 ? void 0 : _this$_htmlConverter3.fromHtml) ? String((null === (_this$_htmlConverter4 = this._htmlConverter) || void 0 === _this$_htmlConverter4 ? void 0 : _this$_htmlConverter4.fromHtml(value)) ?? "") : value; return result } _updateContainerMarkup() { const { value: value } = this.option(); const html = this._convertToHtml(value); if (!html) { return } const quill = (0, _m_quill_importer.getQuill)(); const sanitizedHtml = (0, _html_sanitizer.sanitizeHtml)(quill, html); this._$htmlContainer.html(sanitizedHtml) } _render() { this._prepareConverters(); super._render(); this._toggleReadOnlyState() } _prepareQuillRegistrator() { if (!this._quillRegistrator) { this._quillRegistrator = new _m_quill_registrator.default } } _getRegistrator() { this._prepareQuillRegistrator(); return this._quillRegistrator } _prepareConverters() { if (!this._deltaConverter) { const DeltaConverter = _m_converterController.default.getConverter("delta"); if (DeltaConverter) { this._deltaConverter = new DeltaConverter } } } _renderContentImpl() { this._contentRenderedDeferred = (0, _deferred.Deferred)(); const renderContentPromise = this._contentRenderedDeferred.promise(); super._renderContentImpl(); this._renderHtmlEditor(); this._renderFormDialog(); this._renderAIDialog(); this._addKeyPressHandler(); return renderContentPromise } _pointerMoveHandler(e) { if (isIos) { e.stopPropagation() } } _attachFocusEvents() { (0, _common.deferRender)(super._attachFocusEvents.bind(this)) } _addKeyPressHandler() { const keyDownEvent = (0, _index.addNamespace)("keydown", `${this.NAME}TextChange`); _events_engine.default.on(this._$htmlContainer, keyDownEvent, this._keyDownHandler.bind(this)) } _keyDownHandler(e) { this._saveValueChangeEvent(e) } _renderHtmlEditor() { const { customizeModules: customizeModules } = this.option(); const modulesConfig = this._getModulesConfig(); if ((0, _type.isFunction)(customizeModules)) { customizeModules(modulesConfig) } this._quillInstance = this._getRegistrator().createEditor(this._$htmlContainer[0], { placeholder: this.option("placeholder"), readOnly: this.option("readOnly") || this.option("disabled"), modules: modulesConfig, theme: "basic" }); this._renderValidationState(); this._deltaConverter.setQuillInstance(this._quillInstance); this._textChangeHandlerWithContext = this._textChangeHandler.bind(this); this._quillInstance.on("text-change", this._textChangeHandlerWithContext); this._renderScrollHandler(); if (this._hasTranscludedContent()) { this._updateContentTask = (0, _common.executeAsync)((() => { this._applyTranscludedContent() })) } else { this._finalizeContentRendering() } } _renderScrollHandler() { const $scrollContainer = this._getContent(); const initScrollData = (0, _m_utils.prepareScrollData)($scrollContainer); _events_engine.default.on($scrollContainer, (0, _index.addNamespace)(_emitterGesture.default.init, this.NAME), initScrollData, _common.noop); _events_engine.default.on($scrollContainer, (0, _index.addNamespace)(_pointer.default.move, this.NAME), this._pointerMoveHandler.bind(this)) } _applyTranscludedContent() { const { value: value } = this.option(); if (!(0, _type.isDefined)(value)) { const html = this._deltaConverter.toHtml(); const newDelta = this._quillInstance.clipboard.convert({ html: html }); if (newDelta.ops.length) { this._quillInstance.setContents(newDelta); return } } this._finalizeContentRendering() } _hasTranscludedContent() { var _this$_$templateResul; return Boolean(null === (_this$_$templateResul = this._$templateResult) || void 0 === _this$_$templateResul ? void 0 : _this$_$templateResul.length) } _getModulesConfig() { const modulesConfig = (0, _extend.extend)({}, { clipboard: this._getClipboardConfig(), imageCursor: this._getBaseModuleConfig(), imageUpload: this._getModuleConfigByOption("imageUpload"), keyboard: this._getKeyboardModuleConfig(), mentions: this._getModuleConfigByOption("mentions"), multiline: Boolean(this.option("allowSoftLineBreak")), resizing: this._getModuleConfigByOption("mediaResizing"), table: true, tableContextMenu: this._getModuleConfigByOption("tableContextMenu"), tableResizing: this._getModuleConfigByOption("tableResizing"), toolbar: this._getModuleConfigByOption("toolbar"), uploader: this._getUploaderModuleConfig(), variables: this._getModuleConfigByOption("variables") }, this._getCustomModules()); return modulesConfig } _getUploaderModuleConfig() { return { onDrop: e => this._saveValueChangeEvent((0, _events.Event)(e)), imageBlot: "extendedImage" } } _getKeyboardModuleConfig() { return { onKeydown: e => this._saveValueChangeEvent((0, _events.Event)(e)) } } _getClipboardConfig() { const quill = this._getRegistrator().getQuill(); const wordListMatcher = (0, _m_wordLists.default)(quill); return { onPaste: e => this._saveValueChangeEvent((0, _events.Event)(e)), onCut: e => this._saveValueChangeEvent((0, _events.Event)(e)), matchers: [ ["p.MsoListParagraphCxSpFirst", wordListMatcher], ["p.MsoListParagraphCxSpMiddle", wordListMatcher], ["p.MsoListParagraphCxSpLast", wordListMatcher] ] } } _getModuleConfigByOption(optionName) { const optionValue = this.option(optionName); if (!(0, _type.isDefined)(optionValue)) { return } const configuration = Array.isArray(optionValue) ? { [optionName]: optionValue } : optionValue; const finalConfiguration = (0, _extend.extend)(this._getBaseModuleConfig(), configuration); return finalConfiguration } _getBaseModuleConfig() { return { editorInstance: this } } _getCustomModules() { const modules = {}; const moduleNames = this._getRegistrator().getRegisteredModuleNames(); moduleNames.forEach((modulePath => { modules[modulePath] = this._getBaseModuleConfig() })); return modules } _textChangeHandler() { const { value: value } = this.option(); const html = this._deltaConverter.toHtml(); const convertedValue = this._convertFromHtml(html); if (value !== convertedValue && !this._isNullValueConverted(value, convertedValue)) { this._isEditorUpdating = true; this.option({ value: convertedValue }) } this._finalizeContentRendering() } _isNullValueConverted(value, convertedValue) { return null === value && "" === convertedValue } _finalizeContentRendering() { if (this._contentRenderedDeferred) { this.clearHistory(); this._contentInitializedCallback.fire(); this._contentRenderedDeferred.resolve(); this._contentRenderedDeferred = void 0 } } _resetEnabledState() { if (this._quillInstance) { const isEnabled = !(this.option("readOnly") || this.option("disabled")); this._quillInstance.enable(isEnabled) } } _renderFormDialog() { this._formDialog = new _formDialog.default(this.$element(), { width: "auto", height: "auto", hideOnOutsideClick: true }) } _shouldRenderAIDialog() { const { aiIntegration: aiIntegration, toolbar: toolbar } = this.option(); if (!(aiIntegration && null !== toolbar && void 0 !== toolbar && toolbar.items)) { return false } return toolbar.items.some((item => "string" === typeof item ? "ai" === item : "ai" === item.name)) } _renderAIDialog() { const shouldRenderAIDialog = this._shouldRenderAIDialog(); if (shouldRenderAIDialog) { const { aiIntegration: aiIntegration } = this.option(); this._aiDialog = new _aiDialog.default(this.$element(), aiIntegration) } } _getStylingModePrefix() { return "dx-htmleditor-" } _getQuillContainer() { return this._$htmlContainer } _prepareModuleOptions(args) { let { value: value } = args; const { fullName: fullName, name: name } = args; const optionData = null === fullName || void 0 === fullName ? void 0 : fullName.split("."); const optionName = optionData.length >= 2 ? optionData[1] : name; if (3 === optionData.length) { value = { [optionData[2]]: value } } return [optionName, value] } _moduleOptionChanged(moduleName, args) { const moduleInstance = this.getModule(moduleName); const shouldPassOptionsToModule = Boolean(moduleInstance); if (shouldPassOptionsToModule) { moduleInstance.option(...this._prepareModuleOptions(args)) } else { this._invalidate() } } _processHtmlContentUpdating(value) { if (this._quillInstance) { if (this._isEditorUpdating) { this._isEditorUpdating = false } else { const html = this._convertToHtml(value); this._suppressValueChangeAction(); this._updateHtmlContent(html); this._resumeValueChangeAction() } } else { this._$htmlContainer.html(value) } } _processAIIntegrationUpdate() { if ((0, _type.isDefined)(this._aiDialog)) { const { aiIntegration: aiIntegration } = this.option(); this._aiDialog.updateAIIntegration(aiIntegration); return } this._renderAIDialog() } _optionChanged(args) { const { name: name, value: value, previousValue: previousValue } = args; switch (name) { case "aiIntegration": this._processAIIntegrationUpdate(); break; case "converter": { this._htmlConverter = value; const { value: currentValue } = this.option(); this._processHtmlContentUpdating(currentValue); break } case "value": { this._processHtmlContentUpdating(value); const { value: currentValue } = this.option(); if (currentValue !== previousValue) { this._setSubmitValue(currentValue); super._optionChanged(_extends({}, args, { [name]: currentValue })) } break } case "placeholder": case "variables": case "toolbar": case "mentions": case "customizeModules": case "allowSoftLineBreak": this._invalidate(); break; case "tableResizing": this._moduleOptionChanged("tableResizing", args); break; case "stylingMode": this._renderStylingMode(); break; case "readOnly": case "disabled": super._optionChanged(args); this._resetEnabledState(); break; case "tableContextMenu": this._moduleOptionChanged("tableContextMenu", args); break; case "mediaResizing": this._moduleOptionChanged("resizing", args); break; case "width": super._optionChanged(args); this._repaintToolbar(); break; case "imageUpload": this._moduleOptionChanged("imageUpload", args); break; default: super._optionChanged(args) } } _repaintToolbar() { this._applyToolbarMethod("repaint") } _updateHtmlContent(html) { const newDelta = this._quillInstance.clipboard.convert({ html: html }); this._quillInstance.setContents(newDelta) } _clean() { if (this._quillInstance) { _events_engine.default.off(this._getContent(), `.${this.NAME}`); this._quillInstance.off("text-change", this._textChangeHandlerWithContext); this._cleanCallback.fire() } this._abortUpdateContentTask(); this._cleanCallback.empty(); this._contentInitializedCallback.empty(); super._clean() } _abortUpdateContentTask() { if (this._updateContentTask) { this._updateContentTask.abort(); this._updateContentTask = void 0 } } _applyQuillMethod(methodName) { if (!this._quillInstance) { return } for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { args[_key - 1] = arguments[_key] } return this._quillInstance[methodName].apply(this._quillInstance, args) } _applyQuillHistoryMethod(methodName) { var _this$_quillInstance; if (null !== (_this$_quillInstance = this._quillInstance) && void 0 !== _this$_quillInstance && _this$_quillInstance.history) { this._quillInstance.history[methodName]() } } _applyToolbarMethod(methodName) { var _this$getModule; null === (_this$getModule = this.getModule("toolbar")) || void 0 === _this$getModule || _this$getModule[methodName]() } addCleanCallback(callback) { this._cleanCallback.add(callback) } addContentInitializedCallback(callback) { this._contentInitializedCallback.add(callback) } register(components) { this._getRegistrator().registerModules(components); if (this._quillInstance) { this.repaint() } } get(componentPath) { return this._getRegistrator().getQuill().import(componentPath) } getModule(moduleName) { return this._applyQuillMethod("getModule", moduleName) } getQuillInstance() { return this._quillInstance } getSelection(focus) { const selection = this._applyQuillMethod("getSelection", focus); return selection } setSelection(index, length) { this._applyQuillMethod("setSelection", index, length) } getText(index, length) { const text = this._applyQuillMethod("getText", index, length); return text } format(formatName, formatValue) { this._applyQuillMethod("format", formatName, formatValue) } formatText(index, length, formatName, formatValue) { this._applyQuillMethod("formatText", index, length, formatName, formatValue) } formatLine(index, length, formatName, formatValue) { this._applyQuillMethod("formatLine", index, length, formatName, formatValue) } getFormat(index, length) { const formats = this._applyQuillMethod("getFormat", index, length); return formats } removeFormat(index, length) { this._applyQuillMethod("removeFormat", index, length) } clearHistory() { this._applyQuillHistoryMethod("clear"); this._applyToolbarMethod("updateHistoryWidgets") } undo() { this._applyQuillHistoryMethod("undo") } redo() { this._applyQuillHistoryMethod("redo") } getLength() { const length = this._applyQuillMethod("getLength"); return length } getBounds(index, length) { const bounds = this._applyQuillMethod("getBounds", index, length); return bounds } delete(index, length) { this._applyQuillMethod("deleteText", index, length) } insertText(index, text, formatName, formatValue) { this._applyQuillMethod("insertText", index, text, formatName, formatValue) } insertEmbed(index, type, options) { this._applyQuillMethod("insertEmbed", index, type, options) } showFormDialog(formConfig) { return this._formDialog.show(formConfig) } showAIDialog(payload) { var _this$_aiDialog; return null === (_this$_aiDialog = this._aiDialog) || void 0 === _this$_aiDialog ? void 0 : _this$_aiDialog.show(payload) } formDialogOption(optionName, optionValue) { return this._formDialog.popupOption.apply(this._formDialog, [optionName, optionValue]) } focus() { super.focus(); this._applyQuillMethod("focus") } blur() { this._applyQuillMethod("blur") } getMentionKeyInTemplateStorage() { return this._mentionKeyInTemplateStorage } }(0, _component_registrator.default)("dxHtmlEditor", HtmlEditor); exports.default = HtmlEditor }, 16723: /*!************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/ui/html_editor/m_converterController.js ***! \************************************************************************************************/ function(__unused_webpack_module, exports) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; const controller = new class { constructor() { this._converters = {}; this._converters = {} } addConverter(name, converter) { this._converters[name] = converter } getConverter(name) { return this._converters[name] } }; exports.default = controller }, 58283: /*!*******************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/ui/html_editor/m_quill_importer.js ***! \*******************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.getQuill = function() { if (!_devextremeQuill.default) { throw _ui.default.Error("E1041", "Quill") } return _devextremeQuill.default }; var _ui = _interopRequireDefault(__webpack_require__( /*! ../../../ui/widget/ui.errors */ 35185)); var _devextremeQuill = _interopRequireDefault(__webpack_require__( /*! devextreme-quill */ 40765)); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } }, 80609: /*!**********************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/ui/html_editor/m_quill_registrator.js ***! \**********************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _m_align = _interopRequireDefault(__webpack_require__( /*! ./formats/m_align */ 58281)); var _m_font = _interopRequireDefault(__webpack_require__( /*! ./formats/m_font */ 45535)); var _m_image = _interopRequireDefault(__webpack_require__( /*! ./formats/m_image */ 93805)); var _m_link = _interopRequireDefault(__webpack_require__( /*! ./formats/m_link */ 93794)); var _m_size = _interopRequireDefault(__webpack_require__( /*! ./formats/m_size */ 51371)); var _m_quill_importer = __webpack_require__( /*! ./m_quill_importer */ 58283); var _m_dropImage = _interopRequireDefault(__webpack_require__( /*! ./modules/m_dropImage */ 38655)); var _m_imageCursor = _interopRequireDefault(__webpack_require__( /*! ./modules/m_imageCursor */ 38850)); var _m_imageUpload = _interopRequireDefault(__webpack_require__( /*! ./modules/m_imageUpload */ 6681)); var _m_mentions = _interopRequireDefault(__webpack_require__( /*! ./modules/m_mentions */ 52826)); var _m_resizing = _interopRequireDefault(__webpack_require__( /*! ./modules/m_resizing */ 62102)); var _m_tableContextMenu = _interopRequireDefault(__webpack_require__( /*! ./modules/m_tableContextMenu */ 74829)); var _m_tableResizing = _interopRequireDefault(__webpack_require__( /*! ./modules/m_tableResizing */ 54970)); var _m_toolbar = _interopRequireDefault(__webpack_require__( /*! ./modules/m_toolbar */ 8478)); var _m_variables = _interopRequireDefault(__webpack_require__( /*! ./modules/m_variables */ 8344)); var _m_base = _interopRequireDefault(__webpack_require__( /*! ./themes/m_base */ 80865)); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } class QuillRegistrator { constructor() { this._customModules = []; if (QuillRegistrator.initialized) { return } const quill = this.getQuill(); const DirectionStyle = quill.import("attributors/style/direction"); quill.register({ "formats/align": _m_align.default, "formats/direction": DirectionStyle, "formats/font": _m_font.default, "formats/size": _m_size.default, "formats/extendedImage": _m_image.default, "formats/link": _m_link.default, "modules/toolbar": _m_toolbar.default, "modules/dropImage": _m_dropImage.default, "modules/variables": _m_variables.default, "modules/resizing": _m_resizing.default, "modules/tableResizing": _m_tableResizing.default, "modules/tableContextMenu": _m_tableContextMenu.default, "modules/imageUpload": _m_imageUpload.default, "modules/imageCursor": _m_imageCursor.default, "modules/mentions": _m_mentions.default, "themes/basic": _m_base.default }, true); this._customModules = []; QuillRegistrator._initialized = true } createEditor(container, config) { const quill = this.getQuill(); return new quill(container, config) } registerModules(modulesConfig) { const isModule = RegExp("modules/*"); const quill = this.getQuill(); const isRegisteredModule = modulePath => !!quill.imports[modulePath]; for (const modulePath in modulesConfig) { if (isModule.test(modulePath) && !isRegisteredModule(modulePath)) { this._customModules.push(modulePath.slice(8)) } } quill.register(modulesConfig, true) } getRegisteredModuleNames() { return this._customModules } getQuill() { return (0, _m_quill_importer.getQuill)() } } exports.default = QuillRegistrator }, 23102: /*!***********************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/ui/html_editor/matchers/m_wordLists.js ***! \***********************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _type = __webpack_require__( /*! ../../../../core/utils/type */ 11528); function getListType(matches) { const prefix = matches[1]; return prefix.match(/\S+\./) ? "ordered" : "bullet" } exports.default = quill => { const Delta = quill.import("delta"); const msStyleAttributeName = quill.MS_LIST_DATA_KEY; return (node, delta) => { const ops = delta.ops.slice(); const insertOperation = ops[0]; if (!(0, _type.isString)(insertOperation.insert)) { return delta } insertOperation.insert = insertOperation.insert.replace(/^\s+/, ""); const listDecoratorMatches = insertOperation.insert.match(/^(\S+)\s+/); const indent = listDecoratorMatches && function(node, msStyleAttributeName) { const style = node.getAttribute(msStyleAttributeName); if (style) { const level = style.replace(/\n+/g, "").match(/level(\d+)/); return level ? level[1] - 1 : 0 } return false }(node, msStyleAttributeName); if (!listDecoratorMatches || false === indent) { return delta } insertOperation.insert = insertOperation.insert.substring(listDecoratorMatches[0].length, insertOperation.insert.length); ! function(operations) { const newLineOperation = operations[operations.length - 1]; newLineOperation.insert = newLineOperation.insert.trim() }(ops); ops.push({ insert: "\n", attributes: { list: getListType(listDecoratorMatches), indent: indent } }); return new Delta(ops) } } }, 74356: /*!****************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/ui/html_editor/modules/empty.js ***! \****************************************************************************************/ function(__unused_webpack_module, exports) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; exports.default = class {} }, 49864: /*!*****************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/ui/html_editor/modules/m_base.js ***! \*****************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _type = __webpack_require__( /*! ../../../../core/utils/type */ 11528); var _devextremeQuill = _interopRequireDefault(__webpack_require__( /*! devextreme-quill */ 40765)); var _empty = _interopRequireDefault(__webpack_require__( /*! ./empty */ 74356)); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } let BaseModule = _empty.default; if (_devextremeQuill.default) { const BaseQuillModule = _devextremeQuill.default.import("core/module"); BaseModule = class extends BaseQuillModule { constructor(quill, options) { super(quill, options); this.editorInstance = options.editorInstance } saveValueChangeEvent(event) { this.editorInstance._saveValueChangeEvent(event) } addCleanCallback(callback) { this.editorInstance.addCleanCallback(callback) } handleOptionChangeValue(changes) { if ((0, _type.isObject)(changes)) { Object.entries(changes).forEach((_ref => { let [name, value] = _ref; return this.option(name, value) })) } else if (!(0, _type.isDefined)(changes)) { null === this || void 0 === this || this.clean() } } } } exports.default = BaseModule }, 38655: /*!**********************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/ui/html_editor/modules/m_dropImage.js ***! \**********************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _events_engine = _interopRequireDefault(__webpack_require__( /*! ../../../../common/core/events/core/events_engine */ 92774)); var _index = __webpack_require__( /*! ../../../../common/core/events/utils/index */ 98834); var _browser = _interopRequireDefault(__webpack_require__( /*! ../../../../core/utils/browser */ 48314)); var _iterator = __webpack_require__( /*! ../../../../core/utils/iterator */ 21274); var _window = __webpack_require__( /*! ../../../../core/utils/window */ 3104); var _devextremeQuill = _interopRequireDefault(__webpack_require__( /*! devextreme-quill */ 40765)); var _m_base = _interopRequireDefault(__webpack_require__( /*! ./m_base */ 49864)); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } let DropImageModule = _m_base.default; if (_devextremeQuill.default) { DropImageModule = class extends _m_base.default { constructor(quill, options) { super(quill, options); const widgetName = this.editorInstance.NAME; _events_engine.default.on(this.quill.root, (0, _index.addNamespace)("drop", widgetName), this._dropHandler.bind(this)); _events_engine.default.on(this.quill.root, (0, _index.addNamespace)("paste", widgetName), this._pasteHandler.bind(this)) } _dropHandler(e) { var _dataTransfer$files; const { dataTransfer: dataTransfer } = e.originalEvent; const hasFiles = null === dataTransfer || void 0 === dataTransfer || null === (_dataTransfer$files = dataTransfer.files) || void 0 === _dataTransfer$files ? void 0 : _dataTransfer$files.length; this.saveValueChangeEvent(e); e.preventDefault(); if (hasFiles) { this._getImage(dataTransfer.files, this._addImage.bind(this)) } } _pasteHandler(e) { var _clipboardData$items; const { clipboardData: clipboardData } = e.originalEvent; this.saveValueChangeEvent(e); if (!clipboardData) { return } const hasDataItems = null === (_clipboardData$items = clipboardData.items) || void 0 === _clipboardData$items ? void 0 : _clipboardData$items.length; const isHtmlData = clipboardData.getData("text/html"); if (!isHtmlData && hasDataItems) { this._getImage(clipboardData.items, (imageData => { if (_browser.default.mozilla) { return } this._addImage(imageData) })) } } _isImage(file) { return !!file.type.match(/^image\/(a?png|bmp|gif|p?jpe?g|svg|vnd\.microsoft\.icon|webp)/i) } _getImage(files, callback) { const window = (0, _window.getWindow)(); (0, _iterator.each)(files, ((index, file) => { if (!this._isImage(file)) { return } const reader = new window.FileReader; reader.onload = _ref => { let { target: target } = _ref; callback(target.result) }; const readableFile = file.getAsFile ? file.getAsFile() : file; if (readableFile instanceof window.Blob) { reader.readAsDataURL(readableFile) } })) } _addImage(data) { const selection = this.quill.getSelection(); const pasteIndex = selection ? selection.index : this.quill.getLength(); this.quill.insertEmbed(pasteIndex, "extendedImage", data, "user") } } } exports.default = DropImageModule }, 38850: /*!************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/ui/html_editor/modules/m_imageCursor.js ***! \************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _events_engine = _interopRequireDefault(__webpack_require__( /*! ../../../../common/core/events/core/events_engine */ 92774)); var _index = __webpack_require__( /*! ../../../../common/core/events/utils/index */ 98834); var _devextremeQuill = _interopRequireDefault(__webpack_require__( /*! devextreme-quill */ 40765)); var _m_base = _interopRequireDefault(__webpack_require__( /*! ./m_base */ 49864)); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } const clickEvent = (0, _index.addNamespace)("dxclick", "dxHtmlEditorImageCursor"); let ImageCursorModule = _m_base.default; if (_devextremeQuill.default) { ImageCursorModule = class extends _m_base.default { constructor(quill, options) { super(quill, options); this.addCleanCallback(this.clean.bind(this)); this._attachEvents() } _attachEvents() { _events_engine.default.on(this.quill.root, clickEvent, this._clickHandler.bind(this)) } _detachEvents() { _events_engine.default.off(this.quill.root, clickEvent) } _clickHandler(e) { if (this._isAllowedTarget(e.target)) { this._adjustSelection(e) } } _isAllowedTarget(targetElement) { return this._isImage(targetElement) } _isImage(targetElement) { return "IMG" === targetElement.tagName.toUpperCase() } _adjustSelection(e) { const blot = this.quill.scroll.find(e.target); if (blot) { const index = blot.offset(this.quill.scroll); this.quill.setSelection(index + 1, 0) } else { this.quill.setSelection(0, 0) } } clean() { this._detachEvents() } } } exports.default = ImageCursorModule }, 6681: /*!************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/ui/html_editor/modules/m_imageUpload.js ***! \************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _events_engine = _interopRequireDefault(__webpack_require__( /*! ../../../../common/core/events/core/events_engine */ 92774)); var _index = __webpack_require__( /*! ../../../../common/core/events/utils/index */ 98834); var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../../../core/renderer */ 64553)); var _extend = __webpack_require__( /*! ../../../../core/utils/extend */ 52576); var _type = __webpack_require__( /*! ../../../../core/utils/type */ 11528); var _file_uploader = _interopRequireDefault(__webpack_require__( /*! ../../../../ui/file_uploader */ 26980)); var _devextremeQuill = _interopRequireDefault(__webpack_require__( /*! devextreme-quill */ 40765)); var _m_image_uploader_helper = __webpack_require__( /*! ../utils/m_image_uploader_helper */ 85936); var _m_base = _interopRequireDefault(__webpack_require__( /*! ./m_base */ 49864)); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } let ImageUploadModule = _m_base.default; if (_devextremeQuill.default) { ImageUploadModule = class extends _m_base.default { constructor(quill, options) { super(quill, options); this.options = options; this._quillContainer = this.editorInstance._getQuillContainer(); this.addCleanCallback(this.prepareCleanCallback()); this._handleServerUpload() } _handleServerUpload() { const useServerUpload = (0, _type.isDefined)(this.options.fileUploadMode) && "base64" !== this.options.fileUploadMode; useServerUpload ? this._enableDragAndDropUploading() : this._disableDragAndDropUploading() } _getUploaderModule() { if (!this._uploaderModule) { this._uploaderModule = this.quill.getModule("uploader") } return this._uploaderModule } _disableDragAndDropUploading() { var _this$_fileUploader; this._getUploaderModule().preventImageUploading(false); this._detachEvents(); null === (_this$_fileUploader = this._fileUploader) || void 0 === _this$_fileUploader || _this$_fileUploader.dispose() } _enableDragAndDropUploading() { this._initFileUploader(); this._getUploaderModule().preventImageUploading(true); this._attachEvents() } _initFileUploader() { const $container = (0, _renderer.default)("<div>").addClass("dx-htmleditor-hidden-content").appendTo(this._quillContainer); const fileUploaderOptions = (0, _extend.extend)({}, (0, _m_image_uploader_helper.getFileUploaderBaseOptions)(), { uploadUrl: this.options.uploadUrl, onUploaded: this._onUploaded.bind(this) }, this.options.fileUploaderOptions); this._fileUploader = this.editorInstance._createComponent($container, _file_uploader.default, fileUploaderOptions); return $container } _onUploaded(data) { const { index: pasteIndex } = this.quill.getSelection() ?? { index: this.quill.getLength() }; (0, _m_image_uploader_helper.serverUpload)(this.options.uploadDirectory, data.file.name, this.quill, pasteIndex) } _attachEvents() { _events_engine.default.on(this.quill.root, (0, _index.addNamespace)("drop", "dxHtmlEditorImageUpload"), this._dropHandler.bind(this)); _events_engine.default.on(this.quill.root, (0, _index.addNamespace)("paste", "dxHtmlEditorImageUpload"), this._pasteHandler.bind(this)) } _detachEvents() { _events_engine.default.off(this.quill.root, "dxHtmlEditorImageUpload") } _dropHandler(e) { this._handleInsertImages(e, "dataTransfer") } _pasteHandler(e) { this._handleInsertImages(e, "clipboardData") } _handleInsertImages(e, filesField) { this.saveValueChangeEvent(e); const files = Array.from(e.originalEvent[filesField].files || []); const uploads = files; if (uploads.length) { e.preventDefault(); e.stopPropagation(); this._fileUploader.option("value", uploads); this._fileUploader.upload() } } clean() { this._disableDragAndDropUploading() } prepareCleanCallback() { return () => { this.clean() } } option(option, value) { switch (option) { case "imageUpload": this.handleOptionChangeValue(value); break; case "fileUploadMode": this.options.fileUploadMode = value; this._handleServerUpload(); break; case "fileUploaderOptions": this._fileUploader.option(value) } } } } exports.default = ImageUploadModule }, 52826: /*!*********************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/ui/html_editor/modules/m_mentions.js ***! \*********************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _events_engine = _interopRequireDefault(__webpack_require__( /*! ../../../../common/core/events/core/events_engine */ 92774)); var _element = __webpack_require__( /*! ../../../../core/element */ 61404); var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../../../core/renderer */ 64553)); var _data = __webpack_require__( /*! ../../../../core/utils/data */ 31e3); var _extend = __webpack_require__( /*! ../../../../core/utils/extend */ 52576); var _type = __webpack_require__( /*! ../../../../core/utils/type */ 11528); var _devextremeQuill = _interopRequireDefault(__webpack_require__( /*! devextreme-quill */ 40765)); var _m_mention = _interopRequireDefault(__webpack_require__( /*! ../formats/m_mention */ 11278)); var _m_base = _interopRequireDefault(__webpack_require__( /*! ./m_base */ 49864)); var _m_popup = _interopRequireDefault(__webpack_require__( /*! ./m_popup */ 55911)); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } let MentionModule = _m_base.default; if (_devextremeQuill.default) { const USER_ACTION = "user"; const DEFAULT_MARKER = "@"; const KEYS = { ARROW_UP: "upArrow", ARROW_DOWN: "downArrow", ARROW_LEFT: "leftArrow", ARROW_RIGHT: "rightArrow", ENTER: "enter", ESCAPE: "escape", SPACE: "space", PAGE_UP: "pageUp", PAGE_DOWN: "pageDown", END: "end", HOME: "home" }; const NAVIGATION_KEYS = [KEYS.ARROW_LEFT, KEYS.ARROW_RIGHT, KEYS.PAGE_UP, KEYS.PAGE_DOWN, KEYS.END, KEYS.HOME]; const ALLOWED_PREFIX_CHARS = [" ", "\n"]; const DISABLED_STATE_CLASS = "dx-state-disabled"; _devextremeQuill.default.register({ "formats/mention": _m_mention.default }, true); MentionModule = class extends _m_popup.default { constructor(quill, options) { super(quill, options); this._mentions = {}; options.mentions.forEach((item => { let { marker: marker } = item; if (!marker) { item.marker = marker = DEFAULT_MARKER } const { template: template } = item; if (template) { const preparedTemplate = this.editorInstance._getTemplate(template); preparedTemplate && _m_mention.default.addTemplate({ marker: marker, editorKey: this.editorInstance.getMentionKeyInTemplateStorage() }, preparedTemplate) } this._mentions[marker] = (0, _extend.extend)({}, this._getDefaultOptions(), item) })); this._attachKeyboardHandlers(); this.addCleanCallback(this.clean.bind(this)); this.quill.on("text-change", this.onTextChange.bind(this)) } _getDefaultOptions() { const baseConfig = super._getDefaultOptions(); return (0, _extend.extend)(baseConfig, { itemTemplate: "item", valueExpr: "this", displayExpr: "this", template: null, searchExpr: null, searchTimeout: 500, minSearchLength: 0 }) } _attachKeyboardHandlers() { this.quill.keyboard.addBinding({ key: KEYS.ARROW_UP }, this._moveToItem.bind(this, "prev")); this.quill.keyboard.addBinding({ key: KEYS.ARROW_DOWN }, this._moveToItem.bind(this, "next")); this.quill.keyboard.addBinding({ key: [KEYS.ENTER, KEYS.SPACE] }, this._selectItemHandler.bind(this)); const enterBindings = this.quill.keyboard.bindings[KEYS.ENTER]; enterBindings.unshift(enterBindings.pop()); this.quill.keyboard.addBinding({ key: KEYS.ESCAPE }, this._escapeKeyHandler.bind(this)); this.quill.keyboard.addBinding({ key: [KEYS.ARROW_LEFT, KEYS.ARROW_RIGHT], shiftKey: true }, this._ignoreKeyHandler.bind(this)); this.quill.keyboard.addBinding({ key: NAVIGATION_KEYS }, this._ignoreKeyHandler.bind(this)) } _moveToItem(direction) { const dataSource = this._list.getDataSource(); if (this._isMentionActive && !dataSource.isLoading()) { const $focusedItem = (0, _renderer.default)(this._list.option("focusedElement")); const defaultItemPosition = "next" === direction ? "first" : "last"; let $nextItem = $focusedItem[direction](); $nextItem = $nextItem.length ? $nextItem : this._activeListItems[defaultItemPosition](); this._list.option("focusedElement", (0, _element.getPublicElement)($nextItem)); this._list.scrollToItem($nextItem) } return !this._isMentionActive } _ignoreKeyHandler() { return !this._isMentionActive } _fitIntoRange(value, start, end) { if (value > end) { return start } if (value < start) { return end } return value } _selectItemHandler() { if (this._isMentionActive) { this._list.option("items").length ? this._list.selectItem(this._list.option("focusedElement")) : this._popup.hide() } return !this._isMentionActive } _escapeKeyHandler() { if (this._isMentionActive) { this._popup.hide() } return !this._isMentionActive } renderList($container, options) { this.compileGetters(this.options); super.renderList($container, options) } compileGetters(_ref) { let { displayExpr: displayExpr, valueExpr: valueExpr } = _ref; this._valueGetter = (0, _data.compileGetter)(displayExpr); this._idGetter = (0, _data.compileGetter)(valueExpr) } _getListConfig(options) { const baseConfig = super._getListConfig(options); return (0, _extend.extend)(baseConfig, { itemTemplate: this.options.itemTemplate, onContentReady: () => { if (this._hasSearch) { this._popup.repaint(); this._focusFirstElement(); this._hasSearch = false } } }) } insertEmbedContent() { const markerLength = this._activeMentionConfig.marker.length; const textLength = markerLength + this._searchValue.length; const caretPosition = this.getPosition(); const selectedItem = this._list.option("selectedItem"); const value = { value: this._valueGetter(selectedItem), id: this._idGetter(selectedItem), marker: this._activeMentionConfig.marker, keyInTemplateStorage: this.editorInstance.getMentionKeyInTemplateStorage() }; const Delta = _devextremeQuill.default.import("delta"); const startIndex = Math.max(0, caretPosition - markerLength); const currentFormat = this.quill.getFormat(startIndex); const newDelta = (new Delta).retain(startIndex).delete(textLength).insert({ mention: value }).insert(" ", currentFormat); this.quill.updateContents(newDelta); this.quill.setSelection(startIndex + 2) } _getLastInsertOperation(ops) { const lastOperation = ops[ops.length - 1]; const isLastOperationInsert = "insert" in lastOperation; if (isLastOperationInsert) { return lastOperation } const isLastOperationDelete = "delete" in lastOperation; if (isLastOperationDelete && ops.length >= 2) { const penultOperation = ops[ops.length - 2]; const isPenultOperationInsert = "insert" in penultOperation; const isSelectionReplacing = isLastOperationDelete && isPenultOperationInsert; if (isSelectionReplacing) { return penultOperation } } return null } onTextChange(newDelta, oldDelta, source) { if (source === USER_ACTION) { const lastOperation = newDelta.ops[newDelta.ops.length - 1]; if (this._isMentionActive && this._isPopupVisible) { this._processSearchValue(lastOperation) && this._filterList(this._searchValue) } else { const { ops: ops } = newDelta; const lastInsertOperation = this._getLastInsertOperation(ops); if (lastInsertOperation) { this.checkMentionRequest(lastInsertOperation, ops) } } } } get _isPopupVisible() { var _this$_popup; return null === (_this$_popup = this._popup) || void 0 === _this$_popup ? void 0 : _this$_popup.option("visible") } _processSearchValue(operation) { const isInsertOperation = "insert" in operation; if (isInsertOperation) { this._searchValue += operation.insert } else { if (!this._searchValue.length || operation.delete > 1) { this._popup.hide(); return false } this._searchValue = this._searchValue.slice(0, -1) } return true } checkMentionRequest(_ref2, ops) { let { insert: insert } = _ref2; const caret = this.quill.getSelection(); if (!insert || !(0, _type.isString)(insert) || !caret || this._isMarkerPartOfText(ops[0].retain)) { return } this._activeMentionConfig = this._mentions[insert]; if (this._activeMentionConfig) { this._updateList(this._activeMentionConfig); const isOnNewLine = caret.index && "\n" === this._getCharByIndex(caret.index - 1); this.savePosition(caret.index + isOnNewLine); this._popup.option("position", this._popupPosition); this._searchValue = ""; this._popup.show() } } _isMarkerPartOfText(retain) { if (!retain || ALLOWED_PREFIX_CHARS.includes(this._getCharByIndex(retain - 1))) { return false } return true } _getCharByIndex(index) { return this.quill.getContents(index, 1).ops[0].insert } _updateList(_ref3) { let { dataSource: dataSource, displayExpr: displayExpr, valueExpr: valueExpr, itemTemplate: itemTemplate, searchExpr: searchExpr } = _ref3; this.compileGetters({ displayExpr: displayExpr, valueExpr: valueExpr }); this._list.unselectAll(); this._list.option({ dataSource: dataSource, displayExpr: displayExpr, itemTemplate: itemTemplate, searchExpr: searchExpr }) } _filterList(searchValue) { if (!this._isMinSearchLengthExceeded(searchValue)) { this._resetFilter(); return } const { searchTimeout: searchTimeout } = this._activeMentionConfig; if (searchTimeout) { clearTimeout(this._searchTimer); this._searchTimer = setTimeout((() => { this._search(searchValue) }), searchTimeout) } else { this._search(searchValue) } } _isMinSearchLengthExceeded(searchValue) { return searchValue.length >= this._activeMentionConfig.minSearchLength } _resetFilter() { clearTimeout(this._searchTimer); this._search(null) } _search(searchValue) { this._hasSearch = true; this._list.option("searchValue", searchValue) } _focusFirstElement() { if (!this._list) { return } const $firstItem = this._activeListItems.first(); this._list.option("focusedElement", (0, _element.getPublicElement)($firstItem)); this._list.scrollToItem($firstItem) } _toggleActiveDescendant(shown) { if (shown) { const ariaId = this._list.getFocusedItemId(); this.quill.root.setAttribute("aria-activedescendant", ariaId) } else { this.quill.root.removeAttribute("aria-activedescendant") } } get _popupPosition() { const position = this.getPosition(); const { left: mentionLeft, top: mentionTop, height: mentionHeight } = this.quill.getBounds(position ? position - 1 : position); const { left: leftOffset, top: topOffset } = (0, _renderer.default)(this.quill.root).offset(); const positionEvent = _events_engine.default.Event("positionEvent", { pageX: leftOffset + mentionLeft, pageY: topOffset + mentionTop }); return { of: positionEvent, offset: { v: mentionHeight }, my: "top left", at: "top left", collision: { y: "flip", x: "flipfit" } } } _getPopupConfig() { return (0, _extend.extend)(super._getPopupConfig(), { hideOnParentScroll: false, onShown: () => { this._toggleActiveDescendant(true); this._isMentionActive = true; this._hasSearch = false; this._focusFirstElement() }, onHidden: () => { this._toggleActiveDescendant(false); this._list.unselectAll(); this._list.option("focusedElement", null); this._isMentionActive = false; this._search(null) }, focusStateEnabled: false }) } get _activeListItems() { return this._list.itemElements().filter(`:not(.${DISABLED_STATE_CLASS})`) } clean() { Object.keys(this._mentions).forEach((marker => { if (this._mentions[marker].template) { _m_mention.default.removeTemplate({ marker: marker, editorKey: this.editorInstance.getMentionKeyInTemplateStorage() }) } })) } } } exports.default = MentionModule }, 55911: /*!******************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/ui/html_editor/modules/m_popup.js ***! \******************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _events_engine = _interopRequireDefault(__webpack_require__( /*! ../../../../common/core/events/core/events_engine */ 92774)); var _index = __webpack_require__( /*! ../../../../common/core/events/utils/index */ 98834); var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../../../core/renderer */ 64553)); var _extend = __webpack_require__( /*! ../../../../core/utils/extend */ 52576); var _size = __webpack_require__( /*! ../../../../core/utils/size */ 57653); var _list_light = _interopRequireDefault(__webpack_require__( /*! ../../../../ui/list_light */ 80070)); var _popup = _interopRequireDefault(__webpack_require__( /*! ../../../../ui/popup */ 97643)); var _m_window = _interopRequireDefault(__webpack_require__( /*! ../../../core/utils/m_window */ 14470)); var _devextremeQuill = _interopRequireDefault(__webpack_require__( /*! devextreme-quill */ 40765)); var _m_base = _interopRequireDefault(__webpack_require__( /*! ./m_base */ 49864)); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } let ListPopupModule = _m_base.default; if (_devextremeQuill.default) { const SUGGESTION_LIST_CLASS = "dx-suggestion-list"; const SUGGESTION_LIST_WRAPPER_CLASS = "dx-suggestion-list-wrapper"; const DROPDOWN_EDITOR_OVERLAY_CLASS = "dx-dropdowneditor-overlay"; const MIN_HEIGHT = 100; ListPopupModule = class extends _m_base.default { constructor(quill, options) { super(quill, options); this.options = (0, _extend.extend)({}, this._getDefaultOptions(), options); this._popup = this.renderPopup(); this._popup.$wrapper().addClass(`${SUGGESTION_LIST_WRAPPER_CLASS} ${DROPDOWN_EDITOR_OVERLAY_CLASS}`); this._renderPreventFocusOut() } _getDefaultOptions() { return { dataSource: null } } renderList($container, options) { const $list = (0, _renderer.default)("<div>").addClass(SUGGESTION_LIST_CLASS).appendTo($container); this._list = this.options.editorInstance._createComponent($list, _list_light.default, options) } renderPopup() { const { editorInstance: editorInstance } = this.options; const $container = (0, _renderer.default)("<div>").appendTo(editorInstance.$element()); const popupConfig = this._getPopupConfig(); return editorInstance._createComponent($container, _popup.default, popupConfig) } _getPopupConfig() { return { contentTemplate: contentElem => { const listConfig = this._getListConfig(this.options); this.renderList((0, _renderer.default)(contentElem), listConfig) }, deferRendering: false, onShown: () => { this._list.focus() }, onHidden: () => { this._list.unselectAll(); this._list.option("focusedElement", null) }, showTitle: false, width: "auto", height: "auto", shading: false, hideOnParentScroll: true, hideOnOutsideClick: true, animation: { show: { type: "fade", duration: 0, from: 0, to: 1 }, hide: { type: "fade", duration: 400, from: 1, to: 0 } }, fullScreen: false, maxHeight: this.maxHeight } } _getListConfig(options) { return { dataSource: options.dataSource, onSelectionChanged: this.selectionChangedHandler.bind(this), selectionMode: "single", pageLoadMode: "scrollBottom" } } get maxHeight() { const window = _m_window.default.getWindow(); const windowHeight = window && (0, _size.getHeight)(window) || 0; return Math.max(MIN_HEIGHT, .5 * windowHeight) } selectionChangedHandler(e) { if (this._popup.option("visible") && e.addedItems.length) { this._popup.hide(); this.insertEmbedContent(e) } } _renderPreventFocusOut() { const eventName = (0, _index.addNamespace)("mousedown", "dxHtmlEditorPopupModule"); _events_engine.default.on(this._popup.$wrapper(), eventName, (e => { e.preventDefault() })) } insertEmbedContent(selectionChangedEvent) {} showPopup() { this._popup && this._popup.show() } savePosition(position) { this.caretPosition = position } getPosition() { return this.caretPosition } } } exports.default = ListPopupModule }, 62102: /*!*********************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/ui/html_editor/modules/m_resizing.js ***! \*********************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _translator = __webpack_require__( /*! ../../../../common/core/animation/translator */ 88603); var _click = __webpack_require__( /*! ../../../../common/core/events/click */ 64044); var _events_engine = _interopRequireDefault(__webpack_require__( /*! ../../../../common/core/events/core/events_engine */ 92774)); var _index = __webpack_require__( /*! ../../../../common/core/events/utils/index */ 98834); var _devices = _interopRequireDefault(__webpack_require__( /*! ../../../../core/devices */ 65951)); var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../../../core/renderer */ 64553)); var _position = __webpack_require__( /*! ../../../../core/utils/position */ 41639); var _size = __webpack_require__( /*! ../../../../core/utils/size */ 57653); var _resizable = _interopRequireDefault(__webpack_require__( /*! ../../../../ui/resizable */ 28416)); var _devextremeQuill = _interopRequireDefault(__webpack_require__( /*! devextreme-quill */ 40765)); var _m_base = _interopRequireDefault(__webpack_require__( /*! ./m_base */ 49864)); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } const KEYDOWN_EVENT = (0, _index.addNamespace)("keydown", "dxHtmlResizingModule"); const SCROLL_EVENT = (0, _index.addNamespace)("scroll", "dxHtmlResizingModule"); const MOUSEDOWN_EVENT = (0, _index.addNamespace)("mousedown", "dxHtmlResizingModule"); class ResizingModule extends _m_base.default { constructor(quill, options) { super(quill, options); this.allowedTargets = options.allowedTargets || ["image"]; this.enabled = !!options.enabled; this._hideFrameWithContext = this.hideFrame.bind(this); this._framePositionChangedHandler = this._prepareFramePositionChangedHandler(); if (this.enabled) { this._attachEvents(); this._createResizeFrame() } } _attachEvents() { _events_engine.default.on(this.quill.root, (0, _index.addNamespace)(_click.name, "dxHtmlResizingModule"), this._clickHandler.bind(this)); _events_engine.default.on(this.quill.root, SCROLL_EVENT, this._framePositionChangedHandler); this.editorInstance.on("focusOut", this._hideFrameWithContext); this.quill.on("text-change", this._framePositionChangedHandler) } _detachEvents() { _events_engine.default.off(this.quill.root, ".dxHtmlResizingModule"); this.editorInstance.off("focusOut", this._hideFrameWithContext); this.quill.off("text-change", this._framePositionChangedHandler) } _clickHandler(e) { if (this._isAllowedTarget(e.target)) { if (this._$target === e.target) { return } this._$target = e.target; const $target = (0, _renderer.default)(this._$target); const minWidth = Math.max((0, _size.getOuterWidth)($target) - (0, _size.getWidth)($target), this.resizable.option("minWidth")); const minHeight = Math.max((0, _size.getOuterHeight)($target) - (0, _size.getHeight)($target), this.resizable.option("minHeight")); this.resizable.option({ minWidth: minWidth, minHeight: minHeight }); this.updateFramePosition(); this.showFrame(); this._adjustSelection() } else if (this._$target) { this.hideFrame() } } _prepareFramePositionChangedHandler() { return () => { if (this._$target) { this.updateFramePosition() } } } _adjustSelection() { if (!this.quill.getSelection()) { this.quill.setSelection(0, 0) } } _isAllowedTarget(targetElement) { return this._isImage(targetElement) } _isImage(targetElement) { return -1 !== this.allowedTargets.indexOf("image") && "IMG" === targetElement.tagName.toUpperCase() } showFrame() { this._$resizeFrame.show(); _events_engine.default.on(this.quill.root, KEYDOWN_EVENT, this._handleFrameKeyDown.bind(this)) } _handleFrameKeyDown(e) { const keyName = (0, _index.normalizeKeyName)(e); if ("del" === keyName || "backspace" === keyName) { this._deleteImage() } this.hideFrame() } hideFrame() { this._$target = null; this._$resizeFrame.hide(); _events_engine.default.off(this.quill.root, KEYDOWN_EVENT) } updateFramePosition() { const { height: height, width: width, top: targetTop, left: targetLeft } = (0, _position.getBoundingRect)(this._$target); const { top: containerTop, left: containerLeft } = (0, _position.getBoundingRect)(this.quill.root); const borderWidth = this._getBorderWidth(); this._$resizeFrame.css({ height: height, width: width, padding: 1, top: targetTop - containerTop - borderWidth - 1, left: targetLeft - containerLeft - borderWidth - 1 }); (0, _translator.move)(this._$resizeFrame, { left: 0, top: 0 }) } _getBorderWidth() { return parseInt(this._$resizeFrame.css("borderTopWidth")) } _createResizeFrame() { if (this._$resizeFrame) { return } const { deviceType: deviceType } = _devices.default.current(); this._$resizeFrame = (0, _renderer.default)("<div>").addClass("dx-resize-frame").toggleClass("dx-touch-device", "desktop" !== deviceType).appendTo(this.editorInstance._getQuillContainer()).hide(); _events_engine.default.on(this._$resizeFrame, MOUSEDOWN_EVENT, (e => { e.preventDefault() })); this.resizable = this.editorInstance._createComponent(this._$resizeFrame, _resizable.default, { onResize: e => { if (!this._$target) { return }(0, _renderer.default)(this._$target).attr({ height: e.height, width: e.width }); this.updateFramePosition() } }) } _deleteImage() { if (this._isAllowedTarget(this._$target)) { var _Quill$find; null === (_Quill$find = _devextremeQuill.default.find(this._$target)) || void 0 === _Quill$find || _Quill$find.deleteAt(0) } } option(option, value) { if ("mediaResizing" === option) { this.handleOptionChangeValue(value); return } if ("enabled" === option) { if (this.enabled === value) { return } this.enabled = value; if (value) { this._attachEvents(); this._createResizeFrame() } else { this.clean() } } else if ("allowedTargets" === option && Array.isArray(value)) { this.allowedTargets = value } } clean() { this._detachEvents(); this._$resizeFrame.remove(); this._$resizeFrame = void 0 } } exports.default = ResizingModule }, 74829: /*!*****************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/ui/html_editor/modules/m_tableContextMenu.js ***! \*****************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _events_engine = _interopRequireDefault(__webpack_require__( /*! ../../../../common/core/events/core/events_engine */ 92774)); var _index = __webpack_require__( /*! ../../../../common/core/events/utils/index */ 98834); var _message = _interopRequireDefault(__webpack_require__( /*! ../../../../common/core/localization/message */ 4671)); var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../../../core/renderer */ 64553)); var _extend = __webpack_require__( /*! ../../../../core/utils/extend */ 52576); var _inflector = __webpack_require__( /*! ../../../../core/utils/inflector */ 53124); var _iterator = __webpack_require__( /*! ../../../../core/utils/iterator */ 21274); var _type = __webpack_require__( /*! ../../../../core/utils/type */ 11528); var _context_menu = _interopRequireDefault(__webpack_require__( /*! ../../../../ui/context_menu */ 34378)); var _devextremeQuill = _interopRequireDefault(__webpack_require__( /*! devextreme-quill */ 40765)); var _m_table_helper = __webpack_require__( /*! ../utils/m_table_helper */ 53548); var _m_toolbar_helper = __webpack_require__( /*! ../utils/m_toolbar_helper */ 12873); var _m_base = _interopRequireDefault(__webpack_require__( /*! ./m_base */ 49864)); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } const CONTEXT_MENU_EVENT = (0, _index.addNamespace)("dxcontextmenu", "dxHtmlEditorTableContextMenu"); let TableContextMenuModule = _m_base.default; const localize = name => _message.default.format(`dxHtmlEditor-${(0,_inflector.camelize)(name)}`); if (_devextremeQuill.default) { TableContextMenuModule = class extends _m_base.default { constructor(quill, options) { super(quill, options); this.enabled = !!options.enabled; this._quillContainer = this.editorInstance._getQuillContainer(); this.addCleanCallback(this.prepareCleanCallback()); this._formatHandlers = (0, _m_toolbar_helper.getFormatHandlers)(this); this._tableFormats = (0, _m_table_helper.getTableFormats)(quill); if (this.enabled) { this._enableContextMenu(options.items) } } _enableContextMenu(items) { var _this$_contextMenu; null === (_this$_contextMenu = this._contextMenu) || void 0 === _this$_contextMenu || _this$_contextMenu.dispose(); this._contextMenu = this._createContextMenu(items); this._attachEvents() } _attachEvents() { _events_engine.default.on(this.editorInstance._getContent(), CONTEXT_MENU_EVENT, this._prepareContextMenuHandler()) } _detachEvents() { _events_engine.default.off(this.editorInstance._getContent(), CONTEXT_MENU_EVENT) } _onContextMenuInitialized(e) { e.component.registerKeyHandler("escape", (() => { this.editorInstance.focus() })) } _createContextMenu(items) { const $container = (0, _renderer.default)("<div>").appendTo(this.editorInstance.$element()); const menuConfig = this._getMenuConfig(items); return this.editorInstance._createComponent($container, _context_menu.default, menuConfig) } showPropertiesForm() { let type = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : "cell"; const $element = (0, _renderer.default)(this._targetElement).closest("cell" === type ? "th, td" : "table"); this._contextMenu.hide(); this._formatHandlers[`${type}Properties`]($element); this._targetElement = null } _isAcceptableItem(widget, acceptableWidgetName) { return !widget || widget === acceptableWidgetName } _handleObjectItem(item) { if (item.name && this._isAcceptableItem(item.widget, "dxButton")) { const defaultButtonItemConfig = this._prepareMenuItemConfig(item.name); const buttonItemConfig = (0, _extend.extend)(true, defaultButtonItemConfig, item); return buttonItemConfig } if (item.items) { item.items = this._prepareMenuItems(item.items); return item } return item } _prepareMenuItemConfig(name) { const iconName = _m_toolbar_helper.ICON_MAP[name] ?? name; const buttonText = (0, _inflector.titleize)(name); return { text: localize(buttonText), icon: iconName.toLowerCase(), onClick: this._formatHandlers[name] ?? (0, _m_toolbar_helper.getDefaultClickHandler)(this, name) } } _prepareMenuItems(items) { const resultItems = []; (0, _iterator.each)(items, ((_, item) => { let newItem; if ((0, _type.isObject)(item)) { newItem = this._handleObjectItem(item) } else if ((0, _type.isString)(item)) { newItem = this._prepareMenuItemConfig(item) } if (newItem) { resultItems.push(newItem) } })); return resultItems } _getMenuConfig(items) { const defaultItems = [{ text: localize("insert"), items: ["insertHeaderRow", "insertRowAbove", "insertRowBelow", (0, _extend.extend)(this._prepareMenuItemConfig("insertColumnLeft"), { beginGroup: true }), "insertColumnRight"] }, { text: localize("delete"), items: ["deleteColumn", "deleteRow", "deleteTable"] }, (0, _extend.extend)(this._prepareMenuItemConfig("cellProperties"), { onClick: () => { this.showPropertiesForm("cell") } }), (0, _extend.extend)(this._prepareMenuItemConfig("tableProperties"), { onClick: () => { this.showPropertiesForm("table") } })]; const customItems = this._prepareMenuItems(null !== items && void 0 !== items && items.length ? items : defaultItems); return { target: this._quillContainer, showEvent: null, hideOnParentScroll: false, onInitialized: e => { this._onContextMenuInitialized(e) }, items: customItems } } _prepareContextMenuHandler() { return event => { if (this._isTableTarget(event.target)) { this._targetElement = event.target; this._setContextMenuPosition(event); this._contextMenu.show(); event.preventDefault() } } } _setContextMenuPosition(event) { const startPosition = this._quillContainer.get(0).getBoundingClientRect(); this._contextMenu.option({ position: { my: "left top", at: "left top", collision: "fit fit", offset: { x: event.clientX - startPosition.left, y: event.clientY - startPosition.top } } }) } _isTableTarget(targetElement) { return !!(0, _renderer.default)(targetElement).closest(".dx-htmleditor-content td, .dx-htmleditor-content th").length } clean() { this._detachEvents() } option(option, value) { if ("tableContextMenu" === option) { this.handleOptionChangeValue(value); return } if ("enabled" === option) { this.enabled = value; value ? this._enableContextMenu() : this.clean() } else if ("items" === option) { var _this$_contextMenu2; null === (_this$_contextMenu2 = this._contextMenu) || void 0 === _this$_contextMenu2 || _this$_contextMenu2.dispose(); this._contextMenu = this._createContextMenu(value) } } prepareCleanCallback() { return () => { this.clean() } } } } exports.default = TableContextMenuModule }, 54970: /*!**************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/ui/html_editor/modules/m_tableResizing.js ***! \**************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _translator = __webpack_require__( /*! ../../../../common/core/animation/translator */ 88603); var _events_engine = _interopRequireDefault(__webpack_require__( /*! ../../../../common/core/events/core/events_engine */ 92774)); var _index = __webpack_require__( /*! ../../../../common/core/events/utils/index */ 98834); var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../../../core/renderer */ 64553)); var _extend = __webpack_require__( /*! ../../../../core/utils/extend */ 52576); var _iterator = __webpack_require__( /*! ../../../../core/utils/iterator */ 21274); var _position = __webpack_require__( /*! ../../../../core/utils/position */ 41639); var _resize_callbacks = _interopRequireDefault(__webpack_require__( /*! ../../../../core/utils/resize_callbacks */ 63283)); var _size = __webpack_require__( /*! ../../../../core/utils/size */ 57653); var _type = __webpack_require__( /*! ../../../../core/utils/type */ 11528); var _window = __webpack_require__( /*! ../../../../core/utils/window */ 3104); var _draggable = _interopRequireDefault(__webpack_require__( /*! ../../../../ui/draggable */ 5298)); var _m_table_helper = __webpack_require__( /*! ../utils/m_table_helper */ 53548); var _m_base = _interopRequireDefault(__webpack_require__( /*! ./m_base */ 49864)); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } const DEFAULTS = { minColumnWidth: 40, minRowHeight: 24 }; const POINTERDOWN_EVENT = (0, _index.addNamespace)("dxpointerdown", "dxHtmlTableResizingModule"); const SCROLL_EVENT = (0, _index.addNamespace)("scroll", "dxHtmlTableResizingModule"); class TableResizingModule extends _m_base.default { constructor(quill, options) { super(quill, options); this.enabled = !!options.enabled; this._tableResizeFrames = []; this._minColumnWidth = this._minSizeLimit("minColumnWidth", options.minColumnWidth); this._minRowHeight = this._minSizeLimit("minRowHeight", options.minRowHeight); this._quillContainer = this.editorInstance._getQuillContainer(); this._tableData = []; if (this.enabled) { this._applyResizing() } } _applyResizing(forcedStart) { if (forcedStart) { this._applyResizingImpl() } else { this.editorInstance.addContentInitializedCallback(this._applyResizingImpl.bind(this)) } this.addCleanCallback(this.clean.bind(this)); this._resizeHandlerWithContext = _resize_callbacks.default.add(this._resizeHandler.bind(this)) } _minSizeLimit(propertyName, newValue) { return (0, _type.isDefined)(newValue) ? Math.max(newValue, 0) : DEFAULTS[propertyName] } _applyResizingImpl() { const $tables = this._findTables(); if ($tables.length) { this._fixTablesWidths($tables); this._createResizeFrames($tables); this._updateFramesPositions(); this._updateFramesSeparators() } this._attachEvents() } _attachEvents() { _events_engine.default.on(this.editorInstance._getContent(), SCROLL_EVENT, this._updateFramesPositions.bind(this)); this.quill.on("text-change", this._getQuillTextChangeHandler()) } _detachEvents() { _events_engine.default.off(this.editorInstance._getContent(), "dxHtmlTableResizingModule"); this.quill.off("text-change", this._quillTextChangeHandler) } _getQuillTextChangeHandler(delta, oldContent, source) { return (delta, oldContent, source) => { if (this._isTableChanging()) { const $tables = this._findTables(); this._removeResizeFrames(); if ("api" === source) { this._fixTablesWidths($tables) } this._updateTablesColumnsWidth($tables); this._createResizeFrames($tables); this._updateFramesPositions(); this._updateFramesSeparators() } else { this._updateFramesPositions(); if (!this._isDragging) { this._updateFramesSeparators() } } } } _getFrameForTable($table) { var _this$_framesForTable; return null === (_this$_framesForTable = this._framesForTables) || void 0 === _this$_framesForTable ? void 0 : _this$_framesForTable.get($table.get(0)) } _resizeHandler() { this._windowResizeTimeout = setTimeout((() => { const $tables = this._findTables(); (0, _iterator.each)($tables, ((index, table) => { const $table = (0, _renderer.default)(table); const frame = this._tableResizeFrames[index]; const actualTableWidth = (0, _size.getOuterWidth)($table); const lastTableWidth = this._tableLastWidth(frame); if (Math.abs(actualTableWidth - lastTableWidth) > 1) { this._tableLastWidth(frame, actualTableWidth); this._updateColumnsWidth($table, index) } })); this._updateFramesPositions(); this._updateFramesSeparators() })) } _findTables() { return (0, _renderer.default)(this._quillContainer).find("table") } _getWidthStyleValue($element) { const styleValue = $element[0].style.width; return "" !== styleValue ? parseInt(styleValue) : void 0 } _tableLastWidth(frame, newValue) { if ((0, _type.isDefined)(newValue)) { frame.lastWidth = newValue } else { return null === frame || void 0 === frame ? void 0 : frame.lastWidth } } _fixTablesWidths($tables) { (0, _iterator.each)($tables, ((index, table) => { const $table = (0, _renderer.default)(table); const $columnElements = this._getTableDeterminantElements($table, "horizontal"); if (!this._tableResizeFrames[index]) { this._tableResizeFrames[index] = { lastWidth: void 0 } } const frame = this._getFrameForTable($table); if (!frame) { this._tableResizeFrames.push({ $table: $table }) } if (0 === (0, _m_table_helper.getAutoSizedElements)($table).length) { const { columnsSum: columnsSum } = this._getColumnElementsSum($columnElements); (0, _m_table_helper.unfixTableWidth)($table, { quill: this.quill }); const tableWidth = this._tableLastWidth(frame) ?? (0, _size.getOuterWidth)($table); if (frame) { this._tableLastWidth(frame, Math.max(columnsSum, tableWidth)) } } })) } _createResizeFrames($tables) { this._framesForTables = new Map; $tables.each(((index, table) => { var _this$_tableResizeFra; const $table = (0, _renderer.default)(table); const $lastTable = null === (_this$_tableResizeFra = this._tableResizeFrames[index]) || void 0 === _this$_tableResizeFra ? void 0 : _this$_tableResizeFra.$table; const $tableLastWidth = this._tableResizeFrames[index].lastWidth; this._tableResizeFrames[index] = { $frame: this._createTableResizeFrame(table), $table: $table, index: index, lastWidth: $lastTable && table === $lastTable.get(0) ? $tableLastWidth : void 0, columnsCount: this._getTableDeterminantElements($table, "horizontal").length, rowsCount: this._getTableDeterminantElements($table, "vertical").length }; this._framesForTables.set(table, this._tableResizeFrames[index]) })); this._tableResizeFrames.length = $tables.length } _isTableChanging() { const $tables = this._findTables(); let result = false; if ($tables.length !== this._tableResizeFrames.length) { result = true } else { (0, _iterator.each)($tables, ((index, table) => { const $table = (0, _renderer.default)(table); const frame = this._tableResizeFrames[index]; const isColumnsCountChanged = (null === frame || void 0 === frame ? void 0 : frame.columnsCount) !== this._getTableDeterminantElements($table, "horizontal").length; const isRowCountChanged = (null === frame || void 0 === frame ? void 0 : frame.rowsCount) !== this._getTableDeterminantElements($table, "vertical").length; if (isColumnsCountChanged || isRowCountChanged) { result = true; return false } })) } return result } _removeResizeFrames(clearArray) { var _this$_framesForTable2; (0, _iterator.each)(this._tableResizeFrames, ((index, resizeFrame) => { if (resizeFrame.$frame) { var _resizeFrame$$frame; const resizerElementsSelector = ".dx-htmleditor-column-resizer, .dx-htmleditor-row-resizer"; this._detachSeparatorEvents(null === (_resizeFrame$$frame = resizeFrame.$frame) || void 0 === _resizeFrame$$frame ? void 0 : _resizeFrame$$frame.find(resizerElementsSelector)); resizeFrame.$frame.remove() } })); null === (_this$_framesForTable2 = this._framesForTables) || void 0 === _this$_framesForTable2 || _this$_framesForTable2.clear(); if (clearArray) { this._tableResizeFrames = [] } } _detachSeparatorEvents($lineSeparators) { $lineSeparators.each(((i, $lineSeparator) => { _events_engine.default.off($lineSeparator, POINTERDOWN_EVENT) })) } _createTableResizeFrame(table) { return (0, _renderer.default)("<div>").addClass("dx-table-resize-frame").appendTo(this._quillContainer) } _updateFramesPositions() { (0, _iterator.each)(this._tableResizeFrames, ((index, tableResizeFrame) => { this._updateFramePosition(tableResizeFrame.$table, tableResizeFrame.$frame) })) } _updateFramePosition($table, $frame) { const { height: height, width: width, top: targetTop, left: targetLeft } = (0, _position.getBoundingRect)($table.get(0)); const { top: containerTop, left: containerLeft } = (0, _position.getBoundingRect)(this.quill.root); $frame.css({ height: height, width: width, top: targetTop - containerTop, left: targetLeft - containerLeft }); (0, _translator.move)($frame, { left: 0, top: 0 }) } _updateFramesSeparators(direction) { (0, _iterator.each)(this._tableResizeFrames, ((index, frame) => { if (direction) { this._updateFrameSeparators(frame, direction) } else { this._updateFrameSeparators(frame, "vertical"); this._updateFrameSeparators(frame, "horizontal") } })) } _isDraggable($element) { return $element.hasClass("dx-draggable") && $element.is(":visible") } _removeDraggable($currentLineSeparator, lineResizerClass) { if (this._isDraggable($currentLineSeparator)) { const draggable = (0, _renderer.default)($currentLineSeparator).dxDraggable("instance"); draggable.dispose(); (0, _renderer.default)($currentLineSeparator).addClass(lineResizerClass) } } _getDirectionInfo(direction) { if ("vertical" === direction) { return { lineResizerClass: "dx-htmleditor-row-resizer", sizeFunction: x => (0, _size.getOuterHeight)(x), positionCoordinate: "top", positionStyleProperty: "height", positionCoordinateName: "y" } } return { lineResizerClass: "dx-htmleditor-column-resizer", sizeFunction: x => (0, _size.getOuterWidth)(x), positionCoordinate: this.editorInstance.option("rtlEnabled") ? "right" : "left", positionStyleProperty: "width", positionCoordinateName: "x" } } _getSize($element, directionInfo) { return directionInfo.sizeFunction($element) } _updateFrameSeparators(frame, direction) { const $determinantElements = this._getTableDeterminantElements(frame.$table, direction); const determinantElementsCount = $determinantElements.length; const determinantElementsSeparatorsCount = determinantElementsCount - 1; const directionInfo = this._getDirectionInfo(direction); const lineSeparators = frame.$frame.find(`.${directionInfo.lineResizerClass}`); const styleOptions = { transform: "none" }; let currentPosition = 0; for (let i = 0; i <= determinantElementsSeparatorsCount; i++) { currentPosition += this._getSize($determinantElements.eq(i), directionInfo); if (!(0, _type.isDefined)(lineSeparators[i])) { lineSeparators[i] = (0, _renderer.default)("<div>").addClass(directionInfo.lineResizerClass).appendTo(frame.$frame).get(0) } const $currentLineSeparator = (0, _renderer.default)(lineSeparators[i]); this._removeDraggable($currentLineSeparator, directionInfo.lineResizerClass); styleOptions[directionInfo.positionCoordinate] = currentPosition - 2; (0, _renderer.default)($currentLineSeparator).css(styleOptions); const attachSeparatorData = { lineSeparator: lineSeparators[i], index: i, $determinantElements: $determinantElements, frame: frame, direction: direction }; this._attachColumnSeparatorEvents(attachSeparatorData) } } _getTableDeterminantElements($table, direction) { if ("vertical" === direction) { return $table.find("th:first-child, td:first-child") } return (0, _m_table_helper.getColumnElements)($table) } _attachColumnSeparatorEvents(options) { _events_engine.default.on(options.lineSeparator, POINTERDOWN_EVENT, (() => { this._createDraggableElement(options) })) } _dragStartHandler(_ref) { let { $determinantElements: $determinantElements, index: index, frame: frame, direction: direction, lineSeparator: lineSeparator } = _ref; const directionInfo = this._getDirectionInfo(direction); this._isDragging = true; this._fixColumnsWidth(frame.$table); this._startLineSize = parseInt(this._getSize((0, _renderer.default)($determinantElements[index]), directionInfo)); this._startTableWidth = (0, _size.getOuterWidth)(frame.$table); this._startLineSeparatorPosition = parseInt((0, _renderer.default)(lineSeparator).css(directionInfo.positionCoordinate)); this._nextLineSize = 0; if ($determinantElements[index + 1]) { this._nextLineSize = parseInt(this._getSize((0, _renderer.default)($determinantElements[index + 1]), directionInfo)) } else if ("horizontal" === direction) { (0, _m_table_helper.unfixTableWidth)(frame.$table, { quill: this.quill }) } } _shouldRevertOffset(direction) { return "horizontal" === direction && this.editorInstance.option("rtlEnabled") } _isNextColumnWidthEnough(nextColumnNewSize, $nextColumnElement, eventOffset) { if (!this._nextLineSize) { return true } if (nextColumnNewSize >= this._minColumnWidth) { const isWidthIncreased = this._nextColumnOffsetLimit ? eventOffset < this._nextColumnOffsetLimit : eventOffset < 0; const isWidthLimited = Math.abs(this._getWidthStyleValue($nextColumnElement) - (0, _size.getOuterWidth)($nextColumnElement)) > 3; return isWidthIncreased || !isWidthLimited } return false } _shouldSetNextColumnWidth(nextColumnNewSize) { return this._nextLineSize && nextColumnNewSize > 0 } _horizontalDragHandler(_ref2) { let { currentLineNewSize: currentLineNewSize, directionInfo: directionInfo, eventOffset: eventOffset, $determinantElements: $determinantElements, index: index, frame: frame } = _ref2; let nextColumnNewSize = this._nextLineSize && this._nextLineSize - eventOffset; const isCurrentColumnWidthEnough = currentLineNewSize >= this._minColumnWidth; const $lineElements = (0, _m_table_helper.getLineElements)(frame.$table, index); const $nextLineElements = (0, _m_table_helper.getLineElements)(frame.$table, index + 1); const realWidthDiff = (0, _size.getOuterWidth)($lineElements.eq(0)) - currentLineNewSize; if (isCurrentColumnWidthEnough) { if (this._isNextColumnWidthEnough(nextColumnNewSize, $determinantElements.eq(index + 1), eventOffset)) { (0, _m_table_helper.setLineElementsFormat)(this, { elements: $lineElements, property: directionInfo.positionStyleProperty, value: currentLineNewSize }); if (this._shouldSetNextColumnWidth(nextColumnNewSize)) { (0, _m_table_helper.setLineElementsFormat)(this, { elements: $nextLineElements, property: directionInfo.positionStyleProperty, value: nextColumnNewSize }) } const isTableWidthChanged = Math.abs(this._startTableWidth - (0, _size.getOuterWidth)(frame.$table)) < 3; const shouldRevertNewValue = Math.abs(realWidthDiff) > 3 || !this._nextLineSize && isTableWidthChanged; if (shouldRevertNewValue) { (0, _m_table_helper.setLineElementsFormat)(this, { elements: $lineElements, property: directionInfo.positionStyleProperty, value: (0, _size.getOuterWidth)($lineElements.eq(0)) }); nextColumnNewSize += currentLineNewSize - (0, _size.getOuterWidth)($lineElements.eq(0)); if (this._shouldSetNextColumnWidth(nextColumnNewSize)) { (0, _m_table_helper.setLineElementsFormat)(this, { elements: $nextLineElements, property: directionInfo.positionStyleProperty, value: nextColumnNewSize }) } } } else { this._nextColumnOffsetLimit = this._nextColumnOffsetLimit || eventOffset } } this._$highlightedElement.css(directionInfo.positionCoordinate, `${this._startLineSeparatorPosition+eventOffset+realWidthDiff}px`) } _verticalDragHandler(_ref3) { let { currentLineNewSize: currentLineNewSize, directionInfo: directionInfo, eventOffset: eventOffset, $determinantElements: $determinantElements, index: index, frame: frame } = _ref3; const newHeight = Math.max(currentLineNewSize, this._minRowHeight); const $lineElements = (0, _m_table_helper.getLineElements)(frame.$table, index, "vertical"); (0, _m_table_helper.setLineElementsFormat)(this, { elements: $lineElements, property: directionInfo.positionStyleProperty, value: newHeight }); const rowHeightDiff = (0, _size.getOuterHeight)($determinantElements.eq(index)) - currentLineNewSize; this._$highlightedElement.css(directionInfo.positionCoordinate, `${this._startLineSeparatorPosition+eventOffset+rowHeightDiff}px`) } _dragMoveHandler(event, _ref4) { let { $determinantElements: $determinantElements, index: index, frame: frame, direction: direction } = _ref4; const directionInfo = this._getDirectionInfo(direction); let eventOffset = event.offset[directionInfo.positionCoordinateName]; this.editorInstance._saveValueChangeEvent(event); if (this._shouldRevertOffset(direction)) { eventOffset = -eventOffset } const currentLineNewSize = this._startLineSize + eventOffset; if ("horizontal" === direction) { this._horizontalDragHandler({ currentLineNewSize: currentLineNewSize, directionInfo: directionInfo, eventOffset: eventOffset, $determinantElements: $determinantElements, index: index, frame: frame }) } else { this._verticalDragHandler({ currentLineNewSize: currentLineNewSize, directionInfo: directionInfo, eventOffset: eventOffset, $determinantElements: $determinantElements, index: index, frame: frame }) } this._updateFramePosition(frame.$table, frame.$frame) } _dragEndHandler(options) { var _this$_$highlightedEl; null === (_this$_$highlightedEl = this._$highlightedElement) || void 0 === _this$_$highlightedEl || _this$_$highlightedEl.remove(); this._isDragging = void 0; this._nextColumnOffsetLimit = void 0; this._tableLastWidth(options.frame, (0, _size.getOuterWidth)(options.frame.$table)); this._updateFramesPositions(); this._updateFramesSeparators() } _isLastColumnResizing(_ref5) { let { $determinantElements: $determinantElements, index: index } = _ref5; return !(0, _type.isDefined)($determinantElements[index + 1]) } _getBoundaryConfig(options) { const result = {}; if ("vertical" === options.direction) { result.boundary = options.frame.$table; result.boundOffset = { bottom: (0, _window.hasWindow)() ? -(0, _size.getHeight)((0, _window.getWindow)()) : -(0, _size.getOuterHeight)(this._quillContainer), top: 0, left: 0, right: 0 } } else if (!this._isLastColumnResizing(options)) { result.boundary = options.frame.$table } else { const $content = this.editorInstance._getContent(); result.boundary = $content; result.boundOffset = { bottom: 0, top: 0, left: $content.css("paddingLeft"), right: $content.css("paddingRight") } } return result } _createDraggableElement(options) { var _this$_$highlightedEl2; const boundaryConfig = this._getBoundaryConfig(options); const directionClass = "vertical" === options.direction ? "dx-htmleditor-highlighted-row" : "dx-htmleditor-highlighted-column"; null === (_this$_$highlightedEl2 = this._$highlightedElement) || void 0 === _this$_$highlightedEl2 || _this$_$highlightedEl2.remove(); this._$highlightedElement = (0, _renderer.default)("<div>").addClass(`${directionClass}`).insertAfter((0, _renderer.default)(options.lineSeparator)); const config = { contentTemplate: null, allowMoveByClick: false, dragDirection: options.direction, onDragMove: _ref6 => { let { component: component, event: event } = _ref6; this._dragMoveHandler(event, options) }, onDragStart: () => { this._dragStartHandler(options) }, onDragEnd: () => { this._dragEndHandler(options) } }; (0, _extend.extend)(config, boundaryConfig); this._currentDraggableElement = this.editorInstance._createComponent(options.lineSeparator, _draggable.default, config) } _fixColumnsWidth($table) { const determinantElements = this._getTableDeterminantElements($table); (0, _iterator.each)(determinantElements, ((index, element) => { const columnWidth = (0, _size.getOuterWidth)(element); const $lineElements = (0, _m_table_helper.getLineElements)($table, index); (0, _m_table_helper.setLineElementsFormat)(this, { elements: $lineElements, property: "width", value: Math.max(columnWidth, this._minColumnWidth) }) })) } _getColumnElementsSum(columnElements) { const columnsWidths = []; let columnsSum = 0; (0, _iterator.each)(columnElements, ((index, element) => { const $element = (0, _renderer.default)(element); const columnWidth = this._getWidthStyleValue($element) || (0, _size.getOuterWidth)($element); columnsWidths[index] = Math.max(columnWidth, this._minColumnWidth); columnsSum += columnsWidths[index] })); return { columnsWidths: columnsWidths, columnsSum: columnsSum } } _setColumnsRatioWidth(columnElements, ratio, columnsWidths, $table) { (0, _iterator.each)(columnElements, (index => { const $lineElements = (0, _m_table_helper.getLineElements)($table, index); let resultWidth; if (ratio > 0) { resultWidth = this._minColumnWidth + Math.round((columnsWidths[index] - this._minColumnWidth) * ratio) } else { resultWidth = this._minColumnWidth }(0, _m_table_helper.setLineElementsFormat)(this, { elements: $lineElements, property: "width", value: resultWidth }) })) } _updateColumnsWidth($table, frameIndex) { const determinantElements = this._getTableDeterminantElements($table); let frame = this._tableResizeFrames[frameIndex]; if (!frame) { this._tableResizeFrames[frameIndex] = {} } frame = this._tableResizeFrames[frameIndex]; const tableWidth = this._tableLastWidth(frame) || (0, _size.getOuterWidth)($table); let ratio; const { columnsWidths: columnsWidths, columnsSum: columnsSum } = this._getColumnElementsSum(determinantElements); const minWidthForColumns = determinantElements.length * this._minColumnWidth; if (columnsSum > minWidthForColumns) { ratio = (tableWidth - minWidthForColumns) / (columnsSum - minWidthForColumns) } else { ratio = -1 } this._tableLastWidth(frame, ratio > 0 ? tableWidth : minWidthForColumns); this._setColumnsRatioWidth(determinantElements, ratio, columnsWidths, $table) } _updateTablesColumnsWidth($tables) { (0, _iterator.each)($tables, ((index, table) => { this._updateColumnsWidth((0, _renderer.default)(table), index) })) } option(option, value) { if ("tableResizing" === option) { this.handleOptionChangeValue(value); return } if ("enabled" === option) { this.enabled = value; value ? this._applyResizing(true) : this.clean() } else if (["minColumnWidth", "minRowHeight"].includes(option)) { this[`_${option}`] = this._minSizeLimit(option, value) } } clean() { this._removeResizeFrames(true); this._detachEvents(); _resize_callbacks.default.remove(this._resizeHandlerWithContext); clearTimeout(this._windowResizeTimeout); this._resizeHandlerWithContext = void 0; this._isDragging = void 0; this._startTableWidth = void 0; clearTimeout(this._attachResizerTimeout) } } exports.default = TableResizingModule }, 8478: /*!********************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/ui/html_editor/modules/m_toolbar.js ***! \********************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; __webpack_require__( /*! ../../../../ui/select_box */ 60695); __webpack_require__( /*! ../../../ui/color_box/m_color_view */ 98264); __webpack_require__( /*! ../../../../ui/number_box */ 48042); __webpack_require__( /*! ../../../../ui/menu */ 1614); var _events_engine = _interopRequireDefault(__webpack_require__( /*! ../../../../common/core/events/core/events_engine */ 92774)); var _index = __webpack_require__( /*! ../../../../common/core/events/utils/index */ 98834); var _message = _interopRequireDefault(__webpack_require__( /*! ../../../../common/core/localization/message */ 4671)); var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../../../core/renderer */ 64553)); var _extend = __webpack_require__( /*! ../../../../core/utils/extend */ 52576); var _inflector = __webpack_require__( /*! ../../../../core/utils/inflector */ 53124); var _iterator = __webpack_require__( /*! ../../../../core/utils/iterator */ 21274); var _type = __webpack_require__( /*! ../../../../core/utils/type */ 11528); var _toolbar = _interopRequireDefault(__webpack_require__( /*! ../../../../ui/toolbar */ 2850)); var _ui = _interopRequireDefault(__webpack_require__( /*! ../../../../ui/widget/ui.errors */ 35185)); var _capitalize = __webpack_require__( /*! ../../../core/utils/capitalize */ 72928); var _m_menu = __webpack_require__( /*! ../../../ui/menu/m_menu */ 54572); var _devextremeQuill = _interopRequireDefault(__webpack_require__( /*! devextreme-quill */ 40765)); var _ai = __webpack_require__( /*! ../utils/ai */ 39195); var _m_table_helper = __webpack_require__( /*! ../utils/m_table_helper */ 53548); var _m_toolbar_helper = __webpack_require__( /*! ../utils/m_toolbar_helper */ 12873); var _m_base = _interopRequireDefault(__webpack_require__( /*! ./m_base */ 49864)); var _m_widget_collector = _interopRequireDefault(__webpack_require__( /*! ./m_widget_collector */ 78397)); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } let ToolbarModule = _m_base.default; if (_devextremeQuill.default) { const TOOLBAR_WRAPPER_CLASS = "dx-htmleditor-toolbar-wrapper"; const TOOLBAR_CLASS = "dx-htmleditor-toolbar"; const TOOLBAR_FORMAT_WIDGET_CLASS = "dx-htmleditor-toolbar-format"; const TOOLBAR_SEPARATOR_CLASS = "dx-htmleditor-toolbar-separator"; const TOOLBAR_MENU_SEPARATOR_CLASS = "dx-htmleditor-toolbar-menu-separator"; const ACTIVE_FORMAT_CLASS = "dx-format-active"; const SELECTED_STATE_CLASS = "dx-state-selected"; const ICON_CLASS = "dx-icon"; const SELECTION_CHANGE_EVENT = "selection-change"; const USER_ACTION = "user"; const SILENT_ACTION = "silent"; const FORMAT_HOTKEYS = { 66: "bold", 73: "italic", 85: "underline" }; const KEY_CODES = { b: 66, i: 73, u: 85 }; const TOOLBAR_AI_ITEM_NAME = "ai"; const localize = name => _message.default.format(`dxHtmlEditor-${(0,_inflector.camelize)(name)}`); const localizeValue = (value, name) => { if ("header" === name) { const isHeaderValue = (0, _type.isDefined)(value) && false !== value; return isHeaderValue ? `${localize("heading")} ${value}` : localize("normalText") } return localize(value) || value }; ToolbarModule = class extends _m_base.default { constructor(quill, options) { var _this; super(quill, options); _this = this; this._toolbarWidgets = new _m_widget_collector.default; this._formatHandlers = (0, _m_toolbar_helper.getFormatHandlers)(this); this._tableFormats = (0, _m_table_helper.getTableFormats)(quill); if ((0, _type.isDefined)(options.items)) { this._addCallbacks(); this._renderToolbar(); const toolbarMenu = this.toolbarInstance._layoutStrategy._menu; if (toolbarMenu) { const { _renderPopup: _renderPopup } = toolbarMenu; toolbarMenu._renderPopup = function() { for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { args[_key] = arguments[_key] } _renderPopup.apply(toolbarMenu, ...args); toolbarMenu._popup.on("showing", (() => { _this._updateToolbar(true) })) } } this.quill.on("editor-change", ((eventName, newValue, oldValue, eventSource) => { const isSilentMode = eventSource === SILENT_ACTION && (0, _type.isEmptyObject)(this.quill.getFormat()); if (!isSilentMode) { const isSelectionChanged = eventName === SELECTION_CHANGE_EVENT; this._updateToolbar(isSelectionChanged) } })) } } _addCallbacks() { this.addCleanCallback(this.clean.bind(this)); this.editorInstance.addContentInitializedCallback(this.updateHistoryWidgets.bind(this)) } _updateToolbar(isSelectionChanged) { this.updateFormatWidgets(isSelectionChanged); this.updateHistoryWidgets(); this.updateTableWidgets() } _updateFormatWidget(name, isApplied, formats) { const widget = this._toolbarWidgets.getByName(name); if (!widget) { return } if (isApplied) { this._markActiveFormatWidget(name, widget, formats) } else { this._resetFormatWidget(name, widget); if (Object.prototype.hasOwnProperty.call(name)) { delete formats[name] } } this._toggleClearFormatting(isApplied || !(0, _type.isEmptyObject)(formats)) } _renderToolbar() { const container = this.options.container || this._getContainer(); this._$toolbar = (0, _renderer.default)("<div>").addClass(TOOLBAR_CLASS).appendTo(container); this._$toolbarContainer = (0, _renderer.default)(container).addClass(TOOLBAR_WRAPPER_CLASS); _events_engine.default.on(this._$toolbarContainer, (0, _index.addNamespace)("mousedown", this.editorInstance.NAME), (e => { e.target.focus(); e.preventDefault() })); this._subscribeFormatHotKeys(); this.toolbarInstance = this.editorInstance._createComponent(this._$toolbar, _toolbar.default, this.toolbarConfig); this.editorInstance.on("optionChanged", (_ref => { let { name: name } = _ref; if ("readOnly" === name || "disabled" === name) { this.toolbarInstance.option("disabled", this.isInteractionDisabled) } })) } get toolbarConfig() { return { dataSource: this._prepareToolbarItems(), disabled: this.isInteractionDisabled, menuContainer: this._$toolbarContainer, multiline: this.isMultilineMode() } } get isInteractionDisabled() { return this.editorInstance.option("readOnly") || this.editorInstance.option("disabled") } isMultilineMode() { return this.options.multiline ?? true } clean() { this._toolbarWidgets.clear(); if (this._$toolbarContainer) { this._$toolbarContainer.empty().removeClass(TOOLBAR_WRAPPER_CLASS) } } repaint() { this.toolbarInstance && this.toolbarInstance.repaint() } _getContainer() { const $container = (0, _renderer.default)("<div>"); this.editorInstance.$element().prepend($container); return $container } _subscribeFormatHotKeys() { this.quill.keyboard.addBinding({ which: KEY_CODES.b, shortKey: true }, this._handleFormatHotKey.bind(this)); this.quill.keyboard.addBinding({ which: KEY_CODES.i, shortKey: true }, this._handleFormatHotKey.bind(this)); this.quill.keyboard.addBinding({ which: KEY_CODES.u, shortKey: true }, this._handleFormatHotKey.bind(this)) } _handleFormatHotKey(range, context, _ref2) { let { which: which } = _ref2; const formatName = FORMAT_HOTKEYS[which]; this._updateButtonState(formatName) } _updateButtonState(formatName) { const formatWidget = this._toolbarWidgets.getByName(formatName); const currentFormat = this.quill.getFormat(); const formatValue = currentFormat[formatName]; if (formatValue) { this._markActiveFormatWidget(formatName, formatWidget, currentFormat) } else { this._resetFormatWidget(formatName, formatWidget) } } _prepareToolbarItems() { const resultItems = []; (0, _iterator.each)(this.options.items, ((index, item) => { let newItem; if ((0, _type.isObject)(item)) { newItem = this._handleObjectItem(item) } else if (item === TOOLBAR_AI_ITEM_NAME) { resultItems.push(this._getToolbarItem(this._prepareAIMenuItemConfig(item))) } else if ((0, _type.isString)(item)) { const buttonItemConfig = this._prepareButtonItemConfig(item); newItem = this._getToolbarItem(buttonItemConfig) } if (newItem) { resultItems.push(newItem) } })); return resultItems } _handleObjectItem(item) { if (item.name === TOOLBAR_AI_ITEM_NAME) { return this._getToolbarItem(this._prepareAIMenuItemConfig(item)) } if (item.name && item.acceptedValues && this._isAcceptableItem(item.widget, "dxSelectBox")) { const selectItemConfig = this._prepareSelectItemConfig(item); return this._getToolbarItem(selectItemConfig) } if (item.name && this._isAcceptableItem(item.widget, "dxButton")) { const defaultButtonItemConfig = this._prepareButtonItemConfig(item.name); const buttonItemConfig = (0, _extend.extend)(true, defaultButtonItemConfig, item); return this._getToolbarItem(buttonItemConfig) } return this._getToolbarItem(item) } _isAcceptableItem(widget, acceptableWidgetName) { return !widget || widget === acceptableWidgetName } _prepareButtonItemConfig(name) { const iconName = _m_toolbar_helper.ICON_MAP[name] ?? name; const buttonText = (0, _inflector.titleize)(name); return { widget: "dxButton", name: name, options: { hint: localize(buttonText), text: localize(buttonText), icon: iconName.toLowerCase(), onClick: this._formatHandlers[name] || (0, _m_toolbar_helper.getDefaultClickHandler)(this, name), stylingMode: "text" }, showText: "inMenu" } } _prepareSelectItemConfig(item) { const { name: name, acceptedValues: acceptedValues } = item; return (0, _extend.extend)(true, { widget: "dxSelectBox", name: name, options: { stylingMode: "filled", dataSource: acceptedValues, displayExpr: value => localizeValue(value, name), placeholder: localize(name), onValueChanged: e => { if (!this._isReset) { this._hideAdaptiveMenu(); (0, _m_toolbar_helper.applyFormat)(this, [name, e.value, USER_ACTION], e.event); this._setValueSilent(e.component, e.value) } } } }, item) } _createCommandMenuItem(command, text, commandOptions) { var _getDefaultOptionsByC; const options = (null === commandOptions || void 0 === commandOptions ? void 0 : commandOptions.map(_capitalize.capitalize)) ?? (null === (_getDefaultOptionsByC = (0, _ai.getDefaultOptionsByCommand)(command)) || void 0 === _getDefaultOptionsByC ? void 0 : _getDefaultOptionsByC.map(_capitalize.capitalize)); const item = { id: command, name: command, text: text ?? _ai.defaultCommandNames[command], items: null === options || void 0 === options ? void 0 : options.map((option => ({ id: option, text: option, parentCommand: command, options: null === options || void 0 === options ? void 0 : options.map(_capitalize.capitalize) }))) }; return item } _buildMenuItems(commands) { let customCommandIndex = 0; const items = null === commands || void 0 === commands ? void 0 : commands.map((command => { if ("object" === typeof command) { if ("custom" === command.name) { var _command$options; const id = `custom${customCommandIndex}`; const { prompt: prompt, options: options } = command; const capitalized = null === options || void 0 === options ? void 0 : options.map(_capitalize.capitalize); const item = { id: id, name: "custom", text: command.text, items: null === (_command$options = command.options) || void 0 === _command$options ? void 0 : _command$options.map((rawOptionName => { const option = (0, _capitalize.capitalize)(rawOptionName); const result = { parentCommand: id, id: option, text: option, options: capitalized, prompt: prompt }; return result })), disabled: !prompt, prompt: prompt }; customCommandIndex += 1; return item } return this._createCommandMenuItem(command.name, command.text, command.options) } return this._createCommandMenuItem(command) })); return items } _validateAIToolbarItemConfig(commandsMap) { const { aiIntegration: aiIntegration } = this.editorInstance.option(); if (!aiIntegration) { _ui.default.log("W1026") } if ((0, _ai.hasInvalidCustomCommand)(commandsMap)) { _ui.default.log("W1027") } } _prepareAIMenuItemConfig(item) { var _dataSource$0$items; const { name: name = TOOLBAR_AI_ITEM_NAME, commands: commands = Object.keys(_ai.defaultCommandNames) } = item; const commandsMap = (0, _ai.buildCommandsMap)(commands); const menuItems = this._buildMenuItems(commands); this._validateAIToolbarItemConfig(commandsMap); const dataSource = [{ id: "root", icon: "sparkle", items: menuItems }]; const { aiIntegration: aiIntegration } = this.editorInstance.option(); const isMenuDisabled = !(null !== (_dataSource$0$items = dataSource[0].items) && void 0 !== _dataSource$0$items && _dataSource$0$items.length) || !aiIntegration; const options = { dataSource: dataSource, disabled: isMenuDisabled, onContentReady: e => { const $item = (0, _renderer.default)(e.element).find(`.${_m_menu.DX_MENU_ITEM_CLASS}`).first(); $item.attr("aria-label", _message.default.format("dxHtmlEditor-aiToolbarItemAriaLabel")) }, onItemClick: e => { var _itemData$items; const { itemData: itemData } = e; if (!itemData || null !== (_itemData$items = itemData.items) && void 0 !== _itemData$items && _itemData$items.length) { return } const aiDialogOptions = { command: itemData.id, parentCommand: itemData.parentCommand, commandsMap: commandsMap, prompt: itemData.prompt }; this._formatHandlers[name](aiDialogOptions) } }; return (0, _extend.extend)(true, { widget: "dxMenu", name: name, options: options }, "string" === typeof item ? {} : item) } _hideAdaptiveMenu() { if (this.toolbarInstance.option("overflowMenuVisible")) { this.toolbarInstance.option("overflowMenuVisible", false) } } _getToolbarItem(item) { const baseItem = { options: { onInitialized: e => { if (item.name) { e.component.$element().addClass(TOOLBAR_FORMAT_WIDGET_CLASS); e.component.$element().toggleClass(`dx-${item.name.toLowerCase()}-format`, !!item.name); this._toolbarWidgets.add(item.name, e.component) } }, onDisposing: () => { this._toolbarWidgets.remove(item.name) } } }; return (0, _extend.extend)(true, { location: "before", locateInMenu: "auto" }, this._getDefaultConfig(item.name), item, baseItem) } _getDefaultItemsConfig() { return { clear: { options: { disabled: true } }, undo: { options: { disabled: true } }, redo: { options: { disabled: true } }, insertRowAbove: { options: { disabled: true } }, insertRowBelow: { options: { disabled: true } }, insertHeaderRow: { options: { disabled: true } }, insertColumnLeft: { options: { disabled: true } }, insertColumnRight: { options: { disabled: true } }, deleteRow: { options: { disabled: true } }, deleteColumn: { options: { disabled: true } }, deleteTable: { options: { disabled: true } }, cellProperties: { options: { disabled: true } }, tableProperties: { options: { disabled: true } }, separator: { template: (data, index, element) => { (0, _renderer.default)(element).addClass(TOOLBAR_SEPARATOR_CLASS) }, menuItemTemplate: (data, index, element) => { (0, _renderer.default)(element).addClass(TOOLBAR_MENU_SEPARATOR_CLASS) } } } } _getDefaultConfig(name) { return this._getDefaultItemsConfig()[name] } updateHistoryWidgets() { const historyModule = this.quill.history; if (!historyModule) { return } const { undo: undoOps, redo: redoOps } = historyModule.stack; this._updateManipulationWidget(this._toolbarWidgets.getByName("undo"), Boolean(undoOps.length)); this._updateManipulationWidget(this._toolbarWidgets.getByName("redo"), Boolean(redoOps.length)) } updateTableWidgets() { const table = this.quill.getModule("table"); if (!table) { return } const selection = this.quill.getSelection(); const formats = selection && this.quill.getFormat(selection) || {}; const isTableOperationsEnabled = this._tableFormats.some((format => Boolean(formats[format]))); _m_table_helper.TABLE_OPERATIONS.forEach((operationName => { const isInsertTable = "insertTable" === operationName; const widget = this._toolbarWidgets.getByName(operationName); this._updateManipulationWidget(widget, isInsertTable ? !isTableOperationsEnabled : isTableOperationsEnabled) })) } _updateManipulationWidget(widget, isOperationEnabled) { if (!widget) { return } widget.option("disabled", !isOperationEnabled) } updateFormatWidgets(isResetRequired) { const selection = this.quill.getSelection(); if (!selection) { return } const formats = this.quill.getFormat(selection); const hasFormats = !(0, _type.isEmptyObject)(formats); if (!hasFormats || isResetRequired) { this._resetFormatWidgets() } for (const formatName in formats) { const widgetName = this._getFormatWidgetName(formatName, formats); const formatWidget = this._toolbarWidgets.getByName(widgetName) ?? this._toolbarWidgets.getByName(formatName); if (!formatWidget) { continue } this._markActiveFormatWidget(formatName, formatWidget, formats) } this._toggleClearFormatting(hasFormats || selection.length > 1) } _markActiveFormatWidget(name, widget, formats) { if (this._isColorFormat(name)) { this._updateColorWidget(name, formats[name]) } if ("value" in widget.option()) { this._setValueSilent(widget, formats[name]) } else { widget.$element().addClass(ACTIVE_FORMAT_CLASS); widget.$element().addClass(SELECTED_STATE_CLASS); widget.$element().attr("aria-pressed", true) } } _toggleClearFormatting(hasFormats) { const clearWidget = this._toolbarWidgets.getByName("clear"); if (clearWidget) { clearWidget.option("disabled", !hasFormats) } } _isColorFormat(name) { return "color" === name || "background" === name } _updateColorWidget(name, color) { const formatWidget = this._toolbarWidgets.getByName(name); if (!formatWidget) { return } formatWidget.$element().find(`.${ICON_CLASS}`).css("borderBottomColor", color || "transparent") } _getFormatWidgetName(name, formats) { let widgetName; switch (name) { case "align": widgetName = name + (0, _inflector.titleize)(formats[name]); break; case "list": widgetName = formats[name] + (0, _inflector.titleize)(name); break; case "code-block": widgetName = "codeBlock"; break; case "script": widgetName = formats[name] + name; break; case "imageSrc": widgetName = "image"; break; default: widgetName = name } return widgetName } _setValueSilent(widget, value) { this._isReset = true; widget.option("value", value); this._isReset = false } _resetFormatWidgets() { this._toolbarWidgets.each(((name, widget) => { this._resetFormatWidget(name, widget) })) } _resetFormatWidget(name, widget) { widget.$element().removeClass(ACTIVE_FORMAT_CLASS); widget.$element().removeClass(SELECTED_STATE_CLASS); widget.$element().removeAttr("aria-pressed"); if (this._isColorFormat(name)) { this._updateColorWidget(name) } if ("clear" === name) { widget.option("disabled", true) } if ("dxSelectBox" === widget.NAME) { this._setValueSilent(widget, null) } } addClickHandler(name, handler) { this._formatHandlers[name] = handler; const formatWidget = this._toolbarWidgets.getByName(name); if (formatWidget && "dxButton" === formatWidget.NAME) { formatWidget.option("onClick", handler) } } } } exports.default = ToolbarModule }, 8344: /*!**********************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/ui/html_editor/modules/m_variables.js ***! \**********************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../../../core/renderer */ 64553)); var _extend = __webpack_require__( /*! ../../../../core/utils/extend */ 52576); var _position = __webpack_require__( /*! ../../../../core/utils/position */ 41639); var _devextremeQuill = _interopRequireDefault(__webpack_require__( /*! devextreme-quill */ 40765)); var _m_variable = _interopRequireDefault(__webpack_require__( /*! ../formats/m_variable */ 90894)); var _m_base = _interopRequireDefault(__webpack_require__( /*! ./m_base */ 49864)); var _m_popup = _interopRequireDefault(__webpack_require__( /*! ./m_popup */ 55911)); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } let VariableModule = _m_base.default; if (_devextremeQuill.default) { const VARIABLE_FORMAT_CLASS = "dx-variable-format"; const ACTIVE_FORMAT_CLASS = "dx-format-active"; const SELECTED_STATE_CLASS = "dx-state-selected"; _devextremeQuill.default.register({ "formats/variable": _m_variable.default }, true); VariableModule = class extends _m_popup.default { constructor(quill, options) { super(quill, options); const toolbar = quill.getModule("toolbar"); if (toolbar) { toolbar.addClickHandler("variable", this.showPopup.bind(this)) } quill.keyboard.addBinding({ key: "P", altKey: true }, this.showPopup.bind(this)); this._popup.on("shown", (e => { const $ofElement = (0, _renderer.default)(e.component.option("position").of); if ($ofElement.hasClass(VARIABLE_FORMAT_CLASS)) { $ofElement.addClass(ACTIVE_FORMAT_CLASS); $ofElement.addClass(SELECTED_STATE_CLASS) } })) } _getDefaultOptions() { const baseConfig = super._getDefaultOptions(); return (0, _extend.extend)(baseConfig, { escapeChar: "" }) } showPopup(event) { const selection = this.quill.getSelection(true); const position = selection ? selection.index : this.quill.getLength(); this.savePosition(position); this._resetPopupPosition(event, position); super.showPopup() } _resetPopupPosition(event, position) { if (event && event.element) { this._popup.option("position", { of: event.element, offset: { h: 0, v: 0 }, my: "top center", at: "bottom center", collision: "fit" }) } else { const mentionBounds = this.quill.getBounds(position); const rootRect = (0, _position.getBoundingRect)(this.quill.root); this._popup.option("position", { of: this.quill.root, offset: { h: mentionBounds.left, v: mentionBounds.bottom - rootRect.height }, my: "top center", at: "bottom left", collision: "fit flip" }) } } insertEmbedContent(selectionChangedEvent) { const caretPosition = this.getPosition(); const selectedItem = selectionChangedEvent.component.option("selectedItem"); const variableData = (0, _extend.extend)({}, { value: selectedItem, escapeChar: this.options.escapeChar }); setTimeout((() => { this.quill.insertEmbed(caretPosition, "variable", variableData); this.quill.setSelection(caretPosition + 1) })) } } } exports.default = VariableModule }, 78397: /*!*****************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/ui/html_editor/modules/m_widget_collector.js ***! \*****************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _iterator = __webpack_require__( /*! ../../../../core/utils/iterator */ 21274); exports.default = class { constructor() { this._collection = [] } clear() { this._collection = [] } add(name, instance) { this._collection.push({ name: name, instance: instance }) } remove(name) { this._collection = this._collection.filter((item => item.name !== name)) } getByName(widgetName) { let widget = null; (0, _iterator.each)(this._collection, ((index, _ref) => { let { name: name, instance: instance } = _ref; if (name === widgetName) { widget = instance; return false } })); return widget } each(handler) { this._collection.forEach((_ref2 => { let { name: name, instance: instance } = _ref2; return instance && handler(name, instance) })) } } }, 80865: /*!****************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/ui/html_editor/themes/m_base.js ***! \****************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _devextremeQuill = (e = __webpack_require__( /*! devextreme-quill */ 40765), e && e.__esModule ? e : { default: e }); var e; let BaseTheme; if (_devextremeQuill.default) { const Theme = _devextremeQuill.default.import("core/theme"); BaseTheme = class extends Theme { constructor(quill, options) { super(quill, options); this.quill.root.classList.add("dx-htmleditor-content"); this.quill.root.setAttribute("role", "textbox"); this.quill.root.setAttribute("aria-label", "Editor content") } } } else { BaseTheme = {} } exports.default = BaseTheme }, 87534: /*!**************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/ui/html_editor/ui/aiDialog.js ***! \**************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = exports.TEXT_AREA_MIN_HEIGHT = exports.TEXT_AREA_MAX_HEIGHT = exports.REPLACE_DROPDOWN_WIDTH = exports.COMPACT_ACTION_BUTTON_WIDTH = exports.AI_DIALOG_TITLE_CLASS = exports.AI_DIALOG_CONTROLS_CLASS = exports.AI_DIALOG_CONTENT_CLASS = exports.AI_DIALOG_CLASS = exports.ACTION_BUTTON_WIDTH = void 0; __webpack_require__( /*! ../../../../ui/drop_down_button */ 56582); var _message = _interopRequireDefault(__webpack_require__( /*! ../../../../common/core/localization/message */ 4671)); var _guid = _interopRequireDefault(__webpack_require__( /*! ../../../../core/guid */ 19427)); var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../../../core/renderer */ 64553)); var _extend = __webpack_require__( /*! ../../../../core/utils/extend */ 52576); var _informer = _interopRequireDefault(__webpack_require__( /*! ../../../../ui/informer */ 22363)); var _load_indicator = _interopRequireDefault(__webpack_require__( /*! ../../../../ui/load_indicator */ 11979)); var _select_box = _interopRequireDefault(__webpack_require__( /*! ../../../../ui/select_box */ 60695)); var _text_area = _interopRequireDefault(__webpack_require__( /*! ../../../../ui/text_area */ 23116)); var _themes = __webpack_require__( /*! ../../../../ui/themes */ 52071); var _m_baseDialog = _interopRequireDefault(__webpack_require__( /*! ../../../ui/html_editor/ui/m_baseDialog */ 98809)); var _ai = __webpack_require__( /*! ../../../ui/html_editor/utils/ai */ 39195); var _small_screen = __webpack_require__( /*! ../../../ui/html_editor/utils/small_screen */ 59133); var _m_load_indicator = __webpack_require__( /*! ../../../ui/m_load_indicator */ 52621); var _m_text_editor = __webpack_require__( /*! ../../../ui/text_box/m_text_editor.base */ 34705); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } function _extends() { return _extends = Object.assign ? Object.assign.bind() : function(n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) { ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]) } } return n }, _extends.apply(null, arguments) } const AI_DIALOG_CLASS = exports.AI_DIALOG_CLASS = "dx-aidialog"; const AI_DIALOG_CONTROLS_CLASS = exports.AI_DIALOG_CONTROLS_CLASS = "dx-aidialog-controls"; const AI_DIALOG_CONTENT_CLASS = exports.AI_DIALOG_CONTENT_CLASS = "dx-aidialog-content"; const AI_DIALOG_TITLE_CLASS = exports.AI_DIALOG_TITLE_CLASS = "dx-aidialog-title"; const AI_DIALOG_COMMANDS_WITH_OPTIONS = ["translate", "changeStyle", "changeTone"]; const POPUP_MAX_WIDTH = (0, _themes.isMaterial)((0, _themes.current)()) ? 494 : 460; const TEXT_AREA_MIN_HEIGHT = exports.TEXT_AREA_MIN_HEIGHT = 64; const TEXT_AREA_MAX_HEIGHT = exports.TEXT_AREA_MAX_HEIGHT = 128; const REPLACE_DROPDOWN_WIDTH = exports.REPLACE_DROPDOWN_WIDTH = 150; const ACTION_BUTTON_WIDTH = exports.ACTION_BUTTON_WIDTH = 110; const COMPACT_ACTION_BUTTON_WIDTH = exports.COMPACT_ACTION_BUTTON_WIDTH = 100; function getActionButtonWidth() { return (0, _themes.isCompact)((0, _themes.current)()) ? COMPACT_ACTION_BUTTON_WIDTH : ACTION_BUTTON_WIDTH } var DialogState; ! function(DialogState) { DialogState.Initial = "initial"; DialogState.Asking = "asking"; DialogState.Generating = "generating"; DialogState.ResultReady = "resultReady"; DialogState.Error = "error"; DialogState.InitialCanceled = "initialCanceled"; DialogState.AskingCanceled = "askingCanceled" }(DialogState || (DialogState = {})); var ReplaceButtonActions; ! function(ReplaceButtonActions) { ReplaceButtonActions.Replace = "replace"; ReplaceButtonActions.InsertAbove = "insertAbove"; ReplaceButtonActions.InsertBelow = "insertBelow" }(ReplaceButtonActions || (ReplaceButtonActions = {})); class AIDialog extends _m_baseDialog.default { constructor($container, aiIntegration, popupConfig) { super($container, popupConfig); this._askAIPrompt = ""; this._commandChangeSuppressed = false; this._commandOptionSuppressed = false; this._commandsMap = {}; this._dialogState = DialogState.Initial; this._isAICommandExecuting = false; this._isAskAICommandSelected = false; this._selectedText = ""; this._aiIntegration = aiIntegration } _getPopupConfig() { const baseConfig = super._getPopupConfig(); return (0, _extend.extend)(true, {}, baseConfig, _extends({ minWidth: 288, maxWidth: POPUP_MAX_WIDTH, height: "auto", shading: true, shadingColor: "transparent", dragEnabled: true, dragAndResizeArea: this._$container, toolbarItems: this._getToolbarItems(), hideOnOutsideClick: true, focusStateEnabled: true, showCloseButton: true, position: { my: "center", at: "center", of: this._$container }, onHiding: () => { this._processCommandCompletion() } }, this._popupConfig)) } _renderCommandSelectBox($container) { const $commandSelectBox = (0, _renderer.default)("<div>").appendTo($container); this._commandSelectBox = new _select_box.default($commandSelectBox.get(0), { value: this._currentCommand, displayExpr: "text", valueExpr: "name", stylingMode: "outlined", onInitialized: this._addEscapeHandler.bind(this), onValueChanged: e => { var _this$_commandsMap$e$, _this$_commandOptions, _this$_commandsMap$e$2; if (this._commandChangeSuppressed) { return } this._currentCommand = e.value; this._commandOptionsList = (null === (_this$_commandsMap$e$ = this._commandsMap[e.value]) || void 0 === _this$_commandsMap$e$ ? void 0 : _this$_commandsMap$e$.options) ?? []; this._currentOption = null === (_this$_commandOptions = this._commandOptionsList) || void 0 === _this$_commandOptions ? void 0 : _this$_commandOptions[0]; this._isAskAICommandSelected = e.value === _ai.AI_DIALOG_ASKAI_COMMAND_NAME; this._askAIPrompt = ""; this._getCustomCommandPrompt = null === (_this$_commandsMap$e$2 = this._commandsMap[e.value]) || void 0 === _this$_commandsMap$e$2 ? void 0 : _this$_commandsMap$e$2.prompt; this._setDialogState(this._getInitialDialogState()); const shouldExecuteAICommand = !this._isAskAICommandSelected && this._isOpen(); if (shouldExecuteAICommand) { this._executeAICommand() } } }) } _renderOptionSelectBox($container) { var _this$_commandOptions2; const $optionSelectBox = (0, _renderer.default)("<div>").appendTo($container); this._optionSelectBox = new _select_box.default($optionSelectBox.get(0), { items: this._commandOptionsList, value: this._currentOption ?? (null === (_this$_commandOptions2 = this._commandOptionsList) || void 0 === _this$_commandOptions2 ? void 0 : _this$_commandOptions2[0]), visible: this._isCommandWithOptionsSelected(), stylingMode: "outlined", onInitialized: this._addEscapeHandler.bind(this), onValueChanged: _ref => { let { value: value } = _ref; if (this._commandOptionSuppressed) { return } this._currentOption = value; if (this._isOpen() && value) { this._executeAICommand() } } }) } _renderPromptTextArea($container) { const $textArea = (0, _renderer.default)("<div>").appendTo($container); const options = { value: this._askAIPrompt, minHeight: TEXT_AREA_MIN_HEIGHT, maxHeight: TEXT_AREA_MAX_HEIGHT, autoResizeEnabled: true, width: "100%", placeholder: _message.default.format("dxHtmlEditor-aiAskPlaceholder"), _shouldAttachKeyboardEvents: true, stylingMode: "outlined", onInitialized: this._addEscapeHandler.bind(this), valueChangeEvent: "input", onValueChanged: e => { this._askAIPrompt = e.value; if (this._isAskAICommandSelected) { const shouldRefreshToolbarItems = !e.value || !e.previousValue; if (shouldRefreshToolbarItems) { this._refreshToolbarItems() } } } }; this._promptTextArea = new _text_area.default($textArea.get(0), options) } _renderResultTextArea($container) { const $textArea = (0, _renderer.default)("<div>").appendTo($container); const screenSpecificOptions = (0, _small_screen.isSmallScreen)() ? { maxHeight: "100%", height: "100%", autoResizeEnabled: false } : { maxHeight: TEXT_AREA_MAX_HEIGHT, autoResizeEnabled: true }; const options = _extends({ inputAttr: { "aria-label": _message.default.format("dxHtmlEditor-aiResultTextAreaAriaLabel") }, minHeight: TEXT_AREA_MIN_HEIGHT, width: "100%", readOnly: true, _shouldAttachKeyboardEvents: true, stylingMode: "outlined", onInitialized: this._addEscapeHandler.bind(this) }, screenSpecificOptions); this._resultTextArea = new _text_area.default($textArea.get(0), options) } _renderContent($contentElem) { $contentElem.addClass(AI_DIALOG_CONTENT_CLASS); const $controls = (0, _renderer.default)("<div>").addClass(AI_DIALOG_CONTROLS_CLASS).appendTo($contentElem); this._renderCommandSelectBox($controls); this._renderOptionSelectBox($controls); this._renderPromptTextArea($contentElem); this._renderResultTextArea($contentElem); this._renderInformer($contentElem) } _renderLoadIndicator() { if (this._loadIndicator) { return } const $inputContainer = this._resultTextArea.$element().find(`.${_m_text_editor.TEXTEDITOR_INPUT_CONTAINER_CLASS}`); const $indicatorElement = (0, _renderer.default)("<div>").addClass("dx-pending-indicator").appendTo($inputContainer); const options = { _animationType: _m_load_indicator.AnimationType.Sparkle, width: 48, height: 48 }; this._loadIndicator = new _load_indicator.default($indicatorElement[0], options) } _renderInformer($container) { const $informer = (0, _renderer.default)("<div>").appendTo($container); this._informer = new _informer.default($informer.get(0), { contentAlignment: "center", showBackground: true }) } _getPopupClass() { return AI_DIALOG_CLASS } _getTitleItem() { return { name: "title", toolbar: "top", location: "before", template: (data, index, titleElement) => { const $titleContainer = (0, _renderer.default)("<div>").addClass(AI_DIALOG_TITLE_CLASS); const $icon = (0, _renderer.default)("<i>").addClass("dx-icon dx-icon-sparkle"); const $text = (0, _renderer.default)("<span>").addClass("dx-aidialog-title-text").text(_message.default.format("dxHtmlEditor-aiDialogTitle")); $titleContainer.append($icon).append($text); (0, _renderer.default)(titleElement).append($titleContainer) } } } _getReplaceButtonItem() { return { name: "replace", toolbar: "bottom", location: "after", widget: "dxDropDownButton", locateInMenu: "auto", options: { displayExpr: "text", text: _message.default.format("dxHtmlEditor-aiReplace"), stylingMode: "contained", type: "default", splitButton: true, useSelectMode: false, items: [{ id: ReplaceButtonActions.InsertAbove, text: _message.default.format("dxHtmlEditor-aiInsertAbove") }, { id: ReplaceButtonActions.InsertBelow, text: _message.default.format("dxHtmlEditor-aiInsertBelow") }], dropDownOptions: { width: REPLACE_DROPDOWN_WIDTH }, onButtonClick: e => { this._replaceButtonAction(_extends({}, e, { itemData: { id: ReplaceButtonActions.Replace } })) }, onInitialized: this._addEscapeHandler.bind(this), onItemClick: e => this._replaceButtonAction(e) } } } _getCopyButtonItem() { const text = (0, _small_screen.isSmallScreen)() ? void 0 : _message.default.format("dxHtmlEditor-aiCopy"); return { name: "copy", toolbar: "bottom", location: "after", widget: "dxButton", locateInMenu: "auto", options: { stylingMode: "outlined", icon: "copy", text: text, onClick: () => { var _navigator; const { value: value } = this._resultTextArea.option(); null === (_navigator = navigator) || void 0 === _navigator || null === (_navigator = _navigator.clipboard) || void 0 === _navigator || _navigator.writeText(value ?? "") }, onInitialized: this._addEscapeHandler.bind(this) } } } _getRegenerateButtonItem() { const text = (0, _small_screen.isSmallScreen)() ? void 0 : _message.default.format("dxHtmlEditor-aiRegenerate"); return { name: "regenerate", toolbar: "bottom", location: "before", widget: "dxButton", options: { stylingMode: "outlined", icon: "restore", text: text, onClick: () => this._retryExecuteAICommand(), onInitialized: this._addEscapeHandler.bind(this) } } } _getGenerateButtonItem() { const width = getActionButtonWidth(); const promptTextArea = this._promptTextArea; const disabled = !promptTextArea.option("value"); return { name: "generate", toolbar: "bottom", location: "after", widget: "dxButton", options: { type: "default", text: _message.default.format("dxHtmlEditor-aiGenerate"), stylingMode: "contained", disabled: disabled, width: width, onClick: () => this._executeAICommand(), onInitialized: this._addEscapeHandler.bind(this) } } } _getCancelButtonItem() { const width = getActionButtonWidth(); return { name: "cancel", toolbar: "bottom", location: "after", widget: "dxButton", options: { type: "default", stylingMode: "contained", text: _message.default.format("dxHtmlEditor-aiCancel"), width: width, onClick: () => this._cancelAICommandExecution(), onInitialized: this._addEscapeHandler.bind(this) } } } _getInitialToolbarItems() { return [this._getRegenerateButtonItem(), this._getCopyButtonItem(), this._getReplaceButtonItem()] } _getToolbarItems() { const items = [this._getTitleItem()]; switch (this._dialogState) { case DialogState.Initial: case DialogState.InitialCanceled: case DialogState.ResultReady: items.push(...this._getInitialToolbarItems()); break; case DialogState.Asking: case DialogState.AskingCanceled: items.push(this._getGenerateButtonItem()); break; case DialogState.Generating: items.push(this._getCancelButtonItem()); break; case DialogState.Error: if (this._isAskAICommandSelected) { items.push(this._getGenerateButtonItem()) } else { items.push(...this._getInitialToolbarItems()) } } return items } _setDialogState(newState) { this._dialogState = newState; this._syncDialogWithState() } _syncDialogWithState() { this._refreshCommandSelectBox(); this._refreshOptionSelectBox(); this._refreshTextAreas(); this._refreshToolbarItems(); this._refreshLoadIndicator(); this._refreshInformer(); this._refreshDialogAria() } _refreshToolbarItems() { this._popup.option("toolbarItems", this._getToolbarItems()) } _retryExecuteAICommand() { this._updateResults(); this._executeAICommand() } _getAICommandParams(uiCommand) { const { _askAIPrompt: askAIPrompt, _currentOption: option, _getCustomCommandPrompt: getCustomPrompt, _selectedText: text } = this; const uiCommandName = this._commandsMap[uiCommand].name; const params = (0, _ai.buildAICommandParams)(uiCommandName, askAIPrompt, option, getCustomPrompt, text); return params } _updateResults() { let value = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : ""; this._resultTextArea.option({ value: value }) } _processCommandCompletion(dialogState) { var _this$_abort; null === (_this$_abort = this._abort) || void 0 === _this$_abort || _this$_abort.call(this); this._abort = void 0; this._isAICommandExecuting = false; if (dialogState) { this._setDialogState(dialogState) } } _getAICommandCallbacks() { const callbacks = { onComplete: finalResponse => { this._updateResults(String(finalResponse)); this._processCommandCompletion(DialogState.ResultReady) }, onError: () => { this._processCommandCompletion(DialogState.Error) } }; return callbacks } _executeAICommand() { var _this$_commandsMap$ui; const { _currentCommand: uiCommand } = this; const aiCommandName = uiCommand && (0, _ai.getAICommandName)(null === (_this$_commandsMap$ui = this._commandsMap[uiCommand]) || void 0 === _this$_commandsMap$ui ? void 0 : _this$_commandsMap$ui.name); if (!(aiCommandName && this._aiIntegration[aiCommandName])) { return } const callbacks = this._getAICommandCallbacks(); const params = this._getAICommandParams(uiCommand); this._isAICommandExecuting = true; this._setDialogState(DialogState.Generating); const abort = this._aiIntegration[aiCommandName](params, callbacks); this._abort = abort } _cancelAICommandExecution() { this._processCommandCompletion(this._getInitialDialogState(true)) } _isCommandWithOptionsSelected() { var _this$_commandsMap$th; if (this._currentCommand && (null === (_this$_commandsMap$th = this._commandsMap[this._currentCommand]) || void 0 === _this$_commandsMap$th ? void 0 : _this$_commandsMap$th.name) === _ai.AI_DIALOG_CUSTOM_COMMAND_NAME) { var _this$_commandOptions3; return Boolean(null === (_this$_commandOptions3 = this._commandOptionsList) || void 0 === _this$_commandOptions3 ? void 0 : _this$_commandOptions3.length) } return AI_DIALOG_COMMANDS_WITH_OPTIONS.includes(this._currentCommand ?? "") } _refreshCommandSelectBox() { const commandsList = Object.entries(this._commandsMap).map((_ref2 => { let [name, config] = _ref2; return { name: name, text: config.text } })); this._commandChangeSuppressed = true; this._commandSelectBox.option({ disabled: this._isAICommandExecuting, dataSource: commandsList, value: this._currentCommand }); this._commandChangeSuppressed = false } _refreshOptionSelectBox() { var _this$_commandOptions4; const hasOptions = this._isCommandWithOptionsSelected(); this._commandOptionSuppressed = true; this._optionSelectBox.option({ disabled: this._isAICommandExecuting, visible: hasOptions, items: this._commandOptionsList ?? [], value: this._currentOption ?? (null === (_this$_commandOptions4 = this._commandOptionsList) || void 0 === _this$_commandOptions4 ? void 0 : _this$_commandOptions4[0]) }); this._commandOptionSuppressed = false } _setTextAreasInitialState() { this._promptTextArea.option({ disabled: true, readOnly: false, value: void 0, visible: false }); this._resultTextArea.option({ disabled: false, readOnly: true, value: void 0, visible: true }) } _setTextAreasAskingState() { this._promptTextArea.option({ disabled: false, readOnly: false, value: this._askAIPrompt, visible: true }); this._resultTextArea.option({ disabled: true, readOnly: false, value: void 0, visible: false }) } _refreshTextAreas() { switch (this._dialogState) { case DialogState.Initial: case DialogState.InitialCanceled: this._setTextAreasInitialState(); break; case DialogState.Asking: case DialogState.AskingCanceled: this._setTextAreasAskingState(); break; case DialogState.Generating: this._promptTextArea.option({ disabled: true, readOnly: false, value: this._askAIPrompt, visible: this._isAskAICommandSelected }); this._resultTextArea.option({ disabled: true, readOnly: false, value: void 0, visible: true }); break; case DialogState.ResultReady: this._promptTextArea.option({ disabled: !this._isAskAICommandSelected, readOnly: true, value: this._askAIPrompt, visible: this._isAskAICommandSelected }); this._resultTextArea.option({ disabled: false, readOnly: true, visible: true }); break; case DialogState.Error: if (this._isAskAICommandSelected) { this._setTextAreasAskingState() } else { this._setTextAreasInitialState() } } } _refreshLoadIndicator() { if (this._dialogState === DialogState.Generating) { this._renderLoadIndicator() } else { this._disposeLoadIndicator() } } _refreshInformer() { const errorText = _message.default.format("dxHtmlEditor-aiDialogError"); const cancelText = _message.default.format("dxHtmlEditor-aiDialogCanceled"); switch (this._dialogState) { case DialogState.Error: this._informer.option({ visible: true, text: errorText, icon: "", type: "error" }); break; case DialogState.InitialCanceled: case DialogState.AskingCanceled: this._informer.option({ visible: true, text: cancelText, icon: "errorcircle", type: "info" }); break; default: this._informer.option("visible", false) } } _getInitialDialogState(canceled) { const isAskingCommand = this._isAskAICommandSelected; if (canceled) { return isAskingCommand ? DialogState.AskingCanceled : DialogState.InitialCanceled } return isAskingCommand ? DialogState.Asking : DialogState.Initial } _replaceButtonAction(event) { const { value: value } = this._resultTextArea.option(); this.hide(value ?? "", event) } _disposeLoadIndicator() { if (!this._loadIndicator) { return } this._loadIndicator.dispose(); this._loadIndicator.$element().remove(); this._loadIndicator = void 0 } _isOpen() { const { visible: visible } = this._popup.option(); return visible } _refreshDialogAria() { const id = String(new _guid.default); const $overlayContent = (0, _renderer.default)(this._popup.content()).parent(); const $title = $overlayContent.find(`.${AI_DIALOG_TITLE_CLASS}`); $title.attr("id", id); $overlayContent.attr("aria-labelledby", id) } updateAIIntegration(aiIntegration) { this._processCommandCompletion(this._getInitialDialogState()); this._aiIntegration = aiIntegration; this._executeAICommand() } show(payload) { var _commandsMap$currentC; const { currentCommand: currentCommand, currentCommandOption: currentCommandOption, commandsMap: commandsMap, text: text, prompt: prompt } = payload; this._commandsMap = commandsMap; this._currentCommand = currentCommand; this._selectedText = text ?? ""; this._commandOptionsList = (null === (_commandsMap$currentC = commandsMap[currentCommand]) || void 0 === _commandsMap$currentC ? void 0 : _commandsMap$currentC.options) ?? []; this._currentOption = currentCommandOption; this._getCustomCommandPrompt = prompt; this._isAskAICommandSelected = currentCommand === _ai.AI_DIALOG_ASKAI_COMMAND_NAME; this._askAIPrompt = ""; this._setDialogState(this._getInitialDialogState()); if (!this._isAskAICommandSelected) { this._executeAICommand() } return super.show() } hide(resultText, event) { var _this$deferred; null === (_this$deferred = this.deferred) || void 0 === _this$deferred || _this$deferred.resolve({ resultText: resultText, event: event }); super.hide() } } exports.default = AIDialog }, 47226: /*!****************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/ui/html_editor/ui/formDialog.js ***! \****************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _message = _interopRequireDefault(__webpack_require__( /*! ../../../../common/core/localization/message */ 4671)); var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../../../core/renderer */ 64553)); var _extend = __webpack_require__( /*! ../../../../core/utils/extend */ 52576); var _form = _interopRequireDefault(__webpack_require__( /*! ../../../../ui/form */ 74075)); var _themes = __webpack_require__( /*! ../../../../ui/themes */ 52071); var _m_baseDialog = _interopRequireDefault(__webpack_require__( /*! ./m_baseDialog */ 98809)); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } function _extends() { return _extends = Object.assign ? Object.assign.bind() : function(n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) { ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]) } } return n }, _extends.apply(null, arguments) } const getApplyButtonConfig = () => { if ((0, _themes.isFluent)((0, _themes.current)())) { return { stylingMode: "contained", type: "default" } } return {} }; const getCancelButtonConfig = () => { if ((0, _themes.isFluent)((0, _themes.current)())) { return { stylingMode: "outlined", type: "normal" } } return {} }; class FormDialog extends _m_baseDialog.default { constructor($container, popupConfig) { super($container, popupConfig); this._attachOptionChangedHandler() } _attachOptionChangedHandler() { var _this$_popup; null === (_this$_popup = this._popup) || void 0 === _this$_popup || _this$_popup.on("optionChanged", (_ref => { let { name: name, value: value } = _ref; if ("title" === name) { this._onTitleChanged(value) } })) } _getPopupConfig() { const baseConfig = super._getPopupConfig(); return (0, _extend.extend)(true, {}, baseConfig, _extends({ showCloseButton: false, onInitialized: e => { this._popup = e.component; this._popup.on("hiding", (() => this.onHiding())); this._popup.on("shown", (() => { this._form.focus() })); this._addEscapeHandler.bind(this) }, toolbarItems: [{ toolbar: "bottom", location: "after", widget: "dxButton", options: _extends({ onInitialized: this._addEscapeHandler.bind(this), text: _message.default.format("OK"), onClick: e => { this.callAddButtonAction(e.event) } }, getApplyButtonConfig()) }, { toolbar: "bottom", location: "after", widget: "dxButton", options: _extends({ onInitialized: this._addEscapeHandler.bind(this), text: _message.default.format("Cancel"), onClick: () => { this._popup.hide() } }, getCancelButtonConfig()) }] }, this._popupConfig)) } _renderContent($contentElem) { const $formContainer = (0, _renderer.default)("<div>").appendTo($contentElem); this._renderForm($formContainer, { onEditorEnterKey: e => { this.callAddButtonAction(e.event) }, customizeItem: item => { if ("simple" === item.itemType) { item.editorOptions = (0, _extend.extend)(true, {}, item.editorOptions, { onInitialized: this._addEscapeHandler.bind(this) }) } } }); this._updateFormLabel() } _getPopupClass() { return "dx-formdialog" } _onTitleChanged(value) { this._updateFormLabel(value) } _renderForm($container, options) { $container.addClass("dx-formdialog-form"); this._form = new _form.default($container.get(0), options); this._updateFormLabel() } _updateFormLabel(text) { var _this$_form; const label = text ?? this.popupOption("title"); null === (_this$_form = this._form) || void 0 === _this$_form || _this$_form.$element().attr("aria-label", label) } _getDefaultFormOptions() { return { colCount: 1, width: "auto", labelLocation: (0, _themes.isMaterialBased)((0, _themes.current)()) ? "top" : "left" } } callAddButtonAction(event) { if (this.beforeAddButtonAction && !this.beforeAddButtonAction()) { return } const formData = this._form.option("formData"); this.hide(formData, event) } show(formUserConfig) { const formConfig = (0, _extend.extend)(this._getDefaultFormOptions(), formUserConfig); this._form.option(formConfig); return super.show() } hide(formData, event) { var _this$deferred; null === (_this$deferred = this.deferred) || void 0 === _this$deferred || _this$deferred.resolve(formData, event); super.hide() } onHiding() { this.beforeAddButtonAction = void 0; super.onHiding() } formOption() { for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { args[_key] = arguments[_key] } return this._form.option.apply(this._form, args) } } exports.default = FormDialog }, 98809: /*!******************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/ui/html_editor/ui/m_baseDialog.js ***! \******************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../../../core/renderer */ 64553)); var _deferred = __webpack_require__( /*! ../../../../core/utils/deferred */ 87739); var _popup = _interopRequireDefault(__webpack_require__( /*! ../../../../ui/popup */ 97643)); var _small_screen = __webpack_require__( /*! ../utils/small_screen */ 59133); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } exports.default = class { constructor($container, popupConfig) { this._$container = $container; this._popupConfig = popupConfig; this._renderPopup() } _escKeyHandler() { var _this$_popup; null === (_this$_popup = this._popup) || void 0 === _this$_popup || _this$_popup.hide() } _addEscapeHandler(e) { e.component.registerKeyHandler("escape", (() => this._escKeyHandler())) } _renderPopup() { const $popupContainer = (0, _renderer.default)("<div>").addClass(this._getPopupClass()).appendTo(this._$container); this._popup = new _popup.default($popupContainer.get(0), this._getPopupConfig()) } _getPopupConfig() { return { deferRendering: false, focusStateEnabled: false, fullScreen: (0, _small_screen.isSmallScreen)(), _wrapperClassExternal: `${this._getPopupClass()} dx-dropdowneditor-overlay`, contentTemplate: contentElem => { this._renderContent((0, _renderer.default)(contentElem)) }, onInitialized: e => { this._popup = e.component; this._popup.on("hiding", (() => this.onHiding())); this._addEscapeHandler.bind(this) } } } onHiding() { var _this$deferred; null === (_this$deferred = this.deferred) || void 0 === _this$deferred || _this$deferred.reject() } show(options) { if (this._popup.option("visible")) { return } this.deferred = (0, _deferred.Deferred)(); this._popup.show(); return this.deferred.promise() } hide(options, event) { this._popup.hide() } popupOption() { for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { args[_key] = arguments[_key] } return this._popup.option.apply(this._popup, args) } } }, 39195: /*!***********************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/ui/html_editor/utils/ai.js ***! \***********************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.hasInvalidCustomCommand = exports.getDefaultOptionsByCommand = exports.getAICommandName = exports.defaultCommandNames = exports.buildCommandsMap = exports.buildAICommandParams = exports.AI_DIALOG_CUSTOM_COMMAND_NAME = exports.AI_DIALOG_ASKAI_COMMAND_NAME = void 0; var _capitalize = __webpack_require__( /*! ../../../core/utils/capitalize */ 72928); const AI_DIALOG_ASKAI_COMMAND_NAME = exports.AI_DIALOG_ASKAI_COMMAND_NAME = "askAI"; const AI_DIALOG_CUSTOM_COMMAND_NAME = exports.AI_DIALOG_CUSTOM_COMMAND_NAME = "custom"; const defaultCommandNames = exports.defaultCommandNames = { summarize: "Summarize", proofread: "Proofread", expand: "Expand", shorten: "Shorten", changeStyle: "Change Style", changeTone: "Change Tone", translate: "Translate", askAI: "Ask AI" }; const htmlEditorAIChangeStyleOptions = ["formal", "informal", "technical", "business", "creative", "journalistic", "academic", "persuasive", "narrative", "expository", "descriptive", "conversational"]; const htmlEditorAIChangeToneOptions = ["professional", "casual", "straightforward", "confident", "friendly"]; const htmlEditorAITranslateOptions = ["arabic", "chinese", "english", "french", "german", "japanese", "spanish"]; const aiCommandNames = { summarize: "summarize", proofread: "proofread", expand: "expand", shorten: "shorten", changeStyle: "changeStyle", changeTone: "changeTone", translate: "translate", askAI: "execute", custom: "execute" }; const getDefaultOptionsByCommand = command => { const commandToOptionsMap = { changeStyle: htmlEditorAIChangeStyleOptions, changeTone: htmlEditorAIChangeToneOptions, translate: htmlEditorAITranslateOptions }; return commandToOptionsMap[command] }; exports.getDefaultOptionsByCommand = getDefaultOptionsByCommand; exports.buildCommandsMap = commands => { const map = {}; let index = 0; null === commands || void 0 === commands || commands.forEach((command => { if ("string" === typeof command) { map[command] = (commandName => { var _getDefaultOptionsByC; const text = defaultCommandNames[commandName] ?? (0, _capitalize.capitalize)(commandName); const defaultOptions = null === (_getDefaultOptionsByC = getDefaultOptionsByCommand(commandName)) || void 0 === _getDefaultOptionsByC ? void 0 : _getDefaultOptionsByC.map(_capitalize.capitalize); return { id: commandName, text: text, name: commandName, options: defaultOptions } })(command) } else { const { name: name, text: text, options: options } = command; const isCustom = "custom" === name; const { prompt: prompt } = command; const id = `${name}${isCustom?index:""}`; map[id] = ((id, name, text, rawOptions, prompt) => { var _getDefaultOptionsByC2; const capitalizedRaw = null === rawOptions || void 0 === rawOptions ? void 0 : rawOptions.map(_capitalize.capitalize); const options = capitalizedRaw ?? (null === (_getDefaultOptionsByC2 = getDefaultOptionsByCommand(name)) || void 0 === _getDefaultOptionsByC2 ? void 0 : _getDefaultOptionsByC2.map(_capitalize.capitalize)); const displayText = text ?? defaultCommandNames[name] ?? (0, _capitalize.capitalize)(name); const definition = { id: id, name: name, text: displayText, options: options, prompt: prompt }; return definition })(id, name, text, options, prompt); if (isCustom) { index += 1 } } })); return map }; exports.getAICommandName = uiCommandName => aiCommandNames[uiCommandName]; exports.buildAICommandParams = (uiCommandName, askAIPrompt, option, getCustomPrompt, payloadText) => { const text = payloadText ?? ""; switch (uiCommandName) { case "expand": case "proofread": case "summarize": case "shorten": return { text: text }; case "changeStyle": { const params = { text: text, writingStyle: option }; return params } case "changeTone": { const params = { text: text, tone: option }; return params } case "translate": { const params = { text: text, lang: option }; return params } default: { const userPrompt = function(uiCommandName) { let askAIPrompt = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : ""; let option = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : ""; let getCustomPrompt = arguments.length > 3 ? arguments[3] : void 0; let customPrompt = ""; if (uiCommandName === AI_DIALOG_ASKAI_COMMAND_NAME) { customPrompt = askAIPrompt ?? "" } else if (uiCommandName === AI_DIALOG_CUSTOM_COMMAND_NAME) { customPrompt = (null === getCustomPrompt || void 0 === getCustomPrompt ? void 0 : getCustomPrompt(option)) ?? "" } return customPrompt }(uiCommandName, askAIPrompt, option, getCustomPrompt); const params = { text: `Text: "${text}". ${userPrompt}`.trim() }; return params } } }; exports.hasInvalidCustomCommand = commandsMap => Object.keys(commandsMap).some((command => command.startsWith("custom") && !commandsMap[command].prompt)) }, 39e3: /*!***********************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/ui/html_editor/utils/html_sanitizer.js ***! \***********************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.sanitizeHtml = exports.default = exports.createNoScriptFrame = void 0; var _renderer = (e = __webpack_require__( /*! ../../../../core/renderer */ 64553), e && e.__esModule ? e : { default: e }); var e; const createNoScriptFrame = () => (0, _renderer.default)("<iframe>").css("display", "none").attr({ srcdoc: "", id: "xss-frame", sandbox: "allow-same-origin" }); exports.createNoScriptFrame = createNoScriptFrame; exports.sanitizeHtml = (quill, value) => { const $frame = createNoScriptFrame().appendTo("body"); const frame = $frame.get(0); const frameWindow = frame.contentWindow; const frameDocument = frameWindow.document; const frameDocumentBody = frameDocument.body; const valueWithoutStyles = quill.replaceStyleAttribute(value); frameDocumentBody.innerHTML = valueWithoutStyles; const removeInlineHandlers = element => { if (element.attributes) { for (let i = 0; i < element.attributes.length; i++) { const { name: name } = element.attributes[i]; if (name.startsWith("on")) { element.removeAttribute(name) } } } if (element.childNodes) { for (let i = 0; i < element.childNodes.length; i++) { removeInlineHandlers(element.childNodes[i]) } } }; removeInlineHandlers(frameDocumentBody); frameDocumentBody.querySelectorAll("script").forEach((scriptNode => { scriptNode.remove() })); const sanitizedHtml = frameDocumentBody.innerHTML; $frame.remove(); return sanitizedHtml }; exports.default = { createNoScriptFrame: createNoScriptFrame } }, 85936: /*!********************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/ui/html_editor/utils/m_image_uploader_helper.js ***! \********************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.ImageUploader = void 0; exports.correctSlashesInUrl = correctSlashesInUrl; exports.getFileUploaderBaseOptions = getFileUploaderBaseOptions; exports.serverUpload = serverUpload; exports.urlUpload = urlUpload; var _message = _interopRequireDefault(__webpack_require__( /*! ../../../../common/core/localization/message */ 4671)); var _devices = _interopRequireDefault(__webpack_require__( /*! ../../../../core/devices */ 65951)); var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../../../core/renderer */ 64553)); var _extend = __webpack_require__( /*! ../../../../core/utils/extend */ 52576); var _iterator = __webpack_require__( /*! ../../../../core/utils/iterator */ 21274); var _size = __webpack_require__( /*! ../../../../core/utils/size */ 57653); var _type = __webpack_require__( /*! ../../../../core/utils/type */ 11528); var _button_group = _interopRequireDefault(__webpack_require__( /*! ../../../../ui/button_group */ 17809)); var _file_uploader = _interopRequireDefault(__webpack_require__( /*! ../../../../ui/file_uploader */ 26980)); var _text_box = _interopRequireDefault(__webpack_require__( /*! ../../../../ui/text_box */ 20780)); var _themes = __webpack_require__( /*! ../../../../ui/themes */ 52071); const _excluded = ["imageSrc", "src"]; function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } function _extends() { return _extends = Object.assign ? Object.assign.bind() : function(n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) { ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]) } } return n }, _extends.apply(null, arguments) } const isMobile = "phone" === _devices.default.current().deviceType; const USER_ACTION = "user"; const FILE_UPLOADER_NAME = "dx-htmleditor-image"; exports.ImageUploader = class { constructor(module, config) { this.module = module; this.config = config ?? {}; this.quill = this.module.quill; this.editorInstance = this.module.editorInstance } render() { if (this.editorInstance._formDialog) { this.editorInstance._formDialog.beforeAddButtonAction = () => this.getCurrentTab().upload() } this.tabPanelIndex = 0; this.formData = this.getFormData(); this.isUpdating = this.isImageUpdating(); this.tabsModel = this.createTabsModel(this.config.tabs); this.tabs = this.createTabs(this.formData); const formConfig = this.getFormConfig(); this.updatePopupConfig(); this.updateAddButtonState(); this.editorInstance.showFormDialog(formConfig).done(((formData, event) => { this.tabs[this.getActiveTabIndex()].strategy.pasteImage(formData, event) })).always((() => { this.resetDialogPopupOptions(); this.quill.focus() })) } getCurrentTab() { return this.tabs[this.tabPanelIndex] } updateAddButtonState() { const isDisabled = this.getCurrentTab().isDisableButton(); this.setAddButtonDisabled(isDisabled) } setAddButtonDisabled(value) { this.editorInstance.formDialogOption({ "toolbarItems[0].options.disabled": value }) } getActiveTabIndex() { return this.isUpdating ? 0 : this.tabPanelIndex } getFormData() { return this.getUpdateDialogFormData(this.quill.getFormat()) } getUpdateDialogFormData(formData) { const { imageSrc: imageSrc, src: src } = formData, props = function(r, e) { if (null == r) { return {} } var t = {}; for (var n in r) { if ({}.hasOwnProperty.call(r, n)) { if (e.includes(n)) { continue } t[n] = r[n] } } return t }(formData, _excluded); return _extends({ src: imageSrc ?? src }, props) } createUrlTab(formData) { return new UrlTab(this.module, { config: this.config, formData: formData, isUpdating: this.isUpdating }, (() => this.updateAddButtonState())) } createFileTab() { return new FileTab(this.module, { config: this.config }, (() => this.updateAddButtonState())) } createTabsModel() { let model = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : []; if (0 === model.length || this.isUpdating) { return ["url"] } return model.map((tab => "object" === typeof tab ? tab.name : tab)) } createTabs(formData) { return this.tabsModel.map((tabName => { const isUrlTab = "url" === tabName; return isUrlTab ? this.createUrlTab(formData) : this.createFileTab() })) } isImageUpdating() { return Object.prototype.hasOwnProperty.call(this.module.quill.getFormat() ?? {}, "imageSrc") } updatePopupConfig() { let wrapperClasses = "dx-htmleditor-add-image-popup dx-formdialog"; if (this.useTabbedItems()) { wrapperClasses += " dx-htmleditor-add-image-popup-with-tabs" } const titleKey = this.isUpdating ? "dxHtmlEditor-dialogUpdateImageCaption" : "dxHtmlEditor-dialogImageCaption"; const addButtonTextKey = this.isUpdating ? "dxHtmlEditor-dialogImageUpdateButton" : "dxHtmlEditor-dialogImageAddButton"; this.editorInstance.formDialogOption({ title: _message.default.format(titleKey), "toolbarItems[0].options.text": _message.default.format(addButtonTextKey), wrapperAttr: { class: wrapperClasses } }) } resetDialogPopupOptions() { this.editorInstance.formDialogOption({ "toolbarItems[0].options.text": _message.default.format("OK"), "toolbarItems[0].options.visible": true, "toolbarItems[0].options.disabled": false, wrapperAttr: { class: "dx-formdialog" } }) } useTabbedItems() { return this.tabsModel.length > 1 } getFormWidth() { return isMobile ? "100%" : 493 } getFormConfig() { return { formData: this.formData, width: this.getFormWidth(), labelLocation: "top", colCount: this.useTabbedItems() ? 1 : 11, items: this.getItemsConfig() } } getItemsConfig() { if (this.useTabbedItems()) { const tabsConfig = (0, _iterator.map)(this.tabs, (tabController => ({ title: tabController.getTabName(), colCount: 11, items: tabController.getItemsConfig() }))); return [{ itemType: "tabbed", tabPanelOptions: { onSelectionChanged: e => { this.tabPanelIndex = e.component.option("selectedIndex"); this.updateAddButtonState() } }, tabs: tabsConfig }] } return this.tabs[0].getItemsConfig() } }; class BaseTab { constructor(module, _ref, onFileSelected) { let { config: config, formData: formData, isUpdating: isUpdating } = _ref; this.module = module; this.config = config; this.formData = formData; this.isUpdating = isUpdating; this.onFileSelected = onFileSelected; this.strategy = this.createStrategy() } getItemsConfig() { return this.strategy.getItemsConfig() } createStrategy() { return this.isUpdating ? new UpdateUrlStrategy(this.module, this.config, this.formData) : new AddUrlStrategy(this.module, this.config, this.onFileSelected) } isDisableButton() { return false } upload() { return this.strategy.upload() } } class UrlTab extends BaseTab { getTabName() { return _message.default.format("dxHtmlEditor-dialogImageSpecifyUrl") } } class FileTab extends BaseTab { getTabName() { return _message.default.format("dxHtmlEditor-dialogImageSelectFile") } createStrategy() { return new FileStrategy(this.module, this.config, this.onFileSelected) } isDisableButton() { return !this.strategy.isValid() } } class BaseStrategy { constructor(module, config) { this.module = module; this.config = config; this.editorInstance = module.editorInstance; this.quill = module.quill; this.selection = this.getQuillSelection() } getQuillSelection() { const selection = this.quill.getSelection(); return selection ?? { index: this.quill.getLength(), length: 0 } } pasteImage(formData, event) {} isValid() { return true } upload() {} } class AddUrlStrategy extends BaseStrategy { constructor(module, config, onFileSelected) { super(module, config, onFileSelected); this.shouldKeepAspectRatio = true } pasteImage(formData, event) { this.module.saveValueChangeEvent(event); urlUpload(this.quill, this.selection.index, formData) } keepAspectRatio(data, _ref2) { let { dependentEditor: dependentEditor, e: e } = _ref2; const newValue = parseInt(e.value); const previousValue = parseInt(e.previousValue); const previousDependentEditorValue = parseInt(dependentEditor.option("value")); data.component.updateData(data.dataField, newValue); if (this.shouldKeepAspectRatio && previousDependentEditorValue && previousValue && !this.preventRecalculating) { this.preventRecalculating = true; dependentEditor.option("value", Math.round(newValue * previousDependentEditorValue / parseInt(previousValue)).toString()) } this.preventRecalculating = false } createKeepAspectRatioEditor($container, data, dependentEditorDataField) { return this.editorInstance._createComponent($container, _text_box.default, (0, _extend.extend)(true, data.editorOptions, { value: data.component.option("formData")[data.dataField], onEnterKey: data.component.option("onEditorEnterKey").bind(this.editorInstance._formDialog, data), onValueChanged: e => { this.keepAspectRatio(data, { dependentEditor: this[`${dependentEditorDataField}Editor`], e: e }) } })) } upload() { const result = this.editorInstance._formDialog._form.validate(); return result.isValid } getItemsConfig() { const stylingMode = (0, _themes.isFluent)() ? "text" : "outlined"; return [{ dataField: "src", colSpan: 11, label: { text: _message.default.format("dxHtmlEditor-dialogImageUrlField") }, validationRules: [{ type: "required" }, { type: "stringLength", min: 1 }] }, { dataField: "width", colSpan: 6, label: { text: _message.default.format("dxHtmlEditor-dialogImageWidthField") }, template: data => { const $content = (0, _renderer.default)("<div>").addClass("dx-fix-ratio-container"); const $widthEditor = (0, _renderer.default)("<div>").appendTo($content); this.widthEditor = this.createKeepAspectRatioEditor($widthEditor, data, "height"); const $ratioEditor = (0, _renderer.default)("<div>").appendTo($content); this.editorInstance._createComponent($ratioEditor, _button_group.default, { items: [{ icon: "imgarlock", value: "keepRatio" }], hint: _message.default.format("dxHtmlEditor-dialogImageKeepAspectRatio"), focusStateEnabled: false, keyExpr: "value", stylingMode: stylingMode, selectionMode: "multiple", selectedItemKeys: ["keepRatio"], onSelectionChanged: e => { this.shouldKeepAspectRatio = !!e.component.option("selectedItems").length } }); return $content } }, { dataField: "height", colSpan: 5, label: { text: _message.default.format("dxHtmlEditor-dialogImageHeightField") }, template: data => { const $content = (0, _renderer.default)("<div>"); this.heightEditor = this.createKeepAspectRatioEditor($content, data, "width"); return $content } }, { dataField: "alt", colSpan: 11, label: { text: _message.default.format("dxHtmlEditor-dialogImageAltField") } }] } } class UpdateUrlStrategy extends AddUrlStrategy { constructor(module, config, formData, onFileSelected) { super(module, config, onFileSelected); this.formData = formData; this.modifyFormData() } modifyFormData() { const { imageSrc: imageSrc } = this.quill.getFormat(this.selection.index - 1, 1); if (!imageSrc || 0 === this.selection.index) { this.selection = { index: this.selection.index + 1, length: 0 }; this.quill.setSelection(this.selection.index, this.selection.length, "silent") } const imgElement = this.quill.getLeaf(this.selection.index)[0].domNode; if (imgElement) { this.formData.width = this.formData.width ?? (0, _size.getWidth)((0, _renderer.default)(imgElement)); this.formData.height = this.formData.height ?? (0, _size.getHeight)((0, _renderer.default)(imgElement)) } } pasteImage(formData, event) { this.quill.deleteText(this.embedFormatIndex(), 1, "silent"); this.selection.index -= 1; super.pasteImage(formData, event) } embedFormatIndex() { const selection = this.selection ?? this.quill.getSelection(); if (selection) { if (selection.length) { return selection.index } return selection.index - 1 } return this.quill.getLength() } } class FileStrategy extends BaseStrategy { constructor(module, config, onFileSelected) { super(module, config, onFileSelected); this.useBase64 = !(0, _type.isDefined)(this.config.fileUploadMode) || "base64" === this.config.fileUploadMode; this.isValidInternal = false; this.onFileSelected = onFileSelected; this.data = null } upload() { if (this.useBase64) { this.base64Upload(this.data) } else if (this.data.value.length) { this.data.component.upload() } return true } isValid() { return this.isValidInternal } onUploaded(data) { serverUpload(this.config.uploadDirectory, data.file.name, this.quill, this.selection.index) } base64Upload(data) { this.quill.getModule("uploader").upload(this.selection, data.value, true) } pasteImage(formData, event) { if (this.useBase64) { super.pasteImage(formData, event) } } isBase64Editable() { return "both" === this.config.fileUploadMode } validate(e) { const fileUploader = e.component; this.isValidInternal = !fileUploader._files.some((file => !file.isValid())); if (0 === fileUploader._files.length) { this.isValidInternal = false } } getFileUploaderOptions() { const fileUploaderOptions = { uploadUrl: this.config.uploadUrl, onValueChanged: data => { this.validate(data); this.data = data; this.onFileSelected() }, onUploaded: e => this.onUploaded(e) }; return (0, _extend.extend)({}, getFileUploaderBaseOptions(), fileUploaderOptions, this.config.fileUploaderOptions) } getItemsConfig() { return [{ itemType: "simple", dataField: "files", colSpan: 11, label: { visible: false }, template: () => { const $content = (0, _renderer.default)("<div>"); this.module.editorInstance._createComponent($content, _file_uploader.default, this.getFileUploaderOptions()); return $content } }, { itemType: "simple", colSpan: 11, label: { visible: false }, editorType: "dxCheckBox", editorOptions: { value: this.useBase64, visible: this.isBase64Editable(), text: _message.default.format("dxHtmlEditor-dialogImageEncodeToBase64"), onValueChanged: e => { if (this.isBase64Editable()) { this.useBase64 = e.value } } } }] } } function correctSlashesInUrl(url) { return "/" !== url[url.length - 1] ? `${url}/` : url } function getFileUploaderBaseOptions() { return { value: [], name: FILE_UPLOADER_NAME, allowedFileExtensions: ["image/*"], uploadMode: "useButtons" } } function urlUpload(quill, index, attributes) { quill.insertEmbed(index, "extendedImage", attributes, USER_ACTION); quill.setSelection(index + 1, 0, USER_ACTION) } function serverUpload(url, fileName, quill, pasteIndex) { if (url) { const imageUrl = correctSlashesInUrl(url) + fileName; urlUpload(quill, pasteIndex, { src: imageUrl }) } } }, 53548: /*!***********************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/ui/html_editor/utils/m_table_helper.js ***! \***********************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.TABLE_OPERATIONS = void 0; exports.getAutoSizedElements = function($table) { let direction = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : "horizontal"; const result = []; const isHorizontal = "horizontal" === direction; const $lineElements = isHorizontal ? getColumnElements($table) : getRowElements($table); $lineElements.each(((index, element) => { const $element = (0, _renderer.default)(element); if ("" === $element.get(0).style[isHorizontal ? "width" : "height"]) { result.push($element) } })); return result }; exports.getColumnElements = getColumnElements; exports.getLineElements = function($table, index) { let direction = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : "horizontal"; return "horizontal" === direction ? getRowElements($table, index) : getColumnElements($table, index) }; exports.getRowElements = getRowElements; exports.getTableFormats = function(quill) { const tableModule = quill.getModule("table"); return null !== tableModule && void 0 !== tableModule && tableModule.tableFormats ? tableModule.tableFormats() : TABLE_FORMATS }; exports.getTableOperationHandler = function(quill, operationName) { for (var _len = arguments.length, rest = new Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) { rest[_key - 2] = arguments[_key] } return () => { const table = quill.getModule("table"); if (!table) { return } quill.focus(); return table[operationName](...rest) } }; exports.hasEmbedContent = function(module, selection) { return !!selection && module.quill.getText(selection).length < selection.length }; exports.setLineElementsFormat = function(module, _ref2) { let { elements: elements, property: property, value: value } = _ref2; const tableBlotNames = module.quill.getModule("table").tableBlots; const fullPropertyName = `cell${(0,_inflector.camelize)(property,true)}`; (0, _iterator.each)(elements, ((i, element) => { var _formatBlot; let formatBlot = module.quill.scroll.find(element); if (!tableBlotNames.includes(formatBlot.statics.blotName)) { const descendBlot = formatBlot.descendant((blot => tableBlotNames.includes(blot.statics.blotName))); formatBlot = descendBlot ? descendBlot[0] : null } null === (_formatBlot = formatBlot) || void 0 === _formatBlot || _formatBlot.format(fullPropertyName, `${value}px`) })) }; exports.unfixTableWidth = function($table, _ref) { let { tableBlot: tableBlot, quill: quill } = _ref; const formatBlot = tableBlot ?? quill.scroll.find($table.get(0)); formatBlot.format("tableWidth", "initial") }; var _renderer = (e = __webpack_require__( /*! ../../../../core/renderer */ 64553), e && e.__esModule ? e : { default: e }); var e; var _inflector = __webpack_require__( /*! ../../../../core/utils/inflector */ 53124); var _iterator = __webpack_require__( /*! ../../../../core/utils/iterator */ 21274); const TABLE_FORMATS = ["table", "tableHeaderCell"]; exports.TABLE_OPERATIONS = ["insertTable", "insertHeaderRow", "insertRowAbove", "insertRowBelow", "insertColumnLeft", "insertColumnRight", "deleteColumn", "deleteRow", "deleteTable", "cellProperties", "tableProperties"]; function getColumnElements($table) { let index = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : 0; return $table.find("tr").eq(index).find("th, td") } function getRowElements($table) { let index = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : 0; return $table.find(`th:nth-child(${1+index}), td:nth-child(${1+index})`) } }, 28552: /*!****************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/ui/html_editor/utils/m_templates_storage.js ***! \****************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _type = __webpack_require__( /*! ../../../../core/utils/type */ 11528); exports.default = class { constructor() { this._storage = {} } set(_ref, value) { let { editorKey: editorKey, marker: marker } = _ref; var _a; (_a = this._storage)[editorKey] ?? (_a[editorKey] = {}); this._storage[editorKey][marker] = value } get(_ref2) { var _Object$values$at, _this$_storage$editor; let { editorKey: editorKey, marker: marker } = _ref2; const isQuillFormatCall = !(0, _type.isDefined)(editorKey); return isQuillFormatCall ? null === (_Object$values$at = Object.values(this._storage).at(-1)) || void 0 === _Object$values$at ? void 0 : _Object$values$at[marker] : null === (_this$_storage$editor = this._storage[editorKey]) || void 0 === _this$_storage$editor ? void 0 : _this$_storage$editor[marker] } delete(_ref3) { let { editorKey: editorKey, marker: marker } = _ref3; if (!this._storage[editorKey]) { return } delete this._storage[editorKey][marker]; if ((0, _type.isEmptyObject)(this._storage[editorKey])) { delete this._storage[editorKey] } } } }, 12873: /*!*************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/ui/html_editor/utils/m_toolbar_helper.js ***! \*************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.ICON_MAP = void 0; exports.applyFormat = applyFormat; exports.getDefaultClickHandler = getDefaultClickHandler; exports.getFormatHandlers = function(module) { return { clear: _ref => { let { event: event } = _ref; const range = module.quill.getSelection(); if (range) { var _getToolbarModule; module.saveValueChangeEvent(event); module.quill.removeFormat(range); null === (_getToolbarModule = getToolbarModule(module)) || void 0 === _getToolbarModule || _getToolbarModule.updateFormatWidgets() } }, link: prepareLinkHandler(module), image: prepareImageHandler(module, module.editorInstance.option("imageUpload")), color: prepareColorClickHandler(module, "color"), background: prepareColorClickHandler(module, "background"), orderedList: prepareShortcutHandler(module, "list", "ordered"), bulletList: prepareShortcutHandler(module, "list", "bullet"), alignLeft: prepareShortcutHandler(module, "align", "left"), alignCenter: prepareShortcutHandler(module, "align", "center"), alignRight: prepareShortcutHandler(module, "align", "right"), alignJustify: prepareShortcutHandler(module, "align", "justify"), codeBlock: getDefaultClickHandler(module, "code-block"), undo: _ref2 => { let { event: event } = _ref2; module.saveValueChangeEvent(event); module.quill.history.undo() }, redo: _ref3 => { let { event: event } = _ref3; module.saveValueChangeEvent(event); module.quill.history.redo() }, increaseIndent: _ref4 => { let { event: event } = _ref4; applyFormat(module, ["indent", "+1", USER_ACTION], event) }, decreaseIndent: _ref5 => { let { event: event } = _ref5; applyFormat(module, ["indent", "-1", USER_ACTION], event) }, superscript: prepareShortcutHandler(module, "script", "super"), subscript: prepareShortcutHandler(module, "script", "sub"), insertTable: prepareInsertTableHandler(module), insertHeaderRow: (0, _m_table_helper.getTableOperationHandler)(module.quill, "insertHeaderRow"), insertRowAbove: (0, _m_table_helper.getTableOperationHandler)(module.quill, "insertRowAbove"), insertRowBelow: (0, _m_table_helper.getTableOperationHandler)(module.quill, "insertRowBelow"), insertColumnLeft: (0, _m_table_helper.getTableOperationHandler)(module.quill, "insertColumnLeft"), insertColumnRight: (0, _m_table_helper.getTableOperationHandler)(module.quill, "insertColumnRight"), deleteColumn: (0, _m_table_helper.getTableOperationHandler)(module.quill, "deleteColumn"), deleteRow: (0, _m_table_helper.getTableOperationHandler)(module.quill, "deleteRow"), deleteTable: (0, _m_table_helper.getTableOperationHandler)(module.quill, "deleteTable"), cellProperties: prepareShowFormProperties(module, "cell"), tableProperties: prepareShowFormProperties(module, "table"), ai: prepareAITextTrasformHandler(module) } }; var _message = _interopRequireDefault(__webpack_require__( /*! ../../../../common/core/localization/message */ 4671)); var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../../../core/renderer */ 64553)); var _inflector = __webpack_require__( /*! ../../../../core/utils/inflector */ 53124); var _iterator = __webpack_require__( /*! ../../../../core/utils/iterator */ 21274); var _size = __webpack_require__( /*! ../../../../core/utils/size */ 57653); var _type = __webpack_require__( /*! ../../../../core/utils/type */ 11528); var _window = __webpack_require__( /*! ../../../../core/utils/window */ 3104); var _button_group = _interopRequireDefault(__webpack_require__( /*! ../../../../ui/button_group */ 17809)); var _color_box = _interopRequireDefault(__webpack_require__( /*! ../../../../ui/color_box */ 87928)); var _form = _interopRequireDefault(__webpack_require__( /*! ../../../../ui/form */ 74075)); var _scroll_view = _interopRequireDefault(__webpack_require__( /*! ../../../../ui/scroll_view */ 91374)); var _m_quill_importer = __webpack_require__( /*! ../m_quill_importer */ 58283); var _m_image_uploader_helper = __webpack_require__( /*! ./m_image_uploader_helper */ 85936); var _m_table_helper = __webpack_require__( /*! ./m_table_helper */ 53548); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } const MIN_HEIGHT = 400; const BORDER_STYLES = ["none", "hidden", "dotted", "dashed", "solid", "double", "groove", "ridge", "inset", "outset"]; const USER_ACTION = "user"; const SILENT_ACTION = "silent"; const DIALOG_COLOR_CAPTION = "dxHtmlEditor-dialogColorCaption"; const DIALOG_BACKGROUND_CAPTION = "dxHtmlEditor-dialogBackgroundCaption"; const DIALOG_LINK_CAPTION = "dxHtmlEditor-dialogLinkCaption"; const DIALOG_TABLE_CAPTION = "dxHtmlEditor-dialogInsertTableCaption"; const DIALOG_LINK_FIELD_URL = "dxHtmlEditor-dialogLinkUrlField"; const DIALOG_LINK_FIELD_TEXT = "dxHtmlEditor-dialogLinkTextField"; const DIALOG_LINK_FIELD_TARGET = "dxHtmlEditor-dialogLinkTargetField"; const DIALOG_LINK_FIELD_TARGET_CLASS = "dx-formdialog-field-target"; const DIALOG_TABLE_FIELD_COLUMNS = "dxHtmlEditor-dialogInsertTableRowsField"; const DIALOG_TABLE_FIELD_ROWS = "dxHtmlEditor-dialogInsertTableColumnsField"; exports.ICON_MAP = { insertHeaderRow: "header", clear: "clearformat" }; function getBorderStylesTranslated() { return BORDER_STYLES.map((style => ({ id: style, value: _message.default.format(`dxHtmlEditor-borderStyle${(0,_inflector.camelize)(style,true)}`) }))) } function prepareAITextTrasformHandler(module) { return options => { const { command: command, commandsMap: commandsMap, parentCommand: parentCommand, prompt: prompt } = options; const { quill: quill } = module; const selection = quill.getSelection(); const hasSelection = (null === selection || void 0 === selection ? void 0 : selection.length) > 0; const text = hasSelection ? quill.getText(selection) : quill.getText(); const aiDialogConfig = { currentCommand: parentCommand ?? command, currentCommandOption: parentCommand ? command : void 0, text: text, commandsMap: commandsMap, prompt: prompt }; const promise = module.editorInstance.showAIDialog(aiDialogConfig); promise.done((_ref6 => { let { resultText: resultText, event: eventData } = _ref6; const insertionMode = eventData.itemData.id; let insertIndex = 0; let textToInsert = resultText; switch (insertionMode) { case "replace": insertIndex = hasSelection ? selection.index : 0; quill.deleteText(insertIndex, hasSelection ? selection.length : quill.getLength(), SILENT_ACTION); break; case "insertAbove": insertIndex = hasSelection ? selection.index : 0; textToInsert = `${resultText}\n`; break; case "insertBelow": insertIndex = hasSelection ? selection.index + selection.length : quill.getLength(); break; default: return } module.saveValueChangeEvent(eventData.event); quill.insertText(insertIndex, textToInsert, USER_ACTION); quill.setSelection(insertIndex, textToInsert.length, USER_ACTION) })) } } function resetFormDialogOptions(editorInstance, _ref7) { let { contentTemplate: contentTemplate, title: title, minHeight: minHeight, minWidth: minWidth, maxWidth: maxWidth } = _ref7; editorInstance.formDialogOption({ contentTemplate: contentTemplate, title: title, minHeight: minHeight ?? 0, minWidth: minWidth ?? 0, maxWidth: maxWidth ?? "none" }) } function prepareShowFormProperties(module, type) { return $element => { var _$element; if (!(null !== (_$element = $element) && void 0 !== _$element && _$element.length)) { $element = (0, _renderer.default)(function(module, partName) { const currentSelectionParts = module.quill.getModule("table").getTable(); return "table" === partName ? currentSelectionParts[0].domNode : currentSelectionParts[2].domNode }(module, type)) } const [tableBlot, rowBlot] = module.quill.getModule("table").getTable() ?? []; const formats = module.quill.getFormat(module.editorInstance.getSelection(true)); const tablePropertiesFormConfig = function(type) { return "cell" === type ? getCellPropertiesFormConfig : getTablePropertiesFormConfig }(type)(module, { $element: $element, formats: formats, tableBlot: tableBlot, rowBlot: rowBlot }); const { contentTemplate: contentTemplate, title: title, minHeight: minHeight, minWidth: minWidth, maxWidth: maxWidth } = module.editorInstance._formDialog._popup.option(); const savedOptions = { contentTemplate: contentTemplate, title: title, minHeight: minHeight, minWidth: minWidth, maxWidth: maxWidth }; let formInstance; module.editorInstance.formDialogOption({ contentTemplate: container => { const $content = (0, _renderer.default)("<div>").appendTo(container); const $form = (0, _renderer.default)("<div>").appendTo($content); module.editorInstance._createComponent($form, _form.default, tablePropertiesFormConfig.formOptions); module.editorInstance._createComponent($content, _scroll_view.default, {}); formInstance = $form.dxForm("instance"); return $content }, title: _message.default.format(`dxHtmlEditor-${type}Properties`), minHeight: MIN_HEIGHT, minWidth: Math.min(800, .9 * (0, _size.getWidth)((0, _window.getWindow)()) - 1), maxWidth: .9 * (0, _size.getWidth)((0, _window.getWindow)()) }); const promise = module.editorInstance.showFormDialog(); promise.done(((formData, event) => { module.saveValueChangeEvent(event); tablePropertiesFormConfig.applyHandler(formInstance); resetFormDialogOptions(module.editorInstance, savedOptions) })); promise.fail((() => { module.quill.focus(); resetFormDialogOptions(module.editorInstance, savedOptions) })) } } function applyFormat(module, formatArgs, event) { module.saveValueChangeEvent(event); module.quill.format(...formatArgs) } function getColorFromFormat(value) { return Array.isArray(value) ? value[0] : value } function prepareLinkHandler(module) { return () => { var _selection; module.quill.focus(); let selection = module.quill.getSelection(); const formats = selection ? module.quill.getFormat() : {}; const isCursorAtLink = void 0 !== formats.link && 0 === (null === (_selection = selection) || void 0 === _selection ? void 0 : _selection.length); let href = formats.link || ""; if (isCursorAtLink) { const linkRange = function(module, range) { const Quill = (0, _m_quill_importer.getQuill)(); const LinkBlot = Quill.import("formats/link"); let link; let linkOffset; [link, linkOffset] = module.quill.scroll.descendant(LinkBlot, range.index); if (!link && 0 === range.length) { [link, linkOffset] = module.quill.scroll.descendant(LinkBlot, range.index - 1); if (link) { linkOffset += 1 } } const result = !link ? null : { index: range.index - linkOffset, length: link.length() }; return result }(module, selection); if (linkRange) { selection = linkRange } else { href = "" } } const selectionHasEmbedContent = (0, _m_table_helper.hasEmbedContent)(module, selection); const formData = { href: href, text: selection && !selectionHasEmbedContent ? module.quill.getText(selection) : "", target: Object.prototype.hasOwnProperty.call(formats, "target") ? !!formats.target : true }; module.editorInstance.formDialogOption("title", _message.default.format(DIALOG_LINK_CAPTION)); const promise = module.editorInstance.showFormDialog({ formData: formData, items: getLinkFormItems(selectionHasEmbedContent) }); promise.done(((formData, event) => { if (selection && !selectionHasEmbedContent) { const text = formData.text || formData.href; const { index: index, length: length } = selection; formData.text = void 0; module.saveValueChangeEvent(event); length && module.quill.deleteText(index, length, SILENT_ACTION); module.quill.insertText(index, text, "link", formData, USER_ACTION); module.quill.setSelection(index + text.length, 0, USER_ACTION) } else { formData.text = !selection && !formData.text ? formData.href : formData.text; applyFormat(module, ["link", formData, USER_ACTION], event) } })); promise.fail((() => { module.quill.focus() })) } } function prepareImageHandler(module, imageUploadOption) { const imageUploader = new _m_image_uploader_helper.ImageUploader(module, imageUploadOption); return () => { imageUploader.render() } } function getLinkFormItems(selectionHasEmbedContent) { return [{ dataField: "href", label: { text: _message.default.format(DIALOG_LINK_FIELD_URL) } }, { dataField: "text", label: { text: _message.default.format(DIALOG_LINK_FIELD_TEXT) }, visible: !selectionHasEmbedContent }, { dataField: "target", editorType: "dxCheckBox", editorOptions: { text: _message.default.format(DIALOG_LINK_FIELD_TARGET) }, cssClass: DIALOG_LINK_FIELD_TARGET_CLASS, label: { visible: false } }] } function prepareColorClickHandler(module, name) { return () => { const formData = module.quill.getFormat(); const caption = "color" === name ? DIALOG_COLOR_CAPTION : DIALOG_BACKGROUND_CAPTION; module.editorInstance.formDialogOption("title", _message.default.format(caption)); const promise = module.editorInstance.showFormDialog({ formData: formData, items: [{ dataField: name, editorType: "dxColorView", editorOptions: { focusStateEnabled: false }, label: { visible: false } }] }); promise.done(((formData, event) => { applyFormat(module, [name, formData[name], USER_ACTION], event) })); promise.fail((() => { module.quill.focus() })) } } function prepareShortcutHandler(module, name, shortcutValue) { return _ref8 => { var _getToolbarModule2; let { event: event } = _ref8; const formats = module.quill.getFormat(); const value = formats[name] === shortcutValue ? false : shortcutValue; applyFormat(module, [name, value, USER_ACTION], event); null === (_getToolbarModule2 = getToolbarModule(module)) || void 0 === _getToolbarModule2 || _getToolbarModule2.updateFormatWidgets(true) } } function getToolbarModule(module) { return module._updateFormatWidget ? module : module.quill.getModule("toolbar") } function getDefaultClickHandler(module, name) { return _ref9 => { var _getToolbarModule3; let { event: event } = _ref9; const formats = module.quill.getFormat(); const value = formats[name]; const newValue = !((0, _type.isBoolean)(value) ? value : (0, _type.isDefined)(value)); applyFormat(module, [name, newValue, USER_ACTION], event); null === (_getToolbarModule3 = getToolbarModule(module)) || void 0 === _getToolbarModule3 || _getToolbarModule3._updateFormatWidget(name, newValue, formats) } } function prepareInsertTableHandler(module) { return () => { const formats = module.quill.getFormat(); const isTableFocused = module._tableFormats.some((format => Object.prototype.hasOwnProperty.call(formats, format))); if (isTableFocused) { module.quill.focus(); return } module.editorInstance.formDialogOption("title", _message.default.format(DIALOG_TABLE_CAPTION)); const promise = module.editorInstance.showFormDialog({ formData: { rows: 1, columns: 1 }, items: [{ dataField: "columns", editorType: "dxNumberBox", editorOptions: { min: 1 }, label: { text: _message.default.format(DIALOG_TABLE_FIELD_COLUMNS) } }, { dataField: "rows", editorType: "dxNumberBox", editorOptions: { min: 1 }, label: { text: _message.default.format(DIALOG_TABLE_FIELD_ROWS) } }] }); promise.done(((formData, event) => { module.quill.focus(); const table = module.quill.getModule("table"); if (table) { module.saveValueChangeEvent(event); const { columns: columns, rows: rows } = formData; table.insertTable(columns, rows) } })).always((() => { module.quill.focus() })) } } function getTablePropertiesFormConfig(module, _ref10) { let { $element: $element, formats: formats, tableBlot: tableBlot } = _ref10; const window = (0, _window.getWindow)(); let alignmentEditorInstance; let borderColorEditorInstance; let backgroundColorEditorInstance; const $table = $element; const { editorInstance: editorInstance } = module; const startTableWidth = parseInt(formats.tableWidth) || (0, _size.getOuterWidth)($table); const tableStyles = window.getComputedStyle($table.get(0)); const startTextAlign = "start" === tableStyles.textAlign ? "left" : tableStyles.textAlign; const formOptions = { colCount: 2, formData: { width: startTableWidth, height: (0, _type.isDefined)(formats.tableHeight) ? parseInt(formats.tableHeight) : (0, _size.getOuterHeight)($table), backgroundColor: formats.tableBackgroundColor || tableStyles.backgroundColor, borderStyle: formats.tableBorderStyle || tableStyles.borderTopStyle, borderColor: formats.tableBorderColor || tableStyles.borderTopColor, borderWidth: parseInt((0, _type.isDefined)(formats.tableBorderWidth) ? formats.tableBorderWidth : tableStyles.borderTopWidth), alignment: formats.tableAlign || startTextAlign }, items: [{ itemType: "group", caption: _message.default.format("dxHtmlEditor-border"), colCountByScreen: { xs: 2 }, colCount: 2, items: [{ dataField: "borderStyle", label: { text: _message.default.format("dxHtmlEditor-style") }, editorType: "dxSelectBox", editorOptions: { items: getBorderStylesTranslated(), valueExpr: "id", displayExpr: "value", placeholder: "Select style" } }, { dataField: "borderWidth", label: { text: _message.default.format("dxHtmlEditor-borderWidth") }, editorOptions: { placeholder: _message.default.format("dxHtmlEditor-pixels") } }, { itemType: "simple", dataField: "borderColor", label: { text: _message.default.format("dxHtmlEditor-borderColor") }, colSpan: 2, template: e => { const $content = (0, _renderer.default)("<div>"); editorInstance._createComponent($content, _color_box.default, { editAlphaChannel: true, value: e.component.option("formData").borderColor, onInitialized: e => { borderColorEditorInstance = e.component } }); return $content } }] }, { itemType: "group", caption: _message.default.format("dxHtmlEditor-dimensions"), colCountByScreen: { xs: 2 }, colCount: 2, items: [{ dataField: "width", label: { text: _message.default.format("dxHtmlEditor-width") }, editorOptions: { min: 0, placeholder: _message.default.format("dxHtmlEditor-pixels") } }, { dataField: "height", label: { text: _message.default.format("dxHtmlEditor-height") }, editorOptions: { min: 0, placeholder: _message.default.format("dxHtmlEditor-pixels") } }] }, { itemType: "group", caption: _message.default.format("dxHtmlEditor-tableBackground"), items: [{ itemType: "simple", dataField: "backgroundColor", label: { text: _message.default.format("dxHtmlEditor-borderColor") }, template: e => { const $content = (0, _renderer.default)("<div>"); editorInstance._createComponent($content, _color_box.default, { editAlphaChannel: true, value: e.component.option("formData").backgroundColor, onInitialized: e => { backgroundColorEditorInstance = e.component } }); return $content } }] }, { itemType: "group", caption: _message.default.format("dxHtmlEditor-alignment"), items: [{ itemType: "simple", label: { text: _message.default.format("dxHtmlEditor-horizontal") }, template: () => { const $content = (0, _renderer.default)("<div>"); editorInstance._createComponent($content, _button_group.default, { items: [{ value: "left", icon: "alignleft" }, { value: "center", icon: "aligncenter" }, { value: "right", icon: "alignright" }, { value: "justify", icon: "alignjustify" }], keyExpr: "value", selectedItemKeys: [startTextAlign], onInitialized: e => { alignmentEditorInstance = e.component } }); return $content } }] }], showColonAfterLabel: true, labelLocation: "top", minColWidth: 400 }; return { formOptions: formOptions, applyHandler: formInstance => { const formData = formInstance.option("formData"); const newWidth = formData.width === startTableWidth ? void 0 : formData.width; const newHeight = formData.height; ! function(module, _ref12) { let { $table: $table, newHeight: newHeight, newWidth: newWidth, tableBlot: tableBlot } = _ref12; if ((0, _type.isDefined)(newWidth)) { const autoWidthColumns = (0, _m_table_helper.getAutoSizedElements)($table); if (autoWidthColumns.length > 0) { module.editorInstance.format("tableWidth", `${newWidth}px`) } else { const $columns = (0, _m_table_helper.getColumnElements)($table); const oldTableWidth = (0, _size.getOuterWidth)($table); (0, _m_table_helper.unfixTableWidth)($table, { tableBlot: tableBlot }); (0, _iterator.each)($columns, ((i, element) => { const $element = (0, _renderer.default)(element); const newElementWidth = newWidth / oldTableWidth * (0, _size.getOuterWidth)($element); const $lineElements = (0, _m_table_helper.getLineElements)($table, $element.index(), "horizontal"); (0, _m_table_helper.setLineElementsFormat)(module, { elements: $lineElements, property: "width", value: newElementWidth }) })) } } const autoHeightRows = (0, _m_table_helper.getAutoSizedElements)($table, "vertical"); if ((null === autoHeightRows || void 0 === autoHeightRows ? void 0 : autoHeightRows.length) > 0) { tableBlot.format("tableHeight", `${newHeight}px`) } else { const $rows = (0, _m_table_helper.getRowElements)($table); const oldTableHeight = (0, _size.getOuterHeight)($table); (0, _iterator.each)($rows, ((i, element) => { const $element = (0, _renderer.default)(element); const newElementHeight = newHeight / oldTableHeight * (0, _size.getOuterHeight)($element); const $lineElements = (0, _m_table_helper.getLineElements)($table, i, "vertical"); (0, _m_table_helper.setLineElementsFormat)(module, { elements: $lineElements, property: "height", value: newElementHeight }) })) } }(module, { $table: $table, newHeight: newHeight, newWidth: newWidth, tableBlot: tableBlot }); module.editorInstance.format("tableBorderStyle", formData.borderStyle); module.editorInstance.format("tableBorderWidth", `${formData.borderWidth}px`); module.editorInstance.format("tableBorderColor", borderColorEditorInstance.option("value")); module.editorInstance.format("tableBackgroundColor", backgroundColorEditorInstance.option("value")); module.editorInstance.format("tableTextAlign", alignmentEditorInstance.option("selectedItemKeys")[0]) } } } function getCellPropertiesFormConfig(module, _ref11) { let { $element: $element, formats: formats, tableBlot: tableBlot, rowBlot: rowBlot } = _ref11; const window = (0, _window.getWindow)(); let alignmentEditorInstance; let verticalAlignmentEditorInstance; let borderColorEditorInstance; let backgroundColorEditorInstance; const $cell = $element; const startCellWidth = (0, _type.isDefined)(formats.cellWidth) ? parseInt(formats.cellWidth) : (0, _size.getOuterWidth)($cell); const { editorInstance: editorInstance } = module; const cellStyles = window.getComputedStyle($cell.get(0)); const startTextAlign = "start" === cellStyles.textAlign ? "left" : cellStyles.textAlign; const formOptions = { colCount: 2, formData: { width: startCellWidth, height: (0, _type.isDefined)(formats.cellHeight) ? parseInt(formats.cellHeight) : (0, _size.getOuterHeight)($cell), backgroundColor: getColorFromFormat(formats.cellBackgroundColor) || cellStyles.backgroundColor, borderStyle: formats.cellBorderStyle || cellStyles.borderTopStyle, borderColor: getColorFromFormat(formats.cellBorderColor) || cellStyles.borderTopColor, borderWidth: parseInt((0, _type.isDefined)(formats.cellBorderWidth) ? formats.cellBorderWidth : cellStyles.borderTopWidth), alignment: formats.cellTextAlign || startTextAlign, verticalAlignment: formats.cellVerticalAlign || cellStyles.verticalAlign, verticalPadding: parseInt((0, _type.isDefined)(formats.cellPaddingTop) ? formats.cellPaddingTop : cellStyles.paddingTop), horizontalPadding: parseInt((0, _type.isDefined)(formats.cellPaddingLeft) ? formats.cellPaddingLeft : cellStyles.paddingLeft) }, items: [{ itemType: "group", caption: _message.default.format("dxHtmlEditor-border"), colCountByScreen: { xs: 2 }, colCount: 2, items: [{ dataField: "borderStyle", label: { text: _message.default.format("dxHtmlEditor-style") }, editorType: "dxSelectBox", editorOptions: { items: getBorderStylesTranslated(), valueExpr: "id", displayExpr: "value" } }, { dataField: "borderWidth", label: { text: _message.default.format("dxHtmlEditor-borderWidth") }, editorOptions: { placeholder: _message.default.format("dxHtmlEditor-pixels") } }, { itemType: "simple", dataField: "borderColor", colSpan: 2, label: { text: _message.default.format("dxHtmlEditor-borderColor") }, template: e => { const $content = (0, _renderer.default)("<div>"); editorInstance._createComponent($content, _color_box.default, { editAlphaChannel: true, value: e.component.option("formData").borderColor, onInitialized: e => { borderColorEditorInstance = e.component } }); return $content } }] }, { itemType: "group", caption: _message.default.format("dxHtmlEditor-dimensions"), colCount: 2, colCountByScreen: { xs: 2 }, items: [{ dataField: "width", label: { text: _message.default.format("dxHtmlEditor-width") }, editorOptions: { min: 0, placeholder: _message.default.format("dxHtmlEditor-pixels") } }, { dataField: "height", label: { text: _message.default.format("dxHtmlEditor-height") }, editorOptions: { min: 0, placeholder: _message.default.format("dxHtmlEditor-pixels") } }, { dataField: "verticalPadding", label: { text: _message.default.format("dxHtmlEditor-paddingVertical") }, editorOptions: { placeholder: _message.default.format("dxHtmlEditor-pixels") } }, { label: { text: _message.default.format("dxHtmlEditor-paddingHorizontal") }, dataField: "horizontalPadding", editorOptions: { placeholder: _message.default.format("dxHtmlEditor-pixels") } }] }, { itemType: "group", caption: _message.default.format("dxHtmlEditor-tableBackground"), items: [{ itemType: "simple", dataField: "backgroundColor", label: { text: _message.default.format("dxHtmlEditor-borderColor") }, template: e => { const $content = (0, _renderer.default)("<div>"); editorInstance._createComponent($content, _color_box.default, { editAlphaChannel: true, value: e.component.option("formData").backgroundColor, onInitialized: e => { backgroundColorEditorInstance = e.component } }); return $content } }] }, { itemType: "group", caption: _message.default.format("dxHtmlEditor-alignment"), colCount: 2, items: [{ itemType: "simple", label: { text: _message.default.format("dxHtmlEditor-horizontal") }, template: () => { const $content = (0, _renderer.default)("<div>"); editorInstance._createComponent($content, _button_group.default, { items: [{ value: "left", icon: "alignleft" }, { value: "center", icon: "aligncenter" }, { value: "right", icon: "alignright" }, { value: "justify", icon: "alignjustify" }], keyExpr: "value", selectedItemKeys: [startTextAlign], onInitialized: e => { alignmentEditorInstance = e.component } }); return $content } }, { itemType: "simple", label: { text: _message.default.format("dxHtmlEditor-vertical") }, template: () => { const $content = (0, _renderer.default)("<div>"); editorInstance._createComponent($content, _button_group.default, { items: [{ value: "top", icon: "verticalaligntop" }, { value: "middle", icon: "verticalaligncenter" }, { value: "bottom", icon: "verticalalignbottom" }], keyExpr: "value", selectedItemKeys: [cellStyles.verticalAlign], onInitialized: e => { verticalAlignmentEditorInstance = e.component } }); return $content } }] }], showColonAfterLabel: true, labelLocation: "top", minColWidth: 400 }; return { formOptions: formOptions, applyHandler: formInstance => { const formData = formInstance.option("formData"); const newWidth = formData.width === parseInt(startCellWidth) ? void 0 : formData.width; const newHeight = formData.height; ! function(module, _ref13) { let { $cell: $cell, newHeight: newHeight, newWidth: newWidth, tableBlot: tableBlot, rowBlot: rowBlot } = _ref13; const $table = (0, _renderer.default)($cell.closest("table")); if ((0, _type.isDefined)(newWidth)) { const index = (0, _renderer.default)($cell).index(); let $verticalCells = (0, _m_table_helper.getLineElements)($table, index); const widthDiff = newWidth - (0, _size.getOuterWidth)($cell); const tableWidth = (0, _size.getOuterWidth)($table); if (newWidth > tableWidth) { (0, _m_table_helper.unfixTableWidth)($table, { tableBlot: tableBlot }) }(0, _m_table_helper.setLineElementsFormat)(module, { elements: $verticalCells, property: "width", value: newWidth }); const $nextColumnCell = $cell.next(); const shouldUpdateNearestColumnWidth = 0 === (0, _m_table_helper.getAutoSizedElements)($table).length; if (shouldUpdateNearestColumnWidth) { (0, _m_table_helper.unfixTableWidth)($table, { tableBlot: tableBlot }); if (1 === $nextColumnCell.length) { $verticalCells = (0, _m_table_helper.getLineElements)($table, index + 1); const nextColumnWidth = (0, _size.getOuterWidth)($verticalCells.eq(0)) - widthDiff; (0, _m_table_helper.setLineElementsFormat)(module, { elements: $verticalCells, property: "width", value: Math.max(nextColumnWidth, 0) }) } else { const $prevColumnCell = $cell.prev(); if (1 === $prevColumnCell.length) { $verticalCells = (0, _m_table_helper.getLineElements)($table, index - 1); const prevColumnWidth = (0, _size.getOuterWidth)($verticalCells.eq(0)) - widthDiff; (0, _m_table_helper.setLineElementsFormat)(module, { elements: $verticalCells, property: "width", value: Math.max(prevColumnWidth, 0) }) } } } } rowBlot.children.forEach((rowCell => { rowCell.format("cellHeight", `${newHeight}px`) })); const autoHeightRows = (0, _m_table_helper.getAutoSizedElements)($table, "vertical"); if (0 === autoHeightRows.length) { $table.css("height", "auto") } }(module, { $cell: $cell, newHeight: newHeight, newWidth: newWidth, tableBlot: tableBlot, rowBlot: rowBlot }); module.editorInstance.format("cellBorderWidth", `${formData.borderWidth}px`); module.editorInstance.format("cellBorderColor", borderColorEditorInstance.option("value")); module.editorInstance.format("cellBorderStyle", formData.borderStyle); module.editorInstance.format("cellBackgroundColor", backgroundColorEditorInstance.option("value")); module.editorInstance.format("cellTextAlign", alignmentEditorInstance.option("selectedItemKeys")[0]); module.editorInstance.format("cellVerticalAlign", verticalAlignmentEditorInstance.option("selectedItemKeys")[0]); module.editorInstance.format("cellPaddingLeft", `${formData.horizontalPadding}px`); module.editorInstance.format("cellPaddingRight", `${formData.horizontalPadding}px`); module.editorInstance.format("cellPaddingTop", `${formData.verticalPadding}px`); module.editorInstance.format("cellPaddingBottom", `${formData.verticalPadding}px`) } } } }, 59133: /*!*********************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/ui/html_editor/utils/small_screen.js ***! \*********************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.isSmallScreen = void 0; var _devices = (e = __webpack_require__( /*! ../../../../core/devices */ 65951), e && e.__esModule ? e : { default: e }); var e; var _window = __webpack_require__( /*! ../../../../core/utils/window */ 3104); exports.isSmallScreen = () => { const screenFactor = (0, _window.hasWindow)() ? (0, _window.getCurrentScreenFactor)() : null; return "phone" === _devices.default.real().deviceType || "xs" === screenFactor } }, 83706: /*!********************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/ui/informer/informer.js ***! \********************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = exports.INFORMER_CLASS = void 0; var _component_registrator = _interopRequireDefault(__webpack_require__( /*! ../../../core/component_registrator */ 92848)); var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../../core/renderer */ 64553)); var _m_icon = __webpack_require__( /*! ../../core/utils/m_icon */ 42463); var _widget = _interopRequireDefault(__webpack_require__( /*! ../../core/widget/widget */ 89275)); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } function _extends() { return _extends = Object.assign ? Object.assign.bind() : function(n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) { ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]) } } return n }, _extends.apply(null, arguments) } const INFORMER_CLASS = exports.INFORMER_CLASS = "dx-informer"; class Informer extends _widget.default { _getDefaultOptions() { return _extends({}, super._getDefaultOptions(), { contentAlignment: "center", icon: "", showBackground: true, text: "", type: "error" }) } _initMarkup() { const { showBackground: showBackground } = this.option(); this.$element().addClass(INFORMER_CLASS); this.$element().toggleClass("dx-informer-bg", showBackground); this._setAlignmentClass(); this._setTypeClass(); super._initMarkup(); this._renderIcon(); this._renderText() } _setAlignmentClass() { this.$element().removeClass("dx-informer-alignment-start").removeClass("dx-informer-alignment-center").removeClass("dx-informer-alignment-end"); const { contentAlignment: contentAlignment } = this.option(); switch (contentAlignment) { case "start": this.$element().addClass("dx-informer-alignment-start"); break; case "end": this.$element().addClass("dx-informer-alignment-end"); break; default: this.$element().addClass("dx-informer-alignment-center") } } _setTypeClass() { this.$element().removeClass("dx-informer-error").removeClass("dx-informer-info"); const { type: type } = this.option(); if ("info" === type) { this.$element().addClass("dx-informer-info") } else { this.$element().addClass("dx-informer-error") } } _renderIcon() { var _this$_$icon; null === (_this$_$icon = this._$icon) || void 0 === _this$_$icon || _this$_$icon.remove(); const { icon: icon } = this.option(); const $icon = (0, _m_icon.getImageContainer)(icon); if (!$icon) { return } this._$icon = (0, _renderer.default)("<div>").addClass("dx-informer-icon").prependTo(this.$element()).append($icon) } _renderText() { const { text: text = "" } = this.option(); this._$text = (0, _renderer.default)("<div>").addClass("dx-informer-text").appendTo(this.$element()).text(text) } _updateText() { const { text: text = "" } = this.option(); this._$text.text(text) } _optionChanged(args) { const { name: name, value: value } = args; switch (name) { case "icon": this._renderIcon(); break; case "contentAlignment": this._setAlignmentClass(); break; case "showBackground": this.$element().toggleClass("dx-informer-bg", value); break; case "text": this._updateText(); break; case "type": this._setTypeClass(); break; default: super._optionChanged(args) } } }(0, _component_registrator.default)("dxInformer", Informer); exports.default = Informer }, 69294: /*!**************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/ui/list/m_item.js ***! \**************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../../core/renderer */ 64553)); var _item = _interopRequireDefault(__webpack_require__( /*! ../../ui/collection/item */ 30845)); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } class ListItem extends _item.default { _renderWatchers() { super._renderWatchers(); this._startWatcher("badge", this._renderBadge.bind(this)); this._startWatcher("showChevron", this._renderShowChevron.bind(this)) } _renderBadge(badge) { this._$element.children(".dx-list-item-badge-container").remove(); if (!badge) { return } const $badge = (0, _renderer.default)("<div>").addClass("dx-list-item-badge-container").append((0, _renderer.default)("<div>").addClass("dx-list-item-badge").addClass("dx-badge").text(badge)); const $chevron = this._$element.children(".dx-list-item-chevron-container").first(); $chevron.length > 0 ? $badge.insertBefore($chevron) : $badge.appendTo(this._$element) } _renderShowChevron(showChevron) { this._$element.children(".dx-list-item-chevron-container").remove(); if (!showChevron) { return } const $chevronContainer = (0, _renderer.default)("<div>").addClass("dx-list-item-chevron-container"); const $chevron = (0, _renderer.default)("<div>").addClass("dx-list-item-chevron"); $chevronContainer.append($chevron).appendTo(this._$element) } } exports.default = ListItem }, 26031: /*!*******************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/ui/list/m_list.base.js ***! \*******************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.ListBase = void 0; exports.setScrollView = function(value) { _scrollView = value }; var _animation = __webpack_require__( /*! ../../../common/core/animation */ 16826); var _click = __webpack_require__( /*! ../../../common/core/events/click */ 64044); var _events_engine = _interopRequireDefault(__webpack_require__( /*! ../../../common/core/events/core/events_engine */ 92774)); var _swipe = __webpack_require__( /*! ../../../common/core/events/swipe */ 80250); var _utils = __webpack_require__( /*! ../../../common/core/events/utils */ 98834); var _message = _interopRequireDefault(__webpack_require__( /*! ../../../common/core/localization/message */ 4671)); var _devices = _interopRequireDefault(__webpack_require__( /*! ../../../core/devices */ 65951)); var _element = __webpack_require__( /*! ../../../core/element */ 61404); var _guid = _interopRequireDefault(__webpack_require__( /*! ../../../core/guid */ 19427)); var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../../core/renderer */ 64553)); var _bindable_template = __webpack_require__( /*! ../../../core/templates/bindable_template */ 27286); var _common = __webpack_require__( /*! ../../../core/utils/common */ 17781); var _data = __webpack_require__( /*! ../../../core/utils/data */ 31e3); var _deferred = __webpack_require__( /*! ../../../core/utils/deferred */ 87739); var _extend = __webpack_require__( /*! ../../../core/utils/extend */ 52576); var _icon = __webpack_require__( /*! ../../../core/utils/icon */ 69629); var _iterator = __webpack_require__( /*! ../../../core/utils/iterator */ 21274); var _size = __webpack_require__( /*! ../../../core/utils/size */ 57653); var _type = __webpack_require__( /*! ../../../core/utils/type */ 11528); var _window = __webpack_require__( /*! ../../../core/utils/window */ 3104); var _button = _interopRequireDefault(__webpack_require__( /*! ../../../ui/button */ 64973)); var _scroll_view = _interopRequireDefault(__webpack_require__( /*! ../../../ui/scroll_view */ 91374)); var _themes = __webpack_require__( /*! ../../../ui/themes */ 52071); var _utils2 = __webpack_require__( /*! ../../../ui/widget/utils.ink_ripple */ 63322); var _m_support = _interopRequireDefault(__webpack_require__( /*! ../../core/utils/m_support */ 85991)); var _m_collection_widget = _interopRequireDefault(__webpack_require__( /*! ../../ui/collection/m_collection_widget.live_update */ 68005)); var _m_scrollable = __webpack_require__( /*! ../../ui/scroll_view/m_scrollable.device */ 65180); var _get_element_style = __webpack_require__( /*! ../../ui/scroll_view/utils/get_element_style */ 72840); var _m_grouped_data_converter_mixin = _interopRequireDefault(__webpack_require__( /*! ../../ui/shared/m_grouped_data_converter_mixin */ 59803)); var _m_item = _interopRequireDefault(__webpack_require__( /*! ./m_item */ 69294)); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } function _extends() { return _extends = Object.assign ? Object.assign.bind() : function(n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) { ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]) } } return n }, _extends.apply(null, arguments) } const groupItemsGetter = (0, _data.compileGetter)("items"); let _scrollView; class ListBase extends _m_collection_widget.default { _supportedKeys() { const that = this; const moveFocusPerPage = function(direction) { let $item = getEdgeVisibleItem(direction); const { focusedElement: focusedElement } = that.option(); const isFocusedItem = $item.is(focusedElement); if (isFocusedItem) { ! function($item, direction) { let resultPosition = $item.position().top; if ("prev" === direction) { resultPosition = $item.position().top - (0, _size.getHeight)(that.$element()) + (0, _size.getOuterHeight)($item) } that.scrollTo(resultPosition) }($item, direction); $item = getEdgeVisibleItem(direction) } that.option("focusedElement", (0, _element.getPublicElement)($item)); that.scrollToItem($item) }; function getEdgeVisibleItem(direction) { const scrollTop = that.scrollTop(); const containerHeight = (0, _size.getHeight)(that.$element()); const { focusedElement: focusedElement } = that.option(); let $item = (0, _renderer.default)(focusedElement); let isItemVisible = true; if (!$item.length) { return (0, _renderer.default)() } while (isItemVisible) { const $nextItem = $item[direction](); if (!$nextItem.length) { break } const nextItemLocation = $nextItem.position().top + (0, _size.getOuterHeight)($nextItem) / 2; isItemVisible = nextItemLocation < containerHeight + scrollTop && nextItemLocation > scrollTop; if (isItemVisible) { $item = $nextItem } } return $item } return _extends({}, super._supportedKeys(), { leftArrow: _common.noop, rightArrow: _common.noop, pageUp() { moveFocusPerPage("prev"); return false }, pageDown() { moveFocusPerPage("next"); return false } }) } _getDefaultOptions() { return _extends({}, super._getDefaultOptions(), { hoverStateEnabled: true, pullRefreshEnabled: false, scrollingEnabled: true, selectByClick: true, showScrollbar: "onScroll", useNativeScrolling: true, bounceEnabled: true, scrollByContent: true, scrollByThumb: false, pullingDownText: _message.default.format("dxList-pullingDownText"), pulledDownText: _message.default.format("dxList-pulledDownText"), refreshingText: _message.default.format("dxList-refreshingText"), pageLoadingText: _message.default.format("dxList-pageLoadingText"), onScroll: null, onPullRefresh: null, onPageLoading: null, pageLoadMode: "scrollBottom", nextButtonText: _message.default.format("dxList-nextButtonText"), onItemSwipe: null, grouped: false, onGroupRendered: null, collapsibleGroups: false, groupTemplate: "group", indicateLoading: true, activeStateEnabled: true, _itemAttributes: { role: "option" }, useInkRipple: false, wrapItemText: false, _swipeEnabled: true, showChevronExpr: data => null === data || void 0 === data ? void 0 : data.showChevron, badgeExpr: data => null === data || void 0 === data ? void 0 : data.badge, _onItemsRendered: () => {} }) } _defaultOptionsRules() { const themeName = (0, _themes.current)(); return super._defaultOptionsRules().concat((0, _m_scrollable.deviceDependentOptions)(), [{ device: () => !_m_support.default.nativeScrolling, options: { useNativeScrolling: false } }, { device: device => !_m_support.default.nativeScrolling && !_devices.default.isSimulator() && "desktop" === _devices.default.real().deviceType && "generic" === device.platform, options: { showScrollbar: "onHover", pageLoadMode: "nextButton" } }, { device: () => "desktop" === _devices.default.real().deviceType && !_devices.default.isSimulator(), options: { focusStateEnabled: true } }, { device: () => (0, _themes.isMaterial)(themeName), options: { useInkRipple: true } }, { device: () => (0, _themes.isMaterialBased)(themeName), options: { pullingDownText: "", pulledDownText: "", refreshingText: "", pageLoadingText: "" } }]) } _visibilityChanged(visible) { if (visible) { this._updateLoadingState(true) } } _itemClass() { return "dx-list-item" } _itemDataKey() { return "dxListItemData" } _itemContainer() { return this._$container } _getItemsContainer() { return this._$listContainer } _cleanItemContainer() { super._cleanItemContainer(); const listContainer = this._getItemsContainer(); (0, _renderer.default)(listContainer).empty(); listContainer.appendTo(this._$container) } _saveSelectionChangeEvent(e) { this._selectionChangeEventInstance = e } _getSelectionChangeEvent() { return this._selectionChangeEventInstance } _refreshItemElements() { const { grouped: grouped } = this.option(); const $itemsContainer = this._getItemsContainer(); if (grouped) { this._itemElementsCache = $itemsContainer.children(".dx-list-group").children(".dx-list-group-body").children(this._itemSelector()) } else { this._itemElementsCache = $itemsContainer.children(this._itemSelector()) } } _getItemAndHeaderElements() { const itemSelector = `> .dx-list-group-body > ${this._itemSelector()}`; const itemAndHeaderSelector = `${itemSelector}, > .dx-list-group-header`; const $listGroup = this._getItemsContainer().children(".dx-list-group"); const $items = $listGroup.find(itemAndHeaderSelector); return $items } _getAvailableItems($itemElements) { const { collapsibleGroups: collapsibleGroups } = this.option(); if (collapsibleGroups) { const $elements = this._getItemAndHeaderElements(); const $visibleItems = $elements.filter(((_, element) => { if ((0, _renderer.default)(element).hasClass("dx-list-group-header")) { return true } return !(0, _renderer.default)(element).closest(".dx-list-group").hasClass("dx-list-group-collapsed") })); return $visibleItems } return super._getAvailableItems($itemElements) } _modifyByChanges() { super._modifyByChanges.apply(this, arguments); this._refreshItemElements(); this._updateLoadingState(true) } reorderItem(itemElement, toItemElement) { const promise = super.reorderItem(itemElement, toItemElement); return promise.done((function() { this._refreshItemElements() })) } deleteItem(itemElement) { const promise = super.deleteItem(itemElement); return promise.done((function() { this._refreshItemElements() })) } _itemElements() { return this._itemElementsCache } _itemSelectHandler(e) { const { selectionMode: selectionMode } = this.option(); const isSingleSelectedItemClicked = "single" === selectionMode && this.isItemSelected(e.currentTarget); if (isSingleSelectedItemClicked) { return } const isSelectionControlClicked = (0, _renderer.default)(e.target).closest(".dx-list-select-checkbox").length || (0, _renderer.default)(e.target).closest(".dx-list-select-radiobutton").length; if (isSelectionControlClicked) { this.option("focusedElement", e.currentTarget) } return super._itemSelectHandler(e, isSelectionControlClicked) } _allowDynamicItemsAppend() { return true } _updateActiveStateUnit() { const { collapsibleGroups: collapsibleGroups } = this.option(); const selectors = [".dx-list-item", ".dx-list-select-all"]; if (collapsibleGroups) { selectors.push(".dx-list-group-header") } this._activeStateUnit = selectors.join(",") } _init() { super._init(); this._updateActiveStateUnit(); this._dataController.resetDataSourcePageIndex(); this._$container = this.$element(); this._$listContainer = (0, _renderer.default)("<div>").addClass("dx-list-items"); this._initScrollView(); this._feedbackShowTimeout = 70; this._createGroupRenderAction() } _scrollBottomMode() { const { pageLoadMode: pageLoadMode } = this.option(); return "scrollBottom" === pageLoadMode } _nextButtonMode() { const { pageLoadMode: pageLoadMode } = this.option(); return "nextButton" === pageLoadMode } _dataSourceOptions() { const scrollBottom = this._scrollBottomMode(); const nextButton = this._nextButtonMode(); return (0, _extend.extend)(super._dataSourceOptions(), { paginate: (0, _common.ensureDefined)(scrollBottom || nextButton, true) }) } _getGroupedOption() { return this.option("grouped") } _getGroupContainerByIndex(groupIndex) { return this._getItemsContainer().find(".dx-list-group").eq(groupIndex).find(".dx-list-group-body") } _dataSourceFromUrlLoadMode() { return "raw" } _initScrollView() { const scrollingEnabled = this.option("scrollingEnabled"); const pullRefreshEnabled = scrollingEnabled && this.option("pullRefreshEnabled"); const autoPagingEnabled = scrollingEnabled && this._scrollBottomMode() && !!this._dataController.getDataSource(); this._scrollView = this._createComponent(this.$element(), _scrollView || _scroll_view.default, { height: this.option("height"), width: this.option("width"), disabled: this.option("disabled") || !scrollingEnabled, onScroll: this._scrollHandler.bind(this), onPullDown: pullRefreshEnabled ? this._pullDownHandler.bind(this) : null, onReachBottom: autoPagingEnabled ? this._scrollBottomHandler.bind(this) : null, showScrollbar: this.option("showScrollbar"), useNative: this.option("useNativeScrolling"), bounceEnabled: this.option("bounceEnabled"), scrollByContent: this.option("scrollByContent"), scrollByThumb: this.option("scrollByThumb"), pullingDownText: this.option("pullingDownText"), pulledDownText: this.option("pulledDownText"), refreshingText: this.option("refreshingText"), reachBottomText: this.option("pageLoadingText"), useKeyboard: false }); this._$container = (0, _renderer.default)(this._scrollView.content()); this._$listContainer.appendTo(this._$container); this._toggleWrapItemText(this.option("wrapItemText")); this._createScrollViewActions() } _toggleWrapItemText(value) { this._$listContainer.toggleClass("dx-wrap-item-text", value) } _createScrollViewActions() { this._scrollAction = this._createActionByOption("onScroll"); this._pullRefreshAction = this._createActionByOption("onPullRefresh"); this._pageLoadingAction = this._createActionByOption("onPageLoading") } _scrollHandler(e) { var _this$_scrollAction; null === (_this$_scrollAction = this._scrollAction) || void 0 === _this$_scrollAction || _this$_scrollAction.call(this, e) } _initTemplates() { this._templateManager.addDefaultTemplates({ group: new _bindable_template.BindableTemplate((($container, data) => { if ((0, _type.isPlainObject)(data)) { if (data.key) { $container.text(data.key) } } else { $container.text(String(data)) } }), ["key"], this.option("integrationOptions.watchMethod")) }); super._initTemplates() } _prepareDefaultItemTemplate(data, $container) { super._prepareDefaultItemTemplate(data, $container); if (data.icon) { const $icon = (0, _icon.getImageContainer)(data.icon).addClass("dx-list-item-icon"); const $iconContainer = (0, _renderer.default)("<div>").addClass("dx-list-item-icon-container"); $iconContainer.append($icon); $container.prepend($iconContainer) } } _getBindableFields() { return ["text", "html", "icon"] } _updateLoadingState(tryLoadMore) { const dataController = this._dataController; const shouldLoadNextPage = this._scrollBottomMode() && tryLoadMore && !dataController.isLoading() && !this._isLastPage(); if (this._shouldContinueLoading(shouldLoadNextPage)) { this._infiniteDataLoading() } else { this._scrollView.release(!shouldLoadNextPage && !dataController.isLoading()); this._toggleNextButton(this._shouldRenderNextButton() && !this._isLastPage()); this._loadIndicationSuppressed(false) } } _shouldRenderNextButton() { return this._nextButtonMode() && this._dataController.isLoaded() } _isDataSourceFirstLoadCompleted(newValue) { if ((0, _type.isDefined)(newValue)) { this._isFirstLoadCompleted = newValue } return this._isFirstLoadCompleted } _dataSourceLoadingChangedHandler(isLoading) { if (this._loadIndicationSuppressed()) { return } if (isLoading && this.option("indicateLoading")) { this._showLoadingIndicatorTimer = setTimeout((() => { const isEmpty = !this._itemElements().length; const shouldIndicateLoading = !isEmpty || this._isDataSourceFirstLoadCompleted(); if (shouldIndicateLoading) { var _this$_scrollView; null === (_this$_scrollView = this._scrollView) || void 0 === _this$_scrollView || _this$_scrollView.startLoading() } })) } else { var _this$_scrollView2; clearTimeout(this._showLoadingIndicatorTimer); null === (_this$_scrollView2 = this._scrollView) || void 0 === _this$_scrollView2 || _this$_scrollView2.finishLoading() } if (!isLoading) { this._isDataSourceFirstLoadCompleted(false) } } _dataSourceChangedHandler() { if (!this._shouldAppendItems() && (0, _window.hasWindow)()) { var _this$_scrollView3; null === (_this$_scrollView3 = this._scrollView) || void 0 === _this$_scrollView3 || _this$_scrollView3.scrollTo(0) } super._dataSourceChangedHandler.apply(this, arguments); this._isDataSourceFirstLoadCompleted(true) } _refreshContent() { this._prepareContent(); this._fireContentReadyAction() } _hideLoadingIfLoadIndicationOff() { if (!this.option("indicateLoading")) { this._dataSourceLoadingChangedHandler(false) } } _loadIndicationSuppressed(value) { if (!arguments.length) { return this._isLoadIndicationSuppressed } this._isLoadIndicationSuppressed = value } _scrollViewIsFull() { const scrollView = this._scrollView; return !scrollView || (0, _size.getHeight)(scrollView.content()) > (0, _size.getHeight)(scrollView.container()) } _pullDownHandler(e) { var _this$_pullRefreshAct; null === (_this$_pullRefreshAct = this._pullRefreshAction) || void 0 === _this$_pullRefreshAct || _this$_pullRefreshAct.call(this, e); const dataController = this._dataController; if (dataController.getDataSource() && !dataController.isLoading()) { this._clearSelectedItems(); dataController.pageIndex(0); dataController.reload() } else { this._updateLoadingState() } } _shouldContinueLoading(shouldLoadNextPage) { var _this$_scrollView$scr; const isBottomReached = (0, _size.getHeight)(this._scrollView.content()) - (0, _size.getHeight)(this._scrollView.container()) < ((null === (_this$_scrollView$scr = this._scrollView.scrollOffset()) || void 0 === _this$_scrollView$scr ? void 0 : _this$_scrollView$scr.top) ?? 0); return shouldLoadNextPage && (!this._scrollViewIsFull() || isBottomReached) } _infiniteDataLoading() { const isElementVisible = this.$element().is(":visible"); if (isElementVisible) { clearTimeout(this._loadNextPageTimer); this._loadNextPageTimer = setTimeout((() => { this._loadNextPage() })) } } _scrollBottomHandler(e) { var _this$_pageLoadingAct; null === (_this$_pageLoadingAct = this._pageLoadingAction) || void 0 === _this$_pageLoadingAct || _this$_pageLoadingAct.call(this, e); const dataController = this._dataController; if (!dataController.isLoading() && !this._isLastPage()) { this._loadNextPage() } else { this._updateLoadingState() } } _renderItems(items) { if (this.option("grouped")) { (0, _iterator.each)(items, this._renderGroup.bind(this)); this._attachGroupCollapseEvent(); this._renderEmptyMessage(); if ((0, _themes.isMaterial)()) { this.attachGroupHeaderInkRippleEvents() } } else { super._renderItems.apply(this, arguments) } this._refreshItemElements(); this._updateLoadingState(true) } _postProcessRenderItems() { const { _onItemsRendered: onItemsRendered } = this.option(); null === onItemsRendered || void 0 === onItemsRendered || onItemsRendered() } _attachGroupCollapseEvent() { const { collapsibleGroups: collapsibleGroups } = this.option(); const eventNameClick = (0, _utils.addNamespace)(_click.name, this.NAME); const $element = this.$element(); $element.toggleClass("dx-list-collapsible-groups", collapsibleGroups); _events_engine.default.off($element, eventNameClick, ".dx-list-group-header"); if (collapsibleGroups) { _events_engine.default.on($element, eventNameClick, ".dx-list-group-header", (e => { this._processGroupCollapse(e) })) } } _processGroupCollapse(e) { const action = this._createAction((e => { const { focusStateEnabled: focusStateEnabled } = this.option(); const $group = (0, _renderer.default)(e.event.currentTarget).parent(); this._collapseGroupHandler($group); if (focusStateEnabled) { const groupHeader = (0, _element.getPublicElement)($group.find(".dx-list-group-header")); this.option({ focusedElement: groupHeader }) } }), { validatingTargetName: "element" }); action({ event: e }) } _enterKeyHandler(e) { const { collapsibleGroups: collapsibleGroups, focusedElement: focusedElement } = this.option(); const isGroupHeader = (0, _renderer.default)(focusedElement).hasClass("dx-list-group-header"); if (collapsibleGroups && isGroupHeader) { const params = this._getHandlerExtendedParams(e, (0, _renderer.default)(focusedElement)); this._processGroupCollapse(params); return } super._enterKeyHandler(e) } _collapseGroupHandler($group, toggle) { const deferred = (0, _deferred.Deferred)(); const $groupHeader = $group.children(".dx-list-group-header"); const collapsed = $group.hasClass("dx-list-group-collapsed"); this._updateGroupHeaderAriaExpanded($groupHeader, collapsed); if (collapsed === toggle) { return deferred.resolve() } const $groupBody = $group.children(".dx-list-group-body"); const startHeight = (0, _size.getOuterHeight)($groupBody); let endHeight = 0; if (collapsed) { (0, _size.setHeight)($groupBody, "auto"); endHeight = (0, _size.getOuterHeight)($groupBody) } $group.toggleClass("dx-list-group-collapsed", toggle); if (_animation.fx.isAnimating($groupBody)) { _animation.fx.stop($groupBody, false) } _animation.fx.animate($groupBody, { type: "custom", from: { height: startHeight }, to: { height: endHeight }, duration: 200, complete: function() { this.updateDimensions(); this._updateLoadingState(true); deferred.resolve() }.bind(this) }); return deferred.promise() } _dataSourceLoadErrorHandler() { this._forgetNextPageLoading(); if (this._initialized) { this._renderEmptyMessage(); this._updateLoadingState() } } _initMarkup() { this._itemElementsCache = (0, _renderer.default)(); this.$element().addClass("dx-list"); super._initMarkup(); this.option("useInkRipple") && this._renderInkRipple(); const elementAria = { role: "group", roledescription: _message.default.format("dxList-ariaRoleDescription") }; this.setAria(elementAria, this.$element()); this.setAria({ role: "application" }, this._focusTarget()); this._setListAria() } _setListAria() { const { items: items, allowItemDeleting: allowItemDeleting, collapsibleGroups: collapsibleGroups } = this.option(); const label = allowItemDeleting ? _message.default.format("dxList-listAriaLabel-deletable") : _message.default.format("dxList-listAriaLabel"); const shouldSetAria = (null === items || void 0 === items ? void 0 : items.length) && !collapsibleGroups; const listArea = { role: shouldSetAria ? "listbox" : void 0, label: shouldSetAria ? label : void 0 }; this.setAria(listArea, this._$listContainer) } _focusTarget() { return this._itemContainer() } _renderInkRipple() { this._inkRipple = (0, _utils2.render)() } _toggleActiveState($element, value, e) { super._toggleActiveState.apply(this, arguments); const that = this; if (!this._inkRipple) { return } const config = { element: $element, event: e }; if (value) { if ((0, _themes.isMaterial)()) { this._inkRippleTimer = setTimeout((() => { var _that$_inkRipple; null === (_that$_inkRipple = that._inkRipple) || void 0 === _that$_inkRipple || _that$_inkRipple.showWave(config) }), 35) } else { var _that$_inkRipple2; null === (_that$_inkRipple2 = that._inkRipple) || void 0 === _that$_inkRipple2 || _that$_inkRipple2.showWave(config) } } else { clearTimeout(this._inkRippleTimer); this._inkRipple.hideWave(config) } } _postprocessRenderItem(args) { this._refreshItemElements(); super._postprocessRenderItem.apply(this, arguments); if (this.option("_swipeEnabled")) { this._attachSwipeEvent((0, _renderer.default)(args.itemElement)) } } _getElementClassToSkipRefreshId() { return "dx-list-group-header" } _attachSwipeEvent($itemElement) { const endEventName = (0, _utils.addNamespace)(_swipe.end, this.NAME); _events_engine.default.on($itemElement, endEventName, this._itemSwipeEndHandler.bind(this)) } _itemSwipeEndHandler(e) { this._itemDXEventHandler(e, "onItemSwipe", { direction: e.offset < 0 ? "left" : "right" }) } _nextButtonHandler(e) { var _this$_pageLoadingAct2; null === (_this$_pageLoadingAct2 = this._pageLoadingAction) || void 0 === _this$_pageLoadingAct2 || _this$_pageLoadingAct2.call(this, e); const dataController = this._dataController; if (dataController.getDataSource() && !dataController.isLoading()) { var _this$_$nextButton; this._scrollView.toggleLoading(true); null === (_this$_$nextButton = this._$nextButton) || void 0 === _this$_$nextButton || _this$_$nextButton.detach(); this._loadIndicationSuppressed(true); this._loadNextPage() } } _setGroupAria($group, groupHeaderId) { const { collapsibleGroups: collapsibleGroups } = this.option(); const groupAria = { role: collapsibleGroups ? void 0 : "group", labelledby: collapsibleGroups ? void 0 : groupHeaderId }; this.setAria(groupAria, $group) } _updateGroupHeaderAriaExpanded($groupHeader, expanded) { this.setAria({ expanded: expanded }, $groupHeader) } _setGroupHeaderAria($groupHeader, listGroupBodyId) { const { collapsibleGroups: collapsibleGroups } = this.option(); const groupHeaderAria = { role: collapsibleGroups ? "button" : void 0, expanded: collapsibleGroups ? true : void 0, controls: collapsibleGroups ? listGroupBodyId : void 0 }; this.setAria(groupHeaderAria, $groupHeader) } _setGroupBodyAria($groupBody, groupHeaderId) { const { collapsibleGroups: collapsibleGroups } = this.option(); const groupHeaderAria = { role: collapsibleGroups ? "listbox" : void 0, labelledby: collapsibleGroups ? groupHeaderId : void 0 }; this.setAria(groupHeaderAria, $groupBody) } _renderGroup(index, group) { const $groupElement = (0, _renderer.default)("<div>").addClass("dx-list-group").appendTo(this._getItemsContainer()); const groupHeaderId = `dx-${(new _guid.default).toString()}`; const $groupHeaderElement = (0, _renderer.default)("<div>").addClass("dx-list-group-header").attr("id", groupHeaderId).appendTo($groupElement); const { groupTemplate: templateName } = this.option(); const groupTemplate = this._getTemplate(group.template || templateName, group, index, $groupHeaderElement); const renderArgs = { index: index, itemData: group, container: (0, _element.getPublicElement)($groupHeaderElement) }; this._createItemByTemplate(groupTemplate, renderArgs); (0, _renderer.default)("<div>").addClass("dx-list-group-header-indicator").prependTo($groupHeaderElement); const groupBodyId = `dx-${(new _guid.default).toString()}`; const $groupBody = (0, _renderer.default)("<div>").addClass("dx-list-group-body").attr("id", groupBodyId).appendTo($groupElement); (0, _iterator.each)(groupItemsGetter(group) || [], ((itemIndex, item) => { this._renderItem({ group: index, item: itemIndex }, item, $groupBody) })); this._groupRenderAction({ groupElement: (0, _element.getPublicElement)($groupElement), groupIndex: index, groupData: group }); this._setGroupAria($groupElement, groupHeaderId); this._setGroupHeaderAria($groupHeaderElement, groupBodyId); this._setGroupBodyAria($groupBody, groupHeaderId) } downInkRippleHandler(e) { this._toggleActiveState((0, _renderer.default)(e.currentTarget), true, e) } upInkRippleHandler(e) { this._toggleActiveState((0, _renderer.default)(e.currentTarget), false) } attachGroupHeaderInkRippleEvents() { const $element = this.$element(); this._downInkRippleHandler = this._downInkRippleHandler || this.downInkRippleHandler.bind(this); this._upInkRippleHandler = this._upInkRippleHandler || this.upInkRippleHandler.bind(this); const downArguments = [$element, "dxpointerdown", ".dx-list-group-header", this._downInkRippleHandler]; const upArguments = [$element, "dxpointerup dxpointerout", ".dx-list-group-header", this._upInkRippleHandler]; _events_engine.default.off(...downArguments); _events_engine.default.on(...downArguments); _events_engine.default.off(...upArguments); _events_engine.default.on(...upArguments) } _createGroupRenderAction() { this._groupRenderAction = this._createActionByOption("onGroupRendered") } _clean() { clearTimeout(this._inkRippleTimer); if (this._$nextButton) { this._$nextButton.remove(); this._$nextButton = null } super._clean.apply(this, arguments) } _dispose() { this._isDataSourceFirstLoadCompleted(false); clearTimeout(this._holdTimer); clearTimeout(this._loadNextPageTimer); clearTimeout(this._showLoadingIndicatorTimer); super._dispose() } _toggleDisabledState(value) { super._toggleDisabledState(value); this._scrollView.option("disabled", value || !this.option("scrollingEnabled")) } _toggleNextButton(value) { const dataController = this._dataController; const $nextButton = this._getNextButton(); this.$element().toggleClass("dx-has-next", value); if (value && dataController.isLoaded()) { $nextButton.appendTo(this._itemContainer()) } if (!value) { $nextButton.detach() } } _getNextButton() { if (!this._$nextButton) { this._$nextButton = this._createNextButton() } return this._$nextButton } _createNextButton() { const $result = (0, _renderer.default)("<div>").addClass("dx-list-next-button"); const $button = (0, _renderer.default)("<div>").appendTo($result); this._createComponent($button, _button.default, { text: this.option("nextButtonText"), onClick: this._nextButtonHandler.bind(this), type: (0, _themes.isMaterialBased)() ? "default" : void 0, integrationOptions: {} }); return $result } _moveFocus() { super._moveFocus.apply(this, arguments); this.scrollToItem(this.option("focusedElement")) } _refresh() { if (!(0, _window.hasWindow)()) { super._refresh() } else { const scrollTop = this._scrollView.scrollTop(); super._refresh(); scrollTop && this._scrollView.scrollTo(scrollTop) } } _optionChanged(args) { switch (args.name) { case "pageLoadMode": this._toggleNextButton(args.value); this._initScrollView(); break; case "dataSource": super._optionChanged(args); this._initScrollView(); this._updateLoadingState(true); this._isDataSourceFirstLoadCompleted(false); break; case "items": super._optionChanged(args); this._isDataSourceFirstLoadCompleted(false); break; case "pullingDownText": case "pulledDownText": case "refreshingText": case "pageLoadingText": case "showScrollbar": case "bounceEnabled": case "scrollByContent": case "scrollByThumb": case "useNativeScrolling": case "scrollingEnabled": case "pullRefreshEnabled": this._initScrollView(); this._updateLoadingState(true); break; case "nextButtonText": case "onItemSwipe": case "useInkRipple": case "grouped": case "groupTemplate": case "showChevronExpr": case "badgeExpr": this._invalidate(); break; case "onScroll": case "onPullRefresh": case "onPageLoading": this._createScrollViewActions(); break; case "collapsibleGroups": this._updateActiveStateUnit(); this._invalidate(); break; case "wrapItemText": this._toggleWrapItemText(args.value); break; case "onGroupRendered": this._createGroupRenderAction(); break; case "width": case "height": super._optionChanged(args); this._scrollView.option(args.name, args.value); this._scrollView.update(); break; case "indicateLoading": this._hideLoadingIfLoadIndicationOff(); break; case "visible": super._optionChanged(args); this._scrollView.update(); break; case "rtlEnabled": this._initScrollView(); super._optionChanged(args); break; case "_swipeEnabled": case "_onItemsRendered": case "selectByClick": break; default: super._optionChanged(args) } } _extendActionArgs($itemElement) { if (!this.option("grouped")) { return super._extendActionArgs($itemElement) } const $group = $itemElement.closest(".dx-list-group"); const $item = $group.find(".dx-list-item"); return (0, _extend.extend)(super._extendActionArgs($itemElement), { itemIndex: { group: $group.index(), item: $item.index($itemElement) } }) } expandGroup(groupIndex) { const deferred = (0, _deferred.Deferred)(); const $group = this._getItemsContainer().find(".dx-list-group").eq(groupIndex); this._collapseGroupHandler($group, false).done((() => { deferred.resolveWith(this) })); return deferred.promise() } collapseGroup(groupIndex) { const deferred = (0, _deferred.Deferred)(); const $group = this._getItemsContainer().find(".dx-list-group").eq(groupIndex); this._collapseGroupHandler($group, true).done((() => { deferred.resolveWith(this) })); return deferred } updateDimensions() { const that = this; const deferred = (0, _deferred.Deferred)(); if (that._scrollView) { that._scrollView.update().done((() => { !that._scrollViewIsFull() && that._updateLoadingState(true); deferred.resolveWith(that) })) } else { deferred.resolveWith(that) } return deferred.promise() } reload() { super.reload(); this.scrollTo(0); this._pullDownHandler() } repaint() { this.scrollTo(0); super.repaint() } scrollTop() { return this._scrollView.scrollOffset().top } clientHeight() { return this._scrollView.clientHeight() } scrollHeight() { return this._scrollView.scrollHeight() } scrollBy(distance) { this._scrollView.scrollBy(distance) } scrollTo(location) { this._scrollView.scrollTo(location) } scrollToItem(itemElement) { const $item = this._editStrategy.getItemElement(itemElement); const item = null === $item || void 0 === $item ? void 0 : $item.get(0); this._scrollView.scrollToElement(item, { bottom: (0, _get_element_style.getElementMargin)(item, "bottom") }) } _dimensionChanged() { this.updateDimensions() } } exports.ListBase = ListBase; ListBase.include(_m_grouped_data_converter_mixin.default); ListBase.ItemClass = _m_item.default }, 73368: /*!*************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/ui/list/m_list.edit.decorator.context.js ***! \*************************************************************************************************/ function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { var _message = _interopRequireDefault(__webpack_require__( /*! ../../../common/core/localization/message */ 4671)); var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../../core/renderer */ 64553)); var _size = __webpack_require__( /*! ../../../core/utils/size */ 57653); var _m_overlay = _interopRequireDefault(__webpack_require__( /*! ../../ui/overlay/m_overlay */ 68632)); var _m_list = __webpack_require__( /*! ./m_list.base */ 26031); var _m_listEdit = _interopRequireDefault(__webpack_require__( /*! ./m_list.edit.decorator */ 72985)); var _m_listEdit2 = _interopRequireDefault(__webpack_require__( /*! ./m_list.edit.decorator_menu_helper */ 71202)); var _m_listEdit3 = __webpack_require__( /*! ./m_list.edit.decorator_registry */ 58499); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } class EditDecoratorContext extends _m_listEdit.default { _init() { const $menu = (0, _renderer.default)("<div>").addClass("dx-list-context-menu"); this._list.$element().append($menu); this._menu = this._renderOverlay($menu) } _renderOverlay($element) { return this._list._createComponent($element, _m_overlay.default, { shading: false, deferRendering: true, hideOnParentScroll: true, hideOnOutsideClick: e => !(0, _renderer.default)(e.target).closest(".dx-list-context-menu").length, animation: { show: { type: "slide", duration: 300, from: { height: 0, opacity: 1 }, to: { height: function() { return (0, _size.getOuterHeight)(this._$menuList) }.bind(this), opacity: 1 } }, hide: { type: "slide", duration: 0, from: { opacity: 1 }, to: { opacity: 0 } } }, _ignoreFunctionValueDeprecation: true, height: function() { return this._$menuList ? (0, _size.getOuterHeight)(this._$menuList) : 0 }.bind(this), width: function() { return (0, _size.getOuterWidth)(this._list.$element()) }.bind(this), onContentReady: this._renderMenuContent.bind(this) }) } _renderMenuContent(e) { const $overlayContent = e.component.$content(); const items = this._menuItems().slice(); if (this._deleteEnabled()) { items.push({ text: _message.default.format("dxListEditDecorator-delete"), action: this._deleteItem.bind(this) }) } this._$menuList = (0, _renderer.default)("<div>"); this._list._createComponent(this._$menuList, _m_list.ListBase, { items: items, onItemClick: this._menuItemClickHandler.bind(this), height: "auto", integrationOptions: {} }); $overlayContent.addClass("dx-list-context-menucontent"); $overlayContent.append(this._$menuList) } _menuItemClickHandler(args) { this._menu.hide(); this._fireMenuAction(this._$itemWithMenu, args.itemData.action) } _deleteItem() { this._list.deleteItem(this._$itemWithMenu) } handleContextMenu($itemElement) { this._$itemWithMenu = $itemElement; this._menu.option({ position: { my: "top", at: "bottom", of: $itemElement, collision: "flip" } }); this._menu.show(); return true } dispose() { if (this._menu) { this._menu.$element().remove() } super.dispose.apply(this, arguments) } }(0, _m_listEdit3.register)("menu", "context", EditDecoratorContext.include(_m_listEdit2.default)) }, 72985: /*!*****************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/ui/list/m_list.edit.decorator.js ***! \*****************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _events_engine = _interopRequireDefault(__webpack_require__( /*! ../../../common/core/events/core/events_engine */ 92774)); var _swipe = __webpack_require__( /*! ../../../common/core/events/swipe */ 80250); var _index = __webpack_require__( /*! ../../../common/core/events/utils/index */ 98834); var _class = _interopRequireDefault(__webpack_require__( /*! ../../../core/class */ 55620)); var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../../core/renderer */ 64553)); var _size = __webpack_require__( /*! ../../../core/utils/size */ 57653); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } const SWIPE_START_EVENT_NAME = (0, _index.addNamespace)(_swipe.start, "dxListEditDecorator"); const SWIPE_UPDATE_EVENT_NAME = (0, _index.addNamespace)(_swipe.swipe, "dxListEditDecorator"); const SWIPE_END_EVENT_NAME = (0, _index.addNamespace)(_swipe.end, "dxListEditDecorator"); class EditDecorator extends(_class.default.inherit({})) { ctor(list) { this._list = list; this._init() } _shouldHandleSwipe() { return false } _init() {} _attachSwipeEvent(config) { const swipeConfig = { itemSizeFunc: function() { if (this._clearSwipeCache) { this._itemWidthCache = (0, _size.getWidth)(this._list.$element()); this._clearSwipeCache = false } return this._itemWidthCache }.bind(this) }; _events_engine.default.on(config.$itemElement, SWIPE_START_EVENT_NAME, swipeConfig, this._itemSwipeStartHandler.bind(this)); _events_engine.default.on(config.$itemElement, SWIPE_UPDATE_EVENT_NAME, this._itemSwipeUpdateHandler.bind(this)); _events_engine.default.on(config.$itemElement, SWIPE_END_EVENT_NAME, this._itemSwipeEndHandler.bind(this)) } _itemSwipeStartHandler(e) { const $itemElement = (0, _renderer.default)(e.currentTarget); if ($itemElement.is(".dx-state-disabled, .dx-state-disabled *")) { e.cancel = true; return } clearTimeout(this._list._inkRippleTimer); this._swipeStartHandler($itemElement, e) } _itemSwipeUpdateHandler(e) { const $itemElement = (0, _renderer.default)(e.currentTarget); this._swipeUpdateHandler($itemElement, e) } _itemSwipeEndHandler(e) { const $itemElement = (0, _renderer.default)(e.currentTarget); this._swipeEndHandler($itemElement, e); this._clearSwipeCache = true } beforeBag(config) {} afterBag() {} _commonOptions() { return { activeStateEnabled: this._list.option("activeStateEnabled"), hoverStateEnabled: this._list.option("hoverStateEnabled"), focusStateEnabled: this._list.option("focusStateEnabled") } } modifyElement(config) { if (this._shouldHandleSwipe()) { this._attachSwipeEvent(config); this._clearSwipeCache = true } } afterRender() {} handleClick($itemElement, e) {} handleKeyboardEvents(currentFocusedIndex, moveFocusUp) {} handleEnterPressing() {} handleContextMenu($itemElement) {} _swipeStartHandler($element, event) {} _swipeUpdateHandler($element, event) {} _swipeEndHandler($element, event) {} visibilityChange() {} getExcludedSelectors() {} dispose() {} } exports.default = EditDecorator }, 86856: /*!*************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/ui/list/m_list.edit.decorator.reorder.js ***! \*************************************************************************************************/ function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { var _events_engine = _interopRequireDefault(__webpack_require__( /*! ../../../common/core/events/core/events_engine */ 92774)); var _index = __webpack_require__( /*! ../../../common/core/events/utils/index */ 98834); var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../../core/renderer */ 64553)); var _extend = __webpack_require__( /*! ../../../core/utils/extend */ 52576); var _size = __webpack_require__( /*! ../../../core/utils/size */ 57653); var _m_sortable = _interopRequireDefault(__webpack_require__( /*! ../../m_sortable */ 96334)); var _m_listEdit = _interopRequireDefault(__webpack_require__( /*! ./m_list.edit.decorator */ 72985)); var _m_listEdit2 = __webpack_require__( /*! ./m_list.edit.decorator_registry */ 58499); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } class EditDecoratorReorder extends _m_listEdit.default { _init() { const list = this._list; this._groupedEnabled = this._list.option("grouped"); this._lockedDrag = false; const filter = this._groupedEnabled ? "> .dx-list-items > .dx-list-group > .dx-list-group-body > .dx-list-item" : "> .dx-list-items > .dx-list-item"; this._sortable = list._createComponent(list._scrollView.content(), _m_sortable.default, (0, _extend.extend)({ component: list, contentTemplate: null, allowReordering: false, filter: filter, container: list.$element(), dragDirection: list.option("itemDragging.group") ? "both" : "vertical", handle: ".dx-list-reorder-handle", dragTemplate: this._dragTemplate, onDragStart: this._dragStartHandler.bind(this), onDragChange: this._dragChangeHandler.bind(this), onReorder: this._reorderHandler.bind(this) }, list.option("itemDragging"))) } afterRender() { this._sortable.update() } _dragTemplate(e) { const result = (0, _renderer.default)(e.itemElement).clone().addClass("dx-list-item-ghost-reordering").addClass("dx-state-hover"); (0, _size.setWidth)(result, (0, _size.getWidth)(e.itemElement)); return result } _dragStartHandler(e) { if (this._lockedDrag) { e.cancel = true } } _dragChangeHandler(e) { if (this._groupedEnabled && !this._sameParent(e.fromIndex, e.toIndex)) { e.cancel = true } } _sameParent(fromIndex, toIndex) { const $dragging = this._list.getItemElementByFlatIndex(fromIndex); const $over = this._list.getItemElementByFlatIndex(toIndex); return $over.parent().get(0) === $dragging.parent().get(0) } _reorderHandler(e) { const $targetElement = this._list.getItemElementByFlatIndex(e.toIndex); this._list.reorderItem((0, _renderer.default)(e.itemElement), $targetElement) } afterBag(config) { const $handle = (0, _renderer.default)("<div>").addClass("dx-list-reorder-handle"); _events_engine.default.on($handle, "dxpointerdown", (e => { this._lockedDrag = !(0, _index.isMouseEvent)(e) })); _events_engine.default.on($handle, "dxhold", { timeout: 30 }, (e => { e.cancel = true; this._lockedDrag = false })); config.$container.addClass("dx-list-reorder-handle-container").append($handle) } }(0, _m_listEdit2.register)("reorder", "default", EditDecoratorReorder) }, 65009: /*!***************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/ui/list/m_list.edit.decorator.selection.js ***! \***************************************************************************************************/ function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { var _click = __webpack_require__( /*! ../../../common/core/events/click */ 64044); var _events_engine = _interopRequireDefault(__webpack_require__( /*! ../../../common/core/events/core/events_engine */ 92774)); var _utils = __webpack_require__( /*! ../../../common/core/events/utils */ 98834); var _message = _interopRequireDefault(__webpack_require__( /*! ../../../common/core/localization/message */ 4671)); var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../../core/renderer */ 64553)); var _deferred = __webpack_require__( /*! ../../../core/utils/deferred */ 87739); var _extend = __webpack_require__( /*! ../../../core/utils/extend */ 52576); var _check_box = _interopRequireDefault(__webpack_require__( /*! ../../../ui/check_box */ 94319)); var _radio_button = _interopRequireDefault(__webpack_require__( /*! ../../../ui/radio_group/radio_button */ 86657)); var _ui = _interopRequireDefault(__webpack_require__( /*! ../../../ui/widget/ui.errors */ 35185)); var _m_listEdit = _interopRequireDefault(__webpack_require__( /*! ./m_list.edit.decorator */ 72985)); var _m_listEdit2 = __webpack_require__( /*! ./m_list.edit.decorator_registry */ 58499); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } const CLICK_EVENT_NAME = (0, _utils.addNamespace)(_click.name, "dxListEditDecorator"); class EditDecoratorSelection extends _m_listEdit.default { _init() { super._init.apply(this, arguments); const selectionMode = this._list.option("selectionMode"); this._singleStrategy = "single" === selectionMode; this._containerClass = this._singleStrategy ? "dx-list-select-radiobutton-container" : "dx-list-select-checkbox-container"; this._controlClass = this._singleStrategy ? "dx-list-select-radiobutton" : "dx-list-select-checkbox"; this._controlWidget = this._singleStrategy ? _radio_button.default : _check_box.default; this._list.$element().addClass("dx-list-select-decorator-enabled") } beforeBag(config) { const { $itemElement: $itemElement } = config; const $container = config.$container.addClass(this._containerClass); const $control = (0, _renderer.default)("<div>").addClass(this._controlClass).appendTo($container); new this._controlWidget($control, (0, _extend.extend)(this._commonOptions(), { value: this._isSelected($itemElement), elementAttr: { "aria-label": _message.default.format("CheckState") }, focusStateEnabled: false, hoverStateEnabled: false, onValueChanged: _ref => { let { value: value, component: component, event: event } = _ref; const isUiClick = !!event; if (isUiClick) { component._valueChangeEventInstance = void 0; component.option("value", !value) } } })) } modifyElement(config) { super.modifyElement.apply(this, arguments); const { $itemElement: $itemElement } = config; const control = this._controlWidget.getInstance($itemElement.find(`.${this._controlClass}`)); _events_engine.default.on($itemElement, "stateChanged", ((e, state) => { control.option("value", state) })) } _updateSelectAllState() { if (!this._$selectAll) { return } this._selectAllCheckBox.option("value", this._list.isSelectAll()) } afterRender() { if ("all" !== this._list.option("selectionMode")) { return } if (!this._$selectAll) { this._renderSelectAll() } else { this._updateSelectAllState() } } handleKeyboardEvents(currentFocusedIndex, moveFocusUp) { const moveFocusDown = !moveFocusUp; const list = this._list; const $selectAll = this._$selectAll; const lastItemIndex = list._getLastItemIndex(); const isFocusOutOfList = moveFocusUp && 0 === currentFocusedIndex || moveFocusDown && currentFocusedIndex === lastItemIndex; const hasSelectAllItem = !!$selectAll; if (hasSelectAllItem && isFocusOutOfList) { list.option("focusedElement", $selectAll); list.scrollToItem(list.option("focusedElement")); return true } return false } handleEnterPressing(e) { var _this$_$selectAll; if (null !== (_this$_$selectAll = this._$selectAll) && void 0 !== _this$_$selectAll && _this$_$selectAll.hasClass("dx-state-focused")) { e.target = this._$selectAll.get(0); this._selectAllHandler(e); return true } } _renderSelectAll() { this._$selectAll = (0, _renderer.default)("<div>").addClass("dx-list-select-all"); const downArrowHandler = this._list._supportedKeys().downArrow.bind(this._list); const selectAllCheckBoxElement = (0, _renderer.default)("<div>").addClass("dx-list-select-all-checkbox").appendTo(this._$selectAll); this._selectAllCheckBox = this._list._createComponent(selectAllCheckBoxElement, _check_box.default, { elementAttr: { "aria-label": _message.default.format("dxList-selectAll") }, focusStateEnabled: false, hoverStateEnabled: false }); this._selectAllCheckBox.registerKeyHandler("downArrow", downArrowHandler); (0, _renderer.default)("<div>").addClass("dx-list-select-all-label").text(this._list.option("selectAllText")).appendTo(this._$selectAll); this._list.itemsContainer().prepend(this._$selectAll); this._updateSelectAllState(); this._updateSelectAllAriaLabel(); this._attachSelectAllHandler() } _attachSelectAllHandler() { this._selectAllCheckBox.option("onValueChanged", (_ref2 => { let { value: value, event: event, component: component } = _ref2; const isUiClick = !!event; if (isUiClick) { component._setOptionWithoutOptionChange("value", !value); return } this._updateSelectAllAriaLabel(); this._list._createActionByOption("onSelectAllValueChanged")({ value: value }) })); _events_engine.default.off(this._$selectAll, CLICK_EVENT_NAME); _events_engine.default.on(this._$selectAll, CLICK_EVENT_NAME, this._selectAllHandler.bind(this)) } _updateSelectAllAriaLabel() { if (!this._$selectAll) { return } const { value: value } = this._selectAllCheckBox.option(); const indeterminate = void 0 === value; const stateVariableName = indeterminate ? "indeterminate" : value ? "checked" : "notChecked"; const label = `${_message.default.format("dxList-selectAll")}, ${_message.default.format(`dxList-selectAll-${stateVariableName}`)}`; this._$selectAll.attr({ "aria-label": label }) } _selectAllHandler(event) { var _this$_$selectAll2; event.stopPropagation(); this._list._saveSelectionChangeEvent(event); const { value: value } = this._selectAllCheckBox.option(); let selectionDeferred; if (true !== value) { selectionDeferred = this._selectAllItems() } else { selectionDeferred = this._unselectAllItems() } this._list.option("focusedElement", null === (_this$_$selectAll2 = this._$selectAll) || void 0 === _this$_$selectAll2 ? void 0 : _this$_$selectAll2.get(0)); return selectionDeferred } _checkSelectAllCapability() { const list = this._list; const dataController = list._dataController; if ("allPages" === list.option("selectAllMode") && list.option("grouped") && !dataController.group()) { _ui.default.log("W1010"); return false } return true } _selectAllItems() { if (!this._checkSelectAllCapability()) { return (0, _deferred.Deferred)().resolve() } return this._list._selection.selectAll("page" === this._list.option("selectAllMode")) } _unselectAllItems() { if (!this._checkSelectAllCapability()) { return (0, _deferred.Deferred)().resolve() } return this._list._selection.deselectAll("page" === this._list.option("selectAllMode")) } _isSelected($itemElement) { return this._list.isItemSelected($itemElement) } dispose() { this._disposeSelectAll(); this._list.$element().removeClass("dx-list-select-decorator-enabled"); super.dispose.apply(this, arguments) } _disposeSelectAll() { if (this._$selectAll) { this._$selectAll.remove(); this._$selectAll = null } } }(0, _m_listEdit2.register)("selection", "default", EditDecoratorSelection) }, 3041: /*!************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/ui/list/m_list.edit.decorator.static.js ***! \************************************************************************************************/ function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../../core/renderer */ 64553)); var _button = _interopRequireDefault(__webpack_require__( /*! ../../../ui/button */ 64973)); var _m_listEdit = _interopRequireDefault(__webpack_require__( /*! ./m_list.edit.decorator */ 72985)); var _m_listEdit2 = __webpack_require__( /*! ./m_list.edit.decorator_registry */ 58499); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } class EditDecoratorStatic extends _m_listEdit.default { afterBag(config) { const { $itemElement: $itemElement } = config; const { $container: $container } = config; const $button = (0, _renderer.default)("<div>").addClass("dx-list-static-delete-button"); this._list._createComponent($button, _button.default, { icon: "remove", onClick: function(args) { args.event.stopPropagation(); this._deleteItem($itemElement) }.bind(this), integrationOptions: {}, elementAttr: { role: null, "aria-label": null }, tabIndex: -1 }); $container.addClass("dx-list-static-delete-button-container").append($button) } _deleteItem($itemElement) { if ($itemElement.is(".dx-state-disabled, .dx-state-disabled *")) { return } this._list.deleteItem($itemElement) } }(0, _m_listEdit2.register)("delete", "static", EditDecoratorStatic) }, 98645: /*!***********************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/ui/list/m_list.edit.decorator.swipe.js ***! \***********************************************************************************************/ function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { var _animation = __webpack_require__( /*! ../../../common/core/animation */ 16826); var _translator = __webpack_require__( /*! ../../../common/core/animation/translator */ 88603); var _deferred = __webpack_require__( /*! ../../../core/utils/deferred */ 87739); var _size = __webpack_require__( /*! ../../../core/utils/size */ 57653); var _m_listEdit = (e = __webpack_require__( /*! ./m_list.edit.decorator */ 72985), e && e.__esModule ? e : { default: e }); var e; var _m_listEdit2 = __webpack_require__( /*! ./m_list.edit.decorator_registry */ 58499); class EditDecoratorSwipe extends _m_listEdit.default { _shouldHandleSwipe() { return true } _renderItemPosition($itemElement, offset, animate) { const deferred = (0, _deferred.Deferred)(); const itemOffset = offset * this._itemElementWidth; if (animate) { _animation.fx.animate($itemElement, { to: { left: itemOffset }, type: "slide", complete() { deferred.resolve($itemElement, offset) } }) } else { (0, _translator.move)($itemElement, { left: itemOffset }); deferred.resolve() } return deferred.promise() } _swipeStartHandler($itemElement) { this._itemElementWidth = (0, _size.getWidth)($itemElement); return true } _swipeUpdateHandler($itemElement, args) { this._renderItemPosition($itemElement, args.offset); return true } _swipeEndHandler($itemElement, args) { const offset = args.targetOffset; this._renderItemPosition($itemElement, offset, true).done((($itemElement, offset) => { if (Math.abs(offset)) { this._list.deleteItem($itemElement).fail((() => { this._renderItemPosition($itemElement, 0, true) })) } })); return true } }(0, _m_listEdit2.register)("delete", "swipe", EditDecoratorSwipe) }, 41265: /*!***********************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/ui/list/m_list.edit.decorator.switchable.button.js ***! \***********************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _animation = __webpack_require__( /*! ../../../common/core/animation */ 16826); var _message = _interopRequireDefault(__webpack_require__( /*! ../../../common/core/localization/message */ 4671)); var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../../core/renderer */ 64553)); var _size = __webpack_require__( /*! ../../../core/utils/size */ 57653); var _button = _interopRequireDefault(__webpack_require__( /*! ../../../ui/button */ 64973)); var _themes = __webpack_require__( /*! ../../../ui/themes */ 52071); var _m_listEditDecorator = _interopRequireDefault(__webpack_require__( /*! ./m_list.edit.decorator.switchable */ 51819)); var _m_listEdit = __webpack_require__( /*! ./m_list.edit.decorator_registry */ 58499); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } class SwitchableButtonEditDecorator extends _m_listEditDecorator.default { _init() { super._init.apply(this, arguments); const $buttonContainer = (0, _renderer.default)("<div>").addClass("dx-list-switchable-delete-button-container"); const $buttonWrapper = (0, _renderer.default)("<div>").addClass("dx-list-switchable-delete-button-wrapper"); const $buttonInnerWrapper = (0, _renderer.default)("<div>").addClass("dx-list-switchable-delete-button-inner-wrapper"); const $button = (0, _renderer.default)("<div>").addClass("dx-list-switchable-delete-button"); this._list._createComponent($button, _button.default, { text: _message.default.format("dxListEditDecorator-delete"), type: "danger", stylingMode: (0, _themes.isMaterialBased)() ? "text" : "contained", onClick: function(e) { this._deleteItem(); e.event.stopPropagation() }.bind(this), integrationOptions: {}, elementAttr: { role: null, "aria-label": null }, tabIndex: -1 }); $buttonContainer.append($buttonWrapper); $buttonWrapper.append($buttonInnerWrapper); $buttonInnerWrapper.append($button); this._$buttonContainer = $buttonContainer } _enablePositioning($itemElement) { super._enablePositioning.apply(this, arguments); _animation.fx.stop(this._$buttonContainer, true); this._$buttonContainer.appendTo($itemElement) } _disablePositioning() { super._disablePositioning.apply(this, arguments); this._$buttonContainer.detach() } _animatePrepareDeleteReady() { const rtl = this._isRtlEnabled(); const listWidth = (0, _size.getWidth)(this._list.$element()); const buttonWidth = this._buttonWidth(); const fromValue = rtl ? listWidth : -buttonWidth; const toValue = rtl ? listWidth - buttonWidth : 0; return _animation.fx.animate(this._$buttonContainer, { type: "custom", duration: 200, from: { right: fromValue }, to: { right: toValue } }) } _animateForgetDeleteReady() { const rtl = this._isRtlEnabled(); const listWidth = (0, _size.getWidth)(this._list.$element()); const buttonWidth = this._buttonWidth(); const fromValue = rtl ? listWidth - buttonWidth : 0; const toValue = rtl ? listWidth : -buttonWidth; return _animation.fx.animate(this._$buttonContainer, { type: "custom", duration: 200, from: { right: fromValue }, to: { right: toValue } }) } _buttonWidth() { if (!this._buttonContainerWidth) { this._buttonContainerWidth = (0, _size.getOuterWidth)(this._$buttonContainer) } return this._buttonContainerWidth } dispose() { if (this._$buttonContainer) { this._$buttonContainer.remove() } super.dispose.apply(this, arguments) } }(0, _m_listEdit.register)("delete", "toggle", class extends SwitchableButtonEditDecorator { beforeBag(config) { const { $itemElement: $itemElement } = config; const { $container: $container } = config; const $toggle = (0, _renderer.default)("<div>").addClass("dx-list-toggle-delete-switch"); this._list._createComponent($toggle, _button.default, { icon: "toggle-delete", onClick: function(e) { _animation.fx.stop(this._$buttonContainer, false); this._toggleDeleteReady($itemElement); e.event.stopPropagation() }.bind(this), integrationOptions: {}, elementAttr: { role: null, "aria-label": null }, tabIndex: -1 }); $container.addClass("dx-list-toggle-delete-switch-container"); $container.append($toggle) } }); (0, _m_listEdit.register)("delete", "slideButton", class extends SwitchableButtonEditDecorator { _shouldHandleSwipe() { return true } _swipeEndHandler($itemElement, args) { if (0 !== args.targetOffset) { _animation.fx.stop(this._$buttonContainer, false); this._toggleDeleteReady($itemElement) } return true } }); exports.default = SwitchableButtonEditDecorator }, 51819: /*!****************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/ui/list/m_list.edit.decorator.switchable.js ***! \****************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _emitter = __webpack_require__( /*! ../../../common/core/events/core/emitter.feedback */ 69331); var _events_engine = _interopRequireDefault(__webpack_require__( /*! ../../../common/core/events/core/events_engine */ 92774)); var _pointer = _interopRequireDefault(__webpack_require__( /*! ../../../common/core/events/pointer */ 89797)); var _index = __webpack_require__( /*! ../../../common/core/events/utils/index */ 98834); var _class = _interopRequireDefault(__webpack_require__( /*! ../../../core/class */ 55620)); var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../../core/renderer */ 64553)); var _common = __webpack_require__( /*! ../../../core/utils/common */ 17781); var _size = __webpack_require__( /*! ../../../core/utils/size */ 57653); var _m_listEdit = _interopRequireDefault(__webpack_require__( /*! ./m_list.edit.decorator */ 72985)); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } const POINTER_DOWN_EVENT_NAME = (0, _index.addNamespace)(_pointer.default.down, "dxListEditDecorator"); const ACTIVE_EVENT_NAME = (0, _index.addNamespace)(_emitter.active, "dxListEditDecorator"); class SwitchableEditDecorator extends _m_listEdit.default { _init() { this._$topShield = (0, _renderer.default)("<div>").addClass("dx-list-switchable-delete-top-shield"); this._$bottomShield = (0, _renderer.default)("<div>").addClass("dx-list-switchable-delete-bottom-shield"); this._$itemContentShield = (0, _renderer.default)("<div>").addClass("dx-list-switchable-delete-item-content-shield"); _events_engine.default.on(this._$topShield, POINTER_DOWN_EVENT_NAME, this._cancelDeleteReadyItem.bind(this)); _events_engine.default.on(this._$bottomShield, POINTER_DOWN_EVENT_NAME, this._cancelDeleteReadyItem.bind(this)); this._list.$element().append(this._$topShield.toggle(false)).append(this._$bottomShield.toggle(false)) } handleClick($itemElement, e) { return this._cancelDeleteReadyItem() } _cancelDeleteReadyItem() { if (!this._$readyToDeleteItem) { return false } this._cancelDelete(this._$readyToDeleteItem); return true } _cancelDelete($itemElement) { this._toggleDeleteReady($itemElement, false) } _toggleDeleteReady($itemElement, readyToDelete) { if (void 0 === readyToDelete) { readyToDelete = !this._isReadyToDelete($itemElement) } this._toggleShields($itemElement, readyToDelete); this._toggleScrolling(readyToDelete); this._cacheReadyToDeleteItem($itemElement, readyToDelete); this._animateToggleDelete($itemElement, readyToDelete) } _isReadyToDelete($itemElement) { return $itemElement.hasClass("dx-list-switchable-delete-ready") } _toggleShields($itemElement, enabled) { this._list.$element().toggleClass("dx-list-switchable-menu-shield-positioning", enabled); this._$topShield.toggle(enabled); this._$bottomShield.toggle(enabled); if (enabled) { this._updateShieldsHeight($itemElement) } this._toggleContentShield($itemElement, enabled) } _updateShieldsHeight($itemElement) { const $list = this._list.$element(); const listTopOffset = $list.offset().top; const listHeight = (0, _size.getOuterHeight)($list); const itemTopOffset = $itemElement.offset().top; const itemHeight = (0, _size.getOuterHeight)($itemElement); const dirtyTopShieldHeight = itemTopOffset - listTopOffset; const dirtyBottomShieldHeight = listHeight - itemHeight - dirtyTopShieldHeight; (0, _size.setHeight)(this._$topShield, Math.max(dirtyTopShieldHeight, 0)); (0, _size.setHeight)(this._$bottomShield, Math.max(dirtyBottomShieldHeight, 0)) } _toggleContentShield($itemElement, enabled) { if (enabled) { $itemElement.find(".dx-list-item-content").first().append(this._$itemContentShield) } else { this._$itemContentShield.detach() } } _toggleScrolling(readyToDelete) { const scrollView = this._list.$element().dxScrollView("instance"); if (readyToDelete) { scrollView.on("start", this._cancelScrolling) } else { scrollView.off("start", this._cancelScrolling) } } _cancelScrolling(args) { args.event.cancel = true } _cacheReadyToDeleteItem($itemElement, cache) { if (cache) { this._$readyToDeleteItem = $itemElement } else { delete this._$readyToDeleteItem } } _animateToggleDelete($itemElement, readyToDelete) { if (readyToDelete) { this._enablePositioning($itemElement); this._prepareDeleteReady($itemElement); this._animatePrepareDeleteReady($itemElement); _events_engine.default.off($itemElement, _pointer.default.up) } else { this._forgetDeleteReady($itemElement); this._animateForgetDeleteReady($itemElement).done(this._disablePositioning.bind(this, $itemElement)) } } _enablePositioning($itemElement) { $itemElement.addClass("dx-list-switchable-menu-item-shield-positioning"); _events_engine.default.on($itemElement, ACTIVE_EVENT_NAME, _common.noop); _events_engine.default.one($itemElement, _pointer.default.up, this._disablePositioning.bind(this, $itemElement)) } _disablePositioning($itemElement) { $itemElement.removeClass("dx-list-switchable-menu-item-shield-positioning"); _events_engine.default.off($itemElement, ACTIVE_EVENT_NAME) } _prepareDeleteReady($itemElement) { $itemElement.addClass("dx-list-switchable-delete-ready") } _forgetDeleteReady($itemElement) { $itemElement.removeClass("dx-list-switchable-delete-ready") } _animatePrepareDeleteReady($element) { _class.default.abstract() } _animateForgetDeleteReady($itemElement) { _class.default.abstract() } _getDeleteButtonContainer($itemElement) { $itemElement = $itemElement || this._$readyToDeleteItem; return $itemElement.children(".dx-list-switchable-delete-button-container") } _deleteItem($itemElement) { $itemElement = $itemElement || this._$readyToDeleteItem; this._getDeleteButtonContainer($itemElement).detach(); if ($itemElement.is(".dx-state-disabled, .dx-state-disabled *")) { return } this._list.deleteItem($itemElement).always(this._cancelDelete.bind(this, $itemElement)) } _isRtlEnabled() { return this._list.option("rtlEnabled") } dispose() { if (this._$topShield) { this._$topShield.remove() } if (this._$bottomShield) { this._$bottomShield.remove() } super.dispose.apply(this, arguments) } } exports.default = SwitchableEditDecorator }, 94824: /*!**********************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/ui/list/m_list.edit.decorator.switchable.slide.js ***! \**********************************************************************************************************/ function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { var _animation = __webpack_require__( /*! ../../../common/core/animation */ 16826); var _translator = __webpack_require__( /*! ../../../common/core/animation/translator */ 88603); var _click = __webpack_require__( /*! ../../../common/core/events/click */ 64044); var _emitter = __webpack_require__( /*! ../../../common/core/events/core/emitter.feedback */ 69331); var _events_engine = _interopRequireDefault(__webpack_require__( /*! ../../../common/core/events/core/events_engine */ 92774)); var _index = __webpack_require__( /*! ../../../common/core/events/utils/index */ 98834); var _message = _interopRequireDefault(__webpack_require__( /*! ../../../common/core/localization/message */ 4671)); var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../../core/renderer */ 64553)); var _common = __webpack_require__( /*! ../../../core/utils/common */ 17781); var _size = __webpack_require__( /*! ../../../core/utils/size */ 57653); var _themes = __webpack_require__( /*! ../../../ui/themes */ 52071); var _m_action_sheet = _interopRequireDefault(__webpack_require__( /*! ../../ui/m_action_sheet */ 70557)); var _m_listEditDecorator = _interopRequireDefault(__webpack_require__( /*! ./m_list.edit.decorator.switchable */ 51819)); var _m_listEdit = _interopRequireDefault(__webpack_require__( /*! ./m_list.edit.decorator_menu_helper */ 71202)); var _m_listEdit2 = __webpack_require__( /*! ./m_list.edit.decorator_registry */ 58499); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } const CLICK_EVENT_NAME = (0, _index.addNamespace)(_click.name, "dxListEditDecorator"); const ACTIVE_EVENT_NAME = (0, _index.addNamespace)(_emitter.active, "dxListEditDecorator"); class SwitchableEditDecoratorSlide extends _m_listEditDecorator.default { _shouldHandleSwipe() { return true } _init() { super._init.apply(this, arguments); this._$buttonsContainer = (0, _renderer.default)("<div>").addClass("dx-list-slide-menu-buttons-container"); _events_engine.default.on(this._$buttonsContainer, ACTIVE_EVENT_NAME, _common.noop); this._$buttons = (0, _renderer.default)("<div>").addClass("dx-list-slide-menu-buttons").appendTo(this._$buttonsContainer); this._renderMenu(); this._renderDeleteButton() } _renderMenu() { if (!this._menuEnabled()) { return } const menuItems = this._menuItems(); if (1 === menuItems.length) { const menuItem = menuItems[0]; this._renderMenuButton(menuItem.text, (e => { e.stopPropagation(); this._fireAction(menuItem) })) } else { const $menu = (0, _renderer.default)("<div>").addClass("dx-list-slide-menu"); this._menu = this._list._createComponent($menu, _m_action_sheet.default, { showTitle: false, items: menuItems, onItemClick: function(args) { this._fireAction(args.itemData) }.bind(this), integrationOptions: {} }); $menu.appendTo(this._list.$element()); const $menuButton = this._renderMenuButton(_message.default.format("dxListEditDecorator-more"), (e => { e.stopPropagation(); this._menu.show() })); this._menu.option("target", $menuButton) } } _renderMenuButton(text, action) { const $menuButton = (0, _renderer.default)("<div>").addClass("dx-list-slide-menu-button").addClass("dx-list-slide-menu-button-menu").text(text); this._$buttons.append($menuButton); _events_engine.default.on($menuButton, CLICK_EVENT_NAME, action); return $menuButton } _renderDeleteButton() { if (!this._deleteEnabled()) { return } const $deleteButton = (0, _renderer.default)("<div>").addClass("dx-list-slide-menu-button").addClass("dx-list-slide-menu-button-delete").text((0, _themes.isMaterialBased)() ? "" : _message.default.format("dxListEditDecorator-delete")); _events_engine.default.on($deleteButton, CLICK_EVENT_NAME, (e => { e.stopPropagation(); this._deleteItem() })); this._$buttons.append($deleteButton) } _fireAction(menuItem) { this._fireMenuAction((0, _renderer.default)(this._cachedNode), menuItem.action); this._cancelDeleteReadyItem() } modifyElement(config) { super.modifyElement.apply(this, arguments); const { $itemElement: $itemElement } = config; $itemElement.addClass("dx-list-slide-menu-wrapper"); const $slideMenuContent = (0, _renderer.default)("<div>").addClass("dx-list-slide-menu-content"); $itemElement.wrapInner($slideMenuContent) } _getDeleteButtonContainer() { return this._$buttonsContainer } handleClick(_, e) { if ((0, _renderer.default)(e.target).closest(".dx-list-slide-menu-content").length) { return super.handleClick.apply(this, arguments) } return false } _swipeStartHandler($itemElement) { this._enablePositioning($itemElement); this._cacheItemData($itemElement); this._setPositions(this._getPositions(0)) } _swipeUpdateHandler($itemElement, args) { const rtl = this._isRtlEnabled(); const signCorrection = rtl ? -1 : 1; const isItemReadyToDelete = this._isReadyToDelete($itemElement); const moveJustStarted = this._getCurrentPositions().content === this._getStartPositions().content; if (moveJustStarted && !isItemReadyToDelete && args.offset * signCorrection > 0) { args.cancel = true; return } const offset = this._cachedItemWidth * args.offset; const startOffset = isItemReadyToDelete ? -this._cachedButtonWidth * signCorrection : 0; const correctedOffset = (offset + startOffset) * signCorrection; const percent = correctedOffset < 0 ? Math.abs((offset + startOffset) / this._cachedButtonWidth) : 0; this._setPositions(this._getPositions(percent)); return true } _getStartPositions() { const rtl = this._isRtlEnabled(); const signCorrection = rtl ? -1 : 1; return { content: 0, buttonsContainer: rtl ? -this._cachedButtonWidth : this._cachedItemWidth, buttons: -this._cachedButtonWidth * signCorrection } } _getPositions(percent) { const rtl = this._isRtlEnabled(); const signCorrection = rtl ? -1 : 1; const startPositions = this._getStartPositions(); return { content: startPositions.content - percent * this._cachedButtonWidth * signCorrection, buttonsContainer: startPositions.buttonsContainer - Math.min(percent, 1) * this._cachedButtonWidth * signCorrection, buttons: startPositions.buttons + Math.min(percent, 1) * this._cachedButtonWidth * signCorrection } } _getCurrentPositions() { return { content: (0, _translator.locate)(this._$cachedContent).left, buttonsContainer: (0, _translator.locate)(this._$buttonsContainer).left, buttons: (0, _translator.locate)(this._$buttons).left } } _setPositions(positions) { (0, _translator.move)(this._$cachedContent, { left: positions.content }); (0, _translator.move)(this._$buttonsContainer, { left: positions.buttonsContainer }); (0, _translator.move)(this._$buttons, { left: positions.buttons }) } _cacheItemData($itemElement) { var _this$_$cachedContent; if ($itemElement[0] === this._cachedNode) { return } this._$cachedContent = $itemElement.find(".dx-list-slide-menu-content"); this._cachedItemWidth = (0, _size.getOuterWidth)($itemElement); this._cachedButtonWidth = this._cachedButtonWidth || (0, _size.getOuterWidth)(this._$buttons); (0, _size.setWidth)(this._$buttonsContainer, this._cachedButtonWidth); if (null !== (_this$_$cachedContent = this._$cachedContent) && void 0 !== _this$_$cachedContent && _this$_$cachedContent.length) { this._cachedNode = $itemElement[0] } } _minButtonContainerLeftOffset() { return this._cachedItemWidth - this._cachedButtonWidth } _swipeEndHandler($itemElement, args) { this._cacheItemData($itemElement); const signCorrection = this._isRtlEnabled() ? 1 : -1; const offset = this._cachedItemWidth * args.offset; const endedAtReadyToDelete = !this._isReadyToDelete($itemElement) && offset * signCorrection > .2 * this._cachedButtonWidth; const readyToDelete = args.targetOffset === signCorrection && endedAtReadyToDelete; this._toggleDeleteReady($itemElement, readyToDelete); return true } _enablePositioning($itemElement) { _animation.fx.stop(this._$cachedContent, true); super._enablePositioning.apply(this, arguments); this._$buttonsContainer.appendTo($itemElement) } _disablePositioning() { super._disablePositioning.apply(this, arguments); this._$buttonsContainer.detach() } _animatePrepareDeleteReady() { return this._animateToPositions(this._getPositions(1)) } _animateForgetDeleteReady($itemElement) { this._cacheItemData($itemElement); return this._animateToPositions(this._getPositions(0)) } _animateToPositions(positions) { const that = this; const currentPosition = this._getCurrentPositions(); const durationTimePart = Math.min(Math.abs(currentPosition.content - positions.content) / this._cachedButtonWidth, 1); return _animation.fx.animate(this._$cachedContent, { from: currentPosition, to: positions, easing: "cubic-bezier(0.075, 0.82, 0.165, 1)", duration: 400 * durationTimePart, strategy: "frame", draw(positions) { that._setPositions(positions) } }) } dispose() { if (this._menu) { this._menu.$element().remove() } if (this._$buttonsContainer) { this._$buttonsContainer.remove() } super.dispose.apply(this, arguments) } }(0, _m_listEdit2.register)("menu", "slide", SwitchableEditDecoratorSlide.include(_m_listEdit.default)) }, 71202: /*!*****************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/ui/list/m_list.edit.decorator_menu_helper.js ***! \*****************************************************************************************************/ function(__unused_webpack_module, exports) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; const EditDecoratorMenuHelperMixin = { _menuEnabled() { return !!this._menuItems().length }, _menuItems() { return this._list.option("menuItems") }, _deleteEnabled() { return this._list.option("allowItemDeleting") }, _fireMenuAction($itemElement, action) { this._list._itemEventHandlerByHandler($itemElement, action, {}, { excludeValidators: ["disabled", "readOnly"] }) } }; exports.default = EditDecoratorMenuHelperMixin }, 58499: /*!**************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/ui/list/m_list.edit.decorator_registry.js ***! \**************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.register = function(option, type, decoratorClass) { const decoratorsRegistry = registry; const decoratorConfig = {}; decoratorConfig[option] = decoratorsRegistry[option] ? decoratorsRegistry[option] : {}; decoratorConfig[option][type] = decoratorClass; (0, _extend.extend)(decoratorsRegistry, decoratorConfig) }; exports.registry = void 0; var _extend = __webpack_require__( /*! ../../../core/utils/extend */ 52576); const registry = exports.registry = {} }, 71058: /*!*******************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/ui/list/m_list.edit.js ***! \*******************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _index = __webpack_require__( /*! ../../../common/core/events/utils/index */ 98834); var _message = _interopRequireDefault(__webpack_require__( /*! ../../../common/core/localization/message */ 4671)); var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../../core/renderer */ 64553)); var _extend = __webpack_require__( /*! ../../../core/utils/extend */ 52576); var _m_type = __webpack_require__( /*! ../../core/utils/m_type */ 39918); var _m_collection_widget = __webpack_require__( /*! ../../ui/collection/m_collection_widget.edit */ 3391); var _m_list = __webpack_require__( /*! ./m_list.base */ 26031); var _m_listEdit = _interopRequireDefault(__webpack_require__( /*! ./m_list.edit.provider */ 26099)); var _m_listEditStrategy = _interopRequireDefault(__webpack_require__( /*! ./m_list.edit.strategy.grouped */ 99495)); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } function _extends() { return _extends = Object.assign ? Object.assign.bind() : function(n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) { ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]) } } return n }, _extends.apply(null, arguments) } class ListEdit extends _m_list.ListBase { _supportedKeys() { const that = this; const parent = super._supportedKeys(); const moveFocusedItem = (e, moveUp) => { const editStrategy = this._editStrategy; const { focusedElement: focusedElement } = this.option(); const focusedItemIndex = editStrategy.getNormalizedIndex(focusedElement); const isLastIndexFocused = focusedItemIndex === this._getLastItemIndex(); if (isLastIndexFocused && this._dataController.isLoading()) { return } if (e.shiftKey && that.option("itemDragging.allowReordering")) { const nextItemIndex = focusedItemIndex + (moveUp ? -1 : 1); const $nextItem = editStrategy.getItemElement(nextItemIndex); const isMoveFromGroup = this.option("grouped") && (0, _renderer.default)(focusedElement).parent().get(0) !== $nextItem.parent().get(0); if (!isMoveFromGroup) { this.reorderItem(focusedElement, $nextItem); this.scrollToItem(focusedElement) } e.preventDefault() } else { const editProvider = this._editProvider; const isInternalMoving = editProvider.handleKeyboardEvents(focusedItemIndex, moveUp); if (!isInternalMoving) { moveUp ? parent.upArrow(e) : parent.downArrow(e) } } }; return _extends({}, parent, { del: e => { if (that.option("allowItemDeleting")) { e.preventDefault(); that.deleteItem(that.option("focusedElement")) } }, upArrow: e => moveFocusedItem(e, true), downArrow: e => moveFocusedItem(e), enter: function(e) { if (!this._editProvider.handleEnterPressing(e)) { parent.enter.apply(this, arguments) } }, space: function(e) { if (!this._editProvider.handleEnterPressing(e)) { parent.space.apply(this, arguments) } } }) } _updateSelection() { this._editProvider.afterItemsRendered(); super._updateSelection() } _getLastItemIndex() { return this._itemElements().length - 1 } _refreshItemElements() { super._refreshItemElements(); const excludedSelectors = this._editProvider.getExcludedItemSelectors(); if (excludedSelectors.length) { this._itemElementsCache = this._itemElementsCache.not(excludedSelectors) } } _isItemStrictEquals(item1, item2) { const privateKey = null === item1 || void 0 === item1 ? void 0 : item1.__dx_key__; if (privateKey && !this.key() && this._selection.isItemSelected(privateKey)) { return false } return super._isItemStrictEquals(item1, item2) } _getDefaultOptions() { return (0, _extend.extend)(super._getDefaultOptions(), { showSelectionControls: false, selectionMode: "none", selectAllMode: "page", onSelectAllValueChanged: null, selectAllText: _message.default.format("dxList-selectAll"), menuItems: [], menuMode: "context", allowItemDeleting: false, itemDeleteMode: "static", itemDragging: {} }) } _defaultOptionsRules() { return super._defaultOptionsRules().concat([{ device: device => "ios" === device.platform, options: { menuMode: "slide", itemDeleteMode: "slideItem" } }, { device: { platform: "android" }, options: { itemDeleteMode: "swipe" } }]) } _init() { super._init(); this._initEditProvider() } _initDataSource() { super._initDataSource(); if (!this._isPageSelectAll()) { var _this$_dataSource; null === (_this$_dataSource = this._dataSource) || void 0 === _this$_dataSource || _this$_dataSource.requireTotalCount(true) } } _isPageSelectAll() { const { selectAllMode: selectAllMode } = this.option(); return "page" === selectAllMode } _initEditProvider() { this._editProvider = new _m_listEdit.default(this) } _disposeEditProvider() { if (this._editProvider) { this._editProvider.dispose() } } _refreshEditProvider() { this._disposeEditProvider(); this._initEditProvider() } _initEditStrategy() { if (this.option("grouped")) { this._editStrategy = new _m_listEditStrategy.default(this) } else { super._initEditStrategy() } } _initMarkup() { this._refreshEditProvider(); super._initMarkup() } _renderItems() { super._renderItems(...arguments); this._editProvider.afterItemsRendered() } _renderItem(index, itemData, $container, $itemToReplace) { const { showSelectionControls: showSelectionControls, selectionMode: selectionMode } = this.option(); const $itemFrame = super._renderItem(index, itemData, $container, $itemToReplace); if (showSelectionControls && "none" !== selectionMode) { this._updateItemAriaLabel($itemFrame, itemData) } return $itemFrame } _updateItemAriaLabel($itemFrame, itemData) { var _this$_displayGetter; const label = (null === (_this$_displayGetter = this._displayGetter) || void 0 === _this$_displayGetter ? void 0 : _this$_displayGetter.call(this, itemData)) ?? (null === itemData || void 0 === itemData ? void 0 : itemData.text) ?? itemData; this.setAria("label", (0, _m_type.isObject)(label) ? _message.default.format("dxList-listAriaLabel-itemContent") : label, $itemFrame) } _selectedItemClass() { return "dx-list-item-selected" } _itemResponseWaitClass() { return "dx-list-item-response-wait" } _itemClickHandler(e) { const $itemElement = (0, _renderer.default)(e.currentTarget); if ($itemElement.is(".dx-state-disabled, .dx-state-disabled *")) { return } const handledByEditProvider = this._editProvider.handleClick($itemElement, e); if (handledByEditProvider) { return } this._saveSelectionChangeEvent(e); super._itemClickHandler(...arguments) } _shouldFireContextMenuEvent() { return super._shouldFireContextMenuEvent(...arguments) || this._editProvider.contextMenuHandlerExists() } _itemHoldHandler(e) { const $itemElement = (0, _renderer.default)(e.currentTarget); if ($itemElement.is(".dx-state-disabled, .dx-state-disabled *")) { return } const handledByEditProvider = (0, _index.isTouchEvent)(e) && this._editProvider.handleContextMenu($itemElement, e); if (handledByEditProvider) { e.handledByEditProvider = true; return } super._itemHoldHandler(...arguments) } _itemContextMenuHandler(e) { const $itemElement = (0, _renderer.default)(e.currentTarget); if ($itemElement.is(".dx-state-disabled, .dx-state-disabled *")) { return } const handledByEditProvider = !e.handledByEditProvider && this._editProvider.handleContextMenu($itemElement, e); if (handledByEditProvider) { e.preventDefault(); return } super._itemContextMenuHandler(...arguments) } _postprocessRenderItem(args) { super._postprocessRenderItem(...arguments); this._editProvider.modifyItemElement(args) } _clean() { this._disposeEditProvider(); super._clean() } focusListItem(index) { const $item = this._editStrategy.getItemElement(index); this.option("focusedElement", $item); this.focus(); this.scrollToItem(this.option("focusedElement")) } _getFlatIndex() { const { selectedIndex: selectedIndex = _m_collection_widget.NOT_EXISTING_INDEX } = this.option(); if ((0, _m_type.isNumeric)(selectedIndex) || !selectedIndex) { return selectedIndex } const $item = this._editStrategy.getItemElement(selectedIndex); const index = this.getFlatIndexByItemElement($item); return index } _optionChanged(args) { switch (args.name) { case "selectAllMode": this._initDataSource(); this._dataController.pageIndex(0); this._dataController.load(); break; case "grouped": this._clearSelectedItems(); this._initEditStrategy(); super._optionChanged(args); break; case "showSelectionControls": case "menuItems": case "menuMode": case "allowItemDeleting": case "itemDeleteMode": case "itemDragging": case "selectAllText": this._invalidate(); break; case "onSelectAllValueChanged": break; default: super._optionChanged(args) } } selectAll() { return this._selection.selectAll(this._isPageSelectAll()) } unselectAll() { return this._selection.deselectAll(this._isPageSelectAll()) } isSelectAll() { return this._selection.getSelectAllState(this._isPageSelectAll()) } getFlatIndexByItemElement(itemElement) { return this._itemElements().index(itemElement) } getItemElementByFlatIndex(flatIndex) { const $itemElements = this._itemElements(); if (flatIndex < 0 || flatIndex >= $itemElements.length) { return (0, _renderer.default)() } return $itemElements.eq(flatIndex) } getItemByIndex(index) { return this._editStrategy.getItemDataByIndex(index) } deleteItem(itemElement) { const editStrategy = this._editStrategy; const deletingElementIndex = editStrategy.getNormalizedIndex(itemElement); const { focusedElement: focusedElement, focusStateEnabled: focusStateEnabled } = this.option(); const focusedItemIndex = focusedElement ? editStrategy.getNormalizedIndex(focusedElement) : deletingElementIndex; const isLastIndexFocused = focusedItemIndex === this._getLastItemIndex(); const nextFocusedItem = isLastIndexFocused || deletingElementIndex < focusedItemIndex ? focusedItemIndex - 1 : focusedItemIndex; const promise = super.deleteItem(itemElement); return promise.done((function() { if (focusStateEnabled) { this.focusListItem(nextFocusedItem) } })) } } exports.default = ListEdit }, 26099: /*!****************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/ui/list/m_list.edit.provider.js ***! \****************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _class = _interopRequireDefault(__webpack_require__( /*! ../../../core/class */ 55620)); var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../../core/renderer */ 64553)); var _common = __webpack_require__( /*! ../../../core/utils/common */ 17781); var _extend = __webpack_require__( /*! ../../../core/utils/extend */ 52576); var _iterator = __webpack_require__( /*! ../../../core/utils/iterator */ 21274); var _ui = _interopRequireDefault(__webpack_require__( /*! ../../../ui/widget/ui.errors */ 35185)); var _m_listEdit = __webpack_require__( /*! ./m_list.edit.decorator_registry */ 58499); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } const editOptionsRegistry = []; const registerOption = function(enabledFunc, decoratorTypeFunc, decoratorSubTypeFunc) { editOptionsRegistry.push({ enabled: enabledFunc, decoratorType: decoratorTypeFunc, decoratorSubType: decoratorSubTypeFunc }) }; registerOption((function() { return this.option("menuItems").length }), (() => "menu"), (function() { return this.option("menuMode") })); registerOption((function() { return !this.option("menuItems").length && this.option("allowItemDeleting") }), (function() { const mode = this.option("itemDeleteMode"); return "toggle" === mode || "slideButton" === mode || "swipe" === mode || "static" === mode ? "delete" : "menu" }), (function() { let mode = this.option("itemDeleteMode"); if ("slideItem" === mode) { mode = "slide" } return mode })); registerOption((function() { return "none" !== this.option("selectionMode") && this.option("showSelectionControls") }), (() => "selection"), (() => "default")); registerOption((function() { return this.option("itemDragging.allowReordering") || this.option("itemDragging.allowDropInsideItem") || this.option("itemDragging.group") }), (() => "reorder"), (() => "default")); class EditProvider extends(_class.default.inherit({})) { ctor(list) { this._list = list; this._fetchRequiredDecorators() } dispose() { var _this$_decorators; if (null !== (_this$_decorators = this._decorators) && void 0 !== _this$_decorators && _this$_decorators.length) { (0, _iterator.each)(this._decorators, ((_, decorator) => { decorator.dispose() })) } } _fetchRequiredDecorators() { this._decorators = []; (0, _iterator.each)(editOptionsRegistry, ((_, option) => { const optionEnabled = option.enabled.call(this._list); if (optionEnabled) { const decoratorType = option.decoratorType.call(this._list); const decoratorSubType = option.decoratorSubType.call(this._list); const decorator = this._createDecorator(decoratorType, decoratorSubType); this._decorators.push(decorator) } })) } _createDecorator(type, subType) { const decoratorClass = this._findDecorator(type, subType); return new decoratorClass(this._list) } _findDecorator(type, subType) { var _registry$type; const foundDecorator = null === (_registry$type = _m_listEdit.registry[type]) || void 0 === _registry$type ? void 0 : _registry$type[subType]; if (!foundDecorator) { throw _ui.default.Error("E1012", type, subType) } return foundDecorator } modifyItemElement(args) { const $itemElement = (0, _renderer.default)(args.itemElement); const config = { $itemElement: $itemElement }; this._prependBeforeBags($itemElement, config); this._appendAfterBags($itemElement, config); this._applyDecorators("modifyElement", config) } afterItemsRendered() { this._applyDecorators("afterRender") } _prependBeforeBags($itemElement, config) { const $beforeBags = this._collectDecoratorsMarkup("beforeBag", config, "dx-list-item-before-bag"); $itemElement.prepend($beforeBags) } _appendAfterBags($itemElement, config) { const $afterBags = this._collectDecoratorsMarkup("afterBag", config, "dx-list-item-after-bag"); $itemElement.append($afterBags) } _collectDecoratorsMarkup(method, config, containerClass) { const $collector = (0, _renderer.default)("<div>"); (0, _iterator.each)(this._decorators, (function() { const $container = (0, _renderer.default)("<div>").addClass(containerClass); this[method]((0, _extend.extend)({ $container: $container }, config)); if ($container.children().length) { $collector.append($container) } })); return $collector.children() } _applyDecorators(method, config) { (0, _iterator.each)(this._decorators, (function() { this[method](config) })) } _handlerExists(name) { if (!this._decorators) { return false } const decorators = this._decorators; const { length: length } = decorators; for (let i = 0; i < length; i++) { if (decorators[i][name] !== _common.noop) { return true } } return false } _eventHandler(name, $itemElement, e) { if (!this._decorators) { return false } let response = false; const decorators = this._decorators; const { length: length } = decorators; for (let i = 0; i < length; i++) { response = decorators[i][name]($itemElement, e); if (response) { break } } return response } handleClick($itemElement, e) { return this._eventHandler("handleClick", $itemElement, e) } handleKeyboardEvents(currentFocusedIndex, moveFocusUp) { return this._eventHandler("handleKeyboardEvents", currentFocusedIndex, moveFocusUp) } handleEnterPressing(e) { return this._eventHandler("handleEnterPressing", e) } contextMenuHandlerExists() { return this._handlerExists("handleContextMenu") } handleContextMenu($itemElement, e) { return this._eventHandler("handleContextMenu", $itemElement, e) } getExcludedItemSelectors() { const excludedSelectors = []; this._applyDecorators("getExcludedSelectors", excludedSelectors); return excludedSelectors.join(",") } } exports.default = EditProvider }, 21978: /*!**************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/ui/list/m_list.edit.search.js ***! \**************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _ui = _interopRequireDefault(__webpack_require__( /*! ../../../ui/widget/ui.search_box_mixin */ 44690)); var _m_list = _interopRequireDefault(__webpack_require__( /*! ./m_list.edit */ 71058)); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } const ListSearch = _m_list.default.inherit(_ui.default).inherit({ _addWidgetPrefix: className => `dx-list-${className}`, _getCombinedFilter() { const dataController = this._dataController; const storeLoadOptions = { filter: dataController.filter() }; dataController.addSearchFilter(storeLoadOptions); const { filter: filter } = storeLoadOptions; return filter }, _initDataSource() { const value = this.option("searchValue"); const expr = this.option("searchExpr"); const mode = this.option("searchMode"); this.callBase(); const dataController = this._dataController; (null === value || void 0 === value ? void 0 : value.length) && dataController.searchValue(value); mode.length && dataController.searchOperation(_ui.default.getOperationBySearchMode(mode)); expr && dataController.searchExpr(expr) } }); exports.default = ListSearch }, 99495: /*!************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/ui/list/m_list.edit.strategy.grouped.js ***! \************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _query = _interopRequireDefault(__webpack_require__( /*! ../../../common/data/query */ 30771)); var _store_helper = _interopRequireDefault(__webpack_require__( /*! ../../../common/data/store_helper */ 66177)); var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../../core/renderer */ 64553)); var _iterator = __webpack_require__( /*! ../../../core/utils/iterator */ 21274); var _type = __webpack_require__( /*! ../../../core/utils/type */ 11528); var _m_collection_widgetEditStrategy = _interopRequireDefault(__webpack_require__( /*! ../../ui/collection/m_collection_widget.edit.strategy.plain */ 60498)); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } const combineIndex = indices => (indices.group << 20) + indices.item; const splitIndex = combinedIndex => ({ group: combinedIndex >> 20, item: 1048575 & combinedIndex }); class GroupedEditStrategy extends _m_collection_widgetEditStrategy.default { _groupElements() { return this._collectionWidget._itemContainer().find(".dx-list-group") } _groupItemElements($group) { return $group.find(".dx-list-item") } getIndexByItemData(itemData) { var _itemData$items; const groups = this._collectionWidget.option("items"); let index = false; if (!itemData) { return false } if (null !== (_itemData$items = itemData.items) && void 0 !== _itemData$items && _itemData$items.length) { itemData = itemData.items[0] }(0, _iterator.each)(groups, ((groupIndex, group) => { if (!group.items) { return false }(0, _iterator.each)(group.items, ((itemIndex, item) => { if (item !== itemData) { return true } index = { group: groupIndex, item: itemIndex }; return false })); if (index) { return false } })); return index } getItemDataByIndex(index) { var _items$index$group; const items = this._collectionWidget.option("items"); if ((0, _type.isNumeric)(index)) { return this.itemsGetter()[index] } return index && (null === (_items$index$group = items[index.group]) || void 0 === _items$index$group ? void 0 : _items$index$group.items[index.item]) || null } itemsGetter() { let resultItems = []; const { items: items } = this._collectionWidget.option(); for (let i = 0; i < items.length; i++) { var _items$i; if (null !== (_items$i = items[i]) && void 0 !== _items$i && _items$i.items) { resultItems = resultItems.concat(items[i].items) } else { resultItems.push(items[i]) } } return resultItems } deleteItemAtIndex(index) { const indices = splitIndex(index); const itemGroup = this._collectionWidget.option("items")[indices.group].items; itemGroup.splice(indices.item, 1) } getKeysByItems(items) { let plainItems = []; let i; for (i = 0; i < items.length; i++) { var _items$i2; if (null !== (_items$i2 = items[i]) && void 0 !== _items$i2 && _items$i2.items) { plainItems = plainItems.concat(items[i].items) } else { plainItems.push(items[i]) } } const result = []; for (i = 0; i < plainItems.length; i++) { result.push(this._collectionWidget.keyOf(plainItems[i])) } return result } getIndexByKey(key, items) { const groups = items || this._collectionWidget.option("items"); let index = -1; const that = this; (0, _iterator.each)(groups, ((groupIndex, group) => { if (!group.items) { return }(0, _iterator.each)(group.items, ((itemIndex, item) => { const itemKey = that._collectionWidget.keyOf(item); if (that._equalKeys(itemKey, key)) { index = { group: groupIndex, item: itemIndex }; return false } })); if (-1 !== index) { return false } })); return index } _getGroups(items) { const dataController = this._collectionWidget._dataController; const group = dataController.group(); if (group) { return _store_helper.default.queryByOptions((0, _query.default)(items), { group: group }).toArray() } return this._collectionWidget.option("items") } getItemsByKeys(keys, items) { const result = []; const groups = this._getGroups(items); const groupItemByKeyMap = {}; const getItemMeta = key => { const index = this.getIndexByKey(key, groups); const group = index && groups[index.group]; if (!group) { return } return { groupKey: group.key, item: group.items[index.item] } }; (0, _iterator.each)(keys, ((_, key) => { const itemMeta = getItemMeta(key); if (!itemMeta) { return } const { groupKey: groupKey } = itemMeta; const { item: item } = itemMeta; let selectedGroup = groupItemByKeyMap[groupKey]; if (!selectedGroup) { selectedGroup = { key: groupKey, items: [] }; groupItemByKeyMap[groupKey] = selectedGroup; result.push(selectedGroup) } selectedGroup.items.push(item) })); return result } moveItemAtIndexToIndex(movingIndex, destinationIndex) { const items = this._collectionWidget.option("items"); const movingIndices = splitIndex(movingIndex); const destinationIndices = splitIndex(destinationIndex); const movingItemGroup = items[movingIndices.group].items; const destinationItemGroup = items[destinationIndices.group].items; const movedItemData = movingItemGroup[movingIndices.item]; movingItemGroup.splice(movingIndices.item, 1); destinationItemGroup.splice(destinationIndices.item, 0, movedItemData) } _isItemIndex(index) { return index && (0, _type.isNumeric)(index.group) && (0, _type.isNumeric)(index.item) } _getNormalizedItemIndex(itemElement) { const $item = (0, _renderer.default)(itemElement); const $group = $item.closest(".dx-list-group"); if (!$group.length) { return -1 } return combineIndex({ group: this._groupElements().index($group), item: this._groupItemElements($group).index($item) }) } _normalizeItemIndex(index) { return combineIndex(index) } _denormalizeItemIndex(index) { return splitIndex(index) } _getItemByNormalizedIndex(index) { const indices = splitIndex(index); const $group = this._groupElements().eq(indices.group); return this._groupItemElements($group).eq(indices.item) } _itemsFromSameParent(firstIndex, secondIndex) { return splitIndex(firstIndex).group === splitIndex(secondIndex).group } } exports.default = GroupedEditStrategy }, 79269: /*!*************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/ui/list/modules/m_context.js ***! \*************************************************************************************/ function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { __webpack_require__( /*! ../m_list.edit.decorator.context */ 73368) }, 94433: /*!**********************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/ui/list/modules/m_deleting.context.js ***! \**********************************************************************************************/ function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { __webpack_require__( /*! ./m_context */ 79269) }, 14128: /*!**************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/ui/list/modules/m_deleting.js ***! \**************************************************************************************/ function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { __webpack_require__( /*! ./m_deleting.context */ 94433); __webpack_require__( /*! ./m_deleting.slideButton */ 62627); __webpack_require__( /*! ./m_deleting.slideItem */ 87364); __webpack_require__( /*! ./m_deleting.static */ 32806); __webpack_require__( /*! ./m_deleting.swipe */ 49188); __webpack_require__( /*! ./m_deleting.toggle */ 6872) }, 62627: /*!**************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/ui/list/modules/m_deleting.slideButton.js ***! \**************************************************************************************************/ function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { __webpack_require__( /*! ../m_list.edit.decorator.switchable.button */ 41265) }, 87364: /*!************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/ui/list/modules/m_deleting.slideItem.js ***! \************************************************************************************************/ function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { __webpack_require__( /*! ../m_list.edit.decorator.switchable.slide */ 94824) }, 32806: /*!*********************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/ui/list/modules/m_deleting.static.js ***! \*********************************************************************************************/ function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { __webpack_require__( /*! ../m_list.edit.decorator.static */ 3041) }, 49188: /*!********************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/ui/list/modules/m_deleting.swipe.js ***! \********************************************************************************************/ function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { __webpack_require__( /*! ../m_list.edit.decorator.swipe */ 98645) }, 6872: /*!*********************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/ui/list/modules/m_deleting.toggle.js ***! \*********************************************************************************************/ function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { __webpack_require__( /*! ../m_list.edit.decorator.switchable.button */ 41265) }, 27721: /*!**************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/ui/list/modules/m_dragging.js ***! \**************************************************************************************/ function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { __webpack_require__( /*! ../m_list.edit.decorator.reorder */ 86856) }, 18928: /*!************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/ui/list/modules/m_search.js ***! \************************************************************************************/ function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { var _text_box = _interopRequireDefault(__webpack_require__( /*! ../../../../ui/text_box */ 20780)); var _ui = _interopRequireDefault(__webpack_require__( /*! ../../../../ui/widget/ui.search_box_mixin */ 44690)); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } _ui.default.setEditorClass(_text_box.default) }, 44804: /*!***************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/ui/list/modules/m_selection.js ***! \***************************************************************************************/ function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { __webpack_require__( /*! ../m_list.edit.decorator.selection */ 65009) }, 55797: /*!**************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/ui/m_accordion.js ***! \**************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _animation = __webpack_require__( /*! ../../common/core/animation */ 16826); var _click = __webpack_require__( /*! ../../common/core/events/click */ 64044); var _events_engine = _interopRequireDefault(__webpack_require__( /*! ../../common/core/events/core/events_engine */ 92774)); var _index = __webpack_require__( /*! ../../common/core/events/utils/index */ 98834); var _component_registrator = _interopRequireDefault(__webpack_require__( /*! ../../core/component_registrator */ 92848)); var _devices = _interopRequireDefault(__webpack_require__( /*! ../../core/devices */ 65951)); var _dom_adapter = _interopRequireDefault(__webpack_require__( /*! ../../core/dom_adapter */ 64960)); var _element = __webpack_require__( /*! ../../core/element */ 61404); var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../core/renderer */ 64553)); var _bindable_template = __webpack_require__( /*! ../../core/templates/bindable_template */ 27286); var _common = __webpack_require__( /*! ../../core/utils/common */ 17781); var _deferred = __webpack_require__( /*! ../../core/utils/deferred */ 87739); var _extend = __webpack_require__( /*! ../../core/utils/extend */ 52576); var _icon = __webpack_require__( /*! ../../core/utils/icon */ 69629); var iteratorUtils = function(e, r) { if (!r && e && e.__esModule) { return e } if (null === e || "object" != typeof e && "function" != typeof e) { return { default: e } } var t = _getRequireWildcardCache(r); if (t && t.has(e)) { return t.get(e) } var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) { if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u] } } return n.default = e, t && t.set(e, n), n }(__webpack_require__( /*! ../../core/utils/iterator */ 21274)); var _size = __webpack_require__( /*! ../../core/utils/size */ 57653); var _type = __webpack_require__( /*! ../../core/utils/type */ 11528); var _themes = __webpack_require__( /*! ../../ui/themes */ 52071); var _m_collection_widget = _interopRequireDefault(__webpack_require__( /*! ../ui/collection/m_collection_widget.live_update */ 68005)); function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) { return null } var r = new WeakMap, t = new WeakMap; return (_getRequireWildcardCache = function(e) { return e ? t : r })(e) } function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } function _extends() { return _extends = Object.assign ? Object.assign.bind() : function(n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) { ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]) } } return n }, _extends.apply(null, arguments) } class Accordion extends _m_collection_widget.default { _getDefaultOptions() { return _extends({}, super._getDefaultOptions(), { hoverStateEnabled: true, itemTitleTemplate: "title", onItemTitleClick: null, selectedIndex: 0, collapsible: false, multiple: false, animationDuration: 300, deferRendering: true, selectByClick: true, activeStateEnabled: true, _itemAttributes: { role: "tab" }, _animationEasing: "ease" }) } _defaultOptionsRules() { return super._defaultOptionsRules().concat([{ device: () => "desktop" === _devices.default.real().deviceType && !_devices.default.isSimulator(), options: { focusStateEnabled: true } }, { device: () => (0, _themes.isMaterialBased)(), options: { animationDuration: 200, _animationEasing: "cubic-bezier(0.4, 0, 0.2, 1)" } }]) } _itemElements() { return this._itemContainer().children(this._itemSelector()) } _init() { super._init(); this._activeStateUnit = ".dx-accordion-item"; this.option("selectionRequired", !this.option("collapsible")); this.option("selectionMode", this.option("multiple") ? "multiple" : "single"); const $element = this.$element(); $element.addClass("dx-accordion"); this._$container = (0, _renderer.default)("<div>").addClass("dx-accordion-wrapper"); $element.append(this._$container) } _initTemplates() { super._initTemplates(); this._templateManager.addDefaultTemplates({ title: new _bindable_template.BindableTemplate((($container, data) => { if ((0, _type.isPlainObject)(data)) { const $iconElement = (0, _icon.getImageContainer)(data.icon); if ($iconElement) { $container.append($iconElement) } if ((0, _type.isDefined)(data.title) && !(0, _type.isPlainObject)(data.title)) { $container.append(_dom_adapter.default.createTextNode(data.title)) } } else if ((0, _type.isDefined)(data)) { $container.text(String(data)) } $container.wrapInner((0, _renderer.default)("<div>").addClass("dx-accordion-item-title-caption")) }), ["title", "icon"], this.option("integrationOptions.watchMethod")) }) } _initMarkup() { this._deferredItems = []; super._initMarkup(); this.setAria({ role: "tablist", multiselectable: this.option("multiple") }); (0, _common.deferRender)((() => { const selectedItemIndices = this._getSelectedItemIndices(); this._renderSelection(selectedItemIndices, []) })) } _postProcessRenderItems() { this._updateItemHeights(true) } _itemDataKey() { return "dxAccordionItemData" } _itemClass() { return "dx-accordion-item" } _itemContainer() { return this._$container } _itemTitles() { return this._itemElements().find(".dx-accordion-item-title") } _itemContents() { return this._itemElements().find(".dx-accordion-item-body") } _getItemData(target) { return (0, _renderer.default)(target).parent().data(this._itemDataKey()) || super._getItemData.apply(this, arguments) } _executeItemRenderAction(itemData) { if (itemData.type) { return } super._executeItemRenderAction.apply(this, arguments) } _itemSelectHandler(e) { if ((0, _renderer.default)(e.target).closest(this._itemContents()).length) { return } super._itemSelectHandler.apply(this, arguments) } _afterItemElementDeleted($item, deletedActionArgs) { this._deferredItems.splice(deletedActionArgs.itemIndex, 1); super._afterItemElementDeleted.apply(this, arguments) } _renderItemContent(args) { const itemTitleDeferred = super._renderItemContent((0, _extend.extend)({}, args, { contentClass: "dx-accordion-item-title", templateProperty: "titleTemplate", defaultTemplateName: this.option("itemTitleTemplate") })); const callBase = super._renderItemContent.bind(this); itemTitleDeferred.done((itemTitle => { this._attachItemTitleClickAction(itemTitle); const deferred = (0, _deferred.Deferred)(); if ((0, _type.isDefined)(this._deferredItems[args.index])) { this._deferredItems[args.index] = deferred } else { this._deferredItems.push(deferred) } if (!this.option("deferRendering") || this._getSelectedItemIndices().includes(args.index)) { deferred.resolve() } deferred.done((() => { callBase((0, _extend.extend)({}, args, { contentClass: "dx-accordion-item-body", container: (0, _element.getPublicElement)((0, _renderer.default)("<div>").appendTo((0, _renderer.default)(itemTitle).parent())) })) })) })) } _attachItemTitleClickAction(itemTitle) { const eventName = (0, _index.addNamespace)(_click.name, this.NAME); _events_engine.default.off(itemTitle, eventName); _events_engine.default.on(itemTitle, eventName, this._itemTitleClickHandler.bind(this)) } _itemTitleClickHandler(e) { this._itemDXEventHandler(e, "onItemTitleClick") } _renderSelection(addedSelection, removedSelection) { this._itemElements().addClass("dx-accordion-item-closed"); this.setAria("hidden", true, this._itemContents()); this._updateItems(addedSelection, removedSelection) } _updateSelection(addedSelection, removedSelection) { this._updateItems(addedSelection, removedSelection); this._updateItemHeightsWrapper(false) } _updateItems(addedSelection, removedSelection) { const $items = this._itemElements(); iteratorUtils.each(addedSelection, ((_, index) => { var _this$_deferredItems$; null === (_this$_deferredItems$ = this._deferredItems[index]) || void 0 === _this$_deferredItems$ || _this$_deferredItems$.resolve(); const $item = $items.eq(index).addClass("dx-accordion-item-opened").removeClass("dx-accordion-item-closed"); this.setAria("hidden", false, $item.find(".dx-accordion-item-body")) })); iteratorUtils.each(removedSelection, ((_, index) => { const $item = $items.eq(index).removeClass("dx-accordion-item-opened"); this.setAria("hidden", true, $item.find(".dx-accordion-item-body")) })) } _updateItemHeightsWrapper(skipAnimation) { if (this.option("templatesRenderAsynchronously")) { this._animationTimer = setTimeout((() => { this._updateItemHeights(skipAnimation) })) } else { this._updateItemHeights(skipAnimation) } } _updateItemHeights(skipAnimation) { const that = this; const deferredAnimate = that._deferredAnimate; const itemHeight = this._splitFreeSpace(this._calculateFreeSpace()); clearTimeout(this._animationTimer); return _deferred.when.apply(_renderer.default, [].slice.call(this._itemElements()).map((item => that._updateItemHeight((0, _renderer.default)(item), itemHeight, skipAnimation)))).done((() => { if (deferredAnimate) { deferredAnimate.resolveWith(that) } })) } _updateItemHeight($item, itemHeight, skipAnimation) { const $title = $item.children(".dx-accordion-item-title"); if (_animation.fx.isAnimating($item)) { _animation.fx.stop($item) } const startItemHeight = (0, _size.getOuterHeight)($item); let finalItemHeight; if ($item.hasClass("dx-accordion-item-opened")) { finalItemHeight = itemHeight + (0, _size.getOuterHeight)($title); if (!finalItemHeight) { (0, _size.setHeight)($item, "auto"); finalItemHeight = (0, _size.getOuterHeight)($item) } } else { finalItemHeight = (0, _size.getOuterHeight)($title) } return this._animateItem($item, startItemHeight, finalItemHeight, skipAnimation, !!itemHeight) } _animateItem($element, startHeight, endHeight, skipAnimation, fixedHeight) { let d; if (skipAnimation || startHeight === endHeight) { $element.css("height", endHeight); d = (0, _deferred.Deferred)().resolve() } else { const { animationDuration: animationDuration, _animationEasing: easing } = this.option(); d = _animation.fx.animate($element, { type: "custom", from: { height: startHeight }, to: { height: endHeight }, duration: animationDuration, easing: easing }) } return d.done((() => { if ($element.hasClass("dx-accordion-item-opened") && !fixedHeight) { $element.css("height", "") } $element.not(".dx-accordion-item-opened").addClass("dx-accordion-item-closed") })) } _splitFreeSpace(freeSpace) { if (!freeSpace) { return freeSpace } return freeSpace / this.option("selectedItems").length } _calculateFreeSpace() { const { height: height } = this.option(); if (void 0 === height || "auto" === height) { return } const $titles = this._itemTitles(); let itemsHeight = 0; iteratorUtils.each($titles, ((_, title) => { itemsHeight += (0, _size.getOuterHeight)(title) })); return (0, _size.getHeight)(this.$element()) - itemsHeight } _visibilityChanged(visible) { if (visible) { this._dimensionChanged() } } _dimensionChanged() { this._updateItemHeights(true) } _clean() { clearTimeout(this._animationTimer); super._clean() } _tryParseItemPropertyName(fullName) { const matches = fullName.match(/.*\.(.*)/); if ((0, _type.isDefined)(matches) && matches.length >= 1) { return matches[1] } } _optionChanged(args) { switch (args.name) { case "items": { super._optionChanged(args); if ("title" === this._tryParseItemPropertyName(args.fullName)) { this._renderSelection(this._getSelectedItemIndices(), []) } if ("visible" === this._tryParseItemPropertyName(args.fullName)) { this._updateItemHeightsWrapper(true) } const { repaintChangesOnly: repaintChangesOnly } = this.option(); if (true === repaintChangesOnly && "items" === args.fullName) { this._updateItemHeightsWrapper(true); this._renderSelection(this._getSelectedItemIndices(), []) } break } case "animationDuration": case "onItemTitleClick": case "_animationEasing": break; case "collapsible": this.option("selectionRequired", !this.option("collapsible")); break; case "itemTitleTemplate": case "height": case "deferRendering": this._invalidate(); break; case "multiple": this.option("selectionMode", args.value ? "multiple" : "single"); break; default: super._optionChanged(args) } } expandItem(index) { this._deferredAnimate = (0, _deferred.Deferred)(); this.selectItem(index); return this._deferredAnimate.promise() } collapseItem(index) { this._deferredAnimate = (0, _deferred.Deferred)(); this.unselectItem(index); return this._deferredAnimate.promise() } updateDimensions() { return this._updateItemHeights(false) } }(0, _component_registrator.default)("dxAccordion", Accordion); exports.default = Accordion }, 70557: /*!*****************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/ui/m_action_sheet.js ***! \*****************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _message = _interopRequireDefault(__webpack_require__( /*! ../../common/core/localization/message */ 4671)); var _component_registrator = _interopRequireDefault(__webpack_require__( /*! ../../core/component_registrator */ 92848)); var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../core/renderer */ 64553)); var _bindable_template = __webpack_require__( /*! ../../core/templates/bindable_template */ 27286); var _common = __webpack_require__( /*! ../../core/utils/common */ 17781); var _deferred = __webpack_require__( /*! ../../core/utils/deferred */ 87739); var _extend = __webpack_require__( /*! ../../core/utils/extend */ 52576); var _window = __webpack_require__( /*! ../../core/utils/window */ 3104); var _button = _interopRequireDefault(__webpack_require__( /*! ../../ui/button */ 64973)); var _m_collection_widget = _interopRequireDefault(__webpack_require__( /*! ../ui/collection/m_collection_widget.edit */ 3391)); var _m_popover = _interopRequireDefault(__webpack_require__( /*! ../ui/popover/m_popover */ 7784)); var _m_popup = _interopRequireDefault(__webpack_require__( /*! ../ui/popup/m_popup */ 43864)); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } function _extends() { return _extends = Object.assign ? Object.assign.bind() : function(n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) { ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]) } } return n }, _extends.apply(null, arguments) } const window = (0, _window.getWindow)(); class ActionSheet extends _m_collection_widget.default { _getDefaultOptions() { return _extends({}, super._getDefaultOptions(), { usePopover: false, target: null, title: "", showTitle: true, showCancelButton: true, cancelText: _message.default.format("Cancel"), onCancelClick: null, visible: false, noDataText: "", focusStateEnabled: false, selectByClick: false }) } _defaultOptionsRules() { return super._defaultOptionsRules().concat([{ device: { platform: "ios", tablet: true }, options: { usePopover: true } }]) } _initTemplates() { super._initTemplates(); this._templateManager.addDefaultTemplates({ item: new _bindable_template.BindableTemplate((($container, data) => { const button = new _button.default((0, _renderer.default)("<div>"), (0, _extend.extend)({ onClick: null === data || void 0 === data ? void 0 : data.click, stylingMode: (null === data || void 0 === data ? void 0 : data.stylingMode) || "outlined" }, data)); $container.append(button.$element()) }), ["disabled", "icon", "text", "type", "onClick", "click", "stylingMode"], this.option("integrationOptions.watchMethod")) }) } _itemContainer() { return this._$itemContainer } _itemClass() { return "dx-actionsheet-item" } _itemDataKey() { return "dxActionSheetItemData" } _toggleVisibility() {} _renderDimensions() {} _initMarkup() { super._initMarkup(); this.$element().addClass("dx-actionsheet"); this._createItemContainer() } _render() { this._renderPopup() } _createItemContainer() { this._$itemContainer = (0, _renderer.default)("<div>").addClass("dx-actionsheet-container"); this._renderDisabled() } _renderDisabled() { const { disabled: disabled } = this.option(); this._$itemContainer.toggleClass("dx-state-disabled", disabled) } _renderPopup() { this._$popup = (0, _renderer.default)("<div>").appendTo(this.$element()); this._isPopoverMode() ? this._createPopover() : this._createPopup(); this._renderPopupTitle(); this._mapPopupOption("visible") } _mapPopupOption(optionName) { var _this$_popup; null === (_this$_popup = this._popup) || void 0 === _this$_popup || _this$_popup.option(optionName, this.option(optionName)) } _isPopoverMode() { const { usePopover: usePopover, target: target } = this.option(); return usePopover && target } _renderPopupTitle() { var _this$_popup2; this._mapPopupOption("showTitle"); null === (_this$_popup2 = this._popup) || void 0 === _this$_popup2 || _this$_popup2.$wrapper().toggleClass("dx-actionsheet-without-title", !this.option("showTitle")) } _clean() { if (this._$popup) { this._$popup.remove() } super._clean() } _overlayConfig() { return { onInitialized: function(args) { this._popup = args.component }.bind(this), disabled: false, showTitle: true, title: this.option("title"), deferRendering: true, onContentReady: this._popupContentReadyAction.bind(this), onHidden: this.hide.bind(this) } } _createPopover() { this._createComponent(this._$popup, _m_popover.default, (0, _extend.extend)(this._overlayConfig(), { width: this.option("width") || 200, height: this.option("height") || "auto", target: this.option("target") })); this._popup.$overlayContent().attr("role", "dialog"); this._popup.$wrapper().addClass("dx-actionsheet-popover-wrapper") } _createPopup() { this._createComponent(this._$popup, _m_popup.default, (0, _extend.extend)(this._overlayConfig(), { dragEnabled: false, width: this.option("width") || "100%", height: this.option("height") || "auto", showCloseButton: false, position: { my: "bottom", at: "bottom", of: window }, animation: { show: { type: "slide", duration: 400, from: { position: { my: "top", at: "bottom", of: window } }, to: { position: { my: "bottom", at: "bottom", of: window } } }, hide: { type: "slide", duration: 400, from: { position: { my: "bottom", at: "bottom", of: window } }, to: { position: { my: "top", at: "bottom", of: window } } } } })); this._popup.$wrapper().addClass("dx-actionsheet-popup-wrapper") } _popupContentReadyAction() { this._popup.$content().append(this._$itemContainer); this._attachClickEvent(); this._attachHoldEvent(); this._prepareContent(); this._renderContent(); this._renderCancelButton() } _renderCancelButton() { if (this._isPopoverMode()) { return } if (this._$cancelButton) { this._$cancelButton.remove() } if (this.option("showCancelButton")) { var _this$_popup3; const cancelClickAction = this._createActionByOption("onCancelClick") || _common.noop; const that = this; this._$cancelButton = (0, _renderer.default)("<div>").addClass("dx-actionsheet-cancel").appendTo(null === (_this$_popup3 = this._popup) || void 0 === _this$_popup3 ? void 0 : _this$_popup3.$content()); this._createComponent(this._$cancelButton, _button.default, { disabled: false, stylingMode: "outlined", text: this.option("cancelText"), onClick(e) { const hidingArgs = { event: e, cancel: false }; cancelClickAction(hidingArgs); if (!hidingArgs.cancel) { that.hide() } }, integrationOptions: {} }) } } _attachItemClickEvent() {} _itemClickHandler(e) { super._itemClickHandler(e); if (!(0, _renderer.default)(e.target).is(".dx-state-disabled, .dx-state-disabled *")) { this.hide() } } _itemHoldHandler(e) { super._itemHoldHandler(e); if (!(0, _renderer.default)(e.target).is(".dx-state-disabled, .dx-state-disabled *")) { this.hide() } } _optionChanged(args) { switch (args.name) { case "width": case "height": case "visible": case "title": this._mapPopupOption(args.name); break; case "disabled": this._renderDisabled(); break; case "showTitle": this._renderPopupTitle(); break; case "showCancelButton": case "onCancelClick": case "cancelText": this._renderCancelButton(); break; case "target": case "usePopover": case "items": this._invalidate(); break; default: super._optionChanged(args) } } toggle(showing) { const that = this; const d = (0, _deferred.Deferred)(); that._popup.toggle(showing).done((() => { that.option("visible", showing); d.resolveWith(that) })); return d.promise() } show() { return this.toggle(true) } hide() { return this.toggle(false) } }(0, _component_registrator.default)("dxActionSheet", ActionSheet); exports.default = ActionSheet }, 71795: /*!*****************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/ui/m_autocomplete.js ***! \*****************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _index = __webpack_require__( /*! ../../common/core/events/utils/index */ 98834); var _component_registrator = _interopRequireDefault(__webpack_require__( /*! ../../core/component_registrator */ 92848)); var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../core/renderer */ 64553)); var _deferred = __webpack_require__( /*! ../../core/utils/deferred */ 87739); var _extend = __webpack_require__( /*! ../../core/utils/extend */ 52576); var _m_drop_down_list = _interopRequireDefault(__webpack_require__( /*! ../ui/drop_down_editor/m_drop_down_list */ 20287)); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } function _extends() { return _extends = Object.assign ? Object.assign.bind() : function(n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) { ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]) } } return n }, _extends.apply(null, arguments) } class Autocomplete extends _m_drop_down_list.default { _supportedKeys() { let item = this._list ? this._list.option("focusedElement") : null; const parent = super._supportedKeys(); item = item && (0, _renderer.default)(item); return _extends({}, parent, { upArrow(e) { if (parent.upArrow.apply(this, arguments) && !(0, _index.isCommandKeyPressed)(e)) { e.preventDefault(); e.stopPropagation(); if (item && !this._calcNextItem(-1)) { this._clearFocusedItem(); return false } } return true }, downArrow(e) { if (parent.downArrow.apply(this, arguments) && !(0, _index.isCommandKeyPressed)(e)) { e.preventDefault(); e.stopPropagation(); if (item && !this._calcNextItem(1)) { this._clearFocusedItem(); return false } } return true }, enter(e) { if (!item) { this.close() } const { opened: opened } = this.option(); if (opened) { e.preventDefault() } return opened } }) } _getDefaultOptions() { return _extends({}, super._getDefaultOptions(), { minSearchLength: 1, maxItemCount: 10, noDataText: "", showDropDownButton: false, searchEnabled: true }) } _initMarkup() { super._initMarkup(); this.$element().addClass("dx-autocomplete") } _getAriaAutocomplete() { const { disabled: disabled, readOnly: readOnly } = this.option(); const isInputEditable = !(readOnly || disabled); return isInputEditable ? "list" : "none" } _displayGetterExpr() { return this.option("valueExpr") } _closeOutsideDropDownHandler(_ref) { let { target: target } = _ref; return !(0, _renderer.default)(target).closest(this.$element()).length } _renderDimensions() { super._renderDimensions(); this._updatePopupWidth(); this._updateListDimensions() } _popupWrapperClass() { return `${super._popupWrapperClass()} dx-autocomplete-popup-wrapper` } _listConfig() { return (0, _extend.extend)(super._listConfig(), { pageLoadMode: "none", onSelectionChanged: e => { this._setSelectedItem(e.addedItems[0]) } }) } _listItemClickHandler(e) { this._saveValueChangeEvent(e.event); const value = this._displayGetter(e.itemData); this.option("value", value); this.close() } _setListDataSource() { if (!this._list) { return } this._list.option("selectedItems", []); super._setListDataSource() } _refreshSelected() {} _searchCanceled() { super._searchCanceled(); this.close() } _loadItem(value, cache) { const selectedItem = this._getItemFromPlain(value, cache); return (0, _deferred.Deferred)().resolve(selectedItem).promise() } _dataSourceOptions() { return { paginate: true, pageSize: this.option("maxItemCount") } } _searchDataSource(searchValue) { this._dataSource.pageSize(this.option("maxItemCount")); super._searchDataSource(searchValue); this._clearFocusedItem() } _clearFocusedItem() { if (this._list) { this._list.option("focusedElement", null); this._list.option("selectedIndex", -1) } } _renderValueEventName() { return "input keyup" } _valueChangeEventHandler(e) { const value = this._input().val() || null; return super._valueChangeEventHandler(e, value) } _optionChanged(args) { switch (args.name) { case "readOnly": case "disabled": super._optionChanged(args); this._setDefaultAria(); break; case "maxItemCount": this._searchDataSource(); break; case "valueExpr": this._compileDisplayGetter(); this._setListOption("displayExpr", this._displayGetterExpr()); super._optionChanged(args); break; default: super._optionChanged(args) } } clear() { super.clear(); this.close() } reset() { let value = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : void 0; if (arguments.length) { super.reset(value) } else { super.reset() } this.close() } }(0, _component_registrator.default)("dxAutocomplete", Autocomplete); exports.default = Autocomplete }, 30434: /*!********************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/ui/m_box.js ***! \********************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _component_registrator = _interopRequireDefault(__webpack_require__( /*! ../../core/component_registrator */ 92848)); var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../core/renderer */ 64553)); var _extend = __webpack_require__( /*! ../../core/utils/extend */ 52576); var _inflector = __webpack_require__( /*! ../../core/utils/inflector */ 53124); var _iterator = __webpack_require__( /*! ../../core/utils/iterator */ 21274); var _style = __webpack_require__( /*! ../../core/utils/style */ 58515); var _type = __webpack_require__( /*! ../../core/utils/type */ 11528); var _window = __webpack_require__( /*! ../../core/utils/window */ 3104); var _uiCollection_widget = _interopRequireDefault(__webpack_require__( /*! ../../ui/collection/ui.collection_widget.edit */ 7607)); var _item = _interopRequireDefault(__webpack_require__( /*! ../ui/collection/item */ 30845)); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } const MINSIZE_MAP = { row: "minWidth", col: "minHeight" }; const MAXSIZE_MAP = { row: "maxWidth", col: "maxHeight" }; const FLEX_JUSTIFY_CONTENT_MAP = { start: "flex-start", end: "flex-end", center: "center", "space-between": "space-between", "space-around": "space-around" }; const FLEX_ALIGN_ITEMS_MAP = { start: "flex-start", end: "flex-end", center: "center", stretch: "stretch" }; const FLEX_DIRECTION_MAP = { row: "row", col: "column" }; const setFlexProp = (element, prop, value) => { value = (0, _style.normalizeStyleProp)(prop, value); element.style[(0, _style.styleProp)(prop)] = value; if (!(0, _window.hasWindow)()) { if ("" === value || !(0, _type.isDefined)(value)) { return } const cssName = (0, _inflector.dasherize)(prop); const styleExpr = `${cssName}: ${value};`; (0, _style.setStyle)(element, styleExpr, false) } }; class BoxItem extends _item.default { _renderVisible(value, oldValue) { super._renderVisible(value); if ((0, _type.isDefined)(oldValue)) { this._options.fireItemStateChangedAction({ name: "visible", state: value, oldState: oldValue }) } } } class LayoutStrategy { constructor($element, option) { this._$element = $element; this._option = option } renderBox() { this._$element.css({ display: `${(0,_style.stylePropPrefix)("flexDirection")}flex` }); setFlexProp(this._$element.get(0), "flexDirection", FLEX_DIRECTION_MAP[this._option("direction")]) } renderAlign() { this._$element.css({ justifyContent: this._normalizedAlign() }) } _normalizedAlign() { const align = this._option("align"); return align in FLEX_JUSTIFY_CONTENT_MAP ? FLEX_JUSTIFY_CONTENT_MAP[align] : align } renderCrossAlign() { this._$element.css({ alignItems: this._normalizedCrossAlign() }) } _normalizedCrossAlign() { const crossAlign = this._option("crossAlign"); return crossAlign in FLEX_ALIGN_ITEMS_MAP ? FLEX_ALIGN_ITEMS_MAP[crossAlign] : crossAlign } renderItems($items) { const flexPropPrefix = (0, _style.stylePropPrefix)("flexDirection"); const direction = this._option("direction"); (0, _iterator.each)($items, (function() { const $item = (0, _renderer.default)(this); const item = $item.data("dxBoxItemData"); $item.css({ display: `${flexPropPrefix}flex` }).css(MAXSIZE_MAP[direction], item.maxSize || "none").css(MINSIZE_MAP[direction], item.minSize || "0"); setFlexProp($item.get(0), "flexBasis", item.baseSize || 0); setFlexProp($item.get(0), "flexGrow", item.ratio); setFlexProp($item.get(0), "flexShrink", (0, _type.isDefined)(item.shrink) ? item.shrink : 1); $item.children().each(((_, itemContent) => { (0, _renderer.default)(itemContent).css({ width: "auto", height: "auto", display: `${(0,_style.stylePropPrefix)("flexDirection")}flex`, flexBasis: 0 }); setFlexProp(itemContent, "flexGrow", 1); setFlexProp(itemContent, "flexDirection", (0, _renderer.default)(itemContent)[0].style.flexDirection || "column") })) })) } } class Box extends _uiCollection_widget.default { _getDefaultOptions() { return (0, _extend.extend)(super._getDefaultOptions(), { direction: "row", align: "start", crossAlign: "stretch", activeStateEnabled: false, focusStateEnabled: false, onItemStateChanged: void 0, _queue: void 0 }) } _itemClass() { return "dx-box-item" } _itemDataKey() { return "dxBoxItemData" } _itemElements() { return this._itemContainer().children(this._itemSelector()) } _init() { super._init(); this.$element().addClass("dx-box-flex"); this._initLayout(); this._initBoxQueue() } _initLayout() { this._layout = new LayoutStrategy(this.$element(), this.option.bind(this)) } _initBoxQueue() { this._queue = this.option("_queue") || [] } _queueIsNotEmpty() { return this.option("_queue") ? false : !!this._queue.length } _pushItemToQueue($item, config) { this._queue.push({ $item: $item, config: config }) } _shiftItemFromQueue() { return this._queue.shift() } _initMarkup() { this.$element().addClass("dx-box"); this._layout.renderBox(); super._initMarkup(); this._renderAlign(); this._renderActions() } _renderActions() { this._onItemStateChanged = this._createActionByOption("onItemStateChanged") } _renderAlign() { this._layout.renderAlign(); this._layout.renderCrossAlign() } _renderItems(items) { super._renderItems(items); while (this._queueIsNotEmpty()) { const item = this._shiftItemFromQueue(); this._createComponent(item.$item, Box, (0, _extend.extend)({ itemTemplate: this.option("itemTemplate"), itemHoldTimeout: this.option("itemHoldTimeout"), onItemHold: this.option("onItemHold"), onItemClick: this.option("onItemClick"), onItemContextMenu: this.option("onItemContextMenu"), onItemRendered: this.option("onItemRendered"), _queue: this._queue }, item.config)) } this._layout.renderItems(this._itemElements()) } _renderItemContent(args) { const $itemNode = args.itemData && args.itemData.node; if ($itemNode) { return this._renderItemContentByNode(args, $itemNode) } return super._renderItemContent(args) } _postprocessRenderItem(args) { const boxConfig = args.itemData.box; if (!boxConfig) { return } this._pushItemToQueue(args.itemContent, boxConfig) } _createItemByTemplate(itemTemplate, args) { if (args.itemData.box) { return itemTemplate.source ? itemTemplate.source() : (0, _renderer.default)() } return super._createItemByTemplate(itemTemplate, args) } _itemOptionChanged(item, property, value, prevValue) { if ("visible" === property) { this._onItemStateChanged({ name: property, state: value, oldState: false !== prevValue }) } super._itemOptionChanged(item, property, value) } _optionChanged(args) { switch (args.name) { case "_queue": case "direction": this._invalidate(); break; case "align": this._layout.renderAlign(); break; case "crossAlign": this._layout.renderCrossAlign(); break; default: super._optionChanged(args) } } _itemOptions() { const options = super._itemOptions(); options.fireItemStateChangedAction = e => { this._onItemStateChanged(e) }; return options } } Box.ItemClass = BoxItem; (0, _component_registrator.default)("dxBox", Box); exports.default = Box }, 14111: /*!*****************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/ui/m_button_group.js ***! \*****************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = exports.BUTTON_GROUP_CLASS = void 0; var _component_registrator = _interopRequireDefault(__webpack_require__( /*! ../../core/component_registrator */ 92848)); var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../core/renderer */ 64553)); var _bindable_template = __webpack_require__( /*! ../../core/templates/bindable_template */ 27286); var _extend = __webpack_require__( /*! ../../core/utils/extend */ 52576); var _type = __webpack_require__( /*! ../../core/utils/type */ 11528); var _button = _interopRequireDefault(__webpack_require__( /*! ../../ui/button */ 64973)); var _uiCollection_widget = _interopRequireDefault(__webpack_require__( /*! ../../ui/collection/ui.collection_widget.edit */ 7607)); var _widget = _interopRequireDefault(__webpack_require__( /*! ../core/widget/widget */ 89275)); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } function _extends() { return _extends = Object.assign ? Object.assign.bind() : function(n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) { ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]) } } return n }, _extends.apply(null, arguments) } const BUTTON_GROUP_CLASS = exports.BUTTON_GROUP_CLASS = "dx-buttongroup"; const BUTTON_GROUP_WRAPPER_CLASS = `${BUTTON_GROUP_CLASS}-wrapper`; const BUTTON_GROUP_ITEM_CLASS = `${BUTTON_GROUP_CLASS}-item`; const BUTTON_GROUP_FIRST_ITEM_CLASS = `${BUTTON_GROUP_CLASS}-first-item`; const BUTTON_GROUP_LAST_ITEM_CLASS = `${BUTTON_GROUP_CLASS}-last-item`; const BUTTON_GROUP_ITEM_HAS_WIDTH = `${BUTTON_GROUP_ITEM_CLASS}-has-width`; const BUTTON_GROUP_STYLING_MODE_CLASS = { contained: "dx-buttongroup-mode-contained", outlined: "dx-buttongroup-mode-outlined", text: "dx-buttongroup-mode-text" }; class ButtonCollection extends _uiCollection_widget.default { _initTemplates() { super._initTemplates(); this._templateManager.addDefaultTemplates({ item: new _bindable_template.BindableTemplate((($container, data, model) => { this._prepareItemStyles($container); const template = this.option("buttonTemplate"); this._createComponent($container, _button.default, (0, _extend.extend)({}, model, data, this._getBasicButtonOptions(), { _templateData: this._hasCustomTemplate(template) ? model : {}, template: model.template || template })) }), ["text", "type", "icon", "disabled", "visible", "hint"], this.option("integrationOptions.watchMethod")) }) } _getBasicButtonOptions() { const { hoverStateEnabled: hoverStateEnabled, activeStateEnabled: activeStateEnabled, stylingMode: stylingMode } = this.option(); return { focusStateEnabled: false, onClick: null, hoverStateEnabled: hoverStateEnabled, activeStateEnabled: activeStateEnabled, stylingMode: stylingMode } } _getDefaultOptions() { return _extends({}, super._getDefaultOptions(), { itemTemplateProperty: null }) } _hasCustomTemplate(template) { return (0, _type.isFunction)(template) || this.option("integrationOptions.templates")[template] } _selectedItemClass() { return "dx-item-selected dx-state-selected" } _prepareItemStyles($item) { const itemIndex = $item.data("dxItemIndex"); if (0 === itemIndex) { $item.addClass(BUTTON_GROUP_FIRST_ITEM_CLASS) } const { items: items } = this.option(); items && itemIndex === items.length - 1 && $item.addClass(BUTTON_GROUP_LAST_ITEM_CLASS); $item.addClass("dx-shape-standard") } _renderItemContent(args) { args.container = (0, _renderer.default)(args.container).parent(); return super._renderItemContent(args) } _setAriaSelectionAttribute($target, value) { this.setAria("pressed", value, $target) } _renderItemContentByNode(args, $node) { args.container = (0, _renderer.default)(args.container.children().first()); return super._renderItemContentByNode(args, $node) } _focusTarget() { return this.$element().parent() } _keyboardEventBindingTarget() { return this._focusTarget() } _enterKeyHandler(e) { e.preventDefault(); super._enterKeyHandler(e) } _refreshContent() { this._prepareContent(); this._renderContent() } _itemClass() { return BUTTON_GROUP_ITEM_CLASS } _itemSelectHandler(e) { const { selectionMode: selectionMode } = this.option(); if ("single" === selectionMode && this.isItemSelected(e.currentTarget)) { return } super._itemSelectHandler(e) } } class ButtonGroup extends _widget.default { _getDefaultOptions() { return _extends({}, super._getDefaultOptions(), { hoverStateEnabled: true, focusStateEnabled: true, selectionMode: "single", selectedItems: [], selectedItemKeys: [], stylingMode: "contained", keyExpr: "text", items: [], buttonTemplate: "content", onSelectionChanged: null, onItemClick: null }) } _init() { super._init(); this._createItemClickAction() } _createItemClickAction() { this._itemClickAction = this._createActionByOption("onItemClick") } _initMarkup() { this.setAria("role", "group"); this.$element().addClass(BUTTON_GROUP_CLASS); this._renderStylingMode(); this._renderButtons(); this._syncSelectionOptions(); super._initMarkup() } _renderStylingMode() { const { stylingMode: stylingMode } = this.option(); for (const key in BUTTON_GROUP_STYLING_MODE_CLASS) { this.$element().removeClass(BUTTON_GROUP_STYLING_MODE_CLASS[key]) } this.$element().addClass(BUTTON_GROUP_STYLING_MODE_CLASS[stylingMode ?? "contained"]) } _fireSelectionChangeEvent(addedItems, removedItems) { this._createActionByOption("onSelectionChanged", { excludeValidators: ["disabled", "readOnly"] })({ addedItems: addedItems, removedItems: removedItems }) } _renderButtons() { const $buttons = (0, _renderer.default)("<div>").addClass(BUTTON_GROUP_WRAPPER_CLASS).appendTo(this.$element()); const { selectedItems: selectedItems } = this.option(); const options = { selectionMode: this.option("selectionMode"), items: this.option("items"), keyExpr: this.option("keyExpr"), buttonTemplate: this.option("buttonTemplate"), scrollingEnabled: false, selectedItemKeys: this.option("selectedItemKeys"), focusStateEnabled: this.option("focusStateEnabled"), hoverStateEnabled: this.option("hoverStateEnabled"), activeStateEnabled: this.option("activeStateEnabled"), stylingMode: this.option("stylingMode"), accessKey: this.option("accessKey"), tabIndex: this.option("tabIndex"), noDataText: "", selectionRequired: false, onItemRendered: e => { const width = this.option("width"); if ((0, _type.isDefined)(width)) { (0, _renderer.default)(e.itemElement).addClass(BUTTON_GROUP_ITEM_HAS_WIDTH) } }, onSelectionChanged: e => { this._syncSelectionOptions(); this._fireSelectionChangeEvent(e.addedItems, e.removedItems) }, onItemClick: e => { this._itemClickAction(e) } }; if ((0, _type.isDefined)(selectedItems) && selectedItems.length) { options.selectedItems = selectedItems } this._buttonsCollection = this._createComponent($buttons, ButtonCollection, options) } _syncSelectionOptions() { this._setOptionWithoutOptionChange("selectedItems", this._buttonsCollection.option("selectedItems")); this._setOptionWithoutOptionChange("selectedItemKeys", this._buttonsCollection.option("selectedItemKeys")) } _optionChanged(args) { switch (args.name) { case "stylingMode": case "selectionMode": case "keyExpr": case "buttonTemplate": case "items": case "activeStateEnabled": case "focusStateEnabled": case "hoverStateEnabled": case "tabIndex": this._invalidate(); break; case "selectedItemKeys": case "selectedItems": this._buttonsCollection.option(args.name, args.value); break; case "onItemClick": this._createItemClickAction(); break; case "onSelectionChanged": break; case "width": super._optionChanged(args); this._buttonsCollection.itemElements().toggleClass(BUTTON_GROUP_ITEM_HAS_WIDTH, !!args.value); break; default: super._optionChanged(args) } } }(0, _component_registrator.default)("dxButtonGroup", ButtonGroup); exports.default = ButtonGroup }, 27932: /*!********************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/ui/m_defer_rendering.js ***! \********************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _transition_executor = __webpack_require__( /*! ../../common/core/animation/transition_executor/transition_executor */ 33054); var _events_engine = _interopRequireDefault(__webpack_require__( /*! ../../common/core/events/core/events_engine */ 92774)); var _visibility_change = __webpack_require__( /*! ../../common/core/events/visibility_change */ 18029); var _component_registrator = _interopRequireDefault(__webpack_require__( /*! ../../core/component_registrator */ 92848)); var _dom_adapter = _interopRequireDefault(__webpack_require__( /*! ../../core/dom_adapter */ 64960)); var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../core/renderer */ 64553)); var _common = __webpack_require__( /*! ../../core/utils/common */ 17781); var _deferred = __webpack_require__( /*! ../../core/utils/deferred */ 87739); var _iterator = __webpack_require__( /*! ../../core/utils/iterator */ 21274); var _position = __webpack_require__( /*! ../../core/utils/position */ 41639); var _type = __webpack_require__( /*! ../../core/utils/type */ 11528); var _window = __webpack_require__( /*! ../../core/utils/window */ 3104); var _load_indicator = _interopRequireDefault(__webpack_require__( /*! ../../ui/load_indicator */ 11979)); var _widget = _interopRequireDefault(__webpack_require__( /*! ../core/widget/widget */ 89275)); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } function _extends() { return _extends = Object.assign ? Object.assign.bind() : function(n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) { ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]) } } return n }, _extends.apply(null, arguments) } const window = (0, _window.getWindow)(); const ACTIONS = ["onRendered", "onShown"]; class DeferRendering extends _widget.default { _getDefaultOptions() { return _extends({}, super._getDefaultOptions(), { showLoadIndicator: false, onRendered: null, onShown: null }) } _getAnonymousTemplateName() { return "content" } _init() { this.transitionExecutor = new _transition_executor.TransitionExecutor; this._initElement(); this._initRender(); this._$initialContent = this.$element().clone().contents(); this._initActions(); super._init() } _initElement() { this.$element().addClass("dx-deferrendering") } _initRender() { const that = this; const $element = this.$element(); const renderWhen = this.option("renderWhen"); const doRender = () => that._renderDeferredContent(); if ((0, _type.isPromise)(renderWhen)) { (0, _deferred.fromPromise)(renderWhen).done(doRender) } else { $element.data("dx-render-delegate", doRender); if (void 0 === renderWhen) { $element.addClass("dx-pending-rendering-manual") } } } _initActions() { this._actions = {}; (0, _iterator.each)(ACTIONS, ((_, action) => { this._actions[action] = this._createActionByOption(action) || _common.noop })) } _initMarkup() { super._initMarkup(); if (!this._initContent) { this._initContent = this._renderContent; this._renderContent = () => {} } this._initContent() } _renderContentImpl() { this.$element().removeClass("dx-widget"); this.$element().append(this._$initialContent); this._setLoadingState() } _renderDeferredContent() { const that = this; const $element = this.$element(); const result = (0, _deferred.Deferred)(); $element.removeClass("dx-pending-rendering-manual"); $element.addClass("dx-pending-rendering-active"); this._abortRenderTask(); this._renderTask = (0, _common.executeAsync)((() => { that._renderImpl().done((() => { const shownArgs = { element: $element }; that._actions.onShown([shownArgs]); result.resolve(shownArgs) })).fail((function() { result.rejectWith(result, arguments) })) })); return result.promise() } _isElementInViewport(element) { const rect = (0, _position.getBoundingRect)(element); return rect.bottom >= 0 && rect.right >= 0 && rect.top <= (window.innerHeight || _dom_adapter.default.getDocumentElement().clientHeight) && rect.left <= (window.innerWidth || _dom_adapter.default.getDocumentElement().clientWidth) } _animate() { const that = this; const $element = this.$element(); const animation = (0, _window.hasWindow)() && this.option("animation"); const staggerItemSelector = this.option("staggerItemSelector"); let animatePromise; that.transitionExecutor.stop(); if (animation) { if (staggerItemSelector) { $element.find(staggerItemSelector).each((function() { if (that._isElementInViewport(this)) { that.transitionExecutor.enter((0, _renderer.default)(this), animation) } })) } else { that.transitionExecutor.enter($element, animation) } animatePromise = that.transitionExecutor.start() } else { animatePromise = (0, _deferred.Deferred)().resolve().promise() } return animatePromise } _renderImpl() { const $element = this.$element(); const renderedArgs = { element: $element }; const contentTemplate = this._getTemplate(this._templateManager.anonymousTemplateName); if (contentTemplate) { contentTemplate.render({ container: $element.empty(), noModel: true }) } this._setRenderedState(); _events_engine.default.trigger($element, "dxcontentrendered"); this._actions.onRendered([renderedArgs]); this._isRendered = true; return this._animate() } _setLoadingState() { const $element = this.$element(); const hasCustomLoadIndicator = !!$element.find(".dx-visible-while-pending-rendering").length; $element.addClass("dx-pending-rendering"); if (!hasCustomLoadIndicator) { $element.children().addClass("dx-invisible-while-pending-rendering") } if (this.option("showLoadIndicator")) { this._showLoadIndicator($element) } } _showLoadIndicator($container) { this._$loadIndicator = new _load_indicator.default((0, _renderer.default)("<div>"), { visible: true }).$element().addClass("dx-deferrendering-load-indicator"); (0, _renderer.default)("<div>").addClass("dx-loadindicator-container").addClass("dx-deferrendering-loadindicator-container").append(this._$loadIndicator).appendTo($container) } _setRenderedState() { const $element = this.$element(); if (this._$loadIndicator) { this._$loadIndicator.remove() } $element.removeClass("dx-pending-rendering"); $element.removeClass("dx-pending-rendering-active"); (0, _visibility_change.triggerShownEvent)($element.children()) } _optionChanged(args) { const { value: value } = args; const { previousValue: previousValue } = args; switch (args.name) { case "renderWhen": if (false === previousValue && true === value) { this._renderOrAnimate() } else if (true === previousValue && false === value) { this.transitionExecutor.stop(); this._setLoadingState() } break; case "showLoadIndicator": case "onRendered": case "onShown": break; default: super._optionChanged(args) } } _renderOrAnimate() { let result; if (this._isRendered) { this._setRenderedState(); result = this._animate() } else { result = this._renderDeferredContent() } return result } renderContent() { return this._renderOrAnimate() } _abortRenderTask() { if (this._renderTask) { this._renderTask.abort(); this._renderTask = void 0 } } _dispose() { this.transitionExecutor.stop(true); this._abortRenderTask(); this._actions = void 0; this._$initialContent = void 0; super._dispose() } }(0, _component_registrator.default)("dxDeferRendering", DeferRendering); exports.default = DeferRendering }, 84719: /*!***********************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/ui/m_dialog.js ***! \***********************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.custom = exports.confirm = exports.alert = void 0; var _events_engine = _interopRequireDefault(__webpack_require__( /*! ../../common/core/events/core/events_engine */ 92774)); var _message = _interopRequireDefault(__webpack_require__( /*! ../../common/core/localization/message */ 4671)); var _action = _interopRequireDefault(__webpack_require__( /*! ../../core/action */ 88412)); var _config = _interopRequireDefault(__webpack_require__( /*! ../../core/config */ 66636)); var _devices = _interopRequireDefault(__webpack_require__( /*! ../../core/devices */ 65951)); var _guid = _interopRequireDefault(__webpack_require__( /*! ../../core/guid */ 19427)); var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../core/renderer */ 64553)); var _common = __webpack_require__( /*! ../../core/utils/common */ 17781); var _deferred = __webpack_require__( /*! ../../core/utils/deferred */ 87739); var _extend = __webpack_require__( /*! ../../core/utils/extend */ 52576); var _size = __webpack_require__( /*! ../../core/utils/size */ 57653); var _type = __webpack_require__( /*! ../../core/utils/type */ 11528); var _view_port = __webpack_require__( /*! ../../core/utils/view_port */ 55355); var _window = __webpack_require__( /*! ../../core/utils/window */ 3104); var _ui = _interopRequireDefault(__webpack_require__( /*! ../../ui/popup/ui.popup */ 10720)); var _themes = __webpack_require__( /*! ../../ui/themes */ 52071); var _ui2 = _interopRequireDefault(__webpack_require__( /*! ../../ui/widget/ui.errors */ 35185)); var _m_dom = _interopRequireDefault(__webpack_require__( /*! ../core/utils/m_dom */ 76400)); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } function _extends() { return _extends = Object.assign ? Object.assign.bind() : function(n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) { ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]) } } return n }, _extends.apply(null, arguments) } const window = (0, _window.getWindow)(); const DEFAULT_BUTTON = { text: "OK", onClick: () => true }; const getApplyButtonConfig = () => { if ((0, _themes.isFluent)()) { return { stylingMode: "contained", type: "default" } } return {} }; const getCancelButtonConfig = () => { if ((0, _themes.isFluent)()) { return { stylingMode: "outlined", type: "default" } } return {} }; const custom = function(options) { const deferred = (0, _deferred.Deferred)(); options = options || {}; const $element = (0, _renderer.default)("<div>").addClass("dx-dialog").appendTo((0, _view_port.value)()); const isMessageDefined = "message" in options; const isMessageHtmlDefined = "messageHtml" in options; if (isMessageDefined) { _ui2.default.log("W1013") } const messageHtml = String(isMessageHtmlDefined ? options.messageHtml : options.message); const messageId = options.title ? null : new _guid.default; const $message = (0, _renderer.default)("<div>").addClass("dx-dialog-message").html(messageHtml).attr("id", messageId); const popupToolbarItems = []; const popupInstance = new _ui.default($element, (0, _extend.extend)({ title: options.title ?? "", showTitle: (0, _common.ensureDefined)(options.showTitle, true), dragEnabled: (0, _common.ensureDefined)(options.dragEnabled, true), height: "auto", width: options.width, showCloseButton: options.showCloseButton || false, ignoreChildEvents: false, container: $element, visualContainer: window, dragAndResizeArea: window, onContentReady(args) { args.component.$content().addClass("dx-dialog-content").append($message); if (messageId) { args.component.$overlayContent().attr("aria-labelledby", messageId) } }, onShowing(e) { e.component.bottomToolbar().addClass("dx-dialog-buttons").find(".dx-button").addClass("dx-dialog-button"); _m_dom.default.resetActiveElement() }, onShown(e) { const $firstButton = e.component.bottomToolbar().find(".dx-button").first(); _events_engine.default.trigger($firstButton, "focus") }, onHiding() { deferred.reject() }, onHidden(_ref) { let { element: element } = _ref; (0, _renderer.default)(element).remove() }, animation: { show: { type: "pop", duration: 400 }, hide: { type: "pop", duration: 400, to: { opacity: 0, scale: 0 }, from: { opacity: 1, scale: 1 } } }, rtlEnabled: (0, _config.default)().rtlEnabled, position: { boundaryOffset: { h: 10, v: 0 } } }, options.popupOptions)); const buttonOptions = options.buttons || [DEFAULT_BUTTON]; buttonOptions.forEach((options => { const action = new _action.default(options.onClick, { context: popupInstance }); popupToolbarItems.push({ toolbar: "bottom", location: _devices.default.current().android ? "after" : "center", widget: "dxButton", options: _extends({}, options, { onClick() { const result = action.execute(...arguments); hide(result) } }) }) })); popupInstance.option("toolbarItems", popupToolbarItems); popupInstance.$wrapper().addClass("dx-dialog-wrapper"); if (options.position) { popupInstance.option("position", options.position) } popupInstance.$wrapper().addClass("dx-dialog-root"); function hide(value) { deferred.resolve(value); popupInstance.hide() } return { show: function() { if ("phone" === _devices.default.real().deviceType) { const isPortrait = (0, _size.getHeight)(window) > (0, _size.getWidth)(window); const width = isPortrait ? "90%" : "60%"; popupInstance.option({ width: width }) } popupInstance.show(); return deferred.promise() }, hide: hide } }; exports.custom = custom; exports.alert = function(messageHtml) { let title = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : ""; let showTitle = arguments.length > 2 ? arguments[2] : void 0; const options = (0, _type.isPlainObject)(messageHtml) ? messageHtml : { title: title, messageHtml: messageHtml, showTitle: showTitle, buttons: [_extends({}, DEFAULT_BUTTON, getApplyButtonConfig())], dragEnabled: showTitle }; return custom(options).show() }; exports.confirm = function(messageHtml) { let title = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : ""; let showTitle = arguments.length > 2 ? arguments[2] : void 0; const options = (0, _type.isPlainObject)(messageHtml) ? messageHtml : { title: title, messageHtml: messageHtml, showTitle: showTitle, buttons: [_extends({ text: _message.default.format("Yes"), onClick: () => true }, getApplyButtonConfig()), _extends({ text: _message.default.format("No"), onClick: () => false }, getCancelButtonConfig())], dragEnabled: showTitle }; return custom(options).show() } }, 41163: /*!******************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/ui/m_drop_down_box.js ***! \******************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _events_engine = _interopRequireDefault(__webpack_require__( /*! ../../common/core/events/core/events_engine */ 92774)); var _index = __webpack_require__( /*! ../../common/core/events/utils/index */ 98834); var _component_registrator = _interopRequireDefault(__webpack_require__( /*! ../../core/component_registrator */ 92848)); var _devices = _interopRequireDefault(__webpack_require__( /*! ../../core/devices */ 65951)); var _dom_adapter = _interopRequireDefault(__webpack_require__( /*! ../../core/dom_adapter */ 64960)); var _element = __webpack_require__( /*! ../../core/element */ 61404); var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../core/renderer */ 64553)); var _common = __webpack_require__( /*! ../../core/utils/common */ 17781); var _deferred = __webpack_require__( /*! ../../core/utils/deferred */ 87739); var _extend = __webpack_require__( /*! ../../core/utils/extend */ 52576); var _iterator = __webpack_require__( /*! ../../core/utils/iterator */ 21274); var _type = __webpack_require__( /*! ../../core/utils/type */ 11528); var _ui = _interopRequireDefault(__webpack_require__( /*! ../../ui/editor/ui.data_expression */ 7632)); var _selectors = __webpack_require__( /*! ../../ui/widget/selectors */ 35944); var _m_drop_down_editor = _interopRequireDefault(__webpack_require__( /*! ../ui/drop_down_editor/m_drop_down_editor */ 28906)); var _m_utils = __webpack_require__( /*! ../ui/overlay/m_utils */ 67169); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } function _extends() { return _extends = Object.assign ? Object.assign.bind() : function(n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) { ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]) } } return n }, _extends.apply(null, arguments) } const { getActiveElement: getActiveElement } = _dom_adapter.default; class DropDownBox extends _m_drop_down_editor.default { _supportedKeys() { return _extends({}, super._supportedKeys(), { tab(e) { if (!this.option("opened")) { return } const $tabbableElements = this._getTabbableElements(); const $focusableElement = e.shiftKey ? $tabbableElements.last() : $tabbableElements.first(); if ($focusableElement) { _events_engine.default.trigger($focusableElement, "focus") } e.preventDefault() } }) } _getTabbableElements() { return this._getElements().filter(_selectors.tabbable) } _getElements() { return (0, _renderer.default)(this.content()).find("*") } _getDefaultOptions() { return _extends({}, super._getDefaultOptions(), { acceptCustomValue: false, contentTemplate: "content", openOnFieldClick: true, displayValueFormatter: value => Array.isArray(value) ? value.join(", ") : value, useHiddenSubmitElement: true }) } _getAnonymousTemplateName() { return "content" } _initTemplates() { super._initTemplates() } _initMarkup() { this._initDataExpressions(); this.$element().addClass("dx-dropdownbox"); super._initMarkup() } _setSubmitValue() { const value = this.option("value"); const submitValue = this._shouldUseDisplayValue(value) ? this._displayGetter(value) : value; this._getSubmitElement().val(submitValue) } _shouldUseDisplayValue(value) { return "this" === this.option("valueExpr") && (0, _type.isObject)(value) } _sortValuesByKeysOrder(orderedKeys, values) { const sortedValues = values.sort(((a, b) => orderedKeys.indexOf(a.itemKey) - orderedKeys.indexOf(b.itemKey))); return sortedValues.map((x => x.itemDisplayValue)) } _renderInputValue() { let { renderOnly: renderOnly } = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {}; this._rejectValueLoading(); const values = []; if (!this._dataSource) { super._renderInputValue({ renderOnly: renderOnly, value: values }); return (0, _deferred.Deferred)().resolve() } const currentValue = this._getCurrentValue(); let keys = currentValue ?? []; keys = Array.isArray(keys) ? keys : [keys]; const itemLoadDeferreds = (0, _iterator.map)(keys, (key => { const deferred = (0, _deferred.Deferred)(); this._loadItem(key).always((item => { const displayValue = this._displayGetter(item); if ((0, _type.isDefined)(displayValue)) { values.push({ itemKey: key, itemDisplayValue: displayValue }) } else if (this.option("acceptCustomValue")) { values.push({ itemKey: key, itemDisplayValue: key }) } deferred.resolve() })); return deferred })); const callBase = super._renderInputValue.bind(this); return _deferred.when.apply(this, itemLoadDeferreds).always((() => { const orderedValues = this._sortValuesByKeysOrder(keys, values); this.option("displayValue", orderedValues); callBase({ renderOnly: renderOnly, value: values.length && orderedValues }) })) } _loadItem(value) { const deferred = (0, _deferred.Deferred)(); const that = this; const selectedItem = (0, _common.grep)(this.option("items") || [], (item => this._isValueEquals(this._valueGetter(item), value)))[0]; if (void 0 !== selectedItem) { deferred.resolve(selectedItem) } else { this._loadValue(value).done((item => { deferred.resolve(item) })).fail((args => { if (null !== args && void 0 !== args && args.shouldSkipCallback) { return } if (that.option("acceptCustomValue")) { deferred.resolve(value) } else { deferred.reject() } })) } return deferred.promise() } _popupTabHandler(e) { if ("tab" !== (0, _index.normalizeKeyName)(e)) { return } const $firstTabbable = this._getTabbableElements().first().get(0); const $lastTabbable = this._getTabbableElements().last().get(0); const $target = e.target; const moveBackward = !!($target === $firstTabbable && e.shiftKey); const moveForward = !!($target === $lastTabbable && !e.shiftKey); if (moveBackward || moveForward) { this.close(); _events_engine.default.trigger(this._input(), "focus"); if (moveBackward) { e.preventDefault() } } } _renderPopupContent() { if ("content" === this.option("contentTemplate")) { return } const contentTemplate = this._getTemplateByOption("contentTemplate"); if (!(contentTemplate && this.option("contentTemplate"))) { return } const $popupContent = this._popup.$content(); const templateData = { value: this._fieldRenderData(), component: this }; $popupContent.empty(); contentTemplate.render({ container: (0, _element.getPublicElement)($popupContent), model: templateData }) } _canShowVirtualKeyboard() { return _devices.default.real().mac } _isNestedElementActive() { const activeElement = getActiveElement(); return activeElement && this._popup.$content().get(0).contains(activeElement) } _shouldHideOnParentScroll() { return "desktop" === _devices.default.real().deviceType && this._canShowVirtualKeyboard() && this._isNestedElementActive() } _popupHiddenHandler() { super._popupHiddenHandler(); this._popupPosition = void 0 } _popupPositionedHandler(e) { super._popupPositionedHandler(e); this._popupPosition = e.position } _getDefaultPopupPosition(isRtlEnabled) { const { my: my, at: at } = super._getDefaultPopupPosition(isRtlEnabled); return { my: my, at: at, offset: { v: -1 }, collision: "flipfit" } } _popupConfig() { const { focusStateEnabled: focusStateEnabled } = this.option(); return _extends({}, super._popupConfig(), { tabIndex: -1, dragEnabled: false, focusStateEnabled: focusStateEnabled, contentTemplate: "content", hideOnParentScroll: this._shouldHideOnParentScroll.bind(this), position: (0, _extend.extend)(this.option("popupPosition"), { of: this.$element() }), _ignoreFunctionValueDeprecation: true, maxHeight: function() { var _this$_popupPosition; const popupLocation = null === (_this$_popupPosition = this._popupPosition) || void 0 === _this$_popupPosition ? void 0 : _this$_popupPosition.v.location; return (0, _m_utils.getElementMaxHeightByWindow)(this.$element(), popupLocation) }.bind(this) }) } _popupShownHandler() { super._popupShownHandler(); const $firstElement = this._getTabbableElements().first(); _events_engine.default.trigger($firstElement, "focus") } _setCollectionWidgetOption() {} _optionChanged(args) { this._dataExpressionOptionChanged(args); switch (args.name) { case "dataSource": this._renderInputValue(); break; case "displayValue": this.option("text", args.value); break; case "displayExpr": this._renderValue(); break; case "contentTemplate": this._invalidate(); break; default: super._optionChanged(args) } } } DropDownBox.include(_ui.default); (0, _component_registrator.default)("dxDropDownBox", DropDownBox); exports.default = DropDownBox }, 73096: /*!*********************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/ui/m_drop_down_button.js ***! \*********************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _message = _interopRequireDefault(__webpack_require__( /*! ../../common/core/localization/message */ 4671)); var _component_registrator = _interopRequireDefault(__webpack_require__( /*! ../../core/component_registrator */ 92848)); var _element = __webpack_require__( /*! ../../core/element */ 61404); var _guid = _interopRequireDefault(__webpack_require__( /*! ../../core/guid */ 19427)); var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../core/renderer */ 64553)); var _function_template = __webpack_require__( /*! ../../core/templates/function_template */ 38699); var _common = __webpack_require__( /*! ../../core/utils/common */ 17781); var _data = __webpack_require__( /*! ../../core/utils/data */ 31e3); var _deferred = __webpack_require__( /*! ../../core/utils/deferred */ 87739); var _extend = __webpack_require__( /*! ../../core/utils/extend */ 52576); var _icon = __webpack_require__( /*! ../../core/utils/icon */ 69629); var _type = __webpack_require__( /*! ../../core/utils/type */ 11528); var _data_controller = _interopRequireDefault(__webpack_require__( /*! ../../data_controller */ 14531)); var _button_group = _interopRequireDefault(__webpack_require__( /*! ../../ui/button_group */ 17809)); var _list_light = _interopRequireDefault(__webpack_require__( /*! ../../ui/list_light */ 80070)); var _widget = _interopRequireDefault(__webpack_require__( /*! ../core/widget/widget */ 89275)); var _m_utils = __webpack_require__( /*! ../ui/drop_down_editor/m_utils */ 6807); var _m_popup = _interopRequireDefault(__webpack_require__( /*! ../ui/popup/m_popup */ 43864)); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } function _extends() { return _extends = Object.assign ? Object.assign.bind() : function(n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) { ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]) } } return n }, _extends.apply(null, arguments) } class DropDownButton extends _widget.default { _getDefaultOptions() { return _extends({}, super._getDefaultOptions(), { itemTemplate: "item", keyExpr: "this", selectedItem: null, selectedItemKey: null, stylingMode: "outlined", deferRendering: true, noDataText: _message.default.format("dxCollectionWidget-noDataText"), useSelectMode: false, splitButton: false, showArrowIcon: true, template: null, text: "", type: "normal", onButtonClick: null, onSelectionChanged: null, onItemClick: null, opened: false, items: null, dataSource: null, focusStateEnabled: true, hoverStateEnabled: true, dropDownOptions: {}, dropDownContentTemplate: "content", wrapItemText: false, useItemTextAsTitle: true, grouped: false, groupTemplate: "group", buttonGroupOptions: {} }) } _setOptionsByReference() { super._setOptionsByReference(); (0, _extend.extend)(this._optionsByReference, { selectedItem: true }) } _init() { super._init(); this._createItemClickAction(); this._createActionClickAction(); this._createSelectionChangedAction(); this._initDataController(); this._compileKeyGetter(); this._compileDisplayGetter(); this._options.cache("buttonGroupOptions", this.option("buttonGroupOptions")); this._options.cache("dropDownOptions", this.option("dropDownOptions")) } _initDataController() { const dataSource = this.option("dataSource"); this._dataController = new _data_controller.default(dataSource ?? this.option("items"), { key: this.option("keyExpr") }) } _initTemplates() { this._templateManager.addDefaultTemplates({ content: new _function_template.FunctionTemplate((options => { const $popupContent = (0, _renderer.default)(options.container); const $listContainer = (0, _renderer.default)("<div>").appendTo($popupContent); this._list = this._createComponent($listContainer, _list_light.default, this._listOptions()); this._list.registerKeyHandler("escape", this._escHandler.bind(this)); this._list.registerKeyHandler("tab", this._escHandler.bind(this)); this._list.registerKeyHandler("leftArrow", this._escHandler.bind(this)); this._list.registerKeyHandler("rightArrow", this._escHandler.bind(this)) })) }); super._initTemplates() } _compileKeyGetter() { this._keyGetter = (0, _data.compileGetter)(this._dataController.key()) } _compileDisplayGetter() { const { displayExpr: displayExpr } = this.option(); this._displayGetter = (0, _data.compileGetter)(displayExpr) } _initMarkup() { super._initMarkup(); this.$element().addClass("dx-dropdownbutton"); this._renderButtonGroup(); this._updateArrowClass(); if ((0, _type.isDefined)(this.option("selectedItemKey"))) { this._loadSelectedItem().done(this._updateActionButton.bind(this)) } } _renderFocusTarget() {} _render() { if (!this.option("deferRendering") || this.option("opened")) { this._renderPopup() } super._render() } _renderContentImpl() { if (this._popup) { this._renderPopupContent() } return super._renderContentImpl() } _loadSelectedItem() { var _this$_loadSingleDefe; null === (_this$_loadSingleDefe = this._loadSingleDeferred) || void 0 === _this$_loadSingleDefe || _this$_loadSingleDefe.reject(); const d = (0, _deferred.Deferred)(); if (this._list && void 0 !== this._lastSelectedItemData) { const cachedResult = this.option("useSelectMode") ? this._list.option("selectedItem") : this._lastSelectedItemData; return d.resolve(cachedResult) } this._lastSelectedItemData = void 0; const selectedItemKey = this.option("selectedItemKey"); this._dataController.loadSingle(selectedItemKey).done(d.resolve).fail((() => { d.reject(null) })); this._loadSingleDeferred = d; return d.promise() } _createActionClickAction() { this._actionClickAction = this._createActionByOption("onButtonClick") } _createSelectionChangedAction() { this._selectionChangedAction = this._createActionByOption("onSelectionChanged") } _createItemClickAction() { this._itemClickAction = this._createActionByOption("onItemClick") } _fireSelectionChangedAction(_ref) { let { previousValue: previousValue, value: value } = _ref; this._selectionChangedAction({ item: value, previousItem: previousValue }) } _fireItemClickAction(_ref2) { let { event: event, itemElement: itemElement, itemData: itemData } = _ref2; return this._itemClickAction({ event: event, itemElement: itemElement, itemData: this._actionItem || itemData }) } _getButtonTemplate() { const { template: template, splitButton: splitButton, showArrowIcon: showArrowIcon } = this.option(); if (template) { return template } return splitButton || !showArrowIcon ? "content" : (_ref3, buttonContent) => { let { text: text, icon: icon } = _ref3; const $firstIcon = (0, _icon.getImageContainer)(icon); const $textContainer = text ? (0, _renderer.default)("<span>").text(text).addClass("dx-button-text") : void 0; const $secondIcon = (0, _icon.getImageContainer)("spindown").addClass("dx-icon-right"); (0, _renderer.default)(buttonContent).append($firstIcon, $textContainer, $secondIcon) } } _getActionButtonConfig() { const { icon: icon, text: text, type: type, splitButton: splitButton } = this.option(); const actionButtonConfig = { text: text, icon: icon, type: type, template: this._getButtonTemplate(), elementAttr: { class: "dx-dropdownbutton-action" } }; if (splitButton) { actionButtonConfig.elementAttr.role = "menuitem" } return actionButtonConfig } _getSpinButtonConfig() { const { type: type } = this.option(); const config = { type: type, icon: "spindown", elementAttr: { class: "dx-dropdownbutton-toggle", role: "menuitem" } }; return config } _getButtonGroupItems() { const { splitButton: splitButton } = this.option(); const items = [this._getActionButtonConfig()]; if (splitButton) { items.push(this._getSpinButtonConfig()) } return items } _buttonGroupItemClick(_ref4) { let { event: event, itemData: itemData } = _ref4; const isActionButton = "dx-dropdownbutton-action" === itemData.elementAttr.class; const isToggleButton = "dx-dropdownbutton-toggle" === itemData.elementAttr.class; if (isToggleButton) { this.toggle() } else if (isActionButton) { this._actionClickAction({ event: event, selectedItem: this.option("selectedItem") }); if (!this.option("splitButton")) { this.toggle() } } } _getButtonGroupOptions() { const { accessKey: accessKey, focusStateEnabled: focusStateEnabled, hoverStateEnabled: hoverStateEnabled, splitButton: splitButton, stylingMode: stylingMode, tabIndex: tabIndex } = this.option(); const buttonGroupOptions = _extends({ items: this._getButtonGroupItems(), width: "100%", height: "100%", selectionMode: "none", focusStateEnabled: focusStateEnabled, hoverStateEnabled: hoverStateEnabled, stylingMode: stylingMode, accessKey: accessKey, tabIndex: tabIndex, elementAttr: { role: splitButton ? "menu" : "group" }, onItemClick: this._buttonGroupItemClick.bind(this), onKeyboardHandled: e => this._keyboardHandler(e) }, this._options.cache("buttonGroupOptions")); return buttonGroupOptions } _renderPopupContent() { const $content = this._popup.$content(); const template = this._getTemplateByOption("dropDownContentTemplate"); $content.empty(); this._popupContentId = `dx-${new _guid.default}`; this.setAria("id", this._popupContentId, $content); const result = template.render({ container: (0, _element.getPublicElement)($content), model: this.option("items") || this._dataController.getDataSource() }); return result } _popupOptions() { const horizontalAlignment = this.option("rtlEnabled") ? "right" : "left"; return (0, _extend.extend)({ dragEnabled: false, focusStateEnabled: false, deferRendering: this.option("deferRendering"), hideOnOutsideClick: e => { const $element = this.$element(); const $buttonClicked = (0, _renderer.default)(e.target).closest(".dx-dropdownbutton"); return !$buttonClicked.is($element) }, showTitle: false, animation: { show: { type: "fade", duration: 0, from: 0, to: 1 }, hide: { type: "fade", duration: 400, from: 1, to: 0 } }, _ignoreFunctionValueDeprecation: true, width: () => (0, _m_utils.getElementWidth)(this.$element()), height: "auto", shading: false, position: { of: this.$element(), collision: "flipfit", my: `${horizontalAlignment} top`, at: `${horizontalAlignment} bottom` }, _wrapperClassExternal: "dx-dropdowneditor-overlay", contentTemplate: null }, this._options.cache("dropDownOptions"), { visible: this.option("opened") }) } _listOptions() { const selectedItemKey = this.option("selectedItemKey"); const useSelectMode = this.option("useSelectMode"); return { selectionMode: useSelectMode ? "single" : "none", wrapItemText: this.option("wrapItemText"), focusStateEnabled: this.option("focusStateEnabled"), hoverStateEnabled: this.option("hoverStateEnabled"), useItemTextAsTitle: this.option("useItemTextAsTitle"), onContentReady: () => this._fireContentReadyAction(), selectedItemKeys: (0, _type.isDefined)(selectedItemKey) && useSelectMode ? [selectedItemKey] : [], grouped: this.option("grouped"), groupTemplate: this.option("groupTemplate"), keyExpr: this._dataController.key(), noDataText: this.option("noDataText"), displayExpr: this.option("displayExpr"), itemTemplate: this.option("itemTemplate"), items: this.option("items"), dataSource: this._dataController.getDataSource(), onItemClick: e => { if (!this.option("useSelectMode")) { this._lastSelectedItemData = e.itemData } this.option("selectedItemKey", this._keyGetter(e.itemData)); const actionResult = this._fireItemClickAction(e); if (false !== actionResult) { this.toggle(false); this._buttonGroup.focus() } } } } _upDownKeyHandler() { var _this$_popup; if (null !== (_this$_popup = this._popup) && void 0 !== _this$_popup && _this$_popup.option("visible") && this._list) { this._list.focus() } else { this.open() } return true } _escHandler() { this.close(); this._buttonGroup.focus(); return true } _tabHandler() { this.close(); return true } _renderPopup() { const $popup = (0, _renderer.default)("<div>"); this.$element().append($popup); this._popup = this._createComponent($popup, _m_popup.default, this._popupOptions()); this._popup.$content().addClass("dx-dropdownbutton-content"); this._popup.$wrapper().addClass("dx-dropdownbutton-popup-wrapper"); this._popup.$overlayContent().attr("aria-label", "Dropdown"); this._popup.on("hiding", this._popupHidingHandler.bind(this)); this._popup.on("showing", this._popupShowingHandler.bind(this)); this._bindInnerWidgetOptions(this._popup, "dropDownOptions") } _popupHidingHandler() { this.option("opened", false); this._updateAriaAttributes(false) } _popupOptionChanged(args) { const options = _widget.default.getOptionsFromContainer(args); this._setPopupOption(options); const optionsKeys = Object.keys(options); if (optionsKeys.includes("width") || optionsKeys.includes("height")) { this._dimensionChanged() } } _dimensionChanged() { const popupWidth = (0, _m_utils.getSizeValue)(this.option("dropDownOptions.width")); if (void 0 === popupWidth) { this._setPopupOption("width", (() => (0, _m_utils.getElementWidth)(this.$element()))) } } _setPopupOption(optionName, value) { this._setWidgetOption("_popup", arguments) } _popupShowingHandler() { this.option("opened", true); this._updateAriaAttributes(true) } _setElementAria(value) { const elementAria = { owns: value ? this._popupContentId : void 0 }; this.setAria(elementAria, this.$element()) } _setButtonsAria(value) { const commonButtonAria = { expanded: value, haspopup: "listbox" }; const firstButtonAria = {}; if (!this.option("text")) { firstButtonAria.label = "dropdownbutton" } this._getButtons().each(((index, $button) => { if (0 === index) { this.setAria(_extends({}, firstButtonAria, commonButtonAria), (0, _renderer.default)($button)) } else { this.setAria(commonButtonAria, (0, _renderer.default)($button)) } })) } _updateAriaAttributes(value) { this._setElementAria(value); this._setButtonsAria(value) } _getButtons() { return this._buttonGroup.$element().find(".dx-button") } _renderButtonGroup() { var _this$_buttonGroup; const $buttonGroup = (null === (_this$_buttonGroup = this._buttonGroup) || void 0 === _this$_buttonGroup ? void 0 : _this$_buttonGroup.$element()) || (0, _renderer.default)("<div>"); if (!this._buttonGroup) { this.$element().append($buttonGroup) } this._buttonGroup = this._createComponent($buttonGroup, _button_group.default, this._getButtonGroupOptions()); this._buttonGroup.registerKeyHandler("downArrow", this._upDownKeyHandler.bind(this)); this._buttonGroup.registerKeyHandler("tab", this._tabHandler.bind(this)); this._buttonGroup.registerKeyHandler("upArrow", this._upDownKeyHandler.bind(this)); this._buttonGroup.registerKeyHandler("escape", this._escHandler.bind(this)); this._bindInnerWidgetOptions(this._buttonGroup, "buttonGroupOptions"); this._updateAriaAttributes(this.option("opened")) } _updateArrowClass() { const hasArrow = this.option("splitButton") || this.option("showArrowIcon"); this.$element().toggleClass("dx-dropdownbutton-has-arrow", hasArrow) } toggle(visible) { var _this$_popup2; if (!this._popup) { this._renderPopup(); this._renderContent() } return null === (_this$_popup2 = this._popup) || void 0 === _this$_popup2 ? void 0 : _this$_popup2.toggle(visible) } open() { return this.toggle(true) } close() { return this.toggle(false) } _setListOption(name, value) { var _this$_list; null === (_this$_list = this._list) || void 0 === _this$_list || _this$_list.option(name, value) } _getDisplayValue(item) { const isPrimitiveItem = !(0, _type.isObject)(item); const displayValue = isPrimitiveItem ? item : this._displayGetter(item); return !(0, _type.isObject)(displayValue) ? String((0, _common.ensureDefined)(displayValue, "")) : "" } _updateActionButton(selectedItem) { if (this.option("useSelectMode")) { this.option({ text: this._getDisplayValue(selectedItem), icon: (0, _type.isPlainObject)(selectedItem) ? selectedItem.icon : void 0 }) } this._setOptionWithoutOptionChange("selectedItem", selectedItem); this._setOptionWithoutOptionChange("selectedItemKey", this._keyGetter(selectedItem)) } _clean() { var _this$_list2, _this$_popup3; null === (_this$_list2 = this._list) || void 0 === _this$_list2 || _this$_list2.$element().remove(); null === (_this$_popup3 = this._popup) || void 0 === _this$_popup3 || _this$_popup3.$element().remove() } _selectedItemKeyChanged(value) { this._setListOption("selectedItemKeys", this.option("useSelectMode") && (0, _type.isDefined)(value) ? [value] : []); const previousItem = this.option("selectedItem"); this._loadSelectedItem().always((selectedItem => { this._updateActionButton(selectedItem); if (this._displayGetter(previousItem) !== this._displayGetter(selectedItem)) { this._fireSelectionChangedAction({ previousValue: previousItem, value: selectedItem }) } })) } _updateButtonGroup(name, value) { this._buttonGroup.option(name, value); this._updateAriaAttributes(this.option("opened")) } _actionButtonOptionChanged(_ref5) { let { name: name, value: value } = _ref5; const newConfig = {}; newConfig[name] = value; this._updateButtonGroup("items[0]", (0, _extend.extend)({}, this._getActionButtonConfig(), newConfig)); this._popup && this._popup.repaint() } _selectModeChanged(value) { if (value) { this._setListOption("selectionMode", "single"); const selectedItemKey = this.option("selectedItemKey"); this._setListOption("selectedItemKeys", (0, _type.isDefined)(selectedItemKey) ? [selectedItemKey] : []); this._selectedItemKeyChanged(this.option("selectedItemKey")) } else { this._setListOption("selectionMode", "none"); this.option({ selectedItemKey: void 0, selectedItem: void 0 }); this._actionButtonOptionChanged({ text: this.option("text") }) } } _updateItemCollection(optionName) { const selectedItemKey = this.option("selectedItemKey"); this._setListOption("selectedItem", null); this._setWidgetOption("_list", [optionName]); if ((0, _type.isDefined)(selectedItemKey)) { this._loadSelectedItem().done((selectedItem => { this._setListOption("selectedItemKeys", [selectedItemKey]); this._setListOption("selectedItem", selectedItem) })).fail((error => { this._setListOption("selectedItemKeys", []) })).always(this._updateActionButton.bind(this)) } } _updateDataController(items) { this._dataController.updateDataSource(items, this.option("keyExpr")); this._updateKeyExpr() } _updateKeyExpr() { this._compileKeyGetter(); this._setListOption("keyExpr", this._dataController.key()) } focus() { this._buttonGroup.focus() } _optionChanged(args) { var _this$_popup4; const { name: name, value: value } = args; switch (name) { case "useSelectMode": this._selectModeChanged(value); break; case "splitButton": this._updateArrowClass(); this._renderButtonGroup(); break; case "displayExpr": this._compileDisplayGetter(); this._setListOption(name, value); this._updateActionButton(this.option("selectedItem")); break; case "keyExpr": this._updateDataController(); break; case "buttonGroupOptions": this._innerWidgetOptionChanged(this._buttonGroup, args); break; case "dropDownOptions": if ("dropDownOptions.visible" === args.fullName) { break } if (void 0 !== args.value.visible) { delete args.value.visible } this._popupOptionChanged(args); this._innerWidgetOptionChanged(this._popup, args); break; case "opened": this.toggle(value); break; case "focusStateEnabled": case "hoverStateEnabled": this._setListOption(name, value); this._updateButtonGroup(name, value); super._optionChanged(args); break; case "items": this._updateDataController(this.option("items")); this._updateItemCollection(name); break; case "dataSource": this._dataController.updateDataSource(value); this._updateKeyExpr(); this._updateItemCollection(name); break; case "icon": case "text": this._actionButtonOptionChanged(args); break; case "showArrowIcon": this._updateArrowClass(); this._renderButtonGroup(); this._popup && this._popup.repaint(); break; case "width": case "height": super._optionChanged(args); null === (_this$_popup4 = this._popup) || void 0 === _this$_popup4 || _this$_popup4.repaint(); break; case "stylingMode": case "tabIndex": this._updateButtonGroup(name, value); break; case "type": this._updateButtonGroup("items", this._getButtonGroupItems()); break; case "itemTemplate": case "grouped": case "noDataText": case "groupTemplate": case "wrapItemText": case "useItemTextAsTitle": this._setListOption(name, value); break; case "dropDownContentTemplate": this._renderContent(); break; case "selectedItemKey": this._selectedItemKeyChanged(value); break; case "selectedItem": break; case "onItemClick": this._createItemClickAction(); break; case "onButtonClick": this._createActionClickAction(); break; case "onSelectionChanged": this._createSelectionChangedAction(); break; case "deferRendering": { const { opened: opened } = this.option(); this.toggle(opened); break } case "template": this._renderButtonGroup(); break; default: super._optionChanged(args) } } getDataSource() { return this._dataController.getDataSource() } }(0, _component_registrator.default)("dxDropDownButton", DropDownButton); exports.default = DropDownButton }, 22354: /*!******************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/ui/m_file_uploader.js ***! \******************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _click = __webpack_require__( /*! ../../common/core/events/click */ 64044); var _events_engine = _interopRequireDefault(__webpack_require__( /*! ../../common/core/events/core/events_engine */ 92774)); var _index = __webpack_require__( /*! ../../common/core/events/utils/index */ 98834); var _message = _interopRequireDefault(__webpack_require__( /*! ../../common/core/localization/message */ 4671)); var _component_registrator = _interopRequireDefault(__webpack_require__( /*! ../../core/component_registrator */ 92848)); var _devices = _interopRequireDefault(__webpack_require__( /*! ../../core/devices */ 65951)); var _dom_adapter = _interopRequireDefault(__webpack_require__( /*! ../../core/dom_adapter */ 64960)); var _guid = _interopRequireDefault(__webpack_require__( /*! ../../core/guid */ 19427)); var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../core/renderer */ 64553)); var _ajax = _interopRequireDefault(__webpack_require__( /*! ../../core/utils/ajax */ 78670)); var _callbacks = _interopRequireDefault(__webpack_require__( /*! ../../core/utils/callbacks */ 84718)); var _deferred = __webpack_require__( /*! ../../core/utils/deferred */ 87739); var _extend = __webpack_require__( /*! ../../core/utils/extend */ 52576); var _iterator = __webpack_require__( /*! ../../core/utils/iterator */ 21274); var _size = __webpack_require__( /*! ../../core/utils/size */ 57653); var _type = __webpack_require__( /*! ../../core/utils/type */ 11528); var _window = __webpack_require__( /*! ../../core/utils/window */ 3104); var _button = _interopRequireDefault(__webpack_require__( /*! ../../ui/button */ 64973)); var _progress_bar = _interopRequireDefault(__webpack_require__( /*! ../../ui/progress_bar */ 58436)); var _themes = __webpack_require__( /*! ../../ui/themes */ 52071); var _editor = _interopRequireDefault(__webpack_require__( /*! ../ui/editor/editor */ 24768)); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } const window = (0, _window.getWindow)(); const isFormDataSupported = () => !!window.FormData; class FileUploader extends _editor.default { _supportedKeys() { const click = e => { e.preventDefault(); const $selectButton = this._selectButton.$element(); _events_engine.default.trigger($selectButton, _click.name) }; return (0, _extend.extend)(super._supportedKeys(), { space: click, enter: click }) } _setOptionsByReference() { super._setOptionsByReference(); (0, _extend.extend)(this._optionsByReference, { value: true }) } _getDefaultOptions() { return (0, _extend.extend)(super._getDefaultOptions(), { chunkSize: 0, value: [], selectButtonText: _message.default.format("dxFileUploader-selectFile"), uploadButtonText: _message.default.format("dxFileUploader-upload"), labelText: _message.default.format("dxFileUploader-dropFile"), name: "files[]", multiple: false, accept: "", uploadUrl: "/", allowCanceling: true, showFileList: true, progress: 0, dialogTrigger: void 0, dropZone: void 0, readyToUploadMessage: _message.default.format("dxFileUploader-readyToUpload"), uploadedMessage: _message.default.format("dxFileUploader-uploaded"), uploadFailedMessage: _message.default.format("dxFileUploader-uploadFailedMessage"), uploadAbortedMessage: _message.default.format("dxFileUploader-uploadAbortedMessage"), uploadMode: "instantly", uploadMethod: "POST", uploadHeaders: {}, uploadCustomData: {}, onBeforeSend: null, onUploadStarted: null, onUploaded: null, onFilesUploaded: null, onProgress: null, onUploadError: null, onUploadAborted: null, onDropZoneEnter: null, onDropZoneLeave: null, allowedFileExtensions: [], maxFileSize: 0, minFileSize: 0, inputAttr: {}, invalidFileExtensionMessage: _message.default.format("dxFileUploader-invalidFileExtension"), invalidMaxFileSizeMessage: _message.default.format("dxFileUploader-invalidMaxFileSize"), invalidMinFileSizeMessage: _message.default.format("dxFileUploader-invalidMinFileSize"), extendSelection: true, validationMessageMode: "always", uploadFile: null, uploadChunk: null, abortUpload: null, validationMessageOffset: { h: 0, v: 0 }, hoverStateEnabled: true, useNativeInputClick: false, useDragOver: true, nativeDropSupported: true, _uploadButtonType: "normal", _buttonStylingMode: "contained" }) } _defaultOptionsRules() { return super._defaultOptionsRules().concat([{ device: () => "desktop" === _devices.default.real().deviceType && !_devices.default.isSimulator(), options: { focusStateEnabled: true } }, { device: [{ platform: "android" }], options: { validationMessageOffset: { v: 0 } } }, { device: () => "desktop" !== _devices.default.real().deviceType, options: { useDragOver: false } }, { device: () => !isFormDataSupported(), options: { uploadMode: "useForm" } }, { device: () => "desktop" !== _devices.default.real().deviceType, options: { nativeDropSupported: false } }, { device: () => (0, _themes.isMaterial)(), options: { _uploadButtonType: "default" } }, { device: () => (0, _themes.isFluent)(), options: { _buttonStylingMode: "text" } }]) } _initOptions(options) { const isLabelTextDefined = "labelText" in options; super._initOptions(options); if (!isLabelTextDefined && !this._shouldDragOverBeRendered()) { this.option("labelText", "") } } _init() { super._init(); this._initFileInput(); this._initLabel(); this._setUploadStrategy(); this._createFiles(); this._createBeforeSendAction(); this._createUploadStartedAction(); this._createUploadedAction(); this._createFilesUploadedAction(); this._createProgressAction(); this._createUploadErrorAction(); this._createUploadAbortedAction(); this._createDropZoneEnterAction(); this._createDropZoneLeaveAction() } _setUploadStrategy() { if (this.option("chunkSize") > 0) { const uploadChunk = this.option("uploadChunk"); this._uploadStrategy = uploadChunk && (0, _type.isFunction)(uploadChunk) ? new CustomChunksFileUploadStrategy(this) : new DefaultChunksFileUploadStrategy(this) } else { const uploadFile = this.option("uploadFile"); this._uploadStrategy = uploadFile && (0, _type.isFunction)(uploadFile) ? new CustomWholeFileUploadStrategy(this) : new DefaultWholeFileUploadStrategy(this) } } _initFileInput() { this._isCustomClickEvent = false; const { multiple: multiple, accept: accept, hint: hint } = this.option(); if (!this._$fileInput) { this._$fileInput = (0, _renderer.default)("<input>").attr("type", "file"); _events_engine.default.on(this._$fileInput, "change", this._inputChangeHandler.bind(this)); _events_engine.default.on(this._$fileInput, "click", (e => { e.stopPropagation(); this._resetInputValue(); return this.option("useNativeInputClick") || this._isCustomClickEvent })) } const inputProps = { multiple: multiple, accept: accept, tabIndex: -1 }; if ((0, _type.isDefined)(hint)) { inputProps.title = hint } this._$fileInput.prop(inputProps) } _inputChangeHandler() { if (this._doPreventInputChange) { return } const fileName = this._$fileInput.val().replace(/^.*\\/, ""); const files = this._$fileInput.prop("files"); if (files && !files.length && "useForm" !== this.option("uploadMode")) { return } const value = files ? this._getFiles(files) : [{ name: fileName }]; this._changeValue(value); if ("instantly" === this.option("uploadMode")) { this._uploadFiles() } } _shouldFileListBeExtended() { return "useForm" !== this.option("uploadMode") && this.option("extendSelection") && this.option("multiple") } _changeValue(value) { const files = this._shouldFileListBeExtended() ? this.option("value").slice() : []; this.option("value", files.concat(value)) } _getFiles(fileList) { const values = []; (0, _iterator.each)(fileList, ((_, value) => values.push(value))); return values } _getFile(fileData) { const targetFileValue = (0, _type.isNumeric)(fileData) ? this.option("value")[fileData] : fileData; return this._files.filter((file => file.value === targetFileValue))[0] } _initLabel() { if (!this._$inputLabel) { this._$inputLabel = (0, _renderer.default)("<div>") } this._updateInputLabelText() } _updateInputLabelText() { const correctedValue = this._isInteractionDisabled() ? "" : this.option("labelText"); this._$inputLabel.text(correctedValue) } _focusTarget() { return this.$element().find(".dx-fileuploader-button") } _getSubmitElement() { return this._$fileInput } _initMarkup() { super._initMarkup(); this.$element().addClass("dx-fileuploader"); this._renderWrapper(); this._renderInputWrapper(); this._renderSelectButton(); this._renderInputContainer(); this._renderUploadButton(); this._preventRecreatingFiles = true; this._activeDropZone = null } _render() { this._preventRecreatingFiles = false; this._attachDragEventHandlers(this._$inputWrapper); this._attachDragEventHandlers(this.option("dropZone")); this._renderFiles(); super._render() } _createFileProgressBar(file) { file.progressBar = this._createProgressBar(file.value.size); file.progressBar.$element().appendTo(file.$file); this._initStatusMessage(file); this._ensureCancelButtonInitialized(file) } _setStatusMessage(file, message) { setTimeout((() => { if (this.option("showFileList")) { if (file.$statusMessage) { file.$statusMessage.text(message); file.$statusMessage.css("display", ""); file.progressBar.$element().remove() } } }), 400) } _getUploadAbortedStatusMessage() { return "instantly" === this.option("uploadMode") ? this.option("uploadAbortedMessage") : this.option("readyToUploadMessage") } _createFiles() { const value = this.option("value"); if (this._files && (0 === (null === value || void 0 === value ? void 0 : value.length) || !this._shouldFileListBeExtended())) { this._preventFilesUploading(this._files); this._files = null } if (!this._files) { this._files = [] }(0, _iterator.each)(null === value || void 0 === value ? void 0 : value.slice(this._files.length), ((_, value) => { const file = this._createFile(value); this._validateFile(file); this._files.push(file) })) } _preventFilesUploading(files) { files.forEach((file => this._uploadStrategy.abortUpload(file))) } _validateFile(file) { file.isValidFileExtension = this._validateFileExtension(file); file.isValidMinSize = this._validateMinFileSize(file); file.isValidMaxSize = this._validateMaxFileSize(file) } _validateFileExtension(file) { const { allowedFileExtensions: allowedFileExtensions } = this.option(); if (!(null !== allowedFileExtensions && void 0 !== allowedFileExtensions && allowedFileExtensions.length)) { return true } return this._isFileExtensionAllowed(file.value, allowedFileExtensions) } _validateMaxFileSize(file) { const fileSize = file.value.size; const maxFileSize = this.option("maxFileSize"); return maxFileSize > 0 ? fileSize <= maxFileSize : true } _validateMinFileSize(file) { const fileSize = file.value.size; const minFileSize = this.option("minFileSize"); return minFileSize > 0 ? fileSize >= minFileSize : true } _isFileExtensionAllowed(file, allowedExtensions) { for (let i = 0, n = allowedExtensions.length; i < n; i += 1) { let allowedExtension = allowedExtensions[i]; if ("." === allowedExtension[0]) { allowedExtension = allowedExtension.replace(".", "\\."); if (file.name.match(new RegExp(`${allowedExtension}$`, "i"))) { return true } } else { allowedExtension = allowedExtension.replace(new RegExp("\\*", "g"), ""); if (file.type.match(new RegExp(allowedExtension, "i"))) { return true } } } return false } _createBeforeSendAction() { this._beforeSendAction = this._createActionByOption("onBeforeSend", { excludeValidators: ["readOnly"] }) } _createUploadStartedAction() { this._uploadStartedAction = this._createActionByOption("onUploadStarted", { excludeValidators: ["readOnly"] }) } _createUploadedAction() { this._uploadedAction = this._createActionByOption("onUploaded", { excludeValidators: ["readOnly"] }) } _createFilesUploadedAction() { this._filesUploadedAction = this._createActionByOption("onFilesUploaded", { excludeValidators: ["readOnly"] }) } _createProgressAction() { this._progressAction = this._createActionByOption("onProgress", { excludeValidators: ["readOnly"] }) } _createUploadAbortedAction() { this._uploadAbortedAction = this._createActionByOption("onUploadAborted", { excludeValidators: ["readOnly"] }) } _createUploadErrorAction() { this._uploadErrorAction = this._createActionByOption("onUploadError", { excludeValidators: ["readOnly"] }) } _createDropZoneEnterAction() { this._dropZoneEnterAction = this._createActionByOption("onDropZoneEnter") } _createDropZoneLeaveAction() { this._dropZoneLeaveAction = this._createActionByOption("onDropZoneLeave") } _createFile(value) { return { value: value, loadedSize: 0, onProgress: (0, _callbacks.default)(), onAbort: (0, _callbacks.default)(), onLoad: (0, _callbacks.default)(), onError: (0, _callbacks.default)(), onLoadStart: (0, _callbacks.default)(), isValidFileExtension: true, isValidMaxSize: true, isValidMinSize: true, isValid() { return this.isValidFileExtension && this.isValidMaxSize && this.isValidMinSize }, isInitialized: false } } _resetFileState(file) { file.isAborted = false; file.uploadStarted = false; file.isStartLoad = false; file.loadedSize = 0; file.chunksData = void 0; file.request = void 0 } _renderFiles() { var _this$_validationMess; const value = this.option("value"); if (!this._$filesContainer) { this._$filesContainer = (0, _renderer.default)("<div>").addClass("dx-fileuploader-files-container").appendTo(this._$content) } else if (!this._shouldFileListBeExtended() || 0 === (null === value || void 0 === value ? void 0 : value.length)) { this._$filesContainer.empty() } const showFileList = this.option("showFileList"); if (showFileList) { (0, _iterator.each)(this._files, ((_, file) => { if (!file.$file) { this._renderFile(file) } })) } this.$element().toggleClass("dx-fileuploader-show-file-list", showFileList); this._toggleFileUploaderEmptyClassName(); this._updateFileNameMaxWidth(); null === (_this$_validationMess = this._validationMessage) || void 0 === _this$_validationMess || _this$_validationMess.repaint() } _renderFile(file) { const { value: value } = file; const $fileContainer = (0, _renderer.default)("<div>").addClass("dx-fileuploader-file-container").appendTo(this._$filesContainer); this._renderFileButtons(file, $fileContainer); file.$file = (0, _renderer.default)("<div>").addClass("dx-fileuploader-file").appendTo($fileContainer); const $fileInfo = (0, _renderer.default)("<div>").addClass("dx-fileuploader-file-info").appendTo(file.$file); file.$statusMessage = (0, _renderer.default)("<div>").addClass("dx-fileuploader-file-status-message").appendTo(file.$file); (0, _renderer.default)("<div>").addClass("dx-fileuploader-file-name").text(value.name).appendTo($fileInfo); if ((0, _type.isDefined)(value.size)) { (0, _renderer.default)("<div>").addClass("dx-fileuploader-file-size").text(this._getFileSize(value.size)).appendTo($fileInfo) } if (file.isValid()) { file.$statusMessage.text(this.option("readyToUploadMessage")) } else { if (!file.isValidFileExtension) { file.$statusMessage.append(this._createValidationElement("invalidFileExtensionMessage")) } if (!file.isValidMaxSize) { file.$statusMessage.append(this._createValidationElement("invalidMaxFileSizeMessage")) } if (!file.isValidMinSize) { file.$statusMessage.append(this._createValidationElement("invalidMinFileSizeMessage")) } $fileContainer.addClass("dx-fileuploader-invalid") } } _createValidationElement(key) { return (0, _renderer.default)("<span>").text(this.option(key)) } _updateFileNameMaxWidth() { const cancelButtonsCount = this.option("allowCanceling") && "useForm" !== this.option("uploadMode") ? 1 : 0; const uploadButtonsCount = "useButtons" === this.option("uploadMode") ? 1 : 0; const filesContainerWidth = (0, _size.getWidth)(this._$filesContainer.find(".dx-fileuploader-file-container").first()) || (0, _size.getWidth)(this._$filesContainer); const $buttonContainer = this._$filesContainer.find(".dx-fileuploader-button-container").eq(0); const buttonsWidth = (0, _size.getWidth)($buttonContainer) * (cancelButtonsCount + uploadButtonsCount); const $fileSize = this._$filesContainer.find(".dx-fileuploader-file-size").eq(0); const prevFileSize = $fileSize.text(); $fileSize.text("1000 Mb"); const fileSizeWidth = (0, _size.getWidth)($fileSize); $fileSize.text(prevFileSize); this._$filesContainer.find(".dx-fileuploader-file-name").css("maxWidth", filesContainerWidth - buttonsWidth - fileSizeWidth) } _renderFileButtons(file, $container) { const $cancelButton = this._getCancelButton(file); $cancelButton && $container.append($cancelButton); const $uploadButton = this._getUploadButton(file); $uploadButton && $container.append($uploadButton) } _getCancelButton(file) { if ("useForm" === this.option("uploadMode")) { return null } const { allowCanceling: allowCanceling, readOnly: readOnly, hoverStateEnabled: hoverStateEnabled, _buttonStylingMode: _buttonStylingMode } = this.option(); file.cancelButton = this._createComponent((0, _renderer.default)("<div>").addClass("dx-fileuploader-button dx-fileuploader-cancel-button"), _button.default, { onClick: () => this._removeFile(file), icon: "close", visible: allowCanceling, disabled: readOnly, integrationOptions: {}, hoverStateEnabled: hoverStateEnabled, stylingMode: _buttonStylingMode }); return (0, _renderer.default)("<div>").addClass("dx-fileuploader-button-container").append(file.cancelButton.$element()) } _getUploadButton(file) { if (!file.isValid() || "useButtons" !== this.option("uploadMode")) { return null } const { hoverStateEnabled: hoverStateEnabled, _buttonStylingMode: _buttonStylingMode } = this.option(); file.uploadButton = this._createComponent((0, _renderer.default)("<div>").addClass("dx-fileuploader-button dx-fileuploader-upload-button"), _button.default, { onClick: () => this._uploadFile(file), icon: "upload", hoverStateEnabled: hoverStateEnabled, stylingMode: _buttonStylingMode }); file.onLoadStart.add((() => file.uploadButton.option({ visible: false, disabled: true }))); file.onAbort.add((() => file.uploadButton.option({ visible: true, disabled: false }))); return (0, _renderer.default)("<div>").addClass("dx-fileuploader-button-container").append(file.uploadButton.$element()) } _removeFile(file) { var _file$$file; null === (_file$$file = file.$file) || void 0 === _file$$file || _file$$file.parent().remove(); this._files.splice(this._files.indexOf(file), 1); const value = this.option("value").slice(); value.splice(value.indexOf(file.value), 1); this._preventRecreatingFiles = true; this.option("value", value); this._preventRecreatingFiles = false; this._toggleFileUploaderEmptyClassName(); this._resetInputValue(true) } removeFile(fileData) { if ("useForm" === this.option("uploadMode") || !(0, _type.isDefined)(fileData)) { return } const file = this._getFile(fileData); if (file) { if (file.uploadStarted) { this._preventFilesUploading([file]) } this._removeFile(file) } } _toggleFileUploaderEmptyClassName() { this.$element().toggleClass("dx-fileuploader-empty", !this._files.length || this._hasInvalidFile(this._files)) } _hasInvalidFile(files) { for (let i = 0; i < files.length; i++) { if (!files[i].isValid()) { return true } } return false } _getFileSize(size) { let i = 0; const labels = [_message.default.format("dxFileUploader-bytes"), _message.default.format("dxFileUploader-kb"), _message.default.format("dxFileUploader-Mb"), _message.default.format("dxFileUploader-Gb")]; const count = labels.length - 1; while (i < count && size >= 1024) { size /= 1024; i++ } return `${Math.round(size)} ${labels[i]}` } _renderSelectButton() { const $button = (0, _renderer.default)("<div>").addClass("dx-fileuploader-button").appendTo(this._$inputWrapper); this._selectButton = this._createComponent($button, _button.default, { text: this.option("selectButtonText"), focusStateEnabled: false, integrationOptions: {}, disabled: this.option("readOnly"), hoverStateEnabled: this.option("hoverStateEnabled") }); if ("desktop" === _devices.default.real().deviceType) { this._selectButton.option("onClick", (() => this._selectFileDialogClickHandler())) } else { this._attachSelectFileDialogHandlers(this._selectButton.$element()) } const { dialogTrigger: dialogTrigger } = this.option(); this._attachSelectFileDialogHandlers(dialogTrigger) } _selectFileDialogClickHandler() { if (this.option("useNativeInputClick")) { return } if (this._isInteractionDisabled()) { return false } this._isCustomClickEvent = true; _events_engine.default.trigger(this._$fileInput, "click"); this._isCustomClickEvent = false } _attachSelectFileDialogHandlers(target) { if (!(0, _type.isDefined)(target)) { return } this._detachSelectFileDialogHandlers(target); const $target = (0, _renderer.default)(target); _events_engine.default.on($target, (0, _index.addNamespace)("click", "dxFileUploaderDialogTrigger"), (() => { this._selectFileDialogClickHandler() })); _events_engine.default.on($target, (0, _index.addNamespace)("keyup", "dxFileUploaderDialogTrigger"), (e => { const normalizedKeyName = (0, _index.normalizeKeyName)(e); if ("enter" === normalizedKeyName || "space" === normalizedKeyName) { this._selectFileDialogClickHandler() } })) } _detachSelectFileDialogHandlers(target) { if (!(0, _type.isDefined)(target)) { return } const $target = (0, _renderer.default)(target); _events_engine.default.off($target, ".dxFileUploaderDialogTrigger") } _renderUploadButton() { if ("useButtons" !== this.option("uploadMode")) { return } const $uploadButton = (0, _renderer.default)("<div>").addClass("dx-fileuploader-button").addClass("dx-fileuploader-upload-button").appendTo(this._$content); this._uploadButton = this._createComponent($uploadButton, _button.default, { text: this.option("uploadButtonText"), onClick: this._uploadButtonClickHandler.bind(this), type: this.option("_uploadButtonType"), integrationOptions: {}, hoverStateEnabled: this.option("hoverStateEnabled") }) } _uploadButtonClickHandler() { this._uploadFiles() } _shouldDragOverBeRendered() { return !this.option("readOnly") && ("useForm" !== this.option("uploadMode") || this.option("nativeDropSupported")) } _isInteractionDisabled() { return this.option("readOnly") || this.option("disabled") } _renderInputContainer() { this._$inputContainer = (0, _renderer.default)("<div>").addClass("dx-fileuploader-input-container").appendTo(this._$inputWrapper); this._$fileInput.addClass("dx-fileuploader-input"); this._renderInput(); const labelId = `dx-fileuploader-input-label-${new _guid.default}`; this._$inputLabel.attr("id", labelId).addClass("dx-fileuploader-input-label").appendTo(this._$inputContainer); this.setAria("labelledby", labelId, this._$fileInput) } _renderInput() { if (this.option("useNativeInputClick")) { this._selectButton.option("template", this._selectButtonInputTemplate.bind(this)) } else { this._$fileInput.appendTo(this._$inputContainer); this._selectButton.option("template", "content") } this._applyInputAttributes(this.option("inputAttr")) } _selectButtonInputTemplate(data, content) { const $content = (0, _renderer.default)(content); const $text = (0, _renderer.default)("<span>").addClass("dx-button-text").text(data.text); $content.append($text).append(this._$fileInput); return $content } _renderInputWrapper() { this._$inputWrapper = (0, _renderer.default)("<div>").addClass("dx-fileuploader-input-wrapper").appendTo(this._$content) } _detachDragEventHandlers(target) { if (!(0, _type.isDefined)(target)) { return } _events_engine.default.off((0, _renderer.default)(target), (0, _index.addNamespace)("", this.NAME)) } _attachDragEventHandlers(target) { const isCustomTarget = target !== this._$inputWrapper; if (!(0, _type.isDefined)(target) || !this._shouldDragOverBeRendered()) { return } this._detachDragEventHandlers(target); target = (0, _renderer.default)(target); _events_engine.default.on(target, (0, _index.addNamespace)("dragenter", this.NAME), this._dragEnterHandler.bind(this, isCustomTarget)); _events_engine.default.on(target, (0, _index.addNamespace)("dragover", this.NAME), this._dragOverHandler.bind(this, isCustomTarget)); _events_engine.default.on(target, (0, _index.addNamespace)("dragleave", this.NAME), this._dragLeaveHandler.bind(this, isCustomTarget)); _events_engine.default.on(target, (0, _index.addNamespace)("drop", this.NAME), this._dropHandler.bind(this, isCustomTarget)) } _applyInputAttributes(customAttributes) { this._$fileInput.attr(customAttributes) } _useInputForDrop() { return this.option("nativeDropSupported") && "useForm" === this.option("uploadMode") } _getDropZoneElement(isCustomTarget, e) { let targetList = isCustomTarget ? Array.from((0, _renderer.default)(this.option("dropZone"))) : [this._$inputWrapper]; targetList = targetList.map((element => (0, _renderer.default)(element).get(0))); return targetList[targetList.indexOf(e.currentTarget)] } _dragEnterHandler(isCustomTarget, e) { if (this.option("disabled")) { return false } if (!this._useInputForDrop()) { e.preventDefault() } const dropZoneElement = this._getDropZoneElement(isCustomTarget, e); if ((0, _type.isDefined)(dropZoneElement) && this._shouldRaiseDragOver(e, dropZoneElement)) { this._activeDropZone = dropZoneElement; this._tryToggleDropZoneActive(true, isCustomTarget, e) } } _shouldRaiseDragOver(e, dropZoneElement) { return null === this._activeDropZone && this.isMouseOverElement(e, dropZoneElement, false) && e.originalEvent.dataTransfer.types.find((item => "Files" === item)) } _dragOverHandler(isCustomTarget, e) { if (!this._useInputForDrop()) { e.preventDefault() } e.originalEvent.dataTransfer.dropEffect = "copy"; if (!isCustomTarget) { const dropZoneElement = this._getDropZoneElement(false, e); if (this._shouldRaiseDragOver(e, dropZoneElement)) { this._dragEnterHandler(false, e) } if (this._shouldRaiseDragLeave(e, false)) { this._dragLeaveHandler(false, e) } } } _dragLeaveHandler(isCustomTarget, e) { if (!this._useInputForDrop()) { e.preventDefault() } if (this._shouldRaiseDragLeave(e, isCustomTarget)) { this._tryToggleDropZoneActive(false, isCustomTarget, e); this._activeDropZone = null } } _shouldRaiseDragLeave(e, isCustomTarget) { return null !== this._activeDropZone && !this.isMouseOverElement(e, this._activeDropZone, !isCustomTarget, -1) } _tryToggleDropZoneActive(active, isCustom, event) { const classAction = active ? "addClass" : "removeClass"; const mouseAction = active ? "_dropZoneEnterAction" : "_dropZoneLeaveAction"; this[mouseAction]({ event: event, dropZoneElement: this._activeDropZone }); if (!isCustom) { this.$element()[classAction]("dx-fileuploader-dragover") } } _dropHandler(isCustomTarget, e) { this._activeDropZone = null; if (!isCustomTarget) { this.$element().removeClass("dx-fileuploader-dragover") } if (this._useInputForDrop() || isCustomTarget && this._isInteractionDisabled()) { return } e.preventDefault(); const fileList = e.originalEvent.dataTransfer.files; const files = this._getFiles(fileList); if (!this.option("multiple") && files.length > 1 || 0 === files.length) { return } this._changeValue(files); if ("instantly" === this.option("uploadMode")) { this._uploadFiles() } } _areAllFilesLoaded() { return this._files.every((file => !file.isValid() || file._isError || file._isLoaded || file.isAborted)) } _handleAllFilesUploaded() { this._recalculateProgress(); if (this._areAllFilesLoaded()) { this._filesUploadedAction() } } _renderWrapper() { const $wrapper = (0, _renderer.default)("<div>").addClass("dx-fileuploader-wrapper").appendTo(this.$element()); const $container = (0, _renderer.default)("<div>").addClass("dx-fileuploader-container").appendTo($wrapper); this._$content = (0, _renderer.default)("<div>").addClass("dx-fileuploader-content").appendTo($container) } _clean() { this._$fileInput.detach(); delete this._$filesContainer; const { dialogTrigger: dialogTrigger } = this.option(); this._detachSelectFileDialogHandlers(dialogTrigger); this._detachDragEventHandlers(this.option("dropZone")); if (this._files) { this._files.forEach((file => { file.$file = null; file.$statusMessage = null })) } super._clean() } abortUpload(fileData) { if ("useForm" === this.option("uploadMode")) { return } if ((0, _type.isDefined)(fileData)) { const file = this._getFile(fileData); if (file) { this._preventFilesUploading([file]) } } else { this._preventFilesUploading(this._files) } } upload(fileData) { if ("useForm" === this.option("uploadMode")) { return } if ((0, _type.isDefined)(fileData)) { const file = this._getFile(fileData); if (file && isFormDataSupported()) { this._uploadFile(file) } } else { this._uploadFiles() } } _uploadFiles() { if (isFormDataSupported()) { (0, _iterator.each)(this._files, ((_, file) => this._uploadFile(file))) } } _uploadFile(file) { this._uploadStrategy.upload(file) } _updateProgressBar(file, loadedFileData) { var _file$progressBar; null === (_file$progressBar = file.progressBar) || void 0 === _file$progressBar || _file$progressBar.option({ value: loadedFileData.loaded, showStatus: true }); this._progressAction({ file: file.value, segmentSize: loadedFileData.currentSegmentSize, bytesLoaded: loadedFileData.loaded, bytesTotal: loadedFileData.total, event: loadedFileData.event, request: file.request }) } _updateTotalProgress(totalFilesSize, totalLoadedFilesSize) { let progress = 0; if ((0, _type.isDefined)(totalFilesSize)) { if (this._files.length > 0 && this._areAllFilesLoaded() && 0 === totalFilesSize && 0 === totalLoadedFilesSize) { progress = this._getProgressValue(1) } else if (totalFilesSize) { progress = this._getProgressValue(totalLoadedFilesSize / totalFilesSize) } } this.option("progress", progress); this._setLoadedSize(totalLoadedFilesSize) } _getProgressValue(ratio) { return Math.floor(100 * ratio) } _initStatusMessage(file) { file.$statusMessage.css("display", "none") } _ensureCancelButtonInitialized(file) { if (file.isInitialized) { return } file.cancelButton.option("onClick", (() => { this._preventFilesUploading([file]); this._removeFile(file) })); const hideCancelButton = () => { setTimeout((() => { file.cancelButton.option({ visible: false }) }), 400) }; file.onLoad.add(hideCancelButton); file.onError.add(hideCancelButton) } _createProgressBar(fileSize) { return this._createComponent((0, _renderer.default)("<div>"), _progress_bar.default, { value: void 0, min: 0, max: fileSize, statusFormat: ratio => `${this._getProgressValue(ratio)}%`, showStatus: false, statusPosition: "right" }) } _getTotalFilesSize() { if (!this._totalFilesSize) { this._totalFilesSize = 0; (0, _iterator.each)(this._files, ((_, file) => { this._totalFilesSize += file.value.size })) } return this._totalFilesSize } _getTotalLoadedFilesSize() { if (!this._totalLoadedFilesSize) { this._totalLoadedFilesSize = 0; (0, _iterator.each)(this._files, ((_, file) => { this._totalLoadedFilesSize += file.loadedSize })) } return this._totalLoadedFilesSize } _setLoadedSize(value) { this._totalLoadedFilesSize = value } _recalculateProgress() { this._totalFilesSize = 0; this._totalLoadedFilesSize = 0; this._updateTotalProgress(this._getTotalFilesSize(), this._getTotalLoadedFilesSize()) } isMouseOverElement(mouseEvent, element, correctPseudoElements) { let dragEventDelta = arguments.length > 3 && void 0 !== arguments[3] ? arguments[3] : 1; if (!element) { return false } const beforeHeight = correctPseudoElements ? parseFloat(window.getComputedStyle(element, ":before").height) : 0; const afterHeight = correctPseudoElements ? parseFloat(window.getComputedStyle(element, ":after").height) : 0; const x = (0, _size.getOffset)(element).left; const y = (0, _size.getOffset)(element).top + beforeHeight; const w = element.offsetWidth; const h = element.offsetHeight - beforeHeight - afterHeight; const eventX = this._getEventX(mouseEvent); const eventY = this._getEventY(mouseEvent); return eventX + dragEventDelta >= x && eventX - dragEventDelta < x + w && eventY + dragEventDelta >= y && eventY - dragEventDelta < y + h } _getEventX(e) { return (0, _index.isTouchEvent)(e) ? this._getTouchEventX(e) : e.clientX + this._getDocumentScrollLeft() } _getEventY(e) { return (0, _index.isTouchEvent)(e) ? this._getTouchEventY(e) : e.clientY + this._getDocumentScrollTop() } _getTouchEventX(e) { let touchPoint = null; if (e.changedTouches.length > 0) { touchPoint = e.changedTouches } else if (e.targetTouches.length > 0) { touchPoint = e.targetTouches } return touchPoint ? touchPoint[0].pageX : 0 } _getTouchEventY(e) { let touchPoint = null; if (e.changedTouches.length > 0) { touchPoint = e.changedTouches } else if (e.targetTouches.length > 0) { touchPoint = e.targetTouches } return touchPoint ? touchPoint[0].pageY : 0 } _getDocumentScrollTop() { const document = _dom_adapter.default.getDocument(); return document.documentElement.scrollTop || document.body.scrollTop } _getDocumentScrollLeft() { const document = _dom_adapter.default.getDocument(); return document.documentElement.scrollLeft || document.body.scrollLeft } _updateReadOnlyState() { const readOnly = this.option("readOnly"); this._selectButton.option("disabled", readOnly); this._files.forEach((file => { var _file$cancelButton; return null === (_file$cancelButton = file.cancelButton) || void 0 === _file$cancelButton ? void 0 : _file$cancelButton.option("disabled", readOnly) })); this._updateInputLabelText(); this._attachDragEventHandlers(this._$inputWrapper) } _updateHoverState() { var _this$_selectButton, _this$_uploadButton; const value = this.option("hoverStateEnabled"); null === (_this$_selectButton = this._selectButton) || void 0 === _this$_selectButton || _this$_selectButton.option("hoverStateEnabled", value); null === (_this$_uploadButton = this._uploadButton) || void 0 === _this$_uploadButton || _this$_uploadButton.option("hoverStateEnabled", value); this._files.forEach((file => { var _file$uploadButton, _file$cancelButton2; null === (_file$uploadButton = file.uploadButton) || void 0 === _file$uploadButton || _file$uploadButton.option("hoverStateEnabled", value); null === (_file$cancelButton2 = file.cancelButton) || void 0 === _file$cancelButton2 || _file$cancelButton2.option("hoverStateEnabled", value) })) } _optionChanged(args) { const { name: name, value: value, previousValue: previousValue } = args; switch (name) { case "height": case "width": this._updateFileNameMaxWidth(); super._optionChanged(args); break; case "value": !value.length && this._$fileInput.val(""); if (!this._preventRecreatingFiles) { this._createFiles(); this._renderFiles() } this._recalculateProgress(); super._optionChanged(args); break; case "name": case "hint": this._initFileInput(); super._optionChanged(args); break; case "accept": this._initFileInput(); break; case "multiple": this._initFileInput(); if (!args.value) { this.clear() } break; case "readOnly": this._updateReadOnlyState(); super._optionChanged(args); break; case "disabled": this._updateInputLabelText(); super._optionChanged(args); break; case "selectButtonText": this._selectButton.option("text", value); break; case "uploadButtonText": this._uploadButton && this._uploadButton.option("text", value); break; case "_uploadButtonType": this._uploadButton && this._uploadButton.option("type", value); break; case "_buttonStylingMode": this._files.forEach((file => { var _file$uploadButton2, _file$cancelButton3; null === (_file$uploadButton2 = file.uploadButton) || void 0 === _file$uploadButton2 || _file$uploadButton2.option("stylingMode", value); null === (_file$cancelButton3 = file.cancelButton) || void 0 === _file$cancelButton3 || _file$cancelButton3.option("stylingMode", value) })); break; case "dialogTrigger": this._detachSelectFileDialogHandlers(previousValue); this._attachSelectFileDialogHandlers(value); break; case "dropZone": this._detachDragEventHandlers(previousValue); this._attachDragEventHandlers(value); break; case "maxFileSize": case "minFileSize": case "allowedFileExtensions": case "invalidFileExtensionMessage": case "invalidMaxFileSizeMessage": case "invalidMinFileSizeMessage": case "readyToUploadMessage": case "uploadedMessage": case "uploadFailedMessage": case "uploadAbortedMessage": case "nativeDropSupported": this._invalidate(); break; case "labelText": this._updateInputLabelText(); break; case "showFileList": if (!this._preventRecreatingFiles) { this._renderFiles() } break; case "uploadFile": case "uploadChunk": case "chunkSize": this._setUploadStrategy(); break; case "abortUpload": case "uploadUrl": case "progress": case "uploadMethod": case "uploadHeaders": case "uploadCustomData": case "extendSelection": break; case "hoverStateEnabled": this._updateHoverState(); super._optionChanged(args); break; case "allowCanceling": case "uploadMode": this.clear(); this._invalidate(); break; case "onBeforeSend": this._createBeforeSendAction(); break; case "onUploadStarted": this._createUploadStartedAction(); break; case "onUploaded": this._createUploadedAction(); break; case "onFilesUploaded": this._createFilesUploadedAction(); break; case "onProgress": this._createProgressAction(); break; case "onUploadError": this._createUploadErrorAction(); break; case "onUploadAborted": this._createUploadAbortedAction(); break; case "onDropZoneEnter": this._createDropZoneEnterAction(); break; case "onDropZoneLeave": this._createDropZoneLeaveAction(); break; case "useNativeInputClick": this._renderInput(); break; case "useDragOver": this._attachDragEventHandlers(this._$inputWrapper); break; case "inputAttr": this._applyInputAttributes(this.option(name)); break; default: super._optionChanged(args) } } _resetInputValue(force) { if ("useForm" === this.option("uploadMode") && !force) { return } this._doPreventInputChange = true; this._$fileInput.val(""); this._doPreventInputChange = false } clear() { this.option("value", []) } } class FileBlobReader { constructor(file, chunkSize) { this.file = file; this.chunkSize = chunkSize; this.index = 0 } read() { if (!this.file) { return null } const result = this.createBlobResult(this.file, this.index, this.chunkSize); if (result.isCompleted) { this.file = null } this.index++; return result } createBlobResult(file, index, chunkSize) { const currentPosition = index * chunkSize; return { blob: this.sliceFile(file, currentPosition, chunkSize), index: index, isCompleted: currentPosition + chunkSize >= file.size } } sliceFile(file, startPos, length) { if (file.slice) { return file.slice(startPos, startPos + length) } if (file.webkitSlice) { return file.webkitSlice(startPos, startPos + length) } return null } } class FileUploadStrategyBase { constructor(fileUploader) { this.fileUploader = fileUploader } upload(file) { if (file.isInitialized && file.isAborted) { this.fileUploader._resetFileState(file) } if (file.isValid() && !file.uploadStarted) { this._prepareFileBeforeUpload(file); this._uploadCore(file) } } abortUpload(file) { var _file$request; if (file._isError || file._isLoaded || file.isAborted || !file.uploadStarted) { return } file.isAborted = true; null === (_file$request = file.request) || void 0 === _file$request || _file$request.abort(); if (this._isCustomCallback("abortUpload")) { const abortUpload = this.fileUploader.option("abortUpload"); const arg = this._createUploadArgument(file); let deferred = null; try { const result = abortUpload(file.value, arg); deferred = (0, _deferred.fromPromise)(result) } catch (error) { deferred = (0, _deferred.Deferred)().reject(error).promise() } deferred.done((() => file.onAbort.fire())).fail((error => this._handleFileError(file, error))) } } _beforeSend(xhr, file) { const arg = this._createUploadArgument(file); this.fileUploader._beforeSendAction({ request: xhr, file: file.value, uploadInfo: arg }); file.request = xhr } _createUploadArgument(file) {} _uploadCore(file) {} _isCustomCallback(name) { const callback = this.fileUploader.option(name); return callback && (0, _type.isFunction)(callback) } _handleProgress(file, e) { if (file._isError) { return } file._isProgressStarted = true; this._handleProgressCore(file, e) } _handleProgressCore(file, e) {} _handleFileError(file, error) { file._isError = true; file.onError.fire(error) } _prepareFileBeforeUpload(file) { if (file.$file) { var _file$progressBar2; null === (_file$progressBar2 = file.progressBar) || void 0 === _file$progressBar2 || _file$progressBar2.dispose(); this.fileUploader._createFileProgressBar(file) } if (file.isInitialized) { return } file.onLoadStart.add(this._onUploadStarted.bind(this, file)); file.onLoad.add(this._onLoadedHandler.bind(this, file)); file.onError.add(this._onErrorHandler.bind(this, file)); file.onAbort.add(this._onAbortHandler.bind(this, file)); file.onProgress.add(this._onProgressHandler.bind(this, file)); file.isInitialized = true } _shouldHandleError(file, e) { return (this._isStatusError(e.status) || !file._isProgressStarted) && !file.isAborted } _isStatusError(status) { return status >= 400 && status < 500 || status >= 500 && status < 600 } _onUploadStarted(file, e) { file.uploadStarted = true; this.fileUploader._uploadStartedAction({ file: file.value, event: e, request: file.request }) } _onAbortHandler(file, e) { const args = { file: file.value, event: e, request: file.request, message: this.fileUploader._getUploadAbortedStatusMessage() }; this.fileUploader._uploadAbortedAction(args); this.fileUploader._setStatusMessage(file, args.message); this.fileUploader._handleAllFilesUploaded() } _onErrorHandler(file, error) { const args = { file: file.value, event: void 0, request: file.request, error: error, message: this.fileUploader.option("uploadFailedMessage") }; this.fileUploader._uploadErrorAction(args); this.fileUploader._setStatusMessage(file, args.message); this.fileUploader._handleAllFilesUploaded() } _onLoadedHandler(file, e) { const args = { file: file.value, event: e, request: file.request, message: this.fileUploader.option("uploadedMessage") }; file._isLoaded = true; this.fileUploader._uploadedAction(args); this.fileUploader._setStatusMessage(file, args.message); this.fileUploader._handleAllFilesUploaded() } _onProgressHandler(file, e) { if (file) { const totalFilesSize = this.fileUploader._getTotalFilesSize(); const totalLoadedFilesSize = this.fileUploader._getTotalLoadedFilesSize(); const loadedSize = Math.min(e.loaded, file.value.size); const segmentSize = loadedSize - file.loadedSize; file.loadedSize = loadedSize; this.fileUploader._updateTotalProgress(totalFilesSize, totalLoadedFilesSize + segmentSize); this.fileUploader._updateProgressBar(file, this._getLoadedData(loadedSize, e.total, segmentSize, e)) } } _getLoadedData(loaded, total, currentSegmentSize, event) { return { loaded: loaded, total: total, currentSegmentSize: currentSegmentSize } } _extendFormData(formData) { const formDataEntries = this.fileUploader.option("uploadCustomData"); for (const entryName in formDataEntries) { if (Object.prototype.hasOwnProperty.call(formDataEntries, entryName) && (0, _type.isDefined)(formDataEntries[entryName])) { formData.append(entryName, formDataEntries[entryName]) } } } } class ChunksFileUploadStrategyBase extends FileUploadStrategyBase { constructor(fileUploader) { super(fileUploader); this.chunkSize = this.fileUploader.option("chunkSize") } _uploadCore(file) { const realFile = file.value; const chunksData = { name: realFile.name, loadedBytes: 0, type: realFile.type, blobReader: new FileBlobReader(realFile, this.chunkSize), guid: new _guid.default, fileSize: realFile.size, count: this._getFileChunksCount(realFile), customData: {} }; file.chunksData = chunksData; this._sendChunk(file, chunksData) } _getFileChunksCount(jsFile) { return 0 === jsFile.size ? 1 : Math.ceil(jsFile.size / this.chunkSize) } _sendChunk(file, chunksData) { const chunk = chunksData.blobReader.read(); chunksData.currentChunk = chunk; if (chunk) { this._sendChunkCore(file, chunksData, chunk).done((() => { if (file.isAborted) { return } chunksData.loadedBytes += chunk.blob.size; file.onProgress.fire({ loaded: chunksData.loadedBytes, total: file.value.size }); if (chunk.isCompleted) { file.onLoad.fire() } setTimeout((() => this._sendChunk(file, chunksData))) })).fail((error => { if (this._shouldHandleError(file, error)) { this._handleFileError(file, error) } })) } } _sendChunkCore(file, chunksData, chunk) {} _tryRaiseStartLoad(file) { if (!file.isStartLoad) { file.isStartLoad = true; file.onLoadStart.fire() } } _getEvent(e) { return null } _createUploadArgument(file) { return this._createChunksInfo(file.chunksData) } _createChunksInfo(chunksData) { return { bytesUploaded: chunksData.loadedBytes, chunkCount: chunksData.count, customData: chunksData.customData, chunkBlob: chunksData.currentChunk.blob, chunkIndex: chunksData.currentChunk.index } } } class DefaultChunksFileUploadStrategy extends ChunksFileUploadStrategyBase { _sendChunkCore(file, chunksData, chunk) { return _ajax.default.sendRequest({ url: this.fileUploader.option("uploadUrl"), method: this.fileUploader.option("uploadMethod"), headers: this.fileUploader.option("uploadHeaders"), beforeSend: xhr => this._beforeSend(xhr, file), upload: { onprogress: e => this._handleProgress(file, e), onloadstart: () => this._tryRaiseStartLoad(file), onabort: () => file.onAbort.fire() }, data: this._createFormData({ fileName: chunksData.name, blobName: this.fileUploader.option("name"), blob: chunk.blob, index: chunk.index, count: chunksData.count, type: chunksData.type, guid: chunksData.guid, size: chunksData.fileSize }) }) } _createFormData(options) { const formData = new window.FormData; formData.append(options.blobName, options.blob); formData.append("chunkMetadata", JSON.stringify({ FileName: options.fileName, Index: options.index, TotalCount: options.count, FileSize: options.size, FileType: options.type, FileGuid: options.guid })); this._extendFormData(formData); return formData } } class CustomChunksFileUploadStrategy extends ChunksFileUploadStrategyBase { _sendChunkCore(file, chunksData) { this._tryRaiseStartLoad(file); const chunksInfo = this._createChunksInfo(chunksData); const uploadChunk = this.fileUploader.option("uploadChunk"); try { const result = uploadChunk(file.value, chunksInfo); return (0, _deferred.fromPromise)(result) } catch (error) { return (0, _deferred.Deferred)().reject(error).promise() } } _shouldHandleError(file, error) { return true } } class WholeFileUploadStrategyBase extends FileUploadStrategyBase { _uploadCore(file) { file.loadedSize = 0; this._uploadFile(file).done((() => { if (!file.isAborted) { file.onLoad.fire() } })).fail((error => { if (this._shouldHandleError(file, error)) { this._handleFileError(file, error) } })) } _uploadFile(file) {} _handleProgressCore(file, e) { file.onProgress.fire(e) } _getLoadedData(loaded, total, segmentSize, event) { const result = super._getLoadedData(loaded, total, segmentSize, event); result.event = event; return result } } class DefaultWholeFileUploadStrategy extends WholeFileUploadStrategyBase { _uploadFile(file) { return _ajax.default.sendRequest({ url: this.fileUploader.option("uploadUrl"), method: this.fileUploader.option("uploadMethod"), headers: this.fileUploader.option("uploadHeaders"), beforeSend: xhr => this._beforeSend(xhr, file), upload: { onprogress: e => this._handleProgress(file, e), onloadstart: () => file.onLoadStart.fire(), onabort: () => file.onAbort.fire() }, data: this._createFormData(this.fileUploader.option("name"), file.value) }) } _createFormData(fieldName, fieldValue) { const formData = new window.FormData; formData.append(fieldName, fieldValue, fieldValue.name); this._extendFormData(formData); return formData } } class CustomWholeFileUploadStrategy extends WholeFileUploadStrategyBase { _uploadFile(file) { file.onLoadStart.fire(); const progressCallback = loadedBytes => { const arg = { loaded: loadedBytes, total: file.value.size }; this._handleProgress(file, arg) }; const uploadFile = this.fileUploader.option("uploadFile"); try { const result = uploadFile(file.value, progressCallback); return (0, _deferred.fromPromise)(result) } catch (error) { return (0, _deferred.Deferred)().reject(error).promise() } } _shouldHandleError(file, e) { return true } }(0, _component_registrator.default)("dxFileUploader", FileUploader); exports.default = FileUploader }, 88017: /*!************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/ui/m_gallery.js ***! \************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _animation = __webpack_require__( /*! ../../common/core/animation */ 16826); var _translator = __webpack_require__( /*! ../../common/core/animation/translator */ 88603); var _click = __webpack_require__( /*! ../../common/core/events/click */ 64044); var _events_engine = _interopRequireDefault(__webpack_require__( /*! ../../common/core/events/core/events_engine */ 92774)); var _swipeable = _interopRequireDefault(__webpack_require__( /*! ../../common/core/events/gesture/swipeable */ 18278)); var _index = __webpack_require__( /*! ../../common/core/events/utils/index */ 98834); var _visibility_change = __webpack_require__( /*! ../../common/core/events/visibility_change */ 18029); var _message = _interopRequireDefault(__webpack_require__( /*! ../../common/core/localization/message */ 4671)); var _component_registrator = _interopRequireDefault(__webpack_require__( /*! ../../core/component_registrator */ 92848)); var _devices = _interopRequireDefault(__webpack_require__( /*! ../../core/devices */ 65951)); var _element = __webpack_require__( /*! ../../core/element */ 61404); var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../core/renderer */ 64553)); var _bindable_template = __webpack_require__( /*! ../../core/templates/bindable_template */ 27286); var _common = __webpack_require__( /*! ../../core/utils/common */ 17781); var _deferred = __webpack_require__( /*! ../../core/utils/deferred */ 87739); var _extend = __webpack_require__( /*! ../../core/utils/extend */ 52576); var _size = __webpack_require__( /*! ../../core/utils/size */ 57653); var _type = __webpack_require__( /*! ../../core/utils/type */ 11528); var _window = __webpack_require__( /*! ../../core/utils/window */ 3104); var _uiCollection_widget = _interopRequireDefault(__webpack_require__( /*! ../../ui/collection/ui.collection_widget.edit */ 7607)); var _widget = _interopRequireDefault(__webpack_require__( /*! ../core/widget/widget */ 89275)); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } function _extends() { return _extends = Object.assign ? Object.assign.bind() : function(n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) { ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]) } } return n }, _extends.apply(null, arguments) } class GalleryNavButton extends _widget.default { _supportedKeys() { return _extends({}, super._supportedKeys(), { pageUp: _common.noop, pageDown: _common.noop }) } _getDefaultOptions() { return _extends({}, super._getDefaultOptions(), { direction: "next", onClick: null, hoverStateEnabled: true, activeStateEnabled: true }) } _render() { super._render(); const $element = this.$element(); const eventName = (0, _index.addNamespace)(_click.name, this.NAME); const { direction: direction } = this.option(); $element.addClass(`dx-gallery-nav-button-${direction}`); _events_engine.default.off($element, eventName); _events_engine.default.on($element, eventName, (e => { this._createActionByOption("onClick")({ event: e }) })) } _optionChanged(args) { switch (args.name) { case "onClick": case "direction": this._invalidate(); break; default: super._optionChanged(args) } } } class Gallery extends _uiCollection_widget.default { _getDefaultOptions() { return _extends({}, super._getDefaultOptions(), { activeStateEnabled: false, animationDuration: 400, animationEnabled: true, loop: false, swipeEnabled: true, indicatorEnabled: true, showIndicator: true, selectedIndex: 0, slideshowDelay: 0, showNavButtons: false, wrapAround: false, stretchImages: false, _itemAttributes: { role: "option", "aria-label": _message.default.format("dxGallery-itemName") }, loopItemFocus: false, selectOnFocus: true, selectionMode: "single", selectionRequired: true, selectByClick: false }) } _defaultOptionsRules() { return super._defaultOptionsRules().concat([{ device: () => "desktop" === _devices.default.real().deviceType && !_devices.default.isSimulator(), options: { focusStateEnabled: true } }]) } ctor(element, options) { this._wasAnyItemTemplateRendered = false; super.ctor(element, options) } _init() { super._init(); this._activeStateUnit = ".dx-gallery-item"; this.option("loopItemFocus", this.option("loop")) } _initTemplates() { super._initTemplates(); this._templateManager.addDefaultTemplates({ item: new _bindable_template.BindableTemplate((($container, data) => { const $img = (0, _renderer.default)("<img>").addClass("dx-gallery-item-image"); if ((0, _type.isPlainObject)(data)) { this._prepareDefaultItemTemplate(data, $container); $img.attr({ src: data.imageSrc, alt: data.imageAlt }).appendTo($container) } else { $img.attr("src", String(data)).appendTo($container) } }), ["imageSrc", "imageAlt", "text", "html"], this.option("integrationOptions.watchMethod")) }) } _dataSourceOptions() { return { paginate: false } } _itemContainer() { return this._$container } _itemClass() { return "dx-gallery-item" } _itemDataKey() { return "dxGalleryItemData" } _actualItemWidth() { const isWrapAround = this.option("wrapAround"); if (this.option("stretchImages")) { const itemPerPage = isWrapAround ? this._itemsPerPage() + 1 : this._itemsPerPage(); return 1 / itemPerPage } if (isWrapAround) { return this._itemPercentWidth() * this._itemsPerPage() / (this._itemsPerPage() + 1) } return this._itemPercentWidth() } _itemPercentWidth() { let percentWidth; const elementWidth = (0, _size.getOuterWidth)(this.$element()); const { initialItemWidth: initialItemWidth } = this.option(); if (initialItemWidth && initialItemWidth <= elementWidth) { percentWidth = initialItemWidth / elementWidth } else { percentWidth = 1 } return percentWidth } _itemsPerPage() { const itemsPerPage = (0, _window.hasWindow)() ? Math.floor(1 / this._itemPercentWidth()) : 1; return Math.min(itemsPerPage, this._itemsCount()) } _pagesCount() { return Math.ceil(this._itemsCount() / this._itemsPerPage()) } _itemsCount() { const { items: items } = this.option(); return (items || []).length } _offsetDirection() { return this.option("rtlEnabled") ? -1 : 1 } _initMarkup() { this._renderWrapper(); this._renderItemsContainer(); this.$element().addClass("dx-gallery"); const { loop: loop } = this.option(); this.$element().toggleClass("dx-gallery-loop", loop); super._initMarkup(); const useListBoxRole = this._itemsCount() > 0; const ariaAttrs = { role: useListBoxRole ? "listbox" : void 0, label: "gallery" }; this.setAria(ariaAttrs) } _render() { this._renderDragHandler(); this._renderContainerPosition(); this._renderItemSizes(); this._renderItemPositions(); this._renderNavButtons(); this._renderIndicator(); this._renderSelectedItem(); this._renderItemVisibility(); this._renderUserInteraction(); this._setupSlideShow(); this._reviseDimensions(); super._render() } _dimensionChanged() { const selectedIndex = this.option("selectedIndex") || 0; this._stopItemAnimations(); this._clearCacheWidth(); this._cloneDuplicateItems(); this._renderItemSizes(); this._renderItemPositions(); this._renderIndicator(); this._renderContainerPosition(this._calculateIndexOffset(selectedIndex), true); this._renderItemVisibility() } _renderDragHandler() { const eventName = (0, _index.addNamespace)("dragstart", this.NAME); _events_engine.default.off(this.$element(), eventName); _events_engine.default.on(this.$element(), eventName, "img", (() => false)) } _renderWrapper() { if (this._$wrapper) { return } this._$wrapper = (0, _renderer.default)("<div>").addClass("dx-gallery-wrapper").appendTo(this.$element()) } _renderItems(items) { if (!(0, _window.hasWindow)()) { const { selectedIndex: selectedIndex } = this.option(); items = items.length > selectedIndex ? items.slice(selectedIndex, selectedIndex + 1) : items.slice(0, 1) } super._renderItems(items); this._loadNextPageIfNeeded() } _onItemTemplateRendered() { return () => { if (!this._wasAnyItemTemplateRendered) { this._wasAnyItemTemplateRendered = true; (0, _visibility_change.triggerResizeEvent)(this.$element()) } } } _renderItemsContainer() { if (this._$container) { return } this._$container = (0, _renderer.default)("<div>").addClass("dx-gallery-container").appendTo(this._$wrapper) } _cloneDuplicateItems() { if (!this.option("loop")) { return } const items = this.option("items") || []; const itemsCount = items.length; const lastItemIndex = itemsCount - 1; let i; if (!itemsCount) { return } this._getLoopedItems().remove(); const duplicateCount = Math.min(this._itemsPerPage(), itemsCount); const $items = this._getRealItems(); const $container = this._itemContainer(); for (i = 0; i < duplicateCount; i++) { this._cloneItemForDuplicate($items[i], $container) } for (i = 0; i < duplicateCount; i++) { this._cloneItemForDuplicate($items[lastItemIndex - i], $container) } } _cloneItemForDuplicate(item, $container) { if (item) { const $clonedItem = (0, _renderer.default)(item).clone(false).addClass("dx-gallery-item-loop").removeAttr("id").css("margin", 0).appendTo($container); this.setAria({ hidden: true }, $clonedItem) } } _getRealItems() { return this.$element().find(".dx-gallery-item:not(.dx-gallery-item-loop)") } _getLoopedItems() { return this.$element().find(".dx-gallery-item-loop") } _emptyMessageContainer() { return this._$wrapper } _renderItemSizes(startIndex) { let $items = this._itemElements(); const itemWidth = this._actualItemWidth(); if (void 0 !== startIndex) { $items = $items.slice(startIndex) } $items.each((index => { (0, _size.setOuterWidth)((0, _renderer.default)($items[index]), 100 * itemWidth + "%") })) } _renderItemPositions() { const itemWidth = this._actualItemWidth(); const itemsCount = this._itemsCount(); const itemsPerPage = this._itemsPerPage(); const loopItemsCount = this.$element().find(".dx-gallery-item-loop").length; const lastItemDuplicateIndex = itemsCount + loopItemsCount - 1; const offsetRatio = this.option("wrapAround") ? .5 : 0; const freeSpace = this._itemFreeSpace(); const isGapBetweenImages = !!freeSpace; const rtlEnabled = this.option("rtlEnabled"); const selectedIndex = this.option("selectedIndex"); const side = rtlEnabled ? "Right" : "Left"; this._itemElements().each((function(index) { let realIndex = index; const isLoopItem = (0, _renderer.default)(this).hasClass("dx-gallery-item-loop"); if (index > itemsCount + itemsPerPage - 1) { realIndex = lastItemDuplicateIndex - realIndex - itemsPerPage } if (!isLoopItem && 0 !== realIndex) { if (isGapBetweenImages) { (0, _renderer.default)(this).css(`margin${side}`, 100 * freeSpace + "%") } return } const itemPosition = itemWidth * (realIndex + offsetRatio) + freeSpace * (realIndex + 1 - offsetRatio); const property = isLoopItem ? side.toLowerCase() : `margin${side}`; (0, _renderer.default)(this).css(property, 100 * itemPosition + "%") })); this._relocateItems(selectedIndex, selectedIndex, true) } _itemFreeSpace() { let itemsPerPage = this._itemsPerPage(); if (this.option("wrapAround")) { itemsPerPage += 1 } return (1 - this._actualItemWidth() * itemsPerPage) / (itemsPerPage + 1) } _renderContainerPosition(offset, hideItems, animate) { this._releaseInvisibleItems(); offset = offset || 0; const that = this; const itemWidth = this._actualItemWidth(); const targetIndex = offset; const targetPosition = this._offsetDirection() * targetIndex * (itemWidth + this._itemFreeSpace()); let positionReady; if ((0, _type.isDefined)(this._animationOverride)) { animate = this._animationOverride; delete this._animationOverride } if (animate) { that._startSwipe(); positionReady = that._animate(targetPosition).done(that._endSwipe.bind(that)) } else { (0, _translator.move)(this._$container, { left: targetPosition * this._elementWidth(), top: 0 }); positionReady = (0, _deferred.Deferred)().resolveWith(that) } positionReady.done((function() { this._deferredAnimate && that._deferredAnimate.resolveWith(that); hideItems && this._renderItemVisibility() })); return positionReady.promise() } _startSwipe() { this.$element().addClass("dx-gallery-active") } _endSwipe() { this.$element().removeClass("dx-gallery-active") } _animate(targetPosition, extraConfig) { const that = this; const $container = this._$container; const animationComplete = (0, _deferred.Deferred)(); _animation.fx.animate(this._$container, (0, _extend.extend)({ type: "slide", to: { left: targetPosition * this._elementWidth() }, duration: that.option("animationDuration"), complete() { if (that._needMoveContainerForward()) { (0, _translator.move)($container, { left: 0, top: 0 }) } if (that._needMoveContainerBack()) { (0, _translator.move)($container, { left: that._maxContainerOffset() * that._elementWidth(), top: 0 }) } animationComplete.resolveWith(that) } }, extraConfig || {})); return animationComplete } _needMoveContainerForward() { const expectedPosition = this._$container.position().left * this._offsetDirection(); const actualPosition = -this._maxItemWidth() * this._elementWidth() * this._itemsCount(); return expectedPosition <= actualPosition + 1 } _needMoveContainerBack() { const expectedPosition = this._$container.position().left * this._offsetDirection(); const actualPosition = this._actualItemWidth() * this._elementWidth(); return expectedPosition >= actualPosition - 1 } _maxContainerOffset() { return -this._maxItemWidth() * (this._itemsCount() - this._itemsPerPage()) * this._offsetDirection() } _maxItemWidth() { return this._actualItemWidth() + this._itemFreeSpace() } _reviseDimensions() { const that = this; const $firstItem = that._itemElements().first().find(".dx-item-content"); if (!$firstItem || $firstItem.is(":hidden")) { return } if (!that.option("height")) { that.option("height", (0, _size.getOuterHeight)($firstItem)) } if (!that.option("width")) { that.option("width", (0, _size.getOuterWidth)($firstItem)) } this._dimensionChanged() } _renderIndicator() { const { showIndicator: showIndicator } = this.option(); this._cleanIndicators(); this.$element().toggleClass("dx-gallery-indicator-visible", showIndicator); if (!showIndicator) { return } const indicator = this._$indicator = (0, _renderer.default)("<div>").addClass("dx-gallery-indicator").appendTo(this._$wrapper); const { indicatorEnabled: indicatorEnabled } = this.option(); for (let i = 0; i < this._pagesCount(); i++) { const $indicatorItem = (0, _renderer.default)("<div>").addClass("dx-gallery-indicator-item").appendTo(indicator); if (indicatorEnabled) { this._attachIndicatorClickHandler($indicatorItem, i) } } this._renderSelectedPageIndicator() } _attachIndicatorClickHandler($element, index) { _events_engine.default.on($element, (0, _index.addNamespace)(_click.name, this.NAME), (event => { this._indicatorSelectHandler(event, index) })) } _detachIndicatorClickHandler($element) { _events_engine.default.off($element, (0, _index.addNamespace)(_click.name, this.NAME)) } _toggleIndicatorInteraction(clickEnabled) { var _this$_$indicator; const $indicatorItems = (null === (_this$_$indicator = this._$indicator) || void 0 === _this$_$indicator ? void 0 : _this$_$indicator.find(".dx-gallery-indicator-item")) || []; if ($indicatorItems.length) { $indicatorItems.each(((index, element) => { clickEnabled ? this._attachIndicatorClickHandler((0, _renderer.default)(element), index) : this._detachIndicatorClickHandler((0, _renderer.default)(element)) })) } } _cleanIndicators() { if (this._$indicator) { this._$indicator.remove() } } _renderSelectedItem() { const { selectedIndex: selectedIndex } = this.option(); this._itemElements().removeClass("dx-gallery-item-selected").eq(selectedIndex).addClass("dx-gallery-item-selected") } _renderItemVisibility() { if (this.option("initialItemWidth") || this.option("wrapAround")) { this._releaseInvisibleItems(); return } const { selectedIndex: selectedIndex } = this.option(); this._itemElements().each(((index, item) => { if (selectedIndex !== index) { (0, _renderer.default)(item).find(".dx-item-content").addClass("dx-gallery-item-invisible") } })) } _releaseInvisibleItems() { this._itemElements().find(".dx-item-content").removeClass("dx-gallery-item-invisible") } _renderSelectedPageIndicator() { if (!this._$indicator) { return } const { selectedIndex: selectedIndex } = this.option(); const lastIndex = this._pagesCount() - 1; let pageIndex = Math.ceil(selectedIndex / this._itemsPerPage()); pageIndex = Math.min(lastIndex, pageIndex); this._$indicator.find(".dx-gallery-indicator-item").removeClass("dx-gallery-indicator-item-selected").eq(pageIndex).addClass("dx-gallery-indicator-item-selected") } _renderUserInteraction() { const rootElement = this.$element(); const swipeEnabled = this.option("swipeEnabled") && this._itemsCount() > 1; const { disabled: disabled } = this.option(); this._createComponent(rootElement, _swipeable.default, { disabled: disabled || !swipeEnabled, onStart: this._swipeStartHandler.bind(this), onUpdated: this._swipeUpdateHandler.bind(this), onEnd: this._swipeEndHandler.bind(this), itemSizeFunc: this._elementWidth.bind(this) }) } _indicatorSelectHandler(e, indicatorIndex) { if (!this.option("indicatorEnabled")) { return } const itemIndex = this._fitPaginatedIndex(indicatorIndex * this._itemsPerPage()); this._needLongMove = true; this.option("selectedIndex", itemIndex); this._loadNextPageIfNeeded(itemIndex) } _renderNavButtons() { const that = this; if (!that.option("showNavButtons")) { that._cleanNavButtons(); return } that._prevNavButton = (0, _renderer.default)("<div>").appendTo(this._$wrapper); that._createComponent(that._prevNavButton, GalleryNavButton, { direction: "prev", onClick() { that._prevPage() } }); that._nextNavButton = (0, _renderer.default)("<div>").appendTo(this._$wrapper); that._createComponent(that._nextNavButton, GalleryNavButton, { direction: "next", onClick() { that._nextPage() } }); this._renderNavButtonsVisibility() } _prevPage() { const visiblePageSize = this._itemsPerPage(); const { selectedIndex: selectedIndex } = this.option(); const newSelectedIndex = selectedIndex - visiblePageSize; if (newSelectedIndex === -visiblePageSize && visiblePageSize === this._itemsCount()) { return this._relocateItems(newSelectedIndex, 0) } return this.goToItem(this._fitPaginatedIndex(newSelectedIndex)) } _nextPage() { const visiblePageSize = this._itemsPerPage(); const { selectedIndex: selectedIndex } = this.option(); const newSelectedIndex = selectedIndex + visiblePageSize; if (newSelectedIndex === visiblePageSize && visiblePageSize === this._itemsCount()) { return this._relocateItems(newSelectedIndex, 0) } return this.goToItem(this._fitPaginatedIndex(newSelectedIndex)).done(this._loadNextPageIfNeeded) } _loadNextPageIfNeeded(selectedIndex) { selectedIndex = void 0 === selectedIndex ? this.option("selectedIndex") : selectedIndex; if (this._dataSource && this._dataSource.paginate() && this._shouldLoadNextPage(selectedIndex) && !this._isDataSourceLoading() && !this._isLastPage()) { this._loadNextPage().done((() => { this._renderIndicator(); this._cloneDuplicateItems(); this._renderItemPositions(); this._renderNavButtonsVisibility(); this._renderItemSizes(selectedIndex) })) } } _shouldLoadNextPage(selectedIndex) { const visiblePageSize = this._itemsPerPage(); const { items: items } = this.option(); return selectedIndex + 2 * visiblePageSize > items.length } _allowDynamicItemsAppend() { return true } _fitPaginatedIndex(itemIndex) { const itemsPerPage = this._itemsPerPage(); const restItemsCount = itemIndex < 0 ? itemsPerPage + itemIndex : this._itemsCount() - itemIndex; if (itemIndex > this._itemsCount() - 1) { itemIndex = 0; this._goToGhostItem = true } else if (restItemsCount < itemsPerPage && restItemsCount > 0) { if (itemIndex > 0) { itemIndex -= itemsPerPage - restItemsCount } else { itemIndex += itemsPerPage - restItemsCount } } return itemIndex } _cleanNavButtons() { if (this._prevNavButton) { this._prevNavButton.remove(); delete this._prevNavButton } if (this._nextNavButton) { this._nextNavButton.remove(); delete this._nextNavButton } } _renderNavButtonsVisibility() { if (!this.option("showNavButtons") || !this._prevNavButton || !this._nextNavButton) { return } const { selectedIndex: selectedIndex } = this.option(); const loop = this.option("loop"); const itemsCount = this._itemsCount(); this._prevNavButton.show(); this._nextNavButton.show(); if (0 === itemsCount) { this._prevNavButton.hide(); this._nextNavButton.hide() } if (loop) { return } let nextHidden = selectedIndex === itemsCount - this._itemsPerPage(); const prevHidden = itemsCount < 2 || 0 === selectedIndex; if (this._dataSource && this._dataSource.paginate()) { nextHidden = nextHidden && this._isLastPage() } else { nextHidden = nextHidden || itemsCount < 2 } if (prevHidden) { this._prevNavButton.hide() } if (nextHidden) { this._nextNavButton.hide() } } _setupSlideShow() { const that = this; const { slideshowDelay: slideshowDelay } = that.option(); clearTimeout(that._slideshowTimer); if (!slideshowDelay) { return } that._slideshowTimer = setTimeout((() => { if (that._userInteraction) { that._setupSlideShow(); return } that.nextItem(true).done(that._setupSlideShow) }), slideshowDelay) } _elementWidth() { if (!this._cacheElementWidth) { this._cacheElementWidth = (0, _size.getWidth)(this.$element()) } return this._cacheElementWidth } _clearCacheWidth() { delete this._cacheElementWidth } _swipeStartHandler(e) { this._releaseInvisibleItems(); this._clearCacheWidth(); this._elementWidth(); const itemsCount = this._itemsCount(); if (!itemsCount) { e.event.cancel = true; return } this._stopItemAnimations(); this._startSwipe(); this._userInteraction = true; if (!this.option("loop")) { const { selectedIndex: selectedIndex, rtlEnabled: rtlEnabled } = this.option(); const startOffset = itemsCount - selectedIndex - this._itemsPerPage(); const endOffset = selectedIndex; e.event.maxLeftOffset = rtlEnabled ? endOffset : startOffset; e.event.maxRightOffset = rtlEnabled ? startOffset : endOffset } } _stopItemAnimations() { _animation.fx.stop(this._$container, true) } _swipeUpdateHandler(e) { const { selectedIndex: selectedIndex, wrapAround: wrapAround } = this.option(); const wrapAroundRatio = wrapAround ? 1 : 0; const offset = this._offsetDirection() * e.event.offset * (this._itemsPerPage() + wrapAroundRatio) - selectedIndex; if (offset < 0) { this._loadNextPageIfNeeded(Math.ceil(Math.abs(offset))) } this._renderContainerPosition(offset) } _swipeEndHandler(e) { const targetOffset = e.event.targetOffset * this._offsetDirection() * this._itemsPerPage(); const { selectedIndex: selectedIndex } = this.option(); const newIndex = this._fitIndex(selectedIndex - targetOffset); const paginatedIndex = this._fitPaginatedIndex(newIndex); if (Math.abs(targetOffset) < this._itemsPerPage()) { this._relocateItems(selectedIndex); return } if (this._itemsPerPage() === this._itemsCount()) { if (targetOffset > 0) { this._relocateItems(-targetOffset) } else { this._relocateItems(0) } return } this.option("selectedIndex", paginatedIndex) } _setFocusOnSelect() { this._userInteraction = true; const selectedItem = this._getRealItems().filter(".dx-gallery-item-selected"); this.option("focusedElement", (0, _element.getPublicElement)(selectedItem)); this._userInteraction = false } _flipIndex(index) { const itemsCount = this._itemsCount(); index %= itemsCount; if (index > (itemsCount + 1) / 2) { index -= itemsCount } if (index < -(itemsCount - 1) / 2) { index += itemsCount } return index } _fitIndex(index) { if (!this.option("loop")) { return index } const itemsCount = this._itemsCount(); if (index >= itemsCount || index < 0) { this._goToGhostItem = true } if (index >= itemsCount) { index = itemsCount - index } index %= itemsCount; if (index < 0) { index += itemsCount } return index } _clean() { super._clean(); this._cleanIndicators(); this._cleanNavButtons() } _dispose() { this._wasAnyItemTemplateRendered = null; clearTimeout(this._slideshowTimer); super._dispose() } _updateSelection(addedSelection, removedSelection) { this._stopItemAnimations(); this._renderNavButtonsVisibility(); this._renderSelectedItem(); this._relocateItems(addedSelection[0], removedSelection[0]); this._renderSelectedPageIndicator() } _relocateItems(newIndex, prevIndex, withoutAnimation) { if (void 0 === prevIndex) { prevIndex = newIndex } const indexOffset = this._calculateIndexOffset(newIndex, prevIndex); this._renderContainerPosition(indexOffset, true, this.option("animationEnabled") && !withoutAnimation).done((function() { this._setFocusOnSelect(); this._userInteraction = false; this._setupSlideShow() })) } _focusInHandler() { if (_animation.fx.isAnimating(this._$container) || this._userInteraction) { return } super._focusInHandler.apply(this, arguments) } _focusOutHandler() { if (_animation.fx.isAnimating(this._$container) || this._userInteraction) { return } super._focusOutHandler.apply(this, arguments) } _selectFocusedItem() {} _moveFocus() { this._stopItemAnimations(); super._moveFocus.apply(this, arguments); const { focusedElement: focusedElement, animationEnabled: animationEnabled } = this.option(); const index = this.itemElements().index((0, _renderer.default)(focusedElement)); this.goToItem(index, animationEnabled) } _visibilityChanged(visible) { if (visible) { this._reviseDimensions() } } _calculateIndexOffset(newIndex, lastIndex) { if (void 0 === lastIndex) { lastIndex = newIndex } let indexOffset = lastIndex - newIndex; if (this.option("loop") && !this._needLongMove && this._goToGhostItem) { if (this._isItemOnFirstPage(newIndex) && this._isItemOnLastPage(lastIndex)) { indexOffset = -this._itemsPerPage() } else if (this._isItemOnLastPage(newIndex) && this._isItemOnFirstPage(lastIndex)) { indexOffset = this._itemsPerPage() } this._goToGhostItem = false } this._needLongMove = false; indexOffset -= lastIndex; return indexOffset } _isItemOnLastPage(itemIndex) { return itemIndex >= this._itemsCount() - this._itemsPerPage() } _isItemOnFirstPage(itemIndex) { return itemIndex <= this._itemsPerPage() } _optionChanged(args) { switch (args.name) { case "width": case "initialItemWidth": super._optionChanged.apply(this, arguments); this._dimensionChanged(); break; case "animationDuration": this._renderNavButtonsVisibility(); break; case "animationEnabled": break; case "loop": this.$element().toggleClass("dx-gallery-loop", args.value); this.option("loopItemFocus", args.value); if ((0, _window.hasWindow)()) { this._cloneDuplicateItems(); this._renderItemPositions(); this._renderNavButtonsVisibility() } break; case "showIndicator": this._renderIndicator(); break; case "showNavButtons": this._renderNavButtons(); break; case "slideshowDelay": this._setupSlideShow(); break; case "wrapAround": case "stretchImages": if ((0, _window.hasWindow)()) { this._renderItemSizes(); this._renderItemPositions(); this._renderItemVisibility() } break; case "swipeEnabled": this._renderUserInteraction(); break; case "indicatorEnabled": this._toggleIndicatorInteraction(args.value); break; default: super._optionChanged(args) } } goToItem(itemIndex, animation) { const { selectedIndex: selectedIndex } = this.option(); const itemsCount = this._itemsCount(); if (void 0 !== animation) { this._animationOverride = animation } itemIndex = this._fitIndex(itemIndex); this._deferredAnimate = (0, _deferred.Deferred)(); if (itemIndex > itemsCount - 1 || itemIndex < 0 || selectedIndex === itemIndex) { return this._deferredAnimate.resolveWith(this).promise() } this.option("selectedIndex", itemIndex); return this._deferredAnimate.promise() } prevItem(animation) { const { selectedIndex: selectedIndex } = this.option(); return this.goToItem(selectedIndex - 1, animation) } nextItem(animation) { const { selectedIndex: selectedIndex } = this.option(); return this.goToItem(selectedIndex + 1, animation) } }(0, _component_registrator.default)("dxGallery", Gallery); exports.default = Gallery }, 52621: /*!*******************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/ui/m_load_indicator.js ***! \*******************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = exports.LOADINDICATOR_WRAPPER_CLASS = exports.LOADINDICATOR_SEGMENT_INNER_CLASS = exports.LOADINDICATOR_SEGMENT_CLASS = exports.LOADINDICATOR_IMAGE_CLASS = exports.LOADINDICATOR_ICON_CLASS = exports.LOADINDICATOR_CONTENT_CLASS = exports.LOADINDICATOR_CLASS = exports.AnimationType = exports.ANIMATION_TYPE_CLASSES = void 0; var _message = _interopRequireDefault(__webpack_require__( /*! ../../common/core/localization/message */ 4671)); var _component_registrator = _interopRequireDefault(__webpack_require__( /*! ../../core/component_registrator */ 92848)); var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../core/renderer */ 64553)); var _size = __webpack_require__( /*! ../../core/utils/size */ 57653); var _themes = __webpack_require__( /*! ../../ui/themes */ 52071); var _widget = _interopRequireDefault(__webpack_require__( /*! ../core/widget/widget */ 89275)); var _m_support = _interopRequireDefault(__webpack_require__( /*! ../core/utils/m_support */ 85991)); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } function _extends() { return _extends = Object.assign ? Object.assign.bind() : function(n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) { ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]) } } return n }, _extends.apply(null, arguments) } const LOADINDICATOR_CLASS = exports.LOADINDICATOR_CLASS = "dx-loadindicator"; const LOADINDICATOR_WRAPPER_CLASS = exports.LOADINDICATOR_WRAPPER_CLASS = "dx-loadindicator-wrapper"; const LOADINDICATOR_CONTENT_CLASS = exports.LOADINDICATOR_CONTENT_CLASS = "dx-loadindicator-content"; const LOADINDICATOR_ICON_CLASS = exports.LOADINDICATOR_ICON_CLASS = "dx-loadindicator-icon"; const LOADINDICATOR_SEGMENT_CLASS = exports.LOADINDICATOR_SEGMENT_CLASS = "dx-loadindicator-segment"; const LOADINDICATOR_SEGMENT_INNER_CLASS = exports.LOADINDICATOR_SEGMENT_INNER_CLASS = "dx-loadindicator-segment-inner"; const LOADINDICATOR_IMAGE_CLASS = exports.LOADINDICATOR_IMAGE_CLASS = "dx-loadindicator-image"; var AnimationType; ! function(AnimationType) { AnimationType.Circle = "circle"; AnimationType.Sparkle = "sparkle" }(AnimationType || (exports.AnimationType = AnimationType = {})); const ANIMATION_TYPE_CLASSES = exports.ANIMATION_TYPE_CLASSES = { [AnimationType.Circle]: "dx-loadindicator-content-circle", [AnimationType.Sparkle]: "dx-loadindicator-content-sparkle" }; class LoadIndicator extends _widget.default { _getDefaultOptions() { return _extends({}, super._getDefaultOptions(), { _animatingSegmentCount: 1, _animatingSegmentInner: false, _animationType: AnimationType.Circle, activeStateEnabled: false, hoverStateEnabled: false, indicatorSrc: "" }) } _defaultOptionsRules() { const themeName = (0, _themes.current)(); return super._defaultOptionsRules().concat([{ device: () => (0, _themes.isMaterialBased)(themeName), options: { _animatingSegmentCount: 2, _animatingSegmentInner: true } }, { device: () => (0, _themes.isGeneric)(themeName), options: { _animatingSegmentCount: 7 } }]) } _useTemplates() { return false } _init() { super._init(); this.$element().addClass(LOADINDICATOR_CLASS); const label = _message.default.format("Loading"); const aria = { role: "alert", label: label }; this.setAria(aria) } _initMarkup() { super._initMarkup(); this._renderWrapper(); this._renderIndicatorContent(); this._renderMarkup() } _renderWrapper() { this._$wrapper = (0, _renderer.default)("<div>").addClass(LOADINDICATOR_WRAPPER_CLASS); this.$element().append(this._$wrapper) } _getAnimationTypeContentClass() { const { _animationType: animationType } = this.option(); return ANIMATION_TYPE_CLASSES[animationType] } _renderIndicatorContent() { const animationClass = this._getAnimationTypeContentClass() ?? ""; const contentClasses = [LOADINDICATOR_CONTENT_CLASS, animationClass].join(" "); this._$content = (0, _renderer.default)("<div>").addClass(contentClasses); this._$wrapper.append(this._$content) } _renderMarkup() { const { indicatorSrc: indicatorSrc } = this.option(); const isAnimationAvailable = _m_support.default.animation(); if (indicatorSrc) { this._renderImageMarkup() } else if (isAnimationAvailable) { this._renderAnimationMarkup() } } _getSegmentParams() { const { _animationType: animationType, _animatingSegmentCount: animatingSegmentCount, _animatingSegmentInner: animatingSegmentInner } = this.option(); switch (animationType) { case AnimationType.Sparkle: return { segmentCount: 2, segmentInner: false }; case AnimationType.Circle: default: return { segmentCount: animatingSegmentCount ?? 0, segmentInner: Boolean(animatingSegmentInner) } } } _renderAnimationMarkup() { this._$indicator = (0, _renderer.default)("<div>").addClass(LOADINDICATOR_ICON_CLASS); this._$content.append(this._$indicator); const params = this._getSegmentParams(); this._renderSegments(params) } _renderSegments(params) { const { segmentCount: segmentCount, segmentInner: segmentInner } = params; for (let i = segmentCount; i >= 0; i -= 1) { var _this$_$indicator; const $segment = (0, _renderer.default)("<div>").addClass(LOADINDICATOR_SEGMENT_CLASS).addClass(`${LOADINDICATOR_SEGMENT_CLASS}${i}`); if (segmentInner) { const $segmentInner = (0, _renderer.default)("<div>").addClass(LOADINDICATOR_SEGMENT_INNER_CLASS); $segment.append($segmentInner) } null === (_this$_$indicator = this._$indicator) || void 0 === _this$_$indicator || _this$_$indicator.append($segment) } } _renderImageMarkup() { const { indicatorSrc: indicatorSrc } = this.option(); this._$wrapper.addClass(LOADINDICATOR_IMAGE_CLASS); this._$wrapper.css("backgroundImage", `url(${indicatorSrc})`) } _renderDimensions() { super._renderDimensions(); this._updateContentSizeForAnimation() } _updateContentSizeForAnimation() { if (!this._$indicator) { return } let { width: width, height: height } = this.option(); if (width || height) { width = (0, _size.getWidth)(this.$element()); height = (0, _size.getHeight)(this.$element()); const minDimension = Math.min(height, width); this._$wrapper.css({ height: minDimension, width: minDimension, fontSize: minDimension }) } } _clean() { super._clean(); this._removeMarkupForAnimation(); this._removeMarkupForImage() } _removeMarkupForAnimation() { if (!this._$indicator) { return } this._$indicator.remove(); delete this._$indicator } _removeMarkupForImage() { this._$wrapper.css("backgroundImage", "none") } _optionChanged(args) { switch (args.name) { case "_animatingSegmentCount": case "_animatingSegmentInner": case "_animationType": case "indicatorSrc": this._invalidate(); break; default: super._optionChanged(args) } } }(0, _component_registrator.default)("dxLoadIndicator", LoadIndicator); exports.default = LoadIndicator }, 14474: /*!***************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/ui/m_load_panel.js ***! \***************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _message = _interopRequireDefault(__webpack_require__( /*! ../../common/core/localization/message */ 4671)); var _component_registrator = _interopRequireDefault(__webpack_require__( /*! ../../core/component_registrator */ 92848)); var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../core/renderer */ 64553)); var _common = __webpack_require__( /*! ../../core/utils/common */ 17781); var _deferred = __webpack_require__( /*! ../../core/utils/deferred */ 87739); var _load_indicator = _interopRequireDefault(__webpack_require__( /*! ../../ui/load_indicator */ 11979)); var _themes = __webpack_require__( /*! ../../ui/themes */ 52071); var _m_overlay = _interopRequireDefault(__webpack_require__( /*! ../ui/overlay/m_overlay */ 68632)); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } function _extends() { return _extends = Object.assign ? Object.assign.bind() : function(n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) { ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]) } } return n }, _extends.apply(null, arguments) } class LoadPanel extends _m_overlay.default { _supportedKeys() { return _extends({}, super._supportedKeys(), { escape: _common.noop }) } _getDefaultOptions() { return _extends({}, super._getDefaultOptions(), { message: _message.default.format("Loading"), width: 222, height: 90, animation: null, showIndicator: true, indicatorSrc: "", showPane: true, delay: 0, templatesRenderAsynchronously: false, hideTopOverlayHandler: null, focusStateEnabled: false, propagateOutsideClick: true, preventScrollEvents: false }) } _defaultOptionsRules() { return super._defaultOptionsRules().concat([{ device: { platform: "generic" }, options: { shadingColor: "transparent" } }, { device: () => (0, _themes.isMaterial)(), options: { message: "", width: 60, height: 60, maxHeight: 60, maxWidth: 60 } }, { device: () => (0, _themes.isFluent)(), options: { width: "auto", height: "auto" } }]) } _init() { super._init.apply(this, arguments) } _render() { super._render(); this.$element().addClass("dx-loadpanel"); this.$wrapper().addClass("dx-loadpanel-wrapper"); this._updateWrapperAria() } _updateWrapperAria() { this.$wrapper().removeAttr("aria-label").removeAttr("role"); const showIndicator = this.option("showIndicator"); if (!showIndicator) { const aria = this._getAriaAttributes(); this.$wrapper().attr(aria) } } _getAriaAttributes() { const { message: message } = this.option(); const label = message || _message.default.format("Loading"); const aria = { role: "alert", "aria-label": label }; return aria } _renderContentImpl() { super._renderContentImpl(); this.$content().addClass("dx-loadpanel-content"); this._$loadPanelContentWrapper = (0, _renderer.default)("<div>").addClass("dx-loadpanel-content-wrapper"); this._$loadPanelContentWrapper.appendTo(this.$content()); this._togglePaneVisible(); this._cleanPreviousContent(); this._renderLoadIndicator(); this._renderMessage() } _show() { const { delay: delay } = this.option(); if (!delay) { return super._show() } const deferred = (0, _deferred.Deferred)(); const callBase = super._show.bind(this); this._clearShowTimeout(); this._showTimeout = setTimeout((() => { callBase().done((() => { deferred.resolve() })) }), delay); return deferred.promise() } _hide() { this._clearShowTimeout(); return super._hide() } _clearShowTimeout() { clearTimeout(this._showTimeout) } _renderMessage() { if (!this._$loadPanelContentWrapper) { return } const { message: message } = this.option(); if (!message) { return } const $message = (0, _renderer.default)("<div>").addClass("dx-loadpanel-message").text(message); this._$loadPanelContentWrapper.append($message) } _renderLoadIndicator() { if (!this._$loadPanelContentWrapper || !this.option("showIndicator")) { return } if (!this._$indicator) { this._$indicator = (0, _renderer.default)("<div>").addClass("dx-loadpanel-indicator").appendTo(this._$loadPanelContentWrapper) } this._createComponent(this._$indicator, _load_indicator.default, { elementAttr: this._getAriaAttributes(), indicatorSrc: this.option("indicatorSrc") }) } _cleanPreviousContent() { this.$content().find(".dx-loadpanel-message").remove(); this.$content().find(".dx-loadpanel-indicator").remove(); delete this._$indicator } _togglePaneVisible() { this.$content().toggleClass("dx-loadpanel-pane-hidden", !this.option("showPane")) } _optionChanged(args) { switch (args.name) { case "delay": break; case "message": case "showIndicator": this._cleanPreviousContent(); this._renderLoadIndicator(); this._renderMessage(); this._updateWrapperAria(); break; case "showPane": this._togglePaneVisible(); break; case "indicatorSrc": this._renderLoadIndicator(); break; default: super._optionChanged(args) } } _dispose() { this._clearShowTimeout(); super._dispose() } }(0, _component_registrator.default)("dxLoadPanel", LoadPanel); exports.default = LoadPanel }, 67825: /*!***********************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/ui/m_lookup.js ***! \***********************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _translator = __webpack_require__( /*! ../../common/core/animation/translator */ 88603); var _events_engine = _interopRequireDefault(__webpack_require__( /*! ../../common/core/events/core/events_engine */ 92774)); var _message = _interopRequireDefault(__webpack_require__( /*! ../../common/core/localization/message */ 4671)); var _component_registrator = _interopRequireDefault(__webpack_require__( /*! ../../core/component_registrator */ 92848)); var _devices = _interopRequireDefault(__webpack_require__( /*! ../../core/devices */ 65951)); var _element = __webpack_require__( /*! ../../core/element */ 61404); var _utils = __webpack_require__( /*! ../../core/options/utils */ 53904); var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../core/renderer */ 64553)); var _child_default_template = __webpack_require__( /*! ../../core/templates/child_default_template */ 91585); var _common = __webpack_require__( /*! ../../core/utils/common */ 17781); var _extend = __webpack_require__( /*! ../../core/utils/extend */ 52576); var _iterator = __webpack_require__( /*! ../../core/utils/iterator */ 21274); var _size = __webpack_require__( /*! ../../core/utils/size */ 57653); var _type = __webpack_require__( /*! ../../core/utils/type */ 11528); var _window = __webpack_require__( /*! ../../core/utils/window */ 3104); var _ui = _interopRequireDefault(__webpack_require__( /*! ../../ui/popover/ui.popover */ 98894)); var _themes = __webpack_require__( /*! ../../ui/themes */ 52071); var _m_support = _interopRequireDefault(__webpack_require__( /*! ../core/utils/m_support */ 85991)); var _m_drop_down_list = _interopRequireDefault(__webpack_require__( /*! ../ui/drop_down_editor/m_drop_down_list */ 20287)); var _m_utils = __webpack_require__( /*! ../ui/drop_down_editor/m_utils */ 6807); var _m_text_box = _interopRequireDefault(__webpack_require__( /*! ../ui/text_box/m_text_box */ 85968)); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } function _extends() { return _extends = Object.assign ? Object.assign.bind() : function(n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) { ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]) } } return n }, _extends.apply(null, arguments) } const window = (0, _window.getWindow)(); class Lookup extends _m_drop_down_list.default { _supportedKeys() { return _extends({}, super._supportedKeys(), { space(e) { e.preventDefault(); this._validatedOpening() }, enter() { this._validatedOpening() } }) } _getDefaultOptions() { const getSize = side => { let size; if ("phone" === _devices.default.real().deviceType && window.visualViewport) { size = window.visualViewport[side] } else { size = "width" === side ? (0, _size.getWidth)(window) : (0, _size.getHeight)(window) } return .8 * size }; return _extends({}, super._getDefaultOptions(), { placeholder: _message.default.format("Select"), searchPlaceholder: _message.default.format("Search"), searchEnabled: true, searchStartEvent: "input change keyup", cleanSearchOnOpening: true, showCancelButton: true, showClearButton: false, clearButtonText: _message.default.format("Clear"), applyButtonText: _message.default.format("OK"), pullRefreshEnabled: false, useNativeScrolling: true, pullingDownText: _message.default.format("dxList-pullingDownText"), pulledDownText: _message.default.format("dxList-pulledDownText"), refreshingText: _message.default.format("dxList-refreshingText"), pageLoadingText: _message.default.format("dxList-pageLoadingText"), onScroll: null, onPullRefresh: null, onPageLoading: null, pageLoadMode: "scrollBottom", nextButtonText: _message.default.format("dxList-nextButtonText"), grouped: false, groupTemplate: "group", usePopover: false, openOnFieldClick: true, showDropDownButton: false, focusStateEnabled: false, dropDownOptions: { showTitle: true, width: () => getSize("width"), height: () => getSize("height"), shading: true, hideOnOutsideClick: true, animation: {}, title: "", titleTemplate: "title", onTitleRendered: null, fullScreen: false }, dropDownCentered: false, _scrollToSelectedItemEnabled: false, useHiddenSubmitElement: true }) } _defaultOptionsRules() { const themeName = (0, _themes.current)(); return super._defaultOptionsRules().concat([{ device: () => !_m_support.default.nativeScrolling, options: { useNativeScrolling: false } }, { device: device => !_devices.default.isSimulator() && "desktop" === _devices.default.real().deviceType && "generic" === device.platform, options: { usePopover: true, dropDownOptions: { height: "auto" } } }, { device: { platform: "ios", phone: true }, options: { dropDownOptions: { fullScreen: true } } }, { device: { platform: "ios", tablet: true }, options: { dropDownOptions: { width: () => .4 * Math.min((0, _size.getWidth)(window), (0, _size.getHeight)(window)), height: "auto" }, usePopover: true } }, { device: () => "desktop" === _devices.default.real().deviceType && !_devices.default.isSimulator(), options: { focusStateEnabled: true } }, { device: () => (0, _themes.isMaterial)(themeName), options: { usePopover: false, searchEnabled: false, showCancelButton: false, dropDownCentered: true, _scrollToSelectedItemEnabled: true, dropDownOptions: { _ignoreFunctionValueDeprecation: true, width: () => (0, _m_utils.getElementWidth)(this.$element()), height: function() { return this._getPopupHeight() }.bind(this), showTitle: false, shading: false } } }]) } _init() { super._init(); this._initActions() } _initActions() { super._initActions(); this._initScrollAction(); this._initPageLoadingAction(); this._initPullRefreshAction() } _initPageLoadingAction() { this._pageLoadingAction = this._createActionByOption("onPageLoading") } _initPullRefreshAction() { this._pullRefreshAction = this._createActionByOption("onPullRefresh") } _initScrollAction() { this._scrollAction = this._createActionByOption("onScroll") } _scrollHandler(e) { var _this$_scrollAction; null === (_this$_scrollAction = this._scrollAction) || void 0 === _this$_scrollAction || _this$_scrollAction.call(this, e) } _pullRefreshHandler(e) { var _this$_pullRefreshAct; null === (_this$_pullRefreshAct = this._pullRefreshAction) || void 0 === _this$_pullRefreshAct || _this$_pullRefreshAct.call(this, e) } _pageLoadingHandler(e) { var _this$_pageLoadingAct; null === (_this$_pageLoadingAct = this._pageLoadingAction) || void 0 === _this$_pageLoadingAct || _this$_pageLoadingAct.call(this, e) } _initTemplates() { super._initTemplates(); this._templateManager.addDefaultTemplates({ group: new _child_default_template.ChildDefaultTemplate("group"), title: new _child_default_template.ChildDefaultTemplate("title") }) } _initMarkup() { const { usePopover: usePopover } = this.option(); this.$element().addClass("dx-lookup").toggleClass("dx-lookup-popover-mode", usePopover); super._initMarkup() } _inputWrapper() { return this.$element().find(".dx-lookup-field-wrapper") } _dataSourceOptions() { return (0, _extend.extend)(super._dataSourceOptions(), { paginate: true }) } _fireContentReadyAction() {} _popupWrapperClass() { return "" } _renderInput() { this._$field = (0, _renderer.default)("<div>").addClass("dx-lookup-field"); this._applyInputAttributes(this.option("inputAttr")); const $arrow = (0, _renderer.default)("<div>").addClass("dx-lookup-arrow"); this._$fieldWrapper = (0, _renderer.default)("<div>").addClass("dx-lookup-field-wrapper").append(this._$field).append($arrow).appendTo(this.$element()) } _applyInputAttributes(attributes) { this._$field.attr(attributes) } _getInputContainer() { return this._$fieldWrapper } _renderField() { const fieldTemplate = this._getTemplateByOption("fieldTemplate"); if (fieldTemplate && this.option("fieldTemplate")) { this._renderFieldTemplate(fieldTemplate); return } const displayValue = this.option("displayValue"); this._updateField(displayValue); const isFieldEmpty = !this.option("selectedItem"); this.$element().toggleClass("dx-lookup-empty", isFieldEmpty).toggleClass("dx-texteditor-empty", isFieldEmpty) } _getLabelContainer() { return this._$field } _renderDisplayText(text) { if (this._input().length) { super._renderDisplayText(text) } else { this._updateField(text) } } _updateField(text) { text = (0, _type.isDefined)(text) && String(text); this._$field.empty(); if (text) { this._$field.text(text) } else { const $placeholder = (0, _renderer.default)("<div>").attr({ "data-dx_placeholder": this.option("placeholder") }); this._$field.append($placeholder); $placeholder.addClass("dx-placeholder") } } _renderButtonContainers() {} _renderFieldTemplate(template) { this._$field.empty(); const data = this._fieldRenderData(); template.render({ model: data, container: (0, _element.getPublicElement)(this._$field) }) } _fieldRenderData() { return this.option("selectedItem") } _popupShowingHandler() { super._popupShowingHandler.apply(this, arguments); if (this.option("cleanSearchOnOpening")) { var _this$_searchBox, _this$_list; if (this.option("searchEnabled") && null !== (_this$_searchBox = this._searchBox) && void 0 !== _this$_searchBox && _this$_searchBox.option("value")) { this._searchBox.option("value", ""); this._searchCanceled() } null === (_this$_list = this._list) || void 0 === _this$_list || _this$_list.option("focusedElement", null) } if (this.option("dropDownOptions.fullScreen") && this.option("_scrollToSelectedItemEnabled")) { this._popup.option("position").of = (0, _renderer.default)(window) } } _popupShownHandler() { const scrollToSelectedItemEnabled = this.option("_scrollToSelectedItemEnabled"); const fullScreen = this.option("dropDownOptions.fullScreen"); if (!fullScreen && scrollToSelectedItemEnabled) { this._setPopupPosition() } super._popupShownHandler() } _scrollToSelectedItem() { var _this$_list2, _this$_list3; const selectedIndex = null === (_this$_list2 = this._list) || void 0 === _this$_list2 ? void 0 : _this$_list2.option("selectedIndex"); const listItems = null === (_this$_list3 = this._list) || void 0 === _this$_list3 ? void 0 : _this$_list3.option("items"); const itemsCount = listItems.length; if (0 !== itemsCount) { var _this$_list4, _this$_list7; if (null !== (_this$_list4 = this._list) && void 0 !== _this$_list4 && _this$_list4.option("grouped")) { var _this$_list5; null === (_this$_list5 = this._list) || void 0 === _this$_list5 || _this$_list5.scrollToItem({ group: itemsCount - 1, item: listItems[itemsCount - 1].items.length - 1 }) } else { var _this$_list6; null === (_this$_list6 = this._list) || void 0 === _this$_list6 || _this$_list6.scrollToItem(itemsCount - 1) } null === (_this$_list7 = this._list) || void 0 === _this$_list7 || _this$_list7.scrollToItem(selectedIndex) } } _getDifferenceOffsets(selectedListItem) { return selectedListItem.offset().top - (0, _renderer.default)(this.element()).offset().top } _isCenteringEnabled(index, count) { return index > 1 && index < count - 2 } _getPopupOffset() { const listItemsCount = this._listItemElements().length; if (0 === listItemsCount) { return } const selectedListItem = (0, _renderer.default)(this._list.element()).find(".dx-list-item-selected"); const selectedIndex = this._listItemElements().index(selectedListItem); const differenceOfHeights = ((0, _size.getHeight)(selectedListItem) - (0, _size.getHeight)(this.element())) / 2; const lookupOffset = (0, _renderer.default)(this._list.element()).offset().top; const dropDownHeightOption = this.option("dropDownOptions.height"); const popupHeight = "function" === typeof dropDownHeightOption ? dropDownHeightOption() : dropDownHeightOption; const windowHeight = (0, _size.getHeight)(window); let offsetTop = 0; if (-1 !== selectedIndex) { if (this._isCenteringEnabled(selectedIndex, listItemsCount)) { this._scrollToSelectedItem(); const scrollOffsetTop = (popupHeight - (0, _size.getHeight)(selectedListItem)) / 2 - this._getDifferenceOffsets(selectedListItem); this._list.scrollTo(this._list.scrollTop() + 4 - scrollOffsetTop); offsetTop = differenceOfHeights + this._getDifferenceOffsets(selectedListItem); if (lookupOffset < offsetTop && selectedIndex !== listItemsCount - 3) { this._list.scrollTo(this._list.scrollTop() + this._getDifferenceOffsets(selectedListItem) / 2); offsetTop = differenceOfHeights + this._getDifferenceOffsets(selectedListItem) } } else if (selectedIndex <= 1) { this._list.scrollTo(0); offsetTop = differenceOfHeights + this._getDifferenceOffsets(selectedListItem) } else if (selectedIndex >= listItemsCount - 2) { this._scrollToSelectedItem(); offsetTop = differenceOfHeights + this._getDifferenceOffsets(selectedListItem) } if (lookupOffset < offsetTop) { this._scrollToSelectedItem(); offsetTop = differenceOfHeights + 8 } } const offsetBottom = popupHeight - offsetTop - (0, _size.getHeight)(this.element()); if (windowHeight - lookupOffset < offsetBottom) { this._list.scrollTo(this._list.scrollTop() + differenceOfHeights - offsetBottom); offsetTop = popupHeight - (0, _size.getHeight)(this.element()) - 8 } return offsetTop } _setPopupPosition() { if (!this.option("dropDownCentered")) { return } const flipped = this._popup.$wrapper().hasClass("dx-popover-flipped-vertical"); if (flipped) { return } const popupContentParent = (0, _renderer.default)(this._popup.$content()).parent(); const popupOffset = this._getPopupOffset(); const position = (0, _translator.locate)(popupContentParent); (0, _translator.move)(popupContentParent, { top: position.top - popupOffset }) } _listItemGroupedElements() { const groups = this._list._getItemsContainer().children(); const items = []; groups.each(((_, group) => { items.push((0, _renderer.default)(group).find(".dx-list-group-header")[0]); const groupedItems = (0, _renderer.default)(group).find(".dx-list-item"); groupedItems.each(((_, item) => { items.push(item) })) })); return (0, _renderer.default)(items) } _calculateListHeight(grouped) { const listItems = grouped ? this._listItemGroupedElements() : this._listItemElements(); const selectedListItem = (0, _renderer.default)(".dx-list-item-selected"); const selectedIndex = listItems.index(selectedListItem); let listHeight = 0; let requireListItems = []; if (0 === listItems.length) { listHeight += 8 } else if (listItems.length < 5) { listItems.each(((_, item) => { listHeight += (0, _size.getOuterHeight)(item) })) } else { if (selectedIndex <= 1) { requireListItems = listItems.slice(0, 5) } else if (this._isCenteringEnabled(selectedIndex, listItems.length)) { requireListItems = listItems.slice(selectedIndex - 2, selectedIndex + 3) } else { requireListItems = listItems.slice(listItems.length - 5, listItems.length) } requireListItems.each(((_, item) => { listHeight += (0, _size.getOuterHeight)(item) })) } return listHeight + (grouped ? 8 : 16) } _getPopupHeight() { var _this$_list8; if (null !== (_this$_list8 = this._list) && void 0 !== _this$_list8 && _this$_list8.itemElements().length) { return this._calculateListHeight(this.option("grouped")) + (this._$searchWrapper ? (0, _size.getOuterHeight)(this._$searchWrapper) : 0) + (this._popup._$bottom ? (0, _size.getOuterHeight)(this._popup._$bottom) : 0) + (this._popup._$title ? (0, _size.getOuterHeight)(this._popup._$title) : 0) } return "auto" } _allowSelectItemByTab() { return false } _popupTabHandler(e) { const shouldLoopFocusInsidePopup = this._shouldLoopFocusInsidePopup(); if (!shouldLoopFocusInsidePopup) { super._popupTabHandler(e) } } _renderPopup() { if (this.option("usePopover") && !this.option("dropDownOptions.fullScreen")) { if (this.option("_scrollToSelectedItemEnabled")) { super._renderPopup() } else { this._renderPopover(); this._attachPopupKeyHandler() } } else { super._renderPopup() } this._$popup.addClass("dx-lookup-popup"); this._popup.$wrapper().addClass("dx-lookup-popup-wrapper") } _renderPopover() { const popupConfig = this._popupConfig(); const options = (0, _extend.extend)(popupConfig, this._options.cache("dropDownOptions"), { showEvent: null, hideEvent: null, target: this.$element(), fullScreen: false, shading: false, hideOnParentScroll: true, _fixWrapperPosition: false, width: this._isInitialOptionValue("dropDownOptions.width") ? () => (0, _size.getOuterWidth)(this.$element()) : popupConfig.width }); this._popup = this._createComponent(this._$popup, _ui.default, options); this._popup.$overlayContent().attr("role", "dialog"); this._popup.on({ showing: this._popupShowingHandler.bind(this), shown: this._popupShownHandler.bind(this), hiding: this._popupHidingHandler.bind(this), hidden: this._popupHiddenHandler.bind(this), contentReady: this._contentReadyHandler.bind(this) }); if (this.option("_scrollToSelectedItemEnabled")) { this._popup._$arrow.remove() } this._setPopupContentId(this._popup.$content()); this._contentReadyHandler() } _popupHidingHandler() { super._popupHidingHandler(); this.option("focusStateEnabled") && this.focus() } _popupHiddenHandler() { super._popupHiddenHandler(); if (this.option("_scrollToSelectedItemEnabled")) { var _this$_popup; (0, _translator.resetPosition)((0, _renderer.default)(null === (_this$_popup = this._popup) || void 0 === _this$_popup ? void 0 : _this$_popup.content()).parent()) } } _preventFocusOnPopup() {} _shouldLoopFocusInsidePopup() { const { usePopover: usePopover, dropDownCentered: dropDownCentered, _scrollToSelectedItemEnabled: _scrollToSelectedItemEnabled } = this.option(); const result = _scrollToSelectedItemEnabled ? dropDownCentered : !usePopover; return result } _popupConfig() { const { dropDownOptions: dropDownOptions } = this.option(); const shouldLoopFocusInsidePopup = this._shouldLoopFocusInsidePopup(); const result = (0, _extend.extend)(super._popupConfig(), { toolbarItems: this._getPopupToolbarItems(), hideOnParentScroll: false, onPositioned: null, maxHeight: "100vh", showTitle: dropDownOptions.showTitle, title: dropDownOptions.title, titleTemplate: this._getTemplateByOption("dropDownOptions.titleTemplate"), onTitleRendered: dropDownOptions.onTitleRendered, fullScreen: dropDownOptions.fullScreen, shading: dropDownOptions.shading, hideOnOutsideClick: dropDownOptions.hideOnOutsideClick, _loopFocus: shouldLoopFocusInsidePopup }); delete result.animation; delete result.position; if (this.option("_scrollToSelectedItemEnabled")) { result.position = this.option("dropDownCentered") ? { my: "left top", at: "left top", of: this.element() } : { my: "left top", at: "left bottom", of: this.element() }; result.hideOnParentScroll = true }(0, _iterator.each)(["position", "animation", "width", "height"], ((_, optionName) => { const popupOptionValue = dropDownOptions[optionName]; if (void 0 !== popupOptionValue) { result[optionName] = popupOptionValue } })); return result } _getPopupToolbarItems() { const { applyValueMode: applyValueMode } = this.option(); const buttonsConfig = "useButtons" === applyValueMode ? this._popupToolbarItemsConfig() : []; const cancelButton = this._getCancelButtonConfig(); if (cancelButton) { buttonsConfig.push(cancelButton) } const clearButton = this._getClearButtonConfig(); if (clearButton) { buttonsConfig.push(clearButton) } return this._applyButtonsLocation(buttonsConfig) } _popupToolbarItemsConfig() { return [{ shortcut: "done", options: { onClick: this._applyButtonHandler.bind(this), text: this.option("applyButtonText") } }] } _getCancelButtonConfig() { return this.option("showCancelButton") ? { shortcut: "cancel", onClick: this._cancelButtonHandler.bind(this), options: { text: this.option("cancelButtonText") } } : null } _getClearButtonConfig() { return this.option("showClearButton") ? { shortcut: "clear", onClick: this._resetValue.bind(this), options: { text: this.option("clearButtonText") } } : null } _applyButtonHandler(args) { if (args) { this._saveValueChangeEvent(args.event) } this.option("value", this._valueGetter(this._currentSelectedItem())); super._applyButtonHandler() } _cancelButtonHandler() { this._refreshSelected(); super._cancelButtonHandler() } _refreshPopupVisibility() { if (this.option("opened")) { this._updateListDimensions() } } _dimensionChanged() { if (this.option("usePopover") && !this.option("dropDownOptions.width")) { this.option("dropDownOptions.width", (0, _size.getWidth)(this.$element())) } this._updateListDimensions() } _input() { return this._$searchBox || super._input() } _renderPopupContent() { super._renderPopupContent(); this._renderSearch() } _renderValueChangeEvent() {} _renderSearch() { const isSearchEnabled = this.option("searchEnabled"); this._toggleSearchClass(isSearchEnabled); if (isSearchEnabled) { const $searchWrapper = this._$searchWrapper = (0, _renderer.default)("<div>").addClass("dx-lookup-search-wrapper"); const $searchBox = this._$searchBox = (0, _renderer.default)("<div>").addClass("dx-lookup-search").appendTo($searchWrapper); const currentDevice = _devices.default.current(); const searchMode = currentDevice.android ? "text" : "search"; let isKeyboardListeningEnabled = false; const { searchStartEvent: searchStartEvent } = this.option(); const textBoxOptions = { mode: searchMode, showClearButton: true, valueChangeEvent: searchStartEvent, inputAttr: { "aria-label": "Search" }, onDisposing: () => isKeyboardListeningEnabled = false, onFocusIn: () => isKeyboardListeningEnabled = true, onFocusOut: () => isKeyboardListeningEnabled = false, onKeyboardHandled: opts => isKeyboardListeningEnabled && this._list._keyboardHandler(opts), onValueChanged: e => this._searchHandler(e) }; this._searchBox = this._createComponent($searchBox, _m_text_box.default, textBoxOptions); this._registerSearchKeyHandlers(); $searchWrapper.insertBefore(this._$list); this._setSearchPlaceholder() } } _filterDataSource() { if (this._list && !this._list._dataSource && this._isMinSearchLengthExceeded()) { var _this$_list9; null === (_this$_list9 = this._list) || void 0 === _this$_list9 || _this$_list9._scrollView.startLoading() } super._filterDataSource(...arguments) } _dataSourceFiltered() { var _this$_list10; super._dataSourceFiltered(...arguments); null === (_this$_list10 = this._list) || void 0 === _this$_list10 || _this$_list10._scrollView.finishLoading() } _updateActiveDescendant() { super._updateActiveDescendant(); if (!this._$searchBox) { return } const $input = this._$searchBox.find("input"); super._updateActiveDescendant($input) } _removeSearch() { var _this$_$searchWrapper, _this$_$searchBox; null === (_this$_$searchWrapper = this._$searchWrapper) || void 0 === _this$_$searchWrapper || _this$_$searchWrapper.remove(); delete this._$searchWrapper; null === (_this$_$searchBox = this._$searchBox) || void 0 === _this$_$searchBox || _this$_$searchBox.remove(); delete this._$searchBox; delete this._searchBox } _selectListItemHandler(e) { const { focusedElement: focusedElement } = this._list.option(); const $itemElement = (0, _renderer.default)(focusedElement); if (!$itemElement.length) { return } e.preventDefault(); e.target = $itemElement.get(0); this._saveValueChangeEvent(e); this._selectListItem(e.itemData, $itemElement) } _registerSearchKeyHandlers() { var _this$_searchBox2, _this$_searchBox3, _this$_searchBox4, _this$_searchBox5; null === (_this$_searchBox2 = this._searchBox) || void 0 === _this$_searchBox2 || _this$_searchBox2.registerKeyHandler("enter", this._selectListItemHandler.bind(this)); null === (_this$_searchBox3 = this._searchBox) || void 0 === _this$_searchBox3 || _this$_searchBox3.registerKeyHandler("space", this._selectListItemHandler.bind(this)); null === (_this$_searchBox4 = this._searchBox) || void 0 === _this$_searchBox4 || _this$_searchBox4.registerKeyHandler("end", _common.noop); null === (_this$_searchBox5 = this._searchBox) || void 0 === _this$_searchBox5 || _this$_searchBox5.registerKeyHandler("home", _common.noop) } _toggleSearchClass(isSearchEnabled) { if (this._popup) { this._popup.$wrapper().toggleClass("dx-lookup-popup-search", isSearchEnabled) } } _setSearchPlaceholder() { var _this$_searchBox6; if (!this._$searchBox) { return } const minSearchLength = this.option("minSearchLength"); let placeholder = this.option("searchPlaceholder"); if (minSearchLength && placeholder === _message.default.format("Search")) { placeholder = _message.default.getFormatter("dxLookup-searchPlaceholder")(minSearchLength) } null === (_this$_searchBox6 = this._searchBox) || void 0 === _this$_searchBox6 || _this$_searchBox6.option("placeholder", placeholder) } _setAriaTargetForList() {} _listConfig() { return (0, _extend.extend)(super._listConfig(), { tabIndex: 0, grouped: this.option("grouped"), groupTemplate: this._getTemplateByOption("groupTemplate"), pullRefreshEnabled: this.option("pullRefreshEnabled"), useNativeScrolling: this.option("useNativeScrolling"), pullingDownText: this.option("pullingDownText"), pulledDownText: this.option("pulledDownText"), refreshingText: this.option("refreshingText"), pageLoadingText: this.option("pageLoadingText"), onScroll: this._scrollHandler.bind(this), onPullRefresh: this._pullRefreshHandler.bind(this), onPageLoading: this._pageLoadingHandler.bind(this), pageLoadMode: this.option("pageLoadMode"), nextButtonText: this.option("nextButtonText"), indicateLoading: this.option("searchEnabled") }) } _listContentReadyHandler() { super._listContentReadyHandler(...arguments); this._refreshSelected() } _runWithoutCloseOnScroll(callback) { var _this$_popup2; const { _scrollToSelectedItemEnabled: _scrollToSelectedItemEnabled } = this.option(); const hideOnParentScroll = null === (_this$_popup2 = this._popup) || void 0 === _this$_popup2 ? void 0 : _this$_popup2.option("hideOnParentScroll"); if (!_scrollToSelectedItemEnabled) { callback() } else { var _this$_popup3; null === (_this$_popup3 = this._popup) || void 0 === _this$_popup3 || _this$_popup3.option("hideOnParentScroll", false); callback(); this._hideOnParentScrollTimer = setTimeout((() => { var _this$_popup4; null === (_this$_popup4 = this._popup) || void 0 === _this$_popup4 || _this$_popup4.option("hideOnParentScroll", hideOnParentScroll) })) } } _setFocusPolicy() { if (!this.option("focusStateEnabled")) { return } this._runWithoutCloseOnScroll((() => { if (this.option("searchEnabled")) { var _this$_searchBox7; null === (_this$_searchBox7 = this._searchBox) || void 0 === _this$_searchBox7 || _this$_searchBox7.focus() } else { var _this$_list11; null === (_this$_list11 = this._list) || void 0 === _this$_list11 || _this$_list11.focus() } })) } _focusTarget() { return this._$field } _keyboardEventBindingTarget() { return this._$field } _listItemClickHandler(e) { this._saveValueChangeEvent(e.event); this._selectListItem(e.itemData, e.event.currentTarget) } _selectListItem(itemData, target) { var _this$_list12; null === (_this$_list12 = this._list) || void 0 === _this$_list12 || _this$_list12.selectItem(target); const { applyValueMode: applyValueMode } = this.option(); if ("instantly" === applyValueMode) { this._applyButtonHandler() } } _currentSelectedItem() { var _this$_list13; return this.option("grouped") ? this._list.option("selectedItems[0]").items[0] : null === (_this$_list13 = this._list) || void 0 === _this$_list13 ? void 0 : _this$_list13.option("selectedItems[0]") } _resetValue(e) { this._saveValueChangeEvent(e.event); this.option("value", null); this.option("opened", false) } _searchValue() { return this.option("searchEnabled") && this._searchBox ? this._searchBox.option("value") : "" } _renderInputValue() { return super._renderInputValue(...arguments).always((() => { this._refreshSelected() })) } _renderPlaceholder() { if (0 === this.$element().find(".dx-texteditor-input").length) { return } super._renderPlaceholder() } _clean() { this._$fieldWrapper.remove(); clearTimeout(this._hideOnParentScrollTimer); this._hideOnParentScrollTimer = null; this._$searchBox = null; super._clean() } _optionChanged(args) { var _this$_searchBox8; const { name: name, fullName: fullName, value: value } = args; switch (name) { case "dataSource": super._optionChanged(...arguments); this._renderField(); break; case "searchEnabled": if (this._popup) { this._removeSearch(); this._renderSearch() } break; case "searchPlaceholder": this._setSearchPlaceholder(); break; case "minSearchLength": this._setSearchPlaceholder(); super._optionChanged(...arguments); break; case "inputAttr": this._applyInputAttributes(value); break; case "usePopover": case "placeholder": this._invalidate(); break; case "clearButtonText": case "showClearButton": case "showCancelButton": this._setPopupOption("toolbarItems", this._getPopupToolbarItems()); break; case "applyValueMode": default: super._optionChanged(...arguments); break; case "onPageLoading": this._initPageLoadingAction(); break; case "onPullRefresh": this._initPullRefreshAction(); break; case "pullRefreshEnabled": case "useNativeScrolling": case "pullingDownText": case "pulledDownText": case "refreshingText": case "pageLoadingText": case "nextButtonText": case "grouped": case "groupTemplate": this._setListOption(name); break; case "searchStartEvent": null === (_this$_searchBox8 = this._searchBox) || void 0 === _this$_searchBox8 || _this$_searchBox8.option("valueChangeEvent", value); break; case "onScroll": this._initScrollAction(); break; case "pageLoadMode": this._setListOption("pageLoadMode", this.option("pageLoadMode")); break; case "cleanSearchOnOpening": case "_scrollToSelectedItemEnabled": break; case "dropDownOptions": switch (fullName) { case "dropDownOptions.width": case "dropDownOptions.height": { this._popupOptionChanged({ name: name, fullName: fullName, value: "auto" === value ? this.initialOption("dropDownOptions")[(0, _utils.getFieldName)(fullName)] : value }); const { dropDownOptions: dropDownOptions } = this.option(); this._options.cache("dropDownOptions", dropDownOptions); break } default: super._optionChanged(...arguments) } break; case "dropDownCentered": if (this.option("_scrollToSelectedItemEnabled")) { this.option("dropDownOptions.position", void 0); this._renderPopup() } } } focus() { this.option("opened") ? this._setFocusPolicy() : _events_engine.default.trigger(this._focusTarget(), "focus") } field() { return this._$field } }(0, _component_registrator.default)("dxLookup", Lookup); exports.default = Lookup }, 95916: /*!***************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/ui/m_multi_view.js ***! \***************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _translator2 = __webpack_require__( /*! ../../common/core/animation/translator */ 88603); var _swipeable = _interopRequireDefault(__webpack_require__( /*! ../../common/core/events/gesture/swipeable */ 18278)); var _visibility_change = __webpack_require__( /*! ../../common/core/events/visibility_change */ 18029); var _message = _interopRequireDefault(__webpack_require__( /*! ../../common/core/localization/message */ 4671)); var _component_registrator = _interopRequireDefault(__webpack_require__( /*! ../../core/component_registrator */ 92848)); var _devices = _interopRequireDefault(__webpack_require__( /*! ../../core/devices */ 65951)); var _element = __webpack_require__( /*! ../../core/element */ 61404); var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../core/renderer */ 64553)); var _common = __webpack_require__( /*! ../../core/utils/common */ 17781); var _deferred = __webpack_require__( /*! ../../core/utils/deferred */ 87739); var _math = __webpack_require__( /*! ../../core/utils/math */ 50254); var _size = __webpack_require__( /*! ../../core/utils/size */ 57653); var _type = __webpack_require__( /*! ../../core/utils/type */ 11528); var _uiCollection_widget = _interopRequireDefault(__webpack_require__( /*! ../../ui/collection/ui.collection_widget.live_update */ 55213)); var _m_multi_view = __webpack_require__( /*! ./multi_view/m_multi_view.animation */ 68128); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } function _extends() { return _extends = Object.assign ? Object.assign.bind() : function(n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) { ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]) } } return n }, _extends.apply(null, arguments) } const toNumber = value => +value; class MultiView extends _uiCollection_widget.default { _supportedKeys() { return _extends({}, super._supportedKeys(), { pageUp: _common.noop, pageDown: _common.noop }) } _getDefaultOptions() { return _extends({}, super._getDefaultOptions(), { selectedIndex: 0, swipeEnabled: true, animationEnabled: true, loop: false, deferRendering: true, loopItemFocus: false, selectOnFocus: true, selectionMode: "single", selectionRequired: true, selectByClick: false }) } _defaultOptionsRules() { return super._defaultOptionsRules().concat([{ device: () => "desktop" === _devices.default.real().deviceType && !_devices.default.isSimulator(), options: { focusStateEnabled: true } }]) } _itemClass() { return "dx-multiview-item" } _itemDataKey() { return "dxMultiViewItemData" } _itemContainer() { return this._$itemContainer } _itemElements() { return this._itemContainer().children(this._itemSelector()) } _itemWidth() { if (!this._itemWidthValue) { this._itemWidthValue = (0, _size.getWidth)(this._$wrapper) } return this._itemWidthValue } _clearItemWidthCache() { delete this._itemWidthValue } _itemsCount() { return this.option("items").length } _isAllItemsHidden() { const { items: items } = this.option(); return items.every(((_, index) => !this._isItemVisible(index))) } _normalizeIndex(index, direction) { let loop = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : true; const count = this._itemsCount(); if (this._isAllItemsHidden()) { return } if (index < 0) { index += count } if (index >= count) { index -= count } const step = direction > 0 ? -1 : 1; const lastNotLoopedIndex = -1 === step ? 0 : count - 1; while (!this._isItemVisible(index) && (loop || index !== lastNotLoopedIndex)) { index = (index + step + count) % count } return index } _getRTLSignCorrection() { return this.option("rtlEnabled") ? -1 : 1 } _init() { super._init.apply(this, arguments); this._activeStateUnit = ".dx-multiview-item"; const $element = this.$element(); $element.addClass("dx-multiview"); this._$wrapper = (0, _renderer.default)("<div>").addClass("dx-multiview-wrapper"); this._$wrapper.appendTo($element); this._$itemContainer = (0, _renderer.default)("<div>").addClass("dx-multiview-item-container"); this._$itemContainer.appendTo(this._$wrapper); this.option("loopItemFocus", this.option("loop")); this._findBoundaryIndices(); this._initSwipeable() } _ensureSelectedItemIsVisible() { const { loop: loop, selectedIndex: currentSelectedIndex } = this.option(); if (this._isItemVisible(currentSelectedIndex)) { return } if (this._isAllItemsHidden()) { this.option("selectedIndex", 0); return } const direction = -1 * this._getRTLSignCorrection(); let newSelectedIndex = this._normalizeIndex(currentSelectedIndex, direction, loop); if (newSelectedIndex === currentSelectedIndex) { newSelectedIndex = this._normalizeIndex(currentSelectedIndex, -direction, loop) } this.option("selectedIndex", newSelectedIndex) } _initMarkup() { this._deferredItems = []; super._initMarkup(); this._ensureSelectedItemIsVisible(); const selectedItemIndices = this._getSelectedItemIndices(); this._updateItemsVisibility(selectedItemIndices[0]); this._setElementAria(); this._setItemsAria() } _afterItemElementDeleted($item, deletedActionArgs) { super._afterItemElementDeleted($item, deletedActionArgs); if (this._deferredItems) { this._deferredItems.splice(deletedActionArgs.itemIndex, 1) } } _beforeItemElementInserted(change) { super._beforeItemElementInserted.apply(this, arguments); if (this._deferredItems) { this._deferredItems.splice(change.index, 0, null) } } _executeItemRenderAction(index, itemData, itemElement) { index = (this.option("items") || []).indexOf(itemData); super._executeItemRenderAction(index, itemData, itemElement) } _renderItemContent(args) { const renderContentDeferred = (0, _deferred.Deferred)(); const that = this; const deferred = (0, _deferred.Deferred)(); deferred.done((() => { const $itemContent = super._renderItemContent.call(that, args); renderContentDeferred.resolve($itemContent) })); this._deferredItems[args.index] = deferred; this.option("deferRendering") || deferred.resolve(); return renderContentDeferred.promise() } _render() { super._render(); (0, _common.deferRender)((() => { const selectedItemIndices = this._getSelectedItemIndices(); this._updateItems(selectedItemIndices[0]) })) } _getElementAria() { return { role: "group", roledescription: _message.default.format("dxMultiView-elementAriaRoleDescription"), label: _message.default.format("dxMultiView-elementAriaLabel") } } _setElementAria() { const aria = this._getElementAria(); this.setAria(aria, this.$element()) } _setItemsAria() { const $itemElements = this._itemElements(); const itemsCount = this._itemsCount(); $itemElements.each(((itemIndex, item) => { const aria = this._getItemAria({ itemIndex: itemIndex, itemsCount: itemsCount }); this.setAria(aria, (0, _renderer.default)(item)) })) } _getItemAria(args) { const { itemIndex: itemIndex, itemsCount: itemsCount } = args; const aria = { role: "group", roledescription: _message.default.format("dxMultiView-itemAriaRoleDescription"), label: _message.default.format("dxMultiView-itemAriaLabel", itemIndex + 1, itemsCount) }; return aria } _updateItems(selectedIndex, newIndex) { this._updateItemsPosition(selectedIndex, newIndex); this._updateItemsVisibility(selectedIndex, newIndex) } _modifyByChanges() { super._modifyByChanges.apply(this, arguments); const selectedItemIndices = this._getSelectedItemIndices(); this._updateItemsVisibility(selectedItemIndices[0]) } _updateItemsPosition(selectedIndex, newIndex) { const $itemElements = this._itemElements(); const positionSign = (0, _type.isDefined)(newIndex) ? -this._animationDirection(newIndex, selectedIndex) : void 0; const $selectedItem = $itemElements.eq(selectedIndex); _m_multi_view._translator.move($selectedItem, 0); if ((0, _type.isDefined)(newIndex)) { _m_multi_view._translator.move($itemElements.eq(newIndex), 100 * positionSign + "%") } } _isItemVisible(index) { var _this$option$index; return (null === (_this$option$index = this.option("items")[index]) || void 0 === _this$option$index ? void 0 : _this$option$index.visible) ?? true } _updateItemsVisibility(selectedIndex, newIndex) { const $itemElements = this._itemElements(); $itemElements.each(((itemIndex, item) => { const $item = (0, _renderer.default)(item); const isHidden = itemIndex !== selectedIndex && itemIndex !== newIndex; if (!isHidden) { this._renderSpecificItem(itemIndex) } $item.toggleClass("dx-multiview-item-hidden", isHidden); this.setAria("hidden", isHidden || void 0, $item) })) } _renderSpecificItem(index) { const $item = this._itemElements().eq(index); const hasItemContent = $item.find(this._itemContentClass()).length > 0; if ((0, _type.isDefined)(index) && !hasItemContent) { this._deferredItems[index].resolve(); (0, _visibility_change.triggerResizeEvent)($item) } } _refreshItem($item, item) { super._refreshItem($item, item); this._updateItemsVisibility(this.option("selectedIndex")) } _setAriaSelectionAttribute() {} _updateSelection(addedSelection, removedSelection) { const newIndex = addedSelection[0]; const prevIndex = removedSelection[0]; _m_multi_view.animation.complete(this._$itemContainer); this._updateItems(prevIndex, newIndex); const animationDirection = this._animationDirection(newIndex, prevIndex); this._animateItemContainer(animationDirection * this._itemWidth(), (() => { _m_multi_view._translator.move(this._$itemContainer, 0); this._updateItems(newIndex); (0, _size.getWidth)(this._$itemContainer) })) } _animateItemContainer(position, completeCallback) { const duration = this.option("animationEnabled") ? 200 : 0; _m_multi_view.animation.moveTo(this._$itemContainer, position, duration, completeCallback) } _animationDirection(newIndex, prevIndex) { const containerPosition = ($element = this._$itemContainer, (0, _translator2.locate)($element).left); var $element; const indexDifference = (prevIndex - newIndex) * this._getRTLSignCorrection() * this._getItemFocusLoopSignCorrection(); const isSwipePresent = 0 !== containerPosition; const directionSignVariable = isSwipePresent ? containerPosition : indexDifference; return (0, _math.sign)(directionSignVariable) } _getSwipeDisabledState() { return !this.option("swipeEnabled") || this._itemsCount() <= 1 } _initSwipeable() { this._createComponent(this.$element(), _swipeable.default, { disabled: this._getSwipeDisabledState(), elastic: false, itemSizeFunc: this._itemWidth.bind(this), onStart: args => this._swipeStartHandler(args.event), onUpdated: args => this._swipeUpdateHandler(args.event), onEnd: args => this._swipeEndHandler(args.event) }) } _findBoundaryIndices() { const items = this.option("items"); let firstIndex; let lastIndex; items.forEach(((item, index) => { const isDisabled = Boolean(null === item || void 0 === item ? void 0 : item.disabled); const isVisible = this._isItemVisible(index); if (!isDisabled && isVisible) { firstIndex ?? (firstIndex = index); lastIndex = index } })); this._boundaryIndices = { firstAvailableIndex: firstIndex ?? 0, lastAvailableIndex: lastIndex ?? items.length - 1, firstTrueIndex: 0, lastTrueIndex: items.length - 1 } } _swipeStartHandler(e) { _m_multi_view.animation.complete(this._$itemContainer); const selectedIndex = this.option("selectedIndex"); const loop = this.option("loop"); const { firstAvailableIndex: firstAvailableIndex, lastAvailableIndex: lastAvailableIndex } = this._boundaryIndices; const rtl = this.option("rtlEnabled"); e.maxLeftOffset = toNumber(loop || (rtl ? selectedIndex > firstAvailableIndex : selectedIndex < lastAvailableIndex)); e.maxRightOffset = toNumber(loop || (rtl ? selectedIndex < lastAvailableIndex : selectedIndex > firstAvailableIndex)) } _swipeUpdateHandler(e) { const { offset: offset } = e; const swipeDirection = (0, _math.sign)(offset) * this._getRTLSignCorrection(); const selectedIndex = this.option("selectedIndex"); const newIndex = this._normalizeIndex(selectedIndex - swipeDirection, swipeDirection); if (selectedIndex === newIndex) { return } _m_multi_view._translator.move(this._$itemContainer, offset * this._itemWidth()); this._updateItems(selectedIndex, newIndex) } _findNextAvailableIndex(index, offset) { const { items: items, loop: loop } = this.option(); const { firstAvailableIndex: firstAvailableIndex, lastAvailableIndex: lastAvailableIndex, firstTrueIndex: firstTrueIndex, lastTrueIndex: lastTrueIndex } = this._boundaryIndices; const isFirstActive = [firstTrueIndex, firstAvailableIndex].includes(index); const isLastActive = [lastTrueIndex, lastAvailableIndex].includes(index); if (loop) { if (isFirstActive && offset < 0) { return lastAvailableIndex } if (isLastActive && offset > 0) { return firstAvailableIndex } } for (let i = index + offset; i >= firstAvailableIndex && i <= lastAvailableIndex; i += offset) { const isDisabled = Boolean(items[i].disabled); const isVisible = this._isItemVisible(i); if (!isDisabled && isVisible) { return i } } return index } _postprocessSwipe(args) {} _swipeEndHandler(e) { const targetOffset = e.targetOffset * this._getRTLSignCorrection(); if (targetOffset) { const newSelectedIndex = this._findNextAvailableIndex(this.option("selectedIndex"), -targetOffset); this.selectItem(newSelectedIndex).fail((() => { this._animateItemContainer(0, _common.noop) })).done((() => { this._postprocessSwipe({ swipedTabsIndex: newSelectedIndex }) })); const $selectedElement = this.itemElements().filter(".dx-item-selected"); this.option("focusStateEnabled") && this.option("focusedElement", (0, _element.getPublicElement)($selectedElement)) } else { this._animateItemContainer(0, _common.noop) } } _getItemFocusLoopSignCorrection() { return this._itemFocusLooped ? -1 : 1 } _moveFocus() { super._moveFocus.apply(this, arguments); this._itemFocusLooped = false } _prevItem($items) { const $result = super._prevItem.apply(this, arguments); this._itemFocusLooped = $result.is($items.last()); return $result } _nextItem($items) { const $result = super._nextItem.apply(this, arguments); this._itemFocusLooped = $result.is($items.first()); return $result } _dimensionChanged() { this._clearItemWidthCache() } _visibilityChanged(visible) { if (visible) { this._dimensionChanged() } } _updateSwipeDisabledState() { const disabled = this._getSwipeDisabledState(); _swipeable.default.getInstance(this.$element()).option("disabled", disabled) } _dispose() { delete this._boundaryIndices; super._dispose() } _itemOptionChanged(item, property) { super._itemOptionChanged(...arguments); const { selectedItem: selectedItem } = this.option(); if ("visible" === property && item === selectedItem) { this._ensureSelectedItemIsVisible() } } _optionChanged(args) { const { value: value } = args; switch (args.name) { case "loop": this.option("loopItemFocus", value); break; case "animationEnabled": break; case "swipeEnabled": this._updateSwipeDisabledState(); break; case "deferRendering": this._invalidate(); break; case "items": this._updateSwipeDisabledState(); this._findBoundaryIndices(); super._optionChanged(args); break; case "selectedIndex": if (this._isItemVisible(value)) { super._optionChanged(args) } else { this._ensureSelectedItemIsVisible() } break; default: super._optionChanged(args) } } }(0, _component_registrator.default)("dxMultiView", MultiView); exports.default = MultiView }, 93666: /*!***********************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/ui/m_notify.js ***! \***********************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../core/renderer */ 64553)); var _extend = __webpack_require__( /*! ../../core/utils/extend */ 52576); var _type = __webpack_require__( /*! ../../core/utils/type */ 11528); var _view_port = __webpack_require__( /*! ../../core/utils/view_port */ 55355); var _window = __webpack_require__( /*! ../../core/utils/window */ 3104); var _toast = _interopRequireDefault(__webpack_require__( /*! ../../ui/toast */ 36574)); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } const window = (0, _window.getWindow)(); let $notify = null; const $containers = {}; const getDefaultDirection = position => (0, _type.isString)(position) && position.includes("top") ? "down-push" : "up-push"; const getStackContainer = key => { const $container = $containers[key]; return $container || (key => { const $container = (0, _renderer.default)("<div>").appendTo((0, _view_port.value)()); $containers[key] = $container; return $container })(key) }; const setContainerClasses = (container, direction) => { const containerClasses = `dx-toast-stack dx-toast-stack-${direction}-direction`; container.removeAttr("class").addClass(containerClasses) }; const setContainerStyles = (container, direction, position) => { const { offsetWidth: toastWidth, offsetHeight: toastHeight } = container.children().first().get(0); const dimensions = { toastWidth: toastWidth, toastHeight: toastHeight, windowHeight: window.innerHeight, windowWidth: window.innerWidth }; const coordinates = (0, _type.isString)(position) ? getCoordinatesByAlias(position, dimensions) : position; const styles = getPositionStylesByCoordinates(direction, coordinates, dimensions); container.css(styles) }; const getCoordinatesByAlias = (alias, _ref) => { let { toastWidth: toastWidth, toastHeight: toastHeight, windowHeight: windowHeight, windowWidth: windowWidth } = _ref; switch (alias) { case "top left": return { top: 10, left: 10 }; case "top right": return { top: 10, right: 10 }; case "bottom left": return { bottom: 10, left: 10 }; case "bottom right": return { bottom: 10, right: 10 }; case "top center": return { top: 10, left: Math.round(windowWidth / 2 - toastWidth / 2) }; case "left center": return { top: Math.round(windowHeight / 2 - toastHeight / 2), left: 10 }; case "right center": return { top: Math.round(windowHeight / 2 - toastHeight / 2), right: 10 }; case "center": return { top: Math.round(windowHeight / 2 - toastHeight / 2), left: Math.round(windowWidth / 2 - toastWidth / 2) }; default: return { bottom: 10, left: Math.round(windowWidth / 2 - toastWidth / 2) } } }; const getPositionStylesByCoordinates = (direction, coordinates, dimensions) => { const { toastWidth: toastWidth, toastHeight: toastHeight, windowHeight: windowHeight, windowWidth: windowWidth } = dimensions; switch (direction.replace(/-push|-stack/g, "")) { case "up": return { bottom: coordinates.bottom ?? windowHeight - toastHeight - coordinates.top, top: "", left: coordinates.left ?? "", right: coordinates.right ?? "" }; case "down": return { top: coordinates.top ?? windowHeight - toastHeight - coordinates.bottom, bottom: "", left: coordinates.left ?? "", right: coordinates.right ?? "" }; case "left": return { right: coordinates.right ?? windowWidth - toastWidth - coordinates.left, left: "", top: coordinates.top ?? "", bottom: coordinates.bottom ?? "" }; case "right": return { left: coordinates.left ?? windowWidth - toastWidth - coordinates.right, right: "", top: coordinates.top ?? "", bottom: coordinates.bottom ?? "" } } }; exports.default = function(message, typeOrStack, displayTime) { const options = (0, _type.isPlainObject)(message) ? message : { message: message }; const stack = (0, _type.isPlainObject)(typeOrStack) ? typeOrStack : void 0; const type = (0, _type.isPlainObject)(typeOrStack) ? void 0 : typeOrStack; const { onHidden: userOnHidden } = options; if (null !== stack && void 0 !== stack && stack.position) { const { position: position } = stack; const direction = stack.direction || getDefaultDirection(position); const containerKey = (0, _type.isString)(position) ? position : `${position.top}-${position.left}-${position.bottom}-${position.right}`; const { onShowing: userOnShowing } = options; const $container = getStackContainer(containerKey); setContainerClasses($container, direction); (0, _extend.extend)(options, { container: $container, _skipContentPositioning: true, onShowing(args) { setContainerStyles($container, direction, position); null === userOnShowing || void 0 === userOnShowing || userOnShowing(args) } }) }(0, _extend.extend)(options, { type: type, displayTime: displayTime, onHidden(args) { (0, _renderer.default)(args.element).remove(); null === userOnHidden || void 0 === userOnHidden || userOnHidden(args) } }); $notify = (0, _renderer.default)("<div>").appendTo((0, _view_port.value)()); new _toast.default($notify, options).show() } }, 74538: /*!*****************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/ui/m_progress_bar.js ***! \*****************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _component_registrator = _interopRequireDefault(__webpack_require__( /*! ../../core/component_registrator */ 92848)); var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../core/renderer */ 64553)); var _type = __webpack_require__( /*! ../../core/utils/type */ 11528); var _m_track_bar = _interopRequireDefault(__webpack_require__( /*! ../ui/m_track_bar */ 37062)); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } function _extends() { return _extends = Object.assign ? Object.assign.bind() : function(n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) { ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]) } } return n }, _extends.apply(null, arguments) } class ProgressBar extends _m_track_bar.default { _getDefaultOptions() { return _extends({}, super._getDefaultOptions(), { value: 0, statusFormat: ratio => `Progress: ${Math.round(100*ratio)}%`, showStatus: true, onComplete: null, activeStateEnabled: false, statusPosition: "bottom left", _animatingSegmentCount: 0 }) } _defaultOptionsRules() { return super._defaultOptionsRules().concat([{ device: device => "android" === device.platform, options: { _animatingSegmentCount: 2 } }]) } _toggleReadOnlyState() { this.setAria("readonly", void 0) } _initMarkup() { this._renderStatus(); this._createCompleteAction(); super._initMarkup(); this.$element().addClass("dx-progressbar"); this._$wrapper.addClass("dx-progressbar-wrapper"); this._$bar.addClass("dx-progressbar-container"); this.setAria("role", "progressbar"); (0, _renderer.default)("<div>").addClass("dx-progressbar-range-container").appendTo(this._$wrapper).append(this._$bar); this._$range.addClass("dx-progressbar-range"); const { showStatus: showStatus } = this.option(); this._toggleStatus(showStatus) } _useTemplates() { return false } _createCompleteAction() { this._completeAction = this._createActionByOption("onComplete") } _renderStatus() { this._$status = (0, _renderer.default)("<div>").addClass("dx-progressbar-status") } _renderIndeterminateState() { this._$segmentContainer = (0, _renderer.default)("<div>").addClass("dx-progressbar-animating-container"); const { _animatingSegmentCount: segments } = this.option(); for (let i = 0; i < segments; i += 1) { (0, _renderer.default)("<div>").addClass("dx-progressbar-animating-segment").addClass(`dx-progressbar-animating-segment-${i+1}`).appendTo(this._$segmentContainer) } this._$segmentContainer.appendTo(this._$wrapper) } _toggleStatus(value) { const { statusPosition: statusPosition } = this.option(); const splitPosition = statusPosition.split(" "); if (value) { if ("top" === splitPosition[0] || "left" === splitPosition[0]) { this._$status.prependTo(this._$wrapper) } else { this._$status.appendTo(this._$wrapper) } } else { this._$status.detach() } this._togglePositionClass() } _togglePositionClass() { const { statusPosition: statusPosition } = this.option(); const splitPosition = statusPosition.split(" "); this._$wrapper.removeClass("dx-position-top-left dx-position-top-right dx-position-bottom-left dx-position-bottom-right dx-position-left dx-position-right"); let positionClass = `dx-position-${splitPosition[0]}`; if (splitPosition[1]) { positionClass += `-${splitPosition[1]}` } this._$wrapper.addClass(positionClass) } _toggleIndeterminateState(value) { if (value) { this._renderIndeterminateState(); this._$bar.toggle(false) } else { var _this$_$segmentContai; this._$bar.toggle(true); null === (_this$_$segmentContai = this._$segmentContainer) || void 0 === _this$_$segmentContai || _this$_$segmentContai.remove(); delete this._$segmentContainer } } _renderValue() { const { value: value, max: max } = this.option(); if (!value && 0 !== value) { this._toggleIndeterminateState(true); return } if (this._$segmentContainer) { this._toggleIndeterminateState(false) } if (value === max) { this._completeAction() } super._renderValue(); this._setStatus() } _setStatus() { const { statusFormat: statusFormat } = this.option(); let format = statusFormat; if ((0, _type.isFunction)(format)) { format = format.bind(this) } else { format = function(value) { return value } } const statusText = format(this._currentRatio, this.option("value")); this._$status.text(statusText) } _dispose() { this._$status.remove(); super._dispose() } _optionChanged(args) { const { name: name, value: value } = args; switch (name) { case "statusFormat": this._setStatus(); break; case "showStatus": this._toggleStatus(value); break; case "statusPosition": { const { showStatus: showStatus } = this.option(); this._toggleStatus(showStatus); break } case "onComplete": this._createCompleteAction(); break; case "_animatingSegmentCount": break; default: super._optionChanged(args) } } }(0, _component_registrator.default)("dxProgressBar", ProgressBar); exports.default = ProgressBar }, 49824: /*!*****************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/ui/m_range_slider.js ***! \*****************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _events_engine = _interopRequireDefault(__webpack_require__( /*! ../../common/core/events/core/events_engine */ 92774)); var _index = __webpack_require__( /*! ../../common/core/events/utils/index */ 98834); var _message = _interopRequireDefault(__webpack_require__( /*! ../../common/core/localization/message */ 4671)); var _component_registrator = _interopRequireDefault(__webpack_require__( /*! ../../core/component_registrator */ 92848)); var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../core/renderer */ 64553)); var _common = __webpack_require__( /*! ../../core/utils/common */ 17781); var _size = __webpack_require__( /*! ../../core/utils/size */ 57653); var _m_slider = _interopRequireDefault(__webpack_require__( /*! ../ui/slider/m_slider */ 8532)); var _m_slider_handle = _interopRequireDefault(__webpack_require__( /*! ./slider/m_slider_handle */ 29049)); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } function _extends() { return _extends = Object.assign ? Object.assign.bind() : function(n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) { ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]) } } return n }, _extends.apply(null, arguments) } class RangeSlider extends _m_slider.default { _supportedKeys() { const { rtlEnabled: rtlEnabled } = this.option(); const that = this; const _changeHandle = function(e, capturedHandle) { if (that.option("start") === that.option("end")) { that._capturedHandle = capturedHandle; e.target = that._capturedHandle; _events_engine.default.trigger(that._capturedHandle, "focus") } }; const _setHandleValue = function(e, step, sign) { const isStart = (0, _renderer.default)(e.target).hasClass("dx-rangeslider-start-handle"); const valueOption = isStart ? "start" : "end"; let val = that.option(valueOption); step = that._valueStep(step); val += sign * (rtlEnabled ? -step : step); that.option(valueOption, val) }; const moveHandleRight = function(e, step) { _changeHandle(e, rtlEnabled ? that._$handleStart : that._$handleEnd); _setHandleValue(e, step, 1) }; const moveHandleLeft = function(e, step) { _changeHandle(e, rtlEnabled ? that._$handleEnd : that._$handleStart); _setHandleValue(e, step, -1) }; return _extends({}, super._supportedKeys(), { leftArrow(e) { this._processKeyboardEvent(e); moveHandleLeft(e, this.option("step")) }, rightArrow(e) { this._processKeyboardEvent(e); moveHandleRight(e, this.option("step")) }, pageUp(e) { this._processKeyboardEvent(e); moveHandleRight(e, this.option("step") * this.option("keyStep")) }, pageDown(e) { this._processKeyboardEvent(e); moveHandleLeft(e, this.option("step") * this.option("keyStep")) }, home(e) { this._processKeyboardEvent(e); const isStart = (0, _renderer.default)(e.target).hasClass("dx-rangeslider-start-handle"); const valueOption = isStart ? "start" : "end"; const startOption = isStart ? "min" : "start"; const val = this.option(startOption); this.option(valueOption, val) }, end(e) { this._processKeyboardEvent(e); const isStart = (0, _renderer.default)(e.target).hasClass("dx-rangeslider-start-handle"); const valueOption = isStart ? "start" : "end"; const endOption = isStart ? "end" : "max"; const val = this.option(endOption); this.option(valueOption, val) } }) } _getDefaultOptions() { return _extends({}, super._getDefaultOptions(), { start: 40, end: 60, value: [40, 60], startName: "", endName: "" }) } _renderSubmitElement() { const { startName: startName, endName: endName } = this.option(); const $element = this.$element(); this._$submitStartElement = (0, _renderer.default)("<input>").attr("type", "hidden").attr("name", startName).appendTo($element); this._$submitEndElement = (0, _renderer.default)("<input>").attr("type", "hidden").attr("name", endName).appendTo($element) } _initOptions(options) { super._initOptions(options); const initialValue = this.initialOption("value"); const { value: value = [] } = this.option(); if (value[0] === initialValue[0] && value[1] === initialValue[1]) { this.option("value", [this.option("start"), this.option("end")]) } else { this.option({ start: value[0], end: value[1] }) } } _initMarkup() { this.$element().addClass("dx-rangeslider"); super._initMarkup() } _renderContentImpl() { this._callHandlerMethod("repaint"); super._renderContentImpl() } _renderHandle() { const { start: start, end: end } = this.option(); this._$handleStart = this._renderHandleImpl(start, this._$handleStart); this._$handleStart.addClass("dx-rangeslider-start-handle"); this._$handleEnd = this._renderHandleImpl(end, this._$handleEnd); this._$handleEnd.addClass("dx-rangeslider-end-handle"); this._updateHandleAriaLabels() } _startHandler(args) { const e = args.event; const $range = this._$range; const rangeWidth = (0, _size.getWidth)($range); const eventOffsetX = (0, _index.eventData)(e).x - this._$bar.offset().left; const startHandleX = $range.position().left; const endHandleX = $range.position().left + rangeWidth; const rtlEnabled = this.option("rtlEnabled"); const startHandleIsClosest = (rtlEnabled ? -1 : 1) * ((startHandleX + endHandleX) / 2 - eventOffsetX) > 0; this._capturedHandle = startHandleIsClosest ? this._$handleStart : this._$handleEnd; super._startHandler(args) } _updateHandleAriaLabels() { this.setAria("label", _message.default.getFormatter("dxRangeSlider-ariaFrom")(this.option("dxRangeSlider-ariaFrom")), this._$handleStart); this.setAria("label", _message.default.getFormatter("dxRangeSlider-ariaTill")(this.option("dxRangeSlider-ariaTill")), this._$handleEnd) } _activeHandle() { return this._capturedHandle } _updateHandlePosition(e) { const rtlEnabled = this.option("rtlEnabled"); const offsetDirection = rtlEnabled ? -1 : 1; const max = this.option("max"); const min = this.option("min"); let newRatio = this._startOffset + offsetDirection * e.event.offset / this._swipePixelRatio(); newRatio = newRatio.toPrecision(12); const newValue = newRatio * (max - min) + min; this._updateSelectedRangePosition(newRatio, newRatio); _m_slider_handle.default.getInstance(this._activeHandle()).fitTooltipPosition; this._changeValueOnSwipe(newRatio); const [startValue, endValue] = this._getActualValue(); if (startValue === endValue) { let $nextHandle = (0, _renderer.default)(); if (newValue < startValue) { $nextHandle = this._$handleStart } else { $nextHandle = this._$handleEnd } _events_engine.default.trigger($nextHandle, "focus"); if ($nextHandle && $nextHandle !== this._capturedHandle) { const leftRatio = (startValue - min) / (max - min); const rightRatio = (endValue - min) / (max - min); this._updateSelectedRangePosition(leftRatio, rightRatio); this._toggleActiveState(this._activeHandle(), false); this._toggleActiveState($nextHandle, true); this._capturedHandle = $nextHandle } this._updateSelectedRangePosition(newRatio, newRatio); this._changeValueOnSwipe(newRatio) } } _updateSelectedRangePosition(leftRatio, rightRatio) { const { rtlEnabled: rtlEnabled } = this.option(); const moveRight = this._capturedHandle === this._$handleStart && rtlEnabled || this._capturedHandle === this._$handleEnd && !rtlEnabled; const prop = moveRight ? "right" : "left"; if (rtlEnabled ^ moveRight) { this._$range.css(prop, 100 - 100 * rightRatio + "%") } else { this._$range.css(prop, 100 * leftRatio + "%") } } _setValueOnSwipe(value) { const option = this._capturedHandle === this._$handleStart ? "start" : "end"; let [start, end] = this._getActualValue(); const { max: max, min: min } = this.option(); start = Math.min(Math.max(start, min), max); end = Math.min(Math.max(end, min), max); if ("start" === option) { start = value > end ? end : value } else { end = value < start ? start : value } const { valueChangeMode: valueChangeMode } = this.option(); if ("onHandleMove" === valueChangeMode) { this.option("value", [start, end]) } else { this._actualValue = [start, end]; this._renderValue() } } _renderValue() { let [valStart, valEnd] = this._getActualValue(); const { min: min, max: max } = this.option(); const rtlEnabled = this.option("rtlEnabled"); valStart = Math.max(min, Math.min(valStart, max)); valEnd = Math.max(valStart, Math.min(valEnd, max)); const { valueChangeMode: valueChangeMode } = this.option(); if ("onHandleMove" === valueChangeMode) { this._setOptionWithoutOptionChange("start", valStart); this._setOptionWithoutOptionChange("end", valEnd); this._setOptionWithoutOptionChange("value", [valStart, valEnd]) } this._$submitStartElement.val((0, _common.applyServerDecimalSeparator)(valStart)); this._$submitEndElement.val((0, _common.applyServerDecimalSeparator)(valEnd)); const ratio1 = max === min ? 0 : (valStart - min) / (max - min); const ratio2 = max === min ? 0 : (valEnd - min) / (max - min); const startOffset = `${parseFloat((100*ratio1).toPrecision(12))}%`; const endOffset = `${parseFloat((100*(1-ratio2)).toPrecision(12))}%`; if (!this._needPreventAnimation) { this._setRangeStyles({ right: rtlEnabled ? startOffset : endOffset, left: rtlEnabled ? endOffset : startOffset }) } _m_slider_handle.default.getInstance(this._$handleStart).option("value", valStart); _m_slider_handle.default.getInstance(this._$handleEnd).option("value", valEnd) } _callHandlerMethod(name, args) { _m_slider_handle.default.getInstance(this._$handleStart)[name](args); _m_slider_handle.default.getInstance(this._$handleEnd)[name](args) } _setValueOption() { const start = this.option("start"); const end = this.option("end"); this.option("value", [start, end]) } _rangesAreEqual(firstRange, secondRange) { return firstRange[0] === secondRange[0] && firstRange[1] === secondRange[1] } _optionChanged(args) { switch (args.name) { case "value": { if (this._rangesAreEqual(args.value, args.previousValue)) { break } this._setOptionWithoutOptionChange("start", args.value[0]); this._setOptionWithoutOptionChange("end", args.value[1]); this._renderValue(); const start = this.option("start"); const end = this.option("end"); const isDirty = !this._rangesAreEqual(this._initialValue, args.value); this.option("isDirty", isDirty); this._createActionByOption("onValueChanged", { excludeValidators: ["disabled", "readOnly"] })({ start: start, end: end, value: [start, end], event: this._valueChangeEventInstance, previousValue: args.previousValue }); this.validationRequest.fire({ value: [start, end], editor: this }); this._saveValueChangeEvent(void 0); break } case "start": case "end": this._setValueOption(); break; case "startName": this._$submitStartElement.attr("name", args.value); break; case "endName": this._$submitEndElement.attr("name", args.value); break; case "name": break; default: super._optionChanged(args) } } }(0, _component_registrator.default)("dxRangeSlider", RangeSlider); exports.default = RangeSlider }, 33979: /*!*******************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/ui/m_responsive_box.js ***! \*******************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _component_registrator = _interopRequireDefault(__webpack_require__( /*! ../../core/component_registrator */ 92848)); var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../core/renderer */ 64553)); var _common = __webpack_require__( /*! ../../core/utils/common */ 17781); var _extend = __webpack_require__( /*! ../../core/utils/extend */ 52576); var _iterator = __webpack_require__( /*! ../../core/utils/iterator */ 21274); var _size = __webpack_require__( /*! ../../core/utils/size */ 57653); var _type = __webpack_require__( /*! ../../core/utils/type */ 11528); var _window = __webpack_require__( /*! ../../core/utils/window */ 3104); var _box = _interopRequireDefault(__webpack_require__( /*! ../../ui/box */ 91204)); var _uiCollection_widget = _interopRequireDefault(__webpack_require__( /*! ../../ui/collection/ui.collection_widget.edit */ 7607)); var _ui = _interopRequireDefault(__webpack_require__( /*! ../../ui/widget/ui.errors */ 35185)); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } function _extends() { return _extends = Object.assign ? Object.assign.bind() : function(n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) { ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]) } } return n }, _extends.apply(null, arguments) } class ResponsiveBox extends _uiCollection_widget.default { _getDefaultOptions() { return _extends({}, super._getDefaultOptions(), { rows: [], cols: [], screenByWidth: null, singleColumnScreen: "", height: "100%", width: "100%", activeStateEnabled: false, focusStateEnabled: false, onLayoutChanged: null }) } _init() { if (!this.option("screenByWidth")) { this._options.silent("screenByWidth", _window.defaultScreenFactorFunc) } super._init(); this._initLayoutChangedAction() } _initLayoutChangedAction() { this._layoutChangedAction = this._createActionByOption("onLayoutChanged", { excludeValidators: ["disabled", "readOnly"] }) } _itemClass() { return "dx-box-item" } _itemDataKey() { return "dxBoxItemData" } _initMarkup() { super._initMarkup(); this.$element().addClass("dx-responsivebox") } _renderItems() { this._setScreenSize(); this._screenItems = this._itemsByScreen(); this._prepareGrid(); this._spreadItems(); this._layoutItems(); this._linkNodeToItem() } _itemOptionChanged(item) { const $item = this._findItemElementByItem(item); if (!$item.length) { return } this._refreshItem($item, item); this._clearItemNodeTemplates(); this._update(true) } _setScreenSize() { const currentScreen = this._getCurrentScreen(); this._removeScreenSizeClass(); this.$element().addClass("dx-responsivebox-screen-" + currentScreen); this.option("currentScreenFactor", currentScreen) } _removeScreenSizeClass() { const { currentScreenFactor: currentScreenFactor } = this.option(); if (currentScreenFactor) { this.$element().removeClass("dx-responsivebox-screen-" + currentScreenFactor) } } _prepareGrid() { const grid = this._grid = []; this._prepareRowsAndCols(); (0, _iterator.each)(this._rows, (() => { const row = []; grid.push(row); (0, _iterator.each)(this._cols, (() => { row.push(this._createEmptyCell()) })) })) } getSingleColumnRows() { const { rows: rows } = this.option(); const screenItemsLength = this._screenItems.length; if (null !== rows && void 0 !== rows && rows.length) { const filteredRows = this._filterByScreen(rows); const result = []; for (let i = 0; i < screenItemsLength; i++) { const sizeConfig = this._defaultSizeConfig(); if (i < filteredRows.length && (0, _type.isDefined)(filteredRows[i].shrink)) { sizeConfig.shrink = filteredRows[i].shrink } result.push(sizeConfig) } return result } return this._defaultSizeConfig(screenItemsLength) } _prepareRowsAndCols() { if (this._isSingleColumnScreen()) { this._prepareSingleColumnScreenItems(); this._rows = this.getSingleColumnRows(); this._cols = this._defaultSizeConfig(1) } else { this._rows = this._sizesByScreen(this.option("rows")); this._cols = this._sizesByScreen(this.option("cols")) } } _isSingleColumnScreen() { const { singleColumnScreen: singleColumnScreen, rows: rows, cols: cols } = this.option(); return this._screenRegExp().test(singleColumnScreen) || !(null !== rows && void 0 !== rows && rows.length) || !(null !== cols && void 0 !== cols && cols.length) } _prepareSingleColumnScreenItems() { this._screenItems.sort(((item1, item2) => item1.location.row - item2.location.row || item1.location.col - item2.location.col)); (0, _iterator.each)(this._screenItems, ((index, item) => { (0, _extend.extend)(item.location, { row: index, col: 0, rowspan: 1, colspan: 1 }) })) } _sizesByScreen(sizeConfigs) { return (0, _iterator.map)(this._filterByScreen(sizeConfigs), (sizeConfig => (0, _extend.extend)(this._defaultSizeConfig(), sizeConfig))) } _createDefaultSizeConfig() { return { ratio: 1, baseSize: 0, minSize: 0, maxSize: 0 } } _defaultSizeConfig(size) { const defaultSizeConfig = this._createDefaultSizeConfig(); if (!arguments.length) { return defaultSizeConfig } const result = []; for (let i = 0; i < size; i++) { result.push(defaultSizeConfig) } return result } _filterByScreen(items) { const screenRegExp = this._screenRegExp(); return (0, _common.grep)(items, (item => !item.screen || screenRegExp.test(item.screen))) } _screenRegExp() { const screen = this._getCurrentScreen(); return new RegExp(`(^|\\s)${screen}($|\\s)`, "i") } _getCurrentScreen() { const width = this._screenWidth(); const { screenByWidth: screenByWidth } = this.option(); return null === screenByWidth || void 0 === screenByWidth ? void 0 : screenByWidth(width) } _screenWidth() { return (0, _window.hasWindow)() ? (0, _size.getWidth)((0, _window.getWindow)()) : 1920 } _createEmptyCell() { return { item: {}, location: { colspan: 1, rowspan: 1 } } } _spreadItems() { (0, _iterator.each)(this._screenItems, ((_, itemInfo) => { const location = itemInfo.location || {}; const itemCol = location.col; const itemRow = location.row; const row = this._grid[itemRow]; const itemCell = null === row || void 0 === row ? void 0 : row[itemCol]; this._occupyCells(itemCell, itemInfo) })) } _itemsByScreen() { const { items: items } = this.option(); return null === items || void 0 === items ? void 0 : items.reduce(((result, item) => { let locations = item.location || {}; locations = (0, _type.isPlainObject)(locations) ? [locations] : locations; this._filterByScreen(locations).forEach((location => { result.push({ item: item, location: (0, _extend.extend)({ rowspan: 1, colspan: 1 }, location) }) })); return result }), []) } _occupyCells(itemCell, itemInfo) { if (!itemCell || this._isItemCellOccupied(itemCell, itemInfo)) { return }(0, _extend.extend)(itemCell, itemInfo); this._markSpanningCell(itemCell) } _isItemCellOccupied(itemCell, itemInfo) { if (!(0, _type.isEmptyObject)(itemCell.item)) { return true } let result = false; this._loopOverSpanning(itemInfo.location, (cell => { result = result || !(0, _type.isEmptyObject)(cell.item) })); return result } _loopOverSpanning(location, callback) { const rowEnd = location.row + location.rowspan - 1; const colEnd = location.col + location.colspan - 1; const boundRowEnd = Math.min(rowEnd, this._rows.length - 1); const boundColEnd = Math.min(colEnd, this._cols.length - 1); location.rowspan -= rowEnd - boundRowEnd; location.colspan -= colEnd - boundColEnd; for (let rowIndex = location.row; rowIndex <= boundRowEnd; rowIndex++) { for (let colIndex = location.col; colIndex <= boundColEnd; colIndex++) { if (rowIndex !== location.row || colIndex !== location.col) { callback(this._grid[rowIndex][colIndex]) } } } } _markSpanningCell(itemCell) { this._loopOverSpanning(itemCell.location, (cell => { (0, _extend.extend)(cell, { item: itemCell.item, spanningCell: itemCell }) })) } _linkNodeToItem() { (0, _iterator.each)(this._itemElements(), ((_, itemNode) => { const $item = (0, _renderer.default)(itemNode); const item = $item.data("dxBoxItemData"); if (!item.box) { item.node = $item.children() } })) } _layoutItems() { const rowsCount = this._grid.length; const colsCount = rowsCount && this._grid[0].length; if (!rowsCount && !colsCount) { return } const result = this._layoutBlock({ direction: "col", row: { start: 0, end: rowsCount - 1 }, col: { start: 0, end: colsCount - 1 } }); const rootBox = this._prepareBoxConfig(result.box || { direction: "row", items: [(0, _extend.extend)(result, { ratio: 1 })] }); (0, _extend.extend)(rootBox, this._rootBoxConfig(rootBox.items)); this._$root = (0, _renderer.default)("<div>").appendTo(this._itemContainer()); this._createComponent(this._$root, _box.default, rootBox) } _rootBoxConfig(items) { const rootItems = (0, _iterator.each)(items, ((index, item) => { this._needApplyAutoBaseSize(item) && (0, _extend.extend)(item, { baseSize: "auto" }) })); const { itemHoldTimeout: itemHoldTimeout } = this.option(); return { width: "100%", height: "100%", items: rootItems, itemTemplate: this._getTemplateByOption("itemTemplate"), itemHoldTimeout: itemHoldTimeout, onItemHold: this._createActionByOption("onItemHold"), onItemClick: this._createActionByOption("onItemClick"), onItemContextMenu: this._createActionByOption("onItemContextMenu"), onItemRendered: this._createActionByOption("onItemRendered") } } _needApplyAutoBaseSize(item) { return !item.baseSize && (!item.minSize || "auto" === item.minSize) && (!item.maxSize || "auto" === item.maxSize) } _prepareBoxConfig(config) { return (0, _extend.extend)(config || {}, { crossAlign: "stretch", onItemStateChanged: this.option("onItemStateChanged") }) } _layoutBlock(options) { if (this._isSingleItem(options)) { return this._itemByCell(options.row.start, options.col.start) } return this._layoutDirection(options) } _isSingleItem(options) { const firstCellLocation = this._grid[options.row.start][options.col.start].location; const isItemRowSpanned = options.row.end - options.row.start === firstCellLocation.rowspan - 1; const isItemColSpanned = options.col.end - options.col.start === firstCellLocation.colspan - 1; return isItemRowSpanned && isItemColSpanned } _itemByCell(rowIndex, colIndex) { const itemCell = this._grid[rowIndex][colIndex]; return itemCell.spanningCell ? null : itemCell.item } _layoutDirection(options) { const items = []; const { direction: direction } = options; const crossDirection = this._crossDirection(direction); let block; while (block = this._nextBlock(options)) { if (this._isBlockIndivisible(options.prevBlockOptions, block)) { throw _ui.default.Error("E1025") } const item = this._layoutBlock({ direction: crossDirection, row: block.row, col: block.col, prevBlockOptions: options }); if (item) { (0, _extend.extend)(item, this._blockSize(block, crossDirection)); items.push(item) } options[crossDirection].start = block[crossDirection].end + 1 } return { box: this._prepareBoxConfig({ direction: direction, items: items }) } } _isBlockIndivisible(options, block) { return options && options.col.start === block.col.start && options.col.end === block.col.end && options.row.start === block.row.start && options.row.end === block.row.end } _crossDirection(direction) { return "col" === direction ? "row" : "col" } _nextBlock(options) { const { direction: direction } = options; const crossDirection = this._crossDirection(direction); const startIndex = options[direction].start; const endIndex = options[direction].end; const crossStartIndex = options[crossDirection].start; if (crossStartIndex > options[crossDirection].end) { return null } let crossSpan = 1; for (let crossIndex = crossStartIndex; crossIndex < crossStartIndex + crossSpan; crossIndex++) { let lineCrossSpan = 1; for (let index = startIndex; index <= endIndex; index++) { const cell = this._cellByDirection(direction, index, crossIndex); lineCrossSpan = Math.max(lineCrossSpan, cell.location[`${crossDirection}span`]) } const lineCrossEndIndex = crossIndex + lineCrossSpan; const crossEndIndex = crossStartIndex + crossSpan; if (lineCrossEndIndex > crossEndIndex) { crossSpan += lineCrossEndIndex - crossEndIndex } } const result = {}; result[direction] = { start: startIndex, end: endIndex }; result[crossDirection] = { start: crossStartIndex, end: crossStartIndex + crossSpan - 1 }; return result } _cellByDirection(direction, index, crossIndex) { return "col" === direction ? this._grid[crossIndex][index] : this._grid[index][crossIndex] } _blockSize(block, direction) { const defaultMinSize = "row" === direction ? "auto" : 0; const sizeConfigs = "row" === direction ? this._rows : this._cols; const result = (0, _extend.extend)(this._createDefaultSizeConfig(), { ratio: 0 }); for (let index = block[direction].start; index <= block[direction].end; index++) { const sizeConfig = sizeConfigs[index]; result.ratio += sizeConfig.ratio; result.baseSize += sizeConfig.baseSize; result.minSize += sizeConfig.minSize; result.maxSize += sizeConfig.maxSize; if ((0, _type.isDefined)(sizeConfig.shrink)) { result.shrink = sizeConfig.shrink } } result.minSize = result.minSize ? result.minSize : defaultMinSize; result.maxSize = result.maxSize ? result.maxSize : "auto"; this._isSingleColumnScreen() && (result.baseSize = "auto"); return result } _update(forceRemoveRoot) { var _this$_layoutChangedA; const $existingRoot = this._$root; this._renderItems(); if ($existingRoot) { if (forceRemoveRoot) { $existingRoot.remove() } else { $existingRoot.detach(); this._saveAssistantRoot($existingRoot) } } null === (_this$_layoutChangedA = this._layoutChangedAction) || void 0 === _this$_layoutChangedA || _this$_layoutChangedA.call(this) } _saveAssistantRoot($root) { this._assistantRoots = this._assistantRoots || []; this._assistantRoots.push($root) } _dispose() { this._clearItemNodeTemplates(); this._cleanUnusedRoots(); super._dispose.apply(this, arguments) } _cleanUnusedRoots() { if (!this._assistantRoots) { return }(0, _iterator.each)(this._assistantRoots, ((_, item) => { (0, _renderer.default)(item).remove() })) } _clearItemNodeTemplates() { (0, _iterator.each)(this.option("items"), (function() { delete this.node })) } _attachClickEvent() {} _optionChanged(args) { switch (args.name) { case "rows": case "cols": case "screenByWidth": case "singleColumnScreen": this._clearItemNodeTemplates(); this._invalidate(); break; case "width": case "height": super._optionChanged(args); this._update(); break; case "onLayoutChanged": this._initLayoutChangedAction(); break; case "itemTemplate": this._clearItemNodeTemplates(); super._optionChanged(args); break; case "currentScreenFactor": break; default: super._optionChanged(args) } } _dimensionChanged() { if (this._getCurrentScreen() !== this.option("currentScreenFactor")) { this._update() } } repaint() { this._update() } }(0, _component_registrator.default)("dxResponsiveBox", ResponsiveBox); exports.default = ResponsiveBox }, 30149: /*!***************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/ui/m_select_box.js ***! \***************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = exports.SELECTBOX_CLASS = void 0; __webpack_require__( /*! ../ui/list/modules/m_selection */ 44804); var _index = __webpack_require__( /*! ../../common/core/events/utils/index */ 98834); var _message = _interopRequireDefault(__webpack_require__( /*! ../../common/core/localization/message */ 4671)); var _component_registrator = _interopRequireDefault(__webpack_require__( /*! ../../core/component_registrator */ 92848)); var _dom_adapter = _interopRequireDefault(__webpack_require__( /*! ../../core/dom_adapter */ 64960)); var _element = __webpack_require__( /*! ../../core/element */ 61404); var _errors = _interopRequireDefault(__webpack_require__( /*! ../../core/errors */ 87129)); var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../core/renderer */ 64553)); var _common = __webpack_require__( /*! ../../core/utils/common */ 17781); var _deferred = __webpack_require__( /*! ../../core/utils/deferred */ 87739); var _extend = __webpack_require__( /*! ../../core/utils/extend */ 52576); var _iterator = __webpack_require__( /*! ../../core/utils/iterator */ 21274); var _type = __webpack_require__( /*! ../../core/utils/type */ 11528); var _m_drop_down_list = _interopRequireDefault(__webpack_require__( /*! ../ui/drop_down_editor/m_drop_down_list */ 20287)); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } function _extends() { return _extends = Object.assign ? Object.assign.bind() : function(n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) { ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]) } } return n }, _extends.apply(null, arguments) } const SELECTBOX_CLASS = exports.SELECTBOX_CLASS = "dx-selectbox"; class SelectBox extends _m_drop_down_list.default { _supportedKeys() { const that = this; const parent = super._supportedKeys(); const clearSelectBox = function(e) { const isEditable = this._isEditable(); if (!isEditable) { if (this.option("showClearButton")) { e.preventDefault(); this.clear() } } else if (this._valueSubstituted()) { this._preventFiltering = true } this._savedTextRemoveEvent = e; this._preventSubstitution = true }; const searchIfNeeded = function() { if (that.option("searchEnabled") && that._valueSubstituted()) { that._searchHandler() } }; return _extends({}, parent, { tab() { const { opened: opened } = this.option(); const popupHasFocusableElements = opened && !!this._popup.getFocusableElements().length; if (!popupHasFocusableElements) { this._resetCaretPosition(true) } parent.tab && parent.tab.apply(this, arguments); if (!popupHasFocusableElements) { this._cancelSearchIfNeed() } }, upArrow(e) { if (parent.upArrow.apply(this, arguments)) { if (!this.option("opened")) { this._setNextValue(e) } return true } return }, downArrow(e) { if (parent.downArrow.apply(this, arguments)) { if (!this.option("opened")) { this._setNextValue(e) } return true } return }, leftArrow() { var _parent$leftArrow; searchIfNeeded(); null === (_parent$leftArrow = parent.leftArrow) || void 0 === _parent$leftArrow || _parent$leftArrow.apply(this, arguments) }, rightArrow() { var _parent$rightArrow; searchIfNeeded(); null === (_parent$rightArrow = parent.rightArrow) || void 0 === _parent$rightArrow || _parent$rightArrow.apply(this, arguments) }, home() { var _parent$home; searchIfNeeded(); null === (_parent$home = parent.home) || void 0 === _parent$home || _parent$home.apply(this, arguments) }, end() { var _parent$end; searchIfNeeded(); null === (_parent$end = parent.end) || void 0 === _parent$end || _parent$end.apply(this, arguments) }, escape() { var _parent$escape; const result = null === (_parent$escape = parent.escape) || void 0 === _parent$escape ? void 0 : _parent$escape.apply(this, arguments); this._cancelEditing(); return result ?? true }, enter(e) { const isOpened = this.option("opened"); const inputText = this._input().val().trim(); const isCustomText = inputText && this._list && !this._list.option("focusedElement"); if (!inputText && (0, _type.isDefined)(this.option("value")) && this.option("allowClearing")) { this._saveValueChangeEvent(e); this.option({ selectedItem: null, value: null }); this.close() } else { var _parent$enter; if (this.option("acceptCustomValue")) { e.preventDefault(); if (isCustomText) { if (isOpened) { this._toggleOpenState() } this._valueChangeEventHandler(e) } return isOpened } if (null !== (_parent$enter = parent.enter) && void 0 !== _parent$enter && _parent$enter.apply(this, arguments)) { return isOpened } } }, space(e) { const isOpened = this.option("opened"); const isSearchEnabled = this.option("searchEnabled"); const acceptCustomValue = this.option("acceptCustomValue"); if (!isOpened || isSearchEnabled || acceptCustomValue) { return } e.preventDefault(); this._valueChangeEventHandler(e); return true }, backspace: clearSelectBox, del: clearSelectBox }) } _getDefaultOptions() { return _extends({}, super._getDefaultOptions(), { placeholder: _message.default.format("Select"), fieldTemplate: null, customItemCreateEvent: "change", acceptCustomValue: false, onCustomItemCreating(e) { if (!(0, _type.isDefined)(e.customItem)) { e.customItem = e.text } }, showSelectionControls: false, allowClearing: true, tooltipEnabled: false, openOnFieldClick: true, showDropDownButton: true, displayCustomValue: false, useHiddenSubmitElement: true }) } _init() { super._init(); this._initCustomItemCreatingAction() } _initMarkup() { this.$element().addClass(SELECTBOX_CLASS); this._renderTooltip(); super._initMarkup(); this._$container.addClass("dx-selectbox-container") } _createPopup() { super._createPopup(); this._popup.$element().addClass("dx-selectbox-popup"); this._popup.$overlayContent().attr("tabindex", -1) } _popupWrapperClass() { return `${super._popupWrapperClass()} dx-selectbox-popup-wrapper` } _cancelEditing() { if (!this.option("searchEnabled") && this._list) { this._focusListElement(null); this._updateField(this.option("selectedItem")) } } _renderOpenedState() { super._renderOpenedState(); if (this.option("opened")) { this._scrollToSelectedItem(); this._focusSelectedElement() } } _focusSelectedElement() { const searchValue = this._searchValue(); if (!searchValue) { this._focusListElement(null); return } const { items: items, selectedItem: selectedItem } = this.option(); const $listItems = this._list._itemElements(); const index = (null === items || void 0 === items ? void 0 : items.indexOf(selectedItem)) ?? -1; const focusedElement = -1 !== index && !this._isCustomItemSelected() ? $listItems.eq(index) : null; this._focusListElement(focusedElement) } _renderFocusedElement() { if (!this._list) { return } const searchValue = this._searchValue(); if (!searchValue || this.option("acceptCustomValue")) { this._focusListElement(null); return } const $listItems = this._list._itemElements(); const focusedElement = $listItems.not(".dx-state-disabled").eq(0); this._focusListElement(focusedElement) } _focusListElement(element) { this._preventInputValueRender = true; this._list.option("focusedElement", (0, _element.getPublicElement)(element)); delete this._preventInputValueRender } _scrollToSelectedItem() { var _this$_list; null === (_this$_list = this._list) || void 0 === _this$_list || _this$_list.scrollToItem(this._list.option("selectedItem")) } _listContentReadyHandler() { super._listContentReadyHandler(); const isPaginate = this._dataController.paginate(); if (isPaginate && this._needPopupRepaint()) { return } this._scrollToSelectedItem() } _renderValue() { this._renderInputValue(); this._setSubmitValue(); return (0, _deferred.Deferred)().resolve() } _renderInputValue() { return super._renderInputValue(...arguments).always((() => { this._renderInputValueAsync() })) } _renderInputValueAsync() { this._renderTooltip(); this._renderInputValueImpl().always((() => { this._refreshSelected() })) } _renderInputValueImpl() { this._renderField(); return (0, _deferred.Deferred)().resolve() } _setNextItem(step) { const item = this._calcNextItem(step); const value = this._valueGetter(item); this._setValue(value) } _setNextValue(e) { const dataSourceIsLoaded = this._dataController.isLoaded() ? (0, _deferred.Deferred)().resolve() : this._dataController.load(); dataSourceIsLoaded.done((() => { const selectedIndex = this._getSelectedIndex(); const hasPages = this._dataController.pageSize(); const isLastPage = this._dataController.isLastPage(); const isLastItem = selectedIndex === this._items().length - 1; this._saveValueChangeEvent(e); const step = "downArrow" === (0, _index.normalizeKeyName)(e) ? 1 : -1; if (hasPages && !isLastPage && isLastItem && step > 0) { if (!this._popup) { this._createPopup() } if (!this._dataController.isLoading()) { this._list._loadNextPage().done(this._setNextItem.bind(this, step)) } } else { this._setNextItem(step) } })) } _setSelectedItem(item) { const isUnknownItem = !this._isCustomValueAllowed() && void 0 === item; super._setSelectedItem(isUnknownItem ? null : item); if (!isUnknownItem && (!this._isEditable() || this._isCustomItemSelected())) { this._setListOption("selectedItem", this.option("selectedItem")) } } _isCustomValueAllowed() { return this.option("acceptCustomValue") || super._isCustomValueAllowed() } _displayValue(item) { item = !(0, _type.isDefined)(item) && this._isCustomValueAllowed() ? this.option("value") : item; return super._displayValue(item) } _listConfig() { const result = (0, _extend.extend)(super._listConfig(), { pageLoadMode: "scrollBottom", onSelectionChanged: this._getSelectionChangeHandler(), selectedItem: this.option("selectedItem"), onFocusedItemChanged: this._listFocusedItemChangeHandler.bind(this), _onItemsRendered: () => { this._popup.repaint(); if (this.option("opened")) { this._scrollToSelectedItem() } } }); if (this.option("showSelectionControls")) { (0, _extend.extend)(result, { showSelectionControls: true, selectByClick: true }) } return result } _listFocusedItemChangeHandler(e) { if (this._preventInputValueRender) { return } const list = e.component; const focusedElement = (0, _renderer.default)(list.option("focusedElement")); const focusedItem = list._getItemData(focusedElement); this._updateField(focusedItem) } _updateField(item) { const fieldTemplate = this._getTemplateByOption("fieldTemplate"); if (!(fieldTemplate && this.option("fieldTemplate"))) { const text = this._displayGetter(item); this.option("text", text); this._renderDisplayText(text); return } this._renderField() } _getSelectionChangeHandler() { return this.option("showSelectionControls") ? this._selectionChangeHandler.bind(this) : _common.noop } _selectionChangeHandler(e) { (0, _iterator.each)(e.addedItems || [], ((_, addedItem) => { this._setValue(this._valueGetter(addedItem)) })) } _getActualSearchValue() { return this._dataController.searchValue() } _isInlineAutocompleteEnabled() { const { searchEnabled: searchEnabled, acceptCustomValue: acceptCustomValue, searchMode: searchMode } = this.option(); return searchEnabled && !acceptCustomValue && "startswith" === searchMode } _getAriaAutocomplete() { const { disabled: disabled, readOnly: readOnly, searchEnabled: searchEnabled } = this.option(); const isInputEditable = !(readOnly || disabled); const hasAutocomplete = searchEnabled && isInputEditable; if (!hasAutocomplete) { return "none" } const isInlineAutocompleteEnabled = this._isInlineAutocompleteEnabled(); const autocompleteAria = isInlineAutocompleteEnabled ? "both" : "list"; return autocompleteAria } _toggleOpenState(isVisible) { if (this.option("disabled")) { return } isVisible = arguments.length ? isVisible : !this.option("opened"); if (!isVisible && !this._shouldClearFilter()) { this._restoreInputText(true) } if (this._wasSearch() && isVisible) { this._wasSearch(false); const showDataImmediately = this.option("showDataBeforeSearch") || this._isMinSearchLengthExceeded(); if (showDataImmediately && this._dataController.getDataSource()) { if (this._searchTimer) { return } const searchValue = this._getActualSearchValue(); searchValue && this._wasSearch(true); this._filterDataSource(searchValue || null) } else { this._setListOption("items", []) } } if (isVisible) { this._scrollToSelectedItem() } super._toggleOpenState(isVisible) } _renderTooltip() { const { tooltipEnabled: tooltipEnabled, displayValue: displayValue } = this.option(); if (tooltipEnabled) { this.$element().attr("title", displayValue) } } _renderDimensions() { super._renderDimensions(); this._updatePopupWidth(); this._updateListDimensions() } _isValueEqualInputText() { const initialSelectedItem = this.option("selectedItem"); if (null === initialSelectedItem) { return false } const value = this._displayGetter(initialSelectedItem); const displayValue = value ? String(value) : ""; const inputText = this._searchValue(); return displayValue === inputText } _popupHidingHandler() { if (this._isValueEqualInputText()) { this._cancelEditing() } super._popupHidingHandler() } _popupHiddenHandler() { super._popupHiddenHandler(); if (this._shouldCancelSearch()) { this._wasSearch(false); this._searchCanceled(); this._shouldCancelSearch(false) } } _restoreInputText(saveEditingValue) { var _this$_loadItemDeferr; if (this.option("readOnly")) { return } null === (_this$_loadItemDeferr = this._loadItemDeferred) || void 0 === _this$_loadItemDeferr || _this$_loadItemDeferr.always((() => { const { acceptCustomValue: acceptCustomValue, text: text, selectedItem: initialSelectedItem, customItemCreateEvent: customItemCreateEvent } = this.option(); if (acceptCustomValue) { if (!saveEditingValue && !this._isValueChanging) { let initialItem = null; if ((0, _type.isDefined)(initialSelectedItem)) { initialItem = initialSelectedItem } else if ("" !== customItemCreateEvent) { initialItem = this._createCustomItem(text) } this._updateField(initialItem); this._clearFilter() } return } if (this.option("searchEnabled")) { if (!this._searchValue() && this.option("allowClearing")) { this._clearTextValue(); return } } if (this._isValueEqualInputText()) { return } this._renderInputValue().always((selectedItem => { const newSelectedItem = (0, _common.ensureDefined)(selectedItem, initialSelectedItem); this._setSelectedItem(newSelectedItem); this._updateField(newSelectedItem); this._clearFilter() })) })) } _valueChangeEventIncludesBlur() { const valueChangeEvent = this.option(this._getValueChangeEventOptionName()); return valueChangeEvent.includes("blur") } _isPreventedFocusOutEvent(e) { return this._preventNestedFocusEvent(e) || this._valueChangeEventIncludesBlur() } _focusOutHandler(e) { if (!this._isPreventedFocusOutEvent(e)) { const isOverlayTarget = this._isOverlayNestedTarget(e.relatedTarget); if (!isOverlayTarget) { this._restoreInputText(); this._clearSearchTimer() } this._cancelSearchIfNeed(e) } e.target = this._input().get(0); super._focusOutHandler(e) } _cancelSearchIfNeed(e) { const { searchEnabled: searchEnabled } = this.option(); const isOverlayTarget = this._isOverlayNestedTarget(null === e || void 0 === e ? void 0 : e.relatedTarget); const shouldCancelSearch = this._wasSearch() && searchEnabled && !isOverlayTarget; if (shouldCancelSearch) { var _this$_popup; const isPopupVisible = null === (_this$_popup = this._popup) || void 0 === _this$_popup ? void 0 : _this$_popup._hideAnimationProcessing; this._clearSearchTimer(); if (isPopupVisible) { this._shouldCancelSearch(true) } else { this._wasSearch(false); this._searchCanceled() } } } _shouldCancelSearch(value) { if (!arguments.length) { return this._shouldCancelSearchValue } this._shouldCancelSearchValue = value } _isOverlayNestedTarget(target) { return !!(0, _renderer.default)(target).closest(".dx-selectbox-popup-wrapper").length } _clearTextValue() { const selectedItem = this.option("selectedItem"); const selectedItemText = this._displayGetter(selectedItem); const shouldRestoreValue = selectedItem && "" !== selectedItemText; if (shouldRestoreValue) { if (this._savedTextRemoveEvent) { this._saveValueChangeEvent(this._savedTextRemoveEvent) } this.option("value", null) } delete this._savedTextRemoveEvent } _shouldOpenPopup() { return this._needPassDataSourceToList() && this._wasSearch() } _isFocused() { const activeElement = _dom_adapter.default.getActiveElement(this.element()); return super._isFocused() && (0, _renderer.default)(activeElement).closest(this._input()).length > 0 } _getValueChangeEventOptionName() { return "customItemCreateEvent" } _renderValueChangeEvent() { if (this._isEditable()) { super._renderValueChangeEvent() } } _fieldRenderData() { const { focusedElement: focusedElement } = this.option(); const $listFocused = this._list && this.option("opened") && (0, _renderer.default)(focusedElement); if (null !== $listFocused && void 0 !== $listFocused && $listFocused.length) { return this._list._getItemData($listFocused) } return this.option("selectedItem") } _isSelectedValue(value, cache) { return this._isValueEquals(value, this.option("value")) } _shouldCloseOnItemClick() { const { selectionMode: selectionMode } = this.option(); return !(this.option("showSelectionControls") && "single" !== selectionMode) } _listItemClickHandler(e) { const previousValue = this._getCurrentValue(); this._focusListElement((0, _renderer.default)(e.itemElement)); this._saveValueChangeEvent(e.event); this._completeSelection(this._valueGetter(e.itemData)); if (this._shouldCloseOnItemClick()) { this.option("opened", false) } if (this.option("searchEnabled") && previousValue === this._valueGetter(e.itemData)) { this._updateField(e.itemData) } if (this._shouldClearFilter()) { this._cancelSearchIfNeed() } } _shouldClearFilter() { return this._wasSearch() } _completeSelection(value) { this._setValue(value) } _loadItem(value, cache) { const that = this; const deferred = (0, _deferred.Deferred)(); super._loadItem(value, cache).done((item => { deferred.resolve(item) })).fail((args => { if (null !== args && void 0 !== args && args.shouldSkipCallback) { return } const selectedItem = that.option("selectedItem"); if (that.option("acceptCustomValue") && value === that._valueGetter(selectedItem)) { deferred.resolve(selectedItem) } else { deferred.reject() } })); return deferred.promise() } _loadInputValue(value, callback) { this._loadItemDeferred = this._loadItem(value).always(callback); return this._loadItemDeferred } _isCustomItemSelected() { const selectedItem = this.option("selectedItem"); const searchValue = this._searchValue(); const selectedItemText = this._displayGetter(selectedItem); return !selectedItemText || searchValue !== selectedItemText.toString() } _valueChangeEventHandler(e) { if (this.option("acceptCustomValue") && this._isCustomItemSelected() && !this._isValueChanging) { this._isValueChanging = true; this._customItemAddedHandler(e) } } _initCustomItemCreatingAction() { this._customItemCreatingAction = this._createActionByOption("onCustomItemCreating") } _createCustomItem(text) { const params = { text: text }; const actionResult = this._customItemCreatingAction(params); const item = (0, _common.ensureDefined)(actionResult, params.customItem); if ((0, _type.isDefined)(actionResult)) { _errors.default.log("W0015", "onCustomItemCreating", "customItem") } return item } _customItemAddedHandler(e) { const searchValue = this._searchValue(); const item = this._createCustomItem(searchValue); this._saveValueChangeEvent(e); if (void 0 === item) { this._renderValue(); throw _errors.default.Error("E0121") } if ((0, _type.isPromise)(item)) { (0, _deferred.fromPromise)(item).done(this._setCustomItem.bind(this)).fail(this._setCustomItem.bind(this, null)) } else { this._setCustomItem(item) } } _setCustomItem(item) { if (this._disposed) { return } item = item || null; this.option("selectedItem", item); this._cancelSearchIfNeed(); this._setValue(this._valueGetter(item)); this._renderDisplayText(this._displayGetter(item)); this._isValueChanging = false } _clearValueHandler(e) { this._preventFiltering = true; super._clearValueHandler(e); this._searchCanceled(); return false } _wasSearch(value) { if (!arguments.length) { return !!this._wasSearchValue } this._wasSearchValue = value; return } _searchHandler(e) { if (this._preventFiltering) { delete this._preventFiltering; return } if (this._needPassDataSourceToList()) { this._wasSearch(true) } super._searchHandler(arguments) } _dataSourceFiltered(searchValue) { super._dataSourceFiltered(); if (null !== searchValue) { this._renderInputSubstitution(); this._renderFocusedElement() } } _valueSubstituted() { const input = this._input().get(0); const currentSearchLength = this._searchValue().length; const isAllSelected = 0 === input.selectionStart && input.selectionEnd === currentSearchLength; const inputHasSelection = input.selectionStart !== input.selectionEnd; const isLastSymbolSelected = currentSearchLength === input.selectionEnd; return this._wasSearch() && inputHasSelection && !isAllSelected && isLastSymbolSelected && this._shouldSubstitutionBeRendered() } _shouldSubstitutionBeRendered() { return !this._preventSubstitution && this._isInlineAutocompleteEnabled() } _renderInputSubstitution() { if (!this._shouldSubstitutionBeRendered()) { delete this._preventSubstitution; return } const item = this._list && this._getPlainItems(this._list.option("items"))[0]; if (!item) { return } const $input = this._input(); const valueLength = $input.val().length; if (0 === valueLength) { return } const inputElement = $input.get(0); const displayValue = this._displayGetter(item).toString(); inputElement.value = displayValue; this._caret({ start: valueLength, end: displayValue.length }) } _dispose() { this._renderInputValueAsync = _common.noop; delete this._loadItemDeferred; super._dispose() } _optionChanged(args) { switch (args.name) { case "customItemCreateEvent": this._refreshValueChangeEvent(); this._refreshFocusEvent(); this._refreshEvents(); break; case "onCustomItemCreating": this._initCustomItemCreatingAction(); break; case "tooltipEnabled": this._renderTooltip(); break; case "readOnly": case "disabled": case "searchMode": super._optionChanged(args); this._setDefaultAria(); break; case "displayCustomValue": case "acceptCustomValue": case "showSelectionControls": this._invalidate(); break; case "allowClearing": break; default: super._optionChanged(args) } } }(0, _component_registrator.default)("dxSelectBox", SelectBox); exports.default = SelectBox }, 94723: /*!***********************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/ui/m_switch.js ***! \***********************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _animation = __webpack_require__( /*! ../../common/core/animation */ 16826); var _click = __webpack_require__( /*! ../../common/core/events/click */ 64044); var _emitter = __webpack_require__( /*! ../../common/core/events/core/emitter.feedback */ 69331); var _events_engine = _interopRequireDefault(__webpack_require__( /*! ../../common/core/events/core/events_engine */ 92774)); var _swipeable = _interopRequireDefault(__webpack_require__( /*! ../../common/core/events/gesture/swipeable */ 18278)); var _index = __webpack_require__( /*! ../../common/core/events/utils/index */ 98834); var _message = _interopRequireDefault(__webpack_require__( /*! ../../common/core/localization/message */ 4671)); var _component_registrator = _interopRequireDefault(__webpack_require__( /*! ../../core/component_registrator */ 92848)); var _devices = _interopRequireDefault(__webpack_require__( /*! ../../core/devices */ 65951)); var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../core/renderer */ 64553)); var _deferred = __webpack_require__( /*! ../../core/utils/deferred */ 87739); var _position = __webpack_require__( /*! ../../core/utils/position */ 41639); var _size = __webpack_require__( /*! ../../core/utils/size */ 57653); var _editor = _interopRequireDefault(__webpack_require__( /*! ../ui/editor/editor */ 24768)); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } function _extends() { return _extends = Object.assign ? Object.assign.bind() : function(n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) { ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]) } } return n }, _extends.apply(null, arguments) } class Switch extends _editor.default { _supportedKeys() { const { rtlEnabled: rtlEnabled } = this.option(); const click = function(e) { e.preventDefault(); this._clickAction({ event: e }) }; const move = function(value, e) { e.preventDefault(); e.stopPropagation(); this._saveValueChangeEvent(e); this._animateValue(value) }; return _extends({}, super._supportedKeys(), { space: click, enter: click, leftArrow: move.bind(this, !!rtlEnabled), rightArrow: move.bind(this, !rtlEnabled) }) } _useTemplates() { return false } _getDefaultOptions() { return _extends({}, super._getDefaultOptions(), { hoverStateEnabled: true, activeStateEnabled: true, switchedOnText: _message.default.format("dxSwitch-switchedOnText"), switchedOffText: _message.default.format("dxSwitch-switchedOffText"), value: false }) } _defaultOptionsRules() { return super._defaultOptionsRules().concat([{ device: () => "desktop" === _devices.default.real().deviceType && !_devices.default.isSimulator(), options: { focusStateEnabled: true } }]) } _init() { super._init(); this._feedbackHideTimeout = 0; this._animating = false } _initMarkup() { this._renderContainers(); this.$element().addClass("dx-switch").append(this._$switchWrapper); this._renderSubmitElement(); this._renderClick(); this.setAria("role", "switch"); this._renderSwipeable(); super._initMarkup(); this._renderSwitchInner(); this._renderLabels(); this._renderValue() } _getInnerOffset(value, offset) { const ratio = (offset - this._offsetDirection() * Number(!value)) / 2; return 100 * ratio + "%" } _getHandleOffset(value, offset) { if (this.option("rtlEnabled")) { value = !value } if (value) { const calcValue = 100 * -offset - 100; return `${calcValue}%` } return 100 * -offset + "%" } _renderSwitchInner() { this._$switchInner = (0, _renderer.default)("<div>").addClass("dx-switch-inner").appendTo(this._$switchContainer); this._$handle = (0, _renderer.default)("<div>").addClass("dx-switch-handle").appendTo(this._$switchInner) } _renderLabels() { this._$labelOn = (0, _renderer.default)("<div>").addClass("dx-switch-on").prependTo(this._$switchInner); this._$labelOff = (0, _renderer.default)("<div>").addClass("dx-switch-off").appendTo(this._$switchInner); this._setLabelsText() } _renderContainers() { this._$switchContainer = (0, _renderer.default)("<div>").addClass("dx-switch-container"); this._$switchWrapper = (0, _renderer.default)("<div>").addClass("dx-switch-wrapper").append(this._$switchContainer) } _renderSwipeable() { this._createComponent(this.$element(), _swipeable.default, { elastic: false, immediate: true, onStart: this._swipeStartHandler.bind(this), onUpdated: this._swipeUpdateHandler.bind(this), onEnd: this._swipeEndHandler.bind(this), itemSizeFunc: this._getItemSizeFunc.bind(this) }) } _getItemSizeFunc() { return (0, _size.getOuterWidth)(this._$switchContainer, true) - (0, _position.getBoundingRect)(this._$handle.get(0)).width } _renderSubmitElement() { this._$submitElement = (0, _renderer.default)("<input>").attr("type", "hidden").appendTo(this.$element()) } _getSubmitElement() { return this._$submitElement } _offsetDirection() { return this.option("rtlEnabled") ? -1 : 1 } _renderPosition(state, swipeOffset) { const innerOffset = this._getInnerOffset(state, swipeOffset); const handleOffset = this._getHandleOffset(state, swipeOffset); this._$switchInner.css("transform", ` translateX(${innerOffset})`); this._$handle.css("transform", ` translateX(${handleOffset})`) } _validateValue() { const check = this.option("value"); if ("boolean" !== typeof check) { this._options.silent("value", !!check) } } _renderClick() { const eventName = (0, _index.addNamespace)(_click.name, this.NAME); const $element = this.$element(); this._clickAction = this._createAction(this._clickHandler.bind(this)); _events_engine.default.off($element, eventName); _events_engine.default.on($element, eventName, (e => { var _this$_clickAction; null === (_this$_clickAction = this._clickAction) || void 0 === _this$_clickAction || _this$_clickAction.call(this, { event: e }) })) } _clickHandler(args) { const e = args.event; this._saveValueChangeEvent(e); if (this._animating || this._swiping) { return } this._animateValue(!this.option("value")) } _animateValue(value) { const startValue = this.option("value"); const endValue = value; if (startValue === endValue) { return } this._animating = true; const fromInnerOffset = this._getInnerOffset(startValue, 0); const toInnerOffset = this._getInnerOffset(endValue, 0); const fromHandleOffset = this._getHandleOffset(startValue, 0); const toHandleOffset = this._getHandleOffset(endValue, 0); const that = this; const fromInnerConfig = {}; const toInnerConfig = {}; const fromHandleConfig = {}; const toHandlerConfig = {}; fromInnerConfig.transform = ` translateX(${fromInnerOffset})`; toInnerConfig.transform = ` translateX(${toInnerOffset})`; fromHandleConfig.transform = ` translateX(${fromHandleOffset})`; toHandlerConfig.transform = ` translateX(${toHandleOffset})`; this.$element().toggleClass("dx-switch-on-value", endValue); _animation.fx.animate(this._$handle, { from: fromHandleConfig, to: toHandlerConfig, duration: 100 }); _animation.fx.animate(this._$switchInner, { from: fromInnerConfig, to: toInnerConfig, duration: 100, complete() { that._animating = false; that.option("value", endValue) } }) } _swipeStartHandler(e) { const state = this.option("value"); const rtlEnabled = this.option("rtlEnabled"); const maxOffOffset = rtlEnabled ? 0 : 1; const maxOnOffset = rtlEnabled ? 1 : 0; e.event.maxLeftOffset = state ? maxOffOffset : maxOnOffset; e.event.maxRightOffset = state ? maxOnOffset : maxOffOffset; this._swiping = true; this._feedbackDeferred = (0, _deferred.Deferred)(); (0, _emitter.lock)(this._feedbackDeferred); const { activeStateEnabled: activeStateEnabled } = this.option(); this._toggleActiveState(this.$element(), activeStateEnabled) } _swipeUpdateHandler(e) { this._renderPosition(this.option("value"), e.event.offset) } _swipeEndHandler(e) { const that = this; const offsetDirection = this._offsetDirection(); const toInnerConfig = {}; const toHandleConfig = {}; const innerOffset = this._getInnerOffset(that.option("value"), e.event.targetOffset); const handleOffset = this._getHandleOffset(that.option("value"), e.event.targetOffset); toInnerConfig.transform = ` translateX(${innerOffset})`; toHandleConfig.transform = ` translateX(${handleOffset})`; _animation.fx.animate(this._$handle, { to: toHandleConfig, duration: 100 }); _animation.fx.animate(this._$switchInner, { to: toInnerConfig, duration: 100, complete() { var _that$_feedbackDeferr; that._swiping = false; const pos = that.option("value") + offsetDirection * e.event.targetOffset; that._saveValueChangeEvent(e.event); that.option("value", Boolean(pos)); null === (_that$_feedbackDeferr = that._feedbackDeferred) || void 0 === _that$_feedbackDeferr || _that$_feedbackDeferr.resolve(); that._toggleActiveState(that.$element(), false) } }) } _renderValue() { this._validateValue(); const { value: value } = this.option(); this._renderPosition(value, 0); this.$element().toggleClass("dx-switch-on-value", value); this._getSubmitElement().val(value); this.setAria({ checked: value, label: value ? this.option("switchedOnText") : this.option("switchedOffText") }) } _setLabelsText() { var _this$_$labelOn, _this$_$labelOff; const { switchedOnText: switchedOnText, switchedOffText: switchedOffText } = this.option(); null === (_this$_$labelOn = this._$labelOn) || void 0 === _this$_$labelOn || _this$_$labelOn.text(switchedOnText); null === (_this$_$labelOff = this._$labelOff) || void 0 === _this$_$labelOff || _this$_$labelOff.text(switchedOffText) } _visibilityChanged(visible) { if (visible) { this.repaint() } } _optionChanged(args) { switch (args.name) { case "width": this._refresh(); break; case "switchedOnText": case "switchedOffText": this._setLabelsText(); break; case "value": this._renderValue(); super._optionChanged(args); break; default: super._optionChanged(args) } } }(0, _component_registrator.default)("dxSwitch", Switch); exports.default = Switch }, 24341: /*!************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/ui/m_tag_box.js ***! \************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _click = __webpack_require__( /*! ../../common/core/events/click */ 64044); var _events_engine = _interopRequireDefault(__webpack_require__( /*! ../../common/core/events/core/events_engine */ 92774)); var _index = __webpack_require__( /*! ../../common/core/events/utils/index */ 98834); var _message = _interopRequireDefault(__webpack_require__( /*! ../../common/core/localization/message */ 4671)); var _utils = __webpack_require__( /*! ../../common/data/data_source/utils */ 97169); var _component_registrator = _interopRequireDefault(__webpack_require__( /*! ../../core/component_registrator */ 92848)); var _devices = _interopRequireDefault(__webpack_require__( /*! ../../core/devices */ 65951)); var _element = __webpack_require__( /*! ../../core/element */ 61404); var _element_data = __webpack_require__( /*! ../../core/element_data */ 74663); var _guid = _interopRequireDefault(__webpack_require__( /*! ../../core/guid */ 19427)); var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../core/renderer */ 64553)); var _bindable_template = __webpack_require__( /*! ../../core/templates/bindable_template */ 27286); var _array = __webpack_require__( /*! ../../core/utils/array */ 94487); var _common = __webpack_require__( /*! ../../core/utils/common */ 17781); var _deferred = __webpack_require__( /*! ../../core/utils/deferred */ 87739); var _dom = __webpack_require__( /*! ../../core/utils/dom */ 86858); var _extend = __webpack_require__( /*! ../../core/utils/extend */ 52576); var _iterator = __webpack_require__( /*! ../../core/utils/iterator */ 21274); var _selection_filter = __webpack_require__( /*! ../../core/utils/selection_filter */ 52877); var _size = __webpack_require__( /*! ../../core/utils/size */ 57653); var _type = __webpack_require__( /*! ../../core/utils/type */ 11528); var _window = __webpack_require__( /*! ../../core/utils/window */ 3104); var _ui = _interopRequireDefault(__webpack_require__( /*! ../../ui/widget/ui.errors */ 35185)); var _m_select_box = _interopRequireDefault(__webpack_require__( /*! ../ui/m_select_box */ 30149)); var _m_utils = _interopRequireDefault(__webpack_require__( /*! ../ui/text_box/m_utils.caret */ 45929)); var _m_utils2 = __webpack_require__( /*! ../ui/text_box/m_utils.scroll */ 81569); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } function _extends() { return _extends = Object.assign ? Object.assign.bind() : function(n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) { ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]) } } return n }, _extends.apply(null, arguments) } function xor(a, b) { return (a || b) && !(a && b) } class TagBox extends _m_select_box.default { _supportedKeys() { const parent = super._supportedKeys(); const sendToList = options => this._list._keyboardHandler(options); const rtlEnabled = this.option("rtlEnabled"); return _extends({}, parent, { backspace(e) { if (!this._isCaretAtTheStart()) { return } this._processKeyboardEvent(e); this._isTagRemoved = true; const $tagToDelete = this._$focusedTag || this._tagElements().last(); if (this._$focusedTag) { this._moveTagFocus("prev", true) } if (0 === $tagToDelete.length) { return } this._preserveFocusedTag = true; this._removeTagElement($tagToDelete); delete this._preserveFocusedTag }, upArrow: (e, opts) => e.altKey || !this._list ? parent.upArrow.call(this, e) : sendToList(opts), downArrow: (e, opts) => e.altKey || !this._list ? parent.downArrow.call(this, e) : sendToList(opts), del(e) { if (!this._$focusedTag || !this._isCaretAtTheStart()) { return } this._processKeyboardEvent(e); this._isTagRemoved = true; const $tagToDelete = this._$focusedTag; this._moveTagFocus("next", true); this._preserveFocusedTag = true; this._removeTagElement($tagToDelete); delete this._preserveFocusedTag }, enter(e, options) { var _this$_list; const isListItemFocused = null !== (null === (_this$_list = this._list) || void 0 === _this$_list ? void 0 : _this$_list.option("focusedElement")) && true === this.option("opened"); const isCustomItem = this.option("acceptCustomValue") && !isListItemFocused; if (isCustomItem) { e.preventDefault(); "" !== this._searchValue() && this._customItemAddedHandler(e); return } if (this.option("opened")) { this._saveValueChangeEvent(e); sendToList(options); e.preventDefault() } }, space(e, options) { const isOpened = this.option("opened"); const isInputActive = this._shouldRenderSearchEvent(); if (isOpened && !isInputActive) { this._saveValueChangeEvent(e); sendToList(options); e.preventDefault() } }, leftArrow(e) { if (!this._isCaretAtTheStart() || this._isEmpty() || this._isEditable() && rtlEnabled && !this._$focusedTag) { return } e.preventDefault(); const direction = rtlEnabled ? "next" : "prev"; this._moveTagFocus(direction); if (!this.option("multiline")) { this._scrollContainer(direction) } }, rightArrow(e) { if (!this._isCaretAtTheStart() || this._isEmpty() || this._isEditable() && !rtlEnabled && !this._$focusedTag) { return } e.preventDefault(); const direction = rtlEnabled ? "prev" : "next"; this._moveTagFocus(direction); !this.option("multiline") && this._scrollContainer(direction) } }) } _processKeyboardEvent(e) { e.preventDefault(); e.stopPropagation(); this._saveValueChangeEvent(e) } _isEmpty() { return 0 === this._getValue().length } _updateTagsContainer($element) { this._$tagsContainer = $element.addClass("dx-tag-container") } _allowSelectItemByTab() { return false } _isCaretAtTheStart() { const position = (0, _m_utils.default)(this._input()); return 0 === (null === position || void 0 === position ? void 0 : position.start) && 0 === position.end } _updateInputAriaActiveDescendant(id) { this.setAria("activedescendant", id, this._input()) } _moveTagFocus(direction, clearOnBoundary) { if (!this._$focusedTag) { const tagElements = this._tagElements(); this._$focusedTag = "next" === direction ? tagElements.first() : tagElements.last(); this._toggleFocusClass(true, this._$focusedTag); this._updateInputAriaActiveDescendant(this._$focusedTag.attr("id")); return } const $nextFocusedTag = this._$focusedTag[direction](".dx-tag"); if ($nextFocusedTag.length > 0) { this._replaceFocusedTag($nextFocusedTag); this._updateInputAriaActiveDescendant($nextFocusedTag.attr("id")) } else if (clearOnBoundary || "next" === direction && this._isEditable()) { this._clearTagFocus(); this._updateInputAriaActiveDescendant() } } _replaceFocusedTag($nextFocusedTag) { this._toggleFocusClass(false, this._$focusedTag); this._$focusedTag = $nextFocusedTag; this._toggleFocusClass(true, this._$focusedTag) } _clearTagFocus() { if (!this._$focusedTag) { return } this._toggleFocusClass(false, this._$focusedTag); this._updateInputAriaActiveDescendant(); delete this._$focusedTag } _focusClassTarget($element) { if ($element && $element.length && $element[0] !== this._focusTarget()[0]) { return $element } return super._focusClassTarget() } _getLabelContainer() { return this._$tagsContainer } _getFieldElement() { return this._input() } _scrollContainer(direction) { if (this.option("multiline") || !(0, _window.hasWindow)()) { return } if (!this._$tagsContainer) { return } const scrollPosition = this._getScrollPosition(direction); this._$tagsContainer.scrollLeft(scrollPosition) } _getScrollPosition(direction) { if ("start" === direction || "end" === direction) { return this._getBorderPosition(direction) } return this._$focusedTag ? this._getFocusedTagPosition(direction) : this._getBorderPosition("end") } _getBorderPosition(direction) { const { rtlEnabled: rtlEnabled } = this.option(); const isScrollLeft = xor("end" === direction, rtlEnabled); const scrollSign = rtlEnabled ? -1 : 1; return xor(isScrollLeft, !rtlEnabled) ? 0 : scrollSign * (this._$tagsContainer.get(0).scrollWidth - (0, _size.getOuterWidth)(this._$tagsContainer)) } _getFocusedTagPosition(direction) { const rtlEnabled = this.option("rtlEnabled"); const isScrollLeft = xor("next" === direction, rtlEnabled); let { left: scrollOffset } = this._$focusedTag.position(); let scrollLeft = this._$tagsContainer.scrollLeft(); if (isScrollLeft) { scrollOffset += (0, _size.getOuterWidth)(this._$focusedTag, true) - (0, _size.getOuterWidth)(this._$tagsContainer) } if (xor(isScrollLeft, scrollOffset < 0)) { scrollLeft += scrollOffset } return scrollLeft } _setNextValue() {} _getDefaultOptions() { return (0, _extend.extend)(super._getDefaultOptions(), { value: [], showDropDownButton: false, maxFilterQueryLength: 1500, tagTemplate: "tag", selectAllText: _message.default.format("dxList-selectAll"), hideSelectedItems: false, selectedItems: [], selectAllMode: "page", onSelectAllValueChanged: null, maxDisplayedTags: void 0, showMultiTagOnly: true, onMultiTagPreparing: null, multiline: true, useSubmitBehavior: true }) } _init() { super._init(); this._selectedItems = []; this._initSelectAllValueChangedAction() } _initActions() { super._initActions(); this._initMultiTagPreparingAction() } _initMultiTagPreparingAction() { this._multiTagPreparingAction = this._createActionByOption("onMultiTagPreparing", { beforeExecute: e => { this._multiTagPreparingHandler(e.args[0]) }, excludeValidators: ["disabled", "readOnly"] }) } _multiTagPreparingHandler(args) { const { length: selectedCount } = this._getValue(); if (!this.option("showMultiTagOnly")) { args.text = _message.default.getFormatter("dxTagBox-moreSelected")(selectedCount - this.option("maxDisplayedTags") + 1) } else { args.text = _message.default.getFormatter("dxTagBox-selected")(selectedCount) } } _initDynamicTemplates() { super._initDynamicTemplates(); this._templateManager.addDefaultTemplates({ tag: new _bindable_template.BindableTemplate((($container, data) => { const $tagContent = (0, _renderer.default)("<div>").addClass("dx-tag-content"); (0, _renderer.default)("<span>").text(data.text ?? data).appendTo($tagContent); (0, _renderer.default)("<div>").addClass("dx-tag-remove-button").appendTo($tagContent); $container.append($tagContent) }), ["text"], this.option("integrationOptions.watchMethod"), { text: this._displayGetter }) }) } _toggleSubmitElement(enabled) { if (enabled) { this._renderSubmitElement(); this._setSubmitValue() } else { if (this._$submitElement) { this._$submitElement.remove() } delete this._$submitElement } } _renderSubmitElement() { if (!this.option("useSubmitBehavior")) { return } this._$submitElement = (0, _renderer.default)("<select>").attr({ multiple: "multiple", "aria-label": "Selected items" }).css("display", "none").appendTo(this.$element()) } _setSubmitValue() { if (!this.option("useSubmitBehavior")) { return } const value = this._getValue(); const $options = []; for (let i = 0, n = value.length; i < n; i++) { const useDisplayText = this._shouldUseDisplayValue(value[i]); $options.push((0, _renderer.default)("<option>").val(useDisplayText ? this._displayGetter(value[i]) : value[i]).attr("selected", "selected")) } this._getSubmitElement().empty().append($options) } _initMarkup() { this._tagElementsCache = (0, _renderer.default)(); const isSingleLineMode = !this.option("multiline"); this.$element().addClass("dx-tagbox").toggleClass("dx-tagbox-only-select", !(this.option("searchEnabled") || this.option("acceptCustomValue"))).toggleClass("dx-tagbox-single-line", isSingleLineMode); const elementAria = { role: "application", roledescription: _message.default.format("dxTagBox-ariaRoleDescription") }; this.setAria(elementAria, this.$element()); this._initTagTemplate(); super._initMarkup() } _getNewLabelId(actualId, newId, shouldRemove) { if (!actualId) { return newId } if (shouldRemove) { if (actualId === newId) { return } return actualId.split(" ").filter((id => id !== newId)).join(" ") } return `${actualId} ${newId}` } _updateElementAria(id, shouldRemove) { const shouldClearLabel = !id; if (shouldClearLabel) { this.setAria("labelledby", void 0, this.$element()); return } const labelId = this.$element().attr("aria-labelledby"); const newLabelId = this._getNewLabelId(labelId, id, shouldRemove); this.setAria("labelledby", newLabelId, this.$element()) } _render() { super._render(); this._renderTagRemoveAction(); this._renderSingleLineScroll(); this._scrollContainer("start") } _initTagTemplate() { this._tagTemplate = this._getTemplateByOption("tagTemplate") } _renderField() { const isDefaultFieldTemplate = !(0, _type.isDefined)(this.option("fieldTemplate")); this.$element().toggleClass("dx-tagbox-default-template", isDefaultFieldTemplate).toggleClass("dx-tagbox-custom-template", !isDefaultFieldTemplate); super._renderField() } _renderTagRemoveAction() { const tagRemoveAction = this._createAction(this._removeTagHandler.bind(this)); const eventName = (0, _index.addNamespace)(_click.name, "dxTagBoxTagRemove"); _events_engine.default.off(this._$tagsContainer, eventName); _events_engine.default.on(this._$tagsContainer, eventName, ".dx-tag-remove-button", (event => { tagRemoveAction({ event: event }) })) } _renderSingleLineScroll() { const mouseWheelEvent = (0, _index.addNamespace)("dxmousewheel", this.NAME); const $element = this.$element(); const isMultiline = this.option("multiline"); _events_engine.default.off($element, mouseWheelEvent); if ("desktop" !== _devices.default.real().deviceType) { if (this._$tagsContainer) { this._$tagsContainer.css("overflowX", isMultiline ? "" : "auto") } return } if (isMultiline) { return } _events_engine.default.on($element, mouseWheelEvent, this._tagContainerMouseWheelHandler.bind(this)) } _tagContainerMouseWheelHandler(e) { const scrollLeft = this._$tagsContainer.scrollLeft(); const delta = -.3 * e.delta; if (!(0, _index.isCommandKeyPressed)(e) && (0, _m_utils2.allowScroll)(this._$tagsContainer, delta, true)) { this._$tagsContainer.scrollLeft(scrollLeft + delta); return false } return } _renderEvents() { super._renderEvents(); const input = this._input(); const namespace = (0, _index.addNamespace)("keydown", this.NAME); _events_engine.default.on(input, namespace, (e => { const keyName = (0, _index.normalizeKeyName)(e); if (!this._isControlKey(keyName) && this._isEditable()) { this._clearTagFocus() } })) } _popupWrapperClass() { return `${super._popupWrapperClass()} dx-tagbox-popup-wrapper` } _renderInput() { super._renderInput(); this._renderPreventBlurOnInputClick() } _renderPreventBlurOnInputClick() { const eventName = (0, _index.addNamespace)("mousedown", "dxTagBox"); _events_engine.default.off(this._inputWrapper(), eventName); _events_engine.default.on(this._inputWrapper(), eventName, (e => { if (e.target !== this._input()[0] && this._isFocused()) { e.preventDefault() } })) } _renderInputValueImpl() { return this._renderMultiSelect() } _loadInputValue() { return (0, _deferred.when)() } _clearTextValue() { this._input().val(""); this._toggleEmptinessEventHandler(); this.option("text", "") } _focusInHandler(e) { if (!this._preventNestedFocusEvent(e)) { this._scrollContainer("end") } super._focusInHandler(e) } _renderInputValue() { this.option("displayValue", this._searchValue()); return super._renderInputValue(...arguments) } _restoreInputText(saveEditingValue) { if (!saveEditingValue) { this._clearTextValue() } } _focusOutHandler(e) { if (!this._preventNestedFocusEvent(e)) { this._clearTagFocus(); this._scrollContainer("start") } super._focusOutHandler(e) } _initSelectAllValueChangedAction() { this._selectAllValueChangeAction = this._createActionByOption("onSelectAllValueChanged") } _renderList() { super._renderList(); this._setListDataSourceFilter() } _canListHaveFocus() { const { applyValueMode: applyValueMode } = this.option(); return "useButtons" === applyValueMode } _listConfig() { const selectionMode = this.option("showSelectionControls") ? "all" : "multiple"; return (0, _extend.extend)(super._listConfig(), { maxFilterLengthInRequest: this.option("maxFilterQueryLength"), selectionMode: selectionMode, selectAllText: this.option("selectAllText"), onSelectAllValueChanged: _ref => { let { value: value } = _ref; this._selectAllValueChangeAction({ value: value }) }, selectAllMode: this.option("selectAllMode"), selectedItems: this._selectedItems, onFocusedItemChanged: null }) } _renderMultiSelect() { const d = (0, _deferred.Deferred)(); this._updateTagsContainer(this._$textEditorInputContainer); this._renderInputSize(); this._renderTags().done(d.resolve).fail(d.reject); return d.promise() } _listItemClickHandler(e) { !this.option("showSelectionControls") && this._clearTextValue(); const { applyValueMode: applyValueMode } = this.option(); if ("useButtons" === applyValueMode) { return } super._listItemClickHandler(e); this._saveValueChangeEvent(void 0) } _shouldClearFilter() { const shouldClearFilter = super._shouldClearFilter(); const showSelectionControls = this.option("showSelectionControls"); return !showSelectionControls && shouldClearFilter } _renderInputSize() { const $input = this._input(); const value = $input.val(); const isEmptyInput = (0, _type.isString)(value) && value; let width = ""; let size; const canTypeText = this.option("searchEnabled") || this.option("acceptCustomValue"); if (isEmptyInput && canTypeText) { const $calculationElement = (0, _dom.createTextElementHiddenCopy)($input, value, { includePaddings: true }); $calculationElement.insertAfter($input); width = (0, _size.getOuterWidth)($calculationElement) + 5; $calculationElement.remove() } else if (!value) { size = 1 } $input.css("width", width); $input.attr("size", size ?? "") } _renderInputSubstitution() { super._renderInputSubstitution(); this._updateWidgetHeight() } _getValue() { const { value: value } = this.option(); return value || [] } _multiTagRequired() { const values = this._getValue(); const maxDisplayedTags = this.option("maxDisplayedTags"); return (0, _type.isDefined)(maxDisplayedTags) && values.length > maxDisplayedTags } _renderMultiTag($input) { const tagId = `dx-${new _guid.default}`; const $tag = (0, _renderer.default)("<div>").attr("id", tagId).addClass("dx-tag").addClass("dx-tagbox-multi-tag"); const args = { multiTagElement: (0, _element.getPublicElement)($tag), selectedItems: this.option("selectedItems") }; this._multiTagPreparingAction(args); if (args.cancel) { return false } $tag.data("dxTagData", args.text); $tag.insertBefore($input); this._tagTemplate.render({ model: args.text, container: (0, _element.getPublicElement)($tag) }); const tagText = args.text; this._setTagAria($tag, tagText); this._updateElementAria(tagId); return $tag } _getFilter(creator) { const dataSourceFilter = this._dataController.filter(); const filterExpr = creator.getCombinedFilter(this.option("valueExpr"), dataSourceFilter); const filterQueryLength = encodeURI(JSON.stringify(filterExpr)).length; const maxFilterQueryLength = this.option("maxFilterQueryLength"); if (filterQueryLength <= maxFilterQueryLength) { return filterExpr } _ui.default.log("W1019", maxFilterQueryLength) } _getFilteredItems(values) { var _this$_loadFilteredIt, _this$_list2; null === (_this$_loadFilteredIt = this._loadFilteredItemsPromise) || void 0 === _this$_loadFilteredIt || _this$_loadFilteredIt.reject(); const creator = new _selection_filter.SelectionFilterCreator(values); const listSelectedItems = null === (_this$_list2 = this._list) || void 0 === _this$_list2 ? void 0 : _this$_list2.option("selectedItems"); const isListItemsLoaded = !!listSelectedItems && this._list._dataController.isLoaded(); const selectedItems = listSelectedItems || this.option("selectedItems"); const clientFilterFunction = creator.getLocalFilter(this._valueGetter); const filteredItems = selectedItems.filter(clientFilterFunction); const selectedItemsAlreadyLoaded = filteredItems.length === values.length; const d = (0, _deferred.Deferred)(); const dataController = this._dataController; if (!this._dataSource) { return d.resolve([]).promise() } if ((!this._isDataSourceChanged || isListItemsLoaded) && selectedItemsAlreadyLoaded && !this._isDataSourceOptionChanged) { return d.resolve(filteredItems).promise() } const { customQueryParams: customQueryParams, expand: expand, select: select } = dataController.loadOptions(); const filter = this._getFilter(creator); dataController.loadFromStore({ filter: filter, customQueryParams: customQueryParams, expand: expand, select: select }).done(((data, extra) => { this._isDataSourceChanged = false; this._isDataSourceOptionChanged = false; if (this._disposed) { d.reject(); return } const { data: items } = (0, _utils.normalizeLoadResult)(data, extra); const mappedItems = dataController.applyMapFunction(items); d.resolve(mappedItems.filter(clientFilterFunction)) })).fail(d.reject); this._loadFilteredItemsPromise = d; return d.promise() } _createTagsData(values, filteredItems) { const items = []; const cache = {}; const isValueExprSpecified = "this" === this._valueGetterExpr(); const { acceptCustomValue: acceptCustomValue } = this.option(); const filteredValues = {}; filteredItems.forEach((filteredItem => { const filteredItemValue = isValueExprSpecified ? JSON.stringify(filteredItem) : this._valueGetter(filteredItem); filteredValues[filteredItemValue] = filteredItem })); const loadItemPromises = []; values.forEach(((value, index) => { const currentItem = filteredValues[isValueExprSpecified ? JSON.stringify(value) : value]; if (isValueExprSpecified && !(0, _type.isDefined)(currentItem)) { if (!this._dataSource) { return } loadItemPromises.push(this._loadItem(value, cache).done((item => { const newItem = this._createTagData(item, value); items.splice(index, 0, newItem) })).fail((() => { if (acceptCustomValue) { const newItem = this._createTagData(void 0, value); items.splice(index, 0, newItem) } }))) } else { const newItem = this._createTagData(currentItem, value); items.splice(index, 0, newItem) } })); const d = (0, _deferred.Deferred)(); _deferred.when.apply(this, loadItemPromises).always((() => { d.resolve(items) })); return d.promise() } _createTagData(item, value) { if ((0, _type.isDefined)(item)) { this._selectedItems.push(item); return item } const selectedItem = this.option("selectedItem"); const customItem = this._valueGetter(selectedItem) === value ? selectedItem : value; return customItem } _isGroupedData() { return this.option("grouped") && !this._dataController.group() } _getItemsByValues(values) { const resultItems = []; values.forEach((value => { const item = this._getItemFromPlain(value); if ((0, _type.isDefined)(item)) { resultItems.push(item) } })); return resultItems } _getFilteredGroupedItems(values) { const selectedItems = (0, _deferred.Deferred)(); if (this._filteredGroupedItemsLoadPromise) { this._dataController.cancel(this._filteredGroupedItemsLoadPromise.operationId) } if (!this._dataController.items().length) { this._filteredGroupedItemsLoadPromise = this._dataController.load().done((() => { selectedItems.resolve(this._getItemsByValues(values)) })).fail((() => { selectedItems.resolve([]) })).always((() => { this._filteredGroupedItemsLoadPromise = void 0 })) } else { selectedItems.resolve(this._getItemsByValues(values)) } return selectedItems.promise() } _loadTagsData() { const values = this._getValue(); const tagData = (0, _deferred.Deferred)(); this._selectedItems = []; const filteredItemsPromise = this._isGroupedData() ? this._getFilteredGroupedItems(values) : this._getFilteredItems(values); filteredItemsPromise.done((filteredItems => { const items = this._createTagsData(values, filteredItems); items.always((data => { tagData.resolve(data) })) })).fail(tagData.reject.bind(this)); return tagData.promise() } _renderTags() { const d = (0, _deferred.Deferred)(); let isPlainDataUsed = false; if (this._shouldGetItemsFromPlain(this._valuesToUpdate)) { this._selectedItems = this._getItemsFromPlain(this._valuesToUpdate); if (this._selectedItems.length === this._valuesToUpdate.length) { this._tagsToRender = this._selectedItems; this._renderTagsImpl(); isPlainDataUsed = true; d.resolve() } } if (!isPlainDataUsed) { this._loadTagsData().done((items => { if (this._disposed) { d.reject(); return } this._tagsToRender = items; this._renderTagsImpl(); d.resolve() })).fail(d.reject) } return d.promise() } _renderTagsImpl() { this._renderField(); if (this._shouldUpdateSelectedItems()) { this.option("selectedItems", this._selectedItems.slice()) } this._cleanTags(); const fieldTemplate = this._getFieldTemplate(); if (!fieldTemplate) { this._renderTagsCore() } } _shouldGetItemsFromPlain(values) { return values && this._dataController.isLoaded() && values.length <= this._getPlainItems().length } _getItemsFromPlain(values) { let selectedItems = this._getSelectedItemsFromList(values); const needFilterPlainItems = 0 === selectedItems.length && values.length > 0 || selectedItems.length < values.length; if (needFilterPlainItems) { const plainItems = this._getPlainItems(); selectedItems = this._filterSelectedItems(plainItems, values) } return selectedItems } _getSelectedItemsFromList(values) { var _this$_list3; const listSelectedItems = null === (_this$_list3 = this._list) || void 0 === _this$_list3 ? void 0 : _this$_list3.option("selectedItems"); let selectedItems = []; if (values.length === (null === listSelectedItems || void 0 === listSelectedItems ? void 0 : listSelectedItems.length)) { selectedItems = this._filterSelectedItems(listSelectedItems, values) } return selectedItems } _filterSelectedItems(plainItems, values) { const selectedItems = plainItems.filter((dataItem => { let currentValue; for (let i = 0; i < values.length; i++) { currentValue = values[i]; if ((0, _type.isObject)(currentValue)) { if (this._isValueEquals(dataItem, currentValue)) { return true } } else if (this._isValueEquals(this._valueGetter(dataItem), currentValue)) { return true } } return false }), this); return selectedItems } _processDataSourceChanging() { this._isDataSourceOptionChanged = true; super._processDataSourceChanging() } _integrateInput() { super._integrateInput(); const tagsContainer = this.$element().find(".dx-texteditor-input-container"); this._updateTagsContainer(tagsContainer); this._renderTagRemoveAction(); this._renderTagsCore() } _renderTagsCore() { var _this$_popup; this._renderTagsElements(this._tagsToRender); this._renderEmptyState(); if (!this._preserveFocusedTag) { this._clearTagFocus() } null === (_this$_popup = this._popup) || void 0 === _this$_popup || _this$_popup.refreshPosition() } _shouldUpdateSelectedItems() { var _this$_selectedItems, _this$_selectedItems2; const { selectedItems: selectedItems } = this.option(); if ((0, _type.isDefined)(selectedItems) && selectedItems.length !== (null === (_this$_selectedItems = this._selectedItems) || void 0 === _this$_selectedItems ? void 0 : _this$_selectedItems.length)) { return true } const intersection = (0, _array.getIntersection)(selectedItems, this._selectedItems); if (intersection.length !== (null === (_this$_selectedItems2 = this._selectedItems) || void 0 === _this$_selectedItems2 ? void 0 : _this$_selectedItems2.length)) { return true } return false } _renderTagsElements(items) { const $multiTag = this._multiTagRequired() && this._renderMultiTag(this._input()); const showMultiTagOnly = this.option("showMultiTagOnly"); const maxDisplayedTags = this.option("maxDisplayedTags"); items.forEach(((item, index) => { if ($multiTag && showMultiTagOnly || $multiTag && !showMultiTagOnly && index - maxDisplayedTags >= -1) { return false } this._renderTag(item, $multiTag || this._input()); return })); if (this._isFocused()) { this._scrollContainer("end") } this._refreshTagElements() } _cleanTags() { if (this._multiTagRequired()) { this._tagElements().remove() } else { const $tags = this._tagElements(); const selectedItems = this.option("selectedItems") ?? []; const values = selectedItems.map((item => this._valueGetter(item))); (0, _iterator.each)($tags, ((_, tag) => { const $tag = (0, _renderer.default)(tag); const tagData = $tag.data("dxTagData"); if (!values.includes(tagData)) { $tag.remove() } })) } this._updateElementAria() } _renderEmptyState() { const isEmpty = !(this._getValue().length || this._selectedItems.length || this._searchValue()); this._toggleEmptiness(isEmpty); this._renderDisplayText() } _renderDisplayText() { this._renderInputSize() } _refreshTagElements() { this._tagElementsCache = this.$element().find(".dx-tag") } _tagElements() { return this._tagElementsCache } _applyTagTemplate(item, $tag) { this._tagTemplate.render({ model: item, container: (0, _element.getPublicElement)($tag) }) } _renderTag(item, $input) { const value = this._valueGetter(item); if (!(0, _type.isDefined)(value)) { return } let $tag = this._getTag(value); const displayValue = this._displayGetter(item); const itemModel = this._getItemModel(item, displayValue); if ($tag) { const tagDisplayValue = $tag.data("dxTagDisplayValue"); if ((0, _type.isDefined)(displayValue) && !(0, _common.equalByValue)(tagDisplayValue, displayValue)) { $tag.empty(); this._applyTagTemplate(itemModel, $tag) } this._updateElementAria($tag.attr("id")) } else { const tagId = `dx-${new _guid.default}`; $tag = this._createTag(value, $input, tagId, displayValue); this._setTagAria($tag, (0, _type.isDefined)(displayValue) ? displayValue : value); if ((0, _type.isDefined)(item)) { this._applyTagTemplate(itemModel, $tag) } else { this._applyTagTemplate(value, $tag) } this._updateElementAria(tagId) } } _setTagAria($tag, tagText) { const aria = { role: "button", label: tagText, roledescription: _message.default.format("dxTagBox-tagRoleDescription") }; this.setAria(aria, $tag) } _getItemModel(item, displayValue) { if ((0, _type.isObject)(item) && (0, _type.isDefined)(displayValue)) { return item } return (0, _common.ensureDefined)(displayValue, "") } _getTag(value) { const $tags = this._tagElements(); const tagsLength = $tags.length; let result = false; for (let i = 0; i < tagsLength; i++) { const $tag = $tags[i]; const tagData = (0, _element_data.data)($tag, "dxTagData"); if (value === tagData || (0, _common.equalByValue)(value, tagData)) { result = (0, _renderer.default)($tag); break } } return result } _createTag(value, $input, tagId, displayValue) { return (0, _renderer.default)("<div>").attr("id", tagId).addClass("dx-tag").data("dxTagData", value).data("dxTagDisplayValue", displayValue).insertBefore($input) } _toggleEmptinessEventHandler() { this._toggleEmptiness(!this._getValue().length && !this._searchValue().length) } _customItemAddedHandler(e) { super._customItemAddedHandler(e); this._clearTextValue() } _removeTagHandler(args) { const e = args.event; e.stopPropagation(); this._saveValueChangeEvent(e); const $tag = (0, _renderer.default)(e.target).closest(".dx-tag"); this._removeTagElement($tag) } _removeTagElement($tag) { if ($tag.hasClass("dx-tagbox-multi-tag")) { if (!this.option("showMultiTagOnly")) { const { maxDisplayedTags: maxDisplayedTags } = this.option(); this.option("value", this._getValue().slice(0, maxDisplayedTags)) } else { this.clear() } return } const itemValue = $tag.data("dxTagData"); const itemId = $tag.attr("id"); this._removeTagWithUpdate(itemValue); this._updateElementAria(itemId, true); this._refreshTagElements() } _updateField() {} _removeTagWithUpdate(itemValue) { const value = this._getValue().slice(); this._removeTag(value, itemValue); this.option("value", value); this.option("selectedItem", null); if (0 === value.length) { this._clearTagFocus() } } _getCurrentValue() { return this._lastValue() } _selectionChangeHandler(e) { const { applyValueMode: applyValueMode } = this.option(); if ("useButtons" === applyValueMode) { return } const value = this._getValue().slice(); (0, _iterator.each)(e.removedItems || [], ((_, removedItem) => { this._removeTag(value, this._valueGetter(removedItem)) })); (0, _iterator.each)(e.addedItems || [], ((_, addedItem) => { this._addTag(value, this._valueGetter(addedItem)) })); this._updateWidgetHeight(); if (!(0, _common.equalByValue)(this._list.option("selectedItemKeys"), this.option("value"))) { const listSelectionChangeEvent = this._list._getSelectionChangeEvent(); listSelectionChangeEvent && this._saveValueChangeEvent(listSelectionChangeEvent); this.option("value", value) } this._list._saveSelectionChangeEvent(void 0) } _removeTag(value, item) { const index = this._valueIndex(item, value); if (index >= 0) { value.splice(index, 1) } } _addTag(value, item) { const index = this._valueIndex(item); if (index < 0) { value.push(item) } } _fieldRenderData() { return this._selectedItems.slice() } _completeSelection(value) { if (!this.option("showSelectionControls")) { this._setValue(value) } } _setValue(value) { var _this$_list4; if (null === value) { return } const { applyValueMode: applyValueMode } = this.option(); const useButtons = "useButtons" === applyValueMode; const valueIndex = this._valueIndex(value); const values = (useButtons ? (null === (_this$_list4 = this._list) || void 0 === _this$_list4 ? void 0 : _this$_list4.option("selectedItemKeys")) || [] : this._getValue()).slice(); if (valueIndex >= 0) { values.splice(valueIndex, 1) } else { values.push(value) } if (useButtons) { var _this$_list5; null === (_this$_list5 = this._list) || void 0 === _this$_list5 || _this$_list5.option("selectedItemKeys", values) } else { this.option("value", values) } } _isSelectedValue(value, cache) { return this._valueIndex(value, null, cache) > -1 } _valueIndex(value, values, cache) { let result = -1; if (cache && "object" !== typeof value) { if (!cache.indexByValues) { cache.indexByValues = {}; values = values || this._getValue(); values.forEach(((value, index) => { cache.indexByValues[value] = index })) } if (value in cache.indexByValues) { return cache.indexByValues[value] } } values = values || this._getValue(); (0, _iterator.each)(values, ((index, selectedValue) => { if (this._isValueEquals(value, selectedValue)) { result = index; return false } return })); return result } _lastValue() { const values = this._getValue(); const lastValue = values[values.length - 1]; return lastValue ?? null } _shouldRenderSearchEvent() { const { searchEnabled: searchEnabled, acceptCustomValue: acceptCustomValue } = this.option(); return searchEnabled || acceptCustomValue } _searchHandler(e) { if (this.option("searchEnabled") && !!e && !this._isTagRemoved) { super._searchHandler(arguments); this._setListDataSourceFilter() } this._updateWidgetHeight(); delete this._isTagRemoved } _updateWidgetHeight() { const element = this.$element(); const originalHeight = (0, _size.getHeight)(element); this._renderInputSize(); const currentHeight = (0, _size.getHeight)(element); if (this._popup && this.option("opened") && this._isEditable() && currentHeight !== originalHeight) { this._popup.repaint() } } _refreshSelected() { var _this$_list6; (null === (_this$_list6 = this._list) || void 0 === _this$_list6 ? void 0 : _this$_list6.getDataSource()) && this._list.option("selectedItems", this._selectedItems) } _resetListDataSourceFilter() { const dataController = this._dataController; delete this._userFilter; dataController.filter(null); dataController.reload() } _setListDataSourceFilter() { if (!this.option("hideSelectedItems") || !this._list) { return } const dataController = this._dataController; const valueGetterExpr = this._valueGetterExpr(); if ((0, _type.isString)(valueGetterExpr) && "this" !== valueGetterExpr) { const filter = this._dataSourceFilterExpr(); if (void 0 === this._userFilter) { this._userFilter = dataController.filter() || null } this._userFilter && filter.push(this._userFilter); filter.length ? dataController.filter(filter) : dataController.filter(null) } else { dataController.filter(this._dataSourceFilterFunction.bind(this)) } dataController.load() } _dataSourceFilterExpr() { const filter = []; this._getValue().forEach((value => filter.push(["!", [this._valueGetterExpr(), value]]))); return filter } _dataSourceFilterFunction(itemData) { const itemValue = this._valueGetter(itemData); let result = true; (0, _iterator.each)(this._getValue(), ((index, value) => { if (this._isValueEquals(value, itemValue)) { result = false; return false } return })); return result } _dataSourceChangedHandler() { this._isDataSourceChanged = true; super._dataSourceChangedHandler.apply(this, arguments) } _applyButtonHandler(args) { this._saveValueChangeEvent(args.event); this.option("value", this._getSortedListValues()); this._clearTextValue(); super._applyButtonHandler(); this._cancelSearchIfNeed() } _getSortedListValues() { const listValues = this._getListValues(); const { value: value } = this.option(); const currentValue = value || []; const existedItems = listValues.length ? (0, _array.getIntersection)(currentValue, listValues) : []; const newItems = existedItems.length ? (0, _array.removeDuplicates)(listValues, currentValue) : listValues; return existedItems.concat(newItems) } _getListValues() { if (!this._list) { return [] } return this._getPlainItems(this._list.option("selectedItems")).map((item => this._valueGetter(item))) } _setListDataSource() { const currentValue = this._getValue(); super._setListDataSource(); const { value: value } = this.option(); if (currentValue !== value) { this.option("value", currentValue) } this._refreshSelected() } _renderOpenedState() { super._renderOpenedState(); const { applyValueMode: applyValueMode } = this.option(); if ("useButtons" === applyValueMode && !this.option("opened")) { this._refreshSelected() } } clear() { this._restoreInputText(); const defaultValue = this._getDefaultOptions().value; const { value: currentValue } = this.option(); if (defaultValue && 0 === defaultValue.length && currentValue && defaultValue.length === currentValue.length) { return } super.clear() } _clean() { super._clean(); delete this._valuesToUpdate; delete this._tagTemplate; delete this._tagsToRender } _getSelectedItemsDifference(newItems, previousItems) { if (!newItems.length) { return { addedItems: [], removedItems: previousItems.slice() } } if (!previousItems.length) { return { addedItems: newItems.slice(), removedItems: [] } } const previousItemsValuesMap = previousItems.reduce(((map, item) => { const value = this._valueGetter(item); map[value] = item; return map }), {}); const addedItems = []; newItems.forEach((item => { const value = this._valueGetter(item); if (!previousItemsValuesMap[value]) { addedItems.push(item) } delete previousItemsValuesMap[value] })); return { addedItems: addedItems, removedItems: Object.values(previousItemsValuesMap) } } _optionChanged(args) { const { name: name, value: value, previousValue: previousValue } = args; switch (name) { case "onSelectAllValueChanged": this._initSelectAllValueChangedAction(); break; case "onMultiTagPreparing": this._initMultiTagPreparingAction(); this._renderTags(); break; case "hideSelectedItems": if (value) { this._setListDataSourceFilter() } else { this._resetListDataSourceFilter() } break; case "useSubmitBehavior": this._toggleSubmitElement(value); break; case "displayExpr": super._optionChanged(args); this._initTemplates(); this._invalidate(); break; case "tagTemplate": this._initTagTemplate(); this._invalidate(); break; case "selectAllText": this._setListOption("selectAllText", this.option("selectAllText")); break; case "readOnly": case "disabled": super._optionChanged(args); !value && this._refreshEvents(); break; case "value": this._valuesToUpdate = value; super._optionChanged(args); this._valuesToUpdate = void 0; this._setListDataSourceFilter(); break; case "maxDisplayedTags": case "showMultiTagOnly": this._renderTags(); break; case "selectAllMode": this._setListOption(name, value); break; case "selectedItem": case "maxFilterQueryLength": break; case "selectedItems": this._selectionChangedAction(this._getSelectedItemsDifference(value, previousValue)); break; case "multiline": this.$element().toggleClass("dx-tagbox-single-line", !value); this._renderSingleLineScroll(); break; default: super._optionChanged(args) } } _getActualSearchValue() { return super._getActualSearchValue() || this._searchValue() } _popupHidingHandler() { super._popupHidingHandler(); this._clearFilter() } }(0, _component_registrator.default)("dxTagBox", TagBox); exports.default = TagBox }, 36234: /*!**************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/ui/m_text_area.js ***! \**************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = exports.TEXTAREA_CLASS = void 0; var _events_engine = _interopRequireDefault(__webpack_require__( /*! ../../common/core/events/core/events_engine */ 92774)); var _emitterGesture = _interopRequireDefault(__webpack_require__( /*! ../../common/core/events/gesture/emitter.gesture.scroll */ 86548)); var _pointer = _interopRequireDefault(__webpack_require__( /*! ../../common/core/events/pointer */ 89797)); var _index = __webpack_require__( /*! ../../common/core/events/utils/index */ 98834); var _component_registrator = _interopRequireDefault(__webpack_require__( /*! ../../core/component_registrator */ 92848)); var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../core/renderer */ 64553)); var _common = __webpack_require__( /*! ../../core/utils/common */ 17781); var _size = __webpack_require__( /*! ../../core/utils/size */ 57653); var _type = __webpack_require__( /*! ../../core/utils/type */ 11528); var _window = __webpack_require__( /*! ../../core/utils/window */ 3104); var _m_text_box = _interopRequireDefault(__webpack_require__( /*! ../ui/text_box/m_text_box */ 85968)); var _m_utils = __webpack_require__( /*! ../ui/text_box/m_utils.scroll */ 81569); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } function _extends() { return _extends = Object.assign ? Object.assign.bind() : function(n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) { ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]) } } return n }, _extends.apply(null, arguments) } const TEXTAREA_CLASS = exports.TEXTAREA_CLASS = "dx-textarea"; class TextArea extends _m_text_box.default { _getDefaultOptions() { return _extends({}, super._getDefaultOptions(), { spellcheck: true, autoResizeEnabled: false, _shouldAttachKeyboardEvents: false }) } _shouldAttachKeyboardEvents() { const { _shouldAttachKeyboardEvents: shouldAttachKeyboardEvents, readOnly: readOnly } = this.option(); return shouldAttachKeyboardEvents || !readOnly } _initMarkup() { this.$element().addClass(TEXTAREA_CLASS); super._initMarkup(); this.setAria("multiline", "true") } _renderContentImpl() { this._updateInputHeight(); super._renderContentImpl() } _renderInput() { super._renderInput(); this._renderScrollHandler() } _createInput() { const $input = (0, _renderer.default)("<textarea>"); this._applyInputAttributes($input, this.option("inputAttr")); this._updateInputAutoResizeAppearance($input); return $input } _setInputMinHeight() {} _renderScrollHandler() { this._eventY = 0; const $input = this._input(); const initScrollData = (0, _m_utils.prepareScrollData)($input, true); _events_engine.default.on($input, (0, _index.addNamespace)(_emitterGesture.default.init, this.NAME), initScrollData, _common.noop); _events_engine.default.on($input, (0, _index.addNamespace)(_pointer.default.down, this.NAME), this._pointerDownHandler.bind(this)); _events_engine.default.on($input, (0, _index.addNamespace)(_pointer.default.move, this.NAME), this._pointerMoveHandler.bind(this)) } _pointerDownHandler(e) { this._eventY = (0, _index.eventData)(e).y } _pointerMoveHandler(e) { const currentEventY = (0, _index.eventData)(e).y; const delta = this._eventY - currentEventY; if ((0, _m_utils.allowScroll)(this._input(), delta)) { e.isScrollingEvent = true; e.stopPropagation() } this._eventY = currentEventY } _renderDimensions() { const $element = this.$element(); const element = $element.get(0); const width = this._getOptionValue("width", element); const height = this._getOptionValue("height", element); const minHeight = this.option("minHeight"); const maxHeight = this.option("maxHeight"); $element.css({ minHeight: void 0 !== minHeight ? minHeight : "", maxHeight: void 0 !== maxHeight ? maxHeight : "", width: width, height: height }) } _resetDimensions() { this.$element().css({ height: "", minHeight: "", maxHeight: "" }) } _renderEvents() { if (this.option("autoResizeEnabled")) { _events_engine.default.on(this._input(), (0, _index.addNamespace)("input paste", this.NAME), this._updateInputHeight.bind(this)) } super._renderEvents() } _refreshEvents() { _events_engine.default.off(this._input(), (0, _index.addNamespace)("input paste", this.NAME)); super._refreshEvents() } _getHeightDifference($input) { return (0, _size.getVerticalOffsets)(this.$element().get(0), false) + (0, _size.getVerticalOffsets)(this._$textEditorContainer.get(0), false) + (0, _size.getVerticalOffsets)(this._$textEditorInputContainer.get(0), true) + (0, _size.getElementBoxParams)("height", (0, _window.getWindow)().getComputedStyle($input.get(0))).margin } _updateInputHeight() { if (!(0, _window.hasWindow)()) { return } const $input = this._input(); const height = this.option("height"); const autoHeightResizing = void 0 === height && this.option("autoResizeEnabled"); const shouldCalculateInputHeight = autoHeightResizing || void 0 === height && this.option("minHeight"); if (!shouldCalculateInputHeight) { $input.css("height", ""); return } this._resetDimensions(); this.$element().css("height", (0, _size.getOuterHeight)(this.$element())); $input.css("height", 0); const heightDifference = this._getHeightDifference($input); this._renderDimensions(); const minHeight = this._getBoundaryHeight("minHeight"); const maxHeight = this._getBoundaryHeight("maxHeight"); let inputHeight = $input[0].scrollHeight; if (void 0 !== minHeight) { inputHeight = Math.max(inputHeight, minHeight - heightDifference) } if (void 0 !== maxHeight) { const adjustedMaxHeight = maxHeight - heightDifference; const needScroll = inputHeight > adjustedMaxHeight; inputHeight = Math.min(inputHeight, adjustedMaxHeight); this._updateInputAutoResizeAppearance($input, !needScroll) } $input.css("height", inputHeight); if (autoHeightResizing) { this.$element().css("height", "auto") } } _getBoundaryHeight(optionName) { const boundaryValue = this.option(optionName); if ((0, _type.isDefined)(boundaryValue)) { return "number" === typeof boundaryValue ? boundaryValue : (0, _size.parseHeight)(boundaryValue, this.$element().get(0).parentElement, this.$element().get(0)) } } _renderInputType() {} _visibilityChanged(visible) { if (visible) { this._updateInputHeight() } } _updateInputAutoResizeAppearance($input, isAutoResizeEnabled) { if ($input) { const autoResizeEnabled = (0, _common.ensureDefined)(isAutoResizeEnabled, this.option("autoResizeEnabled")); $input.toggleClass("dx-texteditor-input-auto-resize", autoResizeEnabled) } } _dimensionChanged() { if (this.option("visible")) { this._updateInputHeight() } } _optionChanged(args) { const { name: name, value: value } = args; switch (name) { case "_shouldAttachKeyboardEvents": case "autoResizeEnabled": this._updateInputAutoResizeAppearance(this._input(), value); this._refreshEvents(); this._updateInputHeight(); break; case "value": case "height": super._optionChanged(args); this._updateInputHeight(); break; case "minHeight": case "maxHeight": this._renderDimensions(); this._updateInputHeight(); break; case "visible": super._optionChanged(args); if (value) { this._updateInputHeight() } break; default: super._optionChanged(args) } } }(0, _component_registrator.default)("dxTextArea", TextArea); exports.default = TextArea }, 9635: /*!**************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/ui/m_tile_view.js ***! \**************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _component_registrator = _interopRequireDefault(__webpack_require__( /*! ../../core/component_registrator */ 92848)); var _devices = _interopRequireDefault(__webpack_require__( /*! ../../core/devices */ 65951)); var _element = __webpack_require__( /*! ../../core/element */ 61404); var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../core/renderer */ 64553)); var _common = __webpack_require__( /*! ../../core/utils/common */ 17781); var _iterator = __webpack_require__( /*! ../../core/utils/iterator */ 21274); var _size = __webpack_require__( /*! ../../core/utils/size */ 57653); var _type = __webpack_require__( /*! ../../core/utils/type */ 11528); var _window = __webpack_require__( /*! ../../core/utils/window */ 3104); var _m_collection_widget = _interopRequireDefault(__webpack_require__( /*! ../ui/collection/m_collection_widget.edit */ 3391)); var _m_scroll_view = _interopRequireDefault(__webpack_require__( /*! ../ui/scroll_view/m_scroll_view */ 97972)); var _m_support = _interopRequireDefault(__webpack_require__( /*! ../core/utils/m_support */ 85991)); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } function _extends() { return _extends = Object.assign ? Object.assign.bind() : function(n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) { ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]) } } return n }, _extends.apply(null, arguments) } const CONFIGS = { horizontal: { itemMainRatio: "widthRatio", itemCrossRatio: "heightRatio", baseItemMainDimension: "baseItemWidth", baseItemCrossDimension: "baseItemHeight", mainDimension: "width", crossDimension: "height", mainPosition: "left", crossPosition: "top" }, vertical: { itemMainRatio: "heightRatio", itemCrossRatio: "widthRatio", baseItemMainDimension: "baseItemHeight", baseItemCrossDimension: "baseItemWidth", mainDimension: "height", crossDimension: "width", mainPosition: "top", crossPosition: "left" } }; class TileView extends _m_collection_widget.default { _getDefaultOptions() { return _extends({}, super._getDefaultOptions(), { items: null, direction: "horizontal", hoverStateEnabled: true, showScrollbar: "never", height: 500, baseItemWidth: 100, baseItemHeight: 100, itemMargin: 20, activeStateEnabled: true, indicateLoading: true }) } _defaultOptionsRules() { return super._defaultOptionsRules().concat([{ device: () => "desktop" === _devices.default.real().deviceType && !_devices.default.isSimulator(), options: { focusStateEnabled: true } }, { device: () => _m_support.default.nativeScrolling, options: { showScrollbar: "onScroll" } }]) } _itemClass() { return "dx-tile" } _itemDataKey() { return "dxTileData" } _itemContainer() { return this._$container } _init() { super._init(); this._activeStateUnit = ".dx-tile"; this.$element().addClass("dx-tileview"); this._initScrollView() } _dataSourceLoadingChangedHandler(isLoading) { const scrollView = this._scrollView; if (!(null !== scrollView && void 0 !== scrollView && scrollView.startLoading)) { return } if (isLoading && this.option("indicateLoading")) { scrollView.startLoading() } else { scrollView.finishLoading() } } _hideLoadingIfLoadIndicationOff() { if (!this.option("indicateLoading")) { this._dataSourceLoadingChangedHandler(false) } } _initScrollView() { const { width: width, height: height, direction: direction, showScrollbar: showScrollbar } = this.option(); this._scrollView = this._createComponent(this.$element(), _m_scroll_view.default, { direction: direction, width: width, height: height, scrollByContent: true, useKeyboard: false, showScrollbar: showScrollbar }); this._$container = (0, _renderer.default)(this._scrollView.content()); this._$container.addClass("dx-tileview-wrapper"); this._scrollView.option("onUpdated", this._renderGeometry.bind(this)) } _initMarkup() { super._initMarkup(); (0, _common.deferRender)((() => { this._cellsPerDimension = 1; this._renderGeometry(); this._updateScrollView(); this._fireContentReadyAction() })) } _updateScrollView() { this._scrollView.option("direction", this.option("direction")); this._scrollView.update(); this._indicateLoadingIfAlreadyStarted() } _indicateLoadingIfAlreadyStarted() { if (this._isDataSourceLoading()) { this._dataSourceLoadingChangedHandler(true) } } _renderGeometry() { const { direction: direction } = this.option(); this._config = CONFIGS[direction]; const items = this.option("items") || []; const config = this._config; const itemMargin = this.option("itemMargin"); const maxItemCrossRatio = Math.max.apply(Math, (0, _iterator.map)(items || [], (item => Math.round(item[config.itemCrossRatio] || 1)))); let crossDimensionValue; if (_window.hasWindow) { crossDimensionValue = ("width" === config.crossDimension ? _size.getWidth : _size.getHeight)(this.$element()) } else { crossDimensionValue = parseInt(this.$element().get(0).style[config.crossDimension]) } this._cellsPerDimension = Math.floor(crossDimensionValue / (this.option(config.baseItemCrossDimension) + itemMargin)); this._cellsPerDimension = Math.max(this._cellsPerDimension, maxItemCrossRatio); this._cells = []; this._cells.push(new Array(this._cellsPerDimension)); this._arrangeItems(items); this._renderContentSize(config, itemMargin) } _renderContentSize(config, itemMargin) { const { mainDimension: mainDimension, baseItemMainDimension: baseItemMainDimension } = config; if ((0, _window.hasWindow)()) { const actualContentSize = this._cells.length * this.option(baseItemMainDimension) + (this._cells.length + 1) * itemMargin; const elementSize = ("width" === mainDimension ? _size.getWidth : _size.getHeight)(this.$element()); ("width" === mainDimension ? _size.setWidth : _size.setHeight)(this._$container, Math.max(actualContentSize, elementSize)) } } _arrangeItems(items) { const config = this._config; const { itemMainRatio: itemMainRatio } = config; const { itemCrossRatio: itemCrossRatio } = config; const { mainPosition: mainPosition } = config; this._itemsPositions = []; (0, _iterator.each)(items, ((index, item) => { const currentItem = {}; currentItem[itemMainRatio] = item[itemMainRatio] || 1; currentItem[itemCrossRatio] = item[itemCrossRatio] || 1; currentItem.index = index; currentItem[itemMainRatio] = currentItem[itemMainRatio] <= 0 ? 0 : Math.round(currentItem[config.itemMainRatio]); currentItem[itemCrossRatio] = currentItem[itemCrossRatio] <= 0 ? 0 : Math.round(currentItem[config.itemCrossRatio]); const itemPosition = this._getItemPosition(currentItem); if (-1 === itemPosition[mainPosition]) { itemPosition[mainPosition] = this._cells.push(new Array(this._cellsPerDimension)) - 1 } this._occupyCells(currentItem, itemPosition); this._arrangeItem(currentItem, itemPosition); this._itemsPositions.push(itemPosition) })) } _refreshActiveDescendant() {} _getItemPosition(item) { const config = this._config; const { mainPosition: mainPosition } = config; const { crossPosition: crossPosition } = config; const position = {}; position[mainPosition] = -1; position[crossPosition] = 0; for (let main = 0; main < this._cells.length; main++) { for (let cross = 0; cross < this._cellsPerDimension; cross++) { if (this._itemFit(main, cross, item)) { position[mainPosition] = main; position[crossPosition] = cross; break } } if (position[mainPosition] > -1) { break } } return position } _itemFit(mainPosition, crossPosition, item) { let result = true; const config = this._config; const itemRatioMain = item[config.itemMainRatio]; const itemRatioCross = item[config.itemCrossRatio]; if (crossPosition + itemRatioCross > this._cellsPerDimension) { return false } for (let main = mainPosition; main < mainPosition + itemRatioMain; main++) { for (let cross = crossPosition; cross < crossPosition + itemRatioCross; cross++) { if (this._cells.length - 1 < main) { this._cells.push(new Array(this._cellsPerDimension)) } else if (void 0 !== this._cells[main][cross]) { result = false; break } } } return result } _occupyCells(item, itemPosition) { const config = this._config; const itemPositionMain = itemPosition[config.mainPosition]; const itemPositionCross = itemPosition[config.crossPosition]; const itemRatioMain = item[config.itemMainRatio]; const itemRatioCross = item[config.itemCrossRatio]; for (let main = itemPositionMain; main < itemPositionMain + itemRatioMain; main++) { for (let cross = itemPositionCross; cross < itemPositionCross + itemRatioCross; cross++) { this._cells[main][cross] = item.index } } } _arrangeItem(item, itemPosition) { const config = this._config; const itemPositionMain = itemPosition[config.mainPosition]; const itemPositionCross = itemPosition[config.crossPosition]; const itemRatioMain = item[config.itemMainRatio]; const itemRatioCross = item[config.itemCrossRatio]; const baseItemCross = this.option(config.baseItemCrossDimension); const baseItemMain = this.option(config.baseItemMainDimension); const itemMargin = this.option("itemMargin"); const cssProps = { display: itemRatioMain <= 0 || itemRatioCross <= 0 ? "none" : "" }; const mainDimension = itemRatioMain * baseItemMain + (itemRatioMain - 1) * itemMargin; const crossDimension = itemRatioCross * baseItemCross + (itemRatioCross - 1) * itemMargin; cssProps[config.mainDimension] = mainDimension < 0 ? 0 : mainDimension; cssProps[config.crossDimension] = crossDimension < 0 ? 0 : crossDimension; cssProps[config.mainPosition] = itemPositionMain * baseItemMain + (itemPositionMain + 1) * itemMargin; cssProps[config.crossPosition] = itemPositionCross * baseItemCross + (itemPositionCross + 1) * itemMargin; if (this.option("rtlEnabled")) { const offsetCorrection = (0, _size.getWidth)(this._$container); const baseItemWidth = this.option("baseItemWidth"); const itemPositionX = itemPosition.left; const offsetPosition = itemPositionX * baseItemWidth; const itemBaseOffset = baseItemWidth + itemMargin; const itemWidth = itemBaseOffset * item.widthRatio; const subItemMargins = itemPositionX * itemMargin; cssProps.left = offsetCorrection - (offsetPosition + itemWidth + subItemMargins) } this._itemElements().eq(item.index).css(cssProps) } _moveFocus(location) { const FOCUS_LEFT = this.option("rtlEnabled") ? "right" : "left"; const FOCUS_RIGHT = this.option("rtlEnabled") ? "left" : "right"; const { direction: direction, focusedElement: focusedElement } = this.option(); const horizontalDirection = "horizontal" === direction; const cells = this._cells; const index = (0, _renderer.default)(focusedElement).index(); let targetCol = this._itemsPositions[index].left; let targetRow = this._itemsPositions[index].top; const colCount = (horizontalDirection ? cells : cells[0]).length; const rowCount = (horizontalDirection ? cells[0] : cells).length; const getCell = function(col, row) { if (horizontalDirection) { return cells[col][row] } return cells[row][col] }; switch (location) { case "pageup": case "up": while (targetRow > 0 && index === getCell(targetCol, targetRow)) { targetRow-- } if (targetRow < 0) { targetRow = 0 } break; case "pagedown": case "down": while (targetRow < rowCount && index === getCell(targetCol, targetRow)) { targetRow++ } if (targetRow === rowCount) { targetRow = rowCount - 1 } break; case FOCUS_RIGHT: while (targetCol < colCount && index === getCell(targetCol, targetRow)) { targetCol++ } if (targetCol === colCount) { targetCol = colCount - 1 } break; case FOCUS_LEFT: while (targetCol >= 0 && index === getCell(targetCol, targetRow)) { targetCol-- } if (targetCol < 0) { targetCol = 0 } break; default: super._moveFocus.apply(this, arguments); return } const newTargetIndex = getCell(targetCol, targetRow); if (!(0, _type.isDefined)(newTargetIndex)) { return } const $newTarget = this._itemElements().eq(newTargetIndex); this.option("focusedElement", (0, _element.getPublicElement)($newTarget)); this._scrollToItem($newTarget) } _scrollToItem($itemElement) { if (!$itemElement.length) { return } const config = this._config; const outerMainGetter = "width" === config.mainDimension ? _size.getOuterWidth : _size.getOuterHeight; const itemMargin = this.option("itemMargin"); const itemPosition = $itemElement.position()[config.mainPosition]; const itemDimension = outerMainGetter($itemElement); const itemTail = itemPosition + itemDimension; const scrollPosition = this.scrollPosition(); const clientWidth = outerMainGetter(this.$element()); if (scrollPosition <= itemPosition && itemTail <= scrollPosition + clientWidth) { return } if (scrollPosition > itemPosition) { this._scrollView.scrollTo(itemPosition - itemMargin) } else { this._scrollView.scrollTo(itemPosition + itemDimension - clientWidth + itemMargin) } } _optionChanged(args) { switch (args.name) { case "items": super._optionChanged(args); this._renderGeometry(); this._updateScrollView(); break; case "showScrollbar": this._initScrollView(); break; case "disabled": this._scrollView.option("disabled", args.value); super._optionChanged(args); break; case "baseItemWidth": case "baseItemHeight": case "itemMargin": this._renderGeometry(); break; case "width": case "height": super._optionChanged(args); this._renderGeometry(); this._scrollView.option(args.name, args.value); this._updateScrollView(); break; case "direction": this._renderGeometry(); this._updateScrollView(); break; case "indicateLoading": this._hideLoadingIfLoadIndicationOff(); break; default: super._optionChanged(args) } } scrollPosition() { return this._scrollView.scrollOffset()[this._config.mainPosition] } }(0, _component_registrator.default)("dxTileView", TileView); exports.default = TileView }, 3504: /*!************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/ui/m_tooltip.js ***! \************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _component_registrator = _interopRequireDefault(__webpack_require__( /*! ../../core/component_registrator */ 92848)); var _guid = _interopRequireDefault(__webpack_require__( /*! ../../core/guid */ 19427)); var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../core/renderer */ 64553)); var _type = __webpack_require__( /*! ../../core/utils/type */ 11528); var _ui = _interopRequireDefault(__webpack_require__( /*! ../../ui/popover/ui.popover */ 98894)); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } function _extends() { return _extends = Object.assign ? Object.assign.bind() : function(n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) { ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]) } } return n }, _extends.apply(null, arguments) } class Tooltip extends _ui.default { _getDefaultOptions() { return _extends({}, super._getDefaultOptions(), { toolbarItems: [], showCloseButton: false, enableBodyScroll: true, showTitle: false, title: null, titleTemplate: null, onTitleRendered: null, bottomTemplate: null, preventScrollEvents: false, propagateOutsideClick: true }) } _render() { this.$element().addClass("dx-tooltip"); this.$wrapper().addClass("dx-tooltip-wrapper"); super._render() } _renderContent() { super._renderContent(); this._toggleAriaAttributes() } _toggleAriaDescription(showing) { const { target: target } = this.option(); const $target = (0, _renderer.default)(target); const label = showing ? this._contentId : void 0; if (!(0, _type.isWindow)($target.get(0))) { this.setAria("describedby", label, $target) } } _toggleAriaAttributes() { this._contentId = `dx-${new _guid.default}`; this.$overlayContent().attr({ id: this._contentId }); this._toggleAriaDescription(true) } }(0, _component_registrator.default)("dxTooltip", Tooltip); exports.default = Tooltip }, 37062: /*!**************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/ui/m_track_bar.js ***! \**************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _animation = __webpack_require__( /*! ../../common/core/animation */ 16826); var _component_registrator = _interopRequireDefault(__webpack_require__( /*! ../../core/component_registrator */ 92848)); var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../core/renderer */ 64553)); var _window = __webpack_require__( /*! ../../core/utils/window */ 3104); var _editor = _interopRequireDefault(__webpack_require__( /*! ../ui/editor/editor */ 24768)); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } function _extends() { return _extends = Object.assign ? Object.assign.bind() : function(n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) { ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]) } } return n }, _extends.apply(null, arguments) } class TrackBar extends _editor.default { _getDefaultOptions() { return _extends({}, super._getDefaultOptions(), { min: 0, max: 100, value: 0 }) } _initMarkup() { this.$element().addClass("dx-trackbar"); this._renderWrapper(); this._renderContainer(); this._renderRange(); this._renderValue(); this._setRangeStyles(); super._initMarkup() } _render() { super._render(); this._setRangeStyles(this._rangeStylesConfig()) } _renderWrapper() { this._$wrapper = (0, _renderer.default)("<div>").addClass("dx-trackbar-wrapper").appendTo(this.$element()) } _renderContainer() { this._$bar = (0, _renderer.default)("<div>").addClass("dx-trackbar-container").appendTo(this._$wrapper) } _renderRange() { this._$range = (0, _renderer.default)("<div>").addClass("dx-trackbar-range").appendTo(this._$bar) } _renderValue() { const { value: val, min: min, max: max } = this.option(); if (min > max) { return } if (val < min) { this.option("value", min); this._currentRatio = 0; return } if (val > max) { this.option("value", max); this._currentRatio = 1; return } const ratio = min === max ? 0 : (val - min) / (max - min); if (!this._needPreventAnimation) { this._setRangeStyles({ width: 100 * ratio + "%" }) } this.setAria({ valuemin: this.option("min"), valuemax: max, valuenow: val }); this._currentRatio = ratio } _rangeStylesConfig() { return { width: 100 * this._currentRatio + "%" } } _setRangeStyles(options) { _animation.fx.stop(this._$range); if (!options) { this._$range.css({ width: 0 }); return } if (this._needPreventAnimation || !(0, _window.hasWindow)()) { return } _animation.fx.animate(this._$range, { type: "custom", duration: 100, to: options }) } _optionChanged(args) { switch (args.name) { case "value": this._renderValue(); super._optionChanged(args); break; case "max": case "min": this._renderValue(); break; default: super._optionChanged(args) } } _dispose() { _animation.fx.stop(this._$range); super._dispose() } }(0, _component_registrator.default)("dxTrackBar", TrackBar); exports.default = TrackBar }, 79697: /*!**********************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/ui/m_validation_engine.js ***! \**********************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _message = _interopRequireDefault(__webpack_require__( /*! ../../common/core/localization/message */ 4671)); var _number = _interopRequireDefault(__webpack_require__( /*! ../../common/core/localization/number */ 52771)); var _class = _interopRequireDefault(__webpack_require__( /*! ../../core/class */ 55620)); var _errors = _interopRequireDefault(__webpack_require__( /*! ../../core/errors */ 87129)); var _events_strategy = __webpack_require__( /*! ../../core/events_strategy */ 2607); var _common = __webpack_require__( /*! ../../core/utils/common */ 17781); var _deferred = __webpack_require__( /*! ../../core/utils/deferred */ 87739); var _extend = __webpack_require__( /*! ../../core/utils/extend */ 52576); var _iterator = __webpack_require__( /*! ../../core/utils/iterator */ 21274); var _type = __webpack_require__( /*! ../../core/utils/type */ 11528); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } const EMAIL_VALIDATION_REGEX = /^[\d\w.+_-]+@[\d\w._-]+\.[\w]+$/i; const STATUS_valid = "valid", STATUS_invalid = "invalid", STATUS_pending = "pending"; class BaseRuleValidator { constructor() { this.NAME = "base" } defaultMessage(value) { return _message.default.getFormatter(`validation-${this.NAME}`)(value) } defaultFormattedMessage(value) { return _message.default.getFormatter(`validation-${this.NAME}-formatted`)(value) } _isValueEmpty(value) { return !rulesValidators.required.validate(value, {}) } validate(value, rule) { const valueArray = Array.isArray(value) ? value : [value]; let result = true; if (valueArray.length) { valueArray.every((itemValue => { result = this._validate(itemValue, rule); return result })) } else { result = this._validate(null, rule) } return result } } class CustomRuleValidator extends BaseRuleValidator { constructor() { super(); this.NAME = "custom" } validate(value, rule) { if (rule.ignoreEmptyValue && this._isValueEmpty(value)) { return true } const { validator: validator } = rule; const dataGetter = validator && (0, _type.isFunction)(validator.option) && validator.option("dataGetter"); const extraParams = (0, _type.isFunction)(dataGetter) && dataGetter(); const params = { value: value, validator: validator, rule: rule }; if (extraParams) { (0, _extend.extend)(params, extraParams) } return rule.validationCallback(params) } } const rulesValidators = { required: new class extends BaseRuleValidator { constructor() { super(); this.NAME = "required" } _validate(value, rule) { if (!(0, _type.isDefined)(value)) { return false } if (false === value) { return false } value = String(value); if (rule.trim || !(0, _type.isDefined)(rule.trim)) { value = value.trim() } return "" !== value } }, numeric: new class extends BaseRuleValidator { constructor() { super(); this.NAME = "numeric" } _validate(value, rule) { if (false !== rule.ignoreEmptyValue && this._isValueEmpty(value)) { return true } if (rule.useCultureSettings && (0, _type.isString)(value)) { return !isNaN(_number.default.parse(value)) } return (0, _type.isNumeric)(value) } }, range: new class extends BaseRuleValidator { constructor() { super(); this.NAME = "range" } _validate(value, rule) { if (false !== rule.ignoreEmptyValue && this._isValueEmpty(value)) { return true } const validNumber = rulesValidators.numeric.validate(value, rule); const validValue = (0, _type.isDefined)(value) && "" !== value; const number = validNumber ? parseFloat(value) : validValue && value.valueOf(); const { min: min } = rule; const { max: max } = rule; if (!(validNumber || (0, _type.isDate)(value)) && !validValue) { return false } if ((0, _type.isDefined)(min)) { if ((0, _type.isDefined)(max)) { return number >= min && number <= max } return number >= min } if ((0, _type.isDefined)(max)) { return number <= max } throw _errors.default.Error("E0101") } }, stringLength: new class extends BaseRuleValidator { constructor() { super(); this.NAME = "stringLength" } _validate(value, rule) { value = String(value ?? ""); if (rule.trim || !(0, _type.isDefined)(rule.trim)) { value = value.trim() } if (rule.ignoreEmptyValue && this._isValueEmpty(value)) { return true } return rulesValidators.range.validate(value.length, (0, _extend.extend)({}, rule)) } }, custom: new CustomRuleValidator, async: new class extends CustomRuleValidator { constructor() { super(); this.NAME = "async" } validate(value, rule) { if (!(0, _type.isDefined)(rule.reevaluate)) { (0, _extend.extend)(rule, { reevaluate: true }) } if (rule.ignoreEmptyValue && this._isValueEmpty(value)) { return true } const { validator: validator } = rule; const dataGetter = validator && (0, _type.isFunction)(validator.option) && validator.option("dataGetter"); const extraParams = (0, _type.isFunction)(dataGetter) && dataGetter(); const params = { value: value, validator: validator, rule: rule }; if (extraParams) { (0, _extend.extend)(params, extraParams) } const callbackResult = rule.validationCallback(params); if (!(0, _type.isPromise)(callbackResult)) { throw _errors.default.Error("E0103") } return this._getWrappedPromise((0, _deferred.fromPromise)(callbackResult).promise()) } _getWrappedPromise(promise) { const deferred = (0, _deferred.Deferred)(); promise.then((res => { deferred.resolve(res) }), (err => { const res = { isValid: false }; if ((0, _type.isDefined)(err)) { if ((0, _type.isString)(err)) { res.message = err } else if ((0, _type.isObject)(err) && (0, _type.isDefined)(err.message) && (0, _type.isString)(err.message)) { res.message = err.message } } deferred.resolve(res) })); return deferred.promise() } }, compare: new class extends BaseRuleValidator { constructor() { super(); this.NAME = "compare" } _validate(value, rule) { if (!rule.comparisonTarget) { throw _errors.default.Error("E0102") } if (rule.ignoreEmptyValue && this._isValueEmpty(value)) { return true }(0, _extend.extend)(rule, { reevaluate: true }); const otherValue = rule.comparisonTarget(); const type = rule.comparisonType || "=="; switch (type) { case "==": return value == otherValue; case "!=": return value != otherValue; case "===": return value === otherValue; case "!==": return value !== otherValue; case ">": return value > otherValue; case ">=": return value >= otherValue; case "<": return value < otherValue; case "<=": return value <= otherValue } } }, pattern: new class extends BaseRuleValidator { constructor() { super(); this.NAME = "pattern" } _validate(value, rule) { if (false !== rule.ignoreEmptyValue && this._isValueEmpty(value)) { return true } let { pattern: pattern } = rule; if ((0, _type.isString)(pattern)) { pattern = new RegExp(pattern) } return pattern.test(value) } }, email: new class extends BaseRuleValidator { constructor() { super(); this.NAME = "email" } _validate(value, rule) { if (false !== rule.ignoreEmptyValue && this._isValueEmpty(value)) { return true } return rulesValidators.pattern.validate(value, (0, _extend.extend)({}, rule, { pattern: EMAIL_VALIDATION_REGEX })) } } }; class GroupConfig extends(_class.default.inherit({})) { ctor(group, isRemovable) { this.group = group; this.validators = []; this._isRemovable = isRemovable; this._pendingValidators = []; this._onValidatorStatusChanged = this._onValidatorStatusChanged.bind(this); this._resetValidationInfo(); this._eventsStrategy = new _events_strategy.EventsStrategy(this) } validate() { const result = { isValid: true, brokenRules: [], validators: [], status: STATUS_valid, complete: null }; this._unsubscribeFromAllChangeEvents(); this._pendingValidators = []; this._resetValidationInfo(); (0, _iterator.each)(this.validators, ((_, validator) => { const validatorResult = validator.validate(); result.isValid = result.isValid && validatorResult.isValid; if (validatorResult.brokenRules) { result.brokenRules = result.brokenRules.concat(validatorResult.brokenRules) } result.validators.push(validator); if (validatorResult.status === STATUS_pending) { this._addPendingValidator(validator) } this._subscribeToChangeEvents(validator) })); if (this._pendingValidators.length) { result.status = STATUS_pending } else { result.status = result.isValid ? STATUS_valid : STATUS_invalid; this._unsubscribeFromAllChangeEvents(); this._raiseValidatedEvent(result) } this._updateValidationInfo(result); return (0, _extend.extend)({}, this._validationInfo.result) } _subscribeToChangeEvents(validator) { validator.on("validating", this._onValidatorStatusChanged); validator.on("validated", this._onValidatorStatusChanged) } _unsubscribeFromChangeEvents(validator) { validator.off("validating", this._onValidatorStatusChanged); validator.off("validated", this._onValidatorStatusChanged) } _unsubscribeFromAllChangeEvents() { (0, _iterator.each)(this.validators, ((_, validator) => { this._unsubscribeFromChangeEvents(validator) })) } _updateValidationInfo(result) { this._validationInfo.result = result; if (result.status !== STATUS_pending) { return } if (!this._validationInfo.deferred) { this._validationInfo.deferred = (0, _deferred.Deferred)(); this._validationInfo.result.complete = this._validationInfo.deferred.promise() } } _addPendingValidator(validator) { const foundValidator = (0, _common.grep)(this._pendingValidators, (val => val === validator))[0]; if (!foundValidator) { this._pendingValidators.push(validator) } } _removePendingValidator(validator) { const index = this._pendingValidators.indexOf(validator); if (index >= 0) { this._pendingValidators.splice(index, 1) } } _orderBrokenRules(brokenRules) { let orderedRules = []; (0, _iterator.each)(this.validators, ((_, validator) => { const foundRules = (0, _common.grep)(brokenRules, (rule => rule.validator === validator)); if (foundRules.length) { orderedRules = orderedRules.concat(foundRules) } })); return orderedRules } _updateBrokenRules(result) { if (!this._validationInfo.result) { return } let { brokenRules: brokenRules } = this._validationInfo.result; const rules = (0, _common.grep)(brokenRules, (rule => rule.validator !== result.validator)); if (result.brokenRules) { brokenRules = rules.concat(result.brokenRules) } this._validationInfo.result.brokenRules = this._orderBrokenRules(brokenRules) } _onValidatorStatusChanged(result) { if (result.status === STATUS_pending) { this._addPendingValidator(result.validator); return } this._resolveIfComplete(result) } _resolveIfComplete(result) { this._removePendingValidator(result.validator); this._updateBrokenRules(result); if (!this._pendingValidators.length) { this._unsubscribeFromAllChangeEvents(); if (!this._validationInfo.result) { return } this._validationInfo.result.status = 0 === this._validationInfo.result.brokenRules.length ? STATUS_valid : STATUS_invalid; this._validationInfo.result.isValid = this._validationInfo.result.status === STATUS_valid; const res = (0, _extend.extend)({}, this._validationInfo.result, { complete: null }); const { deferred: deferred } = this._validationInfo; this._validationInfo.deferred = null; this._raiseValidatedEvent(res); deferred && setTimeout((() => { deferred.resolve(res) })) } } _raiseValidatedEvent(result) { this._eventsStrategy.fireEvent("validated", [result]) } _resetValidationInfo() { this._validationInfo = { result: null, deferred: null } } _synchronizeValidationInfo() { if (this._validationInfo.result) { this._validationInfo.result.validators = this.validators } } removeRegisteredValidator(validator) { const index = this.validators.indexOf(validator); if (index > -1) { this.validators.splice(index, 1); this._synchronizeValidationInfo(); this._resolveIfComplete({ validator: validator }) } } registerValidator(validator) { if (!this.validators.includes(validator)) { this.validators.push(validator); this._synchronizeValidationInfo() } } reset() { (0, _iterator.each)(this.validators, ((_, validator) => { validator.reset() })); this._pendingValidators = []; this._resetValidationInfo() } on(eventName, eventHandler) { this._eventsStrategy.on(eventName, eventHandler); return this } off(eventName, eventHandler) { this._eventsStrategy.off(eventName, eventHandler); return this } } const ValidationEngine = { groups: [], getGroupConfig(group) { const result = (0, _common.grep)(this.groups, (config => config.group === group)); if (result.length) { return result[0] } }, findGroup($element, model) { var _$element$data; const hasValidationGroup = null === (_$element$data = $element.data()) || void 0 === _$element$data || null === (_$element$data = _$element$data.dxComponents) || void 0 === _$element$data ? void 0 : _$element$data.includes("dxValidationGroup"); const validationGroup = hasValidationGroup && $element.dxValidationGroup("instance"); if (validationGroup) { return validationGroup } const $dxGroup = $element.parents(".dx-validationgroup").first(); if ($dxGroup.length) { return $dxGroup.dxValidationGroup("instance") } return model }, initGroups() { this.groups = []; this.addGroup(void 0, false) }, addGroup(group) { let isRemovable = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : true; let config = this.getGroupConfig(group); if (!config) { config = new GroupConfig(group, isRemovable); this.groups.push(config) } return config }, removeGroup(group) { const config = this.getGroupConfig(group); const index = this.groups.indexOf(config); if (index > -1) { this.groups.splice(index, 1) } return config }, _setDefaultMessage(info) { const { rule: rule, validator: validator, name: name } = info; if (!(0, _type.isDefined)(rule.message)) { if (validator.defaultFormattedMessage && (0, _type.isDefined)(name)) { rule.message = validator.defaultFormattedMessage(name) } else { rule.message = validator.defaultMessage() } } }, _addBrokenRule(info) { const { result: result, rule: rule } = info; if (!result.brokenRule) { result.brokenRule = rule } if (!result.brokenRules) { result.brokenRules = [] } result.brokenRules.push(rule) }, validate(value, rules, name) { var _rules$; let result = { name: name, value: value, brokenRule: null, brokenRules: null, isValid: true, validationRules: rules, pendingRules: null, status: STATUS_valid, complete: null }; const validator = null === rules || void 0 === rules || null === (_rules$ = rules[0]) || void 0 === _rules$ ? void 0 : _rules$.validator; const asyncRuleItems = []; (0, _iterator.each)(rules || [], ((_, rule) => { const ruleValidator = rulesValidators[rule.type]; let ruleValidationResult; if (ruleValidator) { if ((0, _type.isDefined)(rule.isValid) && rule.value === value && !rule.reevaluate) { if (!rule.isValid) { result.isValid = false; this._addBrokenRule({ result: result, rule: rule }); return false } return true } rule.value = value; if ("async" === rule.type) { asyncRuleItems.push({ rule: rule, ruleValidator: ruleValidator }); return true } ruleValidationResult = ruleValidator.validate(value, rule); rule.isValid = ruleValidationResult; if (!ruleValidationResult) { result.isValid = false; this._setDefaultMessage({ rule: rule, validator: ruleValidator, name: name }); this._addBrokenRule({ result: result, rule: rule }) } if (!rule.isValid) { return false } } else { throw _errors.default.Error("E0100") } })); if (result.isValid && !result.brokenRules && asyncRuleItems.length) { result = this._validateAsyncRules({ value: value, items: asyncRuleItems, result: result, name: name }) } this._synchronizeGroupValidationInfo(validator, result); result.status = result.pendingRules ? STATUS_pending : result.isValid ? STATUS_valid : STATUS_invalid; return result }, _synchronizeGroupValidationInfo(validator, result) { if (!validator) { return } const groupConfig = ValidationEngine.getGroupConfig(validator._validationGroup); groupConfig._updateBrokenRules.call(groupConfig, { validator: validator, brokenRules: result.brokenRules ?? [] }) }, _validateAsyncRules(_ref) { let { result: result, value: value, items: items, name: name } = _ref; const asyncResults = []; (0, _iterator.each)(items, ((_, item) => { const validateResult = item.ruleValidator.validate(value, item.rule); if (!(0, _type.isPromise)(validateResult)) { this._updateRuleConfig({ rule: item.rule, ruleResult: this._getPatchedRuleResult(validateResult), validator: item.ruleValidator, name: name }) } else { if (!result.pendingRules) { result.pendingRules = [] } result.pendingRules.push(item.rule); const asyncResult = validateResult.then((res => { const ruleResult = this._getPatchedRuleResult(res); this._updateRuleConfig({ rule: item.rule, ruleResult: ruleResult, validator: item.ruleValidator, name: name }); return ruleResult })); asyncResults.push(asyncResult) } })); if (asyncResults.length) { result.complete = Promise.all(asyncResults).then((values => this._getAsyncRulesResult({ result: result, values: values }))) } return result }, _updateRuleConfig(_ref2) { let { rule: rule, ruleResult: ruleResult, validator: validator, name: name } = _ref2; rule.isValid = ruleResult.isValid; if (!ruleResult.isValid) { if ((0, _type.isDefined)(ruleResult.message) && (0, _type.isString)(ruleResult.message) && ruleResult.message.length) { rule.message = ruleResult.message } else { this._setDefaultMessage({ rule: rule, validator: validator, name: name }) } } }, _getPatchedRuleResult(ruleResult) { let result; if ((0, _type.isObject)(ruleResult)) { result = (0, _extend.extend)({}, ruleResult); if (!(0, _type.isDefined)(result.isValid)) { result.isValid = true } } else { result = { isValid: (0, _type.isBoolean)(ruleResult) ? ruleResult : true } } return result }, _getAsyncRulesResult(_ref3) { let { values: values, result: result } = _ref3; (0, _iterator.each)(values, ((index, val) => { if (false === val.isValid) { result.isValid = val.isValid; const rule = result.pendingRules[index]; this._addBrokenRule({ result: result, rule: rule }) } })); result.pendingRules = null; result.complete = null; result.status = result.isValid ? STATUS_valid : STATUS_invalid; return result }, registerValidatorInGroup(group, validator) { const groupConfig = ValidationEngine.addGroup(group); groupConfig.registerValidator.call(groupConfig, validator) }, removeRegisteredValidator(group, validator) { const config = ValidationEngine.getGroupConfig(group); if (config) { config.removeRegisteredValidator.call(config, validator); const validatorsInGroup = config.validators; const isRemovable = config._isRemovable; const shouldRemoveGroup = 0 === validatorsInGroup.length && isRemovable; if (shouldRemoveGroup) { this.removeGroup(group) } } }, initValidationOptions(options) { const initedOptions = {}; if (options) { const syncOptions = ["isValid", "validationStatus", "validationError", "validationErrors"]; syncOptions.forEach((prop => { if (prop in options) { (0, _extend.extend)(initedOptions, this.synchronizeValidationOptions({ name: prop, value: options[prop] }, options)) } })) } return initedOptions }, synchronizeValidationOptions(_ref4, options) { let { name: name, value: value } = _ref4; switch (name) { case "validationStatus": { const isValid = value === STATUS_valid || value === STATUS_pending; return options.isValid !== isValid ? { isValid: isValid } : {} } case "isValid": { const { validationStatus: validationStatus } = options; let newStatus = validationStatus; if (value && validationStatus === STATUS_invalid) { newStatus = STATUS_valid } else if (!value && validationStatus !== STATUS_invalid) { newStatus = STATUS_invalid } return newStatus !== validationStatus ? { validationStatus: newStatus } : {} } case "validationErrors": { const validationError = !(null !== value && void 0 !== value && value.length) ? null : value[0]; return options.validationError !== validationError ? { validationError: validationError } : {} } case "validationError": { const { validationErrors: validationErrors } = options; if (!value && validationErrors) { return { validationErrors: null } } if (value && !validationErrors) { return { validationErrors: [value] } } if (value && validationErrors && value !== validationErrors[0]) { validationErrors[0] = value; return { validationErrors: validationErrors.slice() } } } } return {} }, validateGroup(group) { const groupConfig = ValidationEngine.getGroupConfig(group); if (!groupConfig) { throw _errors.default.Error("E0110") } return groupConfig.validate() }, resetGroup(group) { const groupConfig = ValidationEngine.getGroupConfig(group); if (!groupConfig) { throw _errors.default.Error("E0110") } return groupConfig.reset() } }; ValidationEngine.initGroups(); exports.default = ValidationEngine }, 89172: /*!*********************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/ui/m_validation_group.js ***! \*********************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _component_registrator = _interopRequireDefault(__webpack_require__( /*! ../../core/component_registrator */ 92848)); var _dom_component = _interopRequireDefault(__webpack_require__( /*! ../../core/dom_component */ 97832)); var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../core/renderer */ 64553)); var _m_validation_engine = _interopRequireDefault(__webpack_require__( /*! ./m_validation_engine */ 79697)); var _m_validation_summary = _interopRequireDefault(__webpack_require__( /*! ./m_validation_summary */ 31139)); var _m_validator = _interopRequireDefault(__webpack_require__( /*! ./m_validator */ 71449)); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } class ValidationGroup extends _dom_component.default { _getDefaultOptions() { return super._getDefaultOptions() } _init() { super._init(); _m_validation_engine.default.addGroup(this, false) } _initMarkup() { const $element = this.$element(); $element.addClass("dx-validationgroup"); $element.find(".dx-validator").each(((_, validatorContainer) => { _m_validator.default.getInstance((0, _renderer.default)(validatorContainer))._initGroupRegistration() })); $element.find(".dx-validationsummary").each(((_, summaryContainer) => { _m_validation_summary.default.getInstance((0, _renderer.default)(summaryContainer)).refreshValidationGroup() })); super._initMarkup() } validate() { return _m_validation_engine.default.validateGroup(this) } reset() { return _m_validation_engine.default.resetGroup(this) } _dispose() { _m_validation_engine.default.removeGroup(this); this.$element().removeClass("dx-validationgroup"); super._dispose() } _useTemplates() { return false } }(0, _component_registrator.default)("dxValidationGroup", ValidationGroup); exports.default = ValidationGroup }, 22864: /*!***********************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/ui/m_validation_message.js ***! \***********************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _component_registrator = _interopRequireDefault(__webpack_require__( /*! ../../core/component_registrator */ 92848)); var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../core/renderer */ 64553)); var _position = __webpack_require__( /*! ../../core/utils/position */ 41639); var _size = __webpack_require__( /*! ../../core/utils/size */ 57653); var _string = __webpack_require__( /*! ../../core/utils/string */ 54497); var _m_overlay = _interopRequireDefault(__webpack_require__( /*! ../ui/overlay/m_overlay */ 68632)); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } function _extends() { return _extends = Object.assign ? Object.assign.bind() : function(n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) { ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]) } } return n }, _extends.apply(null, arguments) } class ValidationMessage extends _m_overlay.default { _getDefaultOptions() { return _extends({}, super._getDefaultOptions(), { integrationOptions: {}, templatesRenderAsynchronously: false, shading: false, width: "auto", height: "auto", hideOnOutsideClick: false, animation: null, visible: true, propagateOutsideClick: true, _checkParentVisibility: false, rtlEnabled: false, contentTemplate: this._renderInnerHtml, maxWidth: "100%", container: this.$element(), mode: "auto", preventScrollEvents: false, positionSide: "top", offset: { h: 0, v: 0 } }) } _init() { super._init(); this.updateMaxWidth(); this._updatePosition() } _initMarkup() { super._initMarkup(); this._ensureMessageNotEmpty(); this._updatePositionByTarget(); this._toggleModeClass(); this._updateContentId() } _updatePositionByTarget() { const { target: target } = this.option(); this.option("position.of", target) } _ensureMessageNotEmpty() { this._textMarkup = this._getTextMarkup(); const shouldShowMessage = this.option("visible") && this._textMarkup; this._toggleVisibilityClasses(shouldShowMessage) } _toggleVisibilityClasses(visible) { if (visible) { this.$element().addClass("dx-invalid-message"); this.$wrapper().addClass("dx-invalid-message") } else { this.$element().removeClass("dx-invalid-message"); this.$wrapper().removeClass("dx-invalid-message") } } _updateContentId() { const { container: container, contentId: contentId } = this.option(); const id = contentId ?? (0, _renderer.default)(container).attr("aria-describedby"); this.$content().addClass("dx-invalid-message-content").attr("id", id) } _renderInnerHtml(element) { const $element = element && (0, _renderer.default)(element); null === $element || void 0 === $element || $element.html(this._textMarkup) } _getTextMarkup() { const validationErrors = this.option("validationErrors") ?? []; let validationErrorMessage = ""; validationErrors.forEach((err => { const separator = validationErrorMessage ? "<br />" : ""; validationErrorMessage += separator + (0, _string.encodeHtml)((null === err || void 0 === err ? void 0 : err.message) ?? "") })); return validationErrorMessage } _toggleModeClass() { const { mode: mode } = this.option(); this.$wrapper().toggleClass("dx-invalid-message-auto", "auto" === mode).toggleClass("dx-invalid-message-always", "always" === mode) } updateMaxWidth() { const target = this.option("target"); const targetWidth = (0, _size.getOuterWidth)(target); let maxWidth = "100%"; if (targetWidth) { maxWidth = Math.max(targetWidth, 100) } this.option({ maxWidth: maxWidth }) } _getPositionsArray(positionSide, rtlSide) { switch (positionSide) { case "top": return [`${rtlSide} bottom`, `${rtlSide} top`]; case "left": return ["right", "left"]; case "right": return ["left", "right"]; default: return [`${rtlSide} top`, `${rtlSide} bottom`] } } _updatePosition() { const { positionSide: positionSide, rtlEnabled: rtlEnabled, offset: componentOffset, boundary: boundary } = this.option(); const rtlSide = (0, _position.getDefaultAlignment)(rtlEnabled); const positions = this._getPositionsArray(positionSide, rtlSide); const offset = _extends({}, componentOffset); this.$element().addClass(`dx-invalid-message-${positionSide}`); if (rtlEnabled && "left" !== positionSide && "right" !== positionSide) { offset.h = -offset.h } if ("top" === positionSide) { offset.v = -offset.v } if ("left" === positionSide) { offset.h = -offset.h } this.option("position", { offset: offset, boundary: boundary, my: positions[0], at: positions[1], collision: "none flip" }) } _optionChanged(args) { const { name: name, value: value, previousValue: previousValue } = args; switch (name) { case "target": this._updatePositionByTarget(); this.updateMaxWidth(); super._optionChanged(args); break; case "boundary": this.option("position.boundary", value); break; case "mode": this._toggleModeClass(); break; case "rtlEnabled": case "offset": case "positionSide": this.$element().removeClass(`dx-invalid-message-${previousValue}`); this._updatePosition(); break; case "container": this._updateContentId(); super._optionChanged(args); break; case "contentId": this._updateContentId(); break; case "validationErrors": this._ensureMessageNotEmpty(); this._renderInnerHtml(this.$content()); break; default: super._optionChanged(args) } } }(0, _component_registrator.default)("dxValidationMessage", ValidationMessage); exports.default = ValidationMessage }, 31139: /*!***********************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/ui/m_validation_summary.js ***! \***********************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _events_engine = _interopRequireDefault(__webpack_require__( /*! ../../common/core/events/core/events_engine */ 92774)); var _component_registrator = _interopRequireDefault(__webpack_require__( /*! ../../core/component_registrator */ 92848)); var _common = __webpack_require__( /*! ../../core/utils/common */ 17781); var _extend = __webpack_require__( /*! ../../core/utils/extend */ 52576); var _iterator = __webpack_require__( /*! ../../core/utils/iterator */ 21274); var _m_collection_widget = _interopRequireDefault(__webpack_require__( /*! ../ui/collection/m_collection_widget.edit */ 3391)); var _m_validation_engine = _interopRequireDefault(__webpack_require__( /*! ./m_validation_engine */ 79697)); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } function _extends() { return _extends = Object.assign ? Object.assign.bind() : function(n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) { ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]) } } return n }, _extends.apply(null, arguments) } class ValidationSummary extends _m_collection_widget.default { _getDefaultOptions() { return _extends({}, super._getDefaultOptions(), { focusStateEnabled: false, noDataText: null }) } _setOptionsByReference() { super._setOptionsByReference(); (0, _extend.extend)(this._optionsByReference, { validationGroup: true }) } _init() { super._init(); this._initGroupRegistration() } _initGroupRegistration() { const $element = this.$element(); const { validationGroup: validationGroup } = this.option(); const group = validationGroup || _m_validation_engine.default.findGroup($element, this._modelByElement($element)); const groupConfig = _m_validation_engine.default.addGroup(group, true); this._unsubscribeGroup(); this._groupWasInit = true; this._validationGroup = group; this.groupSubscription = this._groupValidationHandler.bind(this); groupConfig.on("validated", this.groupSubscription) } _unsubscribeGroup() { const groupConfig = _m_validation_engine.default.getGroupConfig(this._validationGroup); null === groupConfig || void 0 === groupConfig || groupConfig.off("validated", this.groupSubscription) } _getOrderedItems(validators, items) { let orderedItems = []; (0, _iterator.each)(validators, ((_, validator) => { const foundItems = (0, _common.grep)(items, (item => { if (item.validator === validator) { return true } })); if (foundItems.length) { orderedItems = orderedItems.concat(foundItems) } })); return orderedItems } _groupValidationHandler(params) { const items = this._getOrderedItems(params.validators, (0, _iterator.map)(params.brokenRules, (rule => ({ text: rule.message, validator: rule.validator, index: rule.index })))); this.validators = params.validators; (0, _iterator.each)(this.validators, ((_, validator) => { if (validator._validationSummary !== this) { let handler = this._itemValidationHandler.bind(this); const disposingHandler = function() { validator.off("validated", handler); validator._validationSummary = null; handler = null }; validator.on("validated", handler); validator.on("disposing", disposingHandler); validator._validationSummary = this } })); this.option("items", items) } _itemValidationHandler(_ref) { let { isValid: isValid, validator: validator, brokenRules: brokenRules } = _ref; let { items: items } = this.option(); let itemsChanged = false; let itemIndex = 0; while (itemIndex < items.length) { const item = items[itemIndex]; if (item.validator === validator) { const foundRule = (0, _common.grep)(brokenRules || [], (rule => rule.index === item.index))[0]; if (isValid || !foundRule) { items.splice(itemIndex, 1); itemsChanged = true; continue } if (foundRule.message !== item.text) { item.text = foundRule.message; itemsChanged = true } } itemIndex++ }(0, _iterator.each)(brokenRules, ((_, rule) => { const foundItem = (0, _common.grep)(items, (item => item.validator === validator && item.index === rule.index))[0]; if (!foundItem) { items.push({ text: rule.message, validator: validator, index: rule.index }); itemsChanged = true } })); if (itemsChanged) { items = this._getOrderedItems(this.validators, items); this.option("items", items) } } _initMarkup() { this.$element().addClass("dx-validationsummary"); super._initMarkup() } _optionChanged(args) { if ("validationGroup" === args.name) { this._initGroupRegistration() } else { super._optionChanged(args) } } _itemClass() { return "dx-validationsummary-item" } _itemDataKey() { return "dx-validationsummary-item-data" } _postprocessRenderItem(params) { _events_engine.default.on(params.itemElement, "click", (() => { var _params$itemData$vali, _params$itemData$vali2; null === (_params$itemData$vali = params.itemData.validator) || void 0 === _params$itemData$vali || null === (_params$itemData$vali2 = _params$itemData$vali.focus) || void 0 === _params$itemData$vali2 || _params$itemData$vali2.call(_params$itemData$vali) })) } _dispose() { super._dispose(); this._unsubscribeGroup() } refreshValidationGroup() { this._initGroupRegistration() } }(0, _component_registrator.default)("dxValidationSummary", ValidationSummary); exports.default = ValidationSummary }, 71449: /*!**************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/ui/m_validator.js ***! \**************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _component_registrator = _interopRequireDefault(__webpack_require__( /*! ../../core/component_registrator */ 92848)); var _element_data = __webpack_require__( /*! ../../core/element_data */ 74663); var _guid = _interopRequireDefault(__webpack_require__( /*! ../../core/guid */ 19427)); var _callbacks = _interopRequireDefault(__webpack_require__( /*! ../../core/utils/callbacks */ 84718)); var _deferred = __webpack_require__( /*! ../../core/utils/deferred */ 87739); var _extend = __webpack_require__( /*! ../../core/utils/extend */ 52576); var _iterator = __webpack_require__( /*! ../../core/utils/iterator */ 21274); var _ui = _interopRequireDefault(__webpack_require__( /*! ../../ui/widget/ui.errors */ 35185)); var _dom_component = _interopRequireDefault(__webpack_require__( /*! ../core/widget/dom_component */ 22331)); var _m_validation_engine = _interopRequireDefault(__webpack_require__( /*! ./m_validation_engine */ 79697)); var _m_default_adapter = _interopRequireDefault(__webpack_require__( /*! ./validation/m_default_adapter */ 67618)); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } function _extends() { return _extends = Object.assign ? Object.assign.bind() : function(n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) { ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]) } } return n }, _extends.apply(null, arguments) } class Validator extends _dom_component.default { _initOptions(options) { super._initOptions.apply(this, arguments); this.option(_m_validation_engine.default.initValidationOptions(options)) } _getDefaultOptions() { return _extends({}, super._getDefaultOptions(), { validationRules: [] }) } _init() { super._init(); this._initGroupRegistration(); this.focused = (0, _callbacks.default)(); this._initAdapter(); this._validationInfo = { result: null, deferred: null, skipValidation: false } } _initGroupRegistration() { const group = this._findGroup(); if (!this._groupWasInit) { this.on("disposing", (args => { _m_validation_engine.default.removeRegisteredValidator(args.component._validationGroup, args.component) })) } if (!this._groupWasInit || this._validationGroup !== group) { _m_validation_engine.default.removeRegisteredValidator(this._validationGroup, this); this._groupWasInit = true; this._validationGroup = group; _m_validation_engine.default.registerValidatorInGroup(group, this) } } _setOptionsByReference() { super._setOptionsByReference(); (0, _extend.extend)(this._optionsByReference, { validationGroup: true }) } _getEditor() { const element = this.$element()[0]; return (0, _element_data.data)(element, "dx-validation-target") } _initAdapter() { const dxStandardEditor = this._getEditor(); let { adapter: adapter } = this.option(); if (!adapter) { if (dxStandardEditor) { var _adapter; adapter = new _m_default_adapter.default(dxStandardEditor, this); null === (_adapter = adapter) || void 0 === _adapter || null === (_adapter = _adapter.validationRequestsCallbacks) || void 0 === _adapter || _adapter.push((args => { var _this$_validationInfo; if (null !== (_this$_validationInfo = this._validationInfo) && void 0 !== _this$_validationInfo && _this$_validationInfo.skipValidation) { return } this.validate(args) })); this.option("adapter", adapter); return } throw _ui.default.Error("E0120") } const callbacks = adapter.validationRequestsCallbacks; if (callbacks) { callbacks.push((args => { this.validate(args) })) } } _toggleRTLDirection(isRtl) { var _adapter$editor; const { adapter: adapter } = this.option(); const rtlEnabled = (null === adapter || void 0 === adapter || null === (_adapter$editor = adapter.editor) || void 0 === _adapter$editor ? void 0 : _adapter$editor.option("rtlEnabled")) ?? isRtl; super._toggleRTLDirection(rtlEnabled) } _initMarkup() { this.$element().addClass("dx-validator"); super._initMarkup() } _render() { super._render(); this._toggleAccessibilityAttributes() } _toggleAccessibilityAttributes() { const dxStandardEditor = this._getEditor(); if (dxStandardEditor) { const rules = this.option("validationRules") || []; const isRequired = rules.some((_ref => { let { type: type } = _ref; return "required" === type })) || null; if (dxStandardEditor.isInitialized()) { dxStandardEditor.setAria("required", isRequired) } dxStandardEditor.option("_onMarkupRendered", (() => { dxStandardEditor.setAria("required", isRequired) })) } } _visibilityChanged(visible) { if (visible) { this._initGroupRegistration() } } _optionChanged(args) { switch (args.name) { case "validationGroup": this._initGroupRegistration(); return; case "validationRules": this._resetValidationRules(); this._toggleAccessibilityAttributes(); void 0 !== this.option("isValid") && this.validate(); return; case "adapter": this._initAdapter(); break; case "isValid": case "validationStatus": this.option(_m_validation_engine.default.synchronizeValidationOptions(args, this.option())); break; default: super._optionChanged(args) } } _getValidationRules() { if (!this._validationRules) { this._validationRules = (0, _iterator.map)(this.option("validationRules"), ((rule, index) => (0, _extend.extend)({}, rule, { validator: this, index: index }))) } return this._validationRules } _findGroup() { const $element = this.$element(); const { validationGroup: validationGroup } = this.option(); return validationGroup || _m_validation_engine.default.findGroup($element, this._modelByElement($element)) } _resetValidationRules() { delete this._validationRules } validate(args) { var _adapter$bypass, _adapter$getValue, _adapter$getCurrentVa, _this$_validationInfo2, _result$complete; const { adapter: adapter, name: name } = this.option(); const bypass = null === adapter || void 0 === adapter || null === (_adapter$bypass = adapter.bypass) || void 0 === _adapter$bypass ? void 0 : _adapter$bypass.call(adapter); const value = args && void 0 !== args.value ? args.value : null === adapter || void 0 === adapter || null === (_adapter$getValue = adapter.getValue) || void 0 === _adapter$getValue ? void 0 : _adapter$getValue.call(adapter); const currentError = null === adapter || void 0 === adapter || null === (_adapter$getCurrentVa = adapter.getCurrentValidationError) || void 0 === _adapter$getCurrentVa ? void 0 : _adapter$getCurrentVa.call(adapter); const rules = this._getValidationRules(); const currentResult = null === (_this$_validationInfo2 = this._validationInfo) || void 0 === _this$_validationInfo2 ? void 0 : _this$_validationInfo2.result; if (currentResult && "pending" === currentResult.status && currentResult.value === value) { return (0, _extend.extend)({}, currentResult) } let result; if (bypass) { result = { isValid: true, status: "valid" } } else if (null !== currentError && void 0 !== currentError && currentError.editorSpecific) { currentError.validator = this; result = { isValid: false, status: "invalid", brokenRule: currentError, brokenRules: [currentError] } } else { result = _m_validation_engine.default.validate(value, rules, name) } result.id = (new _guid.default).toString(); this._applyValidationResult(result, adapter); null === (_result$complete = result.complete) || void 0 === _result$complete || _result$complete.then((res => { if (res.id === this._validationInfo.result.id) { this._applyValidationResult(res, adapter) } })); return (0, _extend.extend)({}, this._validationInfo.result) } reset() { const { adapter: adapter } = this.option(); const result = { id: null, isValid: true, brokenRule: null, brokenRules: null, pendingRules: null, status: "valid", complete: null }; this._validationInfo.skipValidation = true; adapter.reset(); this._validationInfo.skipValidation = false; this._resetValidationRules(); this._applyValidationResult(result, adapter) } _updateValidationResult(result) { if (!this._validationInfo.result || this._validationInfo.result.id !== result.id) { const complete = this._validationInfo.deferred && this._validationInfo.result.complete; this._validationInfo.result = (0, _extend.extend)({}, result, { complete: complete }) } else { for (const prop in result) { if ("id" !== prop && "complete" !== prop) { this._validationInfo.result[prop] = result[prop] } } } } _applyValidationResult(result, adapter) { const validatedAction = this._createActionByOption("onValidated", { excludeValidators: ["readOnly"] }); result.validator = this; this._updateValidationResult(result); adapter.applyValidationResults && adapter.applyValidationResults(this._validationInfo.result); this.option({ validationStatus: this._validationInfo.result.status }); if ("pending" === this._validationInfo.result.status) { if (!this._validationInfo.deferred) { this._validationInfo.deferred = (0, _deferred.Deferred)(); this._validationInfo.result.complete = this._validationInfo.deferred.promise() } this._eventsStrategy.fireEvent("validating", [this._validationInfo.result]); return } if ("pending" !== this._validationInfo.result.status) { validatedAction(result); if (this._validationInfo.deferred) { this._validationInfo.deferred.resolve(result); this._validationInfo.deferred = null } } } focus() { const { adapter: adapter } = this.option(); adapter && adapter.focus && adapter.focus() } _useTemplates() { return false } }(0, _component_registrator.default)("dxValidator", Validator); exports.default = Validator }, 16028: /*!************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/ui/map/m_map.js ***! \************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _events_engine = _interopRequireDefault(__webpack_require__( /*! ../../../common/core/events/core/events_engine */ 92774)); var _pointer = _interopRequireDefault(__webpack_require__( /*! ../../../common/core/events/pointer */ 89797)); var _index = __webpack_require__( /*! ../../../common/core/events/utils/index */ 98834); var _component_registrator = _interopRequireDefault(__webpack_require__( /*! ../../../core/component_registrator */ 92848)); var _devices = _interopRequireDefault(__webpack_require__( /*! ../../../core/devices */ 65951)); var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../../core/renderer */ 64553)); var _array = __webpack_require__( /*! ../../../core/utils/array */ 94487); var _deferred = __webpack_require__( /*! ../../../core/utils/deferred */ 87739); var _extend = __webpack_require__( /*! ../../../core/utils/extend */ 52576); var _inflector = __webpack_require__( /*! ../../../core/utils/inflector */ 53124); var _iterator = __webpack_require__( /*! ../../../core/utils/iterator */ 21274); var _type = __webpack_require__( /*! ../../../core/utils/type */ 11528); var _ui = _interopRequireDefault(__webpack_require__( /*! ../../../ui/widget/ui.errors */ 35185)); var _widget = _interopRequireDefault(__webpack_require__( /*! ../../core/widget/widget */ 89275)); var _m_providerDynamic = _interopRequireDefault(__webpack_require__( /*! ./m_provider.dynamic.azure */ 42575)); var _m_providerDynamic2 = _interopRequireDefault(__webpack_require__( /*! ./m_provider.dynamic.bing */ 53672)); var _m_providerDynamic3 = _interopRequireDefault(__webpack_require__( /*! ./m_provider.dynamic.google */ 76473)); var _m_provider = _interopRequireDefault(__webpack_require__( /*! ./m_provider.google_static */ 66577)); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } function _extends() { return _extends = Object.assign ? Object.assign.bind() : function(n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) { ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]) } } return n }, _extends.apply(null, arguments) } const PROVIDERS = { azure: _m_providerDynamic.default, googleStatic: _m_provider.default, google: _m_providerDynamic3.default, bing: _m_providerDynamic2.default }; class Map extends _widget.default { _getDefaultOptions() { return _extends({}, super._getDefaultOptions(), { bounds: { northEast: null, southWest: null }, center: { lat: 0, lng: 0 }, zoom: 1, width: 300, height: 300, type: "roadmap", provider: "google", autoAdjust: true, markers: [], markerIconSrc: null, onMarkerAdded: null, onMarkerRemoved: null, routes: [], onRouteAdded: null, onRouteRemoved: null, apiKey: { bing: "", google: "", googleStatic: "" }, providerConfig: { mapId: "", useAdvancedMarkers: true }, controls: false, onReady: null, onUpdated: null, onClick: null }) } _defaultOptionsRules() { return super._defaultOptionsRules().concat([{ device: () => "desktop" === _devices.default.real().deviceType && !_devices.default.isSimulator(), options: { focusStateEnabled: true } }]) } ctor(element, options) { super.ctor(element, options); if (options) { if ("provider" in options && "bing" === options.provider) { this._logDeprecatedBingProvider() } } } _logDeprecatedBingProvider() { this._logDeprecatedOptionWarning("provider: bing", { since: "24.2", message: "Use other map providers, such as Azure, Google, or GoogleStatic." }) } _setDeprecatedOptions() { super._setDeprecatedOptions(); (0, _extend.extend)(this._deprecatedOptions, { "providerConfig.useAdvancedMarkers": { since: "24.2", message: "Google deprecated the original map markers. Transition to advanced markers for future compatibility." } }) } _renderFocusTarget() {} _init() { super._init(); this.$element().addClass("dx-map"); this._lastAsyncAction = Promise.resolve(); this._checkOption("provider"); this._checkOption("markers"); this._checkOption("routes"); this._initContainer(); this._grabEvents(); this._rendered = {} } _useTemplates() { return false } _checkOption(option) { const value = this.option(option); if ("markers" === option && !Array.isArray(value)) { throw _ui.default.Error("E1022") } if ("routes" === option && !Array.isArray(value)) { throw _ui.default.Error("E1023") } } _initContainer() { this._$container = (0, _renderer.default)("<div>").addClass("dx-map-container"); this.$element().append(this._$container) } _grabEvents() { const eventName = (0, _index.addNamespace)(_pointer.default.down, this.NAME); _events_engine.default.on(this.$element(), eventName, this._cancelEvent.bind(this)) } _cancelEvent(e) { var _this$_provider; const cancelByProvider = (null === (_this$_provider = this._provider) || void 0 === _this$_provider ? void 0 : _this$_provider.isEventsCanceled(e)) && !this.option("disabled"); if (cancelByProvider) { e.stopPropagation() } } _saveRendered(option) { const value = this.option(option); this._rendered[option] = value.slice() } _render() { super._render(); this._renderShield(); this._saveRendered("markers"); this._saveRendered("routes"); const { provider: provider } = this.option(); this._provider = new PROVIDERS[provider](this, this._$container); this._queueAsyncAction("render", this._rendered.markers, this._rendered.routes) } _renderShield() { let $shield; if (this.option("disabled")) { $shield = (0, _renderer.default)("<div>").addClass("dx-map-shield"); this.$element().append($shield) } else { $shield = this.$element().find(".dx-map-shield"); $shield.remove() } } _clean() { this._cleanFocusState(); if (this._provider) { this._provider.clean() } this._provider = null; this._lastAsyncAction = Promise.resolve(); this.setOptionSilent("bounds", { northEast: null, southWest: null }); delete this._suppressAsyncAction } _optionChanged(args) { const { name: name, value: value } = args; const changeBag = this._optionChangeBag; this._optionChangeBag = null; switch (name) { case "disabled": this._renderShield(); super._optionChanged(args); this._queueAsyncAction("updateDisabled"); break; case "width": case "height": super._optionChanged(args); this._dimensionChanged(); break; case "provider": this._suppressAsyncAction = true; this._invalidate(); if ("bing" === value) { this._logDeprecatedBingProvider() } break; case "apiKey": _ui.default.log("W1001"); break; case "bounds": this._queueAsyncAction("updateBounds"); break; case "center": this._queueAsyncAction("updateCenter"); break; case "zoom": this._queueAsyncAction("updateZoom"); break; case "type": this._queueAsyncAction("updateMapType"); break; case "controls": this._queueAsyncAction("updateControls", this._rendered.markers, this._rendered.routes); break; case "autoAdjust": this._queueAsyncAction("adjustViewport"); break; case "markers": case "routes": { this._checkOption(name); const prevValue = this._rendered[name]; this._saveRendered(name); this._queueAsyncAction(`update${(0,_inflector.titleize)(name)}`, changeBag ? changeBag.removed : prevValue, changeBag ? changeBag.added : this._rendered[name]).then((result => { if (changeBag) { changeBag.resolve(result) } })); break } case "markerIconSrc": this._queueAsyncAction("updateMarkers", this._rendered.markers, this._rendered.markers); break; case "providerConfig": this._suppressAsyncAction = true; this._invalidate(); break; case "onReady": case "onUpdated": case "onMarkerAdded": case "onMarkerRemoved": case "onRouteAdded": case "onRouteRemoved": case "onClick": break; default: super._optionChanged.apply(this, arguments) } } _visibilityChanged(visible) { if (visible) { this._dimensionChanged() } } _dimensionChanged() { this._queueAsyncAction("updateDimensions") } _queueAsyncAction(name, markers, routers) { const options = [].slice.call(arguments).slice(1); const isActionSuppressed = this._suppressAsyncAction; this._lastAsyncAction = this._lastAsyncAction.then((() => { if (!this._provider || isActionSuppressed) { return Promise.resolve() } return this._provider[name].apply(this._provider, options).then((result => { result = (0, _array.wrapToArray)(result); const mapRefreshed = result[0]; if (mapRefreshed && !this._disposed) { this._triggerReadyAction() } return result[1] })) })); return this._lastAsyncAction } _triggerReadyAction() { this._createActionByOption("onReady")({ originalMap: this._provider.map() }) } _triggerUpdateAction() { this._createActionByOption("onUpdated")() } setOptionSilent(name, value) { this._setOptionWithoutOptionChange(name, value) } addMarker(marker) { return this._addFunction("markers", marker) } removeMarker(marker) { return this._removeFunction("markers", marker) } addRoute(route) { return this._addFunction("routes", route) } removeRoute(route) { return this._removeFunction("routes", route) } _addFunction(optionName, addingValue) { const optionValue = this.option(optionName); const addingValues = (0, _array.wrapToArray)(addingValue); optionValue.push.apply(optionValue, addingValues); return this._partialArrayOptionChange(optionName, optionValue, addingValues, []) } _removeFunction(optionName, removingValue) { const optionValue = this.option(optionName); const removingValues = (0, _array.wrapToArray)(removingValue); (0, _iterator.each)(removingValues, ((removingIndex, removingValue) => { const index = (0, _type.isNumeric)(removingValue) ? removingValue : null === optionValue || void 0 === optionValue ? void 0 : optionValue.indexOf(removingValue); if (-1 !== index) { const removing = optionValue.splice(index, 1)[0]; removingValues.splice(removingIndex, 1, removing) } else { throw _ui.default.log("E1021", (0, _inflector.titleize)(optionName.substring(0, optionName.length - 1)), removingValue) } })); return this._partialArrayOptionChange(optionName, optionValue, [], removingValues) } _partialArrayOptionChange(optionName, optionValue, addingValues, removingValues) { return (0, _deferred.fromPromise)(new Promise((resolve => { this._optionChangeBag = { resolve: resolve, added: addingValues, removed: removingValues }; this.option(optionName, optionValue) })).then((result => result && 1 === result.length ? result[0] : result)), this) } }(0, _component_registrator.default)("dxMap", Map); exports.default = Map }, 42575: /*!*******************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/ui/map/m_provider.dynamic.azure.js ***! \*******************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _color = _interopRequireDefault(__webpack_require__( /*! ../../../color */ 43101)); var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../../core/renderer */ 64553)); var _ajax = _interopRequireDefault(__webpack_require__( /*! ../../../core/utils/ajax */ 78670)); var _common = __webpack_require__( /*! ../../../core/utils/common */ 17781); var _iterator = __webpack_require__( /*! ../../../core/utils/iterator */ 21274); var _type = __webpack_require__( /*! ../../../core/utils/type */ 11528); var _window = __webpack_require__( /*! ../../../core/utils/window */ 3104); var _ui = _interopRequireDefault(__webpack_require__( /*! ../../../ui/widget/ui.errors */ 35185)); var _m_provider = _interopRequireDefault(__webpack_require__( /*! ./m_provider.dynamic */ 62586)); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } const window = (0, _window.getWindow)(); const AZURE_BASE_LINK = "https://atlas.microsoft.com/"; let AZURE_JS_URL = `${AZURE_BASE_LINK}sdk/javascript/mapcontrol/3/atlas.min.js`; let AZURE_CSS_URL = `${AZURE_BASE_LINK}/sdk/javascript/mapcontrol/3/atlas.min.css`; const azureMapsLoaded = function() { var _window$atlas; return null === (_window$atlas = window.atlas) || void 0 === _window$atlas ? void 0 : _window$atlas.Map }; let azureMapsLoader; class AzureProvider extends _m_provider.default { _mapType(type) { const mapTypes = { roadmap: "road", satellite: "satellite", hybrid: "satellite_road_labels" }; return mapTypes[type] || mapTypes.roadmap } _movementMode(type) { const movementTypes = { driving: "car", walking: "pedestrian" }; if (!type) { return movementTypes.driving } return movementTypes[type] ?? type } _resolveLocation(location) { return new Promise((resolve => { const latLng = this._getLatLng(location); if (latLng) { resolve(new atlas.data.Position(latLng.lng, latLng.lat)) } else { this._geocodeLocation(location).then((geocodedLocation => { resolve(geocodedLocation) })) } })) } _geocodeLocationImpl(location) { return new Promise((resolve => { if (!(0, _type.isDefined)(location)) { resolve(new atlas.data.Position(0, 0)); return } const searchURL = `${AZURE_BASE_LINK}geocode?subscription-key=${this._keyOption("azure")}&api-version=2023-06-01&query=${location}&limit=1`; _ajax.default.sendRequest({ url: searchURL, dataType: "json" }).then((result => { var _result$features$; const coordinates = null === result || void 0 === result || null === (_result$features$ = result.features[0]) || void 0 === _result$features$ || null === (_result$features$ = _result$features$.geometry) || void 0 === _result$features$ ? void 0 : _result$features$.coordinates; if (coordinates) { resolve(new atlas.data.Position(coordinates[0], coordinates[1])) } else { resolve(new atlas.data.Position(0, 0)) } })) })) } _normalizeLocation(location) { return { lat: location[1], lng: location[0] } } _normalizeLocationRect(locationRect) { return { northEast: { lat: locationRect[1], lng: locationRect[2] }, southWest: { lat: locationRect[3], lng: locationRect[0] } } } _loadImpl() { return new Promise((resolve => { if (azureMapsLoaded()) { resolve(); return } if (!azureMapsLoader) { azureMapsLoader = this._loadMapResources() } azureMapsLoader.then((() => { if (azureMapsLoaded()) { resolve(); return } this._loadMapResources().then(resolve) })) })) } _loadMapResources() { return Promise.all([this._loadMapScript(), this._loadMapStyles()]) } _loadMapScript() { return new Promise((resolve => { _ajax.default.sendRequest({ url: AZURE_JS_URL, dataType: "script" }).then((() => { resolve() })) })) } _loadMapStyles() { return new Promise((resolve => { _ajax.default.sendRequest({ url: AZURE_CSS_URL, dataType: "text" }).then((css => { (0, _renderer.default)("<style>").html(css).appendTo((0, _renderer.default)("head")); resolve() })) })) } _init() { this._createMap(); return this._mapReadyPromise } _createMap() { this._map = new atlas.Map(this._$container[0], { authOptions: { authType: "subscriptionKey", subscriptionKey: this._keyOption("azure") }, zoom: this._option("zoom"), style: this._mapType(this._option("type")), interactive: !this._option("disabled") }); this._mapReadyPromise = new Promise((resolve => { this._map.events.add("ready", (() => { resolve() })) })); this.updateControls() } _attachHandlers() { this._map.events.add("move", this._viewChangeHandler.bind(this)); this._map.events.add("click", this._clickActionHandler.bind(this)) } _viewChangeHandler() { const { bounds: bounds } = this._map.getCamera(); this._option("bounds", this._normalizeLocationRect(bounds)); const { center: center } = this._map.getCamera(); this._option("center", this._normalizeLocation(center)); if (!this._preventZoomChangeEvent) { this._option("zoom", this._map.getCamera().zoom) } } _clickActionHandler(e) { if ("click" === e.type) { this._fireClickAction({ location: this._normalizeLocation(e.position), event: e.originalEvent }) } } updateDimensions() { this._map.resize(); return Promise.resolve() } updateDisabled() { const disabled = this._option("disabled"); this._map.setUserInteraction({ interactive: !disabled }); return Promise.resolve() } updateMapType() { const newType = this._mapType(this._option("type")); const currentType = this._map.getStyle().style; if (newType !== currentType) { this._map.setStyle({ style: newType }) } return Promise.resolve() } updateBounds() { return Promise.all([this._resolveLocation(this._option("bounds.northEast")), this._resolveLocation(this._option("bounds.southWest"))]).then((result => { this._map.setCamera({ bounds: [result[1][0], result[1][1], result[0][0], result[0][1]], padding: 50 }) })) } updateCenter() { return this._resolveLocation(this._option("center")).then((center => { this._map.setCamera({ center: center }) })) } updateZoom() { this._map.setCamera({ zoom: this._option("zoom") }); return Promise.resolve() } updateControls() { const { controls: controls } = this._option(); if (controls) { this._map.controls.add([new atlas.control.CompassControl, new atlas.control.PitchControl, new atlas.control.StyleControl({ mapStyles: ["road", "satellite", "satellite_road_labels"] }), new atlas.control.ZoomControl], { position: "top-right" }) } else { const allControls = this._map.controls.getControls(); const controlsToRemove = allControls.slice(2); this._map.controls.remove(controlsToRemove) } return Promise.resolve() } _renderMarker(options) { return this._resolveLocation(options.location).then((location => { const markerOptions = { position: location }; const icon = options.iconSrc || this._option("markerIconSrc"); if (icon) { markerOptions.htmlContent = this._createIconTemplate(icon) } const marker = new atlas.HtmlMarker(markerOptions); this._map.markers.add(marker); const popup = this._renderTooltip(location, options.tooltip); let handler; if (options.onClick || options.tooltip) { const markerClickAction = this._mapWidget._createAction(options.onClick || _common.noop); const markerNormalizedLocation = this._normalizeLocation(location); handler = this._map.events.add("click", marker, (() => { markerClickAction({ location: markerNormalizedLocation }); if (popup) { if (popup.isOpen()) { popup.close() } else { popup.open() } } })) } return { location: location, marker: marker, popup: popup, handler: handler } })) } _renderTooltip(location, options) { if (!options) { return } options = this._parseTooltipOptions(options); const $content = (0, _renderer.default)("<div>").html(options.text).addClass("dx-map-marker-tooltip"); const popup = new atlas.Popup({ content: $content[0], position: location, pixelOffset: [0, -30] }); this._map.popups.add(popup); if (options.visible) { popup.open() } return popup } _destroyMarker(marker) { this._map.markers.remove(marker.marker); if (marker.popup) { this._map.popups.remove(marker.popup) } if (marker.handler) { this._map.events.remove(marker.handler) } } _renderRoute(options) { return Promise.all((0, _iterator.map)(options.locations, (point => this._resolveLocation(point)))).then((locations => new Promise((resolve => { const routeColor = new _color.default(options.color || this._defaultRouteColor()).toHex(); const routeOpacity = options.opacity || this._defaultRouteOpacity(); const queryCoordinates = locations.map((location => `${location[1]},${location[0]}`)); const query = queryCoordinates.join(":"); const routeType = this._movementMode(options.mode); const searchUrl = `${AZURE_BASE_LINK}route/directions/json?subscription-key=${this._keyOption("azure")}&api-version=1.0&query=${query}&travelMode=${routeType}`; _ajax.default.sendRequest({ url: searchUrl, dataType: "json" }).then((result => { if (null !== result && void 0 !== result && result.routes && result.routes.length > 0) { const route = result.routes[0]; const routeCoordinates = route.legs.flatMap((leg => leg.points.map((point => [point.longitude, point.latitude])))); const dataSource = new atlas.source.DataSource; dataSource.add(new atlas.data.Feature(new atlas.data.LineString(routeCoordinates), {})); const lineLayer = new atlas.layer.LineLayer(dataSource, null, { strokeColor: routeColor, strokeOpacity: routeOpacity, strokeWidth: options.weight || this._defaultRouteWeight() }); this._map.sources.add(dataSource); this._map.layers.add(lineLayer); const bounds = atlas.data.BoundingBox.fromPositions(routeCoordinates); if (this._option("autoAdjust")) { this._map.setCamera({ bounds: bounds, padding: 50 }) } resolve({ instance: { dataSource: dataSource, lineLayer: lineLayer }, northEast: [bounds[2], bounds[3]], southWest: [bounds[0], bounds[1]] }) } })).catch((e => { const dataSource = new atlas.source.DataSource; const lineLayer = new atlas.layer.LineLayer(dataSource, null, {}); _ui.default.log("W1006", e); resolve({ instance: { dataSource: dataSource, lineLayer: lineLayer } }) })) })))) } _destroyRoute(routeObject) { this._map.layers.remove(routeObject.instance.lineLayer); this._map.sources.remove(routeObject.instance.dataSource) } _fitBounds() { this._updateBounds(); if (this._bounds && this._option("autoAdjust")) { const zoomBeforeFitting = this._map.getCamera().zoom; this._preventZoomChangeEvent = true; this._map.setCamera({ bounds: this._bounds, padding: 50 }); const zoomAfterFitting = this._map.getCamera().zoom; if (zoomBeforeFitting < zoomAfterFitting) { this._map.setCamera({ zoom: zoomBeforeFitting }) } else { this._option("zoom", zoomAfterFitting) } delete this._preventZoomChangeEvent } return Promise.resolve() } _extendBounds(location) { const [longitude, latitude] = location; if (this._bounds) { const newBounds = new atlas.data.BoundingBox([longitude, latitude, longitude, latitude]); this._bounds = atlas.data.BoundingBox.merge(this._bounds, newBounds) } else { this._bounds = new atlas.data.BoundingBox([longitude - 1e-4, latitude - 1e-4, longitude + 1e-4, latitude + 1e-4]) } } clean() { if (this._map) { this._map.events.remove("move", this._viewChangeHandler); this._map.events.remove("click", this._clickActionHandler); this._clearMarkers(); this._clearRoutes(); this._map.dispose() } return Promise.resolve() } } exports.default = AzureProvider }, 53672: /*!******************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/ui/map/m_provider.dynamic.bing.js ***! \******************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _color = _interopRequireDefault(__webpack_require__( /*! ../../../color */ 43101)); var _ajax = _interopRequireDefault(__webpack_require__( /*! ../../../core/utils/ajax */ 78670)); var _common = __webpack_require__( /*! ../../../core/utils/common */ 17781); var _extend = __webpack_require__( /*! ../../../core/utils/extend */ 52576); var _iterator = __webpack_require__( /*! ../../../core/utils/iterator */ 21274); var _size = __webpack_require__( /*! ../../../core/utils/size */ 57653); var _type = __webpack_require__( /*! ../../../core/utils/type */ 11528); var _window = __webpack_require__( /*! ../../../core/utils/window */ 3104); var _ui = _interopRequireDefault(__webpack_require__( /*! ../../../ui/widget/ui.errors */ 35185)); var _m_provider = _interopRequireDefault(__webpack_require__( /*! ./m_provider.dynamic */ 62586)); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } const window = (0, _window.getWindow)(); const msMapsLoaded = function() { var _window$Microsoft; return null === (_window$Microsoft = window.Microsoft) || void 0 === _window$Microsoft ? void 0 : _window$Microsoft.Maps }; let msMapsLoader; class BingProvider extends _m_provider.default { _mapType(type) { const mapTypes = { roadmap: Microsoft.Maps.MapTypeId.road, hybrid: Microsoft.Maps.MapTypeId.aerial, satellite: Microsoft.Maps.MapTypeId.aerial }; return mapTypes[type] || mapTypes.road } _movementMode(type) { if (!type) { return Microsoft.Maps.Directions.RouteMode.driving } return Microsoft.Maps.Directions.RouteMode[type] } _resolveLocation(location) { return new Promise((resolve => { const latLng = this._getLatLng(location); if (latLng) { resolve(new Microsoft.Maps.Location(latLng.lat, latLng.lng)) } else { this._geocodeLocation(location).then((geocodedLocation => { resolve(geocodedLocation) })) } })) } _geocodeLocationImpl(location) { return new Promise((resolve => { if (!(0, _type.isDefined)(location)) { resolve(new Microsoft.Maps.Location(0, 0)); return } const searchManager = new Microsoft.Maps.Search.SearchManager(this._map); const searchRequest = { where: location, count: 1, callback(searchResponse) { const result = searchResponse.results[0]; if (result) { const boundsBox = searchResponse.results[0].location; resolve(new Microsoft.Maps.Location(boundsBox.latitude, boundsBox.longitude)) } else { resolve(new Microsoft.Maps.Location(0, 0)) } } }; searchManager.geocode(searchRequest) })) } _normalizeLocation(location) { return { lat: location.latitude, lng: location.longitude } } _normalizeLocationRect(locationRect) { const northWest = this._normalizeLocation(locationRect.getNorthwest()); const southEast = this._normalizeLocation(locationRect.getSoutheast()); return { northEast: { lat: northWest.lat, lng: southEast.lng }, southWest: { lat: southEast.lat, lng: northWest.lng } } } _loadImpl() { return new Promise((resolve => { if (msMapsLoaded()) { resolve() } else { if (!msMapsLoader) { msMapsLoader = this._loadMapScript() } msMapsLoader.then((() => { if (msMapsLoaded()) { resolve(); return } this._loadMapScript().then(resolve) })) } })).then((() => Promise.all([new Promise((resolve => { Microsoft.Maps.loadModule("Microsoft.Maps.Search", { callback: resolve }) })), new Promise((resolve => { Microsoft.Maps.loadModule("Microsoft.Maps.Directions", { callback: resolve }) }))]))) } _loadMapScript() { return new Promise((resolve => { window._bingScriptReady = resolve; _ajax.default.sendRequest({ url: "https://www.bing.com/api/maps/mapcontrol?callback=_bingScriptReady", dataType: "script" }) })).then((() => { try { delete window._bingScriptReady } catch (e) { window._bingScriptReady = void 0 } })) } _init() { this._createMap(); return Promise.resolve() } _createMap() { const controls = this._option("controls"); this._map = new Microsoft.Maps.Map(this._$container[0], { credentials: this._keyOption("bing"), zoom: this._option("zoom"), showDashboard: controls, showMapTypeSelector: controls, showScalebar: controls }) } _attachHandlers() { this._providerViewChangeHandler = Microsoft.Maps.Events.addHandler(this._map, "viewchange", this._viewChangeHandler.bind(this)); this._providerClickHandler = Microsoft.Maps.Events.addHandler(this._map, "click", this._clickActionHandler.bind(this)) } _viewChangeHandler() { const bounds = this._map.getBounds(); this._option("bounds", this._normalizeLocationRect(bounds)); const center = this._map.getCenter(); this._option("center", this._normalizeLocation(center)); if (!this._preventZoomChangeEvent) { this._option("zoom", this._map.getZoom()) } } _clickActionHandler(e) { if ("map" === e.targetType) { this._fireClickAction({ location: this._normalizeLocation(e.location) }) } } updateDimensions() { const $container = this._$container; this._map.setOptions({ width: (0, _size.getWidth)($container), height: (0, _size.getHeight)($container) }); return Promise.resolve() } updateMapType() { const type = this._option("type"); const labelOverlay = Microsoft.Maps.LabelOverlay; this._map.setView({ animate: false, mapTypeId: this._mapType(type), labelOverlay: "satellite" === type ? labelOverlay.hidden : labelOverlay.visible }); return Promise.resolve() } updateBounds() { return Promise.all([this._resolveLocation(this._option("bounds.northEast")), this._resolveLocation(this._option("bounds.southWest"))]).then((result => { const bounds = new Microsoft.Maps.LocationRect.fromLocations(result[0], result[1]); this._map.setView({ animate: false, bounds: bounds }) })) } updateCenter() { return this._resolveLocation(this._option("center")).then((center => { this._map.setView({ animate: false, center: center }) })) } updateZoom() { this._map.setView({ animate: false, zoom: this._option("zoom") }); return Promise.resolve() } updateControls() { this.clean(); return this.render.apply(this, arguments) } _renderMarker(options) { return this._resolveLocation(options.location).then((location => { const pushpinOptions = { icon: options.iconSrc || this._option("markerIconSrc") }; if (options.html) { (0, _extend.extend)(pushpinOptions, { htmlContent: options.html, width: null, height: null }); const { htmlOffset: htmlOffset } = options; if (htmlOffset) { pushpinOptions.anchor = new Microsoft.Maps.Point(-htmlOffset.left, -htmlOffset.top) } } const pushpin = new Microsoft.Maps.Pushpin(location, pushpinOptions); this._map.entities.push(pushpin); const infobox = this._renderTooltip(location, options.tooltip); let handler; if (options.onClick || options.tooltip) { const markerClickAction = this._mapWidget._createAction(options.onClick || _common.noop); const markerNormalizedLocation = this._normalizeLocation(location); handler = Microsoft.Maps.Events.addHandler(pushpin, "click", (() => { markerClickAction({ location: markerNormalizedLocation }); if (infobox) { infobox.setOptions({ visible: true }) } })) } return { location: location, marker: pushpin, infobox: infobox, handler: handler } })) } _renderTooltip(location, options) { if (!options) { return } options = this._parseTooltipOptions(options); const infobox = new Microsoft.Maps.Infobox(location, { description: options.text, offset: new Microsoft.Maps.Point(0, 13), visible: options.visible }); infobox.setMap(this._map); return infobox } _destroyMarker(marker) { this._map.entities.remove(marker.marker); if (marker.infobox) { marker.infobox.setMap(null) } if (marker.handler) { Microsoft.Maps.Events.removeHandler(marker.handler) } } _renderRoute(options) { return Promise.all((0, _iterator.map)(options.locations, (point => this._resolveLocation(point)))).then((locations => new Promise((resolve => { const direction = new Microsoft.Maps.Directions.DirectionsManager(this._map); const color = new _color.default(options.color || this._defaultRouteColor()).toHex(); const routeColor = new Microsoft.Maps.Color.fromHex(color); routeColor.a = 255 * (options.opacity || this._defaultRouteOpacity()); direction.setRenderOptions({ autoUpdateMapView: false, displayRouteSelector: false, waypointPushpinOptions: { visible: false }, drivingPolylineOptions: { strokeColor: routeColor, strokeThickness: options.weight || this._defaultRouteWeight() }, walkingPolylineOptions: { strokeColor: routeColor, strokeThickness: options.weight || this._defaultRouteWeight() } }); direction.setRequestOptions({ routeMode: this._movementMode(options.mode), routeDraggable: false }); (0, _iterator.each)(locations, ((_, location) => { const waypoint = new Microsoft.Maps.Directions.Waypoint({ location: location }); direction.addWaypoint(waypoint) })); const directionHandlers = []; directionHandlers.push(Microsoft.Maps.Events.addHandler(direction, "directionsUpdated", (args => { while (directionHandlers.length) { Microsoft.Maps.Events.removeHandler(directionHandlers.pop()) } const routeSummary = args.routeSummary[0]; resolve({ instance: direction, northEast: routeSummary.northEast, southWest: routeSummary.southWest }) }))); directionHandlers.push(Microsoft.Maps.Events.addHandler(direction, "directionsError", (args => { while (directionHandlers.length) { Microsoft.Maps.Events.removeHandler(directionHandlers.pop()) } const status = `RouteResponseCode: ${args.responseCode} - ${args.message}`; _ui.default.log("W1006", status); resolve({ instance: direction }) }))); direction.calculateDirections() })))) } _destroyRoute(routeObject) { routeObject.instance.dispose() } _fitBounds() { this._updateBounds(); if (this._bounds && this._option("autoAdjust")) { const zoomBeforeFitting = this._map.getZoom(); this._preventZoomChangeEvent = true; const bounds = this._bounds.clone(); bounds.height *= 1.1; bounds.width *= 1.1; this._map.setView({ animate: false, bounds: bounds, zoom: zoomBeforeFitting }); const zoomAfterFitting = this._map.getZoom(); if (zoomBeforeFitting < zoomAfterFitting) { this._map.setView({ animate: false, zoom: zoomBeforeFitting }) } else { this._option("zoom", zoomAfterFitting) } delete this._preventZoomChangeEvent } return Promise.resolve() } _extendBounds(location) { if (this._bounds) { this._bounds = new Microsoft.Maps.LocationRect.fromLocations(this._bounds.getNorthwest(), this._bounds.getSoutheast(), location) } else { this._bounds = new Microsoft.Maps.LocationRect(location, 1e-16, 1e-16) } } clean() { if (this._map) { Microsoft.Maps.Events.removeHandler(this._providerViewChangeHandler); Microsoft.Maps.Events.removeHandler(this._providerClickHandler); this._clearMarkers(); this._clearRoutes(); this._map.dispose() } return Promise.resolve() } } exports.default = BingProvider }, 76473: /*!********************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/ui/map/m_provider.dynamic.google.js ***! \********************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _color = _interopRequireDefault(__webpack_require__( /*! ../../../color */ 43101)); var _devices = _interopRequireDefault(__webpack_require__( /*! ../../../core/devices */ 65951)); var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../../core/renderer */ 64553)); var _ajax = _interopRequireDefault(__webpack_require__( /*! ../../../core/utils/ajax */ 78670)); var _common = __webpack_require__( /*! ../../../core/utils/common */ 17781); var _extend = __webpack_require__( /*! ../../../core/utils/extend */ 52576); var _iterator = __webpack_require__( /*! ../../../core/utils/iterator */ 21274); var _type = __webpack_require__( /*! ../../../core/utils/type */ 11528); var _window = __webpack_require__( /*! ../../../core/utils/window */ 3104); var _ui = _interopRequireDefault(__webpack_require__( /*! ../../../ui/widget/ui.errors */ 35185)); var _m_provider = _interopRequireDefault(__webpack_require__( /*! ./m_provider.dynamic */ 62586)); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } const window = (0, _window.getWindow)(); let CustomMarker; const googleMapsLoaded = function() { var _window$google; return null === (_window$google = window.google) || void 0 === _window$google ? void 0 : _window$google.maps }; let googleMapsLoader; class GoogleProvider extends _m_provider.default { _mapType(type) { const mapTypes = { hybrid: google.maps.MapTypeId.HYBRID, roadmap: google.maps.MapTypeId.ROADMAP, satellite: google.maps.MapTypeId.SATELLITE }; return mapTypes[type] || mapTypes.hybrid } _movementMode(type) { const movementTypes = { driving: google.maps.TravelMode.DRIVING, walking: google.maps.TravelMode.WALKING }; if (!type) { return movementTypes.driving } return movementTypes[type] ?? type } _resolveLocation(location) { return new Promise((resolve => { const latLng = this._getLatLng(location); if (latLng) { resolve(new google.maps.LatLng(latLng.lat, latLng.lng)) } else { this._geocodeLocation(location).then((geocodedLocation => { resolve(geocodedLocation) })) } })) } _geocodeLocationImpl(location) { return new Promise((resolve => { if (!(0, _type.isDefined)(location)) { resolve(new google.maps.LatLng(0, 0)); return } const geocoder = new google.maps.Geocoder; geocoder.geocode({ address: location }, ((results, status) => { if (status === google.maps.GeocoderStatus.OK) { resolve(results[0].geometry.location) } else { _ui.default.log("W1006", status); resolve(new google.maps.LatLng(0, 0)) } })) })) } _normalizeLocation(location) { return { lat: location.lat(), lng: location.lng() } } _normalizeLocationRect(locationRect) { return { northEast: this._normalizeLocation(locationRect.getNorthEast()), southWest: this._normalizeLocation(locationRect.getSouthWest()) } } _loadImpl() { return new Promise((resolve => { if (googleMapsLoaded()) { resolve() } else { if (!googleMapsLoader) { googleMapsLoader = this._loadMapScript() } googleMapsLoader.then((() => { if (googleMapsLoaded()) { resolve(); return } this._loadMapScript().then(resolve) })) } })).then((() => { ! function() { CustomMarker = function(options) { this._position = options.position; this._offset = options.offset; this._$overlayContainer = (0, _renderer.default)("<div>").css({ position: "absolute", display: "none", cursor: "pointer" }).append(options.html); this.setMap(options.map) }; CustomMarker.prototype = new google.maps.OverlayView; CustomMarker.prototype.onAdd = function() { const $pane = (0, _renderer.default)(this.getPanes().overlayMouseTarget); $pane.append(this._$overlayContainer); this._clickListener = google.maps.event.addDomListener(this._$overlayContainer.get(0), "click", (e => { google.maps.event.trigger(this, "click"); e.preventDefault() })); this.draw() }; CustomMarker.prototype.onRemove = function() { google.maps.event.removeListener(this._clickListener); this._$overlayContainer.remove() }; CustomMarker.prototype.draw = function() { const position = this.getProjection().fromLatLngToDivPixel(this._position); this._$overlayContainer.css({ left: position.x + this._offset.left, top: position.y + this._offset.top, display: "block" }) } }() })) } _loadMapScript() { return new Promise((resolve => { const key = this._keyOption("google"); window._googleScriptReady = resolve; _ajax.default.sendRequest({ url: "https://maps.googleapis.com/maps/api/js?callback=_googleScriptReady&libraries=marker&loading=async" + (key ? `&key=${key}` : ""), dataType: "script" }) })).then((() => { try { delete window._googleScriptReady } catch (e) { window._googleScriptReady = void 0 } })) } _init() { return new Promise((resolve => { this._resolveLocation(this._option("center")).then((center => { const disableDefaultUI = !this._option("controls"); const providerConfig = this._option("providerConfig"); const mapId = (null === providerConfig || void 0 === providerConfig ? void 0 : providerConfig.mapId) ?? ""; this._map = new google.maps.Map(this._$container[0], { center: center, disableDefaultUI: disableDefaultUI, mapId: mapId, zoom: this._option("zoom") }); const listener = google.maps.event.addListener(this._map, "idle", (() => { resolve(listener) })) })) })).then((listener => { google.maps.event.removeListener(listener) })) } _attachHandlers() { this._boundsChangeListener = google.maps.event.addListener(this._map, "bounds_changed", this._boundsChangeHandler.bind(this)); this._clickListener = google.maps.event.addListener(this._map, "click", this._clickActionHandler.bind(this)) } _boundsChangeHandler() { const bounds = this._map.getBounds(); this._option("bounds", this._normalizeLocationRect(bounds)); const center = this._map.getCenter(); this._option("center", this._normalizeLocation(center)); if (!this._preventZoomChangeEvent) { this._option("zoom", this._map.getZoom()) } } _clickActionHandler(e) { this._fireClickAction({ location: this._normalizeLocation(e.latLng), event: e.domEvent }) } updateDimensions() { const center = this._option("center"); google.maps.event.trigger(this._map, "resize"); this._option("center", center); return this.updateCenter() } updateMapType() { this._map.setMapTypeId(this._mapType(this._option("type"))); return Promise.resolve() } updateBounds() { return Promise.all([this._resolveLocation(this._option("bounds.northEast")), this._resolveLocation(this._option("bounds.southWest"))]).then((result => { const bounds = new google.maps.LatLngBounds; bounds.extend(result[0]); bounds.extend(result[1]); this._map.fitBounds(bounds) })) } updateCenter() { return this._resolveLocation(this._option("center")).then((center => { this._map.setCenter(center); this._option("center", this._normalizeLocation(center)) })) } updateZoom() { this._map.setZoom(this._option("zoom")); return Promise.resolve() } updateControls() { const showDefaultUI = this._option("controls"); this._map.setOptions({ disableDefaultUI: !showDefaultUI }); return Promise.resolve() } isEventsCanceled(e) { var _this$_map; const gestureHandling = null === (_this$_map = this._map) || void 0 === _this$_map ? void 0 : _this$_map.get("gestureHandling"); const isInfoWindowContent = (0, _renderer.default)(e.target).closest(".gm-style-iw").length > 0; if (isInfoWindowContent || "desktop" !== _devices.default.real().deviceType && "cooperative" === gestureHandling) { return false } return super.isEventsCanceled(e) } _renderMarker(options) { return this._resolveLocation(options.location).then((location => { let marker; if (options.html) { marker = new CustomMarker({ map: this._map, position: location, html: options.html, offset: (0, _extend.extend)({ top: 0, left: 0 }, options.htmlOffset) }) } else { const providerConfig = this._option("providerConfig"); const useAdvancedMarkers = (null === providerConfig || void 0 === providerConfig ? void 0 : providerConfig.useAdvancedMarkers) ?? true; const icon = options.iconSrc || this._option("markerIconSrc"); if (useAdvancedMarkers) { const content = icon ? this._createIconTemplate(icon) : void 0; marker = new google.maps.marker.AdvancedMarkerElement({ position: location, map: this._map, content: content }) } else { marker = new google.maps.Marker({ position: location, map: this._map, icon: icon }) } } const infoWindow = this._renderTooltip(marker, options.tooltip); let listener; if (options.onClick || options.tooltip) { const markerClickAction = this._mapWidget._createAction(options.onClick || _common.noop); const markerNormalizedLocation = this._normalizeLocation(location); listener = google.maps.event.addListener(marker, "click", (() => { markerClickAction({ location: markerNormalizedLocation }); if (infoWindow) { infoWindow.open(this._map, marker) } })) } return { location: location, marker: marker, listener: listener } })) } _renderTooltip(marker, options) { if (!options) { return } options = this._parseTooltipOptions(options); const infoWindow = new google.maps.InfoWindow({ content: options.text }); if (options.visible) { infoWindow.open(this._map, marker) } return infoWindow } _destroyMarker(marker) { marker.marker.setMap(null); if (marker.listener) { google.maps.event.removeListener(marker.listener) } } _renderRoute(options) { return Promise.all((0, _iterator.map)(options.locations, (point => this._resolveLocation(point)))).then((locations => new Promise((resolve => { const origin = locations.shift(); const destination = locations.pop(); const waypoints = (0, _iterator.map)(locations, (location => ({ location: location, stopover: true }))); const request = { origin: origin, destination: destination, waypoints: waypoints, optimizeWaypoints: true, travelMode: this._movementMode(options.mode) }; (new google.maps.DirectionsService).route(request, ((response, status) => { if (status === google.maps.DirectionsStatus.OK) { const color = new _color.default(options.color || this._defaultRouteColor()).toHex(); const directionOptions = { directions: response, map: this._map, suppressMarkers: true, preserveViewport: true, polylineOptions: { strokeWeight: options.weight || this._defaultRouteWeight(), strokeOpacity: options.opacity || this._defaultRouteOpacity(), strokeColor: color } }; const route = new google.maps.DirectionsRenderer(directionOptions); const { bounds: bounds } = response.routes[0]; resolve({ instance: route, northEast: bounds.getNorthEast(), southWest: bounds.getSouthWest() }) } else { _ui.default.log("W1006", status); resolve({ instance: new google.maps.DirectionsRenderer({}) }) } })) })))) } _destroyRoute(routeObject) { routeObject.instance.setMap(null) } _fitBounds() { this._updateBounds(); if (this._bounds && this._option("autoAdjust")) { const zoomBeforeFitting = this._map.getZoom(); this._preventZoomChangeEvent = true; this._map.fitBounds(this._bounds); this._boundsChangeHandler(); const zoomAfterFitting = this._map.getZoom(); if (zoomBeforeFitting < zoomAfterFitting) { this._map.setZoom(zoomBeforeFitting) } else { this._option("zoom", zoomAfterFitting) } delete this._preventZoomChangeEvent } return Promise.resolve() } _extendBounds(location) { if (this._bounds) { this._bounds.extend(location) } else { this._bounds = new google.maps.LatLngBounds; this._bounds.extend(location) } } clean() { if (this._map) { google.maps.event.removeListener(this._boundsChangeListener); google.maps.event.removeListener(this._clickListener); this._clearMarkers(); this._clearRoutes(); delete this._map; this._$container.empty() } return Promise.resolve() } } exports.default = GoogleProvider }, 62586: /*!*************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/ui/map/m_provider.dynamic.js ***! \*************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _class = _interopRequireDefault(__webpack_require__( /*! ../../../core/class */ 55620)); var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../../core/renderer */ 64553)); var _extend = __webpack_require__( /*! ../../../core/utils/extend */ 52576); var _iterator = __webpack_require__( /*! ../../../core/utils/iterator */ 21274); var _m_provider = _interopRequireDefault(__webpack_require__( /*! ./m_provider */ 1993)); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } class DynamicProvider extends _m_provider.default { ctor(map, $container) { this._geocodedLocations = {}; super.ctor(map, $container) } _geocodeLocation(location) { return new Promise((resolve => { const cache = this._geocodedLocations; const cachedLocation = cache[location]; if (cachedLocation) { resolve(cachedLocation) } else { this._geocodeLocationImpl(location).then((geocodedLocation => { cache[location] = geocodedLocation; resolve(geocodedLocation) })) } })) } _renderImpl() { return this._load().then((() => this._init())).then((() => Promise.all([this.updateMapType(), this._areBoundsSet() ? this.updateBounds() : this.updateCenter()]))).then((() => { this._attachHandlers(); return new Promise((resolve => { const timeout = setTimeout((() => { clearTimeout(timeout); resolve() })) })) })) } _load() { if (!this._mapsLoader) { this._mapsLoader = this._loadImpl() } this._markers = []; this._routes = []; return this._mapsLoader } _loadImpl() { _class.default.abstract() } _init() { _class.default.abstract() } _attachHandlers() { _class.default.abstract() } addMarkers(options) { return Promise.all((0, _iterator.map)(options, (options => this._addMarker(options)))).then((markerObjects => { this._fitBounds(); return [false, (0, _iterator.map)(markerObjects, (markerObject => markerObject.marker))] })) } _addMarker(options) { return this._renderMarker(options).then((markerObject => { this._markers.push((0, _extend.extend)({ options: options }, markerObject)); this._fireMarkerAddedAction({ options: options, originalMarker: markerObject.marker }); return markerObject })) } _renderMarker(options) { _class.default.abstract() } _createIconTemplate(iconSrc) { const $img = (0, _renderer.default)("<img>"); $img.attr("src", iconSrc); $img.attr("alt", "Marker icon"); $img.addClass("dx-map-marker"); return $img[0] } removeMarkers(markersOptionsToRemove) { const that = this; (0, _iterator.each)(markersOptionsToRemove, ((_, markerOptionToRemove) => { that._removeMarker(markerOptionToRemove) })); return Promise.resolve() } _removeMarker(markersOptionToRemove) { const that = this; (0, _iterator.each)(this._markers, ((markerIndex, markerObject) => { if (markerObject.options !== markersOptionToRemove) { return true } that._destroyMarker(markerObject); that._markers.splice(markerIndex, 1); that._fireMarkerRemovedAction({ options: markerObject.options }); return false })) } _destroyMarker(marker) { _class.default.abstract() } _clearMarkers() { while (this._markers.length > 0) { this._removeMarker(this._markers[0].options) } } addRoutes(options) { return Promise.all((0, _iterator.map)(options, (options => this._addRoute(options)))).then((routeObjects => { this._fitBounds(); return [false, (0, _iterator.map)(routeObjects, (routeObject => routeObject.instance))] })) } _addRoute(options) { return this._renderRoute(options).then((routeObject => { this._routes.push((0, _extend.extend)({ options: options }, routeObject)); this._fireRouteAddedAction({ options: options, originalRoute: routeObject.instance }); return routeObject })) } _renderRoute(options) { _class.default.abstract() } removeRoutes(options) { const that = this; (0, _iterator.each)(options, ((routeIndex, options) => { that._removeRoute(options) })); return Promise.resolve() } _removeRoute(options) { const that = this; (0, _iterator.each)(this._routes, ((routeIndex, routeObject) => { if (routeObject.options !== options) { return true } that._destroyRoute(routeObject); that._routes.splice(routeIndex, 1); that._fireRouteRemovedAction({ options: options }); return false })) } _destroyRoute(routeObject) { _class.default.abstract() } _geocodeLocationImpl(location) { _class.default.abstract() } _clearRoutes() { while (this._routes.length > 0) { this._removeRoute(this._routes[0].options) } } adjustViewport() { return this._fitBounds() } isEventsCanceled(e) { return true } _fitBounds() { _class.default.abstract() } _updateBounds() { const that = this; this._clearBounds(); if (!this._option("autoAdjust")) { return }(0, _iterator.each)(this._markers, ((_, markerObject) => { that._extendBounds(markerObject.location) })); (0, _iterator.each)(this._routes, ((_, routeObject) => { routeObject.northEast && that._extendBounds(routeObject.northEast); routeObject.southWest && that._extendBounds(routeObject.southWest) })) } _clearBounds() { this._bounds = null } _extendBounds(location) { _class.default.abstract() } } exports.default = DynamicProvider }, 66577: /*!*******************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/ui/map/m_provider.google_static.js ***! \*******************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _color = _interopRequireDefault(__webpack_require__( /*! ../../../color */ 43101)); var _click = __webpack_require__( /*! ../../../common/core/events/click */ 64044); var _events_engine = _interopRequireDefault(__webpack_require__( /*! ../../../common/core/events/core/events_engine */ 92774)); var _iterator = __webpack_require__( /*! ../../../core/utils/iterator */ 21274); var _size = __webpack_require__( /*! ../../../core/utils/size */ 57653); var _m_provider = _interopRequireDefault(__webpack_require__( /*! ./m_provider */ 1993)); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } class GoogleStaticProvider extends _m_provider.default { _locationToString(location) { const latLng = this._getLatLng(location); return latLng ? `${latLng.lat},${latLng.lng}` : location.toString().replace(/ /g, "+") } _renderImpl() { return this._updateMap() } updateDimensions() { return this._updateMap() } updateMapType() { return this._updateMap() } updateBounds() { return Promise.resolve() } updateCenter() { return this._updateMap() } updateZoom() { return this._updateMap() } updateControls() { return Promise.resolve() } addMarkers(options) { const that = this; return this._updateMap().then((result => { (0, _iterator.each)(options, ((_, options) => { that._fireMarkerAddedAction({ options: options }) })); return result })) } removeMarkers(options) { const that = this; return this._updateMap().then((result => { (0, _iterator.each)(options, ((_, options) => { that._fireMarkerRemovedAction({ options: options }) })); return result })) } adjustViewport() { return Promise.resolve() } addRoutes(options) { const that = this; return this._updateMap().then((result => { (0, _iterator.each)(options, ((_, options) => { that._fireRouteAddedAction({ options: options }) })); return result })) } removeRoutes(options) { const that = this; return this._updateMap().then((result => { (0, _iterator.each)(options, ((_, options) => { that._fireRouteRemovedAction({ options: options }) })); return result })) } clean() { this._$container.css("backgroundImage", "none"); _events_engine.default.off(this._$container, this._addEventNamespace(_click.name)); return Promise.resolve() } mapRendered() { return true } _updateMap() { const key = this._keyOption("googleStatic"); const providerConfig = this._option("providerConfig"); const mapId = null === providerConfig || void 0 === providerConfig ? void 0 : providerConfig.mapId; const $container = this._$container; const requestOptions = ["sensor=false", `size=${Math.round((0,_size.getWidth)($container))}x${Math.round((0,_size.getHeight)($container))}`, `maptype=${this._option("type")}`, `center=${this._locationToString(this._option("center"))}`, `zoom=${this._option("zoom")}`, this._markersSubstring()]; requestOptions.push.apply(requestOptions, this._routeSubstrings()); if (key) { requestOptions.push(`key=${key}`) } if (mapId) { requestOptions.push(`map_id=${mapId}`) } const request = "https://maps.google.com/maps/api/staticmap?" + requestOptions.join("&"); this._$container.css("background", `url("${request}") no-repeat 0 0`); this._attachClickEvent(); return Promise.resolve(true) } _markersSubstring() { const that = this; const markers = []; const markerIcon = this._option("markerIconSrc"); if (markerIcon) { markers.push(`icon:${markerIcon}`) }(0, _iterator.each)(this._option("markers"), ((_, marker) => { markers.push(that._locationToString(marker.location)) })); return `markers=${markers.join("|")}` } _routeSubstrings() { const that = this; const routes = []; (0, _iterator.each)(this._option("routes"), ((_, route) => { const color = new _color.default(route.color || that._defaultRouteColor()).toHex().replace("#", "0x"); const opacity = Math.round(255 * (route.opacity || that._defaultRouteOpacity())).toString(16); const width = route.weight || that._defaultRouteWeight(); const locations = []; (0, _iterator.each)(route.locations, ((_, routePoint) => { locations.push(that._locationToString(routePoint)) })); routes.push(`path=color:${color}${opacity}|weight:${width}|${locations.join("|")}`) })); return routes } _attachClickEvent() { const that = this; const eventName = this._addEventNamespace(_click.name); _events_engine.default.off(this._$container, eventName); _events_engine.default.on(this._$container, eventName, (e => { that._fireClickAction({ event: e }) })) } } exports.default = GoogleStaticProvider }, 1993: /*!*****************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/ui/map/m_provider.js ***! \*****************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _index = __webpack_require__( /*! ../../../common/core/events/utils/index */ 98834); var _class = (e = __webpack_require__( /*! ../../../core/class */ 55620), e && e.__esModule ? e : { default: e }); var e; var _iterator = __webpack_require__( /*! ../../../core/utils/iterator */ 21274); var _type = __webpack_require__( /*! ../../../core/utils/type */ 11528); class Provider extends(_class.default.inherit({})) { _defaultRouteWeight() { return 5 } _defaultRouteOpacity() { return .5 } _defaultRouteColor() { return "#0000FF" } ctor(map, $container) { this._mapWidget = map; this._$container = $container } render(markerOptions, routeOptions) { return this._renderImpl().then((() => Promise.all([this._applyFunctionIfNeeded("addMarkers", markerOptions), this._applyFunctionIfNeeded("addRoutes", routeOptions)]).then((() => true)))) } _renderImpl() { _class.default.abstract() } updateDimensions() { _class.default.abstract() } updateMapType() { _class.default.abstract() } updateDisabled() { _class.default.abstract() } updateBounds() { _class.default.abstract() } updateCenter() { _class.default.abstract() } updateZoom() { _class.default.abstract() } updateControls() { _class.default.abstract() } updateMarkers(markerOptionsToRemove, markerOptionsToAdd) { return new Promise((resolve => this._applyFunctionIfNeeded("removeMarkers", markerOptionsToRemove).then((removeValue => { this._applyFunctionIfNeeded("addMarkers", markerOptionsToAdd).then((addValue => { resolve(addValue || removeValue) })) })))) } addMarkers(options) { _class.default.abstract() } removeMarkers(options) { _class.default.abstract() } adjustViewport() { _class.default.abstract() } updateRoutes(routeOptionsToRemove, routeOptionsToAdd) { return new Promise((resolve => this._applyFunctionIfNeeded("removeRoutes", routeOptionsToRemove).then((removeValue => { this._applyFunctionIfNeeded("addRoutes", routeOptionsToAdd).then((addValue => { resolve(addValue || removeValue) })) })))) } addRoutes(options) { _class.default.abstract() } removeRoutes(options) { _class.default.abstract() } clean() { _class.default.abstract() } map() { return this._map } isEventsCanceled(e) { return false } _option(name, value) { if (void 0 === value) { return this._mapWidget.option(name) } this._mapWidget.setOptionSilent(name, value) } _keyOption(providerName) { const key = this._option("apiKey"); return void 0 === key[providerName] ? key : key[providerName] } _parseTooltipOptions(option) { return { text: option.text || option, visible: option.isShown || false } } _getLatLng(location) { if ("string" === typeof location) { const coords = (0, _iterator.map)(location.split(","), (item => item.trim())); const numericRegex = /^[-+]?[0-9]*\.?[0-9]*$/; if (2 === coords.length && coords[0].match(numericRegex) && coords[1].match(numericRegex)) { return { lat: parseFloat(coords[0]), lng: parseFloat(coords[1]) } } } else if (Array.isArray(location) && 2 === location.length) { return { lat: location[0], lng: location[1] } } else if ((0, _type.isPlainObject)(location) && (0, _type.isNumeric)(location.lat) && (0, _type.isNumeric)(location.lng)) { return location } return null } _areBoundsSet() { return this._option("bounds.northEast") && this._option("bounds.southWest") } _addEventNamespace(name) { return (0, _index.addNamespace)(name, this._mapWidget.NAME) } _applyFunctionIfNeeded(fnName, array) { if (!array.length) { return Promise.resolve() } return this[fnName](array) } _fireAction(name, actionArguments) { this._mapWidget._createActionByOption(name)(actionArguments) } _fireClickAction(actionArguments) { this._fireAction("onClick", actionArguments) } _fireMarkerAddedAction(actionArguments) { this._fireAction("onMarkerAdded", actionArguments) } _fireMarkerRemovedAction(actionArguments) { this._fireAction("onMarkerRemoved", actionArguments) } _fireRouteAddedAction(actionArguments) { this._fireAction("onRouteAdded", actionArguments) } _fireRouteRemovedAction(actionArguments) { this._fireAction("onRouteRemoved", actionArguments) } } exports.default = Provider }, 54572: /*!**************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/ui/menu/m_menu.js ***! \**************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = exports.DX_MENU_ITEM_CLASS = void 0; var _events_engine = _interopRequireDefault(__webpack_require__( /*! ../../../common/core/events/core/events_engine */ 92774)); var _hover = __webpack_require__( /*! ../../../common/core/events/hover */ 638); var _pointer = _interopRequireDefault(__webpack_require__( /*! ../../../common/core/events/pointer */ 89797)); var _index = __webpack_require__( /*! ../../../common/core/events/utils/index */ 98834); var _component_registrator = _interopRequireDefault(__webpack_require__( /*! ../../../core/component_registrator */ 92848)); var _element = __webpack_require__( /*! ../../../core/element */ 61404); var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../../core/renderer */ 64553)); var _common = __webpack_require__( /*! ../../../core/utils/common */ 17781); var _extend = __webpack_require__( /*! ../../../core/utils/extend */ 52576); var _iterator = __webpack_require__( /*! ../../../core/utils/iterator */ 21274); var _size = __webpack_require__( /*! ../../../core/utils/size */ 57653); var _type = __webpack_require__( /*! ../../../core/utils/type */ 11528); var _button = _interopRequireDefault(__webpack_require__( /*! ../../../ui/button */ 64973)); var _ui = _interopRequireDefault(__webpack_require__( /*! ../../../ui/overlay/ui.overlay */ 89132)); var _tree_view = _interopRequireDefault(__webpack_require__( /*! ../../../ui/tree_view */ 4313)); var _m_menu_base = _interopRequireDefault(__webpack_require__( /*! ../../ui/context_menu/m_menu_base */ 76882)); var _m_utils = __webpack_require__( /*! ../../ui/overlay/m_utils */ 67169); var _m_submenu = _interopRequireDefault(__webpack_require__( /*! ./m_submenu */ 72878)); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } const DX_MENU_ITEM_CLASS = exports.DX_MENU_ITEM_CLASS = "dx-menu-item"; const DX_MENU_ITEM_EXPANDED_CLASS = `${DX_MENU_ITEM_CLASS}-expanded`; const DEFAULT_DELAY = { show: 50, hide: 300 }; const ACTIONS = ["onSubmenuShowing", "onSubmenuShown", "onSubmenuHiding", "onSubmenuHidden", "onItemContextMenu", "onItemClick", "onSelectionChanged", "onItemRendered"]; class Menu extends _m_menu_base.default { _getDefaultOptions() { return (0, _extend.extend)(super._getDefaultOptions(), { orientation: "horizontal", submenuDirection: "auto", showFirstSubmenuMode: { name: "onClick", delay: { show: 50, hide: 300 } }, hideSubmenuOnMouseLeave: false, onSubmenuShowing: null, onSubmenuShown: null, onSubmenuHiding: null, onSubmenuHidden: null, adaptivityEnabled: false }) } _setOptionsByReference() { super._setOptionsByReference(); (0, _extend.extend)(this._optionsByReference, { animation: true, selectedItem: true }) } _itemElements() { const rootMenuElements = super._itemElements(); const submenuElements = this._submenuItemElements(); return rootMenuElements.add(submenuElements) } _submenuItemElements() { let elements = []; const itemSelector = `.${DX_MENU_ITEM_CLASS}`; const currentSubmenu = this._submenus.length && this._submenus[0]; if (currentSubmenu && currentSubmenu.itemsContainer()) { elements = currentSubmenu.itemsContainer().find(itemSelector) } return elements } _focusTarget() { return this.$element() } _isMenuHorizontal() { return "horizontal" === this.option("orientation") } _moveFocus(location) { const $items = this._getAvailableItems(); const isMenuHorizontal = this._isMenuHorizontal(); const $activeItem = this._getActiveItem(true); let argument; let operation; let navigationAction; let $newTarget; switch (location) { case "up": operation = isMenuHorizontal ? "showSubmenu" : this._getItemsNavigationOperation("prevItem"); argument = isMenuHorizontal ? $activeItem : $items; navigationAction = this._getKeyboardNavigationAction(operation, argument); $newTarget = navigationAction(); break; case "down": operation = isMenuHorizontal ? "showSubmenu" : this._getItemsNavigationOperation("nextItem"); argument = isMenuHorizontal ? $activeItem : $items; navigationAction = this._getKeyboardNavigationAction(operation, argument); $newTarget = navigationAction(); break; case "right": operation = isMenuHorizontal ? this._getItemsNavigationOperation("nextItem") : "showSubmenu"; argument = isMenuHorizontal ? $items : $activeItem; navigationAction = this._getKeyboardNavigationAction(operation, argument); $newTarget = navigationAction(); break; case "left": operation = isMenuHorizontal ? this._getItemsNavigationOperation("prevItem") : "showSubmenu"; argument = isMenuHorizontal ? $items : $activeItem; navigationAction = this._getKeyboardNavigationAction(operation, argument); $newTarget = navigationAction(); break; default: return super._moveFocus(location) } if ($newTarget && 0 !== $newTarget.length) { this.option("focusedElement", (0, _element.getPublicElement)($newTarget)) } } _getItemsNavigationOperation(operation) { let navOperation = operation; if (this.option("rtlEnabled")) { navOperation = "prevItem" === operation ? "nextItem" : "prevItem" } return navOperation } _getKeyboardNavigationAction(operation, argument) { let action = _common.noop; switch (operation) { case "showSubmenu": if (!argument.hasClass("dx-state-disabled")) { action = this._showSubmenu.bind(this, argument) } break; case "nextItem": action = this._nextItem.bind(this, argument); break; case "prevItem": action = this._prevItem.bind(this, argument) } return action } _clean() { super._clean(); this.option("templatesRenderAsynchronously") && clearTimeout(this._resizeEventTimer) } _visibilityChanged(visible) { if (visible) { if (!this._menuItemsWidth) { this._updateItemsWidthCache() } this._dimensionChanged() } } _isAdaptivityEnabled() { return this.option("adaptivityEnabled") && "horizontal" === this.option("orientation") } _updateItemsWidthCache() { const $menuItems = this.$element().find("ul").first().children("li").children(`.${DX_MENU_ITEM_CLASS}`); this._menuItemsWidth = this._getSummaryItemsSize("width", $menuItems, true) } _dimensionChanged() { if (!this._isAdaptivityEnabled()) { return } const containerWidth = (0, _size.getOuterWidth)(this.$element()); this._toggleAdaptiveMode(this._menuItemsWidth > containerWidth) } _init() { super._init(); this._submenus = [] } _initActions() { this._actions = {}; (0, _iterator.each)(ACTIONS, ((index, action) => { this._actions[action] = this._createActionByOption(action) })) } _initMarkup() { this._visibleSubmenu = null; this.$element().addClass("dx-menu"); super._initMarkup(); this._addCustomCssClass(this.$element()); this.setAria("role", "menubar") } _setAriaRole(state) { const role = this._isAdaptivityEnabled() && state ? void 0 : "menubar"; this.setAria({ role: role }) } _render() { super._render(); this._initAdaptivity() } _isTargetOutOfComponent(relatedTarget) { const isInsideRootMenu = 0 !== (0, _renderer.default)(relatedTarget).closest(".dx-menu").length; const isInsideContextMenu = 0 !== (0, _renderer.default)(relatedTarget).closest(".dx-context-menu").length; const isTargetOutOfComponent = !(isInsideRootMenu || isInsideContextMenu); return isTargetOutOfComponent } _focusOutHandler(e) { const { relatedTarget: relatedTarget } = e; if (relatedTarget) { const isTargetOutside = this._isTargetOutOfComponent(relatedTarget); if (isTargetOutside) { this._hideVisibleSubmenu() } } super._focusOutHandler(e) } _renderHamburgerButton() { this._hamburger = new _button.default((0, _renderer.default)("<div>").addClass("dx-menu-hamburger-button"), { icon: "menu", activeStateEnabled: false, onClick: this._toggleTreeView.bind(this) }); return this._hamburger.$element() } _toggleTreeView(state) { if ((0, _type.isPlainObject)(state)) { state = !this._overlay.option("visible") } this._overlay.option("visible", state); if (state) { this._treeView.focus() } this._toggleHamburgerActiveState(state) } _toggleHamburgerActiveState(state) { var _this$_hamburger; null === (_this$_hamburger = this._hamburger) || void 0 === _this$_hamburger || _this$_hamburger.$element().toggleClass("dx-state-active", state) } _toggleAdaptiveMode(state) { const $menuItemsContainer = this.$element().find(".dx-menu-horizontal"); const $adaptiveElements = this.$element().find(".dx-menu-adaptive-mode"); if (state) { this._hideVisibleSubmenu() } else { this._treeView && this._treeView.collapseAll(); this._overlay && this._toggleTreeView(state) } this._setAriaRole(state); $menuItemsContainer.toggle(!state); $adaptiveElements.toggle(state) } _removeAdaptivity() { if (!this._$adaptiveContainer) { return } this._toggleAdaptiveMode(false); this._$adaptiveContainer.remove(); this._$adaptiveContainer = null; this._treeView = null; this._hamburger = null; this._overlay = null } _treeviewItemClickHandler(e) { this._actions.onItemClick(e); if (!e.node.children.length) { this._toggleTreeView(false) } } _getAdaptiveOverlayOptions() { const rtl = this.option("rtlEnabled"); const position = rtl ? "right" : "left"; return { _ignoreFunctionValueDeprecation: true, maxHeight: () => (0, _m_utils.getElementMaxHeightByWindow)(this.$element()), deferRendering: false, shading: false, animation: false, hideOnParentScroll: true, onHidden: () => { this._toggleHamburgerActiveState(false) }, height: "auto", hideOnOutsideClick: e => !(0, _renderer.default)(e.target).closest(".dx-menu-hamburger-button").length, position: { collision: "flipfit", at: `bottom ${position}`, my: `top ${position}`, of: this._hamburger.$element() } } } _getTreeViewOptions() { const menuOptions = {}; (0, _iterator.each)(["rtlEnabled", "width", "accessKey", "activeStateEnabled", "animation", "dataSource", "disabled", "displayExpr", "displayExpr", "focusStateEnabled", "hint", "hoverStateEnabled", "itemsExpr", "items", "itemTemplate", "selectedExpr", "selectionMode", "tabIndex", "visible"], ((_, option) => { menuOptions[option] = this.option(option) })); (0, _iterator.each)(["onItemContextMenu", "onSelectionChanged", "onItemRendered"], ((_, actionName) => { menuOptions[actionName] = e => { this._actions[actionName](e) } })); return (0, _extend.extend)(menuOptions, { dataSource: this.getDataSource(), animationEnabled: !!this.option("animation"), onItemClick: this._treeviewItemClickHandler.bind(this), onItemExpanded: e => { this._overlay.repaint(); this._actions.onSubmenuShown(e) }, onItemCollapsed: e => { this._overlay.repaint(); this._actions.onSubmenuHidden(e) }, selectNodesRecursive: false, selectByClick: this.option("selectByClick"), expandEvent: "click", _supportItemUrl: true }) } _initAdaptivity() { if (!this._isAdaptivityEnabled()) { return } this._$adaptiveContainer = (0, _renderer.default)("<div>").addClass("dx-menu-adaptive-mode"); const $hamburger = this._renderHamburgerButton(); this._treeView = this._createComponent((0, _renderer.default)("<div>"), _tree_view.default, this._getTreeViewOptions()); this._overlay = this._createComponent((0, _renderer.default)("<div>"), _ui.default, this._getAdaptiveOverlayOptions()); this._overlay.$content().append(this._treeView.$element()).addClass("dx-menu-adaptive-mode").addClass(this.option("cssClass")); this._overlay.$wrapper().addClass("dx-menu-adaptive-mode-overlay-wrapper"); this._$adaptiveContainer.append($hamburger); this._$adaptiveContainer.append(this._overlay.$element()); this.$element().append(this._$adaptiveContainer); this._updateItemsWidthCache(); this._dimensionChanged() } _getDelay(delayType) { const { delay: delay } = this.option("showFirstSubmenuMode"); if (!(0, _type.isDefined)(delay)) { return DEFAULT_DELAY[delayType] } return (0, _type.isObject)(delay) ? delay[delayType] : delay } _keyboardHandler(e) { return super._keyboardHandler(e, !!this._visibleSubmenu) } _renderContainer() { const $wrapper = (0, _renderer.default)("<div>"); $wrapper.appendTo(this.$element()).addClass(this._isMenuHorizontal() ? "dx-menu-horizontal" : "dx-menu-vertical"); return super._renderContainer($wrapper) } _renderSubmenuItems(node, $itemFrame) { const submenu = this._createSubmenu(node, $itemFrame); this._submenus.push(submenu); this._renderBorderElement($itemFrame); return submenu } _getKeyboardListeners() { return super._getKeyboardListeners().concat(this._visibleSubmenu) } _createSubmenu(node, $rootItem) { const $submenuContainer = (0, _renderer.default)("<div>").addClass("dx-context-menu").appendTo($rootItem); const items = this._getChildNodes(node); const subMenu = this._createComponent($submenuContainer, _m_submenu.default, (0, _extend.extend)(this._getSubmenuOptions(), { _dataAdapter: this._dataAdapter, _parentKey: node.internalFields.key, items: items, onHoverStart: this._clearTimeouts.bind(this), position: this.getSubmenuPosition($rootItem) })); this._attachSubmenuHandlers($rootItem, subMenu); return subMenu } _getSubmenuOptions() { const $submenuTarget = (0, _renderer.default)("<div>"); const isMenuHorizontal = this._isMenuHorizontal(); return { itemTemplate: this.option("itemTemplate"), target: $submenuTarget, orientation: this.option("orientation"), selectionMode: this.option("selectionMode"), cssClass: this.option("cssClass"), selectByClick: this.option("selectByClick"), hoverStateEnabled: this.option("hoverStateEnabled"), activeStateEnabled: this.option("activeStateEnabled"), focusStateEnabled: this.option("focusStateEnabled"), animation: this.option("animation"), showSubmenuMode: this.option("showSubmenuMode"), displayExpr: this.option("displayExpr"), disabledExpr: this.option("disabledExpr"), selectedExpr: this.option("selectedExpr"), itemsExpr: this.option("itemsExpr"), onFocusedItemChanged: e => { if (!e.component.option("visible")) { return } this.option("focusedElement", e.component.option("focusedElement")) }, onSelectionChanged: this._nestedItemOnSelectionChangedHandler.bind(this), onItemClick: this._nestedItemOnItemClickHandler.bind(this), onItemRendered: this._nestedItemOnItemRenderedHandler.bind(this), onLeftFirstItem: isMenuHorizontal ? null : this._moveMainMenuFocus.bind(this, "prevItem"), onLeftLastItem: isMenuHorizontal ? null : this._moveMainMenuFocus.bind(this, "nextItem"), onCloseRootSubmenu: this._moveMainMenuFocus.bind(this, isMenuHorizontal ? "prevItem" : null), onExpandLastSubmenu: isMenuHorizontal ? this._moveMainMenuFocus.bind(this, "nextItem") : null } } _getShowFirstSubmenuMode() { if (!this._isDesktopDevice()) { return "onClick" } const optionValue = this.option("showFirstSubmenuMode"); return (0, _type.isObject)(optionValue) ? optionValue.name : optionValue } _moveMainMenuFocus(direction) { const $items = this._getAvailableItems(); const itemCount = $items.length; const $currentItem = $items.filter(`.${DX_MENU_ITEM_EXPANDED_CLASS}`).eq(0); let itemIndex = $items.index($currentItem); this._hideSubmenu(this._visibleSubmenu); itemIndex += "prevItem" === direction ? -1 : 1; if (itemIndex >= itemCount) { itemIndex = 0 } else if (itemIndex < 0) { itemIndex = itemCount - 1 } const $newItem = $items.eq(itemIndex); this.option("focusedElement", (0, _element.getPublicElement)($newItem)) } _nestedItemOnSelectionChangedHandler(args) { const selectedItem = args.addedItems.length && args.addedItems[0]; const submenu = _m_submenu.default.getInstance(args.element); const { onSelectionChanged: onSelectionChanged } = this._actions; onSelectionChanged(args); selectedItem && this._clearSelectionInSubmenus(selectedItem[0], submenu); this._clearRootSelection(); this._setOptionWithoutOptionChange("selectedItem", selectedItem) } _clearSelectionInSubmenus(item, targetSubmenu) { const cleanAllSubmenus = !arguments.length; (0, _iterator.each)(this._submenus, ((index, submenu) => { const $submenu = submenu._itemContainer(); const isOtherItem = !$submenu.is(null === targetSubmenu || void 0 === targetSubmenu ? void 0 : targetSubmenu._itemContainer()); const $selectedItem = $submenu.find(`.${this._selectedItemClass()}`); if (isOtherItem && $selectedItem.length || cleanAllSubmenus) { $selectedItem.removeClass(this._selectedItemClass()); const selectedItemData = this._getItemData($selectedItem); if (selectedItemData) { selectedItemData.selected = false } submenu._clearSelectedItems() } })) } _clearRootSelection() { const $prevSelectedItem = this.$element().find(".dx-menu-items-container").first().children().children().filter(`.${this._selectedItemClass()}`); if ($prevSelectedItem.length) { const prevSelectedItemData = this._getItemData($prevSelectedItem); prevSelectedItemData.selected = false; $prevSelectedItem.removeClass(this._selectedItemClass()) } } _nestedItemOnItemClickHandler(e) { this._actions.onItemClick(e) } _nestedItemOnItemRenderedHandler(e) { this._actions.onItemRendered(e) } _attachSubmenuHandlers($menuAnchorItem, submenu) { const $submenuOverlayContent = submenu.getOverlayContent(); const submenus = $submenuOverlayContent.find(".dx-submenu"); const submenuMouseLeaveName = (0, _index.addNamespace)(_hover.end, `${this.NAME}_submenu`); submenu.option({ onShowing: this._submenuOnShowingHandler.bind(this, $menuAnchorItem, submenu), onShown: this._submenuOnShownHandler.bind(this, $menuAnchorItem, submenu), onHiding: this._submenuOnHidingHandler.bind(this, $menuAnchorItem, submenu), onHidden: this._submenuOnHiddenHandler.bind(this, $menuAnchorItem, submenu) }); (0, _iterator.each)(submenus, ((index, submenu) => { _events_engine.default.off(submenu, submenuMouseLeaveName); _events_engine.default.on(submenu, submenuMouseLeaveName, null, this._submenuMouseLeaveHandler.bind(this, $menuAnchorItem)) })) } _submenuOnShowingHandler($menuAnchorItem, submenu, _ref) { let { rootItem: rootItem } = _ref; const $border = $menuAnchorItem.children(".dx-context-menu-container-border"); const params = this._getVisibilityChangeEventParams(rootItem, submenu, $menuAnchorItem); this._actions.onSubmenuShowing(params); $border.show(); $menuAnchorItem.addClass(DX_MENU_ITEM_EXPANDED_CLASS) } _submenuOnShownHandler($menuAnchorItem, submenu, _ref2) { let { rootItem: rootItem } = _ref2; const params = this._getVisibilityChangeEventParams(rootItem, submenu, $menuAnchorItem); this._actions.onSubmenuShown(params) } _submenuOnHidingHandler($menuAnchorItem, submenu, eventArgs) { const $border = $menuAnchorItem.children(".dx-context-menu-container-border"); const params = this._getVisibilityChangeEventParams(eventArgs.rootItem, submenu, $menuAnchorItem, true); eventArgs.itemData = params.itemData; eventArgs.rootItem = params.rootItem; eventArgs.submenuContainer = params.submenuContainer; eventArgs.submenu = params.submenu; this._actions.onSubmenuHiding(eventArgs); const { focusedElement: focusedElement } = this.option(); const { focusedElement: submenuFocusedElement } = submenu.option(); const isVisibleSubmenuHiding = this._visibleSubmenu === submenu; const isFocusedElementHiding = focusedElement === submenuFocusedElement; if (isVisibleSubmenuHiding && isFocusedElementHiding) { this.option("focusedElement", $menuAnchorItem) } if (!eventArgs.cancel) { if (isVisibleSubmenuHiding) { this._visibleSubmenu = null } $border.hide(); $menuAnchorItem.removeClass(DX_MENU_ITEM_EXPANDED_CLASS) } } _submenuOnHiddenHandler($menuAnchorItem, submenu, _ref3) { let { rootItem: rootItem } = _ref3; const params = this._getVisibilityChangeEventParams(rootItem, submenu, $menuAnchorItem, true); this._actions.onSubmenuHidden(params) } _getVisibilityChangeEventParams(submenuItem, submenu, $menuAnchorItem, isHide) { let itemData; let $submenuContainer; if (submenuItem) { const anchor = isHide ? (0, _renderer.default)(submenuItem).closest(`.${DX_MENU_ITEM_CLASS}`)[0] : submenuItem; itemData = this._getItemData(anchor); $submenuContainer = (0, _renderer.default)(anchor).find(".dx-submenu").first() } else { const $overlayContent = (0, _renderer.default)(submenu._overlay.content()); itemData = this._getItemData($menuAnchorItem); $submenuContainer = $overlayContent.find(".dx-submenu").first() } return { itemData: itemData, rootItem: (0, _element.getPublicElement)($menuAnchorItem), submenuContainer: (0, _element.getPublicElement)($submenuContainer), submenu: submenu } } _submenuMouseLeaveHandler($rootItem, eventArgs) { const target = (0, _renderer.default)(eventArgs.relatedTarget).parents(".dx-context-menu")[0]; const contextMenu = this._getSubmenuByRootElement($rootItem).getOverlayContent()[0]; if (this.option("hideSubmenuOnMouseLeave") && target !== contextMenu) { this._clearTimeouts(); setTimeout(this._hideSubmenuAfterTimeout.bind(this), this._getDelay("hide")) } } _hideSubmenuAfterTimeout() { if (!this._visibleSubmenu) { return } const isRootItemHovered = (0, _renderer.default)(this._visibleSubmenu.$element().context).hasClass("dx-state-hover"); const isSubmenuItemHovered = this._visibleSubmenu.getOverlayContent().find(".dx-state-hover").length; const hoveredElementFromSubMenu = this._visibleSubmenu.getOverlayContent().get(0).querySelector(":hover"); if (!hoveredElementFromSubMenu && !isSubmenuItemHovered && !isRootItemHovered) { this._visibleSubmenu.hide() } } _getSubmenuByRootElement($rootItem) { if (!$rootItem) { return false } const $submenu = $rootItem.children(".dx-context-menu"); return $submenu.length && _m_submenu.default.getInstance($submenu) } getSubmenuPosition($rootItem) { const isHorizontalMenu = this._isMenuHorizontal(); const submenuDirection = this.option("submenuDirection").toLowerCase(); const rtlEnabled = this.option("rtlEnabled"); const submenuPosition = { collision: "flip", of: $rootItem, precise: true }; switch (submenuDirection) { case "leftortop": submenuPosition.at = "left top"; submenuPosition.my = isHorizontalMenu ? "left bottom" : "right top"; break; case "rightorbottom": submenuPosition.at = isHorizontalMenu ? "left bottom" : "right top"; submenuPosition.my = "left top"; break; default: if (isHorizontalMenu) { submenuPosition.at = rtlEnabled ? "right bottom" : "left bottom"; submenuPosition.my = rtlEnabled ? "right top" : "left top" } else { submenuPosition.at = rtlEnabled ? "left top" : "right top"; submenuPosition.my = rtlEnabled ? "right top" : "left top" } } return submenuPosition } _renderBorderElement($item) { (0, _renderer.default)("<div>").appendTo($item).addClass("dx-context-menu-container-border").hide() } _itemPointerDownHandler(e) { const $target = (0, _renderer.default)(e.target); const $closestItem = $target.closest(this._itemElements()); if ($closestItem.hasClass("dx-menu-item-has-submenu")) { this.option("focusedElement", null); return } super._itemPointerDownHandler(e) } _hoverStartHandler(e) { const mouseMoveEventName = (0, _index.addNamespace)(_pointer.default.move, this.NAME); const $item = this._getItemElementByEventArgs(e); const node = this._dataAdapter.getNodeByItem(this._getItemData($item)); const isSelectionActive = (0, _type.isDefined)(e.buttons) && 1 === e.buttons || !(0, _type.isDefined)(e.buttons) && 1 === e.which; if (this._isItemDisabled($item)) { return } _events_engine.default.off($item, mouseMoveEventName); if (!this._hasChildren(node)) { this._showSubmenuTimer = setTimeout(this._hideSubmenuAfterTimeout.bind(this), this._getDelay("hide")); return } if ("onHover" === this._getShowFirstSubmenuMode() && !isSelectionActive) { const submenu = this._getSubmenuByElement($item); this._clearTimeouts(); if (!submenu.isOverlayVisible()) { _events_engine.default.on($item, mouseMoveEventName, this._itemMouseMoveHandler.bind(this)); this._showSubmenuTimer = this._getDelay("hide") } } } _hoverEndHandler(eventArg) { const $item = this._getItemElementByEventArgs(eventArg); const relatedTarget = (0, _renderer.default)(eventArg.relatedTarget); super._hoverEndHandler(eventArg); this._clearTimeouts(); if (this._isItemDisabled($item)) { return } if (relatedTarget.hasClass("dx-context-menu-content-delimiter")) { return } if (this.option("hideSubmenuOnMouseLeave") && !relatedTarget.hasClass("dx-menu-items-container")) { this._hideSubmenuTimer = setTimeout((() => { this._hideSubmenuAfterTimeout() }), this._getDelay("hide")) } } _hideVisibleSubmenu() { if (!this._visibleSubmenu) { return false } this._hideSubmenu(this._visibleSubmenu); return true } _showSubmenu($itemElement) { const submenu = this._getSubmenuByElement($itemElement); if (this._visibleSubmenu !== submenu) { this._hideVisibleSubmenu() } if (submenu) { this._clearTimeouts(); this.focus(); submenu.show(); this.option("focusedElement", submenu.option("focusedElement")) } this._visibleSubmenu = submenu; this._hoveredRootItem = $itemElement } _hideSubmenu(submenu) { if (submenu) { submenu.hide() } if (this._visibleSubmenu === submenu) { this._visibleSubmenu = null } this._hoveredRootItem = null } _itemMouseMoveHandler(e) { var _e$pointers; if (null !== (_e$pointers = e.pointers) && void 0 !== _e$pointers && _e$pointers.length) { return } const $item = (0, _renderer.default)(e.currentTarget); if (!(0, _type.isDefined)(this._showSubmenuTimer)) { return } this._clearTimeouts(); this._showSubmenuTimer = setTimeout((() => { const submenu = this._getSubmenuByElement($item); if (submenu && !submenu.isOverlayVisible()) { this._showSubmenu($item) } }), this._getDelay("show")) } _clearTimeouts() { clearTimeout(this._hideSubmenuTimer); clearTimeout(this._showSubmenuTimer) } _getSubmenuByElement($itemElement, itemData) { const submenu = this._getSubmenuByRootElement($itemElement); if (submenu) { return submenu } itemData = itemData ?? this._getItemData($itemElement); const node = this._dataAdapter.getNodeByItem(itemData); return this._hasChildren(node) && this._renderSubmenuItems(node, $itemElement) } _updateSubmenuVisibilityOnClick(actionArgs) { const args = actionArgs.args.length && actionArgs.args[0]; if (!args || this._disabledGetter(args.itemData)) { return } const $itemElement = (0, _renderer.default)(args.itemElement); const currentSubmenu = this._getSubmenuByElement($itemElement, args.itemData); this._updateSelectedItemOnClick(actionArgs); if (this._visibleSubmenu) { if (this._visibleSubmenu === currentSubmenu) { if ("onClick" === this.option("showFirstSubmenuMode")) { this._hideSubmenu(this._visibleSubmenu) } return } this._hideSubmenu(this._visibleSubmenu) } if (!currentSubmenu) { return } if (!currentSubmenu.isOverlayVisible()) { this._showSubmenu($itemElement) } } _optionChanged(args) { if (ACTIONS.includes(args.name)) { this._initActions(); return } switch (args.name) { case "orientation": case "submenuDirection": this._invalidate(); break; case "showFirstSubmenuMode": case "hideSubmenuOnMouseLeave": break; case "showSubmenuMode": this._changeSubmenusOption(args.name, args.value); break; case "adaptivityEnabled": args.value ? this._initAdaptivity() : this._removeAdaptivity(); break; case "width": if (this._isAdaptivityEnabled()) { this._treeView.option(args.name, args.value); this._overlay.option(args.name, args.value) } super._optionChanged(args); this._dimensionChanged(); break; case "animation": if (this._isAdaptivityEnabled()) { this._treeView.option("animationEnabled", !!args.value) } super._optionChanged(args); break; default: if (this._isAdaptivityEnabled() && (args.name === args.fullName || "items" === args.name)) { this._treeView.option(args.fullName, args.value) } super._optionChanged(args) } } _changeSubmenusOption(name, value) { (0, _iterator.each)(this._submenus, ((index, submenu) => { submenu.option(name, value) })) } selectItem(itemElement) { this._hideSubmenu(this._visibleSubmenu); super.selectItem(itemElement) } unselectItem(itemElement) { this._hideSubmenu(this._visibleSubmenu); super.unselectItem(itemElement) } }(0, _component_registrator.default)("dxMenu", Menu); exports.default = Menu }, 72878: /*!*****************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/ui/menu/m_submenu.js ***! \*****************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; __webpack_require__( /*! ../../../ui/context_menu */ 34378); var _position = _interopRequireDefault(__webpack_require__( /*! ../../../common/core/animation/position */ 3030)); var _element = __webpack_require__( /*! ../../../core/element */ 61404); var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../../core/renderer */ 64553)); var _common = __webpack_require__( /*! ../../../core/utils/common */ 17781); var _extend = __webpack_require__( /*! ../../../core/utils/extend */ 52576); var _size = __webpack_require__( /*! ../../../core/utils/size */ 57653); var _m_context_menu = _interopRequireDefault(__webpack_require__( /*! ../../ui/context_menu/m_context_menu */ 66900)); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } class Submenu extends _m_context_menu.default { _getDefaultOptions() { return (0, _extend.extend)(super._getDefaultOptions(), { orientation: "horizontal", tabIndex: null, onHoverStart: _common.noop }) } _initDataAdapter() { this._dataAdapter = this.option("_dataAdapter"); if (!this._dataAdapter) { super._initDataAdapter() } } _renderContentImpl() { this._renderContextMenuOverlay(); super._renderContentImpl(); const node = this._dataAdapter.getNodeByKey(this.option("_parentKey")); node && this._renderItems(this._getChildNodes(node)); this._renderDelimiter() } _renderDelimiter() { this.$contentDelimiter = (0, _renderer.default)("<div>").appendTo(this._itemContainer()).addClass("dx-context-menu-content-delimiter") } _getOverlayOptions() { return (0, _extend.extend)(true, super._getOverlayOptions(), { onPositioned: this._overlayPositionedActionHandler.bind(this), position: { precise: true } }) } _overlayPositionedActionHandler(arg) { this._showDelimiter(arg) } _hoverEndHandler(e) { super._hoverEndHandler(e); this._toggleFocusClass(false, e.currentTarget) } _isMenuHorizontal() { return "horizontal" === this.option("orientation") } _hoverStartHandler(e) { const hoverStartAction = this.option("onHoverStart"); hoverStartAction(e); super._hoverStartHandler(e); this._toggleFocusClass(true, e.currentTarget) } _drawSubmenu($rootItem) { this._actions.onShowing({ rootItem: (0, _element.getPublicElement)($rootItem), submenu: this }); super._drawSubmenu($rootItem); this._actions.onShown({ rootItem: (0, _element.getPublicElement)($rootItem), submenu: this }) } _hideSubmenu($rootItem) { this._actions.onHiding({ cancel: true, rootItem: (0, _element.getPublicElement)($rootItem), submenu: this }); super._hideSubmenu($rootItem); this._actions.onHidden({ rootItem: (0, _element.getPublicElement)($rootItem), submenu: this }) } _showDelimiter(arg) { if (!this.$contentDelimiter) { return } const $submenu = this._itemContainer().children(".dx-submenu").eq(0); const $rootItem = this.option("position").of.find(".dx-context-menu-container-border"); const position = { of: $submenu, precise: true }; const containerOffset = arg.position; const vLocation = containerOffset.v.location; const hLocation = containerOffset.h.location; const rootOffset = $rootItem.offset(); const offsetLeft = Math.round(rootOffset.left); const offsetTop = Math.round(rootOffset.top); const rootWidth = (0, _size.getWidth)($rootItem); const rootHeight = (0, _size.getHeight)($rootItem); const submenuWidth = (0, _size.getWidth)($submenu); const submenuHeight = (0, _size.getHeight)($submenu); this.$contentDelimiter.css("display", "block"); (0, _size.setWidth)(this.$contentDelimiter, this._isMenuHorizontal() ? rootWidth < submenuWidth ? rootWidth : submenuWidth : 3); (0, _size.setHeight)(this.$contentDelimiter, this._isMenuHorizontal() ? 3 : rootHeight < submenuHeight ? rootHeight : submenuHeight); if (this._isMenuHorizontal()) { if (vLocation > offsetTop) { if (Math.round(hLocation) === offsetLeft) { position.offset = "0 -2.5"; position.at = position.my = "left top" } else { position.offset = "0 -2.5"; position.at = position.my = "right top" } } else { (0, _size.setHeight)(this.$contentDelimiter, 5); if (Math.round(hLocation) === offsetLeft) { position.offset = "0 5"; position.at = position.my = "left bottom" } else { position.offset = "0 5"; position.at = position.my = "right bottom" } } } else if (hLocation > offsetLeft) { if (Math.round(vLocation) === offsetTop) { position.offset = "-2.5 0"; position.at = position.my = "left top" } else { position.offset = "-2.5 0"; position.at = position.my = "left bottom" } } else if (Math.round(vLocation) === offsetTop) { position.offset = "2.5 0"; position.at = position.my = "right top" } else { position.offset = "2.5 0"; position.at = position.my = "right bottom" } _position.default.setup(this.$contentDelimiter, position) } _getContextMenuPosition() { return this.option("position") } isOverlayVisible() { return this._overlay.option("visible") } getOverlayContent() { return this._overlay.$content() } } exports.default = Submenu }, 68128: /*!************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/ui/multi_view/m_multi_view.animation.js ***! \************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.animation = exports._translator = void 0; var _animation = __webpack_require__( /*! ../../../common/core/animation */ 16826); var _translator2 = __webpack_require__( /*! ../../../common/core/animation/translator */ 88603); exports._translator = { move($element, position) { (0, _translator2.move)($element, { left: position }) } }; exports.animation = { moveTo($element, position, duration, completeAction) { _animation.fx.animate($element, { type: "slide", to: { left: position }, duration: duration, complete: completeAction }) }, complete($element) { _animation.fx.stop($element, true) } } }, 21265: /*!*******************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/ui/number_box/m_number_box.base.js ***! \*******************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _events_engine = _interopRequireDefault(__webpack_require__( /*! ../../../common/core/events/core/events_engine */ 92774)); var _index = __webpack_require__( /*! ../../../common/core/events/utils/index */ 98834); var _message = _interopRequireDefault(__webpack_require__( /*! ../../../common/core/localization/message */ 4671)); var _devices = _interopRequireDefault(__webpack_require__( /*! ../../../core/devices */ 65951)); var _dom_adapter = _interopRequireDefault(__webpack_require__( /*! ../../../core/dom_adapter */ 64960)); var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../../core/renderer */ 64553)); var _browser = _interopRequireDefault(__webpack_require__( /*! ../../../core/utils/browser */ 48314)); var _common = __webpack_require__( /*! ../../../core/utils/common */ 17781); var _deferred = __webpack_require__( /*! ../../../core/utils/deferred */ 87739); var _math = __webpack_require__( /*! ../../../core/utils/math */ 50254); var _type = __webpack_require__( /*! ../../../core/utils/type */ 11528); var _m_text_editor = _interopRequireDefault(__webpack_require__( /*! ../../ui/text_box/m_text_editor */ 37932)); var _m_number_box = _interopRequireDefault(__webpack_require__( /*! ./m_number_box.spins */ 1979)); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } function _extends() { return _extends = Object.assign ? Object.assign.bind() : function(n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) { ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]) } } return n }, _extends.apply(null, arguments) } const math = Math; const FIREFOX_CONTROL_KEYS = ["tab", "del", "backspace", "leftArrow", "rightArrow", "home", "end", "enter"]; class NumberBoxBase extends _m_text_editor.default { _supportedKeys() { return _extends({}, super._supportedKeys(), { upArrow(e) { if (!(0, _index.isCommandKeyPressed)(e)) { e.preventDefault(); e.stopPropagation(); this._spinUpChangeHandler(e) } }, downArrow(e) { if (!(0, _index.isCommandKeyPressed)(e)) { e.preventDefault(); e.stopPropagation(); this._spinDownChangeHandler(e) } }, enter() {} }) } _getDefaultOptions() { return _extends({}, super._getDefaultOptions(), { value: 0, min: void 0, max: void 0, step: 1, showSpinButtons: false, useLargeSpinButtons: true, mode: "text", invalidValueMessage: _message.default.format("dxNumberBox-invalidValueMessage"), buttons: void 0 }) } _useTemplates() { return false } _getDefaultButtons() { return super._getDefaultButtons().concat([{ name: "spins", Ctor: _m_number_box.default }]) } _isSupportInputMode() { const version = parseFloat(_browser.default.version); return _browser.default.chrome && version >= 66 || _browser.default.safari && version >= 12 } _defaultOptionsRules() { return super._defaultOptionsRules().concat([{ device: () => _devices.default.real().generic && !_devices.default.isSimulator(), options: { useLargeSpinButtons: false } }, { device: function() { return "desktop" !== _devices.default.real().deviceType && !this._isSupportInputMode() }.bind(this), options: { mode: "number" } }]) } _initMarkup() { this._renderSubmitElement(); this.$element().addClass("dx-numberbox"); super._initMarkup(); this._toggleTabIndex() } _getDefaultAttributes() { const attributes = super._getDefaultAttributes(); attributes.inputmode = "decimal"; return attributes } _renderContentImpl() { this.option("isValid") && this._validateValue(this.option("value")); this.setAria("role", "spinbutton") } _renderSubmitElement() { this._$submitElement = (0, _renderer.default)("<input>").attr("type", "hidden").appendTo(this.$element()); this._setSubmitValue(this.option("value")) } _setSubmitValue(value) { this._getSubmitElement().val((0, _common.applyServerDecimalSeparator)(value)) } _getSubmitElement() { return this._$submitElement } _keyPressHandler(e) { super._keyPressHandler(); const char = (0, _index.getChar)(e); const isInputCharValid = /[\d.,eE\-+]/.test(char); if (!isInputCharValid) { const keyName = (0, _index.normalizeKeyName)(e); if ((0, _index.isCommandKeyPressed)(e) || keyName && FIREFOX_CONTROL_KEYS.includes(keyName)) { return } e.preventDefault(); return } this._keyPressed = true } _hasMouseWheelHandler() { return true } _onMouseWheel(dxEvent) { dxEvent.delta > 0 ? this._spinValueChange(1, dxEvent) : this._spinValueChange(-1, dxEvent) } _renderValue() { const inputValue = this._input().val(); const value = this.option("value"); if (!inputValue.length || Number(inputValue) !== value) { this._forceValueRender(); this._toggleEmptinessEventHandler() } const valueText = (0, _type.isDefined)(value) ? null : _message.default.format("dxNumberBox-noDataText"); this.setAria({ valuenow: (0, _common.ensureDefined)(value, ""), valuetext: valueText }); this.option("text", this._input().val()); this._updateButtons(); return (0, _deferred.Deferred)().resolve() } _forceValueRender() { const value = this.option("value"); const number = Number(value); const formattedValue = isNaN(number) ? "" : this._applyDisplayValueFormatter(value); this._renderDisplayText(formattedValue) } _applyDisplayValueFormatter(value) { const { displayValueFormatter: displayValueFormatter } = this.option(); return null === displayValueFormatter || void 0 === displayValueFormatter ? void 0 : displayValueFormatter(value) } _renderProps() { this._input().prop({ min: this.option("min"), max: this.option("max"), step: this.option("step") }); this.setAria({ valuemin: (0, _common.ensureDefined)(this.option("min"), ""), valuemax: (0, _common.ensureDefined)(this.option("max"), "") }) } _spinButtonsPointerDownHandler() { const $input = this._input(); if (!this.option("useLargeSpinButtons") && _dom_adapter.default.getActiveElement() !== $input[0]) { _events_engine.default.trigger($input, "focus") } } _spinUpChangeHandler(e) { if (!this.option("readOnly")) { this._spinValueChange(1, e.event || e) } } _spinDownChangeHandler(e) { if (!this.option("readOnly")) { this._spinValueChange(-1, e.event || e) } } _spinValueChange(sign, dxEvent) { const step = parseFloat(this.option("step")); if (0 === step) { return } let value = parseFloat(this._normalizeInputValue()) || 0; value = this._correctRounding(value, step * sign); const min = this.option("min"); const max = this.option("max"); if ((0, _type.isDefined)(min)) { value = Math.max(min, value) } if ((0, _type.isDefined)(max)) { value = Math.min(max, value) } this._saveValueChangeEvent(dxEvent); this.option("value", value) } _correctRounding(value, step) { const regex = /[,.](.*)/; const isFloatValue = regex.test(value); const isFloatStep = regex.test(step); if (isFloatValue || isFloatStep) { const valueAccuracy = isFloatValue ? regex.exec(value)[0].length : 0; const stepAccuracy = isFloatStep ? regex.exec(step)[0].length : 0; const accuracy = math.max(valueAccuracy, stepAccuracy); value = this._round(value + step, accuracy); return value } return value + step } _round(value, precision) { precision = precision || 0; const multiplier = 10 ** precision; value *= multiplier; value = Math.round(value) / multiplier; return value } _renderValueChangeEvent() { super._renderValueChangeEvent(); const forceValueChangeEvent = (0, _index.addNamespace)("focusout", "NumberBoxForceValueChange"); _events_engine.default.off(this.element(), forceValueChangeEvent); _events_engine.default.on(this.element(), forceValueChangeEvent, this._forceRefreshInputValue.bind(this)) } _forceRefreshInputValue() { const { mode: mode } = this.option(); if ("number" === mode) { return } const $input = this._input(); const formattedValue = this._applyDisplayValueFormatter(this.option("value")); $input.val(null); $input.val(formattedValue) } _valueChangeEventHandler(e) { const $input = this._input(); const inputValue = this._normalizeText(); const value = this._parseValue(inputValue); const valueHasDigits = "." !== inputValue && "-" !== inputValue; if (this._isValueValid() && !this._validateValue(value)) { $input.val(this._applyDisplayValueFormatter(value)); return } if (valueHasDigits) { super._valueChangeEventHandler(e, isNaN(value) ? null : value) } this._applyValueBoundaries(inputValue, value); this.validationRequest.fire({ value: value, editor: this }) } _applyValueBoundaries(inputValue, parsedValue) { const isValueIncomplete = this._isValueIncomplete(inputValue); const isValueCorrect = this._isValueInRange(inputValue); if (!isValueIncomplete && !isValueCorrect && null !== parsedValue) { if (Number(inputValue) !== parsedValue) { this._input().val(this._applyDisplayValueFormatter(parsedValue)) } } } _replaceCommaWithPoint(value) { return value.replace(",", ".") } _inputIsInvalid() { const { mode: mode } = this.option(); const isNumberMode = "number" === mode; const validityState = this._input().get(0).validity; return isNumberMode && (null === validityState || void 0 === validityState ? void 0 : validityState.badInput) } _renderDisplayText(text) { if (this._inputIsInvalid()) { return } super._renderDisplayText(text) } _isValueIncomplete(value) { return /(^-$)|(^-?\d*\.$)|(\d+e-?$)/i.test(value) } _isValueInRange(value) { return (0, _math.inRange)(value, this.option("min"), this.option("max")) } _isNumber(value) { return null !== this._parseValue(value) } _validateValue(value) { const inputValue = this._normalizeText(); const isValueValid = this._isValueValid(); let isValid = true; const isNumber = this._isNumber(inputValue); if (isNaN(Number(value))) { isValid = false } if (!value && isValueValid) { isValid = true } else if (!isNumber && !isValueValid) { isValid = false } this.option({ isValid: isValid, validationError: isValid ? null : { editorSpecific: true, message: this.option("invalidValueMessage") } }); return isValid } _normalizeInputValue() { return this._parseValue(this._normalizeText()) } _normalizeText() { const value = this._input().val().trim(); return this._replaceCommaWithPoint(value) } _parseValue(value) { const number = parseFloat(value); if (isNaN(number)) { return null } return (0, _math.fitIntoRange)(number, this.option("min"), this.option("max")) } _clearValue() { if (this._inputIsInvalid()) { this._input().val(""); this._validateValue() } super._clearValue() } clear() { if (null === this.option("value")) { this.option("text", ""); if (this._input().length) { this._renderValue() } } else { this.option("value", null) } } _optionChanged(args) { switch (args.name) { case "value": this._validateValue(args.value); this._setSubmitValue(args.value); super._optionChanged(args); this._resumeValueChangeAction(); break; case "step": this._renderProps(); break; case "min": case "max": this._renderProps(); this.option("value", this._parseValue(this.option("value"))); break; case "showSpinButtons": case "useLargeSpinButtons": this._updateButtons(["spins"]); break; case "invalidValueMessage": break; default: super._optionChanged(args) } } } exports.default = NumberBoxBase }, 86445: /*!********************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/ui/number_box/m_number_box.caret.js ***! \********************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.getCaretBoundaries = exports.getCaretAfterFormat = void 0; exports.getCaretInBoundaries = getCaretInBoundaries; exports.isCaretInBoundaries = exports.getCaretWithOffset = exports.getCaretOffset = void 0; var _number = (e = __webpack_require__( /*! ../../../common/core/localization/number */ 52771), e && e.__esModule ? e : { default: e }); var e; var _common = __webpack_require__( /*! ../../../core/utils/common */ 17781); var _math = __webpack_require__( /*! ../../../core/utils/math */ 50254); var _m_utils = __webpack_require__( /*! ./m_utils */ 8758); const getCaretBoundaries = function(text, format) { if ("string" === typeof format) { const signParts = format.split(";"); const sign = _number.default.getSign(text, format); signParts[1] = signParts[1] || `-${signParts[0]}`; format = signParts[sign < 0 ? 1 : 0]; const mockEscapedStubs = str => str.replace(/'([^']*)'/g, (str => str.split("").map((() => " ")).join("").substr(2))); format = mockEscapedStubs(format); const prefixStubLength = /^[^#0.,]*/.exec(format)[0].length; const postfixStubLength = /[^#0.,]*$/.exec(format)[0].length; return { start: prefixStubLength, end: text.length - postfixStubLength } } return { start: 0, end: text.length } }; exports.getCaretBoundaries = getCaretBoundaries; const _getDigitCountBeforeIndex = function(index, text) { const decimalSeparator = _number.default.getDecimalSeparator(); const regExp = new RegExp(`[^0-9${(0,_common.escapeRegExp)(decimalSeparator)}]`, "g"); const textBeforePosition = text.slice(0, index); return textBeforePosition.replace(regExp, "").length }; const _reverseText = function(text) { return text.split("").reverse().join("") }; const _getDigitPositionByIndex = function(digitIndex, text) { if (!digitIndex) { return -1 } const regExp = /[0-9]/g; let counter = 1; let index = null; let result = regExp.exec(text); while (result) { index = result.index; if (counter >= digitIndex) { return index } counter++; result = regExp.exec(text) } return null === index ? text.length : index }; const getCaretWithOffset = function(caret, offset) { if (void 0 === caret.start) { caret = { start: caret, end: caret } } return { start: caret.start + offset, end: caret.end + offset } }; exports.getCaretWithOffset = getCaretWithOffset; exports.getCaretAfterFormat = function(text, formatted, caret, format) { caret = getCaretWithOffset(caret, 0); const point = _number.default.getDecimalSeparator(); const isSeparatorBasedText = function(text) { return 1 === text.length && !!text.match(/^[,.][0-9]*$/g) }(text); const realSeparatorOccurrenceIndex = (0, _m_utils.getRealSeparatorIndex)(format).occurrence; const pointPosition = isSeparatorBasedText ? 0 : (0, _m_utils.getNthOccurrence)(text, point, realSeparatorOccurrenceIndex); const newPointPosition = (0, _m_utils.getNthOccurrence)(formatted, point, realSeparatorOccurrenceIndex); const textParts = (0, _m_utils.splitByIndex)(text, pointPosition); const formattedParts = (0, _m_utils.splitByIndex)(formatted, newPointPosition); const isCaretOnFloat = -1 !== pointPosition && caret.start > pointPosition; if (isCaretOnFloat) { const relativeIndex = caret.start - pointPosition - 1; const digitsBefore = _getDigitCountBeforeIndex(relativeIndex, textParts[1]); const newPosition = formattedParts[1] ? newPointPosition + 1 + _getDigitPositionByIndex(digitsBefore, formattedParts[1]) + 1 : formatted.length; return getCaretInBoundaries(newPosition, formatted, format) } const formattedIntPart = function(text) { return text.replace(/[^0-9e]+$/, "") }(formattedParts[0]); const positionFromEnd = textParts[0].length - caret.start; const digitsFromEnd = _getDigitCountBeforeIndex(positionFromEnd, _reverseText(textParts[0])); const newPositionFromEnd = _getDigitPositionByIndex(digitsFromEnd, _reverseText(formattedIntPart)); const newPositionFromBegin = formattedIntPart.length - (newPositionFromEnd + 1); return getCaretInBoundaries(newPositionFromBegin, formatted, format) }; exports.isCaretInBoundaries = function(caret, text, format) { caret = getCaretWithOffset(caret, 0); const boundaries = getCaretInBoundaries(caret, text, format); return caret.start >= boundaries.start && caret.end <= boundaries.end }; function getCaretInBoundaries(caret, text, format) { caret = getCaretWithOffset(caret, 0); const boundaries = getCaretBoundaries(text, format); const adjustedCaret = { start: (0, _math.fitIntoRange)(caret.start, boundaries.start, boundaries.end), end: (0, _math.fitIntoRange)(caret.end, boundaries.start, boundaries.end) }; return adjustedCaret } exports.getCaretOffset = function(previousText, newText, format) { const previousBoundaries = getCaretBoundaries(previousText, format); const newBoundaries = getCaretBoundaries(newText, format); return newBoundaries.start - previousBoundaries.start } }, 42284: /*!**************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/ui/number_box/m_number_box.js ***! \**************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _component_registrator = _interopRequireDefault(__webpack_require__( /*! ../../../core/component_registrator */ 92848)); var _m_number_box = _interopRequireDefault(__webpack_require__( /*! ./m_number_box.mask */ 37148)); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } }(0, _component_registrator.default)("dxNumberBox", _m_number_box.default); exports.default = _m_number_box.default }, 37148: /*!*******************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/ui/number_box/m_number_box.mask.js ***! \*******************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _events_engine = _interopRequireDefault(__webpack_require__( /*! ../../../common/core/events/core/events_engine */ 92774)); var _double_click = __webpack_require__( /*! ../../../common/core/events/double_click */ 5636); var _index = __webpack_require__( /*! ../../../common/core/events/utils/index */ 98834); var _number = __webpack_require__( /*! ../../../common/core/localization/ldml/number */ 33687); var _number2 = _interopRequireDefault(__webpack_require__( /*! ../../../common/core/localization/number */ 52771)); var _devices = _interopRequireDefault(__webpack_require__( /*! ../../../core/devices */ 65951)); var _common = __webpack_require__( /*! ../../../core/utils/common */ 17781); var _math = __webpack_require__( /*! ../../../core/utils/math */ 50254); var _type = __webpack_require__( /*! ../../../core/utils/type */ 11528); var _m_number_box = _interopRequireDefault(__webpack_require__( /*! ./m_number_box.base */ 21265)); var _m_number_box2 = __webpack_require__( /*! ./m_number_box.caret */ 86445); var _m_utils = __webpack_require__( /*! ./m_utils */ 8758); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } function _extends() { return _extends = Object.assign ? Object.assign.bind() : function(n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) { ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]) } } return n }, _extends.apply(null, arguments) } class NumberBoxMask extends _m_number_box.default { _getDefaultOptions() { return _extends({}, super._getDefaultOptions(), { useMaskBehavior: true, format: null }) } _isDeleteKey(key) { return "del" === key } _supportedKeys() { if (!this._useMaskBehavior()) { return super._supportedKeys() } return _extends({}, super._supportedKeys(), { minus: this._revertSign.bind(this), del: this._removeHandler.bind(this), backspace: this._removeHandler.bind(this), leftArrow: this._arrowHandler.bind(this, -1), rightArrow: this._arrowHandler.bind(this, 1), home: this._moveCaretToBoundaryEventHandler.bind(this, 1), enter: this._updateFormattedValue.bind(this), end: this._moveCaretToBoundaryEventHandler.bind(this, -1) }) } _getTextSeparatorIndex(text) { const decimalSeparator = _number2.default.getDecimalSeparator(); const realSeparatorOccurrenceIndex = (0, _m_utils.getRealSeparatorIndex)(this.option("format")).occurrence; return (0, _m_utils.getNthOccurrence)(text, decimalSeparator, realSeparatorOccurrenceIndex) } _focusInHandler(e) { if (!this._preventNestedFocusEvent(e)) { this.clearCaretTimeout(); this._caretTimeout = setTimeout((() => { this._caretTimeout = void 0; const caret = this._caret(); if (caret.start === caret.end && this._useMaskBehavior()) { const text = this._getInputVal(); const decimalSeparatorIndex = this._getTextSeparatorIndex(text); if (decimalSeparatorIndex >= 0) { this._caret({ start: decimalSeparatorIndex, end: decimalSeparatorIndex }) } else { this._moveCaretToBoundaryEventHandler(-1, e) } } }), 0) } super._focusInHandler(e) } _focusOutHandler(e) { const shouldHandleEvent = !this._preventNestedFocusEvent(e); if (shouldHandleEvent) { this._focusOutOccurs = true; if (this._useMaskBehavior()) { this._updateFormattedValue() } } super._focusOutHandler(e); if (shouldHandleEvent) { this._focusOutOccurs = false } } _hasValueBeenChanged(inputValue) { const format = this._getFormatPattern(); const value = this.option("value"); const formatted = this._format(value, format) || ""; return formatted !== inputValue } _updateFormattedValue() { const inputValue = this._getInputVal(); if (this._hasValueBeenChanged(inputValue)) { this._updateParsedValue(); this._adjustParsedValue(); this._setTextByParsedValue(); const { value: value } = this.option(); if (this._parsedValue !== value) { _events_engine.default.trigger(this._input(), "change") } } } _arrowHandler(step, e) { if (!this._useMaskBehavior()) { return } const text = this._getInputVal(); const format = this._getFormatPattern(); let nextCaret = (0, _m_number_box2.getCaretWithOffset)(this._caret(), step); if (!(0, _m_number_box2.isCaretInBoundaries)(nextCaret, text, format)) { nextCaret = 1 === step ? nextCaret.end : nextCaret.start; e.preventDefault(); this._caret((0, _m_number_box2.getCaretInBoundaries)(nextCaret, text, format)) } } _moveCaretToBoundary(direction) { const boundaries = (0, _m_number_box2.getCaretBoundaries)(this._getInputVal(), this._getFormatPattern()); const newCaret = (0, _m_number_box2.getCaretWithOffset)(1 === direction ? boundaries.start : boundaries.end, 0); this._caret(newCaret) } _moveCaretToBoundaryEventHandler(direction, e) { if (!this._useMaskBehavior() || null !== e && void 0 !== e && e.shiftKey) { return } this._moveCaretToBoundary(direction); null === e || void 0 === e || e.preventDefault() } _shouldMoveCaret(text, caret) { const decimalSeparator = _number2.default.getDecimalSeparator(); const isDecimalSeparatorNext = text.charAt(caret.end) === decimalSeparator; const moveToFloat = (this._lastKey === decimalSeparator || "." === this._lastKey || "," === this._lastKey) && isDecimalSeparatorNext; return moveToFloat } _getInputVal() { return _number2.default.convertDigits(this._input().val(), true) } _keyboardHandler(e) { this.clearCaretTimeout(); this._lastKey = _number2.default.convertDigits((0, _index.getChar)(e), true); this._lastKeyName = (0, _index.normalizeKeyName)(e); if (!this._shouldHandleKey(e.originalEvent)) { return super._keyboardHandler(e) } const normalizedText = this._getInputVal(); const caret = this._caret(); let enteredChar; if ("minus" === this._lastKeyName) { enteredChar = "" } else { enteredChar = 110 === e.which ? _number2.default.getDecimalSeparator() : this._lastKey } const newValue = this._tryParse(normalizedText, caret, enteredChar); if (this._shouldMoveCaret(normalizedText, caret)) { this._moveCaret(1); e.originalEvent.preventDefault() } if (void 0 === newValue) { if ("minus" !== this._lastKeyName) { e.originalEvent.preventDefault() } } else { this._parsedValue = newValue } return super._keyboardHandler(e) } _keyPressHandler(e) { if (!this._useMaskBehavior()) { super._keyPressHandler(e) } } _removeHandler(e) { const caret = this._caret(); const text = this._getInputVal(); let { start: start } = caret; let { end: end } = caret; this._lastKey = (0, _index.getChar)(e); this._lastKeyName = (0, _index.normalizeKeyName)(e); const isDeleteKey = this._isDeleteKey(this._lastKeyName); const isBackspaceKey = !isDeleteKey; if (start === end) { const caretPosition = start; const canDelete = isBackspaceKey && caretPosition > 0 || isDeleteKey && caretPosition < text.length; if (canDelete) { isDeleteKey && end++; isBackspaceKey && start-- } else { e.preventDefault(); return } } const char = text.slice(start, end); if (this._isStub(char)) { this._moveCaret(isDeleteKey ? 1 : -1); if (this._parsedValue < 0 || 1 / this._parsedValue === -1 / 0) { this._revertSign(e); this._setTextByParsedValue(); const shouldTriggerInputEvent = this.option("valueChangeEvent").split(" ").includes("input"); if (shouldTriggerInputEvent) { _events_engine.default.trigger(this._input(), "input") } } e.preventDefault(); return } const decimalSeparator = _number2.default.getDecimalSeparator(); if (char === decimalSeparator) { const decimalSeparatorIndex = text.indexOf(decimalSeparator); if (this._isNonStubAfter(decimalSeparatorIndex + 1)) { this._moveCaret(isDeleteKey ? 1 : -1); e.preventDefault() } return } if (end - start < text.length) { const editedText = this._replaceSelectedText(text, { start: start, end: end }, ""); const noDigits = editedText.search(/[0-9]/) < 0; if (noDigits && this._isValueInRange(0)) { this._parsedValue = this._parsedValue < 0 || 1 / this._parsedValue === -1 / 0 ? -0 : 0; return } } const valueAfterRemoving = this._tryParse(text, { start: start, end: end }, ""); if (void 0 === valueAfterRemoving) { e.preventDefault() } else { this._parsedValue = valueAfterRemoving } } _isPercentFormat() { const format = this._getFormatPattern(); const noEscapedFormat = format.replace(/'[^']+'/g, ""); return -1 !== noEscapedFormat.indexOf("%") } _parse(text, format) { const formatOption = this.option("format"); const isCustomParser = (0, _type.isFunction)(formatOption.parser); const parser = isCustomParser ? formatOption.parser : _number2.default.parse; let integerPartStartIndex = 0; if (!isCustomParser) { const formatPointIndex = (0, _m_utils.getRealSeparatorIndex)(format).index; const textPointIndex = this._getTextSeparatorIndex(text); const formatIntegerPartLength = -1 !== formatPointIndex ? formatPointIndex : format.length; const textIntegerPartLength = -1 !== textPointIndex ? textPointIndex : text.length; if (textIntegerPartLength > formatIntegerPartLength && -1 === format.indexOf("#")) { integerPartStartIndex = textIntegerPartLength - formatIntegerPartLength } } text = text.substr(integerPartStartIndex); return parser(text, format) } _format(value, format) { const formatOption = this.option("format"); const customFormatter = (null === formatOption || void 0 === formatOption ? void 0 : formatOption.formatter) || formatOption; const formatter = (0, _type.isFunction)(customFormatter) ? customFormatter : _number2.default.format; const formattedValue = null === value ? "" : formatter(value, format); return formattedValue } _getFormatPattern() { if (!this._currentFormat) { this._updateFormat() } return this._currentFormat } _updateFormat() { const { format: format } = this.option(); const isCustomParser = (0, _type.isFunction)(null === format || void 0 === format ? void 0 : format.parser); const isLDMLPattern = (0, _type.isString)(format) && (format.includes("0") || format.includes("#")); const isExponentialFormat = "exponential" === format || "exponential" === (null === format || void 0 === format ? void 0 : format.type); const shouldUseFormatAsIs = isCustomParser || isLDMLPattern || isExponentialFormat; this._currentFormat = shouldUseFormatAsIs ? format : (0, _number.getFormat)((value => { const text = this._format(value, format); return _number2.default.convertDigits(text, true) })) } _getFormatForSign(text) { const format = this._getFormatPattern(); if ((0, _type.isString)(format)) { const signParts = format.split(";"); const sign = _number2.default.getSign(text, format); signParts[1] = signParts[1] || `-${signParts[0]}`; return sign < 0 ? signParts[1] : signParts[0] } const sign = _number2.default.getSign(text); return sign < 0 ? "-" : "" } _removeStubs(text, excludeComma) { const format = this._getFormatForSign(text); const thousandsSeparator = _number2.default.getThousandsSeparator(); const stubs = this._getStubs(format); let result = text; if (stubs.length) { const prefixStubs = stubs[0]; const postfixRegex = new RegExp(`(${(0,_common.escapeRegExp)(stubs[1]||"")})$`, "g"); const decoratorsRegex = new RegExp(`[-${(0,_common.escapeRegExp)(excludeComma?"":thousandsSeparator)}]`, "g"); result = result.replace(prefixStubs, "").replace(postfixRegex, "").replace(decoratorsRegex, "") } return result } _getStubs(format) { const regExpResult = /[^']([#0.,]+)/g.exec(format); const pattern = regExpResult && regExpResult[0].trim(); return format.split(pattern).map((stub => stub.replace(/'/g, ""))) } _truncateToPrecision(value, maxPrecision) { if ((0, _type.isDefined)(value)) { const strValue = value.toString(); const decimalSeparatorIndex = strValue.indexOf("."); if (strValue && decimalSeparatorIndex > -1) { const parsedValue = parseFloat(strValue.substr(0, decimalSeparatorIndex + maxPrecision + 1)); return isNaN(parsedValue) ? value : parsedValue } } return value } _tryParse(text, selection, char) { const isTextSelected = selection.start !== selection.end; const isWholeTextSelected = isTextSelected && 0 === selection.start && selection.end === text.length; const decimalSeparator = _number2.default.getDecimalSeparator(); if (isWholeTextSelected && char === decimalSeparator) { return 0 } const editedText = this._replaceSelectedText(text, selection, char); const format = this._getFormatPattern(); let parsedValue = this._getParsedValue(editedText, format); const maxPrecision = !format.parser && this._getPrecisionLimits(editedText).max; const isValueChanged = parsedValue !== this._parsedValue; const isDecimalPointRestricted = char === decimalSeparator && 0 === maxPrecision; const isUselessCharRestricted = !isTextSelected && !isValueChanged && "-" !== char && this._isStub(char); if (isDecimalPointRestricted || isUselessCharRestricted) { return } if ("" === this._removeStubs(editedText)) { parsedValue = Math.abs(0 * this._parsedValue) } if (isNaN(parsedValue)) { return } const value = null === parsedValue ? this._parsedValue : parsedValue; parsedValue = maxPrecision ? this._truncateToPrecision(value, maxPrecision) : parsedValue; if (!format.parser && this._isPercentFormat()) { const interval = this._getIntervalFromPrecision(maxPrecision); return (0, _m_utils.adjustPercentValue)(parsedValue, interval) } return parsedValue } _getIntervalFromPrecision(precision) { if (precision < 1) { return 1 } return 10 ** -precision } _getParsedValue(text, format) { const sign = _number2.default.getSign(text, (null === format || void 0 === format ? void 0 : format.formatter) || format); const textWithoutStubs = this._removeStubs(text, true); const parsedValue = this._parse(textWithoutStubs, format); const parsedValueSign = parsedValue < 0 ? -1 : 1; const parsedValueWithSign = (0, _type.isNumeric)(parsedValue) && sign !== parsedValueSign ? sign * parsedValue : parsedValue; return parsedValueWithSign } _isValueIncomplete(text) { if (!this._useMaskBehavior()) { return super._isValueIncomplete(text) } const caret = this._caret(); const point = _number2.default.getDecimalSeparator(); const pointIndex = this._getTextSeparatorIndex(text); const isCaretOnFloat = pointIndex >= 0 && pointIndex < caret.start; const textParts = this._removeStubs(text, true).split(point); if (!isCaretOnFloat || 2 !== textParts.length) { return false } const floatLength = textParts[1].length; const format = this._getFormatPattern(); const isCustomParser = !!format.parser; const precision = !isCustomParser && this._getPrecisionLimits(this._getFormatPattern()); const isPrecisionInRange = isCustomParser ? true : (0, _math.inRange)(floatLength, precision.min, precision.max); const endsWithZero = "0" === textParts[1].charAt(floatLength - 1); return isPrecisionInRange && (endsWithZero || !floatLength) } _isValueInRange(value) { const min = (0, _common.ensureDefined)(this.option("min"), -1 / 0); const max = (0, _common.ensureDefined)(this.option("max"), 1 / 0); return (0, _math.inRange)(value, min, max) } _setInputText(text) { const normalizedText = _number2.default.convertDigits(text, true); const newCaret = (0, _m_number_box2.getCaretAfterFormat)(this._getInputVal(), normalizedText, this._caret(), this._getFormatPattern()); this._input().val(text); this._toggleEmptinessEventHandler(); this._formattedValue = text; if (!this._focusOutOccurs) { this._caret(newCaret) } } _useMaskBehavior() { const { useMaskBehavior: useMaskBehavior } = this.option(); return !!this.option("format") && useMaskBehavior } _renderInputType() { const { mode: mode } = this.option(); const isNumberType = "number" === mode; const isDesktop = "desktop" === _devices.default.real().deviceType; if (this._useMaskBehavior() && isNumberType) { this._setInputType(isDesktop || this._isSupportInputMode() ? "text" : "tel") } else { super._renderInputType() } } _isChar(str) { return (0, _type.isString)(str) && 1 === str.length } _moveCaret(offset) { if (!offset) { return } const newCaret = (0, _m_number_box2.getCaretWithOffset)(this._caret(), offset); const adjustedCaret = (0, _m_number_box2.getCaretInBoundaries)(newCaret, this._getInputVal(), this._getFormatPattern()); this._caret(adjustedCaret) } _shouldHandleKey(e) { const keyName = (0, _index.normalizeKeyName)(e); const isSpecialChar = (0, _index.isCommandKeyPressed)(e) || e.altKey || e.shiftKey || !this._isChar(keyName); const isMinusKey = "minus" === keyName; const useMaskBehavior = this._useMaskBehavior(); return useMaskBehavior && !isSpecialChar && !isMinusKey } _renderInput() { super._renderInput(); this._renderFormatter() } _renderFormatter() { this._clearCache(); this._detachFormatterEvents(); if (this._useMaskBehavior()) { this._attachFormatterEvents() } } _detachFormatterEvents() { _events_engine.default.off(this._input(), ".dxNumberFormatter") } _isInputFromPaste(e) { var _e$originalEvent; const inputType = null === (_e$originalEvent = e.originalEvent) || void 0 === _e$originalEvent ? void 0 : _e$originalEvent.inputType; if ((0, _type.isDefined)(inputType)) { return "insertFromPaste" === inputType } return this._isValuePasted } _attachFormatterEvents() { const $input = this._input(); _events_engine.default.on($input, (0, _index.addNamespace)("input", "dxNumberFormatter"), (e => { this._formatValue(e); this._isValuePasted = false })); _events_engine.default.on($input, (0, _index.addNamespace)("dxclick", "dxNumberFormatter"), (() => { if (!this._caretTimeout) { this._caretTimeout = setTimeout((() => { this._caretTimeout = void 0; this._caret((0, _m_number_box2.getCaretInBoundaries)(this._caret(), this._getInputVal(), this._getFormatPattern())) }), 0) } })); _events_engine.default.on($input, _double_click.name, (() => { this.clearCaretTimeout() })) } clearCaretTimeout() { clearTimeout(this._caretTimeout); this._caretTimeout = void 0 } _forceRefreshInputValue() { if (!this._useMaskBehavior()) { return super._forceRefreshInputValue() } } _isNonStubAfter(index) { const text = this._getInputVal().slice(index); return text && !this._isStub(text, true) } _isStub(str, isString) { const escapedDecimalSeparator = (0, _common.escapeRegExp)(_number2.default.getDecimalSeparator()); const regExpString = `^[^0-9${escapedDecimalSeparator}]+$`; const stubRegExp = new RegExp(regExpString, "g"); return stubRegExp.test(str) && (isString || this._isChar(str)) } _parseValue(text) { if (!this._useMaskBehavior()) { return super._parseValue(text) } return this._parsedValue } _getPrecisionLimits(text) { const currentFormat = this._getFormatForSign(text); const realSeparatorIndex = (0, _m_utils.getRealSeparatorIndex)(currentFormat).index; const floatPart = ((0, _m_utils.splitByIndex)(currentFormat, realSeparatorIndex)[1] || "").replace(/[^#0]/g, ""); const minPrecision = floatPart.replace(/^(0*)#*/, "$1").length; const maxPrecision = floatPart.length; return { min: minPrecision, max: maxPrecision } } _revertSign(e) { if (!this._useMaskBehavior()) { return } const caret = this._caret(); if (caret.start !== caret.end) { if ("minus" === (0, _index.normalizeKeyName)(e)) { this._applyRevertedSign(e, caret, true); return } this._caret((0, _m_number_box2.getCaretInBoundaries)(0, this._getInputVal(), this._getFormatPattern())) } this._applyRevertedSign(e, caret) } _applyRevertedSign(e, caret, preserveSelectedText) { const newValue = -1 * (0, _common.ensureDefined)(this._parsedValue, null); if (this._isValueInRange(newValue) || 0 === newValue) { this._parsedValue = newValue; if (preserveSelectedText) { const format = this._getFormatPattern(); const previousText = this._getInputVal(); this._setTextByParsedValue(); e.preventDefault(); const currentText = this._getInputVal(); const offset = (0, _m_number_box2.getCaretOffset)(previousText, currentText, format); caret = (0, _m_number_box2.getCaretWithOffset)(caret, offset); const caretInBoundaries = (0, _m_number_box2.getCaretInBoundaries)(caret, currentText, format); this._caret(caretInBoundaries) } } } _removeMinusFromText(text, caret) { const isMinusPressed = "minus" === this._lastKeyName && "-" === text.charAt(caret.start - 1); return isMinusPressed ? this._replaceSelectedText(text, { start: caret.start - 1, end: caret.start }, "") : text } _setTextByParsedValue() { const format = this._getFormatPattern(); const parsed = this._parseValue(); const formatted = this._format(parsed, format) || ""; this._setInputText(formatted) } _formatValue(e) { let normalizedText = this._getInputVal(); const caret = this._caret(); const textWithoutMinus = this._removeMinusFromText(normalizedText, caret); const wasMinusRemoved = textWithoutMinus !== normalizedText; normalizedText = textWithoutMinus; if (!this._isInputFromPaste(e) && this._isValueIncomplete(textWithoutMinus)) { this._formattedValue = normalizedText; if (wasMinusRemoved) { this._setTextByParsedValue() } return } const textWasChanged = _number2.default.convertDigits(this._formattedValue, true) !== normalizedText; if (textWasChanged) { const value = this._tryParse(normalizedText, caret, ""); if ((0, _type.isDefined)(value)) { this._parsedValue = value } } this._setTextByParsedValue() } _renderDisplayText() { if (this._useMaskBehavior()) { this._toggleEmptinessEventHandler() } else { super._renderDisplayText.apply(this, arguments) } } _renderValue() { if (this._useMaskBehavior()) { const { value: value } = this.option(); this._parsedValue = value; this._setTextByParsedValue() } return super._renderValue() } _updateParsedValue() { const inputValue = this._getInputVal(); this._parsedValue = this._tryParse(inputValue, this._caret()) } _adjustParsedValue() { if (!this._useMaskBehavior()) { return } const clearedText = this._removeStubs(this._getInputVal()); const parsedValue = clearedText ? this._parseValue() : null; if (!(0, _type.isNumeric)(parsedValue)) { this._parsedValue = parsedValue; return } this._parsedValue = (0, _math.fitIntoRange)(parsedValue, this.option("min"), this.option("max")) } _valueChangeEventHandler(e) { if (!this._useMaskBehavior()) { return super._valueChangeEventHandler(e) } const caret = this._caret(); this._saveValueChangeEvent(e); this._lastKey = null; this._lastKeyName = null; this._updateParsedValue(); this._adjustParsedValue(); this.option("value", this._parsedValue); if (caret) { this._caret(caret) } } _optionChanged(args) { switch (args.name) { case "format": case "useMaskBehavior": this._renderInputType(); this._updateFormat(); this._renderFormatter(); this._renderValue(); this._refreshValueChangeEvent(); this._refreshEvents(); break; case "min": case "max": this._adjustParsedValue(); super._optionChanged(args); break; default: super._optionChanged(args) } } _clearCache() { delete this._formattedValue; delete this._lastKey; delete this._lastKeyName; delete this._parsedValue; delete this._focusOutOccurs; clearTimeout(this._caretTimeout); delete this._caretTimeout } _clean() { this._clearCache(); super._clean() } } exports.default = NumberBoxMask }, 47156: /*!*******************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/ui/number_box/m_number_box.spin.js ***! \*******************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _emitter = __webpack_require__( /*! ../../../common/core/events/core/emitter.feedback */ 69331); var _events_engine = _interopRequireDefault(__webpack_require__( /*! ../../../common/core/events/core/events_engine */ 92774)); var _hold = _interopRequireDefault(__webpack_require__( /*! ../../../common/core/events/hold */ 68095)); var _pointer = _interopRequireDefault(__webpack_require__( /*! ../../../common/core/events/pointer */ 89797)); var _index = __webpack_require__( /*! ../../../common/core/events/utils/index */ 98834); var _dom_adapter = _interopRequireDefault(__webpack_require__( /*! ../../../core/dom_adapter */ 64960)); var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../../core/renderer */ 64553)); var _deferred = __webpack_require__( /*! ../../../core/utils/deferred */ 87739); var _widget = _interopRequireDefault(__webpack_require__( /*! ../../core/widget/widget */ 89275)); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } function _extends() { return _extends = Object.assign ? Object.assign.bind() : function(n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) { ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]) } } return n }, _extends.apply(null, arguments) } const POINTERUP_EVENT_NAME = (0, _index.addNamespace)(_pointer.default.up, "dxNumberBox"); const POINTERCANCEL_EVENT_NAME = (0, _index.addNamespace)(_pointer.default.cancel, "dxNumberBox"); class SpinButton extends _widget.default { _getDefaultOptions() { return _extends({}, super._getDefaultOptions(), { direction: "up", onChange: null, activeStateEnabled: true, hoverStateEnabled: true }) } _initMarkup() { super._initMarkup(); const { direction: spinDirection } = this.option(); const direction = `dx-numberbox-spin-${spinDirection}`; this.$element().addClass("dx-numberbox-spin-button").addClass(direction); this._spinIcon = (0, _renderer.default)("<div>").addClass(`${direction}-icon`).appendTo(this.$element()) } _render() { super._render(); const eventName = (0, _index.addNamespace)(_pointer.default.down, this.NAME); const $element = this.$element(); _events_engine.default.off($element, eventName); _events_engine.default.on($element, eventName, this._spinDownHandler.bind(this)); this._spinChangeHandler = this._createActionByOption("onChange") } _spinDownHandler(e) { e.preventDefault(); this._clearTimer(); _events_engine.default.on(this.$element(), _hold.default.name, (() => { this._feedBackDeferred = (0, _deferred.Deferred)(); (0, _emitter.lock)(this._feedBackDeferred); this._spinChangeHandler({ event: e }); this._holdTimer = setInterval(this._spinChangeHandler, 100, { event: e }) })); const document = _dom_adapter.default.getDocument(); _events_engine.default.on(document, POINTERUP_EVENT_NAME, this._clearTimer.bind(this)); _events_engine.default.on(document, POINTERCANCEL_EVENT_NAME, this._clearTimer.bind(this)); this._spinChangeHandler({ event: e }) } _dispose() { this._clearTimer(); super._dispose() } _clearTimer() { _events_engine.default.off(this.$element(), _hold.default.name); const document = _dom_adapter.default.getDocument(); _events_engine.default.off(document, POINTERUP_EVENT_NAME); _events_engine.default.off(document, POINTERCANCEL_EVENT_NAME); if (this._feedBackDeferred) { this._feedBackDeferred.resolve() } if (this._holdTimer) { clearInterval(this._holdTimer) } } _optionChanged(args) { switch (args.name) { case "onChange": case "direction": this._invalidate(); break; default: super._optionChanged(args) } } } exports.default = SpinButton }, 1979: /*!********************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/ui/number_box/m_number_box.spins.js ***! \********************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _events_engine = _interopRequireDefault(__webpack_require__( /*! ../../../common/core/events/core/events_engine */ 92774)); var _pointer = _interopRequireDefault(__webpack_require__( /*! ../../../common/core/events/pointer */ 89797)); var _index = __webpack_require__( /*! ../../../common/core/events/utils/index */ 98834); var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../../core/renderer */ 64553)); var _extend = __webpack_require__( /*! ../../../core/utils/extend */ 52576); var _m_button = _interopRequireDefault(__webpack_require__( /*! ../../ui/text_box/texteditor_button_collection/m_button */ 88244)); var _m_number_box = _interopRequireDefault(__webpack_require__( /*! ./m_number_box.spin */ 47156)); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } class SpinButtons extends _m_button.default { _attachEvents(instance, $spinContainer) { const { editor: editor } = this; const eventName = (0, _index.addNamespace)(_pointer.default.down, editor.NAME); const $spinContainerChildren = $spinContainer.children(); const pointerDownAction = editor._createAction((e => editor._spinButtonsPointerDownHandler(e))); _events_engine.default.off($spinContainer, eventName); _events_engine.default.on($spinContainer, eventName, (e => pointerDownAction({ event: e }))); _m_number_box.default.getInstance($spinContainerChildren.eq(0)).option("onChange", (e => editor._spinUpChangeHandler(e))); _m_number_box.default.getInstance($spinContainerChildren.eq(1)).option("onChange", (e => editor._spinDownChangeHandler(e))) } _create() { const { editor: editor } = this; const $spinContainer = (0, _renderer.default)("<div>").addClass("dx-numberbox-spin-container"); const $spinUp = (0, _renderer.default)("<div>").appendTo($spinContainer); const $spinDown = (0, _renderer.default)("<div>").appendTo($spinContainer); const options = this._getOptions(); this._addToContainer($spinContainer); editor._createComponent($spinUp, _m_number_box.default, (0, _extend.extend)({ direction: "up" }, options)); editor._createComponent($spinDown, _m_number_box.default, (0, _extend.extend)({ direction: "down" }, options)); this._legacyRender(editor.$element(), this._isTouchFriendly(), options.visible); return { instance: $spinContainer, $element: $spinContainer } } _getOptions() { const { editor: editor } = this; const visible = this._isVisible(); const disabled = editor.option("disabled"); return { visible: visible, disabled: disabled } } _isVisible() { const { editor: editor } = this; return super._isVisible() && editor.option("showSpinButtons") } _isTouchFriendly() { const { editor: editor } = this; return editor.option("showSpinButtons") && editor.option("useLargeSpinButtons") } _legacyRender($editor, isTouchFriendly, isVisible) { $editor.toggleClass("dx-numberbox-spin-touch-friendly", isTouchFriendly); $editor.toggleClass("dx-numberbox-spin", isVisible) } update() { const shouldUpdate = super.update(); if (shouldUpdate) { const { editor: editor, instance: instance } = this; const $editor = editor.$element(); const isVisible = this._isVisible(); const isTouchFriendly = this._isTouchFriendly(); const $spinButtons = instance.children(); const spinUp = _m_number_box.default.getInstance($spinButtons.eq(0)); const spinDown = _m_number_box.default.getInstance($spinButtons.eq(1)); const options = this._getOptions(); spinUp.option(options); spinDown.option(options); this._legacyRender($editor, isTouchFriendly, isVisible) } } } exports.default = SpinButtons }, 8758: /*!*********************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/ui/number_box/m_utils.js ***! \*********************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.splitByIndex = exports.getRealSeparatorIndex = exports.getNthOccurrence = exports.adjustPercentValue = void 0; var _math = __webpack_require__( /*! ../../../core/utils/math */ 50254); exports.getRealSeparatorIndex = function(str) { let quoteBalance = 0; let separatorCount = 0; for (let i = 0; i < str.length; ++i) { if ("'" === str[i]) { quoteBalance++ } if ("." === str[i]) { ++separatorCount; if (quoteBalance % 2 === 0) { return { occurrence: separatorCount, index: i } } } } return { occurrence: 1, index: -1 } }; exports.getNthOccurrence = function(str, c, n) { let i = -1; while (n-- && i++ < str.length) { i = str.indexOf(c, i) } return i }; exports.splitByIndex = function(str, index) { if (-1 === index) { return [str] } return [str.slice(0, index), str.slice(index + 1)] }; exports.adjustPercentValue = function(rawValue, precision) { return rawValue && (0, _math.adjust)(rawValue / 100, precision) } }, 68632: /*!********************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/ui/overlay/m_overlay.js ***! \********************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = exports.OVERLAY_CONTENT_CLASS = void 0; var _animation = __webpack_require__( /*! ../../../common/core/animation */ 16826); var _hide_callback = __webpack_require__( /*! ../../../common/core/environment/hide_callback */ 83916); var _events_engine = _interopRequireDefault(__webpack_require__( /*! ../../../common/core/events/core/events_engine */ 92774)); var _drag = __webpack_require__( /*! ../../../common/core/events/drag */ 59144); var _pointer = _interopRequireDefault(__webpack_require__( /*! ../../../common/core/events/pointer */ 89797)); var _short = __webpack_require__( /*! ../../../common/core/events/short */ 42222); var _index = __webpack_require__( /*! ../../../common/core/events/utils/index */ 98834); var _visibility_change = __webpack_require__( /*! ../../../common/core/events/visibility_change */ 18029); var _component_registrator = _interopRequireDefault(__webpack_require__( /*! ../../../core/component_registrator */ 92848)); var _devices = _interopRequireDefault(__webpack_require__( /*! ../../../core/devices */ 65951)); var _dom_adapter = _interopRequireDefault(__webpack_require__( /*! ../../../core/dom_adapter */ 64960)); var _element = __webpack_require__( /*! ../../../core/element */ 61404); var _errors = _interopRequireDefault(__webpack_require__( /*! ../../../core/errors */ 87129)); var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../../core/renderer */ 64553)); var _empty_template = __webpack_require__( /*! ../../../core/templates/empty_template */ 48650); var _browser = _interopRequireDefault(__webpack_require__( /*! ../../../core/utils/browser */ 48314)); var _common = __webpack_require__( /*! ../../../core/utils/common */ 17781); var _deferred = __webpack_require__( /*! ../../../core/utils/deferred */ 87739); var _extend = __webpack_require__( /*! ../../../core/utils/extend */ 52576); var _iterator = __webpack_require__( /*! ../../../core/utils/iterator */ 21274); var _ready_callbacks = _interopRequireDefault(__webpack_require__( /*! ../../../core/utils/ready_callbacks */ 3122)); var _size = __webpack_require__( /*! ../../../core/utils/size */ 57653); var _type = __webpack_require__( /*! ../../../core/utils/type */ 11528); var _view_port = __webpack_require__( /*! ../../../core/utils/view_port */ 55355); var _selectors = __webpack_require__( /*! ../../../ui/widget/selectors */ 35944); var _ui = _interopRequireDefault(__webpack_require__( /*! ../../../ui/widget/ui.errors */ 35185)); var _m_dom = _interopRequireDefault(__webpack_require__( /*! ../../core/utils/m_dom */ 76400)); var _widget = _interopRequireDefault(__webpack_require__( /*! ../../core/widget/widget */ 89275)); var _m_window = _interopRequireDefault(__webpack_require__( /*! ../../core/utils/m_window */ 14470)); var _m_overlay_position_controller = __webpack_require__( /*! ./m_overlay_position_controller */ 4983); var zIndexPool = function(e, r) { if (!r && e && e.__esModule) { return e } if (null === e || "object" != typeof e && "function" != typeof e) { return { default: e } } var t = _getRequireWildcardCache(r); if (t && t.has(e)) { return t.get(e) } var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) { if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u] } } return n.default = e, t && t.set(e, n), n }(__webpack_require__( /*! ./m_z_index */ 84893)); function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) { return null } var r = new WeakMap, t = new WeakMap; return (_getRequireWildcardCache = function(e) { return e ? t : r })(e) } function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } function _extends() { return _extends = Object.assign ? Object.assign.bind() : function(n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) { ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]) } } return n }, _extends.apply(null, arguments) } const ready = _ready_callbacks.default.add; const window = _m_window.default.getWindow(); const viewPortChanged = _view_port.changeCallback; const OVERLAY_CONTENT_CLASS = exports.OVERLAY_CONTENT_CLASS = "dx-overlay-content"; const OVERLAY_STACK = []; ready((() => { _events_engine.default.subscribeGlobal(_dom_adapter.default.getDocument(), _pointer.default.down, (e => { for (let i = OVERLAY_STACK.length - 1; i >= 0; i--) { if (!OVERLAY_STACK[i]._proxiedDocumentDownHandler(e)) { return } } })) })); class Overlay extends _widget.default { _supportedKeys() { return _extends({}, super._supportedKeys(), { escape() { this.hide() } }) } _getDefaultOptions() { return _extends({}, super._getDefaultOptions(), { activeStateEnabled: false, visible: false, deferRendering: true, shading: true, shadingColor: "", wrapperAttr: {}, position: (0, _extend.extend)({}, _m_overlay_position_controller.OVERLAY_POSITION_ALIASES.center), width: "80vw", minWidth: null, maxWidth: null, height: "80vh", minHeight: null, maxHeight: null, animation: { show: { type: "pop", duration: 300, from: { scale: .55 } }, hide: { type: "pop", duration: 300, from: { opacity: 1, scale: 1 }, to: { opacity: 0, scale: .55 } } }, hideOnOutsideClick: false, _ignorePreventScrollEventsDeprecation: false, onShowing: null, onShown: null, onHiding: null, onHidden: null, contentTemplate: "content", innerOverlay: false, restorePosition: true, hideTopOverlayHandler: () => { this.hide() }, hideOnParentScroll: false, preventScrollEvents: true, onPositioned: null, propagateOutsideClick: false, ignoreChildEvents: true, _checkParentVisibility: true, _fixWrapperPosition: false, _loopFocus: false }) } _defaultOptionsRules() { return super._defaultOptionsRules().concat([{ device: () => !_m_window.default.hasWindow(), options: { width: null, height: null, animation: null, _checkParentVisibility: false } }]) } _setOptionsByReference() { super._setOptionsByReference(); (0, _extend.extend)(this._optionsByReference, { animation: true }) } $wrapper() { return this._$wrapper } _eventBindingTarget() { return this._$content } ctor(element, options) { super.ctor(element, options); if (options) { if ("preventScrollEvents" in options && !options._ignorePreventScrollEventsDeprecation) { this._logDeprecatedPreventScrollEventsInfo() } } } _logDeprecatedPreventScrollEventsInfo() { this._logDeprecatedOptionWarning("preventScrollEvents", { since: "23.1", message: "If you enable this option, end-users may experience scrolling issues." }) } _init() { super._init(); this._initActions(); this._initHideOnOutsideClickHandler(); this._initTabTerminatorHandler(); this._customWrapperClass = null; this._$wrapper = (0, _renderer.default)("<div>").addClass("dx-overlay-wrapper"); this._$content = (0, _renderer.default)("<div>").addClass(OVERLAY_CONTENT_CLASS); this._initInnerOverlayClass(); const $element = this.$element(); $element.addClass("dx-overlay"); this._$wrapper.attr("data-bind", "dxControlsDescendantBindings: true"); this._toggleViewPortSubscription(true); const { hideTopOverlayHandler: hideTopOverlayHandler } = this.option(); this._initHideTopOverlayHandler(hideTopOverlayHandler); this._parentsScrollSubscriptionInfo = { handler: e => { this._hideOnParentsScrollHandler(e) } }; this.warnPositionAsFunction() } warnPositionAsFunction() { if ((0, _type.isFunction)(this.option("position"))) { _errors.default.log("W0018") } } _initInnerOverlayClass() { const { innerOverlay: innerOverlay } = this.option(); this._$content.toggleClass("dx-inner-overlay", innerOverlay) } _initHideTopOverlayHandler(handler) { this._hideTopOverlayHandler = handler } _getActionsList() { return ["onShowing", "onShown", "onHiding", "onHidden", "onPositioned", "onVisualPositionChanged"] } _initActions() { this._actions = {}; const actions = this._getActionsList(); (0, _iterator.each)(actions, ((_, action) => { this._actions[action] = this._createActionByOption(action, { excludeValidators: ["disabled", "readOnly"] }) || _common.noop })) } _initHideOnOutsideClickHandler() { var _this = this; this._proxiedDocumentDownHandler = function() { return _this._documentDownHandler(...arguments) } } _initMarkup() { super._initMarkup(); this._renderWrapperAttributes(); this._initPositionController() } _documentDownHandler(e) { if (this._showAnimationProcessing) { this._stopAnimation() } const isAttachedTarget = (0, _renderer.default)(window.document).is(e.target) || _m_dom.default.contains(window.document, e.target); const isInnerOverlay = (0, _renderer.default)(e.target).closest(".dx-inner-overlay").length; const outsideClick = isAttachedTarget && !isInnerOverlay && !(this._$content.is(e.target) || _m_dom.default.contains(this._$content.get(0), e.target)); if (outsideClick && this._shouldHideOnOutsideClick(e)) { this._outsideClickHandler(e) } const { propagateOutsideClick: propagateOutsideClick } = this.option(); return propagateOutsideClick } _shouldHideOnOutsideClick(e) { const { hideOnOutsideClick: hideOnOutsideClick } = this.option(); if ((0, _type.isFunction)(hideOnOutsideClick)) { return hideOnOutsideClick(e) } return hideOnOutsideClick } _outsideClickHandler(e) { if (this.option("shading")) { e.preventDefault() } this.hide() } _getAnonymousTemplateName() { return "content" } _initTemplates() { this._templateManager.addDefaultTemplates({ content: new _empty_template.EmptyTemplate }); super._initTemplates() } _isTopOverlay() { const overlayStack = this._overlayStack(); for (let i = overlayStack.length - 1; i >= 0; i--) { const tabbableElements = overlayStack[i]._findTabbableBounds(); if (tabbableElements.first || tabbableElements.last) { return overlayStack[i] === this } } return false } _overlayStack() { return OVERLAY_STACK } _zIndexInitValue() { return Overlay.baseZIndex() } _toggleViewPortSubscription(toggle) { var _this2 = this; viewPortChanged.remove(this._viewPortChangeHandle); if (toggle) { this._viewPortChangeHandle = function() { _this2._viewPortChangeHandler(...arguments) }; viewPortChanged.add(this._viewPortChangeHandle) } } _viewPortChangeHandler() { this._positionController.updateContainer(this.option("container")); this._refresh() } _renderWrapperAttributes() { const { wrapperAttr: wrapperAttr } = this.option(); const attributes = (0, _extend.extend)({}, wrapperAttr); const classNames = attributes.class; delete attributes.class; this.$wrapper().attr(attributes).removeClass(this._customWrapperClass).addClass(classNames); this._customWrapperClass = classNames } _renderVisibilityAnimate(visible) { this._stopAnimation(); return visible ? this._show() : this._hide() } _getAnimationConfig() { return this._getOptionValue("animation", this) } _toggleBodyScroll(enabled) {} _animateShowing() { var _this3 = this; const animation = this._getAnimationConfig() ?? {}; const showAnimation = this._normalizeAnimation(animation.show, "to"); const startShowAnimation = (null === showAnimation || void 0 === showAnimation ? void 0 : showAnimation.start) ?? _common.noop; const completeShowAnimation = (null === showAnimation || void 0 === showAnimation ? void 0 : showAnimation.complete) ?? _common.noop; this._animate(showAnimation, (function() { if (_this3._isAnimationPaused) { return } if (_this3.option("focusStateEnabled")) { _events_engine.default.trigger(_this3._focusTarget(), "focus") } for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { args[_key] = arguments[_key] } completeShowAnimation.call(_this3, ...args); _this3._showAnimationProcessing = false; _this3._isHidden = false; _this3._actions.onShown(); _this3._toggleSafariScrolling(); _this3._showingDeferred.resolve() }), (function() { if (_this3._isAnimationPaused) { return } for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) { args[_key2] = arguments[_key2] } startShowAnimation.call(_this3, ...args); _this3._showAnimationProcessing = true })) } _processShowingHidingCancel(cancelArg, applyFunction, cancelFunction) { if ((0, _type.isPromise)(cancelArg)) { cancelArg.then((shouldCancel => { if (shouldCancel) { cancelFunction() } else { applyFunction() } })).catch((() => applyFunction())) } else { cancelArg ? cancelFunction() : applyFunction() } } _show() { this._showingDeferred = (0, _deferred.Deferred)(); this._parentHidden = this._isParentHidden(); this._showingDeferred.done((() => { delete this._parentHidden })); if (this._parentHidden) { this._isHidden = true; return this._showingDeferred.resolve() } if (this._currentVisible) { return (0, _deferred.Deferred)().resolve().promise() } this._currentVisible = true; if (this._isHidingActionCanceled) { delete this._isHidingActionCanceled; this._showingDeferred.reject() } else { const show = () => { this._stopAnimation(); const { enableBodyScroll: enableBodyScroll } = this.option(); this._toggleBodyScroll(enableBodyScroll); this._toggleVisibility(true); this._$content.css("visibility", "hidden"); this._$content.toggleClass("dx-state-invisible", false); this._updateZIndexStackPosition(true); this._positionController.openingHandled(); this._renderContent(); const showingArgs = { cancel: false }; this._actions.onShowing(showingArgs); this._processShowingHidingCancel(showingArgs.cancel, (() => { this._$content.css("visibility", ""); this._renderVisibility(true); this._animateShowing() }), (() => { this._toggleVisibility(false); this._$content.css("visibility", ""); this._$content.toggleClass("dx-state-invisible", true); this._isShowingActionCanceled = true; this._moveFromContainer(); this._toggleBodyScroll(true); this.option("visible", false); this._showingDeferred.resolve() })) }; if (this.option("templatesRenderAsynchronously")) { this._stopShowTimer(); this._asyncShowTimeout = setTimeout(show) } else { show() } } return this._showingDeferred.promise() } _normalizeAnimation(showHideConfig, direction) { if (showHideConfig) { showHideConfig = (0, _extend.extend)({ type: "slide", skipElementInitialStyles: true }, showHideConfig); if ((0, _type.isObject)(showHideConfig[direction])) { (0, _extend.extend)(showHideConfig[direction], { position: this._positionController.position }) } } return showHideConfig } _animateHiding() { var _this4 = this; const animation = this._getAnimationConfig() ?? {}; const hideAnimation = this._normalizeAnimation(animation.hide, "from"); const startHideAnimation = (null === hideAnimation || void 0 === hideAnimation ? void 0 : hideAnimation.start) ?? _common.noop; const completeHideAnimation = (null === hideAnimation || void 0 === hideAnimation ? void 0 : hideAnimation.complete) ?? _common.noop; this._animate(hideAnimation, (function() { var _this4$_actions; _this4._$content.css("pointerEvents", ""); _this4._renderVisibility(false); for (var _len3 = arguments.length, args = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) { args[_key3] = arguments[_key3] } completeHideAnimation.call(_this4, ...args); _this4._hideAnimationProcessing = false; null === (_this4$_actions = _this4._actions) || void 0 === _this4$_actions || _this4$_actions.onHidden(); _this4._hidingDeferred.resolve() }), (function() { _this4._$content.css("pointerEvents", "none"); for (var _len4 = arguments.length, args = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) { args[_key4] = arguments[_key4] } startHideAnimation.call(_this4, ...args); _this4._hideAnimationProcessing = true })) } _hide() { if (!this._currentVisible) { return (0, _deferred.Deferred)().resolve().promise() } this._currentVisible = false; this._hidingDeferred = (0, _deferred.Deferred)(); const hidingArgs = { cancel: false }; if (this._isShowingActionCanceled) { delete this._isShowingActionCanceled; this._hidingDeferred.reject() } else { this._actions.onHiding(hidingArgs); this._toggleSafariScrolling(); this._toggleBodyScroll(true); const cancelHide = () => { this._isHidingActionCanceled = true; const { enableBodyScroll: enableBodyScroll } = this.option(); this._toggleBodyScroll(enableBodyScroll); this.option("visible", true); this._hidingDeferred.resolve() }; const applyHide = () => { this._forceFocusLost(); this._toggleShading(false); this._toggleSubscriptions(false); this._stopShowTimer(); this._animateHiding() }; this._processShowingHidingCancel(hidingArgs.cancel, applyHide, cancelHide) } return this._hidingDeferred.promise() } _forceFocusLost() { const activeElement = _dom_adapter.default.getActiveElement(); const shouldResetActiveElement = !!this._$content.find(activeElement).length; if (shouldResetActiveElement) { _m_dom.default.resetActiveElement() } } _animate(animation, completeCallback, startCallback) { if (animation) { startCallback = startCallback || animation.start || _common.noop; _animation.fx.animate(this._$content, (0, _extend.extend)({}, animation, { start: startCallback, complete: completeCallback })) } else { completeCallback() } } _stopAnimation() { _animation.fx.stop(this._$content, true) } _renderVisibility(visible) { if (visible && this._isParentHidden()) { return } this._currentVisible = visible; this._stopAnimation(); if (!visible) { (0, _visibility_change.triggerHidingEvent)(this._$content) } if (visible) { this._checkContainerExists(); this._moveToContainer(); this._renderGeometry(); (0, _visibility_change.triggerShownEvent)(this._$content); (0, _visibility_change.triggerResizeEvent)(this._$content) } else { this._toggleVisibility(visible); this._$content.toggleClass("dx-state-invisible", !visible); this._updateZIndexStackPosition(visible); this._moveFromContainer() } this._toggleShading(visible); this._toggleSubscriptions(visible) } _updateZIndexStackPosition(pushToStack) { const overlayStack = this._overlayStack(); const index = overlayStack.indexOf(this); if (pushToStack) { if (-1 === index) { this._zIndex = zIndexPool.create(this._zIndexInitValue()); overlayStack.push(this) } this._$wrapper.css("zIndex", this._zIndex); this._$content.css("zIndex", this._zIndex) } else if (-1 !== index) { overlayStack.splice(index, 1); zIndexPool.remove(this._zIndex) } } _toggleShading(visible) { const { shading: shading, shadingColor: shadingColor } = this.option(); this._$wrapper.toggleClass("dx-overlay-shader", visible && shading); this._$wrapper.css("backgroundColor", shading ? shadingColor : ""); this._toggleTabTerminator(visible && shading) } _initTabTerminatorHandler() { var _this5 = this; this._proxiedTabTerminatorHandler = function() { _this5._tabKeyHandler(...arguments) } } _toggleTabTerminator(enabled) { const { _loopFocus: _loopFocus } = this.option(); const eventName = (0, _index.addNamespace)("keydown", this.NAME); if (_loopFocus || enabled) { _events_engine.default.on(_dom_adapter.default.getDocument(), eventName, this._proxiedTabTerminatorHandler) } else { this._destroyTabTerminator() } } _destroyTabTerminator() { const eventName = (0, _index.addNamespace)("keydown", this.NAME); _events_engine.default.off(_dom_adapter.default.getDocument(), eventName, this._proxiedTabTerminatorHandler) } _findTabbableBounds() { const $elements = this._$wrapper.find("*"); const elementsCount = $elements.length - 1; let first = null; let last = null; for (let i = 0; i <= elementsCount; i += 1) { if (!first && $elements.eq(i).is(_selectors.tabbable)) { first = $elements.eq(i) } if (!last && $elements.eq(elementsCount - i).is(_selectors.tabbable)) { last = $elements.eq(elementsCount - i) } if (first && last) { break } } return { first: first, last: last } } _tabKeyHandler(e) { if ("tab" !== (0, _index.normalizeKeyName)(e) || !this._isTopOverlay()) { return } const wrapper = this._$wrapper.get(0); const activeElement = _dom_adapter.default.getActiveElement(wrapper); const { first: $firstTabbable, last: $lastTabbable } = this._findTabbableBounds(); const isTabOnLast = !e.shiftKey && activeElement === (null === $lastTabbable || void 0 === $lastTabbable ? void 0 : $lastTabbable.get(0)); const isShiftTabOnFirst = e.shiftKey && activeElement === (null === $firstTabbable || void 0 === $firstTabbable ? void 0 : $firstTabbable.get(0)); const isOutsideTarget = !_m_dom.default.contains(wrapper, activeElement); const shouldPreventDefault = isTabOnLast || isShiftTabOnFirst || isOutsideTarget; if (shouldPreventDefault) { e.preventDefault(); const $focusElement = e.shiftKey ? $lastTabbable : $firstTabbable; _events_engine.default.trigger($focusElement, "focusin"); _events_engine.default.trigger($focusElement, "focus") } } _toggleSubscriptions(enabled) { if (_m_window.default.hasWindow()) { this._toggleHideTopOverlayCallback(enabled); this._toggleHideOnParentsScrollSubscription(enabled) } } _toggleHideTopOverlayCallback(subscribe) { if (!this._hideTopOverlayHandler) { return } if (subscribe) { _hide_callback.hideCallback.add(this._hideTopOverlayHandler) } else { _hide_callback.hideCallback.remove(this._hideTopOverlayHandler) } } _toggleHideOnParentsScrollSubscription(needSubscribe) { const scrollEvent = (0, _index.addNamespace)("scroll", this.NAME); const { prevTargets: prevTargets, handler: handler } = this._parentsScrollSubscriptionInfo ?? {}; _events_engine.default.off(prevTargets, scrollEvent, handler); const hideOnScroll = this.option("hideOnParentScroll"); if (needSubscribe && hideOnScroll) { let $parents = this._getHideOnParentScrollTarget().parents(); if ("desktop" === _devices.default.real().deviceType) { $parents = $parents.add(window) } _events_engine.default.on($parents, scrollEvent, handler); this._parentsScrollSubscriptionInfo.prevTargets = $parents } } _hideOnParentsScrollHandler(e) { let hideHandled = false; const hideOnScroll = this.option("hideOnParentScroll"); if ((0, _type.isFunction)(hideOnScroll)) { hideHandled = hideOnScroll(e) } if (!hideHandled && !this._showAnimationProcessing) { this.hide() } } _getHideOnParentScrollTarget() { const { _hideOnParentScrollTarget: _hideOnParentScrollTarget } = this.option(); const $hideOnParentScrollTarget = (0, _renderer.default)(_hideOnParentScrollTarget); if ($hideOnParentScrollTarget.length) { return $hideOnParentScrollTarget } return this._$wrapper } _render() { super._render(); this._appendContentToElement(); this._renderVisibilityAnimate(this.option("visible")) } _appendContentToElement() { if (!this._$content.parent().is(this.$element())) { this._$content.appendTo(this.$element()) } } _renderContent() { const shouldDeferRendering = !this._currentVisible && this.option("deferRendering"); const isParentHidden = this.option("visible") && this._isParentHidden(); if (isParentHidden) { this._isHidden = true; return } if (this._contentAlreadyRendered || shouldDeferRendering) { return } this._contentAlreadyRendered = true; this._appendContentToElement(); super._renderContent() } _isParentHidden() { if (!this.option("_checkParentVisibility")) { return false } if (void 0 !== this._parentHidden) { return this._parentHidden } const $parent = this.$element().parent(); if ($parent.is(":visible")) { return false } let isHidden = false; $parent.add($parent.parents()).each(((index, element) => { const $element = (0, _renderer.default)(element); if ("none" === $element.css("display")) { isHidden = true; return false } })); return isHidden || !_dom_adapter.default.getBody().contains($parent.get(0)) } _renderContentImpl() { const whenContentRendered = (0, _deferred.Deferred)(); const contentTemplateOption = this.option("contentTemplate"); const contentTemplate = this._getTemplate(contentTemplateOption); const transclude = this._templateManager.anonymousTemplateName === contentTemplateOption; null === contentTemplate || void 0 === contentTemplate || contentTemplate.render({ container: (0, _element.getPublicElement)(this.$content()), noModel: true, transclude: transclude, onRendered: () => { whenContentRendered.resolve(); if (this.option("templatesRenderAsynchronously")) { this._dimensionChanged() } } }); const { preventScrollEvents: preventScrollEvents } = this.option(); this._toggleWrapperScrollEventsSubscription(preventScrollEvents); whenContentRendered.done((() => { if (this.option("visible")) { this._moveToContainer() } })); return whenContentRendered.promise() } _getPositionControllerConfig() { const { container: container, visualContainer: visualContainer, _fixWrapperPosition: _fixWrapperPosition, restorePosition: restorePosition, _skipContentPositioning: _skipContentPositioning } = this.option(); return { container: container, visualContainer: visualContainer, $root: this.$element(), $content: this._$content, $wrapper: this._$wrapper, onPositioned: this._actions.onPositioned, onVisualPositionChanged: this._actions.onVisualPositionChanged, restorePosition: restorePosition, _fixWrapperPosition: _fixWrapperPosition, _skipContentPositioning: _skipContentPositioning } } _initPositionController() { this._positionController = new _m_overlay_position_controller.OverlayPositionController(this._getPositionControllerConfig()) } _toggleWrapperScrollEventsSubscription(enabled) { const eventName = (0, _index.addNamespace)(_drag.move, this.NAME); _events_engine.default.off(this._$wrapper, eventName); if (enabled) { _events_engine.default.on(this._$wrapper, eventName, { validate: () => true, getDirection: () => "both", _toggleGestureCover(toggle) { if (!toggle) { this._toggleGestureCoverImpl(toggle) } }, _clearSelection: _common.noop, isNative: true }, (e => { const { originalEvent: originalEvent } = e.originalEvent; const { type: type } = originalEvent || {}; const isWheel = "wheel" === type; const isMouseMove = "mousemove" === type; const isScrollByWheel = isWheel && !(0, _index.isCommandKeyPressed)(e); e._cancelPreventDefault = true; if (originalEvent && false !== e.cancelable && (!isMouseMove && !isWheel || isScrollByWheel)) { e.preventDefault() } })) } } _moveFromContainer() { this._$content.appendTo(this.$element()); this._$wrapper.detach() } _checkContainerExists() { const $wrapperContainer = this._positionController.$container; if (void 0 === $wrapperContainer) { return } const containerExists = $wrapperContainer.length > 0; if (!containerExists) { _ui.default.log("W1021", this.NAME) } } _moveToContainer() { const $wrapperContainer = this._positionController.$container; this._$wrapper.appendTo($wrapperContainer); this._$content.appendTo(this._$wrapper) } _renderGeometry(options) { const { visible: visible } = this.option(); if (visible && _m_window.default.hasWindow()) { this._stopAnimation(); this._renderGeometryImpl() } } _renderGeometryImpl() { this._positionController.updatePosition(this._getOptionValue("position")); this._renderWrapper(); this._renderDimensions(); this._renderPosition() } _renderPosition(state) { this._positionController.positionContent() } _isAllWindowCovered() { const { shading: shading } = this.option(); return (0, _type.isWindow)(this._positionController.$visualContainer.get(0)) && shading } _toggleSafariScrolling() { const visible = this.option("visible"); const $body = (0, _renderer.default)(_dom_adapter.default.getBody()); const isIosSafari = "ios" === _devices.default.real().platform && _browser.default.safari; const isAllWindowCovered = this._isAllWindowCovered(); const isScrollingPrevented = $body.hasClass("dx-prevent-safari-scrolling"); const shouldPreventScrolling = !isScrollingPrevented && visible && isAllWindowCovered; const shouldEnableScrolling = isScrollingPrevented && (!visible || !isAllWindowCovered || this._disposed); if (isIosSafari) { if (shouldEnableScrolling) { $body.removeClass("dx-prevent-safari-scrolling"); window.scrollTo(0, this._cachedBodyScrollTop); this._cachedBodyScrollTop = void 0 } else if (shouldPreventScrolling) { this._cachedBodyScrollTop = window.pageYOffset; $body.addClass("dx-prevent-safari-scrolling") } } } _renderWrapper() { this._positionController.styleWrapperPosition(); this._renderWrapperDimensions(); this._positionController.positionWrapper() } _renderWrapperDimensions() { const { $visualContainer: $visualContainer } = this._positionController; const documentElement = _dom_adapter.default.getDocumentElement(); const isVisualContainerWindow = (0, _type.isWindow)($visualContainer.get(0)); const wrapperWidth = isVisualContainerWindow ? documentElement.clientWidth : (0, _size.getOuterWidth)($visualContainer); const wrapperHeight = isVisualContainerWindow ? window.innerHeight : (0, _size.getOuterHeight)($visualContainer); this._$wrapper.css({ width: wrapperWidth, height: wrapperHeight }) } _renderDimensions() { const content = this._$content.get(0); this._$content.css({ minWidth: this._getOptionValue("minWidth", content), maxWidth: this._getOptionValue("maxWidth", content), minHeight: this._getOptionValue("minHeight", content), maxHeight: this._getOptionValue("maxHeight", content), width: this._getOptionValue("width", content), height: this._getOptionValue("height", content) }) } _focusTarget() { return this._$content } _attachKeyboardEvents() { this._keyboardListenerId = _short.keyboard.on(this._$content, null, (options => this._keyboardHandler(options))) } _keyboardHandler(options) { const e = options.originalEvent; const $target = (0, _renderer.default)(e.target); if ($target.is(this._$content) || !this.option("ignoreChildEvents")) { super._keyboardHandler(...arguments) } } _isVisible() { const { visible: visible } = this.option(); return visible } _visibilityChanged(visible) { if (visible) { if (this.option("visible")) { this._renderVisibilityAnimate(visible) } } else { this._renderVisibilityAnimate(visible) } } _dimensionChanged() { this._renderGeometry() } _clean() { const { isRenovated: isRenovated } = this.option(); if (!this._contentAlreadyRendered && !isRenovated) { this.$content().empty() } this._renderVisibility(false); this._stopShowTimer(); this._cleanFocusState() } _stopShowTimer() { if (this._asyncShowTimeout) { clearTimeout(this._asyncShowTimeout) } this._asyncShowTimeout = null } _dispose() { _animation.fx.stop(this._$content, false); this._toggleViewPortSubscription(false); this._toggleSubscriptions(false); this._updateZIndexStackPosition(false); this._actions = null; this._parentsScrollSubscriptionInfo = null; super._dispose(); this._toggleSafariScrolling(); this.option("visible") && zIndexPool.remove(this._zIndex); this._$wrapper.remove(); this._$content.remove(); this._destroyTabTerminator() } _toggleRTLDirection(rtl) { this._$content.toggleClass("dx-rtl", rtl) } _optionChanged(args) { const { value: value, name: name } = args; if (this._getActionsList().includes(name)) { this._initActions(); return } switch (name) { case "animation": case "hideOnOutsideClick": case "propagateOutsideClick": break; case "_loopFocus": case "shading": { const { visible: visible } = this.option(); this._toggleShading(visible); this._toggleSafariScrolling(); break } case "shadingColor": { const { visible: visible } = this.option(); this._toggleShading(visible); break } case "width": case "height": case "minWidth": case "maxWidth": case "minHeight": case "maxHeight": this._renderGeometry(); break; case "position": this._positionController.updatePosition(this.option("position")); this._positionController.restorePositionOnNextRender(true); this._renderGeometry(); this._toggleSafariScrolling(); break; case "visible": this._renderVisibilityAnimate(value).done((() => { var _this$_animateDeferre; return null === (_this$_animateDeferre = this._animateDeferred) || void 0 === _this$_animateDeferre ? void 0 : _this$_animateDeferre.resolveWith(this) })).fail((() => { var _this$_animateDeferre2; return null === (_this$_animateDeferre2 = this._animateDeferred) || void 0 === _this$_animateDeferre2 ? void 0 : _this$_animateDeferre2.reject() })); break; case "container": this._positionController.updateContainer(value); this._invalidate(); this._toggleSafariScrolling(); break; case "visualContainer": this._positionController.updateVisualContainer(value); this._renderWrapper(); this._toggleSafariScrolling(); break; case "innerOverlay": this._initInnerOverlayClass(); break; case "deferRendering": case "contentTemplate": this._contentAlreadyRendered = false; this._clean(); this._invalidate(); break; case "hideTopOverlayHandler": this._toggleHideTopOverlayCallback(false); this._initHideTopOverlayHandler(value); this._toggleHideTopOverlayCallback(this.option("visible")); break; case "hideOnParentScroll": case "_hideOnParentScrollTarget": { const { visible: visible } = this.option(); this._toggleHideOnParentsScrollSubscription(visible); break } case "rtlEnabled": this._contentAlreadyRendered = false; super._optionChanged(args); break; case "_fixWrapperPosition": this._positionController.fixWrapperPosition = value; break; case "wrapperAttr": this._renderWrapperAttributes(); break; case "restorePosition": this._positionController.restorePosition = value; break; case "preventScrollEvents": this._logDeprecatedPreventScrollEventsInfo(); this._toggleWrapperScrollEventsSubscription(value); break; default: super._optionChanged(args) } } toggle(showing) { showing = void 0 === showing ? !this.option("visible") : showing; const result = (0, _deferred.Deferred)(); if (showing === this.option("visible")) { return result.resolveWith(this, [showing]).promise() } const animateDeferred = (0, _deferred.Deferred)(); this._animateDeferred = animateDeferred; this.option("visible", showing); animateDeferred.promise().done((() => { delete this._animateDeferred; result.resolveWith(this, [this.option("visible")]) })).fail((() => { delete this._animateDeferred; result.reject() })); return result.promise() } $content() { return this._$content } show() { return this.toggle(true) } hide() { return this.toggle(false) } content() { return (0, _element.getPublicElement)(this._$content) } repaint() { if (this._contentAlreadyRendered) { this._positionController.restorePositionOnNextRender(true); this._renderGeometry({ forceStopAnimation: true }); (0, _visibility_change.triggerResizeEvent)(this._$content) } else { super.repaint() } } } Overlay.baseZIndex = zIndex => zIndexPool.base(zIndex); (0, _component_registrator.default)("dxOverlay", Overlay); exports.default = Overlay }, 4983: /*!****************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/ui/overlay/m_overlay_position_controller.js ***! \****************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.OverlayPositionController = exports.OVERLAY_POSITION_ALIASES = void 0; var _position = _interopRequireDefault(__webpack_require__( /*! ../../../common/core/animation/position */ 3030)); var _translator = __webpack_require__( /*! ../../../common/core/animation/translator */ 88603); var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../../core/renderer */ 64553)); var _extend = __webpack_require__( /*! ../../../core/utils/extend */ 52576); var _type = __webpack_require__( /*! ../../../core/utils/type */ 11528); var _swatch_container = _interopRequireDefault(__webpack_require__( /*! ../../../ui/widget/swatch_container */ 5080)); var _m_window = _interopRequireDefault(__webpack_require__( /*! ../../core/utils/m_window */ 14470)); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } const window = _m_window.default.getWindow(); const OVERLAY_POSITION_ALIASES = exports.OVERLAY_POSITION_ALIASES = { top: { my: "top center", at: "top center" }, bottom: { my: "bottom center", at: "bottom center" }, right: { my: "right center", at: "right center" }, left: { my: "left center", at: "left center" }, center: { my: "center", at: "center" }, "right bottom": { my: "right bottom", at: "right bottom" }, "right top": { my: "right top", at: "right top" }, "left bottom": { my: "left bottom", at: "left bottom" }, "left top": { my: "left top", at: "left top" } }; const OVERLAY_DEFAULT_BOUNDARY_OFFSET = { h: 0, v: 0 }; exports.OverlayPositionController = class { constructor(_ref) { let { position: position, container: container, visualContainer: visualContainer, $root: $root, $content: $content, $wrapper: $wrapper, onPositioned: onPositioned, onVisualPositionChanged: onVisualPositionChanged, restorePosition: restorePosition, _fixWrapperPosition: _fixWrapperPosition, _skipContentPositioning: _skipContentPositioning } = _ref; this._props = { position: position, container: container, visualContainer: visualContainer, restorePosition: restorePosition, onPositioned: onPositioned, onVisualPositionChanged: onVisualPositionChanged, _fixWrapperPosition: _fixWrapperPosition, _skipContentPositioning: _skipContentPositioning }; this._$root = $root; this._$content = $content; this._$wrapper = $wrapper; this._$markupContainer = void 0; this._$visualContainer = void 0; this._shouldRenderContentInitialPosition = true; this._visualPosition = void 0; this._initialPosition = void 0; this._previousVisualPosition = void 0; this.updateContainer(container); this.updatePosition(position); this.updateVisualContainer(visualContainer) } get $container() { this.updateContainer(); return this._$markupContainer } get $visualContainer() { return this._$visualContainer } get position() { return this._position } set fixWrapperPosition(fixWrapperPosition) { this._props._fixWrapperPosition = fixWrapperPosition; this.styleWrapperPosition() } set restorePosition(restorePosition) { this._props.restorePosition = restorePosition } restorePositionOnNextRender(value) { this._shouldRenderContentInitialPosition = value || !this._visualPosition } openingHandled() { const shouldRestorePosition = this._props.restorePosition; this.restorePositionOnNextRender(shouldRestorePosition) } updatePosition(positionProp) { this._props.position = positionProp; this._position = this._normalizePosition(positionProp); this.updateVisualContainer() } updateContainer() { let containerProp = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : this._props.container; this._props.container = containerProp; this._$markupContainer = containerProp ? (0, _renderer.default)(containerProp) : _swatch_container.default.getSwatchContainer(this._$root); this.updateVisualContainer(this._props.visualContainer) } updateVisualContainer() { let visualContainer = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : this._props.visualContainer; this._props.visualContainer = visualContainer; this._$visualContainer = this._getVisualContainer() } detectVisualPositionChange(event) { this._updateVisualPositionValue(); this._raisePositionedEvents(event) } positionContent() { if (this._shouldRenderContentInitialPosition) { this._renderContentInitialPosition() } else { (0, _translator.move)(this._$content, this._visualPosition); this.detectVisualPositionChange() } } positionWrapper() { if (this._$visualContainer) { _position.default.setup(this._$wrapper, { my: "top left", at: "top left", of: this._$visualContainer }) } } styleWrapperPosition() { const useFixed = (0, _type.isWindow)(this.$visualContainer.get(0)) || this._props._fixWrapperPosition; const positionStyle = useFixed ? "fixed" : "absolute"; this._$wrapper.css("position", positionStyle) } _updateVisualPositionValue() { this._previousVisualPosition = this._visualPosition; this._visualPosition = (0, _translator.locate)(this._$content) } _renderContentInitialPosition() { this._renderBoundaryOffset(); (0, _translator.resetPosition)(this._$content); const wrapperOverflow = this._$wrapper.css("overflow"); this._$wrapper.css("overflow", "hidden"); if (!this._props._skipContentPositioning) { const resultPosition = _position.default.setup(this._$content, this._position); this._initialPosition = resultPosition } this._$wrapper.css("overflow", wrapperOverflow); this.detectVisualPositionChange() } _raisePositionedEvents(event) { const previousPosition = this._previousVisualPosition; const newPosition = this._visualPosition; const isVisualPositionChanged = (null === previousPosition || void 0 === previousPosition ? void 0 : previousPosition.top) !== newPosition.top || (null === previousPosition || void 0 === previousPosition ? void 0 : previousPosition.left) !== newPosition.left; if (isVisualPositionChanged) { this._props.onVisualPositionChanged({ previousPosition: previousPosition, position: newPosition, event: event }) } this._props.onPositioned({ position: this._initialPosition }) } _renderBoundaryOffset() { const boundaryOffset = this._position ?? { boundaryOffset: OVERLAY_DEFAULT_BOUNDARY_OFFSET }; this._$content.css("margin", `${boundaryOffset.v}px ${boundaryOffset.h}px`) } _getVisualContainer() { var _this$_props$position, _this$_props$position2; const containerProp = this._props.container; const visualContainerProp = this._props.visualContainer; const positionOf = (0, _type.isEvent)(null === (_this$_props$position = this._props.position) || void 0 === _this$_props$position ? void 0 : _this$_props$position.of) ? this._props.position.of.target : null === (_this$_props$position2 = this._props.position) || void 0 === _this$_props$position2 ? void 0 : _this$_props$position2.of; if (visualContainerProp) { return (0, _renderer.default)(visualContainerProp) } if (containerProp) { return (0, _renderer.default)(containerProp) } if (positionOf) { return (0, _renderer.default)(positionOf) } return (0, _renderer.default)(window) } _normalizePosition(positionProp) { const defaultPositionConfig = { boundaryOffset: OVERLAY_DEFAULT_BOUNDARY_OFFSET }; if ((0, _type.isDefined)(positionProp)) { return (0, _extend.extend)(true, {}, defaultPositionConfig, this._positionToObject(positionProp)) } return defaultPositionConfig } _positionToObject(position) { if ((0, _type.isString)(position)) { return (0, _extend.extend)({}, OVERLAY_POSITION_ALIASES[position]) } return position } } }, 67169: /*!******************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/ui/overlay/m_utils.js ***! \******************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.getElementMaxHeightByWindow = void 0; var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../../core/renderer */ 64553)); var _size = __webpack_require__( /*! ../../../core/utils/size */ 57653); var _type = __webpack_require__( /*! ../../../core/utils/type */ 11528); var _m_window = _interopRequireDefault(__webpack_require__( /*! ../../core/utils/m_window */ 14470)); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } exports.getElementMaxHeightByWindow = ($element, startLocation) => { const $window = (0, _renderer.default)(_m_window.default.getWindow()); const { top: elementOffset } = $element.offset(); let actualOffset; if ((0, _type.isNumeric)(startLocation)) { if (startLocation < elementOffset) { return elementOffset - startLocation } actualOffset = (0, _size.getInnerHeight)($window) - startLocation + $window.scrollTop() } else { const offsetTop = elementOffset - $window.scrollTop(); const offsetBottom = (0, _size.getInnerHeight)($window) - offsetTop - (0, _size.getOuterHeight)($element); actualOffset = Math.max(offsetTop, offsetBottom) } return .9 * actualOffset } }, 84893: /*!********************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/ui/overlay/m_z_index.js ***! \********************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.remove = exports.isLastZIndexInStack = exports.create = exports.clearStack = exports.base = void 0; var _common = __webpack_require__( /*! ../../../core/utils/common */ 17781); let baseZIndex = 1500; let zIndexStack = []; exports.base = ZIndex => { baseZIndex = (0, _common.ensureDefined)(ZIndex, baseZIndex); return baseZIndex }; exports.create = function() { let baseIndex = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : baseZIndex; const { length: length } = zIndexStack; const index = (length ? zIndexStack[length - 1] : baseIndex) + 1; zIndexStack.push(index); return index }; exports.remove = zIndex => { const position = zIndexStack.indexOf(zIndex); if (position >= 0) { zIndexStack.splice(position, 1) } }; exports.isLastZIndexInStack = zIndex => zIndexStack.length && zIndexStack[zIndexStack.length - 1] === zIndex; exports.clearStack = () => { zIndexStack = [] } }, 22085: /*!*************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/ui/popover/m_popover.full.js ***! \*************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; __webpack_require__( /*! ../../../ui/toolbar */ 2850); var _component_registrator = _interopRequireDefault(__webpack_require__( /*! ../../../core/component_registrator */ 92848)); var _ui = _interopRequireDefault(__webpack_require__( /*! ../../../ui/popover/ui.popover */ 98894)); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } function _extends() { return _extends = Object.assign ? Object.assign.bind() : function(n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) { ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]) } } return n }, _extends.apply(null, arguments) } class PopoverFull extends _ui.default { _getDefaultOptions() { return _extends({}, super._getDefaultOptions(), { preventScrollEvents: false }) } _getToolbarName() { return "dxToolbar" } } exports.default = PopoverFull; PopoverFull.defaultOptions = function(rule) { _ui.default.defaultOptions(rule) }; (0, _component_registrator.default)("dxPopover", PopoverFull) }, 7784: /*!********************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/ui/popover/m_popover.js ***! \********************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _position = _interopRequireDefault(__webpack_require__( /*! ../../../common/core/animation/position */ 3030)); var _translator = __webpack_require__( /*! ../../../common/core/animation/translator */ 88603); var _events_engine = _interopRequireDefault(__webpack_require__( /*! ../../../common/core/events/core/events_engine */ 92774)); var _utils = __webpack_require__( /*! ../../../common/core/events/utils */ 98834); var _component_registrator = _interopRequireDefault(__webpack_require__( /*! ../../../core/component_registrator */ 92848)); var _dom_adapter = _interopRequireDefault(__webpack_require__( /*! ../../../core/dom_adapter */ 64960)); var _element = __webpack_require__( /*! ../../../core/element */ 61404); var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../../core/renderer */ 64553)); var _extend = __webpack_require__( /*! ../../../core/utils/extend */ 52576); var _math = __webpack_require__( /*! ../../../core/utils/math */ 50254); var _position2 = __webpack_require__( /*! ../../../core/utils/position */ 41639); var _size = __webpack_require__( /*! ../../../core/utils/size */ 57653); var _type = __webpack_require__( /*! ../../../core/utils/type */ 11528); var _window = __webpack_require__( /*! ../../../core/utils/window */ 3104); var _themes = __webpack_require__( /*! ../../../ui/themes */ 52071); var _ui = _interopRequireDefault(__webpack_require__( /*! ../../../ui/widget/ui.errors */ 35185)); var _m_popup = _interopRequireDefault(__webpack_require__( /*! ../../ui/popup/m_popup */ 43864)); var _m_popover_position_controller = __webpack_require__( /*! ./m_popover_position_controller */ 96423); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } function _extends() { return _extends = Object.assign ? Object.assign.bind() : function(n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) { ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]) } } return n }, _extends.apply(null, arguments) } const POSITION_FLIP_MAP = { left: "right", top: "bottom", right: "left", bottom: "top", center: "center" }; class Popover extends _m_popup.default { _getDefaultOptions() { return _extends({}, super._getDefaultOptions(), { shading: false, position: (0, _extend.extend)({}, _m_popover_position_controller.POPOVER_POSITION_ALIASES.bottom), hideOnOutsideClick: true, animation: { show: { type: "fade", from: 0, to: 1 }, hide: { type: "fade", from: 1, to: 0 } }, showTitle: false, width: "auto", height: "auto", dragEnabled: false, resizeEnabled: false, fullScreen: false, hideOnParentScroll: true, arrowPosition: "", arrowOffset: 0, _fixWrapperPosition: true }) } _defaultOptionsRules() { return [{ device: { platform: "ios" }, options: { arrowPosition: { boundaryOffset: { h: 20, v: -10 }, collision: "fit" } } }, { device: () => !(0, _window.hasWindow)(), options: { animation: null } }, { device: () => (0, _themes.isMaterialBased)(), options: { useFlatToolbarButtons: true } }, { device: () => (0, _themes.isMaterial)(), options: { useDefaultToolbarButtons: true, showCloseButton: false } }] } _init() { super._init(); this._renderArrow(); this._timeouts = {}; this.$element().addClass("dx-popover"); this.$wrapper().addClass("dx-popover-wrapper"); const { toolbarItems: toolbarItems } = this.option(); const isInteractive = null === toolbarItems || void 0 === toolbarItems ? void 0 : toolbarItems.length; this.setAria("role", isInteractive ? "dialog" : "tooltip") } _render() { super._render.apply(this, arguments); this._detachEvents(this.option("target")); this._attachEvents() } _detachEvents(target) { this._detachEvent(target, "show"); this._detachEvent(target, "hide") } _attachEvents() { this._attachEvent("show"); this._attachEvent("hide") } _createEventHandler(name) { const action = this._createAction((() => { const delay = this._getEventDelay(`${name}Event`); this._clearEventsTimeouts(); if (delay) { this._timeouts[name] = setTimeout((() => { this[name]() }), delay) } else { this[name]() } }), { validatingTargetName: "target" }); return e => { action({ event: e, target: (0, _renderer.default)(e.currentTarget) }) } } _attachEvent(name) { const { target: target, shading: shading, disabled: disabled, hideEvent: hideEvent } = this.option(); const shouldIgnoreHideEvent = shading && "hide" === name; if (shouldIgnoreHideEvent && hideEvent) { _ui.default.log("W1020") } const event = shouldIgnoreHideEvent ? null : this._getEventName(`${name}Event`); if (!event || disabled) { return } const EVENT_HANDLER_NAME = this._getEventHandlerName(name); this[EVENT_HANDLER_NAME] = this._createEventHandler(name); const eventName = (0, _utils.addNamespace)(event, this.NAME); const isSelector = (0, _type.isString)(target); if (isSelector) { _events_engine.default.on(_dom_adapter.default.getDocument(), eventName, target, this[EVENT_HANDLER_NAME]) } else { _events_engine.default.on((0, _element.getPublicElement)((0, _renderer.default)(target)), eventName, this[EVENT_HANDLER_NAME]) } } _detachEvent(target, name, event) { let eventName = event || this._getEventName(`${name}Event`); if (!eventName) { return } eventName = (0, _utils.addNamespace)(eventName, this.NAME); const EVENT_HANDLER_NAME = this._getEventHandlerName(name); const isSelector = (0, _type.isString)(target); if (isSelector) { _events_engine.default.off(_dom_adapter.default.getDocument(), eventName, target, this[EVENT_HANDLER_NAME]) } else { _events_engine.default.off((0, _element.getPublicElement)((0, _renderer.default)(target)), eventName, this[EVENT_HANDLER_NAME]) } } _getEventHandlerName(name) { return `_${name}EventHandler` } _getEventNameByOption(optionValue) { return (0, _type.isObject)(optionValue) ? optionValue.name : optionValue } _getEventName(optionName) { const optionValue = this.option(optionName); return this._getEventNameByOption(optionValue) } _getEventDelay(optionName) { const optionValue = this.option(optionName); return (0, _type.isObject)(optionValue) && optionValue.delay } _renderArrow() { this._$arrow = (0, _renderer.default)("<div>").addClass("dx-popover-arrow").prependTo(this.$overlayContent()) } _documentDownHandler(e) { if (this._isOutsideClick(e)) { return super._documentDownHandler(e) } return true } _isOutsideClick(e) { const { target: target } = this.option(); return !(0, _renderer.default)(e.target).closest(target).length } _animate(animation) { if (null !== animation && void 0 !== animation && animation.to && "object" === typeof animation.to) { (0, _extend.extend)(animation.to, { position: this._getContainerPosition() }) } super._animate.apply(this, arguments) } _stopAnimation() { super._stopAnimation.apply(this, arguments) } _renderTitle() { this.$wrapper().toggleClass("dx-popover-without-title", !this.option("showTitle")); super._renderTitle() } _renderPosition() { let shouldUpdateDimensions = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : true; super._renderPosition(); this._renderOverlayPosition(shouldUpdateDimensions); this._actions.onPositioned() } _renderOverlayPosition(shouldUpdateDimensions) { this._resetOverlayPosition(shouldUpdateDimensions); this._updateContentSize(shouldUpdateDimensions); const contentPosition = this._getContainerPosition(); const resultLocation = _position.default.setup(this.$overlayContent(), contentPosition); const positionSide = this._getSideByLocation(resultLocation); this._togglePositionClass(`dx-position-${positionSide}`); this._toggleFlippedClass(resultLocation.h.flip, resultLocation.v.flip); const isArrowVisible = this._isHorizontalSide() || this._isVerticalSide(); if (isArrowVisible) { this._renderArrowPosition(positionSide) } } _resetOverlayPosition(shouldUpdateDimensions) { this._setContentHeight(shouldUpdateDimensions); this._togglePositionClass(`dx-position-${this._positionController._positionSide}`); (0, _translator.move)(this.$overlayContent(), { left: 0, top: 0 }); this._$arrow.css({ top: "auto", right: "auto", bottom: "auto", left: "auto" }) } _updateContentSize(shouldUpdateDimensions) { if (!this.$content() || !shouldUpdateDimensions) { return } const containerLocation = _position.default.calculate(this.$overlayContent(), this._getContainerPosition()); if (containerLocation.h.oversize > 0 && this._isHorizontalSide() && !containerLocation.h.fit) { const newContainerWidth = (0, _size.getWidth)(this.$overlayContent()) - containerLocation.h.oversize; (0, _size.setWidth)(this.$overlayContent(), newContainerWidth) } if (containerLocation.v.oversize > 0 && this._isVerticalSide() && !containerLocation.v.fit) { const newOverlayContentHeight = (0, _size.getHeight)(this.$overlayContent()) - containerLocation.v.oversize; const newPopupContentHeight = (0, _size.getHeight)(this.$content()) - containerLocation.v.oversize; (0, _size.setHeight)(this.$overlayContent(), newOverlayContentHeight); (0, _size.setHeight)(this.$content(), newPopupContentHeight) } } _getContainerPosition() { return this._positionController._getContainerPosition() } _getHideOnParentScrollTarget() { return (0, _renderer.default)(this._positionController._position.of || super._getHideOnParentScrollTarget()) } _getSideByLocation(location) { const isFlippedByVertical = location.v.flip; const isFlippedByHorizontal = location.h.flip; return this._isVerticalSide() && isFlippedByVertical || this._isHorizontalSide() && isFlippedByHorizontal || this._isPopoverInside() ? POSITION_FLIP_MAP[this._positionController._positionSide] : this._positionController._positionSide } _togglePositionClass(positionClass) { this.$wrapper().removeClass("dx-position-left dx-position-right dx-position-top dx-position-bottom").addClass(positionClass) } _toggleFlippedClass(isFlippedHorizontal, isFlippedVertical) { this.$wrapper().toggleClass("dx-popover-flipped-horizontal", isFlippedHorizontal).toggleClass("dx-popover-flipped-vertical", isFlippedVertical) } _renderArrowPosition(side) { const arrowRect = (0, _position2.getBoundingRect)(this._$arrow.get(0)); const arrowFlip = -(this._isVerticalSide(side) ? arrowRect.height : arrowRect.width); this._$arrow.css(POSITION_FLIP_MAP[side], arrowFlip); const axis = this._isVerticalSide(side) ? "left" : "top"; const sizeProperty = this._isVerticalSide(side) ? "width" : "height"; const $target = (0, _renderer.default)(this._positionController._position.of); const targetOffset = _position.default.offset($target) ?? { top: 0, left: 0 }; const contentOffset = _position.default.offset(this.$overlayContent()); const arrowSize = arrowRect[sizeProperty]; const contentLocation = null === contentOffset || void 0 === contentOffset ? void 0 : contentOffset[axis]; const contentSize = (0, _position2.getBoundingRect)(this.$overlayContent().get(0))[sizeProperty]; const targetLocation = targetOffset[axis]; const targetElement = $target.get(0); const targetSize = targetElement && !targetElement.preventDefault ? (0, _position2.getBoundingRect)(targetElement)[sizeProperty] : 0; const min = Math.max(contentLocation, targetLocation); const max = Math.min(contentLocation + contentSize, targetLocation + targetSize); let arrowLocation; const { arrowPosition: arrowPosition } = this.option(); if ("start" === arrowPosition) { arrowLocation = min - contentLocation } else if ("end" === arrowPosition) { arrowLocation = max - contentLocation - arrowSize } else { arrowLocation = (min + max) / 2 - contentLocation - arrowSize / 2 } const borderWidth = this._positionController._getContentBorderWidth(side); const { arrowOffset: arrowOffset } = this.option(); const finalArrowLocation = (0, _math.fitIntoRange)(arrowLocation - borderWidth + arrowOffset, borderWidth, contentSize - arrowSize - 2 * borderWidth); this._$arrow.css(axis, finalArrowLocation) } _isPopoverInside() { return this._positionController._isPopoverInside() } _setContentHeight(fullUpdate) { if (fullUpdate) { super._setContentHeight() } } _getPositionControllerConfig() { const { shading: shading, target: target } = this.option(); return (0, _extend.extend)({}, super._getPositionControllerConfig(), { target: target, shading: shading, $arrow: this._$arrow }) } _initPositionController() { this._positionController = new _m_popover_position_controller.PopoverPositionController(this._getPositionControllerConfig()) } _renderWrapperDimensions() { if (this.option("shading")) { this.$wrapper().css({ width: "100%", height: "100%" }) } } _isVerticalSide(side) { return this._positionController._isVerticalSide(side) } _isHorizontalSide(side) { return this._positionController._isHorizontalSide(side) } _clearEventTimeout(name) { clearTimeout(this._timeouts[name]) } _clearEventsTimeouts() { this._clearEventTimeout("show"); this._clearEventTimeout("hide") } _clean() { this._detachEvents(this.option("target")); super._clean.apply(this, arguments) } _optionChanged(args) { const { name: name, value: value, previousValue: previousValue } = args; switch (name) { case "arrowPosition": case "arrowOffset": this._renderGeometry(); break; case "fullScreen": if (value) { this.option("fullScreen", false) } break; case "target": if (previousValue) { this._detachEvents(previousValue) } this._positionController.updateTarget(value); this._invalidate(); break; case "showEvent": case "hideEvent": { const eventName = name.substring(0, 4); const event = this._getEventNameByOption(previousValue); this.hide(); const { target: target } = this.option(); this._detachEvent(target, eventName, event); this._attachEvent(eventName); break } case "visible": this._clearEventTimeout(value ? "show" : "hide"); super._optionChanged(args); break; case "disabled": this._detachEvents(this.option("target")); this._attachEvents(); super._optionChanged(args); break; default: super._optionChanged(args) } } show(target) { if (target) { this.option("target", target) } return super.show() } }(0, _component_registrator.default)("dxPopover", Popover); exports.default = Popover }, 96423: /*!****************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/ui/popover/m_popover_position_controller.js ***! \****************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.PopoverPositionController = exports.POPOVER_POSITION_ALIASES = void 0; var _position = (e = __webpack_require__( /*! ../../../common/core/animation/position */ 3030), e && e.__esModule ? e : { default: e }); var e; var _common = __webpack_require__( /*! ../../../core/utils/common */ 17781); var _extend = __webpack_require__( /*! ../../../core/utils/extend */ 52576); var _size = __webpack_require__( /*! ../../../core/utils/size */ 57653); var _type = __webpack_require__( /*! ../../../core/utils/type */ 11528); var _m_overlay_position_controller = __webpack_require__( /*! ../../ui/overlay/m_overlay_position_controller */ 4983); var _utils = __webpack_require__( /*! ../../ui/resizable/utils */ 25056); const _excluded = ["shading", "target", "$arrow"]; function _extends() { return _extends = Object.assign ? Object.assign.bind() : function(n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) { ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]) } } return n }, _extends.apply(null, arguments) } const WEIGHT_OF_SIDES = { left: -1, top: -1, center: 0, right: 1, bottom: 1 }; const POPOVER_POSITION_ALIASES = exports.POPOVER_POSITION_ALIASES = { top: { my: "bottom center", at: "top center", collision: "fit flip" }, bottom: { my: "top center", at: "bottom center", collision: "fit flip" }, right: { my: "left center", at: "right center", collision: "flip fit" }, left: { my: "right center", at: "left center", collision: "flip fit" } }; const POPOVER_DEFAULT_BOUNDARY_OFFSET = { h: 10, v: 10 }; class PopoverPositionController extends _m_overlay_position_controller.OverlayPositionController { constructor(_ref) { let { shading: shading, target: target, $arrow: $arrow } = _ref, args = function(r, e) { if (null == r) { return {} } var t = {}; for (var n in r) { if ({}.hasOwnProperty.call(r, n)) { if (e.includes(n)) { continue } t[n] = r[n] } } return t }(_ref, _excluded); super(args); this._props = _extends({}, this._props, { shading: shading, target: target }); this._$arrow = $arrow; this._positionSide = void 0; this.updatePosition(this._props.position) } positionWrapper() { if (this._props.shading) { this._$wrapper.css({ top: 0, left: 0 }) } } updateTarget(target) { this._props.target = target; this.updatePosition(this._props.position) } _renderBoundaryOffset() {} _getContainerPosition() { const offset = (0, _common.pairToObject)(this._position.offset || ""); let { h: hOffset, v: vOffset } = offset; const isVerticalSide = this._isVerticalSide(); const isHorizontalSide = this._isHorizontalSide(); if (isVerticalSide || isHorizontalSide) { const isPopoverInside = this._isPopoverInside(); const sign = (isPopoverInside ? -1 : 1) * WEIGHT_OF_SIDES[this._positionSide]; const arrowSize = isVerticalSide ? (0, _size.getHeight)(this._$arrow) : (0, _size.getWidth)(this._$arrow); const arrowSizeCorrection = this._getContentBorderWidth(this._positionSide); const arrowOffset = sign * (arrowSize - arrowSizeCorrection); isVerticalSide ? vOffset += arrowOffset : hOffset += arrowOffset } return (0, _extend.extend)({}, this._position, { offset: `${hOffset} ${vOffset}` }) } _getContentBorderWidth(side) { const borderWidth = this._$content.css(_utils.borderWidthStyles[side]); return parseInt(borderWidth) || 0 } _isPopoverInside() { const my = _position.default.setup.normalizeAlign(this._position.my); const at = _position.default.setup.normalizeAlign(this._position.at); return my.h === at.h && my.v === at.v } _isVerticalSide() { let side = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : this._positionSide; return "top" === side || "bottom" === side } _isHorizontalSide() { let side = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : this._positionSide; return "left" === side || "right" === side } _getDisplaySide(position) { const my = _position.default.setup.normalizeAlign(position.my); const at = _position.default.setup.normalizeAlign(position.at); const weightSign = WEIGHT_OF_SIDES[my.h] === WEIGHT_OF_SIDES[at.h] && WEIGHT_OF_SIDES[my.v] === WEIGHT_OF_SIDES[at.v] ? -1 : 1; const horizontalWeight = Math.abs(WEIGHT_OF_SIDES[my.h] - weightSign * WEIGHT_OF_SIDES[at.h]); const verticalWeight = Math.abs(WEIGHT_OF_SIDES[my.v] - weightSign * WEIGHT_OF_SIDES[at.v]); return horizontalWeight > verticalWeight ? at.h : at.v } _normalizePosition(positionProp) { const defaultPositionConfig = { of: this._props.target, boundaryOffset: POPOVER_DEFAULT_BOUNDARY_OFFSET }; let resultPosition; if ((0, _type.isDefined)(positionProp)) { resultPosition = (0, _extend.extend)(true, {}, defaultPositionConfig, this._positionToObject(positionProp)) } else { resultPosition = defaultPositionConfig } this._positionSide = this._getDisplaySide(resultPosition); return resultPosition } _positionToObject(positionProp) { if ((0, _type.isString)(positionProp)) { return (0, _extend.extend)({}, POPOVER_POSITION_ALIASES[positionProp]) } return positionProp } } exports.PopoverPositionController = PopoverPositionController }, 53973: /*!*********************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/ui/popup/m_popup.full.js ***! \*********************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; __webpack_require__( /*! ../../../ui/toolbar */ 2850); var _component_registrator = _interopRequireDefault(__webpack_require__( /*! ../../../core/component_registrator */ 92848)); var _ui = _interopRequireDefault(__webpack_require__( /*! ../../../ui/popup/ui.popup */ 10720)); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } function _extends() { return _extends = Object.assign ? Object.assign.bind() : function(n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) { ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]) } } return n }, _extends.apply(null, arguments) } class PopupFull extends _ui.default { _getDefaultOptions() { return _extends({}, super._getDefaultOptions(), { preventScrollEvents: false }) } _getToolbarName() { return "dxToolbar" } } exports.default = PopupFull; PopupFull.defaultOptions = function(rule) { _ui.default.defaultOptions(rule) }; (0, _component_registrator.default)("dxPopup", PopupFull) }, 43864: /*!****************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/ui/popup/m_popup.js ***! \****************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = exports.TEMPLATE_WRAPPER_CLASS = exports.POPUP_TITLE_CLOSEBUTTON_CLASS = exports.POPUP_CONTENT_SCROLLABLE_CLASS = exports.POPUP_CONTENT_CLASS = exports.POPUP_CLASS = void 0; __webpack_require__( /*! ../../../ui/toolbar/ui.toolbar.base */ 21667); var _visibility_change = __webpack_require__( /*! ../../../common/core/events/visibility_change */ 18029); var _message = _interopRequireDefault(__webpack_require__( /*! ../../../common/core/localization/message */ 4671)); var _component_registrator = _interopRequireDefault(__webpack_require__( /*! ../../../core/component_registrator */ 92848)); var _devices = _interopRequireDefault(__webpack_require__( /*! ../../../core/devices */ 65951)); var _element = __webpack_require__( /*! ../../../core/element */ 61404); var _guid = _interopRequireDefault(__webpack_require__( /*! ../../../core/guid */ 19427)); var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../../core/renderer */ 64553)); var _resize_observer = _interopRequireDefault(__webpack_require__( /*! ../../../core/resize_observer */ 11787)); var _empty_template = __webpack_require__( /*! ../../../core/templates/empty_template */ 48650); var _common = __webpack_require__( /*! ../../../core/utils/common */ 17781); var _extend = __webpack_require__( /*! ../../../core/utils/extend */ 52576); var _inflector = __webpack_require__( /*! ../../../core/utils/inflector */ 53124); var _iterator = __webpack_require__( /*! ../../../core/utils/iterator */ 21274); var _position = __webpack_require__( /*! ../../../core/utils/position */ 41639); var _size = __webpack_require__( /*! ../../../core/utils/size */ 57653); var _type = __webpack_require__( /*! ../../../core/utils/type */ 11528); var _button = _interopRequireDefault(__webpack_require__( /*! ../../../ui/button */ 64973)); var _resizable = _interopRequireDefault(__webpack_require__( /*! ../../../ui/resizable */ 28416)); var _themes = __webpack_require__( /*! ../../../ui/themes */ 52071); var _m_overlay = _interopRequireDefault(__webpack_require__( /*! ../../ui/overlay/m_overlay */ 68632)); var zIndexPool = function(e, r) { if (!r && e && e.__esModule) { return e } if (null === e || "object" != typeof e && "function" != typeof e) { return { default: e } } var t = _getRequireWildcardCache(r); if (t && t.has(e)) { return t.get(e) } var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) { if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u] } } return n.default = e, t && t.set(e, n), n }(__webpack_require__( /*! ../../ui/overlay/m_z_index */ 84893)); var _m_window = _interopRequireDefault(__webpack_require__( /*! ../../core/utils/m_window */ 14470)); var _m_popup_drag = _interopRequireDefault(__webpack_require__( /*! ./m_popup_drag */ 26513)); var _m_popup_overflow_manager = __webpack_require__( /*! ./m_popup_overflow_manager */ 27129); var _m_popup_position_controller = __webpack_require__( /*! ./m_popup_position_controller */ 90263); function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) { return null } var r = new WeakMap, t = new WeakMap; return (_getRequireWildcardCache = function(e) { return e ? t : r })(e) } function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } function _extends() { return _extends = Object.assign ? Object.assign.bind() : function(n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) { ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]) } } return n }, _extends.apply(null, arguments) } const window = _m_window.default.getWindow(); const POPUP_CLASS = exports.POPUP_CLASS = "dx-popup"; const POPUP_CONTENT_CLASS = exports.POPUP_CONTENT_CLASS = "dx-popup-content"; const POPUP_CONTENT_SCROLLABLE_CLASS = exports.POPUP_CONTENT_SCROLLABLE_CLASS = "dx-popup-content-scrollable"; const POPUP_TITLE_CLOSEBUTTON_CLASS = exports.POPUP_TITLE_CLOSEBUTTON_CLASS = "dx-closebutton"; const TEMPLATE_WRAPPER_CLASS = exports.TEMPLATE_WRAPPER_CLASS = "dx-template-wrapper"; const ALLOWED_TOOLBAR_ITEM_ALIASES = ["cancel", "clear", "done"]; const HEIGHT_STRATEGIES = { static: "", inherit: "dx-popup-inherit-height", flex: "dx-popup-flex-height" }; class Popup extends _m_overlay.default { _supportedKeys() { return _extends({}, super._supportedKeys(), { upArrow: e => { var _this$_drag; null === (_this$_drag = this._drag) || void 0 === _this$_drag || _this$_drag.moveUp(e) }, downArrow: e => { var _this$_drag2; null === (_this$_drag2 = this._drag) || void 0 === _this$_drag2 || _this$_drag2.moveDown(e) }, leftArrow: e => { var _this$_drag3; null === (_this$_drag3 = this._drag) || void 0 === _this$_drag3 || _this$_drag3.moveLeft(e) }, rightArrow: e => { var _this$_drag4; null === (_this$_drag4 = this._drag) || void 0 === _this$_drag4 || _this$_drag4.moveRight(e) } }) } _getDefaultOptions() { return _extends({}, super._getDefaultOptions(), { fullScreen: false, title: "", showTitle: true, titleTemplate: "title", onTitleRendered: null, dragOutsideBoundary: false, dragEnabled: false, enableBodyScroll: true, outsideDragFactor: 0, onResizeStart: null, onResize: null, onResizeEnd: null, resizeEnabled: false, toolbarItems: [], showCloseButton: false, bottomTemplate: "bottom", useDefaultToolbarButtons: false, useFlatToolbarButtons: false, autoResizeEnabled: true }) } _defaultOptionsRules() { return super._defaultOptionsRules().concat([{ device: { platform: "ios" }, options: { animation: this._iosAnimation } }, { device: { platform: "android" }, options: { animation: this._androidAnimation } }, { device: { platform: "generic" }, options: { showCloseButton: true } }, { device: device => "desktop" === _devices.default.real().deviceType && "generic" === device.platform, options: { dragEnabled: true } }, { device: () => "desktop" === _devices.default.real().deviceType && !_devices.default.isSimulator(), options: { focusStateEnabled: true } }, { device: () => (0, _themes.isMaterialBased)(), options: { useFlatToolbarButtons: true } }, { device: () => (0, _themes.isMaterial)(), options: { useDefaultToolbarButtons: true, showCloseButton: false } }]) } _iosAnimation() { return { show: { type: "slide", duration: 400, from: { position: { my: "top", at: "bottom" } }, to: { position: { my: "center", at: "center" } } }, hide: { type: "slide", duration: 400, from: { opacity: 1, position: { my: "center", at: "center" } }, to: { opacity: 1, position: { my: "top", at: "bottom" } } } } } _androidAnimation() { return this.option("fullScreen") ? { show: { type: "slide", duration: 300, from: { top: "30%", opacity: 0 }, to: { top: 0, opacity: 1 } }, hide: { type: "slide", duration: 300, from: { top: 0, opacity: 1 }, to: { top: "30%", opacity: 0 } } } : { show: { type: "fade", duration: 400, from: 0, to: 1 }, hide: { type: "fade", duration: 400, from: 1, to: 0 } } } _init() { const { _wrapperClassExternal: popupWrapperClassExternal } = this.option(); const popupWrapperClasses = popupWrapperClassExternal ? `dx-popup-wrapper ${popupWrapperClassExternal}` : "dx-popup-wrapper"; super._init(); this._createBodyOverflowManager(); this._updateResizeCallbackSkipCondition(); this.$element().addClass(POPUP_CLASS); this.$wrapper().addClass(popupWrapperClasses); this._$popupContent = this._$content.wrapInner((0, _renderer.default)("<div>").addClass(POPUP_CONTENT_CLASS)).children().eq(0); this._toggleContentScrollClass(); this.$overlayContent().attr("role", "dialog") } _render() { const isFullscreen = this.option("fullScreen"); this._toggleFullScreenClass(isFullscreen); super._render() } _createBodyOverflowManager() { this._bodyOverflowManager = (0, _m_popup_overflow_manager.createBodyOverflowManager)() } _toggleFullScreenClass(value) { this.$overlayContent().toggleClass("dx-popup-fullscreen", value).toggleClass("dx-popup-normal", !value) } _initTemplates() { super._initTemplates(); this._templateManager.addDefaultTemplates({ title: new _empty_template.EmptyTemplate, bottom: new _empty_template.EmptyTemplate }) } _getActionsList() { return super._getActionsList().concat(["onResizeStart", "onResize", "onResizeEnd"]) } _contentResizeHandler(entry) { if (!this._shouldSkipContentResize(entry)) { this._renderGeometry({ shouldOnlyReposition: true }) } } _doesShowAnimationChangeDimensions() { const animation = this.option("animation"); return ["to", "from"].some((prop => { var _animation$show; const config = null === animation || void 0 === animation || null === (_animation$show = animation.show) || void 0 === _animation$show ? void 0 : _animation$show[prop]; return (0, _type.isObject)(config) && ("width" in config || "height" in config) })) } _updateResizeCallbackSkipCondition() { const doesShowAnimationChangeDimensions = this._doesShowAnimationChangeDimensions(); this._shouldSkipContentResize = entry => doesShowAnimationChangeDimensions && this._showAnimationProcessing || this._areContentDimensionsRendered(entry) } _observeContentResize(shouldObserve) { if (!this.option("useResizeObserver")) { return } const contentElement = this._$content.get(0); if (shouldObserve) { _resize_observer.default.observe(contentElement, (entry => { this._contentResizeHandler(entry) })) } else { _resize_observer.default.unobserve(contentElement) } } _areContentDimensionsRendered(entry) { var _entry$contentBoxSize, _this$_renderedDimens3, _this$_renderedDimens4; const contentBox = null === (_entry$contentBoxSize = entry.contentBoxSize) || void 0 === _entry$contentBoxSize ? void 0 : _entry$contentBoxSize[0]; if (contentBox) { var _this$_renderedDimens, _this$_renderedDimens2; return parseInt(contentBox.inlineSize, 10) === (null === (_this$_renderedDimens = this._renderedDimensions) || void 0 === _this$_renderedDimens ? void 0 : _this$_renderedDimens.width) && parseInt(contentBox.blockSize, 10) === (null === (_this$_renderedDimens2 = this._renderedDimensions) || void 0 === _this$_renderedDimens2 ? void 0 : _this$_renderedDimens2.height) } const { contentRect: contentRect } = entry; return parseInt(contentRect.width, 10) === (null === (_this$_renderedDimens3 = this._renderedDimensions) || void 0 === _this$_renderedDimens3 ? void 0 : _this$_renderedDimens3.width) && parseInt(contentRect.height, 10) === (null === (_this$_renderedDimens4 = this._renderedDimensions) || void 0 === _this$_renderedDimens4 ? void 0 : _this$_renderedDimens4.height) } _renderContent() { super._renderContent(); this._observeContentResize(true) } _renderContentImpl() { this._renderTitle(); super._renderContentImpl(); this._renderResize(); this._renderBottom() } _renderTitle() { const items = this._getToolbarItems("top"); const { title: title, showTitle: showTitle } = this.option(); if (showTitle && !!title) { items.unshift({ location: _devices.default.current().ios ? "center" : "before", text: title }) } if (showTitle || items.length > 0) { if (this._$title) { this._$title.remove() } const $title = (0, _renderer.default)("<div>").addClass("dx-popup-title").insertBefore(this.$content()); this._$title = this._renderTemplateByType("titleTemplate", items, $title).addClass("dx-popup-title"); this._renderDrag(); this._executeTitleRenderAction(this._$title); this._$title.toggleClass("dx-has-close-button", this._hasCloseButton()) } else if (this._$title) { this._$title.detach() } this._toggleAriaLabel() } _toggleAriaLabel() { var _this$_$title; const { title: title, showTitle: showTitle } = this.option(); const shouldSetAriaLabel = showTitle && !!title; const titleId = shouldSetAriaLabel ? new _guid.default : null; null === (_this$_$title = this._$title) || void 0 === _this$_$title || _this$_$title.find(".dx-toolbar-label").eq(0).attr("id", titleId); this.$overlayContent().attr("aria-labelledby", titleId) } _renderTemplateByType(optionName, data, $container, additionalToolbarOptions) { const { rtlEnabled: rtlEnabled, useDefaultToolbarButtons: useDefaultToolbarButtons, useFlatToolbarButtons: useFlatToolbarButtons, disabled: disabled } = this.option(); const template = this._getTemplateByOption(optionName); const toolbarTemplate = template instanceof _empty_template.EmptyTemplate; if (toolbarTemplate) { const integrationOptions = (0, _extend.extend)({}, this.option("integrationOptions"), { skipTemplates: ["content", "title"] }); const toolbarOptions = (0, _extend.extend)(additionalToolbarOptions, { items: data, rtlEnabled: rtlEnabled, useDefaultButtons: useDefaultToolbarButtons, useFlatButtons: useFlatToolbarButtons, disabled: disabled, integrationOptions: integrationOptions }); this._getTemplate("dx-polymorph-widget").render({ container: $container, model: { widget: this._getToolbarName(), options: toolbarOptions } }); const $toolbar = $container.children("div"); $container.replaceWith($toolbar); return $toolbar } const $result = (0, _renderer.default)(template.render({ container: (0, _element.getPublicElement)($container) })); if ($result.hasClass(TEMPLATE_WRAPPER_CLASS)) { $container.replaceWith($result); $container = $result } return $container } _getToolbarName() { return "dxToolbarBase" } _renderVisibilityAnimate(visible) { return super._renderVisibilityAnimate(visible) } _hide() { this._observeContentResize(false); return super._hide() } _executeTitleRenderAction($titleElement) { this._getTitleRenderAction()({ titleElement: (0, _element.getPublicElement)($titleElement) }) } _getTitleRenderAction() { return this._titleRenderAction || this._createTitleRenderAction() } _createTitleRenderAction() { return this._titleRenderAction = this._createActionByOption("onTitleRendered", { element: this.element(), excludeValidators: ["disabled", "readOnly"] }) } _getCloseButton() { return { toolbar: "top", location: "after", template: this._getCloseButtonRenderer() } } _getCloseButtonRenderer() { return (_, __, container) => { const $button = (0, _renderer.default)("<div>").addClass(POPUP_TITLE_CLOSEBUTTON_CLASS); this._createComponent($button, _button.default, { icon: "close", onClick: this._createToolbarItemAction(void 0), stylingMode: "text", integrationOptions: {} }); (0, _renderer.default)(container).append($button) } } _getToolbarItems(toolbar) { const toolbarItems = this.option("toolbarItems"); const toolbarsItems = []; this._toolbarItemClasses = []; const currentPlatform = _devices.default.current().platform; let index = 0; (0, _iterator.each)(toolbarItems, ((_, data) => { const isShortcut = (0, _type.isDefined)(data.shortcut); const item = isShortcut ? (name => { const device = _devices.default.current(); const { platform: platform } = device; let toolbar = "bottom"; let location = "before"; if ("ios" === platform) { switch (name) { case "cancel": toolbar = "top"; break; case "clear": toolbar = "top"; location = "after"; break; case "done": location = "after" } } else if ("android" === platform) { switch (name) { case "cancel": case "done": location = "after" } } return { toolbar: toolbar, location: location } })(data.shortcut) : data; if (isShortcut && "ios" === currentPlatform && index < 2) { item.toolbar = "top"; index++ } item.toolbar = data.toolbar || item.toolbar || "top"; if (item && item.toolbar === toolbar) { if (isShortcut) { (0, _extend.extend)(item, { location: data.location }, this._getToolbarItemByAlias(data)) } const isLTROrder = "generic" === currentPlatform; if ("done" === data.shortcut && isLTROrder || "cancel" === data.shortcut && !isLTROrder) { toolbarsItems.unshift(item) } else { toolbarsItems.push(item) } } })); if ("top" === toolbar && this._hasCloseButton()) { toolbarsItems.push(this._getCloseButton()) } return toolbarsItems } _hasCloseButton() { const { showCloseButton: showCloseButton, showTitle: showTitle } = this.option(); return showCloseButton && showTitle } _getLocalizationKey(itemType) { return "done" === itemType.toLowerCase() ? "OK" : (0, _inflector.camelize)(itemType, true) } _getToolbarButtonStylingMode(shortcut) { if ((0, _themes.isFluent)()) { return "done" === shortcut ? "contained" : "outlined" } return this.option("useFlatToolbarButtons") ? "text" : "contained" } _getToolbarButtonType(shortcut) { if ((0, _themes.isFluent)() && "done" === shortcut || this.option("useDefaultToolbarButtons")) { return "default" } return "normal" } _getToolbarItemByAlias(data) { const that = this; const itemType = data.shortcut; if (!ALLOWED_TOOLBAR_ITEM_ALIASES.includes(itemType)) { return false } const itemConfig = (0, _extend.extend)({ text: _message.default.format(this._getLocalizationKey(itemType)), onClick: this._createToolbarItemAction(data.onClick), integrationOptions: {}, type: this._getToolbarButtonType(itemType), stylingMode: this._getToolbarButtonStylingMode(itemType) }, data.options || {}); const itemClass = `${POPUP_CLASS}-${itemType}`; this._toolbarItemClasses.push(itemClass); return { template(_, __, container) { const $toolbarItem = (0, _renderer.default)("<div>").addClass(itemClass).appendTo(container); that._createComponent($toolbarItem, _button.default, itemConfig) } } } _createToolbarItemAction(clickAction) { return this._createAction(clickAction, { afterExecute(e) { e.component.hide() } }) } _renderBottom() { const items = this._getToolbarItems("bottom"); if (items.length) { var _this$_$bottom; null === (_this$_$bottom = this._$bottom) || void 0 === _this$_$bottom || _this$_$bottom.remove(); const $bottom = (0, _renderer.default)("<div>").addClass("dx-popup-bottom").insertAfter(this.$content()); this._$bottom = this._renderTemplateByType("bottomTemplate", items, $bottom, { compactMode: true }).addClass("dx-popup-bottom"); this._toggleClasses() } else { var _this$_$bottom2; null === (_this$_$bottom2 = this._$bottom) || void 0 === _this$_$bottom2 || _this$_$bottom2.detach() } } _toggleDisabledState(value) { super._toggleDisabledState(...arguments); this.$content().toggleClass("dx-state-disabled", Boolean(value)) } _toggleClasses() { const aliases = ALLOWED_TOOLBAR_ITEM_ALIASES; (0, _iterator.each)(aliases, ((_, alias) => { const className = `${POPUP_CLASS}-${alias}`; if (this._toolbarItemClasses.includes(className)) { var _this$_$bottom3; this.$wrapper().addClass(`${className}-visible`); null === (_this$_$bottom3 = this._$bottom) || void 0 === _this$_$bottom3 || _this$_$bottom3.addClass(className) } else { var _this$_$bottom4; this.$wrapper().removeClass(`${className}-visible`); null === (_this$_$bottom4 = this._$bottom) || void 0 === _this$_$bottom4 || _this$_$bottom4.removeClass(className) } })) } _toggleFocusClass(isFocused, $element) { super._toggleFocusClass(isFocused, $element); if (isFocused && !zIndexPool.isLastZIndexInStack(this._zIndex)) { const zIndex = zIndexPool.create(this._zIndexInitValue()); zIndexPool.remove(this._zIndex); this._zIndex = zIndex; this._$wrapper.css("zIndex", zIndex); this._$content.css("zIndex", zIndex) } } _toggleContentScrollClass() { const isNativeScrollingEnabled = !this.option("preventScrollEvents"); this.$content().toggleClass(POPUP_CONTENT_SCROLLABLE_CLASS, isNativeScrollingEnabled) } _getPositionControllerConfig() { const { fullScreen: fullScreen, forceApplyBindings: forceApplyBindings, dragOutsideBoundary: dragOutsideBoundary, dragAndResizeArea: dragAndResizeArea, outsideDragFactor: outsideDragFactor } = this.option(); return _extends({}, super._getPositionControllerConfig(), { fullScreen: fullScreen, forceApplyBindings: forceApplyBindings, dragOutsideBoundary: dragOutsideBoundary, dragAndResizeArea: dragAndResizeArea, outsideDragFactor: outsideDragFactor }) } _initPositionController() { this._positionController = new _m_popup_position_controller.PopupPositionController(this._getPositionControllerConfig()) } _getDragTarget() { return this.topToolbar() } _renderGeometry(options) { const { visible: visible, useResizeObserver: useResizeObserver } = this.option(); if (visible && _m_window.default.hasWindow()) { const isAnimated = this._showAnimationProcessing; const shouldRepeatAnimation = isAnimated && !(null !== options && void 0 !== options && options.forceStopAnimation) && useResizeObserver; this._isAnimationPaused = shouldRepeatAnimation || void 0; this._stopAnimation(); if (null !== options && void 0 !== options && options.shouldOnlyReposition) { this._renderPosition(false) } else { this._renderGeometryImpl(null === options || void 0 === options ? void 0 : options.isDimensionChange) } if (shouldRepeatAnimation) { this._animateShowing(); this._isAnimationPaused = void 0 } } } _cacheDimensions() { if (!this.option("useResizeObserver")) { return } this._renderedDimensions = { width: parseInt((0, _size.getWidth)(this._$content), 10), height: parseInt((0, _size.getHeight)(this._$content), 10) } } _renderGeometryImpl() { let isDimensionChange = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : false; if (!isDimensionChange) { this._resetContentHeight() } super._renderGeometryImpl(); this._cacheDimensions(); this._setContentHeight() } _resetContentHeight() { const height = this._getOptionValue("height"); if ("auto" === height) { this.$content().css({ height: "auto", maxHeight: "none" }) } } _renderDrag() { const $dragTarget = this._getDragTarget(); const { dragEnabled: dragEnabled } = this.option(); if (!$dragTarget) { return } const config = { dragEnabled: dragEnabled, handle: $dragTarget.get(0), draggableElement: this._$content.get(0), positionController: this._positionController }; if (this._drag) { this._drag.init(config) } else { this._drag = new _m_popup_drag.default(config) } this.$overlayContent().toggleClass("dx-popup-draggable", dragEnabled) } _renderResize() { this._resizable = this._createComponent(this._$content, _resizable.default, { handles: this.option("resizeEnabled") ? "all" : "none", onResizeEnd: e => { this._resizeEndHandler(e); this._observeContentResize(true) }, onResize: e => { this._setContentHeight(); this._actions.onResize(e) }, onResizeStart: e => { this._observeContentResize(false); this._actions.onResizeStart(e) }, minHeight: 100, minWidth: 100, area: this._positionController.$dragResizeContainer, keepAspectRatio: false }) } _resizeEndHandler(e) { const width = this._resizable.option("width"); const height = this._resizable.option("height"); width && this._setOptionWithoutOptionChange("width", width); height && this._setOptionWithoutOptionChange("height", height); this._cacheDimensions(); this._positionController.resizeHandled(); this._positionController.detectVisualPositionChange(e.event); this._actions.onResizeEnd(e) } _setContentHeight() { const { forceApplyBindings: forceApplyBindings } = this.option(); (forceApplyBindings || _common.noop)(); const overlayContent = this.$overlayContent().get(0); const currentHeightStrategyClass = this._chooseHeightStrategy(overlayContent); this.$content().css(this._getHeightCssStyles(currentHeightStrategyClass, overlayContent)); this._setHeightClasses(this.$overlayContent(), currentHeightStrategyClass) } _heightStrategyChangeOffset(currentHeightStrategyClass, popupVerticalPaddings) { return currentHeightStrategyClass === HEIGHT_STRATEGIES.flex ? -popupVerticalPaddings : 0 } _chooseHeightStrategy(overlayContent) { const isAutoWidth = "auto" === overlayContent.style.width || "" === overlayContent.style.width; let currentHeightStrategyClass = HEIGHT_STRATEGIES.static; if (this._isAutoHeight() && this.option("autoResizeEnabled")) { if (isAutoWidth) { currentHeightStrategyClass = HEIGHT_STRATEGIES.inherit } else { currentHeightStrategyClass = HEIGHT_STRATEGIES.flex } } return currentHeightStrategyClass } _getHeightCssStyles(currentHeightStrategyClass, overlayContent) { let cssStyles = {}; const contentMaxHeight = this._getOptionValue("maxHeight", overlayContent); const contentMinHeight = this._getOptionValue("minHeight", overlayContent); const popupHeightParts = this._splitPopupHeight(); const toolbarsAndVerticalOffsetsHeight = popupHeightParts.header + popupHeightParts.footer + popupHeightParts.contentVerticalOffsets + popupHeightParts.popupVerticalOffsets + this._heightStrategyChangeOffset(currentHeightStrategyClass, popupHeightParts.popupVerticalPaddings); if (currentHeightStrategyClass === HEIGHT_STRATEGIES.static) { if (!this._isAutoHeight() || contentMaxHeight || contentMinHeight) { const overlayHeight = this.option("fullScreen") ? Math.min((0, _position.getBoundingRect)(overlayContent).height, _m_window.default.getWindow().innerHeight) : (0, _position.getBoundingRect)(overlayContent).height; const contentHeight = overlayHeight - toolbarsAndVerticalOffsetsHeight; cssStyles = { height: Math.max(0, contentHeight), minHeight: "auto", maxHeight: "auto" } } } else { const container = (0, _renderer.default)(this._positionController.$visualContainer).get(0); const maxHeightValue = (0, _size.addOffsetToMaxHeight)(contentMaxHeight, -toolbarsAndVerticalOffsetsHeight, container); const minHeightValue = (0, _size.addOffsetToMinHeight)(contentMinHeight, -toolbarsAndVerticalOffsetsHeight, container); cssStyles = { height: "auto", minHeight: minHeightValue, maxHeight: maxHeightValue } } return cssStyles } _setHeightClasses($container, currentClass) { let excessClasses = ""; for (const name in HEIGHT_STRATEGIES) { if (HEIGHT_STRATEGIES[name] !== currentClass) { excessClasses += ` ${HEIGHT_STRATEGIES[name]}` } } $container.removeClass(excessClasses).addClass(currentClass) } _isAutoHeight() { return "auto" === this.$overlayContent().get(0).style.height } _splitPopupHeight() { const topToolbar = this.topToolbar(); const bottomToolbar = this.bottomToolbar(); return { header: (0, _size.getVisibleHeight)(null === topToolbar || void 0 === topToolbar ? void 0 : topToolbar.get(0)), footer: (0, _size.getVisibleHeight)(null === bottomToolbar || void 0 === bottomToolbar ? void 0 : bottomToolbar.get(0)), contentVerticalOffsets: (0, _size.getVerticalOffsets)(this.$overlayContent().get(0), true), popupVerticalOffsets: (0, _size.getVerticalOffsets)(this.$content().get(0), true), popupVerticalPaddings: (0, _size.getVerticalOffsets)(this.$content().get(0), false) } } _isAllWindowCovered() { const { fullScreen: fullScreen } = this.option(); return super._isAllWindowCovered() || fullScreen } _renderDimensions() { if (this.option("fullScreen")) { this.$overlayContent().css({ width: "100%", height: "100%", minWidth: "", maxWidth: "", minHeight: "", maxHeight: "" }) } else { super._renderDimensions() } if (_m_window.default.hasWindow()) { this._renderFullscreenWidthClass() } } _dimensionChanged() { this._renderGeometry({ isDimensionChange: true }) } _clean() { super._clean(); this._observeContentResize(false) } _dispose() { super._dispose(); this._toggleBodyScroll(true) } _renderFullscreenWidthClass() { const isFullScreen = (0, _size.getOuterWidth)(this.$overlayContent()) === (0, _size.getWidth)(window); this.$overlayContent().toggleClass("dx-popup-fullscreen-width", isFullScreen) } _toggleSafariScrolling() { if (!this.option("enableBodyScroll")) { return } super._toggleSafariScrolling() } _toggleBodyScroll(enabled) { if (!this._bodyOverflowManager) { return } const { setOverflow: setOverflow, restoreOverflow: restoreOverflow } = this._bodyOverflowManager; if (enabled) { restoreOverflow() } else { setOverflow() } } refreshPosition() { this._renderPosition() } _optionChanged(args) { var _this$_resizable2; const { value: value, name: name } = args; switch (name) { case "disabled": super._optionChanged(args); this._renderTitle(); this._renderBottom(); break; case "animation": this._updateResizeCallbackSkipCondition(); break; case "enableBodyScroll": if (this.option("visible")) { this._toggleBodyScroll(value) } break; case "showTitle": case "title": case "titleTemplate": this._renderTitle(); this._renderGeometry(); (0, _visibility_change.triggerResizeEvent)(this.$overlayContent()); break; case "bottomTemplate": this._renderBottom(); this._renderGeometry(); (0, _visibility_change.triggerResizeEvent)(this.$overlayContent()); break; case "container": super._optionChanged(args); if (this.option("resizeEnabled")) { var _this$_resizable; null === (_this$_resizable = this._resizable) || void 0 === _this$_resizable || _this$_resizable.option("area", this._positionController.$dragResizeContainer) } break; case "width": case "height": super._optionChanged(args); null === (_this$_resizable2 = this._resizable) || void 0 === _this$_resizable2 || _this$_resizable2.option(name, value); break; case "onTitleRendered": this._createTitleRenderAction(); break; case "toolbarItems": case "useDefaultToolbarButtons": case "useFlatToolbarButtons": { const shouldRenderGeometry = !args.fullName.match(/^toolbarItems((\[\d+\])(\.(options|visible).*)?)?$/); this._renderTitle(); this._renderBottom(); if (shouldRenderGeometry) { this._renderGeometry(); (0, _visibility_change.triggerResizeEvent)(this.$overlayContent()) } break } case "dragEnabled": this._renderDrag(); break; case "dragAndResizeArea": this._positionController.dragAndResizeArea = value; if (this.option("resizeEnabled")) { this._resizable.option("area", this._positionController.$dragResizeContainer) } this._positionController.positionContent(); break; case "dragOutsideBoundary": this._positionController.dragOutsideBoundary = value; if (this.option("resizeEnabled")) { this._resizable.option("area", this._positionController.$dragResizeContainer) } break; case "outsideDragFactor": this._positionController.outsideDragFactor = value; break; case "resizeEnabled": this._renderResize(); this._renderGeometry(); break; case "autoResizeEnabled": this._renderGeometry(); (0, _visibility_change.triggerResizeEvent)(this.$overlayContent()); break; case "fullScreen": this._positionController.fullScreen = value; this._toggleFullScreenClass(value); this._toggleSafariScrolling(); this._renderGeometry(); (0, _visibility_change.triggerResizeEvent)(this.$overlayContent()); break; case "showCloseButton": this._renderTitle(); break; case "preventScrollEvents": super._optionChanged(args); this._toggleContentScrollClass(); break; default: super._optionChanged(args) } } bottomToolbar() { return this._$bottom } topToolbar() { return this._$title } $content() { return this._$popupContent } content() { return (0, _element.getPublicElement)(this.$content()) } $overlayContent() { return this._$content } getFocusableElements() { return this.$wrapper().find("[tabindex]").filter(((index, item) => item.getAttribute("tabindex") >= 0)) } }(0, _component_registrator.default)("dxPopup", Popup); exports.default = Popup }, 26513: /*!*********************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/ui/popup/m_popup_drag.js ***! \*********************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _translator = __webpack_require__( /*! ../../../common/core/animation/translator */ 88603); var _events_engine = _interopRequireDefault(__webpack_require__( /*! ../../../common/core/events/core/events_engine */ 92774)); var _drag = __webpack_require__( /*! ../../../common/core/events/drag */ 59144); var _index = __webpack_require__( /*! ../../../common/core/events/utils/index */ 98834); var _dom_adapter = _interopRequireDefault(__webpack_require__( /*! ../../../core/dom_adapter */ 64960)); var _math = __webpack_require__( /*! ../../../core/utils/math */ 50254); var _size = __webpack_require__( /*! ../../../core/utils/size */ 57653); var _type = __webpack_require__( /*! ../../../core/utils/type */ 11528); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } exports.default = class { constructor(config) { this.init(config) } init(_ref) { let { dragEnabled: dragEnabled, handle: handle, draggableElement: draggableElement, positionController: positionController } = _ref; this._positionController = positionController; this._draggableElement = draggableElement; this._handle = handle; this._dragEnabled = dragEnabled; this.unsubscribe(); if (!dragEnabled) { return } this.subscribe() } moveDown(e) { this._moveTo(5, 0, e) } moveUp(e) { this._moveTo(-5, 0, e) } moveLeft(e) { this._moveTo(0, -5, e) } moveRight(e) { this._moveTo(0, 5, e) } subscribe() { const eventNames = this._getEventNames(); _events_engine.default.on(this._handle, eventNames.startEventName, (e => { this._dragStartHandler(e) })); _events_engine.default.on(this._handle, eventNames.updateEventName, (e => { this._dragUpdateHandler(e) })); _events_engine.default.on(this._handle, eventNames.endEventName, (e => { this._dragEndHandler(e) })) } unsubscribe() { const eventNames = this._getEventNames(); _events_engine.default.off(this._handle, eventNames.startEventName); _events_engine.default.off(this._handle, eventNames.updateEventName); _events_engine.default.off(this._handle, eventNames.endEventName) } _getEventNames() { const startEventName = (0, _index.addNamespace)(_drag.start, "overlayDrag"); const updateEventName = (0, _index.addNamespace)(_drag.move, "overlayDrag"); const endEventName = (0, _index.addNamespace)(_drag.end, "overlayDrag"); return { startEventName: startEventName, updateEventName: updateEventName, endEventName: endEventName } } _dragStartHandler(e) { const allowedOffsets = this._getAllowedOffsets(); this._prevOffset = { x: 0, y: 0 }; e.targetElements = []; e.maxTopOffset = allowedOffsets.top; e.maxBottomOffset = allowedOffsets.bottom; e.maxLeftOffset = allowedOffsets.left; e.maxRightOffset = allowedOffsets.right } _dragUpdateHandler(e) { const targetOffset = { top: e.offset.y - this._prevOffset.y, left: e.offset.x - this._prevOffset.x }; this._moveByOffset(targetOffset); this._prevOffset = e.offset } _dragEndHandler(event) { this._positionController.dragHandled(); this._positionController.detectVisualPositionChange(event) } _moveTo(top, left, e) { if (!this._dragEnabled) { return } e.preventDefault(); e.stopPropagation(); const offset = this._fitOffsetIntoAllowedRange(top, left); this._moveByOffset(offset); this._dragEndHandler(e) } _fitOffsetIntoAllowedRange(top, left) { const allowedOffsets = this._getAllowedOffsets(); return { top: (0, _math.fitIntoRange)(top, -allowedOffsets.top, allowedOffsets.bottom), left: (0, _math.fitIntoRange)(left, -allowedOffsets.left, allowedOffsets.right) } } _getContainerDimensions() { const document = _dom_adapter.default.getDocument(); const container = this._positionController.$dragResizeContainer.get(0); let containerWidth = (0, _size.getOuterWidth)(container); let containerHeight = (0, _size.getOuterHeight)(container); if ((0, _type.isWindow)(container)) { containerHeight = Math.max(document.body.clientHeight, containerHeight); containerWidth = Math.max(document.body.clientWidth, containerWidth) } return { width: containerWidth, height: containerHeight } } _getContainerPosition() { const container = this._positionController.$dragResizeContainer.get(0); return (0, _type.isWindow)(container) ? { top: 0, left: 0 } : (0, _size.getOffset)(container) } _getElementPosition() { return (0, _size.getOffset)(this._draggableElement) } _getInnerDelta() { const containerDimensions = this._getContainerDimensions(); const elementDimensions = this._getElementDimensions(); return { x: containerDimensions.width - elementDimensions.width, y: containerDimensions.height - elementDimensions.height } } _getOuterDelta() { const { width: width, height: height } = this._getElementDimensions(); const { outsideDragFactor: outsideDragFactor } = this._positionController; return { x: width * outsideDragFactor, y: height * outsideDragFactor } } _getFullDelta() { const fullDelta = this._getInnerDelta(); const outerDelta = this._getOuterDelta(); return { x: fullDelta.x + outerDelta.x, y: fullDelta.y + outerDelta.y } } _getElementDimensions() { return { width: this._draggableElement.offsetWidth, height: this._draggableElement.offsetHeight } } _getAllowedOffsets() { const fullDelta = this._getFullDelta(); const isDragAllowed = fullDelta.y >= 0 && fullDelta.x >= 0; if (!isDragAllowed) { return { top: 0, bottom: 0, left: 0, right: 0 } } const elementPosition = this._getElementPosition(); const containerPosition = this._getContainerPosition(); const outerDelta = this._getOuterDelta(); return { top: elementPosition.top - containerPosition.top + outerDelta.y, bottom: -elementPosition.top + containerPosition.top + fullDelta.y, left: elementPosition.left - containerPosition.left + outerDelta.x, right: -elementPosition.left + containerPosition.left + fullDelta.x } } _moveByOffset(offset) { const currentPosition = (0, _translator.locate)(this._draggableElement); const newPosition = { left: currentPosition.left + offset.left, top: currentPosition.top + offset.top }; (0, _translator.move)(this._draggableElement, newPosition) } } }, 27129: /*!*********************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/ui/popup/m_popup_overflow_manager.js ***! \*********************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.createBodyOverflowManager = void 0; var _devices = _interopRequireDefault(__webpack_require__( /*! ../../../core/devices */ 65951)); var _dom_adapter = _interopRequireDefault(__webpack_require__( /*! ../../../core/dom_adapter */ 64960)); var _common = __webpack_require__( /*! ../../../core/utils/common */ 17781); var _type = __webpack_require__( /*! ../../../core/utils/type */ 11528); var _m_window = _interopRequireDefault(__webpack_require__( /*! ../../core/utils/m_window */ 14470)); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } const overflowManagerMock = { setOverflow: _common.noop, restoreOverflow: _common.noop }; exports.createBodyOverflowManager = () => { if (!_m_window.default.hasWindow()) { return overflowManagerMock } const window = _m_window.default.getWindow(); const { documentElement: documentElement } = _dom_adapter.default.getDocument(); const body = _dom_adapter.default.getBody(); const isIosDevice = "ios" === _devices.default.real().platform; const prevSettings = { overflow: null, overflowX: null, overflowY: null, paddingRight: null, position: null, top: null, left: null }; return { setOverflow: isIosDevice ? () => { if ((0, _type.isDefined)(prevSettings.position) || "fixed" === body.style.position) { return } const { scrollY: scrollY, scrollX: scrollX } = window; prevSettings.position = body.style.position; prevSettings.top = body.style.top; prevSettings.left = body.style.left; body.style.setProperty("position", "fixed"); body.style.setProperty("top", -scrollY + "px"); body.style.setProperty("left", -scrollX + "px") } : () => { (() => { const scrollBarWidth = window.innerWidth - documentElement.clientWidth; if (prevSettings.paddingRight || scrollBarWidth <= 0) { return } const paddingRight = window.getComputedStyle(body).getPropertyValue("padding-right"); const computedBodyPaddingRight = parseInt(paddingRight, 10); prevSettings.paddingRight = computedBodyPaddingRight; body.style.setProperty("padding-right", `${computedBodyPaddingRight+scrollBarWidth}px`) })(); if (prevSettings.overflow || "hidden" === body.style.overflow) { return } prevSettings.overflow = body.style.overflow; prevSettings.overflowX = body.style.overflowX; prevSettings.overflowY = body.style.overflowY; body.style.setProperty("overflow", "hidden") }, restoreOverflow: isIosDevice ? () => { if (!(0, _type.isDefined)(prevSettings.position)) { return } const scrollY = -parseInt(body.style.top, 10); const scrollX = -parseInt(body.style.left, 10); ["position", "top", "left"].forEach((property => { if (prevSettings[property]) { body.style.setProperty(property, prevSettings[property]) } else { body.style.removeProperty(property) } })); window.scrollTo(scrollX, scrollY); prevSettings.position = null } : () => { (() => { if (!(0, _type.isDefined)(prevSettings.paddingRight)) { return } if (prevSettings.paddingRight) { body.style.setProperty("padding-right", `${prevSettings.paddingRight}px`) } else { body.style.removeProperty("padding-right") } prevSettings.paddingRight = null })(); ["overflow", "overflowX", "overflowY"].forEach((property => { if (!(0, _type.isDefined)(prevSettings[property])) { return } const propertyInKebabCase = property.replace(/(X)|(Y)/, (symbol => `-${symbol.toLowerCase()}`)); if (prevSettings[property]) { body.style.setProperty(propertyInKebabCase, prevSettings[property]) } else { body.style.removeProperty(propertyInKebabCase) } prevSettings[property] = null })) } } } }, 90263: /*!************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/ui/popup/m_popup_position_controller.js ***! \************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.PopupPositionController = void 0; var _translator = __webpack_require__( /*! ../../../common/core/animation/translator */ 88603); var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../../core/renderer */ 64553)); var _view_port = __webpack_require__( /*! ../../../core/utils/view_port */ 55355); var _m_overlay_position_controller = __webpack_require__( /*! ../../ui/overlay/m_overlay_position_controller */ 4983); var _m_window = _interopRequireDefault(__webpack_require__( /*! ../../core/utils/m_window */ 14470)); const _excluded = ["fullScreen", "forceApplyBindings", "dragOutsideBoundary", "dragAndResizeArea", "outsideDragFactor"]; function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } function _extends() { return _extends = Object.assign ? Object.assign.bind() : function(n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) { ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]) } } return n }, _extends.apply(null, arguments) } const window = _m_window.default.getWindow(); class PopupPositionController extends _m_overlay_position_controller.OverlayPositionController { constructor(_ref) { let { fullScreen: fullScreen, forceApplyBindings: forceApplyBindings, dragOutsideBoundary: dragOutsideBoundary, dragAndResizeArea: dragAndResizeArea, outsideDragFactor: outsideDragFactor } = _ref, args = function(r, e) { if (null == r) { return {} } var t = {}; for (var n in r) { if ({}.hasOwnProperty.call(r, n)) { if (e.includes(n)) { continue } t[n] = r[n] } } return t }(_ref, _excluded); super(args); this._props = _extends({}, this._props, { fullScreen: fullScreen, forceApplyBindings: forceApplyBindings, dragOutsideBoundary: dragOutsideBoundary, dragAndResizeArea: dragAndResizeArea, outsideDragFactor: outsideDragFactor }); this._$dragResizeContainer = void 0; this._updateDragResizeContainer() } set fullScreen(fullScreen) { this._props.fullScreen = fullScreen; if (fullScreen) { this._fullScreenEnabled() } else { this._fullScreenDisabled() } } get $dragResizeContainer() { return this._$dragResizeContainer } get outsideDragFactor() { if (this._props.dragOutsideBoundary) { return 1 } return this._props.outsideDragFactor } set dragAndResizeArea(dragAndResizeArea) { this._props.dragAndResizeArea = dragAndResizeArea; this._updateDragResizeContainer() } set dragOutsideBoundary(dragOutsideBoundary) { this._props.dragOutsideBoundary = dragOutsideBoundary; this._updateDragResizeContainer() } set outsideDragFactor(outsideDragFactor) { this._props.outsideDragFactor = outsideDragFactor } updateContainer(containerProp) { super.updateContainer(containerProp); this._updateDragResizeContainer() } dragHandled() { this.restorePositionOnNextRender(false) } resizeHandled() { this.restorePositionOnNextRender(false) } positionContent() { if (this._props.fullScreen) { (0, _translator.move)(this._$content, { top: 0, left: 0 }); this.detectVisualPositionChange() } else { var _this$_props$forceApp, _this$_props; null === (_this$_props$forceApp = (_this$_props = this._props).forceApplyBindings) || void 0 === _this$_props$forceApp || _this$_props$forceApp.call(_this$_props); super.positionContent() } } _normalizePosition(positionProp) { const normalizedPosition = super._normalizePosition(positionProp); if (this._props.fullScreen) { normalizedPosition.of = "window" } return normalizedPosition } _updateDragResizeContainer() { this._$dragResizeContainer = this._getDragResizeContainer() } _getDragResizeContainer() { if (this._props.dragOutsideBoundary) { return (0, _renderer.default)(window) } if (this._props.dragAndResizeArea) { return (0, _renderer.default)(this._props.dragAndResizeArea) } const isContainerDefined = (0, _view_port.originalViewPort)().get(0) || this._props.container; return isContainerDefined ? this._$markupContainer : (0, _renderer.default)(window) } _getVisualContainer() { if (this._props.fullScreen) { return (0, _renderer.default)(window) } return super._getVisualContainer() } _fullScreenEnabled() { this.restorePositionOnNextRender(false) } _fullScreenDisabled() { this.restorePositionOnNextRender(true) } } exports.PopupPositionController = PopupPositionController }, 49167: /*!*****************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/ui/radio_group/m_radio_button.js ***! \*****************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _click = __webpack_require__( /*! ../../../common/core/events/click */ 64044); var _events_engine = _interopRequireDefault(__webpack_require__( /*! ../../../common/core/events/core/events_engine */ 92774)); var _utils = __webpack_require__( /*! ../../../common/core/events/utils */ 98834); var _component_registrator = _interopRequireDefault(__webpack_require__( /*! ../../../core/component_registrator */ 92848)); var _devices = _interopRequireDefault(__webpack_require__( /*! ../../../core/devices */ 65951)); var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../../core/renderer */ 64553)); var _editor = _interopRequireDefault(__webpack_require__( /*! ../../ui/editor/editor */ 24768)); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } function _extends() { return _extends = Object.assign ? Object.assign.bind() : function(n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) { ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]) } } return n }, _extends.apply(null, arguments) } class RadioButton extends _editor.default { _supportedKeys() { return _extends({}, super._supportedKeys(), { space: function(e) { e.preventDefault(); this._clickAction({ event: e }) } }) } _getDefaultOptions() { return _extends({}, super._getDefaultOptions(), { hoverStateEnabled: true, activeStateEnabled: true, value: false }) } _canValueBeChangedByClick() { return true } _defaultOptionsRules() { return super._defaultOptionsRules().concat([{ device: () => "desktop" === _devices.default.real().deviceType && !_devices.default.isSimulator(), options: { focusStateEnabled: true } }]) } _init() { super._init(); this.$element().addClass("dx-radiobutton") } _initMarkup() { super._initMarkup(); this._renderIcon(); this._renderCheckedState(this.option("value")); this._renderClick(); this.setAria("role", "radio") } _renderIcon() { this._$icon = (0, _renderer.default)("<div>").addClass("dx-radiobutton-icon"); (0, _renderer.default)("<div>").addClass("dx-radiobutton-icon-dot").appendTo(this._$icon); this.$element().append(this._$icon) } _renderCheckedState(checked) { this.$element().toggleClass("dx-radiobutton-checked", checked).find(".dx-radiobutton-icon").toggleClass("dx-radiobutton-icon-checked", checked); this.setAria("checked", checked) } _renderClick() { const eventName = (0, _utils.addNamespace)(_click.name, this.NAME); this._clickAction = this._createAction((args => { this._clickHandler(args.event) })); _events_engine.default.off(this.$element(), eventName); _events_engine.default.on(this.$element(), eventName, (e => { var _this$_clickAction; null === (_this$_clickAction = this._clickAction) || void 0 === _this$_clickAction || _this$_clickAction.call(this, { event: e }) })) } _clickHandler(e) { this._saveValueChangeEvent(e); this.option("value", true); this._saveValueChangeEvent(void 0) } _optionChanged(args) { const { name: name, value: value } = args; if ("value" === name) { this._renderCheckedState(value); super._optionChanged(args) } else { super._optionChanged(args) } } }(0, _component_registrator.default)("dxRadioButton", RadioButton); exports.default = RadioButton }, 87: /*!*********************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/ui/radio_group/m_radio_collection.js ***! \*********************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../../core/renderer */ 64553)); var _common = __webpack_require__( /*! ../../../core/utils/common */ 17781); var _extend = __webpack_require__( /*! ../../../core/utils/extend */ 52576); var _ui = _interopRequireDefault(__webpack_require__( /*! ../../../ui/editor/ui.data_expression */ 7632)); var _m_collection_widget = _interopRequireDefault(__webpack_require__( /*! ../../ui/collection/m_collection_widget.edit */ 3391)); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } class RadioCollection extends _m_collection_widget.default { _focusTarget() { return (0, _renderer.default)(this.element()).parent() } _nullValueSelectionSupported() { return true } _getDefaultOptions() { const defaultOptions = super._getDefaultOptions(); return (0, _extend.extend)(defaultOptions, _ui.default._dataExpressionDefaultOptions(), { _itemAttributes: { role: "radio" } }) } _initMarkup() { super._initMarkup(); (0, _common.deferRender)((() => { this._itemElements().addClass("dx-radiobutton") })) } _keyboardEventBindingTarget() { return this._focusTarget() } _postprocessRenderItem(args) { const { itemData: { html: html }, itemElement: itemElement } = args; if (!html) { const $radio = (0, _renderer.default)("<div>").addClass("dx-radiobutton-icon"); (0, _renderer.default)("<div>").addClass("dx-radiobutton-icon-dot").appendTo($radio); const $radioContainer = (0, _renderer.default)("<div>").append($radio).addClass("dx-radio-value-container"); (0, _renderer.default)(itemElement).prepend($radioContainer) } super._postprocessRenderItem(args) } _processSelectableItem($itemElement, isSelected) { super._processSelectableItem($itemElement, isSelected); $itemElement.toggleClass("dx-radiobutton-checked", isSelected).find(".dx-radiobutton-icon").first().toggleClass("dx-radiobutton-icon-checked", isSelected); this.setAria("checked", isSelected, $itemElement) } _refreshContent() { this._prepareContent(); this._renderContent() } _supportedKeys() { const parent = super._supportedKeys(); return (0, _extend.extend)({}, parent, { enter(e) { e.preventDefault(); return parent.enter.apply(this, arguments) }, space(e) { e.preventDefault(); return parent.space.apply(this, arguments) } }) } _itemElements() { return this._itemContainer().children(this._itemSelector()) } _setAriaSelectionAttribute() {} } exports.default = RadioCollection }, 72076: /*!****************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/ui/radio_group/m_radio_group.js ***! \****************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _component_registrator = _interopRequireDefault(__webpack_require__( /*! ../../../core/component_registrator */ 92848)); var _devices = _interopRequireDefault(__webpack_require__( /*! ../../../core/devices */ 65951)); var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../../core/renderer */ 64553)); var _deferred = __webpack_require__( /*! ../../../core/utils/deferred */ 87739); var _extend = __webpack_require__( /*! ../../../core/utils/extend */ 52576); var _type = __webpack_require__( /*! ../../../core/utils/type */ 11528); var _ui = _interopRequireDefault(__webpack_require__( /*! ../../../ui/editor/ui.data_expression */ 7632)); var _editor = _interopRequireDefault(__webpack_require__( /*! ../../ui/editor/editor */ 24768)); var _m_radio_collection = _interopRequireDefault(__webpack_require__( /*! ./m_radio_collection */ 87)); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } class RadioGroup extends _editor.default { _dataSourceOptions() { return { paginate: false } } _defaultOptionsRules() { const defaultOptionsRules = super._defaultOptionsRules(); return defaultOptionsRules.concat([{ device: { tablet: true }, options: { layout: "horizontal" } }, { device: () => "desktop" === _devices.default.real().deviceType && !_devices.default.isSimulator(), options: { focusStateEnabled: true } }]) } _fireContentReadyAction(force) { force && super._fireContentReadyAction() } _focusTarget() { return this.$element() } _getAriaTarget() { return this.$element() } _getDefaultOptions() { const defaultOptions = super._getDefaultOptions(); return (0, _extend.extend)(defaultOptions, (0, _extend.extend)(_ui.default._dataExpressionDefaultOptions(), { hoverStateEnabled: true, activeStateEnabled: true, layout: "vertical" })) } _getItemValue(item) { return this._valueGetter ? this._valueGetter(item) : item.text } _getSubmitElement() { return this._$submitElement } _init() { super._init(); this._activeStateUnit = ".dx-radiobutton"; this._feedbackHideTimeout = 100; this._initDataExpressions() } _initMarkup() { (0, _renderer.default)(this.element()).addClass("dx-radiogroup"); this._renderSubmitElement(); this.setAria("role", "radiogroup"); this._renderRadios(); this._renderLayout(); super._initMarkup() } _itemClickHandler(_ref) { let { itemElement: itemElement, event: event, itemData: itemData } = _ref; if (this.itemElements().is(itemElement)) { const newValue = this._getItemValue(itemData); if (newValue !== this.option("value")) { this._saveValueChangeEvent(event); this.option("value", newValue) } } } _getSelectedItemKeys() { let value = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : this.option("value"); const isNullSelectable = "this" !== this.option("valueExpr"); const shouldSelectValue = isNullSelectable && null === value || (0, _type.isDefined)(value); return shouldSelectValue ? [value] : [] } _setSelection(currentValue) { const value = this._unwrappedValue(currentValue); this._setCollectionWidgetOption("selectedItemKeys", this._getSelectedItemKeys(value)) } _renderValidationState() { var _this$_validationMess; super._renderValidationState(); null === (_this$_validationMess = this._validationMessage) || void 0 === _this$_validationMess || _this$_validationMess.$content().attr("role", "alert") } _optionChanged(args) { const { name: name, value: value } = args; this._dataExpressionOptionChanged(args); switch (name) { case "dataSource": this._invalidate(); break; case "focusStateEnabled": case "accessKey": case "tabIndex": this._setCollectionWidgetOption(name, value); break; case "disabled": super._optionChanged(args); this._setCollectionWidgetOption(name, value); break; case "valueExpr": this._setCollectionWidgetOption("keyExpr", this._getCollectionKeyExpr()); break; case "value": this._setSelection(value); this._setSubmitValue(value); super._optionChanged(args); break; case "items": this._setSelection(this.option("value")); break; case "itemTemplate": case "displayExpr": break; case "layout": this._renderLayout(); this._updateItemsSize(); break; default: super._optionChanged(args) } } _render() { super._render(); this._updateItemsSize() } _renderLayout() { const { layout: layout } = this.option(); const $element = (0, _renderer.default)(this.element()); $element.toggleClass("dx-radiogroup-vertical", "vertical" === layout); $element.toggleClass("dx-radiogroup-horizontal", "horizontal" === layout) } _renderRadios() { this._areRadiosCreated = (0, _deferred.Deferred)(); const $radios = (0, _renderer.default)("<div>").appendTo(this.$element()); const { displayExpr: displayExpr, accessKey: accessKey, focusStateEnabled: focusStateEnabled, itemTemplate: itemTemplate, tabIndex: tabIndex } = this.option(); this._createComponent($radios, _m_radio_collection.default, { onInitialized: _ref2 => { let { component: component } = _ref2; this._radios = component }, onContentReady: e => { this._fireContentReadyAction(true) }, onItemClick: this._itemClickHandler.bind(this), displayExpr: displayExpr, accessKey: accessKey, dataSource: this._dataSource, focusStateEnabled: focusStateEnabled, itemTemplate: itemTemplate, keyExpr: this._getCollectionKeyExpr(), noDataText: "", scrollingEnabled: false, selectByClick: false, selectionMode: "single", selectedItemKeys: this._getSelectedItemKeys(), tabIndex: tabIndex }); this._areRadiosCreated.resolve() } _renderSubmitElement() { this._$submitElement = (0, _renderer.default)("<input>").attr("type", "hidden").appendTo(this.$element()); this._setSubmitValue() } _setOptionsByReference() { super._setOptionsByReference(); (0, _extend.extend)(this._optionsByReference, { value: true }) } _setSubmitValue(value) { value = value ?? this.option("value"); const submitValue = "this" === this.option("valueExpr") ? this._displayGetter(value) : value; this._$submitElement.val(submitValue) } _setCollectionWidgetOption(name, value) { this._areRadiosCreated.done(this._setWidgetOption.bind(this, "_radios", arguments)) } _updateItemsSize() { const { layout: layout } = this.option(); if ("horizontal" === layout) { var _this$itemElements; null === (_this$itemElements = this.itemElements()) || void 0 === _this$itemElements || _this$itemElements.css("height", "auto") } else { var _this$itemElements2; const itemsCount = this.option("items").length; null === (_this$itemElements2 = this.itemElements()) || void 0 === _this$itemElements2 || _this$itemElements2.css("height", 100 / itemsCount + "%") } } focus() { var _this$_radios; null === (_this$_radios = this._radios) || void 0 === _this$_radios || _this$_radios.focus() } itemElements() { var _this$_radios2; return null === (_this$_radios2 = this._radios) || void 0 === _this$_radios2 ? void 0 : _this$_radios2._itemElements() } } RadioGroup.include(_ui.default); (0, _component_registrator.default)("dxRadioGroup", RadioGroup); exports.default = RadioGroup }, 27560: /*!************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/ui/resizable/m_resizable.js ***! \************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _translator = __webpack_require__( /*! ../../../common/core/animation/translator */ 88603); var _events_engine = _interopRequireDefault(__webpack_require__( /*! ../../../common/core/events/core/events_engine */ 92774)); var _drag = __webpack_require__( /*! ../../../common/core/events/drag */ 59144); var _index = __webpack_require__( /*! ../../../common/core/events/utils/index */ 98834); var _visibility_change = __webpack_require__( /*! ../../../common/core/events/visibility_change */ 18029); var _component_registrator = _interopRequireDefault(__webpack_require__( /*! ../../../core/component_registrator */ 92848)); var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../../core/renderer */ 64553)); var _common = __webpack_require__( /*! ../../../core/utils/common */ 17781); var _extend = __webpack_require__( /*! ../../../core/utils/extend */ 52576); var _iterator = __webpack_require__( /*! ../../../core/utils/iterator */ 21274); var _math = __webpack_require__( /*! ../../../core/utils/math */ 50254); var _size = __webpack_require__( /*! ../../../core/utils/size */ 57653); var _type = __webpack_require__( /*! ../../../core/utils/type */ 11528); var _window = __webpack_require__( /*! ../../../core/utils/window */ 3104); var _dom_component = _interopRequireDefault(__webpack_require__( /*! ../../core/widget/dom_component */ 22331)); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } function _extends() { return _extends = Object.assign ? Object.assign.bind() : function(n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) { ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]) } } return n }, _extends.apply(null, arguments) } const DRAGSTART_START_EVENT_NAME = (0, _index.addNamespace)(_drag.start, "dxResizable"); const DRAGSTART_EVENT_NAME = (0, _index.addNamespace)(_drag.move, "dxResizable"); const DRAGSTART_END_EVENT_NAME = (0, _index.addNamespace)(_drag.end, "dxResizable"); const SIDE_BORDER_WIDTH_STYLES = { left: "borderLeftWidth", top: "borderTopWidth", right: "borderRightWidth", bottom: "borderBottomWidth" }; class Resizable extends _dom_component.default { _getDefaultOptions() { return _extends({}, super._getDefaultOptions(), { handles: "all", step: "1", stepPrecision: "simple", minWidth: 30, maxWidth: 1 / 0, minHeight: 30, maxHeight: 1 / 0, onResizeStart: null, onResize: null, onResizeEnd: null, roundStepValue: true, keepAspectRatio: true }) } _init() { super._init(); this.$element().addClass("dx-resizable") } _initMarkup() { super._initMarkup(); this._renderHandles() } _render() { super._render(); this._renderActions() } _renderActions() { this._resizeStartAction = this._createActionByOption("onResizeStart"); this._resizeEndAction = this._createActionByOption("onResizeEnd"); this._resizeAction = this._createActionByOption("onResize") } _renderHandles() { this._handles = []; const { handles: handles } = this.option(); if ("none" === handles || !handles) { return } const directions = "all" === handles ? ["top", "bottom", "left", "right"] : handles.split(" "); const activeHandlesMap = {}; (0, _iterator.each)(directions, ((index, handleName) => { activeHandlesMap[handleName] = true; this._renderHandle(handleName) })); activeHandlesMap.bottom && activeHandlesMap.right && this._renderHandle("corner-bottom-right"); activeHandlesMap.bottom && activeHandlesMap.left && this._renderHandle("corner-bottom-left"); activeHandlesMap.top && activeHandlesMap.right && this._renderHandle("corner-top-right"); activeHandlesMap.top && activeHandlesMap.left && this._renderHandle("corner-top-left"); this._attachEventHandlers() } _renderHandle(handleName) { const $handle = (0, _renderer.default)("<div>").addClass("dx-resizable-handle").addClass(`dx-resizable-handle-${handleName}`).appendTo(this.$element()); this._handles.push($handle) } _attachEventHandlers() { if (this.option("disabled")) { return } const handlers = {}; handlers[DRAGSTART_START_EVENT_NAME] = this._dragStartHandler.bind(this); handlers[DRAGSTART_EVENT_NAME] = this._dragHandler.bind(this); handlers[DRAGSTART_END_EVENT_NAME] = this._dragEndHandler.bind(this); this._handles.forEach((handleElement => { _events_engine.default.on(handleElement, handlers, { direction: "both", immediate: true }) })) } _detachEventHandlers() { this._handles.forEach((handleElement => { _events_engine.default.off(handleElement) })) } _toggleEventHandlers(shouldAttachEvents) { shouldAttachEvents ? this._attachEventHandlers() : this._detachEventHandlers() } _getElementSize() { const $element = this.$element(); return "border-box" === $element.css("boxSizing") ? { width: (0, _size.getOuterWidth)($element), height: (0, _size.getOuterHeight)($element) } : { width: (0, _size.getWidth)($element), height: (0, _size.getHeight)($element) } } _dragStartHandler(e) { var _this$_resizeStartAct; const $element = this.$element(); if ($element.is(".dx-state-disabled, .dx-state-disabled *")) { e.cancel = true; return } this._toggleResizingClass(true); this._movingSides = this._getMovingSides(e); this._elementLocation = (0, _translator.locate)($element); this._elementSize = this._getElementSize(); this._renderDragOffsets(e); null === (_this$_resizeStartAct = this._resizeStartAction) || void 0 === _this$_resizeStartAct || _this$_resizeStartAct.call(this, { event: e, width: this._elementSize.width, height: this._elementSize.height, handles: this._movingSides }); e.targetElements = null } _toggleResizingClass(value) { this.$element().toggleClass("dx-resizable-resizing", value) } _renderDragOffsets(e) { const area = this._getArea(); if (!area) { return } const $handle = (0, _renderer.default)(e.target).closest(".dx-resizable-handle"); const handleWidth = (0, _size.getOuterWidth)($handle); const handleHeight = (0, _size.getOuterHeight)($handle); const handleOffset = $handle.offset(); const areaOffset = area.offset; const scrollOffset = this._getAreaScrollOffset(); e.maxLeftOffset = this._leftMaxOffset = handleOffset.left - areaOffset.left - scrollOffset.scrollX; e.maxRightOffset = this._rightMaxOffset = areaOffset.left + area.width - handleOffset.left - handleWidth + scrollOffset.scrollX; e.maxTopOffset = this._topMaxOffset = handleOffset.top - areaOffset.top - scrollOffset.scrollY; e.maxBottomOffset = this._bottomMaxOffset = areaOffset.top + area.height - handleOffset.top - handleHeight + scrollOffset.scrollY } _getBorderWidth($element, direction) { if ((0, _type.isWindow)($element.get(0))) { return 0 } const borderWidth = $element.css(SIDE_BORDER_WIDTH_STYLES[direction]); return parseInt(borderWidth) || 0 } _proportionate(direction, value) { const size = this._elementSize; const factor = "x" === direction ? size.width / size.height : size.height / size.width; return value * factor } _getProportionalDelta(_ref) { let { x: x, y: y } = _ref; const proportionalY = this._proportionate("y", x); if (proportionalY >= y) { return { x: x, y: proportionalY } } const proportionalX = this._proportionate("x", y); if (proportionalX >= x) { return { x: proportionalX, y: y } } return { x: 0, y: 0 } } _getDirectionName(axis) { const sides = this._movingSides; if ("x" === axis) { return sides.left ? "left" : "right" } return sides.top ? "top" : "bottom" } _fitIntoArea(axis, value) { const directionName = this._getDirectionName(axis); return Math.min(value, this[`_${directionName}MaxOffset`] ?? 1 / 0) } _fitDeltaProportionally(delta) { let fittedDelta = _extends({}, delta); const size = this._elementSize; const { minWidth: minWidth, minHeight: minHeight, maxWidth: maxWidth, maxHeight: maxHeight } = this.option(); const getWidth = () => size.width + fittedDelta.x; const getHeight = () => size.height + fittedDelta.y; const isInArea = axis => fittedDelta[axis] === this._fitIntoArea(axis, fittedDelta[axis]); const isFittedX = () => (0, _math.inRange)(getWidth(), minWidth, maxWidth) && isInArea("x"); const isFittedY = () => (0, _math.inRange)(getHeight(), minHeight, maxHeight) && isInArea("y"); if (!isFittedX()) { const x = this._fitIntoArea("x", (0, _math.fitIntoRange)(getWidth(), minWidth, maxWidth) - size.width); fittedDelta = { x: x, y: this._proportionate("y", x) } } if (!isFittedY()) { const y = this._fitIntoArea("y", (0, _math.fitIntoRange)(getHeight(), minHeight, maxHeight) - size.height); fittedDelta = { x: this._proportionate("x", y), y: y } } return isFittedX() && isFittedY() ? fittedDelta : { x: 0, y: 0 } } _fitDelta(_ref2) { let { x: x, y: y } = _ref2; const size = this._elementSize; const { minWidth: minWidth, minHeight: minHeight, maxWidth: maxWidth, maxHeight: maxHeight } = this.option(); return { x: (0, _math.fitIntoRange)(size.width + x, minWidth, maxWidth) - size.width, y: (0, _math.fitIntoRange)(size.height + y, minHeight, maxHeight) - size.height } } _getDeltaByOffset(offset) { const sides = this._movingSides; const shouldKeepAspectRatio = this._isCornerHandler(sides) && this.option("keepAspectRatio"); let delta = { x: offset.x * (sides.left ? -1 : 1), y: offset.y * (sides.top ? -1 : 1) }; if (shouldKeepAspectRatio) { const proportionalDelta = this._getProportionalDelta(delta); const fittedProportionalDelta = this._fitDeltaProportionally(proportionalDelta); delta = fittedProportionalDelta } else { const fittedDelta = this._fitDelta(delta); const roundedFittedDelta = this._roundByStep(fittedDelta); delta = roundedFittedDelta } return delta } _updatePosition(delta, _ref3) { let { width: width, height: height } = _ref3; const location = this._elementLocation; const sides = this._movingSides; const $element = this.$element(); const elementRect = this._getElementSize(); const offsetTop = delta.y * (sides.top ? -1 : 1) - ((elementRect.height || height) - height); const offsetLeft = delta.x * (sides.left ? -1 : 1) - ((elementRect.width || width) - width); (0, _translator.move)($element, { top: location.top + (sides.top ? offsetTop : 0), left: location.left + (sides.left ? offsetLeft : 0) }) } _dragHandler(e) { const offset = this._getOffset(e); const delta = this._getDeltaByOffset(offset); const dimensions = this._updateDimensions(delta); this._updatePosition(delta, dimensions); this._triggerResizeAction(e, dimensions) } _updateDimensions(delta) { const isAbsoluteSize = size => "px" === size.substring(size.length - 2); const { stepPrecision: stepPrecision } = this.option(); const isStepPrecisionStrict = "strict" === stepPrecision; const size = this._elementSize; const width = size.width + delta.x; const height = size.height + delta.y; const elementStyle = this.$element().get(0).style; const shouldRenderWidth = delta.x || isStepPrecisionStrict || isAbsoluteSize(elementStyle.width); const shouldRenderHeight = delta.y || isStepPrecisionStrict || isAbsoluteSize(elementStyle.height); if (shouldRenderWidth) { this.option({ width: width }) } if (shouldRenderHeight) { this.option({ height: height }) } return { width: shouldRenderWidth ? width : size.width, height: shouldRenderHeight ? height : size.height } } _triggerResizeAction(e, _ref4) { var _this$_resizeAction; let { width: width, height: height } = _ref4; null === (_this$_resizeAction = this._resizeAction) || void 0 === _this$_resizeAction || _this$_resizeAction.call(this, { event: e, width: this.option("width") || width, height: this.option("height") || height, handles: this._movingSides }); (0, _visibility_change.triggerResizeEvent)(this.$element()) } _isCornerHandler(sides) { return 0 === Object.values(sides).reduce(((xor, value) => xor ^ value), 0) } _getOffset(e) { const { offset: offset } = e; const sides = this._movingSides; if (!sides.left && !sides.right) { offset.x = 0 } if (!sides.top && !sides.bottom) { offset.y = 0 } return offset } _roundByStep(delta) { const { stepPrecision: stepPrecision } = this.option(); return "strict" === stepPrecision ? this._roundStrict(delta) : this._roundNotStrict(delta) } _getSteps() { return (0, _common.pairToObject)(this.option("step"), !this.option("roundStepValue")) } _roundNotStrict(delta) { const steps = this._getSteps(); return { x: delta.x - delta.x % steps.h, y: delta.y - delta.y % steps.v } } _roundStrict(delta) { const sides = this._movingSides; const offset = { x: delta.x * (sides.left ? -1 : 1), y: delta.y * (sides.top ? -1 : 1) }; const steps = this._getSteps(); const location = this._elementLocation; const size = this._elementSize; const xPos = sides.left ? location.left : location.left + size.width; const yPos = sides.top ? location.top : location.top + size.height; const newXShift = (xPos + offset.x) % steps.h; const newYShift = (yPos + offset.y) % steps.v; const sign = Math.sign || (x => { x = +x; if (0 === x || isNaN(x)) { return x } return x > 0 ? 1 : -1 }); const separatorOffset = (steps, offset) => (1 + .2 * sign(offset)) % 1 * steps; const isSmallOffset = (offset, steps) => Math.abs(offset) < .2 * steps; let newOffsetX = offset.x - newXShift; let newOffsetY = offset.y - newYShift; if (newXShift > separatorOffset(steps.h, offset.x)) { newOffsetX += steps.h } if (newYShift > separatorOffset(steps.v, offset.y)) { newOffsetY += steps.v } const roundedOffset_x = (sides.left || sides.right) && !isSmallOffset(offset.x, steps.h) ? newOffsetX : 0, roundedOffset_y = (sides.top || sides.bottom) && !isSmallOffset(offset.y, steps.v) ? newOffsetY : 0; return { x: roundedOffset_x * (sides.left ? -1 : 1), y: roundedOffset_y * (sides.top ? -1 : 1) } } _getMovingSides(e) { const $target = (0, _renderer.default)(e.target); const hasCornerTopLeftClass = $target.hasClass("dx-resizable-handle-corner-top-left"); const hasCornerTopRightClass = $target.hasClass("dx-resizable-handle-corner-top-right"); const hasCornerBottomLeftClass = $target.hasClass("dx-resizable-handle-corner-bottom-left"); const hasCornerBottomRightClass = $target.hasClass("dx-resizable-handle-corner-bottom-right"); return { top: $target.hasClass("dx-resizable-handle-top") || hasCornerTopLeftClass || hasCornerTopRightClass, left: $target.hasClass("dx-resizable-handle-left") || hasCornerTopLeftClass || hasCornerBottomLeftClass, bottom: $target.hasClass("dx-resizable-handle-bottom") || hasCornerBottomLeftClass || hasCornerBottomRightClass, right: $target.hasClass("dx-resizable-handle-right") || hasCornerTopRightClass || hasCornerBottomRightClass } } _getArea() { let area = this.option("area"); if ((0, _type.isFunction)(area)) { area = area.call(this) } if ((0, _type.isPlainObject)(area)) { return this._getAreaFromObject(area) } return this._getAreaFromElement(area) } _getAreaScrollOffset() { const area = this.option("area"); const isElement = !(0, _type.isFunction)(area) && !(0, _type.isPlainObject)(area); const scrollOffset = { scrollY: 0, scrollX: 0 }; if (isElement) { const areaElement = (0, _renderer.default)(area)[0]; if ((0, _type.isWindow)(areaElement)) { scrollOffset.scrollX = areaElement.pageXOffset; scrollOffset.scrollY = areaElement.pageYOffset } } return scrollOffset } _getAreaFromObject(area) { const result = { width: area.right - area.left, height: area.bottom - area.top, offset: { left: area.left, top: area.top } }; this._correctAreaGeometry(result); return result } _getAreaFromElement(area) { const $area = (0, _renderer.default)(area); let result; if ($area.length) { result = { width: (0, _size.getInnerWidth)($area), height: (0, _size.getInnerHeight)($area), offset: (0, _extend.extend)({ top: 0, left: 0 }, (0, _type.isWindow)($area[0]) ? {} : $area.offset()) }; this._correctAreaGeometry(result, $area) } return result } _correctAreaGeometry(result, $area) { const areaBorderLeft = $area ? this._getBorderWidth($area, "left") : 0; const areaBorderTop = $area ? this._getBorderWidth($area, "top") : 0; result.offset.left += areaBorderLeft + this._getBorderWidth(this.$element(), "left"); result.offset.top += areaBorderTop + this._getBorderWidth(this.$element(), "top"); result.width -= (0, _size.getOuterWidth)(this.$element()) - (0, _size.getInnerWidth)(this.$element()); result.height -= (0, _size.getOuterHeight)(this.$element()) - (0, _size.getInnerHeight)(this.$element()) } _dragEndHandler(e) { var _this$_resizeEndActio; const $element = this.$element(); null === (_this$_resizeEndActio = this._resizeEndAction) || void 0 === _this$_resizeEndActio || _this$_resizeEndActio.call(this, { event: e, width: (0, _size.getOuterWidth)($element), height: (0, _size.getOuterHeight)($element), handles: this._movingSides }); this._toggleResizingClass(false) } _renderWidth(width) { this.option("width", (0, _math.fitIntoRange)(width, this.option("minWidth"), this.option("maxWidth"))) } _renderHeight(height) { this.option("height", (0, _math.fitIntoRange)(height, this.option("minHeight"), this.option("maxHeight"))) } _optionChanged(args) { switch (args.name) { case "disabled": this._toggleEventHandlers(!args.value); super._optionChanged(args); break; case "handles": this._invalidate(); break; case "minWidth": case "maxWidth": (0, _window.hasWindow)() && this._renderWidth((0, _size.getOuterWidth)(this.$element())); break; case "minHeight": case "maxHeight": (0, _window.hasWindow)() && this._renderHeight((0, _size.getOuterHeight)(this.$element())); break; case "onResize": case "onResizeStart": case "onResizeEnd": this._renderActions(); break; case "area": case "stepPrecision": case "step": case "roundStepValue": case "keepAspectRatio": break; default: super._optionChanged(args) } } _clean() { this.$element().find(".dx-resizable-handle").remove() } _useTemplates() { return false } }(0, _component_registrator.default)("dxResizable", Resizable); exports.default = Resizable }, 25056: /*!******************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/ui/resizable/utils.js ***! \******************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.getAreaFromObject = exports.getAreaFromElement = exports.filterOffsets = exports.borderWidthStyles = void 0; exports.getDragOffsets = function(area, handleEl, areaProp) { const hWidth = (0, _size.getOuterWidth)(handleEl); const hHeight = (0, _size.getOuterHeight)(handleEl); const hOffset = (0, _size.getOffset)(handleEl); const areaOffset = area.offset; const isAreaWindow = (0, _type.isWindow)(areaProp); const scrollOffset = { scrollX: isAreaWindow ? areaProp.pageXOffset : 0, scrollY: isAreaWindow ? areaProp.pageYOffset : 0 }; return { maxLeftOffset: hOffset.left - areaOffset.left - scrollOffset.scrollX, maxRightOffset: areaOffset.left + area.width - hOffset.left - hWidth + scrollOffset.scrollX, maxTopOffset: hOffset.top - areaOffset.top - scrollOffset.scrollY, maxBottomOffset: areaOffset.top + area.height - hOffset.top - hHeight + scrollOffset.scrollY } }; exports.getMovingSides = void 0; var _extend = __webpack_require__( /*! ../../../core/utils/extend */ 52576); var _size = __webpack_require__( /*! ../../../core/utils/size */ 57653); var _type = __webpack_require__( /*! ../../../core/utils/type */ 11528); const borderWidthStyles = exports.borderWidthStyles = { left: "borderLeftWidth", top: "borderTopWidth", right: "borderRightWidth", bottom: "borderBottomWidth" }; function getBorderWidth(el, direction) { if (!(0, _type.isWindow)(el)) { const borderWidth = el.style[borderWidthStyles[direction]]; return parseInt(borderWidth, 10) || 0 } return 0 } const correctGeometry = function(area, mainEl) { let el = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : void 0; const { width: width, height: height, offset: offset } = area; const { left: left, top: top } = offset; const areaBorderLeft = el ? getBorderWidth(el, "left") : 0; const areaBorderTop = el ? getBorderWidth(el, "top") : 0; return { width: width - (0, _size.getOuterWidth)(mainEl) - (0, _size.getInnerWidth)(mainEl), height: height - (0, _size.getOuterHeight)(mainEl) - (0, _size.getInnerHeight)(mainEl), offset: { left: left + areaBorderLeft + getBorderWidth(mainEl, "left"), top: top + areaBorderTop + getBorderWidth(mainEl, "top") } } }; exports.getAreaFromElement = (el, mainEl) => correctGeometry({ width: (0, _size.getInnerWidth)(el), height: (0, _size.getInnerHeight)(el), offset: (0, _extend.extend)({ top: 0, left: 0 }, (0, _type.isWindow)(el) ? {} : (0, _size.getOffset)(el)) }, mainEl, el); exports.getAreaFromObject = (_ref, mainEl) => { let { left: left, top: top, right: right, bottom: bottom } = _ref; return correctGeometry({ width: right - left, height: bottom - top, offset: { left: left, top: top } }, mainEl) }; const getMovingSides = el => { const { className: className } = el; const hasCornerTopLeftClass = className.includes("dx-resizable-handle-corner-top-left"); const hasCornerTopRightClass = className.includes("dx-resizable-handle-corner-top-right"); const hasCornerBottomLeftClass = className.includes("dx-resizable-handle-corner-bottom-left"); const hasCornerBottomRightClass = className.includes("dx-resizable-handle-corner-bottom-right"); return { top: className.includes("dx-resizable-handle-top") || hasCornerTopLeftClass || hasCornerTopRightClass, left: className.includes("dx-resizable-handle-left") || hasCornerTopLeftClass || hasCornerBottomLeftClass, bottom: className.includes("dx-resizable-handle-bottom") || hasCornerBottomLeftClass || hasCornerBottomRightClass, right: className.includes("dx-resizable-handle-right") || hasCornerTopRightClass || hasCornerBottomRightClass } }; exports.getMovingSides = getMovingSides; exports.filterOffsets = (offset, handleEl) => { const sides = getMovingSides(handleEl); const offsetX = !sides.left && !sides.right ? 0 : offset.x; const offsetY = !sides.top && !sides.bottom ? 0 : offset.y; return { x: offsetX, y: offsetY } } }, 21363: /*!*********************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/ui/scroll_view/consts.js ***! \*********************************************************************************/ function(__unused_webpack_module, exports) { Object.defineProperty(exports, "__esModule", { value: true }); exports.VALIDATE_WHEEL_TIMEOUT = exports.TopPocketState = exports.ShowScrollbarMode = exports.SCROLL_LINE_HEIGHT = exports.SCROLLVIEW_TOP_POCKET_CLASS = exports.SCROLLVIEW_REACHBOTTOM_TEXT_CLASS = exports.SCROLLVIEW_REACHBOTTOM_INDICATOR_CLASS = exports.SCROLLVIEW_REACHBOTTOM_CLASS = exports.SCROLLVIEW_PULLDOWN_VISIBLE_TEXT_CLASS = exports.SCROLLVIEW_PULLDOWN_TEXT_CLASS = exports.SCROLLVIEW_PULLDOWN_READY_CLASS = exports.SCROLLVIEW_PULLDOWN_LOADING_CLASS = exports.SCROLLVIEW_PULLDOWN_INDICATOR_CLASS = exports.SCROLLVIEW_PULLDOWN_IMAGE_CLASS = exports.SCROLLVIEW_PULLDOWN = exports.SCROLLVIEW_CONTENT_CLASS = exports.SCROLLVIEW_BOTTOM_POCKET_CLASS = exports.SCROLLABLE_WRAPPER_CLASS = exports.SCROLLABLE_SIMULATED_CLASS = exports.SCROLLABLE_SCROLL_CONTENT_CLASS = exports.SCROLLABLE_SCROLL_CLASS = exports.SCROLLABLE_SCROLLBAR_SIMULATED = exports.SCROLLABLE_SCROLLBAR_CLASS = exports.SCROLLABLE_SCROLLBAR_ACTIVE_CLASS = exports.SCROLLABLE_SCROLLBARS_HIDDEN = exports.SCROLLABLE_SCROLLBARS_ALWAYSVISIBLE = exports.SCROLLABLE_DISABLED_CLASS = exports.SCROLLABLE_CONTENT_CLASS = exports.SCROLLABLE_CONTAINER_CLASS = exports.PULLDOWN_ICON_CLASS = exports.KEY_CODES = exports.HOVER_ENABLED_STATE = exports.HIDE_SCROLLBAR_TIMEOUT = exports.DIRECTION_VERTICAL = exports.DIRECTION_HORIZONTAL = exports.DIRECTION_BOTH = void 0; exports.SCROLL_LINE_HEIGHT = 40; exports.DIRECTION_VERTICAL = "vertical"; exports.DIRECTION_HORIZONTAL = "horizontal"; exports.DIRECTION_BOTH = "both"; exports.SCROLLABLE_SIMULATED_CLASS = "dx-scrollable-simulated"; exports.SCROLLABLE_CONTENT_CLASS = "dx-scrollable-content"; exports.SCROLLABLE_WRAPPER_CLASS = "dx-scrollable-wrapper"; exports.SCROLLABLE_CONTAINER_CLASS = "dx-scrollable-container"; exports.SCROLLABLE_DISABLED_CLASS = "dx-scrollable-disabled"; exports.SCROLLABLE_SCROLLBAR_SIMULATED = "dx-scrollable-scrollbar-simulated"; exports.SCROLLABLE_SCROLLBARS_HIDDEN = "dx-scrollable-scrollbars-hidden"; exports.SCROLLABLE_SCROLLBARS_ALWAYSVISIBLE = "dx-scrollable-scrollbars-alwaysvisible"; exports.SCROLLABLE_SCROLLBAR_CLASS = "dx-scrollable-scrollbar"; exports.SCROLLABLE_SCROLLBAR_ACTIVE_CLASS = "dx-scrollable-scrollbar-active"; exports.SCROLLABLE_SCROLL_CLASS = "dx-scrollable-scroll"; exports.SCROLLABLE_SCROLL_CONTENT_CLASS = "dx-scrollable-scroll-content"; exports.HOVER_ENABLED_STATE = "dx-scrollbar-hoverable"; exports.SCROLLVIEW_CONTENT_CLASS = "dx-scrollview-content"; exports.SCROLLVIEW_TOP_POCKET_CLASS = "dx-scrollview-top-pocket"; exports.SCROLLVIEW_PULLDOWN = "dx-scrollview-pull-down"; exports.SCROLLVIEW_PULLDOWN_LOADING_CLASS = "dx-scrollview-pull-down-loading"; exports.SCROLLVIEW_PULLDOWN_READY_CLASS = "dx-scrollview-pull-down-ready"; exports.SCROLLVIEW_PULLDOWN_IMAGE_CLASS = "dx-scrollview-pull-down-image"; exports.SCROLLVIEW_PULLDOWN_INDICATOR_CLASS = "dx-scrollview-pull-down-indicator"; exports.SCROLLVIEW_PULLDOWN_TEXT_CLASS = "dx-scrollview-pull-down-text"; exports.SCROLLVIEW_PULLDOWN_VISIBLE_TEXT_CLASS = "dx-scrollview-pull-down-text-visible"; exports.PULLDOWN_ICON_CLASS = "dx-icon-pulldown"; exports.SCROLLVIEW_BOTTOM_POCKET_CLASS = "dx-scrollview-bottom-pocket"; exports.SCROLLVIEW_REACHBOTTOM_CLASS = "dx-scrollview-scrollbottom"; exports.SCROLLVIEW_REACHBOTTOM_INDICATOR_CLASS = "dx-scrollview-scrollbottom-indicator"; exports.SCROLLVIEW_REACHBOTTOM_TEXT_CLASS = "dx-scrollview-scrollbottom-text"; exports.TopPocketState = { STATE_RELEASED: 0, STATE_READY: 1, STATE_REFRESHING: 2, STATE_LOADING: 3, STATE_TOUCHED: 4, STATE_PULLED: 5 }; exports.ShowScrollbarMode = { HOVER: "onHover", ALWAYS: "always", NEVER: "never", SCROLL: "onScroll" }; exports.KEY_CODES = { PAGE_UP: "pageUp", PAGE_DOWN: "pageDown", END: "end", HOME: "home", LEFT: "leftArrow", UP: "upArrow", RIGHT: "rightArrow", DOWN: "downArrow" }; exports.VALIDATE_WHEEL_TIMEOUT = 500; exports.HIDE_SCROLLBAR_TIMEOUT = 500 }, 99762: /*!*************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/ui/scroll_view/m_animator.js ***! \*************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _frame = __webpack_require__( /*! ../../../common/core/animation/frame */ 84096); var _class = (e = __webpack_require__( /*! ../../../core/class */ 55620), e && e.__esModule ? e : { default: e }); var e; class Animator extends(_class.default.inherit({})) { ctor(strategy) { this._finished = true; this._stopped = false; this._proxiedStepCore = this._stepCore.bind(this) } start() { this._stopped = false; this._finished = false; this._stepCore() } stop() { this._stopped = true; (0, _frame.cancelAnimationFrame)(this._stepAnimationFrame) } _stepCore() { if (this._isStopped()) { this._stop(); return } if (this._isFinished()) { this._finished = true; this._complete(); return } this._step(); this._stepAnimationFrame = (0, _frame.requestAnimationFrame)(this._proxiedStepCore) } _step() { _class.default.abstract() } _isFinished() {} _stop() {} _complete() {} _isStopped() { return this._stopped } inProgress() { return !(this._stopped || this._finished) } } exports.default = Animator }, 97972: /*!****************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/ui/scroll_view/m_scroll_view.js ***! \****************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = exports.ScrollViewServerSide = exports.ScrollView = void 0; var _message = _interopRequireDefault(__webpack_require__( /*! ../../../common/core/localization/message */ 4671)); var _component_registrator = _interopRequireDefault(__webpack_require__( /*! ../../../core/component_registrator */ 92848)); var _devices = _interopRequireDefault(__webpack_require__( /*! ../../../core/devices */ 65951)); var _element = __webpack_require__( /*! ../../../core/element */ 61404); var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../../core/renderer */ 64553)); var _window = __webpack_require__( /*! ../../../core/utils/window */ 3104); var _load_indicator = _interopRequireDefault(__webpack_require__( /*! ../../../ui/load_indicator */ 11979)); var _themes = __webpack_require__( /*! ../../../ui/themes */ 52071); var _m_load_panel = _interopRequireDefault(__webpack_require__( /*! ../../ui/m_load_panel */ 14474)); var _m_scroll_viewNative = _interopRequireDefault(__webpack_require__( /*! ./m_scroll_view.native.pull_down */ 83493)); var _m_scroll_viewNative2 = _interopRequireDefault(__webpack_require__( /*! ./m_scroll_view.native.swipe_down */ 14286)); var _m_scroll_view = _interopRequireDefault(__webpack_require__( /*! ./m_scroll_view.simulated */ 94492)); var _m_scrollable = _interopRequireDefault(__webpack_require__( /*! ./m_scrollable */ 94790)); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } function _extends() { return _extends = Object.assign ? Object.assign.bind() : function(n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) { ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]) } } return n }, _extends.apply(null, arguments) } const refreshStrategies = { pullDown: _m_scroll_viewNative.default, swipeDown: _m_scroll_viewNative2.default, simulated: _m_scroll_view.default }; const isServerSide = !(0, _window.hasWindow)(); class ScrollViewServerSide extends _m_scrollable.default { finishLoading() {} release() {} refresh() {} scrollOffset() { return { top: 0, left: 0 } } isBottomReached() { return false } _optionChanged(args) { const { name: name } = args; if ("onUpdated" !== name) { return super._optionChanged.apply(this, arguments) } } } exports.ScrollViewServerSide = ScrollViewServerSide; class ScrollView extends _m_scrollable.default { _getDefaultOptions() { return _extends({}, super._getDefaultOptions(), { pullingDownText: _message.default.format("dxScrollView-pullingDownText"), pulledDownText: _message.default.format("dxScrollView-pulledDownText"), refreshingText: _message.default.format("dxScrollView-refreshingText"), reachBottomText: _message.default.format("dxScrollView-reachBottomText"), onPullDown: null, onReachBottom: null, refreshStrategy: "pullDown" }) } _defaultOptionsRules() { return super._defaultOptionsRules().concat([{ device() { const realDevice = _devices.default.real(); return "android" === realDevice.platform }, options: { refreshStrategy: "swipeDown" } }, { device: () => (0, _themes.isMaterialBased)(), options: { pullingDownText: "", pulledDownText: "", refreshingText: "", reachBottomText: "" } }]) } _init() { super._init(); this._loadingIndicatorEnabled = true } _initScrollableMarkup() { super._initScrollableMarkup(); this.$element().addClass("dx-scrollview"); this._initContent(); this._initTopPocket(); this._initBottomPocket(); this._initLoadPanel() } _initContent() { const $content = (0, _renderer.default)("<div>").addClass("dx-scrollview-content"); this._$content.wrapInner($content) } _initTopPocket() { this._$topPocket = (0, _renderer.default)("<div>").addClass("dx-scrollview-top-pocket"); this._$pullDown = (0, _renderer.default)("<div>").addClass("dx-scrollview-pull-down"); this._$topPocket.append(this._$pullDown); this._$content.prepend(this._$topPocket) } _initBottomPocket() { this._$bottomPocket = (0, _renderer.default)("<div>").addClass("dx-scrollview-bottom-pocket"); this._$reachBottom = (0, _renderer.default)("<div>").addClass("dx-scrollview-scrollbottom"); const $loadContainer = (0, _renderer.default)("<div>").addClass("dx-scrollview-scrollbottom-indicator"); const $loadIndicator = new _load_indicator.default((0, _renderer.default)("<div>")).$element(); this._$reachBottomText = (0, _renderer.default)("<div>").addClass("dx-scrollview-scrollbottom-text"); this._updateReachBottomText(); this._$reachBottom.append($loadContainer.append($loadIndicator)).append(this._$reachBottomText); this._$bottomPocket.append(this._$reachBottom); this._$content.append(this._$bottomPocket) } _initLoadPanel() { const $loadPanelElement = (0, _renderer.default)("<div>").addClass("dx-scrollview-loadpanel").appendTo(this.$element()); const { refreshingText: refreshingText } = this.option(); this._loadPanel = this._createComponent($loadPanelElement, _m_load_panel.default, { shading: false, delay: 400, message: refreshingText, position: { of: this.$element() } }) } _updateReachBottomText() { const { reachBottomText: reachBottomText } = this.option(); this._$reachBottomText.text(reachBottomText) } _createStrategy() { const { useNative: useNative, refreshStrategy: refreshStrategy } = this.option(); const strategyName = useNative ? refreshStrategy : "simulated"; const strategyClass = refreshStrategies[strategyName]; this._strategy = new strategyClass(this); this._strategy.pullDownCallbacks.add(this._pullDownHandler.bind(this)); this._strategy.releaseCallbacks.add(this._releaseHandler.bind(this)); this._strategy.reachBottomCallbacks.add(this._reachBottomHandler.bind(this)) } _createActions() { super._createActions(); this._pullDownAction = this._createActionByOption("onPullDown"); this._reachBottomAction = this._createActionByOption("onReachBottom"); this._tryRefreshPocketState() } _tryRefreshPocketState() { this._pullDownEnable(this.hasActionSubscription("onPullDown")); this._reachBottomEnable(this.hasActionSubscription("onReachBottom")) } on(eventName) { const result = super.on.apply(this, arguments); if ("pullDown" === eventName || "reachBottom" === eventName) { this._tryRefreshPocketState() } return result } _pullDownEnable(enabled) { if (0 === arguments.length) { return this._pullDownEnabled } if (this._$pullDown && this._strategy) { this._$pullDown.toggle(enabled); this._strategy.pullDownEnable(enabled); this._pullDownEnabled = enabled } } _reachBottomEnable(enabled) { if (0 === arguments.length) { return this._reachBottomEnabled } if (this._$reachBottom && this._strategy) { this._$reachBottom.toggle(enabled); this._strategy.reachBottomEnable(enabled); this._reachBottomEnabled = enabled } } _pullDownHandler() { this._loadingIndicator(false); this._pullDownLoading() } _loadingIndicator(value) { if (arguments.length < 1) { return this._loadingIndicatorEnabled } this._loadingIndicatorEnabled = value } _pullDownLoading() { var _this$_pullDownAction; this.startLoading(); null === (_this$_pullDownAction = this._pullDownAction) || void 0 === _this$_pullDownAction || _this$_pullDownAction.call(this) } _reachBottomHandler() { this._loadingIndicator(false); this._reachBottomLoading() } _reachBottomLoading() { var _this$_reachBottomAct; this.startLoading(); null === (_this$_reachBottomAct = this._reachBottomAction) || void 0 === _this$_reachBottomAct || _this$_reachBottomAct.call(this) } _releaseHandler() { this.finishLoading(); this._loadingIndicator(true) } _optionChanged(args) { switch (args.name) { case "onPullDown": case "onReachBottom": this._createActions(); break; case "pullingDownText": case "pulledDownText": case "refreshingText": case "refreshStrategy": this._invalidate(); break; case "reachBottomText": this._updateReachBottomText(); break; default: super._optionChanged(args) } } content() { return (0, _element.getPublicElement)(this._$content.children().eq(1)) } release(preventReachBottom) { if (void 0 !== preventReachBottom) { this.toggleLoading(!preventReachBottom) } return this._strategy.release() } toggleLoading(showOrHide) { this._reachBottomEnable(showOrHide) } refresh() { if (!this.hasActionSubscription("onPullDown")) { return } this._strategy.pendingRelease(); this._pullDownLoading() } startLoading() { if (this._loadingIndicator() && this.$element().is(":visible")) { this._loadPanel.show() } this._lock() } finishLoading() { this._loadPanel.hide(); this._unlock() } isBottomReached() { return this._strategy.isBottomReached() } _dispose() { this._strategy.dispose(); super._dispose(); if (this._loadPanel) { this._loadPanel.$element().remove() } } } exports.ScrollView = ScrollView; (0, _component_registrator.default)("dxScrollView", isServerSide ? ScrollViewServerSide : ScrollView); exports.default = isServerSide ? ScrollViewServerSide : ScrollView }, 83493: /*!*********************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/ui/scroll_view/m_scroll_view.native.pull_down.js ***! \*********************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _translator = __webpack_require__( /*! ../../../common/core/animation/translator */ 88603); var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../../core/renderer */ 64553)); var _callbacks = _interopRequireDefault(__webpack_require__( /*! ../../../core/utils/callbacks */ 84718)); var _deferred = __webpack_require__( /*! ../../../core/utils/deferred */ 87739); var _iterator = __webpack_require__( /*! ../../../core/utils/iterator */ 21274); var _load_indicator = _interopRequireDefault(__webpack_require__( /*! ../../../ui/load_indicator */ 11979)); var _m_scrollable = _interopRequireDefault(__webpack_require__( /*! ./m_scrollable.native */ 97265)); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } class PullDownNativeScrollViewStrategy extends _m_scrollable.default { _init(scrollView) { super._init(scrollView); this._$topPocket = scrollView._$topPocket; this._$pullDown = scrollView._$pullDown; this._$refreshingText = scrollView._$refreshingText; this._$scrollViewContent = (0, _renderer.default)(scrollView.content()); this._$container = (0, _renderer.default)(scrollView.container()); this._initCallbacks() } _initCallbacks() { this.pullDownCallbacks = (0, _callbacks.default)(); this.releaseCallbacks = (0, _callbacks.default)(); this.reachBottomCallbacks = (0, _callbacks.default)() } render() { super.render(); this._renderPullDown(); this._releaseState() } _renderPullDown() { const $image = (0, _renderer.default)("<div>").addClass("dx-scrollview-pull-down-image"); const $loadContainer = (0, _renderer.default)("<div>").addClass("dx-scrollview-pull-down-indicator"); const $loadIndicator = new _load_indicator.default((0, _renderer.default)("<div>")).$element(); const $text = this._$pullDownText = (0, _renderer.default)("<div>").addClass("dx-scrollview-pull-down-text"); this._$pullingDownText = (0, _renderer.default)("<div>").text(this.option("pullingDownText")).appendTo($text); this._$pulledDownText = (0, _renderer.default)("<div>").text(this.option("pulledDownText")).appendTo($text); this._$refreshingText = (0, _renderer.default)("<div>").text(this.option("refreshingText")).appendTo($text); this._$pullDown.empty().append($image).append($loadContainer.append($loadIndicator)).append($text) } _releaseState() { this._state = 0; this._refreshPullDownText() } _refreshPullDownText() { const that = this; const pullDownTextItems = [{ element: this._$pullingDownText, visibleState: 0 }, { element: this._$pulledDownText, visibleState: 1 }, { element: this._$refreshingText, visibleState: 2 }]; (0, _iterator.each)(pullDownTextItems, ((_, item) => { const action = that._state === item.visibleState ? "addClass" : "removeClass"; item.element[action]("dx-scrollview-pull-down-text-visible") })) } update() { super.update(); this._setTopPocketOffset() } _updateDimensions() { super._updateDimensions(); this._topPocketSize = this._$topPocket.get(0).clientHeight; const contentEl = this._$scrollViewContent.get(0); const containerEl = this._$container.get(0); this._bottomBoundary = Math.max(contentEl.clientHeight - containerEl.clientHeight, 0) } _allowedDirections() { const allowedDirections = super._allowedDirections(); allowedDirections.vertical = allowedDirections.vertical || this._pullDownEnabled; return allowedDirections } _setTopPocketOffset() { this._$topPocket.css({ top: -this._topPocketSize }) } handleEnd() { super.handleEnd(); this._complete() } handleStop() { super.handleStop(); this._complete() } _complete() { if (1 === this._state) { this._setPullDownOffset(this._topPocketSize); clearTimeout(this._pullDownRefreshTimeout); this._pullDownRefreshTimeout = setTimeout((() => { this._pullDownRefreshing() }), 400) } } _setPullDownOffset(offset) { (0, _translator.move)(this._$topPocket, { top: offset }); (0, _translator.move)(this._$scrollViewContent, { top: offset }) } handleScroll(e) { super.handleScroll(e); if (2 === this._state) { return } const currentLocation = this.location().top; const scrollDelta = (this._location || 0) - currentLocation; this._location = currentLocation; if (this._isPullDown()) { this._pullDownReady() } else if (scrollDelta > 0 && this._isReachBottom()) { this._reachBottom() } else { this._stateReleased() } } _isPullDown() { return this._pullDownEnabled && this._location >= this._topPocketSize } _isReachBottom() { return this._reachBottomEnabled && this.isBottomReached() } isBottomReached() { return Math.round(this._bottomBoundary + Math.floor(this._location)) <= 1 } _reachBottom() { if (3 === this._state) { return } this._state = 3; this.reachBottomCallbacks.fire() } _pullDownReady() { if (1 === this._state) { return } this._state = 1; this._$pullDown.addClass("dx-scrollview-pull-down-ready"); this._refreshPullDownText() } _stateReleased() { if (0 === this._state) { return } this._$pullDown.removeClass("dx-scrollview-pull-down-loading").removeClass("dx-scrollview-pull-down-ready"); this._releaseState() } _pullDownRefreshing() { if (2 === this._state) { return } this._state = 2; this._$pullDown.addClass("dx-scrollview-pull-down-loading").removeClass("dx-scrollview-pull-down-ready"); this._refreshPullDownText(); this.pullDownCallbacks.fire() } pullDownEnable(enabled) { if (enabled) { this._updateDimensions(); this._setTopPocketOffset() } this._pullDownEnabled = enabled } reachBottomEnable(enabled) { this._reachBottomEnabled = enabled } pendingRelease() { this._state = 1 } release() { const deferred = (0, _deferred.Deferred)(); this._updateDimensions(); clearTimeout(this._releaseTimeout); if (3 === this._state) { this._state = 0 } this._releaseTimeout = setTimeout((() => { this._setPullDownOffset(0); this._stateReleased(); this.releaseCallbacks.fire(); this._updateAction(); deferred.resolve() }), 400); return deferred.promise() } dispose() { clearTimeout(this._pullDownRefreshTimeout); clearTimeout(this._releaseTimeout); super.dispose() } } exports.default = PullDownNativeScrollViewStrategy }, 14286: /*!**********************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/ui/scroll_view/m_scroll_view.native.swipe_down.js ***! \**********************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _translator = __webpack_require__( /*! ../../../common/core/animation/translator */ 88603); var _index = __webpack_require__( /*! ../../../common/core/events/utils/index */ 98834); var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../../core/renderer */ 64553)); var _callbacks = _interopRequireDefault(__webpack_require__( /*! ../../../core/utils/callbacks */ 84718)); var _deferred = __webpack_require__( /*! ../../../core/utils/deferred */ 87739); var _size = __webpack_require__( /*! ../../../core/utils/size */ 57653); var _load_indicator = _interopRequireDefault(__webpack_require__( /*! ../../../ui/load_indicator */ 11979)); var _m_scrollable = _interopRequireDefault(__webpack_require__( /*! ./m_scrollable.native */ 97265)); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } class SwipeDownNativeScrollViewStrategy extends _m_scrollable.default { _init(scrollView) { super._init(scrollView); this._$topPocket = scrollView._$topPocket; this._$pullDown = scrollView._$pullDown; this._$scrollViewContent = (0, _renderer.default)(scrollView.content()); this._$container = (0, _renderer.default)(scrollView.container()); this._initCallbacks(); this._location = 0 } _initCallbacks() { this.pullDownCallbacks = (0, _callbacks.default)(); this.releaseCallbacks = (0, _callbacks.default)(); this.reachBottomCallbacks = (0, _callbacks.default)() } render() { super.render(); this._renderPullDown(); this._releaseState() } _renderPullDown() { const $loadContainer = (0, _renderer.default)("<div>").addClass("dx-scrollview-pull-down-indicator"); const $loadIndicator = new _load_indicator.default((0, _renderer.default)("<div>")).$element(); this._$icon = (0, _renderer.default)("<div>").addClass("dx-icon-pulldown"); this._$pullDown.empty().append(this._$icon).append($loadContainer.append($loadIndicator)) } _releaseState() { this._state = 0; this._releasePullDown(); this._updateDimensions() } _releasePullDown() { this._$pullDown.css({ opacity: 0 }) } _updateDimensions() { super._updateDimensions(); this._topPocketSize = this._$topPocket.get(0).clientHeight; const contentEl = this._$scrollViewContent.get(0); const containerEl = this._$container.get(0); this._bottomBoundary = Math.max(contentEl.clientHeight - containerEl.clientHeight, 0) } _allowedDirections() { const allowedDirections = super._allowedDirections(); allowedDirections.vertical = allowedDirections.vertical || this._pullDownEnabled; return allowedDirections } handleInit(e) { super.handleInit(e); if (0 === this._state && 0 === this._location) { this._startClientY = (0, _index.eventData)(e.originalEvent).y; this._state = 4 } } handleMove(e) { super.handleMove(e); this._deltaY = (0, _index.eventData)(e.originalEvent).y - this._startClientY; if (4 === this._state) { if (this._pullDownEnabled && this._deltaY > 0) { this._state = 5 } else { this._complete() } } if (5 === this._state) { e.preventDefault(); this._movePullDown() } } _movePullDown() { const pullDownHeight = this._getPullDownHeight(); const top = Math.min(3 * pullDownHeight, this._deltaY + this._getPullDownStartPosition()); const angle = 180 * top / pullDownHeight / 3; this._$pullDown.css({ opacity: 1 }).toggleClass("dx-scrollview-pull-down-refreshing", top < pullDownHeight); (0, _translator.move)(this._$pullDown, { top: top }); this._$icon.css({ transform: `rotate(${angle}deg)` }) } _isPullDown() { return this._pullDownEnabled && 5 === this._state && this._deltaY >= this._getPullDownHeight() - this._getPullDownStartPosition() } _getPullDownHeight() { return Math.round(.05 * (0, _size.getOuterHeight)(this._$element)) } _getPullDownStartPosition() { return -Math.round(1.5 * (0, _size.getOuterHeight)(this._$pullDown)) } handleEnd() { if (this._isPullDown()) { this._pullDownRefreshing() } this._complete() } handleStop() { this._complete() } _complete() { if (4 === this._state || 5 === this._state) { this._releaseState() } } handleScroll(e) { super.handleScroll(e); if (2 === this._state) { return } const currentLocation = this.location().top; const scrollDelta = this._location - currentLocation; this._location = currentLocation; if (scrollDelta > 0 && this._isReachBottom()) { this._reachBottom() } else { this._stateReleased() } } _isReachBottom() { return this._reachBottomEnabled && this.isBottomReached() } isBottomReached() { return Math.round(this._bottomBoundary + Math.floor(this._location)) <= 1 } _reachBottom() { this.reachBottomCallbacks.fire() } _stateReleased() { if (0 === this._state) { return } this._$pullDown.removeClass("dx-scrollview-pull-down-loading"); this._releaseState() } _pullDownRefreshing() { this._state = 2; this._pullDownRefreshHandler() } _pullDownRefreshHandler() { this._refreshPullDown(); this.pullDownCallbacks.fire() } _refreshPullDown() { this._$pullDown.addClass("dx-scrollview-pull-down-loading"); (0, _translator.move)(this._$pullDown, { top: this._getPullDownHeight() }) } pullDownEnable(enabled) { this._$topPocket.toggle(enabled); this._pullDownEnabled = enabled } reachBottomEnable(enabled) { this._reachBottomEnabled = enabled } pendingRelease() { this._state = 1 } release() { const deferred = (0, _deferred.Deferred)(); this._updateDimensions(); clearTimeout(this._releaseTimeout); this._releaseTimeout = setTimeout((() => { this._stateReleased(); this.releaseCallbacks.fire(); this._updateAction(); deferred.resolve() }), 800); return deferred.promise() } dispose() { clearTimeout(this._pullDownRefreshTimeout); clearTimeout(this._releaseTimeout); super.dispose() } } exports.default = SwipeDownNativeScrollViewStrategy }, 94492: /*!**************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/ui/scroll_view/m_scroll_view.simulated.js ***! \**************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = exports.ScrollViewScroller = void 0; var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../../core/renderer */ 64553)); var _callbacks = _interopRequireDefault(__webpack_require__( /*! ../../../core/utils/callbacks */ 84718)); var _common = __webpack_require__( /*! ../../../core/utils/common */ 17781); var _iterator = __webpack_require__( /*! ../../../core/utils/iterator */ 21274); var _size = __webpack_require__( /*! ../../../core/utils/size */ 57653); var _load_indicator = _interopRequireDefault(__webpack_require__( /*! ../../../ui/load_indicator */ 11979)); var _m_scrollable = __webpack_require__( /*! ./m_scrollable.simulated */ 74638); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } function _extends() { return _extends = Object.assign ? Object.assign.bind() : function(n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) { ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]) } } return n }, _extends.apply(null, arguments) } class ScrollViewScroller extends _m_scrollable.Scroller { ctor() { this._topPocketSize = 0; this._bottomPocketSize = 0; super.ctor.apply(this, arguments); this._initCallbacks(); this._releaseState() } _releaseState() { this._state = 0; this._refreshPullDownText() } _refreshPullDownText() { const that = this; const pullDownTextItems = [{ element: this._$pullingDownText, visibleState: 0 }, { element: this._$pulledDownText, visibleState: 1 }, { element: this._$refreshingText, visibleState: 2 }]; (0, _iterator.each)(pullDownTextItems, ((_, item) => { const action = that._state === item.visibleState ? "addClass" : "removeClass"; item.element[action]("dx-scrollview-pull-down-text-visible") })) } _initCallbacks() { this.pullDownCallbacks = (0, _callbacks.default)(); this.releaseCallbacks = (0, _callbacks.default)(); this.reachBottomCallbacks = (0, _callbacks.default)() } _updateBounds() { const considerPockets = "horizontal" !== this._direction; if (considerPockets) { this._topPocketSize = this._$topPocket.get(0).clientHeight; this._bottomPocketSize = this._$bottomPocket.get(0).clientHeight; const containerEl = this._$container.get(0); const contentEl = this._$content.get(0); this._bottomBoundary = Math.max(contentEl.clientHeight - this._bottomPocketSize - containerEl.clientHeight, 0) } super._updateBounds() } _updateScrollbar() { this._scrollbar.option({ containerSize: this._containerSize(), contentSize: this._contentSize() - this._topPocketSize - this._bottomPocketSize, scaleRatio: this._getScaleRatio() }) } _moveContent() { super._moveContent(); if (this._isPullDown()) { this._pullDownReady() } else if (this._isReachBottom()) { this._reachBottomReady() } else if (0 !== this._state) { this._stateReleased() } } _moveScrollbar() { this._scrollbar.moveTo(this._topPocketSize + this._location) } _isPullDown() { return this._pullDownEnabled && this._location >= 0 } _isReachBottom() { return this._reachBottomEnabled && this.isBottomReached() } isBottomReached() { const containerEl = this._$container.get(0); return Math.round(this._bottomBoundary - Math.ceil(containerEl.scrollTop)) <= 1 } _scrollComplete() { if (this._inBounds() && 1 === this._state) { this._pullDownRefreshing() } else if (this._inBounds() && 3 === this._state) { this._reachBottomLoading() } else { super._scrollComplete() } } _reachBottomReady() { if (3 === this._state) { return } this._state = 3; this._minOffset = this._getMinOffset() } _getMaxOffset() { return -this._topPocketSize } _getMinOffset() { return Math.min(super._getMinOffset(), -this._topPocketSize) } _reachBottomLoading() { this.reachBottomCallbacks.fire() } _pullDownReady() { if (1 === this._state) { return } this._state = 1; this._maxOffset = 0; this._$pullDown.addClass("dx-scrollview-pull-down-ready"); this._refreshPullDownText() } _stateReleased() { if (0 === this._state) { return } this._releaseState(); this._updateBounds(); this._$pullDown.removeClass("dx-scrollview-pull-down-loading").removeClass("dx-scrollview-pull-down-ready"); this.releaseCallbacks.fire() } _pullDownRefreshing() { if (2 === this._state) { return } this._state = 2; this._$pullDown.addClass("dx-scrollview-pull-down-loading").removeClass("dx-scrollview-pull-down-ready"); this._refreshPullDownText(); this.pullDownCallbacks.fire() } _releaseHandler() { var _this$_releaseTask; if (0 === this._state) { this._moveToBounds() } this._update(); if (this._releaseTask) { this._releaseTask.abort() } this._releaseTask = (0, _common.executeAsync)(this._release.bind(this)); return null === (_this$_releaseTask = this._releaseTask) || void 0 === _this$_releaseTask ? void 0 : _this$_releaseTask.promise } _release() { this._stateReleased(); this._scrollComplete() } _reachBottomEnablingHandler(enabled) { if (this._reachBottomEnabled === enabled) { return } this._reachBottomEnabled = enabled; this._updateBounds() } _pullDownEnablingHandler(enabled) { if (this._pullDownEnabled === enabled) { return } this._pullDownEnabled = enabled; this._considerTopPocketChange(); this._updateHandler() } _considerTopPocketChange() { this._location -= (0, _size.getHeight)(this._$topPocket) || -this._topPocketSize; this._maxOffset = 0; this._move() } _pendingReleaseHandler() { this._state = 1 } dispose() { if (this._releaseTask) { this._releaseTask.abort() } super.dispose() } } exports.ScrollViewScroller = ScrollViewScroller; class SimulatedScrollViewStrategy extends _m_scrollable.SimulatedStrategy { _init(scrollView) { super._init(scrollView); this._$pullDown = scrollView._$pullDown; this._$topPocket = scrollView._$topPocket; this._$bottomPocket = scrollView._$bottomPocket; this._initCallbacks() } _initCallbacks() { this.pullDownCallbacks = (0, _callbacks.default)(); this.releaseCallbacks = (0, _callbacks.default)(); this.reachBottomCallbacks = (0, _callbacks.default)() } render() { this._renderPullDown(); super.render() } _renderPullDown() { const $image = (0, _renderer.default)("<div>").addClass("dx-scrollview-pull-down-image"); const $loadContainer = (0, _renderer.default)("<div>").addClass("dx-scrollview-pull-down-indicator"); const $loadIndicator = new _load_indicator.default((0, _renderer.default)("<div>")).$element(); const $text = this._$pullDownText = (0, _renderer.default)("<div>").addClass("dx-scrollview-pull-down-text"); this._$pullingDownText = (0, _renderer.default)("<div>").text(this.option("pullingDownText")).appendTo($text); this._$pulledDownText = (0, _renderer.default)("<div>").text(this.option("pulledDownText")).appendTo($text); this._$refreshingText = (0, _renderer.default)("<div>").text(this.option("refreshingText")).appendTo($text); this._$pullDown.empty().append($image).append($loadContainer.append($loadIndicator)).append($text) } pullDownEnable(enabled) { this._eventHandler("pullDownEnabling", enabled) } reachBottomEnable(enabled) { this._eventHandler("reachBottomEnabling", enabled) } _createScroller(direction) { const that = this; const scroller = that._scrollers[direction] = new ScrollViewScroller(that._scrollerOptions(direction)); scroller.pullDownCallbacks.add((() => { that.pullDownCallbacks.fire() })); scroller.releaseCallbacks.add((() => { that.releaseCallbacks.fire() })); scroller.reachBottomCallbacks.add((() => { that.reachBottomCallbacks.fire() })) } _scrollerOptions(direction) { return _extends({}, super._scrollerOptions(direction), { $topPocket: this._$topPocket, $bottomPocket: this._$bottomPocket, $pullDown: this._$pullDown, $pullDownText: this._$pullDownText, $pullingDownText: this._$pullingDownText, $pulledDownText: this._$pulledDownText, $refreshingText: this._$refreshingText }) } pendingRelease() { this._eventHandler("pendingRelease") } release() { return this._eventHandler("release").done(this._updateAction) } location() { const location = super.location(); location.top += (0, _size.getHeight)(this._$topPocket); return location } isBottomReached() { return this._scrollers.vertical.isBottomReached() } dispose() { (0, _iterator.each)(this._scrollers, (function() { this.dispose() })); super.dispose() } } exports.default = SimulatedScrollViewStrategy }, 65180: /*!**********************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/ui/scroll_view/m_scrollable.device.js ***! \**********************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.deviceDependentOptions = void 0; var _devices = _interopRequireDefault(__webpack_require__( /*! ../../../core/devices */ 65951)); var _m_support = _interopRequireDefault(__webpack_require__( /*! ../../core/utils/m_support */ 85991)); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } exports.deviceDependentOptions = function() { return [{ device: () => !_m_support.default.nativeScrolling, options: { useNative: false } }, { device: device => !_devices.default.isSimulator() && "desktop" === _devices.default.real().deviceType && "generic" === device.platform, options: { bounceEnabled: false, scrollByThumb: true, scrollByContent: _m_support.default.touch, showScrollbar: "onHover" } }] } }, 94790: /*!***************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/ui/scroll_view/m_scrollable.js ***! \***************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _events_engine = _interopRequireDefault(__webpack_require__( /*! ../../../common/core/events/core/events_engine */ 92774)); var _emitterGesture = _interopRequireDefault(__webpack_require__( /*! ../../../common/core/events/gesture/emitter.gesture.scroll */ 86548)); var _index = __webpack_require__( /*! ../../../common/core/events/utils/index */ 98834); var _component_registrator = _interopRequireDefault(__webpack_require__( /*! ../../../core/component_registrator */ 92848)); var _devices = _interopRequireDefault(__webpack_require__( /*! ../../../core/devices */ 65951)); var _element = __webpack_require__( /*! ../../../core/element */ 61404); var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../../core/renderer */ 64553)); var _browser = _interopRequireDefault(__webpack_require__( /*! ../../../core/utils/browser */ 48314)); var _common = __webpack_require__( /*! ../../../core/utils/common */ 17781); var _deferred = __webpack_require__( /*! ../../../core/utils/deferred */ 87739); var _size = __webpack_require__( /*! ../../../core/utils/size */ 57653); var _type = __webpack_require__( /*! ../../../core/utils/type */ 11528); var _window = __webpack_require__( /*! ../../../core/utils/window */ 3104); var _dom_component = _interopRequireDefault(__webpack_require__( /*! ../../core/widget/dom_component */ 22331)); var _get_element_location_internal = __webpack_require__( /*! ../../ui/scroll_view/utils/get_element_location_internal */ 62504); var _m_support = _interopRequireDefault(__webpack_require__( /*! ../../core/utils/m_support */ 85991)); var _m_scrollable = __webpack_require__( /*! ./m_scrollable.device */ 65180); var _m_scrollable2 = _interopRequireDefault(__webpack_require__( /*! ./m_scrollable.native */ 97265)); var _m_scrollable3 = __webpack_require__( /*! ./m_scrollable.simulated */ 74638); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } function _extends() { return _extends = Object.assign ? Object.assign.bind() : function(n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) { ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]) } } return n }, _extends.apply(null, arguments) } const SCROLLABLE = "dxScrollable"; class Scrollable extends _dom_component.default { _getDefaultOptions() { return _extends({}, super._getDefaultOptions(), { disabled: false, onScroll: null, direction: "vertical", showScrollbar: "onScroll", useNative: true, bounceEnabled: true, scrollByContent: true, scrollByThumb: false, onUpdated: null, onStart: null, onEnd: null, onBounce: null, useSimulatedScrollbar: false, useKeyboard: true, inertiaEnabled: true, updateManually: false, _onVisibilityChanged: _common.noop }) } _defaultOptionsRules() { return super._defaultOptionsRules().concat((0, _m_scrollable.deviceDependentOptions)(), [{ device: () => _m_support.default.nativeScrolling && "android" === _devices.default.real().platform && !_browser.default.mozilla, options: { useSimulatedScrollbar: true } }]) } _initOptions(options) { super._initOptions(options); if (!("useSimulatedScrollbar" in options)) { this._setUseSimulatedScrollbar() } } _setUseSimulatedScrollbar() { if (!this.initialOption("useSimulatedScrollbar")) { this.option("useSimulatedScrollbar", !this.option("useNative")) } } _init() { super._init(); this._initScrollableMarkup(); this._locked = false } _visibilityChanged(visible) { if (visible) { this.update(); this._updateRtlPosition(); this._savedScrollOffset && this.scrollTo(this._savedScrollOffset); delete this._savedScrollOffset; const { _onVisibilityChanged: onVisibilityChanged } = this.option(); null === onVisibilityChanged || void 0 === onVisibilityChanged || onVisibilityChanged(this) } else { this._savedScrollOffset = this.scrollOffset() } } _initScrollableMarkup() { const $element = this.$element().addClass("dx-scrollable"); const $container = (0, _renderer.default)("<div>").addClass("dx-scrollable-container"); const $wrapper = (0, _renderer.default)("<div>").addClass("dx-scrollable-wrapper"); const $content = (0, _renderer.default)("<div>").addClass("dx-scrollable-content"); this._$container = $container; this._$wrapper = $wrapper; this._$content = $content; $content.append($element.contents()).appendTo($container); $container.appendTo($wrapper); $wrapper.appendTo($element) } _dimensionChanged() { this.update(); this._updateRtlPosition() } _initMarkup() { super._initMarkup(); this._renderDirection() } _render() { this._renderStrategy(); this._attachEventHandlers(); this._renderDisabledState(); this._createActions(); this.update(); super._render(); this._updateRtlPosition(true) } _updateRtlPosition(needInitializeRtlConfig) { this._strategy.updateRtlPosition(needInitializeRtlConfig) } _getMaxOffset() { const { scrollWidth: scrollWidth, clientWidth: clientWidth, scrollHeight: scrollHeight, clientHeight: clientHeight } = (0, _renderer.default)(this.container()).get(0); return { left: scrollWidth - clientWidth, top: scrollHeight - clientHeight } } _attachEventHandlers() { const strategy = this._strategy; const initEventData = { getDirection: strategy.getDirection.bind(strategy), validate: this._validate.bind(this), isNative: this.option("useNative"), scrollTarget: this._$container }; _events_engine.default.off(this._$wrapper, `.${SCROLLABLE}`); _events_engine.default.on(this._$wrapper, (0, _index.addNamespace)(_emitterGesture.default.init, SCROLLABLE), initEventData, this._initHandler.bind(this)); _events_engine.default.on(this._$wrapper, (0, _index.addNamespace)(_emitterGesture.default.start, SCROLLABLE), strategy.handleStart.bind(strategy)); _events_engine.default.on(this._$wrapper, (0, _index.addNamespace)(_emitterGesture.default.move, SCROLLABLE), strategy.handleMove.bind(strategy)); _events_engine.default.on(this._$wrapper, (0, _index.addNamespace)(_emitterGesture.default.end, SCROLLABLE), strategy.handleEnd.bind(strategy)); _events_engine.default.on(this._$wrapper, (0, _index.addNamespace)(_emitterGesture.default.cancel, SCROLLABLE), strategy.handleCancel.bind(strategy)); _events_engine.default.on(this._$wrapper, (0, _index.addNamespace)(_emitterGesture.default.stop, SCROLLABLE), strategy.handleStop.bind(strategy)); _events_engine.default.off(this._$container, `.${SCROLLABLE}`); _events_engine.default.on(this._$container, (0, _index.addNamespace)("scroll", SCROLLABLE), strategy.handleScroll.bind(strategy)) } _validate(e) { if (this._isLocked()) { return false } this._updateIfNeed(); return this._moveIsAllowed(e) } _moveIsAllowed(e) { return this._strategy.validate(e) } handleMove(e) { this._strategy.handleMove(e) } _prepareDirections(value) { this._strategy._prepareDirections(value) } _initHandler() { const strategy = this._strategy; strategy.handleInit.apply(strategy, arguments) } _renderDisabledState() { const { disabled: disabled } = this.option(); this.$element().toggleClass("dx-scrollable-disabled", disabled); if (this.option("disabled")) { this._lock() } else { this._unlock() } } _renderDirection() { const { direction: direction } = this.option(); this.$element().removeClass("dx-scrollable-horizontal").removeClass("dx-scrollable-vertical").removeClass("dx-scrollable-both").addClass(`dx-scrollable-${direction}`) } _renderStrategy() { this._createStrategy(); this._strategy.render(); this.$element().data("dxScrollableStrategy", this._strategy) } _createStrategy() { this._strategy = this.option("useNative") ? new _m_scrollable2.default(this) : new _m_scrollable3.SimulatedStrategy(this) } _createActions() { var _this$_strategy; null === (_this$_strategy = this._strategy) || void 0 === _this$_strategy || _this$_strategy.createActions() } _clean() { var _this$_strategy2; null === (_this$_strategy2 = this._strategy) || void 0 === _this$_strategy2 || _this$_strategy2.dispose() } _optionChanged(args) { var _this$_strategy3; switch (args.name) { case "onStart": case "onEnd": case "onUpdated": case "onScroll": case "onBounce": this._createActions(); break; case "direction": this._resetInactiveDirection(); this._invalidate(); break; case "useNative": this._setUseSimulatedScrollbar(); this._invalidate(); break; case "inertiaEnabled": case "scrollByThumb": case "bounceEnabled": case "useKeyboard": case "showScrollbar": case "useSimulatedScrollbar": this._invalidate(); break; case "disabled": this._renderDisabledState(); null === (_this$_strategy3 = this._strategy) || void 0 === _this$_strategy3 || _this$_strategy3.disabledChanged(); break; case "updateManually": case "scrollByContent": case "_onVisibilityChanged": break; case "width": super._optionChanged(args); this._updateRtlPosition(); break; default: super._optionChanged(args) } } _resetInactiveDirection() { const inactiveProp = this._getInactiveProp(); if (!inactiveProp || !(0, _window.hasWindow)()) { return } const scrollOffset = this.scrollOffset(); scrollOffset[inactiveProp] = 0; this.scrollTo(scrollOffset) } _getInactiveProp() { const { direction: direction } = this.option(); if ("vertical" === direction) { return "left" } if ("horizontal" === direction) { return "top" } } _location() { return this._strategy.location() } _normalizeLocation(location) { if ((0, _type.isPlainObject)(location)) { const left = (0, _common.ensureDefined)(location.left, location.x); const top = (0, _common.ensureDefined)(location.top, location.y); return { left: (0, _type.isDefined)(left) ? -left : void 0, top: (0, _type.isDefined)(top) ? -top : void 0 } } const { direction: direction } = this.option(); return { left: "vertical" !== direction ? -location : void 0, top: "horizontal" !== direction ? -location : void 0 } } _isLocked() { return this._locked } _lock() { this._locked = true } _unlock() { if (!this.option("disabled")) { this._locked = false } } _isDirection(direction) { const { direction: current } = this.option(); if ("vertical" === direction) { return "horizontal" !== current } if ("horizontal" === direction) { return "vertical" !== current } return current === direction } _updateAllowedDirection() { const allowedDirections = this._strategy._allowedDirections(); if (this._isDirection("both") && allowedDirections.vertical && allowedDirections.horizontal) { this._allowedDirectionValue = "both" } else if (this._isDirection("horizontal") && allowedDirections.horizontal) { this._allowedDirectionValue = "horizontal" } else if (this._isDirection("vertical") && allowedDirections.vertical) { this._allowedDirectionValue = "vertical" } else { this._allowedDirectionValue = null } } _allowedDirection() { return this._allowedDirectionValue } $content() { return this._$content } content() { return (0, _element.getPublicElement)(this._$content) } container() { return (0, _element.getPublicElement)(this._$container) } scrollOffset() { return this._strategy._getScrollOffset() } _isRtlNativeStrategy() { const { useNative: useNative, rtlEnabled: rtlEnabled } = this.option(); return useNative && rtlEnabled } scrollTop() { return this.scrollOffset().top } scrollLeft() { return this.scrollOffset().left } clientHeight() { return (0, _size.getHeight)(this._$container) } scrollHeight() { return (0, _size.getOuterHeight)(this.$content()) } clientWidth() { return (0, _size.getWidth)(this._$container) } scrollWidth() { return (0, _size.getOuterWidth)(this.$content()) } update() { if (!this._strategy) { return } return (0, _deferred.when)(this._strategy.update()).done((() => { this._updateAllowedDirection() })) } scrollBy(distance) { distance = this._normalizeLocation(distance); if (!distance.top && !distance.left) { return } this._updateIfNeed(); this._strategy.scrollBy(distance) } scrollTo(targetLocation) { if (!(0, _window.hasWindow)()) { return } targetLocation = this._normalizeLocation(targetLocation); this._updateIfNeed(); let location = this._location(); const { useNative: useNative } = this.option(); if (!useNative) { const strategy = this._strategy; targetLocation = strategy._applyScaleRatio(targetLocation); location = strategy._applyScaleRatio(location) } if (this._isRtlNativeStrategy()) { location.left -= this._getMaxOffset().left } const distance = this._normalizeLocation({ left: location.left - (0, _common.ensureDefined)(targetLocation.left, location.left), top: location.top - (0, _common.ensureDefined)(targetLocation.top, location.top) }); if (!distance.top && !distance.left) { return } this._strategy.scrollBy(distance) } scrollToElement(element, offset) { const $element = (0, _renderer.default)(element); const elementInsideContent = this.$content().find(element).length; const elementIsInsideContent = $element.parents(".dx-scrollable").length - $element.parents(".dx-scrollable-content").length === 0; if (!elementInsideContent || !elementIsInsideContent) { return } const scrollPosition = { top: 0, left: 0 }; const { direction: direction } = this.option(); if ("vertical" !== direction) { scrollPosition.left = this.getScrollElementPosition($element, "horizontal", offset) } if ("horizontal" !== direction) { scrollPosition.top = this.getScrollElementPosition($element, "vertical", offset) } this.scrollTo(scrollPosition) } getScrollElementPosition($element, direction, offset) { const scrollOffset = this.scrollOffset(); return (0, _get_element_location_internal.getElementLocationInternal)($element.get(0), direction, (0, _renderer.default)(this.container()).get(0), scrollOffset, offset) } _updateIfNeed() { if (!this.option("updateManually")) { this.update() } } _useTemplates() { return false } isRenovated() { return !!Scrollable.IS_RENOVATED_WIDGET } }(0, _component_registrator.default)(SCROLLABLE, Scrollable); exports.default = Scrollable }, 97265: /*!**********************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/ui/scroll_view/m_scrollable.native.js ***! \**********************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _events_engine = _interopRequireDefault(__webpack_require__( /*! ../../../common/core/events/core/events_engine */ 92774)); var _index = __webpack_require__( /*! ../../../common/core/events/utils/index */ 98834); var _class = _interopRequireDefault(__webpack_require__( /*! ../../../core/class */ 55620)); var _devices = _interopRequireDefault(__webpack_require__( /*! ../../../core/devices */ 65951)); var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../../core/renderer */ 64553)); var _iterator = __webpack_require__( /*! ../../../core/utils/iterator */ 21274); var _size = __webpack_require__( /*! ../../../core/utils/size */ 57653); var _m_scrollbar = _interopRequireDefault(__webpack_require__( /*! ./m_scrollbar */ 86853)); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } class NativeStrategy extends(_class.default.inherit({})) { ctor(scrollable) { this._init(scrollable) } _init(scrollable) { this._component = scrollable; this._$element = scrollable.$element(); this._$container = (0, _renderer.default)(scrollable.container()); this._$content = scrollable.$content(); const { direction: direction, useSimulatedScrollbar: useSimulatedScrollbar } = scrollable.option(); this._direction = direction; this._useSimulatedScrollbar = useSimulatedScrollbar; this.option = scrollable.option.bind(scrollable); this._createActionByOption = scrollable._createActionByOption.bind(scrollable); this._isLocked = scrollable._isLocked.bind(scrollable); this._isDirection = scrollable._isDirection.bind(scrollable); this._allowedDirection = scrollable._allowedDirection.bind(scrollable); this._getMaxOffset = scrollable._getMaxOffset.bind(scrollable); this._isRtlNativeStrategy = scrollable._isRtlNativeStrategy.bind(scrollable) } render() { const device = _devices.default.real(); const deviceType = device.platform; this._$element.addClass("dx-scrollable-native").addClass(`dx-scrollable-native-${deviceType}`).toggleClass("dx-scrollable-scrollbars-hidden", !this._isScrollbarVisible()); if (this._isScrollbarVisible() && this._useSimulatedScrollbar) { this._renderScrollbars() } } updateRtlPosition(isFirstRender) { if (isFirstRender && this.option("rtlEnabled")) { if (this._isScrollbarVisible() && this._useSimulatedScrollbar) { this._moveScrollbars() } } } _renderScrollbars() { this._scrollbars = {}; this._hideScrollbarTimeout = 0; this._$element.addClass("dx-scrollable-scrollbar-simulated"); this._renderScrollbar("vertical"); this._renderScrollbar("horizontal") } _renderScrollbar(direction) { if (!this._isDirection(direction)) { return } this._scrollbars[direction] = new _m_scrollbar.default((0, _renderer.default)("<div>").appendTo(this._$element), { direction: direction, expandable: this._component.option("scrollByThumb") }) } handleInit(e) {} handleStart() {} handleMove(e) { if (this._isLocked()) { e.cancel = true; return } if (this._allowedDirection()) { e.originalEvent.isScrollingEvent = true } } handleEnd() {} handleCancel() {} handleStop() {} _eachScrollbar(callback) { callback = callback.bind(this); (0, _iterator.each)(this._scrollbars || {}, ((direction, scrollbar) => { callback(scrollbar, direction) })) } createActions() { this._scrollAction = this._createActionByOption("onScroll"); this._updateAction = this._createActionByOption("onUpdated") } _createActionArgs() { const { left: left, top: top } = this.location(); return { event: this._eventForUserAction, scrollOffset: this._getScrollOffset(), reachedLeft: this._isRtlNativeStrategy() ? this._isReachedRight(-left) : this._isReachedLeft(left), reachedRight: this._isRtlNativeStrategy() ? this._isReachedLeft(-Math.abs(left)) : this._isReachedRight(left), reachedTop: this._isDirection("vertical") ? Math.round(top) >= 0 : void 0, reachedBottom: this._isDirection("vertical") ? Math.round(Math.abs(top) - this._getMaxOffset().top) >= 0 : void 0 } } _getScrollOffset() { const { top: top, left: left } = this.location(); return { top: -top, left: this._normalizeOffsetLeft(-left) } } _normalizeOffsetLeft(scrollLeft) { if (this._isRtlNativeStrategy()) { return this._getMaxOffset().left + scrollLeft } return scrollLeft } _isReachedLeft(left) { return this._isDirection("horizontal") ? Math.round(left) >= 0 : void 0 } _isReachedRight(left) { return this._isDirection("horizontal") ? Math.round(Math.abs(left) - this._getMaxOffset().left) >= 0 : void 0 } _isScrollbarVisible() { const { showScrollbar: showScrollbar } = this.option(); return "never" !== showScrollbar && false !== showScrollbar } handleScroll(e) { var _this$_scrollAction; this._eventForUserAction = e; this._moveScrollbars(); null === (_this$_scrollAction = this._scrollAction) || void 0 === _this$_scrollAction || _this$_scrollAction.call(this, this._createActionArgs()) } _moveScrollbars() { const { top: top, left: left } = this._getScrollOffset(); this._eachScrollbar((scrollbar => { scrollbar.moveTo({ top: -top, left: -left }); scrollbar.option("visible", true) })); this._hideScrollbars() } _hideScrollbars() { clearTimeout(this._hideScrollbarTimeout); this._hideScrollbarTimeout = setTimeout((() => { this._eachScrollbar((scrollbar => { scrollbar.option("visible", false) })) }), 500) } location() { return { left: -this._$container.scrollLeft(), top: -this._$container.scrollTop() } } disabledChanged() {} update() { this._update(); this._updateAction(this._createActionArgs()) } _update() { this._updateDimensions(); this._updateScrollbars() } _updateDimensions() { this._containerSize = { height: (0, _size.getHeight)(this._$container), width: (0, _size.getWidth)(this._$container) }; this._componentContentSize = { height: (0, _size.getHeight)(this._component.$content()), width: (0, _size.getWidth)(this._component.$content()) }; this._contentSize = { height: (0, _size.getHeight)(this._$content), width: (0, _size.getWidth)(this._$content) } } _updateScrollbars() { this._eachScrollbar((function(scrollbar, direction) { const dimension = "vertical" === direction ? "height" : "width"; scrollbar.option({ containerSize: this._containerSize[dimension], contentSize: this._componentContentSize[dimension] }); scrollbar.update() })) } _allowedDirections() { return { vertical: this._isDirection("vertical") && this._contentSize.height > this._containerSize.height, horizontal: this._isDirection("horizontal") && this._contentSize.width > this._containerSize.width } } dispose() { const { className: className } = this._$element.get(0); const scrollableNativeRegexp = new RegExp("dx-scrollable-native\\S*", "g"); if (scrollableNativeRegexp.test(className)) { this._$element.removeClass(className.match(scrollableNativeRegexp).join(" ")) } _events_engine.default.off(this._$element, ".dxNativeScrollable"); _events_engine.default.off(this._$container, ".dxNativeScrollable"); this._removeScrollbars(); clearTimeout(this._hideScrollbarTimeout) } _removeScrollbars() { this._eachScrollbar((scrollbar => { scrollbar.$element().remove() })) } scrollBy(distance) { const location = this.location(); this._$container.scrollTop(Math.round(-location.top - distance.top)); this._$container.scrollLeft(Math.round(-location.left - distance.left)) } validate(e) { const { disabled: disabled } = this.option(); if (disabled) { return false } if ((0, _index.isDxMouseWheelEvent)(e) && this._isScrolledInMaxDirection(e)) { return false } return !!this._allowedDirection() } _isScrolledInMaxDirection(e) { const container = this._$container.get(0); let result; if (e.delta > 0) { result = e.shiftKey ? !container.scrollLeft : !container.scrollTop } else if (e.shiftKey) { result = container.scrollLeft >= this._getMaxOffset().left } else { result = container.scrollTop >= this._getMaxOffset().top } return result } getDirection() { return this._allowedDirection() } } exports.default = NativeStrategy }, 74638: /*!*************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/ui/scroll_view/m_scrollable.simulated.js ***! \*************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.SimulatedStrategy = exports.Scroller = void 0; var _translator = __webpack_require__( /*! ../../../common/core/animation/translator */ 88603); var _events_engine = _interopRequireDefault(__webpack_require__( /*! ../../../common/core/events/core/events_engine */ 92774)); var _index = __webpack_require__( /*! ../../../common/core/events/utils/index */ 98834); var _class = _interopRequireDefault(__webpack_require__( /*! ../../../core/class */ 55620)); var _dom_adapter = _interopRequireDefault(__webpack_require__( /*! ../../../core/dom_adapter */ 64960)); var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../../core/renderer */ 64553)); var _common = __webpack_require__( /*! ../../../core/utils/common */ 17781); var _deferred = __webpack_require__( /*! ../../../core/utils/deferred */ 87739); var _extend = __webpack_require__( /*! ../../../core/utils/extend */ 52576); var _inflector = __webpack_require__( /*! ../../../core/utils/inflector */ 53124); var _iterator = __webpack_require__( /*! ../../../core/utils/iterator */ 21274); var _position = __webpack_require__( /*! ../../../core/utils/position */ 41639); var _size = __webpack_require__( /*! ../../../core/utils/size */ 57653); var _type = __webpack_require__( /*! ../../../core/utils/type */ 11528); var _window = __webpack_require__( /*! ../../../core/utils/window */ 3104); var _m_animator = _interopRequireDefault(__webpack_require__( /*! ./m_animator */ 99762)); var _m_scrollbar = _interopRequireDefault(__webpack_require__( /*! ./m_scrollbar */ 86853)); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } const HORIZONTAL = "horizontal"; const FRAME_DURATION = Math.round(1e3 / 60); const BOUNCE_FRAMES = 400 / FRAME_DURATION; const BOUNCE_ACCELERATION_SUM = (1 - .92 ** BOUNCE_FRAMES) / (1 - .92); const KEY_CODES_PAGE_UP = "pageUp", KEY_CODES_PAGE_DOWN = "pageDown", KEY_CODES_END = "end", KEY_CODES_HOME = "home", KEY_CODES_LEFT = "leftArrow", KEY_CODES_UP = "upArrow", KEY_CODES_RIGHT = "rightArrow", KEY_CODES_DOWN = "downArrow", KEY_CODES_TAB = "tab"; class InertiaAnimator extends _m_animator.default { constructor() { super(...arguments); this.VELOCITY_LIMIT = 1 } ctor(scroller) { super.ctor(); this.scroller = scroller } _isFinished() { return Math.abs(this.scroller._velocity) <= this.VELOCITY_LIMIT } _step() { this.scroller._scrollStep(this.scroller._velocity); this.scroller._velocity *= this._acceleration() } _acceleration() { return this.scroller._inBounds() ? .92 : .5 } _complete() { this.scroller._scrollComplete() } } class BounceAnimator extends InertiaAnimator { constructor() { super(...arguments); this.VELOCITY_LIMIT = .2 } _isFinished() { return this.scroller._crossBoundOnNextStep() || super._isFinished() } _acceleration() { return .92 } _complete() { this.scroller._move(this.scroller._bounceLocation); super._complete() } } class Scroller extends(_class.default.inherit({})) { ctor(options) { this._initOptions(options); this._initAnimators(); this._initScrollbar() } _initOptions(options) { this._location = 0; this._topReached = false; this._bottomReached = false; this._axis = options.direction === HORIZONTAL ? "x" : "y"; this._prop = options.direction === HORIZONTAL ? "left" : "top"; this._dimension = options.direction === HORIZONTAL ? "width" : "height"; this._scrollProp = options.direction === HORIZONTAL ? "scrollLeft" : "scrollTop"; (0, _iterator.each)(options, ((optionName, optionValue) => { this[`_${optionName}`] = optionValue })) } _initAnimators() { this._inertiaAnimator = new InertiaAnimator(this); this._bounceAnimator = new BounceAnimator(this) } _initScrollbar() { this._scrollbar = new _m_scrollbar.default((0, _renderer.default)("<div>").appendTo(this._$container), { direction: this._direction, visible: this._scrollByThumb, visibilityMode: this._visibilityModeNormalize(this._scrollbarVisible), expandable: this._scrollByThumb }); this._$scrollbar = this._scrollbar.$element() } _visibilityModeNormalize(mode) { return true === mode ? "onScroll" : false === mode ? "never" : mode } _scrollStep(delta) { const prevLocation = this._location; this._location += delta; this._suppressBounce(); this._move(); if (Math.abs(prevLocation - this._location) < 1) { return } _events_engine.default.triggerHandler(this._$container, { type: "scroll" }) } _suppressBounce() { if (this._bounceEnabled || this._inBounds(this._location)) { return } this._velocity = 0; this._location = this._boundLocation() } _boundLocation(location) { location = void 0 !== location ? location : this._location; return Math.max(Math.min(location, this._maxOffset), this._minOffset) } _move(location) { this._location = void 0 !== location ? location * this._getScaleRatio() : this._location; this._moveContent(); this._moveScrollbar() } _moveContent() { const location = this._location; this._$container[this._scrollProp](-location / this._getScaleRatio()); this._moveContentByTranslator(location) } _getScaleRatio() { if ((0, _window.hasWindow)() && !this._scaleRatio) { const element = this._$element.get(0); const realDimension = this._getRealDimension(element, this._dimension); const baseDimension = this._getBaseDimension(element, this._dimension); this._scaleRatio = Math.round(realDimension / baseDimension * 100) / 100 } return this._scaleRatio || 1 } _getRealDimension(element, dimension) { return Math.round((0, _position.getBoundingRect)(element)[dimension]) } _getBaseDimension(element, dimension) { const dimensionName = `offset${(0,_inflector.titleize)(dimension)}`; return element[dimensionName] } _moveContentByTranslator(location) { let translateOffset; const minOffset = -this._maxScrollPropValue; if (location > 0) { translateOffset = location } if (location <= minOffset) { translateOffset = location - minOffset } if (this._translateOffset === translateOffset) { return } const targetLocation = {}; targetLocation[this._prop] = translateOffset; this._translateOffset = translateOffset; if (!translateOffset) { (0, _translator.resetPosition)(this._$content); return }(0, _translator.move)(this._$content, targetLocation) } _moveScrollbar() { this._scrollbar.moveTo(this._location) } _scrollComplete() { if (this._inBounds()) { this._hideScrollbar(); if (this._completeDeferred) { this._completeDeferred.resolve() } } this._scrollToBounds() } _scrollToBounds() { var _this$_bounceAction; if (this._inBounds()) { return } null === (_this$_bounceAction = this._bounceAction) || void 0 === _this$_bounceAction || _this$_bounceAction.call(this); this._setupBounce(); this._bounceAnimator.start() } _setupBounce() { const boundLocation = this._bounceLocation = this._boundLocation(); const bounceDistance = boundLocation - this._location; this._velocity = bounceDistance / BOUNCE_ACCELERATION_SUM } _inBounds(location) { location = void 0 !== location ? location : this._location; return this._boundLocation(location) === location } _crossBoundOnNextStep() { const location = this._location; const nextLocation = location + this._velocity; return location < this._minOffset && nextLocation >= this._minOffset || location > this._maxOffset && nextLocation <= this._maxOffset } _initHandler(e) { this._stopScrolling(); this._prepareThumbScrolling(e) } _stopScrolling() { (0, _common.deferRenderer)((() => { this._hideScrollbar(); this._inertiaAnimator.stop(); this._bounceAnimator.stop() }))() } _prepareThumbScrolling(e) { if ((0, _index.isDxMouseWheelEvent)(e.originalEvent)) { return } const $target = (0, _renderer.default)(e.originalEvent.target); const scrollbarClicked = this._isScrollbar($target); if (scrollbarClicked) { this._moveToMouseLocation(e) } this._thumbScrolling = scrollbarClicked || this._isThumb($target); this._crossThumbScrolling = !this._thumbScrolling && this._isAnyThumbScrolling($target); if (this._thumbScrolling) { this._scrollbar.feedbackOn() } } _isThumbScrollingHandler($target) { return this._isThumb($target) } _moveToMouseLocation(e) { const mouseLocation = e[`page${this._axis.toUpperCase()}`] - this._$element.offset()[this._prop]; const location = this._location + mouseLocation / this._containerToContentRatio() - (0, _size.getHeight)(this._$container) / 2; this._scrollStep(-Math.round(location)) } _startHandler() { this._showScrollbar() } _moveHandler(delta) { if (this._crossThumbScrolling) { return } if (this._thumbScrolling) { delta[this._axis] = -Math.round(delta[this._axis] / this._containerToContentRatio()) } this._scrollBy(delta) } _scrollBy(delta) { delta = delta[this._axis]; if (!this._inBounds()) { delta *= .5 } this._scrollStep(delta) } _scrollByHandler(delta) { if (!delta.x && !delta.y) { return } this._scrollBy(delta); this._scrollComplete() } _containerToContentRatio() { return this._scrollbar.containerToContentRatio() } _endHandler(velocity) { this._completeDeferred = (0, _deferred.Deferred)(); this._velocity = velocity[this._axis]; this._inertiaHandler(); this._resetThumbScrolling(); return this._completeDeferred.promise() } _inertiaHandler() { this._suppressInertia(); this._inertiaAnimator.start() } _suppressInertia() { if (!this._inertiaEnabled || this._thumbScrolling) { this._velocity = 0 } } _resetThumbScrolling() { this._thumbScrolling = false; this._crossThumbScrolling = false } _stopHandler() { if (this._thumbScrolling) { this._scrollComplete() } this._resetThumbScrolling(); this._scrollToBounds() } _disposeHandler() { this._stopScrolling(); this._$scrollbar.remove() } _updateHandler() { this._update(); this._moveToBounds() } _update() { this._stopScrolling(); return (0, _common.deferUpdate)((() => { this._resetScaleRatio(); this._updateLocation(); this._updateBounds(); this._updateScrollbar(); (0, _common.deferRender)((() => { this._moveScrollbar(); this._scrollbar.update() })) })) } _resetScaleRatio() { this._scaleRatio = null } _updateLocation() { this._location = ((0, _translator.locate)(this._$content)[this._prop] - this._$container[this._scrollProp]()) * this._getScaleRatio() } _updateBounds() { this._maxOffset = this._getMaxOffset(); this._minOffset = this._getMinOffset() } _getMaxOffset() { return 0 } _getMinOffset() { this._maxScrollPropValue = Math.max(this._contentSize() - this._containerSize(), 0); return -this._maxScrollPropValue } _updateScrollbar() { (0, _common.deferUpdater)((() => { const containerSize = this._containerSize(); const contentSize = this._contentSize(); const baseContainerSize = this._getBaseDimension(this._$container.get(0), this._dimension); const baseContentSize = this._getBaseDimension(this._$content.get(0), this._dimension); (0, _common.deferRender)((() => { this._scrollbar.option({ containerSize: containerSize, contentSize: contentSize, baseContainerSize: baseContainerSize, baseContentSize: baseContentSize, scaleRatio: this._getScaleRatio() }) })) }))() } _moveToBounds() { (0, _common.deferRenderer)((0, _common.deferUpdater)((0, _common.deferRenderer)((() => { const location = this._boundLocation(); const locationChanged = location !== this._location; this._location = location; this._move(); if (locationChanged) { var _this$_scrollAction; null === (_this$_scrollAction = this._scrollAction) || void 0 === _this$_scrollAction || _this$_scrollAction.call(this) } }))))() } _createActionsHandler(actions) { this._scrollAction = actions.scroll; this._bounceAction = actions.bounce } _showScrollbar() { this._scrollbar.option("visible", true) } _hideScrollbar() { this._scrollbar.option("visible", false) } _containerSize() { return this._getRealDimension(this._$container.get(0), this._dimension) } _contentSize() { const isOverflowHidden = "hidden" === this._$content.css(`overflow${this._axis.toUpperCase()}`); let contentSize = this._getRealDimension(this._$content.get(0), this._dimension); if (!isOverflowHidden) { const containerScrollSize = this._$content[0][`scroll${(0,_inflector.titleize)(this._dimension)}`] * this._getScaleRatio(); contentSize = Math.max(containerScrollSize, contentSize) } return contentSize } _validateEvent(e) { const $target = (0, _renderer.default)(e.originalEvent.target); return this._isThumb($target) || this._isScrollbar($target) } _isThumb($element) { return this._scrollByThumb && this._scrollbar.isThumb($element) } _isScrollbar($element) { return this._scrollByThumb && (null === $element || void 0 === $element ? void 0 : $element.is(this._$scrollbar)) } _reachedMin() { return Math.round(this._location - this._minOffset) <= 0 } _reachedMax() { return Math.round(this._location - this._maxOffset) >= 0 } _cursorEnterHandler() { this._resetScaleRatio(); this._updateScrollbar(); this._scrollbar.cursorEnter() } _cursorLeaveHandler() { this._scrollbar.cursorLeave() } dispose() {} } exports.Scroller = Scroller; let hoveredScrollable; let activeScrollable; class SimulatedStrategy extends(_class.default.inherit({})) { ctor(scrollable) { this._init(scrollable) } _init(scrollable) { this._component = scrollable; this._$element = scrollable.$element(); this._$container = (0, _renderer.default)(scrollable.container()); this._$wrapper = scrollable._$wrapper; this._$content = scrollable.$content(); this.option = scrollable.option.bind(scrollable); this._createActionByOption = scrollable._createActionByOption.bind(scrollable); this._isLocked = scrollable._isLocked.bind(scrollable); this._isDirection = scrollable._isDirection.bind(scrollable); this._allowedDirection = scrollable._allowedDirection.bind(scrollable); this._getMaxOffset = scrollable._getMaxOffset.bind(scrollable) } render() { this._$element.addClass("dx-scrollable-simulated"); this._createScrollers(); if (this.option("useKeyboard")) { this._$container.prop("tabIndex", 0) } this._attachKeyboardHandler(); this._attachCursorHandlers() } _createScrollers() { this._scrollers = {}; if (this._isDirection(HORIZONTAL)) { this._createScroller(HORIZONTAL) } if (this._isDirection("vertical")) { this._createScroller("vertical") } this._$element.toggleClass("dx-scrollable-scrollbars-alwaysvisible", "always" === this.option("showScrollbar")) } _createScroller(direction) { this._scrollers[direction] = new Scroller(this._scrollerOptions(direction)) } _scrollerOptions(direction) { return { direction: direction, $content: this._$content, $container: this._$container, $wrapper: this._$wrapper, $element: this._$element, scrollByThumb: this.option("scrollByThumb"), scrollbarVisible: this.option("showScrollbar"), bounceEnabled: this.option("bounceEnabled"), inertiaEnabled: this.option("inertiaEnabled"), isAnyThumbScrolling: this._isAnyThumbScrolling.bind(this) } } _applyScaleRatio(targetLocation) { for (const direction in this._scrollers) { const prop = this._getPropByDirection(direction); if ((0, _type.isDefined)(targetLocation[prop])) { const scroller = this._scrollers[direction]; targetLocation[prop] *= scroller._getScaleRatio() } } return targetLocation } _isAnyThumbScrolling($target) { let result = false; this._eventHandler("isThumbScrolling", $target).done(((isThumbScrollingVertical, isThumbScrollingHorizontal) => { result = isThumbScrollingVertical || isThumbScrollingHorizontal })); return result } handleInit(e) { this._suppressDirections(e); this._eventForUserAction = e; this._eventHandler("init", e) } _suppressDirections(e) { if ((0, _index.isDxMouseWheelEvent)(e.originalEvent)) { this._prepareDirections(true); return } this._prepareDirections(); this._eachScroller((function(scroller, direction) { const $target = (0, _renderer.default)(e.originalEvent.target); const isValid = scroller._validateEvent(e) || this.option("scrollByContent") && this._isContent($target); this._validDirections[direction] = isValid })) } _isContent($element) { return !!$element.closest(this._$element).length } _prepareDirections(value) { value = value || false; this._validDirections = {}; this._validDirections[HORIZONTAL] = value; this._validDirections.vertical = value } _eachScroller(callback) { callback = callback.bind(this); (0, _iterator.each)(this._scrollers, ((direction, scroller) => { callback(scroller, direction) })) } handleStart(e) { this._eventForUserAction = e; this._eventHandler("start").done(this._startAction) } _saveActive() { activeScrollable = this } _resetActive() { if (activeScrollable === this) { activeScrollable = null } } handleMove(e) { var _e$preventDefault; if (this._isLocked()) { e.cancel = true; this._resetActive(); return } this._saveActive(); null === (_e$preventDefault = e.preventDefault) || void 0 === _e$preventDefault || _e$preventDefault.call(e); this._adjustDistance(e, e.delta); this._eventForUserAction = e; this._eventHandler("move", e.delta) } _adjustDistance(e, distance) { distance.x *= this._validDirections[HORIZONTAL]; distance.y *= this._validDirections.vertical; const devicePixelRatio = this._tryGetDevicePixelRatio(); if (devicePixelRatio && (0, _index.isDxMouseWheelEvent)(e.originalEvent)) { distance.x = Math.round(distance.x / devicePixelRatio * 100) / 100; distance.y = Math.round(distance.y / devicePixelRatio * 100) / 100 } } _tryGetDevicePixelRatio() { if ((0, _window.hasWindow)()) { return (0, _window.getWindow)().devicePixelRatio } } handleEnd(e) { var _e$originalEvent; this._resetActive(); this._refreshCursorState(null === (_e$originalEvent = e.originalEvent) || void 0 === _e$originalEvent ? void 0 : _e$originalEvent.target); this._adjustDistance(e, e.velocity); this._eventForUserAction = e; return this._eventHandler("end", e.velocity).done(this._endAction) } handleCancel(e) { this._resetActive(); this._eventForUserAction = e; return this._eventHandler("end", { x: 0, y: 0 }) } handleStop() { this._resetActive(); this._eventHandler("stop") } handleScroll() { var _this$_scrollAction2; this._updateRtlConfig(); null === (_this$_scrollAction2 = this._scrollAction) || void 0 === _this$_scrollAction2 || _this$_scrollAction2.call(this) } _attachKeyboardHandler() { _events_engine.default.off(this._$element, ".dxSimulatedScrollableKeyboard"); if (!this.option("disabled") && this.option("useKeyboard")) { _events_engine.default.on(this._$element, (0, _index.addNamespace)("keydown", "dxSimulatedScrollableKeyboard"), this._keyDownHandler.bind(this)) } } _keyDownHandler(e) { clearTimeout(this._updateHandlerTimeout); this._updateHandlerTimeout = setTimeout((() => { if ((0, _index.normalizeKeyName)(e) === KEY_CODES_TAB) { this._eachScroller((scroller => { scroller._updateHandler() })) } })); if (!this._$container.is(_dom_adapter.default.getActiveElement(this._$container.get(0)))) { return } let handled = true; switch ((0, _index.normalizeKeyName)(e)) { case KEY_CODES_DOWN: this._scrollByLine({ y: 1 }); break; case KEY_CODES_UP: this._scrollByLine({ y: -1 }); break; case KEY_CODES_RIGHT: this._scrollByLine({ x: 1 }); break; case KEY_CODES_LEFT: this._scrollByLine({ x: -1 }); break; case KEY_CODES_PAGE_DOWN: this._scrollByPage(1); break; case KEY_CODES_PAGE_UP: this._scrollByPage(-1); break; case KEY_CODES_HOME: this._scrollToHome(); break; case KEY_CODES_END: this._scrollToEnd(); break; default: handled = false } if (handled) { e.stopPropagation(); e.preventDefault() } } _scrollByLine(lines) { const devicePixelRatio = this._tryGetDevicePixelRatio(); let scrollOffset = 40; if (devicePixelRatio) { scrollOffset = Math.abs(scrollOffset / devicePixelRatio * 100) / 100 } this.scrollBy({ top: (lines.y || 0) * -scrollOffset, left: (lines.x || 0) * -scrollOffset }) } _scrollByPage(page) { const prop = this._wheelProp(); const dimension = this._dimensionByProp(prop); const distance = {}; const getter = "width" === dimension ? _size.getWidth : _size.getHeight; distance[prop] = page * -getter(this._$container); this.scrollBy(distance) } _dimensionByProp(prop) { return "left" === prop ? "width" : "height" } _getPropByDirection(direction) { return direction === HORIZONTAL ? "left" : "top" } _scrollToHome() { const prop = this._wheelProp(); const distance = {}; distance[prop] = 0; this._component.scrollTo(distance) } _scrollToEnd() { const prop = this._wheelProp(); const dimension = this._dimensionByProp(prop); const distance = {}; const getter = "width" === dimension ? _size.getWidth : _size.getHeight; distance[prop] = getter(this._$content) - getter(this._$container); this._component.scrollTo(distance) } createActions() { this._startAction = this._createActionHandler("onStart"); this._endAction = this._createActionHandler("onEnd"); this._updateAction = this._createActionHandler("onUpdated"); this._createScrollerActions() } _createScrollerActions() { this._scrollAction = this._createActionHandler("onScroll"); this._bounceAction = this._createActionHandler("onBounce"); this._eventHandler("createActions", { scroll: this._scrollAction, bounce: this._bounceAction }) } _createActionHandler(optionName) { const actionHandler = this._createActionByOption(optionName); return () => { actionHandler((0, _extend.extend)(this._createActionArgs(), arguments)) } } _createActionArgs() { const { horizontal: scrollerX, vertical: scrollerY } = this._scrollers; const offset = this._getScrollOffset(); this._scrollOffset = { top: scrollerY && offset.top, left: scrollerX && offset.left }; return { event: this._eventForUserAction, scrollOffset: this._scrollOffset, reachedLeft: null === scrollerX || void 0 === scrollerX ? void 0 : scrollerX._reachedMax(), reachedRight: null === scrollerX || void 0 === scrollerX ? void 0 : scrollerX._reachedMin(), reachedTop: null === scrollerY || void 0 === scrollerY ? void 0 : scrollerY._reachedMax(), reachedBottom: null === scrollerY || void 0 === scrollerY ? void 0 : scrollerY._reachedMin() } } _getScrollOffset() { return { top: -this.location().top, left: -this.location().left } } _eventHandler(eventName, location) { const args = [].slice.call(arguments).slice(1); const deferreds = (0, _iterator.map)(this._scrollers, (scroller => scroller[`_${eventName}Handler`].apply(scroller, args))); return _deferred.when.apply(_renderer.default, deferreds).promise() } location() { const location = (0, _translator.locate)(this._$content); location.top -= this._$container.scrollTop(); location.left -= this._$container.scrollLeft(); return location } disabledChanged() { this._attachCursorHandlers() } _attachCursorHandlers() { _events_engine.default.off(this._$element, ".dxSimulatedScrollableCursor"); if (!this.option("disabled") && this._isHoverMode()) { _events_engine.default.on(this._$element, (0, _index.addNamespace)("mouseenter", "dxSimulatedScrollableCursor"), this._cursorEnterHandler.bind(this)); _events_engine.default.on(this._$element, (0, _index.addNamespace)("mouseleave", "dxSimulatedScrollableCursor"), this._cursorLeaveHandler.bind(this)) } } _isHoverMode() { return "onHover" === this.option("showScrollbar") } _cursorEnterHandler(e) { e = e || {}; e.originalEvent = e.originalEvent || {}; if (activeScrollable || e.originalEvent._hoverHandled) { return } if (hoveredScrollable) { hoveredScrollable._cursorLeaveHandler() } hoveredScrollable = this; this._eventHandler("cursorEnter"); e.originalEvent._hoverHandled = true } _cursorLeaveHandler(e) { if (hoveredScrollable !== this || activeScrollable === hoveredScrollable) { return } this._eventHandler("cursorLeave"); hoveredScrollable = null; this._refreshCursorState(null === e || void 0 === e ? void 0 : e.relatedTarget) } _refreshCursorState(target) { if (!this._isHoverMode() && (!target || activeScrollable)) { return } const $target = (0, _renderer.default)(target); const $scrollable = $target.closest(".dx-scrollable-simulated:not(.dx-state-disabled)"); const targetScrollable = $scrollable.length && $scrollable.data("dxScrollableStrategy"); if (hoveredScrollable && hoveredScrollable !== targetScrollable) { hoveredScrollable._cursorLeaveHandler() } if (targetScrollable) { targetScrollable._cursorEnterHandler() } } update() { const result = this._eventHandler("update").done(this._updateAction); return (0, _deferred.when)(result, (0, _common.deferUpdate)((() => { const allowedDirections = this._allowedDirections(); (0, _common.deferRender)((() => { let touchDirection = allowedDirections.vertical ? "pan-x" : ""; touchDirection = allowedDirections.horizontal ? "pan-y" : touchDirection; touchDirection = allowedDirections.vertical && allowedDirections.horizontal ? "none" : touchDirection; this._$container.css("touchAction", touchDirection) })); return (0, _deferred.when)().promise() }))) } _allowedDirections() { const bounceEnabled = this.option("bounceEnabled"); const verticalScroller = this._scrollers.vertical; const horizontalScroller = this._scrollers[HORIZONTAL]; return { vertical: verticalScroller && (verticalScroller._minOffset < 0 || bounceEnabled), horizontal: horizontalScroller && (horizontalScroller._minOffset < 0 || bounceEnabled) } } _updateBounds() { var _this$_scrollers$HORI; null === (_this$_scrollers$HORI = this._scrollers[HORIZONTAL]) || void 0 === _this$_scrollers$HORI || _this$_scrollers$HORI._updateBounds() } _isHorizontalAndRtlEnabled() { return this.option("rtlEnabled") && "vertical" !== this.option("direction") } updateRtlPosition(needInitializeRtlConfig) { if (needInitializeRtlConfig) { this._rtlConfig = { scrollRight: 0, clientWidth: this._$container.get(0).clientWidth, windowPixelRatio: this._getWindowDevicePixelRatio() } } this._updateBounds(); if (this._isHorizontalAndRtlEnabled()) { let scrollLeft = this._getMaxOffset().left - this._rtlConfig.scrollRight; if (scrollLeft <= 0) { scrollLeft = 0; this._rtlConfig.scrollRight = this._getMaxOffset().left } if (this._getScrollOffset().left !== scrollLeft) { this._rtlConfig.skipUpdating = true; this._component.scrollTo({ left: scrollLeft }); this._rtlConfig.skipUpdating = false } } } _updateRtlConfig() { if (this._isHorizontalAndRtlEnabled() && !this._rtlConfig.skipUpdating) { const { clientWidth: clientWidth, scrollLeft: scrollLeft } = this._$container.get(0); const windowPixelRatio = this._getWindowDevicePixelRatio(); if (this._rtlConfig.windowPixelRatio === windowPixelRatio && this._rtlConfig.clientWidth === clientWidth) { this._rtlConfig.scrollRight = this._getMaxOffset().left - scrollLeft } this._rtlConfig.clientWidth = clientWidth; this._rtlConfig.windowPixelRatio = windowPixelRatio } } _getWindowDevicePixelRatio() { return (0, _window.hasWindow)() ? (0, _window.getWindow)().devicePixelRatio : 1 } scrollBy(distance) { var _this$_startAction, _this$_endAction; const verticalScroller = this._scrollers.vertical; const horizontalScroller = this._scrollers[HORIZONTAL]; if (verticalScroller) { distance.top = verticalScroller._boundLocation(distance.top + verticalScroller._location) - verticalScroller._location } if (horizontalScroller) { distance.left = horizontalScroller._boundLocation(distance.left + horizontalScroller._location) - horizontalScroller._location } this._prepareDirections(true); null === (_this$_startAction = this._startAction) || void 0 === _this$_startAction || _this$_startAction.call(this); this._eventHandler("scrollBy", { x: distance.left, y: distance.top }); null === (_this$_endAction = this._endAction) || void 0 === _this$_endAction || _this$_endAction.call(this); this._updateRtlConfig() } validate(e) { if ((0, _index.isDxMouseWheelEvent)(e) && (0, _index.isCommandKeyPressed)(e)) { return false } if (this.option("disabled")) { return false } if (this.option("bounceEnabled")) { return true } return (0, _index.isDxMouseWheelEvent)(e) ? this._validateWheel(e) : this._validateMove(e) } _validateWheel(e) { const scroller = this._scrollers[this._wheelDirection(e)]; const reachedMin = scroller._reachedMin(); const reachedMax = scroller._reachedMax(); const contentGreaterThanContainer = !reachedMin || !reachedMax; const locatedNotAtBound = !reachedMin && !reachedMax; const scrollFromMin = reachedMin && e.delta > 0; const scrollFromMax = reachedMax && e.delta < 0; let validated = contentGreaterThanContainer && (locatedNotAtBound || scrollFromMin || scrollFromMax); validated = validated || void 0 !== this._validateWheelTimer; if (validated) { clearTimeout(this._validateWheelTimer); this._validateWheelTimer = setTimeout((() => { this._validateWheelTimer = void 0 }), 500) } return validated } _validateMove(e) { if (!this.option("scrollByContent") && !(0, _renderer.default)(e.target).closest(".dx-scrollable-scrollbar").length) { return false } return this._allowedDirection() } getDirection(e) { return (0, _index.isDxMouseWheelEvent)(e) ? this._wheelDirection(e) : this._allowedDirection() } _wheelProp() { return this._wheelDirection() === HORIZONTAL ? "left" : "top" } _wheelDirection(e) { switch (this.option("direction")) { case HORIZONTAL: return HORIZONTAL; case "vertical": return "vertical"; default: return null !== e && void 0 !== e && e.shiftKey ? HORIZONTAL : "vertical" } } dispose() { this._resetActive(); if (hoveredScrollable === this) { hoveredScrollable = null } this._eventHandler("dispose"); this._detachEventHandlers(); this._$element.removeClass("dx-scrollable-simulated"); this._eventForUserAction = null; clearTimeout(this._validateWheelTimer); clearTimeout(this._updateHandlerTimeout) } _detachEventHandlers() { _events_engine.default.off(this._$element, ".dxSimulatedScrollableCursor"); _events_engine.default.off(this._$container, ".dxSimulatedScrollableKeyboard") } } exports.SimulatedStrategy = SimulatedStrategy }, 86853: /*!**************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/ui/scroll_view/m_scrollbar.js ***! \**************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _translator = __webpack_require__( /*! ../../../common/core/animation/translator */ 88603); var _events_engine = _interopRequireDefault(__webpack_require__( /*! ../../../common/core/events/core/events_engine */ 92774)); var _pointer = _interopRequireDefault(__webpack_require__( /*! ../../../common/core/events/pointer */ 89797)); var _index = __webpack_require__( /*! ../../../common/core/events/utils/index */ 98834); var _dom_adapter = _interopRequireDefault(__webpack_require__( /*! ../../../core/dom_adapter */ 64960)); var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../../core/renderer */ 64553)); var _common = __webpack_require__( /*! ../../../core/utils/common */ 17781); var _ready_callbacks = _interopRequireDefault(__webpack_require__( /*! ../../../core/utils/ready_callbacks */ 3122)); var _type = __webpack_require__( /*! ../../../core/utils/type */ 11528); var _widget = _interopRequireDefault(__webpack_require__( /*! ../../core/widget/widget */ 89275)); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } function _extends() { return _extends = Object.assign ? Object.assign.bind() : function(n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) { ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]) } } return n }, _extends.apply(null, arguments) } const SCROLLBAR_VISIBLE_onScroll = "onScroll", SCROLLBAR_VISIBLE_onHover = "onHover", SCROLLBAR_VISIBLE_always = "always", SCROLLBAR_VISIBLE_never = "never"; let activeScrollbar = null; class Scrollbar extends _widget.default { _getDefaultOptions() { return _extends({}, super._getDefaultOptions(), { direction: null, visible: false, activeStateEnabled: false, visibilityMode: SCROLLBAR_VISIBLE_onScroll, containerSize: 0, contentSize: 0, expandable: true, scaleRatio: 1 }) } _init() { super._init(); this._isHovered = false } _initMarkup() { this._renderThumb(); super._initMarkup() } _render() { super._render(); this._renderDirection(); this._update(); this._attachPointerDownHandler(); this.option("hoverStateEnabled", this._isHoverMode()); const { hoverStateEnabled: hoverStateEnabled } = this.option(); this.$element().toggleClass("dx-scrollbar-hoverable", hoverStateEnabled) } _renderThumb() { this._$thumb = (0, _renderer.default)("<div>").addClass("dx-scrollable-scroll"); (0, _renderer.default)("<div>").addClass("dx-scrollable-scroll-content").appendTo(this._$thumb); this.$element().addClass("dx-scrollable-scrollbar").append(this._$thumb) } isThumb($element) { return !!this.$element().find($element).length } _isHoverMode() { const { visibilityMode: visibilityMode, expandable: expandable } = this.option(); return (visibilityMode === SCROLLBAR_VISIBLE_onHover || visibilityMode === SCROLLBAR_VISIBLE_always) && expandable } _renderDirection() { const { direction: direction } = this.option(); this.$element().addClass(`dx-scrollbar-${direction}`); this._dimension = "horizontal" === direction ? "width" : "height"; this._prop = "horizontal" === direction ? "left" : "top" } _attachPointerDownHandler() { _events_engine.default.on(this._$thumb, (0, _index.addNamespace)(_pointer.default.down, "dxScrollbar"), this.feedbackOn.bind(this)) } feedbackOn(e) { null === e || void 0 === e || e.preventDefault(); this.$element().addClass("dx-scrollable-scrollbar-active"); activeScrollbar = this } feedbackOff() { this.$element().removeClass("dx-scrollable-scrollbar-active"); activeScrollbar = null } cursorEnter() { this._isHovered = true; if (this._needScrollbar()) { this.option("visible", true) } } cursorLeave() { this._isHovered = false; this.option("visible", false) } _renderDimensions() { this._$thumb.css({ width: this.option("width"), height: this.option("height") }) } _toggleVisibility(visible) { const { visibilityMode: visibilityMode } = this.option(); if (visibilityMode === SCROLLBAR_VISIBLE_onScroll) { this._$thumb.css("opacity") } visible = this._adjustVisibility(visible); this.option().visible = visible; this._$thumb.toggleClass("dx-state-invisible", !visible) } _adjustVisibility(visible) { if (this._baseContainerToContentRatio && !this._needScrollbar()) { return false } const { visibilityMode: visibilityMode } = this.option(); switch (visibilityMode) { case SCROLLBAR_VISIBLE_onScroll: break; case SCROLLBAR_VISIBLE_onHover: visible = visible || !!this._isHovered; break; case SCROLLBAR_VISIBLE_never: visible = false; break; case SCROLLBAR_VISIBLE_always: visible = true } return visible } moveTo(location) { if (this._isHidden()) { return } if ((0, _type.isPlainObject)(location)) { location = location[this._prop] || 0 } const scrollBarLocation = {}; scrollBarLocation[this._prop] = this._calculateScrollBarPosition(location); (0, _translator.move)(this._$thumb, scrollBarLocation) } _calculateScrollBarPosition(location) { return -location * this._thumbRatio } _update() { const containerSize = Math.round(this.option("containerSize")); const contentSize = Math.round(this.option("contentSize")); let baseContainerSize = Math.round(this.option("baseContainerSize")); let baseContentSize = Math.round(this.option("baseContentSize")); if (isNaN(baseContainerSize)) { baseContainerSize = containerSize; baseContentSize = contentSize } const { scaleRatio: scaleRatio } = this.option(); this._baseContainerToContentRatio = baseContentSize ? baseContainerSize / baseContentSize : baseContainerSize; this._realContainerToContentRatio = contentSize ? containerSize / contentSize : containerSize; const thumbSize = Math.round(Math.max(Math.round(containerSize * this._realContainerToContentRatio), 15)); this._thumbRatio = (containerSize - thumbSize) / (scaleRatio * (contentSize - containerSize)); this.option(this._dimension, thumbSize / scaleRatio); this.$element().css("display", this._needScrollbar() ? "" : "none") } _isHidden() { const { visibilityMode: visibilityMode } = this.option(); return visibilityMode === SCROLLBAR_VISIBLE_never } _needScrollbar() { return !this._isHidden() && this._baseContainerToContentRatio < 1 } containerToContentRatio() { return this._realContainerToContentRatio } _normalizeSize(size) { return (0, _type.isPlainObject)(size) ? size[this._dimension] || 0 : size } _clean() { super._clean(); if (this === activeScrollbar) { activeScrollbar = null } _events_engine.default.off(this._$thumb, ".dxScrollbar") } _optionChanged(args) { if (this._isHidden()) { return } switch (args.name) { case "containerSize": case "contentSize": this.option()[args.name] = this._normalizeSize(args.value); this._update(); break; case "baseContentSize": case "baseContainerSize": case "scaleRatio": this._update(); break; case "visibilityMode": case "direction": this._invalidate(); break; default: super._optionChanged.apply(this, arguments) } } update() { (0, _common.deferRenderer)((() => { this._adjustVisibility() && this.option("visible", true) }))() } } _ready_callbacks.default.add((() => { _events_engine.default.subscribeGlobal(_dom_adapter.default.getDocument(), (0, _index.addNamespace)(_pointer.default.up, "dxScrollbar"), (() => { if (activeScrollbar) { activeScrollbar.feedbackOff() } })) })); exports.default = Scrollbar }, 32330: /*!*************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/ui/scroll_view/utils/convert_location.js ***! \*************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.convertToLocation = function(location, direction) { if ((0, _type.isPlainObject)(location)) { const left = (0, _common.ensureDefined)(location.left, location.x); const top = (0, _common.ensureDefined)(location.top, location.y); return { left: (0, _type.isDefined)(left) ? left : void 0, top: (0, _type.isDefined)(top) ? top : void 0 } } const { isVertical: isVertical, isHorizontal: isHorizontal } = new _scroll_direction.ScrollDirection(direction); return { left: isHorizontal && (0, _type.isDefined)(location) ? location : void 0, top: isVertical && (0, _type.isDefined)(location) ? location : void 0 } }; var _common = __webpack_require__( /*! ../../../../core/utils/common */ 17781); var _type = __webpack_require__( /*! ../../../../core/utils/type */ 11528); var _scroll_direction = __webpack_require__( /*! ./scroll_direction */ 69798) }, 78955: /*!***************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/ui/scroll_view/utils/get_boundary_props.js ***! \***************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.getBoundaryProps = function(direction, scrollOffset, element) { let pocketHeight = arguments.length > 3 && void 0 !== arguments[3] ? arguments[3] : 0; const { left: left, top: top } = scrollOffset; const boundaryProps = {}; const { isHorizontal: isHorizontal, isVertical: isVertical } = new _scroll_direction.ScrollDirection(direction); if (isHorizontal) { boundaryProps.reachedLeft = isReachedLeft(left, 0); boundaryProps.reachedRight = isReachedRight(element, left, 0) } if (isVertical) { boundaryProps.reachedTop = isReachedTop(top, 0); boundaryProps.reachedBottom = isReachedBottom(element, top, pocketHeight, 0) } return boundaryProps }; exports.isReachedBottom = isReachedBottom; exports.isReachedLeft = isReachedLeft; exports.isReachedRight = isReachedRight; exports.isReachedTop = isReachedTop; var _get_scroll_left_max = __webpack_require__( /*! ./get_scroll_left_max */ 43200); var _get_scroll_top_max = __webpack_require__( /*! ./get_scroll_top_max */ 27104); var _scroll_direction = __webpack_require__( /*! ./scroll_direction */ 69798); function isReachedLeft(scrollOffsetLeft, epsilon) { return Math.round(scrollOffsetLeft) <= epsilon } function isReachedRight(element, scrollOffsetLeft, epsilon) { return Math.round((0, _get_scroll_left_max.getScrollLeftMax)(element) - scrollOffsetLeft) <= epsilon } function isReachedTop(scrollOffsetTop, epsilon) { return Math.round(scrollOffsetTop) <= epsilon } function isReachedBottom(element, scrollOffsetTop, pocketHeight, epsilon) { return Math.round((0, _get_scroll_top_max.getScrollTopMax)(element) - scrollOffsetTop - pocketHeight) <= epsilon } }, 62504: /*!**************************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/ui/scroll_view/utils/get_element_location_internal.js ***! \**************************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.getElementLocationInternal = function(targetElement, direction, containerElement, scrollOffset, offset) { let scrollableContentClass = arguments.length > 5 && void 0 !== arguments[5] ? arguments[5] : _consts.SCROLLABLE_CONTENT_CLASS; const additionalOffset = _extends({ top: 0, left: 0, right: 0, bottom: 0 }, offset); const isVertical = direction === _consts.DIRECTION_VERTICAL; const prop = isVertical ? "top" : "left"; const inverseProp = isVertical ? "bottom" : "right"; const dimension = isVertical ? "height" : "width"; const containerOffsetSize = containerElement[`offset${(0,_inflector.titleize)(dimension)}`]; const containerClientSize = containerElement[`client${(0,_inflector.titleize)(dimension)}`]; const containerSize = containerElement.getBoundingClientRect()[dimension]; const elementSize = targetElement.getBoundingClientRect()[dimension]; let scale = 1; if (Math.abs(containerSize - containerOffsetSize) > 1) { scale = containerSize / containerOffsetSize } const relativeElementOffset = (0, _get_relative_offset.getRelativeOffset)(scrollableContentClass, targetElement)[prop] / scale; const containerScrollOffset = scrollOffset[prop]; const relativeStartOffset = containerScrollOffset - relativeElementOffset + additionalOffset[prop]; const relativeEndOffset = containerScrollOffset - relativeElementOffset - elementSize / scale + containerClientSize - additionalOffset[inverseProp]; if (relativeStartOffset <= 0 && relativeEndOffset >= 0) { return containerScrollOffset } return containerScrollOffset - (Math.abs(relativeStartOffset) > Math.abs(relativeEndOffset) ? relativeEndOffset : relativeStartOffset) }; var _inflector = __webpack_require__( /*! ../../../../core/utils/inflector */ 53124); var _consts = __webpack_require__( /*! ../consts */ 21363); var _get_relative_offset = __webpack_require__( /*! ./get_relative_offset */ 91524); function _extends() { return _extends = Object.assign ? Object.assign.bind() : function(n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) { ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]) } } return n }, _extends.apply(null, arguments) } }, 72840: /*!**************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/ui/scroll_view/utils/get_element_style.js ***! \**************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.getElementMargin = function(element, side) { const style = getElementStyle(element); return style ? (0, _type_conversion.toNumber)(style[`margin${(0,_inflector.titleize)(side)}`]) : 0 }; exports.getElementOverflowX = function(element) { const style = getElementStyle(element); return style ? style.overflowX : "visible" }; exports.getElementOverflowY = function(element) { const style = getElementStyle(element); return style ? style.overflowY : "visible" }; exports.getElementPadding = function(element, side) { const style = getElementStyle(element); return style ? (0, _type_conversion.toNumber)(style[`padding${(0,_inflector.titleize)(side)}`]) : 0 }; exports.getElementStyle = getElementStyle; exports.getElementTransform = function(element) { const style = getElementStyle(element); return style ? style.transform : "" }; var _inflector = __webpack_require__( /*! ../../../../core/utils/inflector */ 53124); var _window = __webpack_require__( /*! ../../../../core/utils/window */ 3104); var _type_conversion = __webpack_require__( /*! ../../../utils/type_conversion */ 39903); function getElementStyle(el) { var _getWindow$getCompute, _getWindow; return el && (0, _window.hasWindow)() ? null === (_getWindow$getCompute = (_getWindow = (0, _window.getWindow)()).getComputedStyle) || void 0 === _getWindow$getCompute ? void 0 : _getWindow$getCompute.call(_getWindow, el) : null } }, 91524: /*!****************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/ui/scroll_view/utils/get_relative_offset.js ***! \****************************************************************************************************/ function(__unused_webpack_module, exports) { Object.defineProperty(exports, "__esModule", { value: true }); exports.getRelativeOffset = function(targetElementClass, sourceElement) { const offset = { left: 0, top: 0 }; let element = sourceElement; while (null !== (_element = element) && void 0 !== _element && _element.offsetParent && !element.classList.contains(targetElementClass)) { var _element; const parentElement = element.offsetParent; const elementRect = element.getBoundingClientRect(); const parentElementRect = parentElement.getBoundingClientRect(); offset.left += elementRect.left - parentElementRect.left; offset.top += elementRect.top - parentElementRect.top; element = element.offsetParent } return offset } }, 43200: /*!****************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/ui/scroll_view/utils/get_scroll_left_max.js ***! \****************************************************************************************************/ function(__unused_webpack_module, exports) { Object.defineProperty(exports, "__esModule", { value: true }); exports.getScrollLeftMax = function(element) { return element.scrollWidth - element.clientWidth } }, 27104: /*!***************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/ui/scroll_view/utils/get_scroll_top_max.js ***! \***************************************************************************************************/ function(__unused_webpack_module, exports) { Object.defineProperty(exports, "__esModule", { value: true }); exports.getScrollTopMax = function(element) { return element.scrollHeight - element.clientHeight } }, 69798: /*!*************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/ui/scroll_view/utils/scroll_direction.js ***! \*************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.ScrollDirection = void 0; var _consts = __webpack_require__( /*! ../consts */ 21363); exports.ScrollDirection = class { constructor(direction) { this.DIRECTION_HORIZONTAL = "horizontal"; this.DIRECTION_VERTICAL = "vertical"; this.DIRECTION_BOTH = "both"; this.direction = direction ?? _consts.DIRECTION_VERTICAL } get isHorizontal() { return this.direction === _consts.DIRECTION_HORIZONTAL || this.direction === _consts.DIRECTION_BOTH } get isVertical() { return this.direction === _consts.DIRECTION_VERTICAL || this.direction === _consts.DIRECTION_BOTH } get isBoth() { return this.direction === _consts.DIRECTION_BOTH } } }, 53544: /*!************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/ui/selection/m_selection.js ***! \************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _common = __webpack_require__( /*! ../../../core/utils/common */ 17781); var _deferred = __webpack_require__( /*! ../../../core/utils/deferred */ 87739); var _extend = __webpack_require__( /*! ../../../core/utils/extend */ 52576); var _type = __webpack_require__( /*! ../../../core/utils/type */ 11528); var _m_selectionStrategy = _interopRequireDefault(__webpack_require__( /*! ./m_selection.strategy.deferred */ 33060)); var _m_selectionStrategy2 = _interopRequireDefault(__webpack_require__( /*! ./m_selection.strategy.standard */ 98893)); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } exports.default = class { constructor(options) { this.options = (0, _extend.extend)(this._getDefaultOptions(), options, { selectedItemKeys: options.selectedKeys || [] }); this._selectionStrategy = this.options.deferred ? new _m_selectionStrategy.default(this.options) : new _m_selectionStrategy2.default(this.options); this._focusedItemIndex = -1; if (!this.options.equalByReference) { this._selectionStrategy.updateSelectedItemKeyHash(this.options.selectedItemKeys) } } _getDefaultOptions() { return { allowNullValue: false, deferred: false, equalByReference: false, mode: "multiple", selectedItems: [], selectionFilter: [], maxFilterLengthInRequest: 0, onSelectionChanged: _common.noop, key: _common.noop, keyOf: item => item, load: () => (0, _deferred.Deferred)().resolve([]), totalCount: () => -1, isSelectableItem: () => true, isItemSelected: () => false, getItemData: item => item, dataFields: _common.noop, filter: _common.noop } } validate() { this._selectionStrategy.validate() } getSelectedItemKeys() { return this._selectionStrategy.getSelectedItemKeys() } getSelectedItems() { return this._selectionStrategy.getSelectedItems() } selectionFilter(value) { if (void 0 === value) { return this.options.selectionFilter } const filterIsChanged = this.options.selectionFilter !== value && JSON.stringify(this.options.selectionFilter) !== JSON.stringify(value); this.options.selectionFilter = value; filterIsChanged && this.onSelectionChanged() } setSelection(keys, updatedKeys) { return this.selectedItemKeys(keys, false, false, false, updatedKeys) } select(keys) { return this.selectedItemKeys(keys, true) } deselect(keys) { return this.selectedItemKeys(keys, true, true) } selectedItemKeys(keys, preserve, isDeselect, isSelectAll, updatedKeys) { keys = keys ?? []; keys = Array.isArray(keys) ? keys : [keys]; this.validate(); return this._selectionStrategy.selectedItemKeys(keys, preserve, isDeselect, isSelectAll, updatedKeys) } clearSelection() { return this.selectedItemKeys([]) } _addSelectedItem(itemData, key) { this._selectionStrategy.addSelectedItem(key, itemData) } _removeSelectedItem(key) { this._selectionStrategy.removeSelectedItem(key) } _setSelectedItems(keys, items) { this._selectionStrategy.setSelectedItems(keys, items) } onSelectionChanged() { this._selectionStrategy.onSelectionChanged() } changeItemSelection(itemIndex, keys, setFocusOnly) { var _this$options$allowLo, _this$options; let isSelectedItemsChanged; const items = this.options.plainItems(); const item = items[itemIndex]; let deferred; const { isVirtualPaging: isVirtualPaging } = this.options; const allowLoadByRange = null === (_this$options$allowLo = (_this$options = this.options).allowLoadByRange) || void 0 === _this$options$allowLo ? void 0 : _this$options$allowLo.call(_this$options); const { alwaysSelectByShift: alwaysSelectByShift } = this.options; let indexOffset; let focusedItemNotInLoadedRange = false; let shiftFocusedItemNotInLoadedRange = false; const itemIsNotInLoadedRange = index => index >= 0 && !items.filter((it => it.loadIndex === index)).length; if (isVirtualPaging && (0, _type.isDefined)(item)) { if (allowLoadByRange) { indexOffset = item.loadIndex - itemIndex; itemIndex = item.loadIndex } focusedItemNotInLoadedRange = itemIsNotInLoadedRange(this._focusedItemIndex); if ((0, _type.isDefined)(this._shiftFocusedItemIndex)) { shiftFocusedItemNotInLoadedRange = itemIsNotInLoadedRange(this._shiftFocusedItemIndex) } } if (!this.isSelectable() || !this.isDataItem(item)) { return false } const itemData = this.options.getItemData(item); const itemKey = this.options.keyOf(itemData); keys = keys || {}; let allowSelectByShift = keys.shift; if (false === alwaysSelectByShift && allowSelectByShift) { allowSelectByShift = false !== allowLoadByRange || !focusedItemNotInLoadedRange && !shiftFocusedItemNotInLoadedRange } if (allowSelectByShift && "multiple" === this.options.mode && this._focusedItemIndex >= 0) { if (allowLoadByRange && (focusedItemNotInLoadedRange || shiftFocusedItemNotInLoadedRange)) { isSelectedItemsChanged = itemIndex !== this._shiftFocusedItemIndex || this._focusedItemIndex !== this._shiftFocusedItemIndex; if (isSelectedItemsChanged) { deferred = this.changeItemSelectionWhenShiftKeyInVirtualPaging(itemIndex) } } else { isSelectedItemsChanged = this.changeItemSelectionWhenShiftKeyPressed(itemIndex, items, indexOffset) } } else if (keys.control) { this._resetItemSelectionWhenShiftKeyPressed(); if (!setFocusOnly) { const isSelected = this._selectionStrategy.isItemDataSelected(itemData); if ("single" === this.options.mode) { this.clearSelectedItems() } if (isSelected) { this._removeSelectedItem(itemKey) } else { this._addSelectedItem(itemData, itemKey) } } isSelectedItemsChanged = true } else { this._resetItemSelectionWhenShiftKeyPressed(); const isKeysEqual = this._selectionStrategy.equalKeys(this.options.selectedItemKeys[0], itemKey); if (1 !== this.options.selectedItemKeys.length || !isKeysEqual) { this._setSelectedItems([itemKey], [itemData]); isSelectedItemsChanged = true } } if (isSelectedItemsChanged) { (0, _deferred.when)(deferred).done((() => { this._focusedItemIndex = itemIndex; !setFocusOnly && this.onSelectionChanged() })); return true } } isDataItem(item) { return this.options.isSelectableItem(item) } isSelectable() { return "single" === this.options.mode || "multiple" === this.options.mode } isItemDataSelected(data) { return this._selectionStrategy.isItemDataSelected(data, { checkPending: true }) } isItemSelected(arg, options) { return this._selectionStrategy.isItemKeySelected(arg, options) } _resetItemSelectionWhenShiftKeyPressed() { delete this._shiftFocusedItemIndex } _resetFocusedItemIndex() { this._focusedItemIndex = -1 } changeItemSelectionWhenShiftKeyInVirtualPaging(loadIndex) { const loadOptions = this.options.getLoadOptions(loadIndex, this._focusedItemIndex, this._shiftFocusedItemIndex); const deferred = (0, _deferred.Deferred)(); const indexOffset = loadOptions.skip; this.options.load(loadOptions).done((items => { this.changeItemSelectionWhenShiftKeyPressed(loadIndex, items, indexOffset); deferred.resolve() })); return deferred.promise() } changeItemSelectionWhenShiftKeyPressed(itemIndex, items, indexOffset) { let isSelectedItemsChanged = false; let itemIndexStep; const indexOffsetDefined = (0, _type.isDefined)(indexOffset); let index = indexOffsetDefined ? this._focusedItemIndex - indexOffset : this._focusedItemIndex; const { keyOf: keyOf } = this.options; const focusedItem = items[index]; const focusedData = this.options.getItemData(focusedItem); const focusedKey = keyOf(focusedData); const isFocusedItemSelected = focusedItem && this.isItemDataSelected(focusedData); if (!(0, _type.isDefined)(this._shiftFocusedItemIndex)) { this._shiftFocusedItemIndex = this._focusedItemIndex } let data; let itemKey; let startIndex; let endIndex; if (this._shiftFocusedItemIndex !== this._focusedItemIndex) { itemIndexStep = this._focusedItemIndex < this._shiftFocusedItemIndex ? 1 : -1; startIndex = indexOffsetDefined ? this._focusedItemIndex - indexOffset : this._focusedItemIndex; endIndex = indexOffsetDefined ? this._shiftFocusedItemIndex - indexOffset : this._shiftFocusedItemIndex; for (index = startIndex; index !== endIndex; index += itemIndexStep) { if (indexOffsetDefined || this.isDataItem(items[index])) { itemKey = keyOf(this.options.getItemData(items[index])); this._removeSelectedItem(itemKey); isSelectedItemsChanged = true } } } if (itemIndex !== this._shiftFocusedItemIndex) { itemIndexStep = itemIndex < this._shiftFocusedItemIndex ? 1 : -1; startIndex = indexOffsetDefined ? itemIndex - indexOffset : itemIndex; endIndex = indexOffsetDefined ? this._shiftFocusedItemIndex - indexOffset : this._shiftFocusedItemIndex; for (index = startIndex; index !== endIndex; index += itemIndexStep) { if (indexOffsetDefined || this.isDataItem(items[index])) { data = this.options.getItemData(items[index]); itemKey = keyOf(data); this._addSelectedItem(data, itemKey); isSelectedItemsChanged = true } } } if ((indexOffsetDefined || this.isDataItem(focusedItem)) && !isFocusedItemSelected) { this._addSelectedItem(focusedData, focusedKey); isSelectedItemsChanged = true } return isSelectedItemsChanged } clearSelectedItems() { this._setSelectedItems([], []) } selectAll(isOnePage) { this._resetFocusedItemIndex(); if (isOnePage) { return this._selectionStrategy._onePageSelectAll(false) } return this.selectedItemKeys([], true, false, true) } deselectAll(isOnePage) { this._resetFocusedItemIndex(); if (isOnePage) { return this._selectionStrategy._onePageSelectAll(true) } return this.selectedItemKeys([], true, true, true) } getSelectAllState(visibleOnly) { return this._selectionStrategy.getSelectAllState(visibleOnly) } loadSelectedItemsWithFilter() { return this._selectionStrategy.loadSelectedItemsWithFilter() } } }, 33060: /*!******************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/ui/selection/m_selection.strategy.deferred.js ***! \******************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _query = _interopRequireDefault(__webpack_require__( /*! ../../../common/data/query */ 30771)); var _deferred = __webpack_require__( /*! ../../../core/utils/deferred */ 87739); var _type = __webpack_require__( /*! ../../../core/utils/type */ 11528); var _ui = _interopRequireDefault(__webpack_require__( /*! ../../../ui/widget/ui.errors */ 35185)); var _m_selection = _interopRequireDefault(__webpack_require__( /*! ./m_selection.strategy */ 13085)); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } class DeferredStrategy extends _m_selection.default { getSelectedItems() { return this._loadFilteredData(this.options.selectionFilter) } getSelectedItemKeys() { const d = (0, _deferred.Deferred)(); const that = this; const key = this.options.key(); const select = (0, _type.isString)(key) ? [key] : key; this._loadFilteredData(this.options.selectionFilter, null, select).done((items => { const keys = items.map((item => that.options.keyOf(item))); d.resolve(keys) })).fail(d.reject); return d.promise() } selectedItemKeys(keys, preserve, isDeselect, isSelectAll) { if (isSelectAll) { const filter = this.options.filter(); const needResetSelectionFilter = !filter || JSON.stringify(filter) === JSON.stringify(this.options.selectionFilter) && isDeselect; if (needResetSelectionFilter) { this._setOption("selectionFilter", isDeselect ? [] : null) } else { this._addSelectionFilter(isDeselect, filter, isSelectAll) } } else { if (!preserve) { this._setOption("selectionFilter", []) } for (let i = 0; i < keys.length; i++) { if (isDeselect) { this.removeSelectedItem(keys[i]) } else { this.addSelectedItem(keys[i], isSelectAll, !preserve) } } } this.onSelectionChanged(); return (0, _deferred.Deferred)().resolve() } setSelectedItems(keys) { this._setOption("selectionFilter", null); for (let i = 0; i < keys.length; i++) { this.addSelectedItem(keys[i]) } } isItemDataSelected(itemData) { return this.isItemKeySelected(itemData) } isItemKeySelected(itemData) { const { selectionFilter: selectionFilter } = this.options; if (!selectionFilter) { return true } const queryParams = this._getQueryParams(); return !!(0, _query.default)([itemData], queryParams).filter(selectionFilter).toArray().length } _getKeyExpr() { const keyField = this.options.key(); if (Array.isArray(keyField) && 1 === keyField.length) { return keyField[0] } return keyField } _normalizeKey(key) { const keyExpr = this.options.key(); if (Array.isArray(keyExpr) && 1 === keyExpr.length) { return key[keyExpr[0]] } return key } _getFilterByKey(key) { const keyField = this._getKeyExpr(); let filter = [keyField, "=", this._normalizeKey(key)]; if (Array.isArray(keyField)) { filter = []; for (let i = 0; i < keyField.length; i++) { filter.push([keyField[i], "=", key[keyField[i]]]); if (i !== keyField.length - 1) { filter.push("and") } } } return filter } addSelectedItem(key, isSelectAll, skipFilter) { const filter = this._getFilterByKey(key); this._addSelectionFilter(false, filter, isSelectAll, skipFilter) } removeSelectedItem(key) { const filter = this._getFilterByKey(key); this._addSelectionFilter(true, filter) } validate() { const { key: key } = this.options; if (key && void 0 === key()) { throw _ui.default.Error("E1042", "Deferred selection") } } _findSubFilter(selectionFilter, filter) { if (!selectionFilter) { return -1 } const filterString = JSON.stringify(filter); for (let index = 0; index < selectionFilter.length; index++) { const subFilter = selectionFilter[index]; if (subFilter && JSON.stringify(subFilter) === filterString) { return index } } return -1 } _isLastSubFilter(selectionFilter, filter) { if (selectionFilter && filter) { return this._findSubFilter(selectionFilter, filter) === selectionFilter.length - 1 || 0 === this._findSubFilter([selectionFilter], filter) } return false } _addFilterOperator(selectionFilter, filterOperator) { if (selectionFilter.length > 1 && (0, _type.isString)(selectionFilter[1]) && selectionFilter[1] !== filterOperator) { selectionFilter = [selectionFilter] } if (selectionFilter.length) { selectionFilter.push(filterOperator) } return selectionFilter } _denormalizeFilter(filter) { if (filter && (0, _type.isString)(filter[0])) { filter = [filter] } return filter } _isOnlyNegativeFiltersLeft(filters) { return filters.every(((filterItem, i) => { if (i % 2 === 0) { return Array.isArray(filterItem) && "!" === filterItem[0] } return "and" === filterItem })) } _addSelectionFilter(isDeselect, filter, isSelectAll, skipFilter) { var _selectionFilter; const that = this; const currentFilter = isDeselect ? ["!", filter] : filter; const currentOperation = isDeselect ? "and" : "or"; let needAddFilter = true; let selectionFilter = that.options.selectionFilter || []; selectionFilter = that._denormalizeFilter(selectionFilter); if (null !== (_selectionFilter = selectionFilter) && void 0 !== _selectionFilter && _selectionFilter.length && !skipFilter) { const removedIndex = that._removeSameFilter(selectionFilter, filter, isDeselect, isSelectAll); const filterIndex = that._removeSameFilter(selectionFilter, filter, !isDeselect); const shouldCleanFilter = isDeselect && (-1 !== removedIndex || -1 !== filterIndex) && this._isOnlyNegativeFiltersLeft(selectionFilter); if (shouldCleanFilter) { selectionFilter = [] } const isKeyOperatorsAfterRemoved = this._isKeyFilter(filter) && this._hasKeyFiltersOnlyStartingFromIndex(selectionFilter, filterIndex); needAddFilter = filter.length && !isKeyOperatorsAfterRemoved } if (needAddFilter) { selectionFilter = that._addFilterOperator(selectionFilter, currentOperation); selectionFilter.push(currentFilter) } selectionFilter = that._normalizeFilter(selectionFilter); that._setOption("selectionFilter", !isDeselect && !selectionFilter.length ? null : selectionFilter) } _normalizeFilter(filter) { if (filter && 1 === filter.length) { filter = filter[0] } return filter } _removeFilterByIndex(filter, filterIndex, isSelectAll) { const operation = filter[1]; if (filterIndex > 0) { filter.splice(filterIndex - 1, 2) } else { filter.splice(filterIndex, 2) } if (isSelectAll && "and" === operation) { filter.splice(0, filter.length) } } _isSimpleKeyFilter(filter, key) { return 3 === filter.length && filter[0] === key && "=" === filter[1] } _isKeyFilter(filter) { if (2 === filter.length && "!" === filter[0]) { return this._isKeyFilter(filter[1]) } const keyField = this._getKeyExpr(); if (Array.isArray(keyField)) { if (filter.length !== 2 * keyField.length - 1) { return false } for (let i = 0; i < keyField.length; i++) { if (i > 0 && "and" !== filter[2 * i - 1]) { return false } if (!this._isSimpleKeyFilter(filter[2 * i], keyField[i])) { return false } } return true } return this._isSimpleKeyFilter(filter, keyField) } _hasKeyFiltersOnlyStartingFromIndex(selectionFilter, filterIndex) { if (filterIndex >= 0) { for (let i = filterIndex; i < selectionFilter.length; i++) { if ("string" !== typeof selectionFilter[i] && !this._isKeyFilter(selectionFilter[i])) { return false } } return true } return false } _removeSameFilter(selectionFilter, filter, inverted, isSelectAll) { filter = inverted ? ["!", filter] : filter; if (JSON.stringify(filter) === JSON.stringify(selectionFilter)) { selectionFilter.splice(0, selectionFilter.length); return 0 } const filterIndex = this._findSubFilter(selectionFilter, filter); if (filterIndex >= 0) { this._removeFilterByIndex(selectionFilter, filterIndex, isSelectAll); return filterIndex } for (let i = 0; i < selectionFilter.length; i++) { if (Array.isArray(selectionFilter[i]) && selectionFilter[i].length > 2) { const filterIndex = this._removeSameFilter(selectionFilter[i], filter, false, isSelectAll); if (filterIndex >= 0) { if (!selectionFilter[i].length) { this._removeFilterByIndex(selectionFilter, i, isSelectAll) } else if (1 === selectionFilter[i].length) { selectionFilter[i] = selectionFilter[i][0] } return filterIndex } } } return -1 } getSelectAllState() { const filter = this.options.filter(); let { selectionFilter: selectionFilter } = this.options; if (!selectionFilter) { return true } if (!selectionFilter.length) { return false } if (!filter || !filter.length) { return } selectionFilter = this._denormalizeFilter(selectionFilter); if (this._isLastSubFilter(selectionFilter, filter)) { return true } if (this._isLastSubFilter(selectionFilter, ["!", filter])) { return false } return } loadSelectedItemsWithFilter() { const componentFilter = this.options.filter(); const { selectionFilter: selectionFilter } = this.options; const filter = componentFilter ? [componentFilter, "and", selectionFilter] : selectionFilter; return this._loadFilteredData(filter) } _onePageSelectAll(isDeselect) { this._selectAllPlainItems(isDeselect); this.onSelectionChanged(); return (0, _deferred.Deferred)().resolve() } } exports.default = DeferredStrategy }, 13085: /*!*********************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/ui/selection/m_selection.strategy.js ***! \*********************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _query = (e = __webpack_require__( /*! ../../../common/data/query */ 30771), e && e.__esModule ? e : { default: e }); var e; var _common = __webpack_require__( /*! ../../../core/utils/common */ 17781); var _deferred = __webpack_require__( /*! ../../../core/utils/deferred */ 87739); var _type = __webpack_require__( /*! ../../../core/utils/type */ 11528); function _extends() { return _extends = Object.assign ? Object.assign.bind() : function(n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) { ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]) } } return n }, _extends.apply(null, arguments) } exports.default = class { constructor(options) { this._lastSelectAllPageDeferred = (0, _deferred.Deferred)().reject(); this.options = options; this._setOption("disabledItemKeys", []); this._clearItemKeys() } _clearItemKeys() { this._setOption("addedItemKeys", []); this._setOption("removedItemKeys", []); this._setOption("removedItems", []); this._setOption("addedItems", []) } validate() {} _setOption(name, value) { this.options[name] = value } onSelectionChanging() { const { selectedItems: selectedItems, selectedItemKeys: selectedItemKeys, addedItemKeys: addedItemKeys, removedItemKeys: removedItemKeys, addedItems: addedItems, removedItems: removedItems, onSelectionChanging: onSelectionChanging = _common.noop } = this.options; const selectionChangingArgs = { selectedItems: selectedItems, selectedItemKeys: selectedItemKeys, addedItemKeys: addedItemKeys, removedItemKeys: removedItemKeys, addedItems: addedItems, removedItems: removedItems, cancel: false }; onSelectionChanging(selectionChangingArgs); return selectionChangingArgs.cancel } _callCallbackIfNotCanceled(callback, cancelCallback) { const cancelResult = this.onSelectionChanging(); if ((0, _type.isPromise)(cancelResult)) { cancelResult.then((cancel => { if (!cancel) { callback() } else { cancelCallback() } })).catch((() => { callback() })) } else if (!cancelResult) { callback() } else { cancelCallback() } } onSelectionChanged() { const { selectedItems: selectedItems, selectedItemKeys: selectedItemKeys, addedItemKeys: addedItemKeys, removedItemKeys: removedItemKeys, addedItems: addedItems, removedItems: removedItems, onSelectionChanged: onSelectionChanged = _common.noop } = this.options; this._clearItemKeys(); onSelectionChanged({ selectedItems: selectedItems, selectedItemKeys: selectedItemKeys, addedItemKeys: addedItemKeys, removedItemKeys: removedItemKeys, addedItems: addedItems, removedItems: removedItems }) } equalKeys(key1, key2) { if (this.options.equalByReference) { if ((0, _type.isObject)(key1) && (0, _type.isObject)(key2)) { return key1 === key2 } } return (0, _common.equalByValue)(key1, key2) } getSelectableItems(items) { return items.filter((item => !(null !== item && void 0 !== item && item.disabled))) } _clearSelection(keys, preserve, isDeselect, isSelectAll) { keys = keys || []; keys = Array.isArray(keys) ? keys : [keys]; this.validate(); return this.selectedItemKeys(keys, preserve, isDeselect, isSelectAll) } _removeTemplateProperty(remoteFilter) { if (Array.isArray(remoteFilter)) { return remoteFilter.map((f => this._removeTemplateProperty(f))) } if ((0, _type.isObject)(remoteFilter)) { delete remoteFilter.template } return remoteFilter } _getQueryParams() { const { sensitivity: sensitivity } = this.options; if (!sensitivity) { return } return { langParams: { collatorOptions: { sensitivity: sensitivity } } } } _loadFilteredData(remoteFilter, localFilter, select, isSelectAll) { const filterLength = encodeURI(JSON.stringify(this._removeTemplateProperty(remoteFilter))).length; const needLoadAllData = this.options.maxFilterLengthInRequest && filterLength > this.options.maxFilterLengthInRequest; const deferred = (0, _deferred.Deferred)(); const queryParams = this._getQueryParams(); const loadOptions = _extends({ filter: needLoadAllData ? void 0 : remoteFilter, select: needLoadAllData ? this.options.dataFields() : select || this.options.dataFields() }, queryParams); if (remoteFilter && 0 === remoteFilter.length) { deferred.resolve([]) } else { this.options.load(loadOptions).done((items => { let filteredItems = (0, _type.isPlainObject)(items) ? items.data : items; if (localFilter && !isSelectAll) { filteredItems = filteredItems.filter(localFilter) } else if (needLoadAllData) { filteredItems = (0, _query.default)(filteredItems).filter(remoteFilter).toArray() } deferred.resolve(filteredItems) })).fail(deferred.reject.bind(deferred)) } return deferred } updateSelectedItemKeyHash(keys) { for (let i = 0; i < keys.length; i++) { const keyHash = (0, _common.getKeyHash)(keys[i]); if (!(0, _type.isObject)(keyHash)) { this.options.keyHashIndices[keyHash] = this.options.keyHashIndices[keyHash] || []; const keyIndices = this.options.keyHashIndices[keyHash]; keyIndices.push(i) } } } _isAnyItemSelected(items) { for (let i = 0; i < items.length; i++) { if (this.options.isItemSelected(items[i])) { return } } return false } _getFullSelectAllState() { const items = this.options.plainItems(); const dataFilter = this.options.filter(); let selectedItems = this.options.ignoreDisabledItems ? this.options.selectedItems : this.options.selectedItems.filter((item => !(null !== item && void 0 !== item && item.disabled))); if (dataFilter) { selectedItems = (0, _query.default)(selectedItems).filter(dataFilter).toArray() } const selectedItemsLength = selectedItems.length; const disabledItemsLength = items.length - this.getSelectableItems(items).length; if (!selectedItemsLength) { return this._isAnyItemSelected(items) } if (selectedItemsLength >= this.options.totalCount() - disabledItemsLength) { return true } return } _getVisibleSelectAllState() { const items = this.getSelectableItems(this.options.plainItems()); let hasSelectedItems = false; let hasUnselectedItems = false; for (let i = 0; i < items.length; i++) { const item = items[i]; const itemData = this.options.getItemData(item); const key = this.options.keyOf(itemData); if (this.options.isSelectableItem(item)) { if (this.isItemKeySelected(key)) { hasSelectedItems = true } else { hasUnselectedItems = true } } } if (hasSelectedItems) { return !hasUnselectedItems ? true : void 0 } return false } isItemKeySelected(itemKey) { throw new Error("isItemKeySelected method should be overriden") } addSelectedItem(itemKey, itemData) { throw new Error("addSelectedItem method should be overriden") } removeSelectedItem(itemKey) { throw new Error("removeSelectedItem method should be overriden") } _selectAllPlainItems(isDeselect) { const items = this.getSelectableItems(this.options.plainItems()); for (let i = 0; i < items.length; i++) { const item = items[i]; if (this.options.isSelectableItem(item)) { const itemData = this.options.getItemData(item); const itemKey = this.options.keyOf(itemData); const isSelected = this.isItemKeySelected(itemKey); if (!isSelected && !isDeselect) { this.addSelectedItem(itemKey, itemData) } if (isSelected && isDeselect) { this.removeSelectedItem(itemKey) } } } } } }, 98893: /*!******************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/ui/selection/m_selection.strategy.standard.js ***! \******************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _query = _interopRequireDefault(__webpack_require__( /*! ../../../common/data/query */ 30771)); var _array = __webpack_require__( /*! ../../../core/utils/array */ 94487); var _array_compare = __webpack_require__( /*! ../../../core/utils/array_compare */ 13387); var _common = __webpack_require__( /*! ../../../core/utils/common */ 17781); var _deferred = __webpack_require__( /*! ../../../core/utils/deferred */ 87739); var _selection_filter = __webpack_require__( /*! ../../../core/utils/selection_filter */ 52877); var _type = __webpack_require__( /*! ../../../core/utils/type */ 11528); var _ui = _interopRequireDefault(__webpack_require__( /*! ../../../ui/widget/ui.errors */ 35185)); var _m_selection = _interopRequireDefault(__webpack_require__( /*! ./m_selection.strategy */ 13085)); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } class StandardStrategy extends _m_selection.default { constructor(options) { super(options); this._lastSelectAllPageDeferred = (0, _deferred.Deferred)().reject(); this._initSelectedItemKeyHash() } _initSelectedItemKeyHash() { this._setOption("keyHashIndices", this.options.equalByReference ? null : {}) } getSelectedItemKeys() { return this.options.selectedItemKeys.slice(0) } getSelectedItems() { return this.options.selectedItems.slice(0) } _preserveSelectionUpdate(items, isDeselect) { const { keyOf: keyOf } = this.options; let keyIndicesToRemoveMap; let keyIndex; let i; if (!keyOf) { return } const isBatchDeselect = isDeselect && items.length > 1 && !this.options.equalByReference; if (isBatchDeselect) { keyIndicesToRemoveMap = {} } for (i = 0; i < items.length; i++) { const item = items[i]; const key = keyOf(item); if (isDeselect) { keyIndex = this.removeSelectedItem(key, keyIndicesToRemoveMap, null === item || void 0 === item ? void 0 : item.disabled); if (keyIndicesToRemoveMap && keyIndex >= 0) { keyIndicesToRemoveMap[keyIndex] = true } } else { this.addSelectedItem(key, item) } } if (isBatchDeselect) { this._batchRemoveSelectedItems(keyIndicesToRemoveMap) } } _batchRemoveSelectedItems(keyIndicesToRemoveMap) { const selectedItemKeys = this.options.selectedItemKeys.slice(0); const selectedItems = this.options.selectedItems.slice(0); this.options.selectedItemKeys.length = 0; this.options.selectedItems.length = 0; for (let i = 0; i < selectedItemKeys.length; i++) { if (!keyIndicesToRemoveMap[i]) { this.options.selectedItemKeys.push(selectedItemKeys[i]); this.options.selectedItems.push(selectedItems[i]) } } this._initSelectedItemKeyHash(); this.updateSelectedItemKeyHash(this.options.selectedItemKeys) } _loadSelectedItemsCore(keys, isDeselect, isSelectAll, filter) { let forceCombinedFilter = arguments.length > 4 && void 0 !== arguments[4] ? arguments[4] : false; let deferred = (0, _deferred.Deferred)(); const key = this.options.key(); if (!keys.length && !isSelectAll) { deferred.resolve([]); return deferred } if (isSelectAll && isDeselect && !filter) { deferred.resolve(this.getSelectedItems()); return deferred } const selectionFilterCreator = new _selection_filter.SelectionFilterCreator(keys, isSelectAll); const combinedFilter = selectionFilterCreator.getCombinedFilter(key, filter, forceCombinedFilter); let deselectedItems = []; if (isDeselect) { const { selectedItems: selectedItems } = this.options; deselectedItems = combinedFilter && keys.length !== selectedItems.length ? (0, _query.default)(selectedItems).filter(combinedFilter).toArray() : selectedItems.slice(0) } let filteredItems = deselectedItems.length ? deselectedItems : this.options.plainItems(true).filter(this.options.isSelectableItem).map(this.options.getItemData); const localFilter = selectionFilterCreator.getLocalFilter(this.options.keyOf, this.equalKeys.bind(this), this.options.equalByReference, key); filteredItems = filteredItems.filter(localFilter); if (deselectedItems.length || !isSelectAll && filteredItems.length === keys.length) { deferred.resolve(filteredItems) } else { deferred = this._loadFilteredData(combinedFilter, localFilter, null, isSelectAll) } return deferred } _replaceSelectionUpdate(items) { const internalKeys = []; const { keyOf: keyOf } = this.options; if (!keyOf) { return } for (let i = 0; i < items.length; i++) { const item = items[i]; const key = keyOf(item); internalKeys.push(key) } this.setSelectedItems(internalKeys, items) } _warnOnIncorrectKeys(keys) { const { allowNullValue: allowNullValue } = this.options; for (let i = 0; i < keys.length; i++) { const key = keys[i]; if ((!allowNullValue || null !== key) && !this.isItemKeySelected(key)) { _ui.default.log("W1002", key) } } } _isMultiSelectEnabled() { const { mode: mode } = this.options; return "all" === mode || "multiple" === mode } _requestInProgress() { var _this$_lastLoadDeferr; return "pending" === (null === (_this$_lastLoadDeferr = this._lastLoadDeferred) || void 0 === _this$_lastLoadDeferr ? void 0 : _this$_lastLoadDeferr.state()) } _concatRequestsItems(keys, isDeselect, oldRequestItems, updatedKeys) { let selectedItems; const deselectedItems = isDeselect ? keys : []; if (updatedKeys) { selectedItems = updatedKeys } else { selectedItems = (0, _array.removeDuplicates)(keys, this.options.selectedItemKeys) } return { addedItems: oldRequestItems.added.concat(selectedItems), removedItems: oldRequestItems.removed.concat(deselectedItems), keys: keys } } _collectLastRequestData(keys, isDeselect, isSelectAll, updatedKeys) { const isDeselectAll = isDeselect && isSelectAll; const oldRequestItems = { added: [], removed: [] }; const multiSelectEnabled = this._isMultiSelectEnabled(); let lastRequestData = multiSelectEnabled ? this._lastRequestData : {}; if (multiSelectEnabled) { if (this._shouldMergeWithLastRequest) { if (isDeselectAll) { this._lastLoadDeferred.reject(); lastRequestData = {} } else if (!(0, _array_compare.isKeysEqual)(keys, this.options.selectedItemKeys)) { oldRequestItems.added = lastRequestData.addedItems; oldRequestItems.removed = lastRequestData.removedItems; if (!isDeselect) { this._lastLoadDeferred.reject() } } } lastRequestData = this._concatRequestsItems(keys, isDeselect, oldRequestItems, this._shouldMergeWithLastRequest ? void 0 : updatedKeys) } return lastRequestData } _updateKeysByLastRequestData(keys, isDeselect, isSelectAll) { let currentKeys = keys; if (this._isMultiSelectEnabled() && this._shouldMergeWithLastRequest && !isDeselect && !isSelectAll) { var _this$_lastRequestDat, _this$_lastRequestDat2; currentKeys = (0, _array.removeDuplicates)(keys.concat(null === (_this$_lastRequestDat = this._lastRequestData) || void 0 === _this$_lastRequestDat ? void 0 : _this$_lastRequestDat.addedItems), null === (_this$_lastRequestDat2 = this._lastRequestData) || void 0 === _this$_lastRequestDat2 ? void 0 : _this$_lastRequestDat2.removedItems); currentKeys = (0, _array.getUniqueValues)(currentKeys) } return currentKeys } _loadSelectedItems(keys, isDeselect, isSelectAll, updatedKeys) { let forceCombinedFilter = arguments.length > 4 && void 0 !== arguments[4] ? arguments[4] : false; const that = this; const deferred = (0, _deferred.Deferred)(); const filter = that.options.filter(); this._shouldMergeWithLastRequest = this._requestInProgress(); this._lastRequestData = this._collectLastRequestData(keys, isDeselect, isSelectAll, updatedKeys); (0, _deferred.when)(that._lastLoadDeferred).always((() => { const currentKeys = that._updateKeysByLastRequestData(keys, isDeselect, isSelectAll); that._shouldMergeWithLastRequest = false; that._loadSelectedItemsCore(currentKeys, isDeselect, isSelectAll, filter, forceCombinedFilter).done(deferred.resolve).fail(deferred.reject) })); that._lastLoadDeferred = deferred; return deferred } selectedItemKeys(keys, preserve, isDeselect, isSelectAll, updatedKeys) { let forceCombinedFilter = arguments.length > 5 && void 0 !== arguments[5] ? arguments[5] : false; if (this._isCancelingInProgress) { return (0, _deferred.Deferred)().reject() } const loadingDeferred = this._loadSelectedItems(keys, isDeselect, isSelectAll, updatedKeys, forceCombinedFilter); const selectionDeferred = (0, _deferred.Deferred)(); loadingDeferred.done((items => { this._storeSelectionState(); if (preserve) { this._preserveSelectionUpdate(items, isDeselect) } else { this._replaceSelectionUpdate(items) } this._isCancelingInProgress = true; this._callCallbackIfNotCanceled((() => { this._isCancelingInProgress = false; this.onSelectionChanged(); selectionDeferred.resolve(items) }), (() => { this._isCancelingInProgress = false; this._restoreSelectionState(); selectionDeferred.reject() })) })); return selectionDeferred } addSelectedItem(key, itemData) { if ((0, _type.isDefined)(itemData) && !this.options.ignoreDisabledItems && itemData.disabled) { if (-1 === this.options.disabledItemKeys.indexOf(key)) { this.options.disabledItemKeys.push(key) } return } const keyHash = this._getKeyHash(key); if (-1 === this._indexOfSelectedItemKey(keyHash)) { if (!(0, _type.isObject)(keyHash) && this.options.keyHashIndices) { this.options.keyHashIndices[keyHash] = [this.options.selectedItemKeys.length] } this.options.selectedItemKeys.push(key); this.options.addedItemKeys.push(key); this.options.addedItems.push(itemData); this.options.selectedItems.push(itemData) } } _getSelectedIndexByKey(key, ignoreIndicesMap) { const { selectedItemKeys: selectedItemKeys } = this.options; for (let index = 0; index < selectedItemKeys.length; index++) { if ((!ignoreIndicesMap || !ignoreIndicesMap[index]) && this.equalKeys(selectedItemKeys[index], key)) { return index } } return -1 } _getSelectedIndexByHash(key, ignoreIndicesMap) { let indices = this.options.keyHashIndices[key]; if (indices && indices.length > 1 && ignoreIndicesMap) { indices = indices.filter((index => !ignoreIndicesMap[index])) } return indices && indices[0] >= 0 ? indices[0] : -1 } _indexOfSelectedItemKey(key, ignoreIndicesMap) { let selectedIndex; if (this.options.equalByReference) { selectedIndex = this.options.selectedItemKeys.indexOf(key) } else if ((0, _type.isObject)(key)) { selectedIndex = this._getSelectedIndexByKey(key, ignoreIndicesMap) } else { selectedIndex = this._getSelectedIndexByHash(key, ignoreIndicesMap) } return selectedIndex } _shiftSelectedKeyIndices(keyIndex) { for (let currentKeyIndex = keyIndex; currentKeyIndex < this.options.selectedItemKeys.length; currentKeyIndex++) { const currentKey = this.options.selectedItemKeys[currentKeyIndex]; const currentKeyHash = (0, _common.getKeyHash)(currentKey); const currentKeyIndices = this.options.keyHashIndices[currentKeyHash]; if (!currentKeyIndices) { continue } for (let i = 0; i < currentKeyIndices.length; i++) { if (currentKeyIndices[i] > keyIndex) { currentKeyIndices[i]-- } } } } removeSelectedItem(key, keyIndicesToRemoveMap, isDisabled) { if (!this.options.ignoreDisabledItems && isDisabled) { return } const keyHash = this._getKeyHash(key); const isBatchDeselect = !!keyIndicesToRemoveMap; const keyIndex = this._indexOfSelectedItemKey(keyHash, keyIndicesToRemoveMap); if (keyIndex < 0) { return keyIndex } this.options.removedItemKeys.push(key); this.options.removedItems.push(this.options.selectedItems[keyIndex]); if (isBatchDeselect) { return keyIndex } this.options.selectedItemKeys.splice(keyIndex, 1); this.options.selectedItems.splice(keyIndex, 1); if ((0, _type.isObject)(keyHash) || !this.options.keyHashIndices) { return keyIndex } const keyIndices = this.options.keyHashIndices[keyHash]; if (!keyIndices) { return keyIndex } keyIndices.shift(); if (!keyIndices.length) { delete this.options.keyHashIndices[keyHash] } this._shiftSelectedKeyIndices(keyIndex); return keyIndex } _updateAddedItemKeys(keys, items) { for (let i = 0; i < keys.length; i++) { if (!this.isItemKeySelected(keys[i])) { this.options.addedItemKeys.push(keys[i]); this.options.addedItems.push(items[i]) } } } _updateRemovedItemKeys(keys, oldSelectedKeys, oldSelectedItems) { for (let i = 0; i < oldSelectedKeys.length; i++) { if (!this.isItemKeySelected(oldSelectedKeys[i])) { this.options.removedItemKeys.push(oldSelectedKeys[i]); this.options.removedItems.push(oldSelectedItems[i]) } } } _isItemSelectionInProgress(key, checkPending) { const shouldCheckPending = checkPending && this._lastRequestData && this._requestInProgress(); if (shouldCheckPending) { const addedItems = this._lastRequestData.addedItems ?? []; return addedItems.includes(key) } return false } _getKeyHash(key) { return this.options.equalByReference ? key : (0, _common.getKeyHash)(key) } setSelectedItems(keys, items) { this._updateAddedItemKeys(keys, items); const oldSelectedKeys = this.options.selectedItemKeys; const oldSelectedItems = this.options.selectedItems; if (!this.options.equalByReference) { this._initSelectedItemKeyHash(); this.updateSelectedItemKeyHash(keys) } this._setOption("selectedItemKeys", keys); this._setOption("selectedItems", items); this._updateRemovedItemKeys(keys, oldSelectedKeys, oldSelectedItems) } isItemDataSelected(itemData) { let options = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {}; const key = this.options.keyOf(itemData); return this.isItemKeySelected(key, options) } isItemKeySelected(key) { let options = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {}; let result = this._isItemSelectionInProgress(key, options.checkPending); if (!result) { const keyHash = this._getKeyHash(key); const index = this._indexOfSelectedItemKey(keyHash); result = -1 !== index } return result } getSelectAllState(visibleOnly) { if (visibleOnly) { return this._getVisibleSelectAllState() } return this._getFullSelectAllState() } loadSelectedItemsWithFilter() { const keyExpr = this.options.key(); const keys = this.getSelectedItemKeys(); const filter = this.options.filter(); if (!keys.length) { return (0, _deferred.Deferred)().resolve([]) } const selectionFilterCreator = new _selection_filter.SelectionFilterCreator(keys); const combinedFilter = selectionFilterCreator.getCombinedFilter(keyExpr, filter, true); return this._loadFilteredData(combinedFilter) } _storeSelectionState() { const { selectedItems: selectedItems, selectedItemKeys: selectedItemKeys, keyHashIndices: keyHashIndices } = this.options; this._storedSelectionState = { keyHashIndices: JSON.stringify(keyHashIndices), selectedItems: [...selectedItems], selectedItemKeys: [...selectedItemKeys] } } _restoreSelectionState() { this._clearItemKeys(); const { selectedItemKeys: selectedItemKeys, selectedItems: selectedItems, keyHashIndices: keyHashIndices } = this._storedSelectionState; this._setOption("selectedItemKeys", selectedItemKeys); this._setOption("selectedItems", selectedItems); this._setOption("keyHashIndices", JSON.parse(keyHashIndices)) } _onePageSelectAll(isDeselect) { if ("pending" === this._lastSelectAllPageDeferred.state()) { return (0, _deferred.Deferred)().reject() } this._storeSelectionState(); this._selectAllPlainItems(isDeselect); this._lastSelectAllPageDeferred = (0, _deferred.Deferred)(); this._callCallbackIfNotCanceled((() => { this.onSelectionChanged(); this._lastSelectAllPageDeferred.resolve() }), (() => { this._restoreSelectionState(); this._lastSelectAllPageDeferred.reject() })); return this._lastSelectAllPageDeferred } } exports.default = StandardStrategy }, 59803: /*!****************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/ui/shared/m_grouped_data_converter_mixin.js ***! \****************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _type = __webpack_require__( /*! ../../../core/utils/type */ 11528); exports.default = { _getSpecificDataSourceOption() { let dataSource = this.option("dataSource"); let hasSimpleItems = false; let data = {}; if (this._getGroupedOption() && (data => Array.isArray(data) && data.every((item => { const hasTwoFields = 2 === Object.keys(item).length; const hasCorrectFields = "key" in item && "items" in item; return hasTwoFields && hasCorrectFields && Array.isArray(item.items) })))(dataSource)) { data = dataSource.reduce(((accumulator, item) => { const items = item.items.map((innerItem => { if (!(0, _type.isObject)(innerItem)) { innerItem = { text: innerItem }; hasSimpleItems = true } if (!("key" in innerItem)) { innerItem.key = item.key } return innerItem })); return accumulator.concat(items) }), []); dataSource = { store: { type: "array", data: data }, group: { selector: "key", keepInitialKeyOrder: true } }; if (hasSimpleItems) { dataSource.searchExpr = "text" } } return dataSource } } }, 8532: /*!******************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/ui/slider/m_slider.js ***! \******************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _click = __webpack_require__( /*! ../../../common/core/events/click */ 64044); var _emitter = __webpack_require__( /*! ../../../common/core/events/core/emitter.feedback */ 69331); var _events_engine = _interopRequireDefault(__webpack_require__( /*! ../../../common/core/events/core/events_engine */ 92774)); var _swipeable = _interopRequireDefault(__webpack_require__( /*! ../../../common/core/events/gesture/swipeable */ 18278)); var _pointer = _interopRequireDefault(__webpack_require__( /*! ../../../common/core/events/pointer */ 89797)); var _index = __webpack_require__( /*! ../../../common/core/events/utils/index */ 98834); var _number = _interopRequireDefault(__webpack_require__( /*! ../../../common/core/localization/number */ 52771)); var _component_registrator = _interopRequireDefault(__webpack_require__( /*! ../../../core/component_registrator */ 92848)); var _devices = _interopRequireDefault(__webpack_require__( /*! ../../../core/devices */ 65951)); var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../../core/renderer */ 64553)); var _common = __webpack_require__( /*! ../../../core/utils/common */ 17781); var _deferred = __webpack_require__( /*! ../../../core/utils/deferred */ 87739); var _math = __webpack_require__( /*! ../../../core/utils/math */ 50254); var _size = __webpack_require__( /*! ../../../core/utils/size */ 57653); var _themes = __webpack_require__( /*! ../../../ui/themes */ 52071); var _utils = __webpack_require__( /*! ../../../ui/widget/utils.ink_ripple */ 63322); var _m_track_bar = _interopRequireDefault(__webpack_require__( /*! ../m_track_bar */ 37062)); var _m_slider_handle = _interopRequireDefault(__webpack_require__( /*! ./m_slider_handle */ 29049)); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } function _extends() { return _extends = Object.assign ? Object.assign.bind() : function(n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) { ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]) } } return n }, _extends.apply(null, arguments) } class Slider extends _m_track_bar.default { _supportedKeys() { const { rtlEnabled: rtlEnabled } = this.option(); const roundedValue = (offset, isLeftDirection) => { offset = this._valueStep(offset); const { step: step, value: value, min: min, max: max } = this.option(); const currentPosition = value - min; const remainder = (0, _math.getRemainderByDivision)(currentPosition, step, this._getValueExponentLength()); let result = isLeftDirection ? value - offset + (remainder ? step - remainder : 0) : value + offset - remainder; if (result < min) { result = min } else if (result > max) { result = max } return this._roundToExponentLength(result) }; const moveHandleRight = offset => { this.option("value", roundedValue(offset, rtlEnabled)) }; const moveHandleLeft = offset => { this.option("value", roundedValue(offset, !rtlEnabled)) }; return _extends({}, super._supportedKeys(), { leftArrow(e) { this._processKeyboardEvent(e); moveHandleLeft(this.option("step")) }, rightArrow(e) { this._processKeyboardEvent(e); moveHandleRight(this.option("step")) }, pageUp(e) { this._processKeyboardEvent(e); moveHandleRight(this.option("step") * this.option("keyStep")) }, pageDown(e) { this._processKeyboardEvent(e); moveHandleLeft(this.option("step") * this.option("keyStep")) }, home(e) { this._processKeyboardEvent(e); const min = this.option("min"); this.option("value", min) }, end(e) { this._processKeyboardEvent(e); const max = this.option("max"); this.option("value", max) } }) } _processKeyboardEvent(e) { e.preventDefault(); e.stopPropagation(); this._saveValueChangeEvent(e) } _getDefaultOptions() { return _extends({}, super._getDefaultOptions(), { value: 50, hoverStateEnabled: true, activeStateEnabled: true, step: 1, showRange: true, tooltip: { enabled: false, format: value => value, position: "top", showMode: "onHover" }, label: { visible: false, position: "bottom", format: value => value }, keyStep: 1, useInkRipple: false, validationMessageOffset: (0, _themes.isMaterial)() ? { h: 18, v: 0 } : { h: 7, v: 4 }, focusStateEnabled: true, valueChangeMode: "onHandleMove" }) } _init() { super._init(); this._activeStateUnit = ".dx-slider-handle" } _toggleValidationMessage(visible) { if (!this.option("isValid")) { this.$element().toggleClass("dx-invalid-message-visible", visible) } } _defaultOptionsRules() { return super._defaultOptionsRules().concat([{ device: () => "desktop" === _devices.default.real().deviceType && !_devices.default.isSimulator(), options: { focusStateEnabled: true } }, { device() { const themeName = (0, _themes.current)(); return (0, _themes.isMaterial)(themeName) }, options: { useInkRipple: true } }]) } _initMarkup() { this.$element().addClass("dx-slider"); this._renderSubmitElement(); this.option("useInkRipple") && this._renderInkRipple(); super._initMarkup(); this._renderLabels(); this._renderStartHandler(); this._renderAriaMinAndMax() } _attachFocusEvents() { super._attachFocusEvents(); const namespace = this.NAME + "Validation"; const focusInEvent = (0, _index.addNamespace)("focusin", namespace); const focusOutEvent = (0, _index.addNamespace)("focusout", namespace); const $focusTarget = this._focusTarget(); _events_engine.default.on($focusTarget, focusInEvent, this._toggleValidationMessage.bind(this, true)); _events_engine.default.on($focusTarget, focusOutEvent, this._toggleValidationMessage.bind(this, false)) } _detachFocusEvents() { super._detachFocusEvents(); const $focusTarget = this._focusTarget(); this._toggleValidationMessage(false); _events_engine.default.off($focusTarget, this.NAME + "Validation") } _render() { super._render(); this._repaintHandle() } _renderSubmitElement() { this._$submitElement = (0, _renderer.default)("<input>").attr("type", "hidden").appendTo(this.$element()) } _getSubmitElement() { return this._$submitElement } _renderInkRipple() { this._inkRipple = (0, _utils.render)({ waveSizeCoefficient: .7, isCentered: true, wavesNumber: 2, useHoldAnimation: false }) } _renderInkWave(element, dxEvent, doRender, waveIndex) { if (!this._inkRipple) { return } const config = { element: element, event: dxEvent, wave: waveIndex }; if (doRender) { this._inkRipple.showWave(config) } else { this._inkRipple.hideWave(config) } } _visibilityChanged() { this.repaint() } _renderWrapper() { super._renderWrapper(); this._$wrapper.addClass("dx-slider-wrapper"); this._createComponent(this._$wrapper, _swipeable.default, { rtlEnabled: false, elastic: false, immediate: true, immediateTimeout: 0, onStart: this._swipeStartHandler.bind(this), onUpdated: this._swipeUpdateHandler.bind(this), onEnd: this._swipeEndHandler.bind(this), itemSizeFunc: this._itemWidthFunc.bind(this) }) } _renderContainer() { super._renderContainer(); this._$bar.addClass("dx-slider-bar") } _renderRange() { super._renderRange(); this._$range.addClass("dx-slider-range"); this._renderHandle(); this._renderRangeVisibility() } _renderRangeVisibility() { this._$range.toggleClass("dx-slider-range-visible", Boolean(this.option("showRange"))) } _renderHandle() { const { value: value } = this.option(); this._$handle = this._renderHandleImpl(value, this._$handle) } _renderHandleImpl(value, $element) { const $handle = $element || (0, _renderer.default)("<div>").appendTo(this._$range); const { tooltip: tooltip } = this.option(); this.$element().toggleClass("dx-slider-tooltip-position-bottom", (null === tooltip || void 0 === tooltip ? void 0 : tooltip.enabled) && "bottom" === (null === tooltip || void 0 === tooltip ? void 0 : tooltip.position)).toggleClass("dx-slider-tooltip-position-top", (null === tooltip || void 0 === tooltip ? void 0 : tooltip.enabled) && "top" === (null === tooltip || void 0 === tooltip ? void 0 : tooltip.position)); this._createComponent($handle, _m_slider_handle.default, { value: value, tooltip: tooltip }); return $handle } _renderAriaMinAndMax() { this.setAria({ valuemin: this.option("min"), valuemax: this.option("max") }, this._$handle) } _toggleActiveState($element, value) { super._toggleActiveState($element, value); this._renderInkWave($element, null, !!value, 1) } _toggleFocusClass(isFocused, $element) { super._toggleFocusClass(isFocused, $element); if (this._disposed) { return } const $focusTarget = (0, _renderer.default)($element || this._focusTarget()); this._renderInkWave($focusTarget, null, isFocused, 0) } _renderLabels() { this.$element().removeClass("dx-slider-label-position-bottom").removeClass("dx-slider-label-position-top"); if (this.option("label.visible")) { const { min: min, max: max } = this.option(); const position = this.option("label.position"); const labelFormat = this.option("label.format"); if (!this._$minLabel) { this._$minLabel = (0, _renderer.default)("<div>").addClass("dx-slider-label").appendTo(this._$wrapper) } this._$minLabel.text(_number.default.format(min, labelFormat)); if (!this._$maxLabel) { this._$maxLabel = (0, _renderer.default)("<div>").addClass("dx-slider-label").appendTo(this._$wrapper) } this._$maxLabel.text(_number.default.format(max, labelFormat)); this.$element().addClass("dx-slider-label-position-" + position) } else { if (this._$minLabel) { this._$minLabel.remove(); delete this._$minLabel } if (this._$maxLabel) { this._$maxLabel.remove(); delete this._$maxLabel } } } _renderStartHandler() { const pointerDownEventName = (0, _index.addNamespace)(_pointer.default.down, this.NAME); const clickEventName = (0, _index.addNamespace)(_click.name, this.NAME); const startAction = this._createAction(this._startHandler.bind(this)); const $element = this.$element(); _events_engine.default.off($element, pointerDownEventName); _events_engine.default.on($element, pointerDownEventName, (e => { if ((0, _index.isMouseEvent)(e)) { startAction({ event: e }) } })); _events_engine.default.off($element, clickEventName); _events_engine.default.on($element, clickEventName, (e => { const $handle = this._activeHandle(); if ($handle) { _events_engine.default.trigger($handle, "focusin"); _events_engine.default.trigger($handle, "focus") } startAction({ event: e }); const { valueChangeMode: valueChangeMode } = this.option(); if ("onHandleRelease" === valueChangeMode) { this.option("value", this._getActualValue()); this._actualValue = void 0 } })) } _itemWidthFunc() { return this._itemWidthRatio } _swipeStartHandler(e) { const rtlEnabled = this.option("rtlEnabled"); if ((0, _index.isTouchEvent)(e.event)) { this._createAction(this._startHandler.bind(this))({ event: e.event }) } this._feedbackDeferred = (0, _deferred.Deferred)(); (0, _emitter.lock)(this._feedbackDeferred); const { activeStateEnabled: activeStateEnabled } = this.option(); this._toggleActiveState(this._activeHandle(), activeStateEnabled); this._startOffset = this._currentRatio; const startOffset = this._startOffset * this._swipePixelRatio(); const endOffset = (1 - this._startOffset) * this._swipePixelRatio(); e.event.maxLeftOffset = rtlEnabled ? endOffset : startOffset; e.event.maxRightOffset = rtlEnabled ? startOffset : endOffset; this._itemWidthRatio = (0, _size.getWidth)(this.$element()) / this._swipePixelRatio(); this._needPreventAnimation = true } _swipeEndHandler(e) { var _this$_feedbackDeferr; if (this._isSingleValuePossible()) { return } null === (_this$_feedbackDeferr = this._feedbackDeferred) || void 0 === _this$_feedbackDeferr || _this$_feedbackDeferr.resolve(); this._toggleActiveState(this._activeHandle(), false); const offsetDirection = this.option("rtlEnabled") ? -1 : 1; const ratio = this._startOffset + offsetDirection * e.event.targetOffset / this._swipePixelRatio(); delete this._needPreventAnimation; this._saveValueChangeEvent(e.event); this._changeValueOnSwipe(ratio); const { valueChangeMode: valueChangeMode } = this.option(); if ("onHandleRelease" === valueChangeMode) { this.option("value", this._getActualValue()) } this._actualValue = void 0; delete this._startOffset; this._renderValue() } _activeHandle() { return this._$handle } _swipeUpdateHandler(e) { if (this._isSingleValuePossible()) { return } this._saveValueChangeEvent(e.event); this._updateHandlePosition(e) } _updateHandlePosition(e) { const offsetDirection = this.option("rtlEnabled") ? -1 : 1; const newRatio = Math.min(this._startOffset + offsetDirection * e.event.offset / this._swipePixelRatio(), 1); (0, _size.setWidth)(this._$range, 100 * newRatio + "%"); _m_slider_handle.default.getInstance(this._activeHandle()).fitTooltipPosition; this._changeValueOnSwipe(newRatio) } _swipePixelRatio() { const { min: min, max: max } = this.option(); const step = this._valueStep(this.option("step")); return (max - min) / step } _valueStep(step) { if (!step || isNaN(step)) { step = 1 } return step } _getValueExponentLength() { const { step: step, min: min } = this.option(); return Math.max((0, _math.getExponentLength)(step), (0, _math.getExponentLength)(min)) } _roundToExponentLength(value) { const valueExponentLength = this._getValueExponentLength(); return (0, _math.roundFloatPart)(value, valueExponentLength) } _changeValueOnSwipe(ratio) { const { min: min, max: max } = this.option(); const step = this._valueStep(this.option("step")); const newChange = ratio * (max - min); let newValue = min + newChange; if (step < 0) { return } if (newValue === max || newValue === min) { this._setValueOnSwipe(newValue) } else { const stepCount = Math.round((newValue - min) / step); newValue = this._roundToExponentLength(stepCount * step + min); this._setValueOnSwipe(Math.max(Math.min(newValue, max), min)) } } _setValueOnSwipe(value) { this._actualValue = value; const { valueChangeMode: valueChangeMode } = this.option(); if ("onHandleRelease" === valueChangeMode) { _m_slider_handle.default.getInstance(this._activeHandle()).option("value", value) } else { this.option("value", value); this._saveValueChangeEvent(void 0) } } _getActualValue() { const { value: value } = this.option(); return this._actualValue ?? value } _isSingleValuePossible() { const { min: min, max: max } = this.option(); return min === max } _startHandler(args) { if (this._isSingleValuePossible()) { return } const e = args.event; this._currentRatio = ((0, _index.eventData)(e).x - this._$bar.offset().left) / (0, _size.getWidth)(this._$bar); if (this.option("rtlEnabled")) { this._currentRatio = 1 - this._currentRatio } this._saveValueChangeEvent(e); this._changeValueOnSwipe(this._currentRatio) } _renderValue() { super._renderValue(); const value = this._getActualValue(); this._getSubmitElement().val((0, _common.applyServerDecimalSeparator)(value)); _m_slider_handle.default.getInstance(this._activeHandle()).option("value", value) } _setRangeStyles(options) { options && this._$range.css(options) } _callHandlerMethod(name, args) { _m_slider_handle.default.getInstance(this._$handle)[name](args) } _repaintHandle() { this._callHandlerMethod("repaint") } _fitTooltip() { this._callHandlerMethod("updateTooltipPosition") } _optionChanged(args) { switch (args.name) { case "visible": super._optionChanged(args); this._renderHandle(); this._repaintHandle(); break; case "min": case "max": this._renderValue(); super._optionChanged(args); this._renderLabels(); this._renderAriaMinAndMax(); this._fitTooltip(); break; case "step": this._renderValue(); break; case "keyStep": case "valueChangeMode": break; case "showRange": this._renderRangeVisibility(); break; case "tooltip": this._renderHandle(); break; case "label": this._renderLabels(); break; case "useInkRipple": this._invalidate(); break; default: super._optionChanged(args) } } _refresh() { const { rtlEnabled: rtlEnabled } = this.option(); this._toggleRTLDirection(rtlEnabled); this._renderDimensions(); this._renderValue(); this._renderHandle(); this._repaintHandle() } _clean() { delete this._inkRipple; delete this._actualValue; super._clean() } }(0, _component_registrator.default)("dxSlider", Slider); exports.default = Slider }, 29049: /*!*************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/ui/slider/m_slider_handle.js ***! \*************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../../core/renderer */ 64553)); var _widget = _interopRequireDefault(__webpack_require__( /*! ../../core/widget/widget */ 89275)); var _m_slider_tooltip = _interopRequireDefault(__webpack_require__( /*! ../../ui/slider/m_slider_tooltip */ 52904)); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } function _extends() { return _extends = Object.assign ? Object.assign.bind() : function(n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) { ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]) } } return n }, _extends.apply(null, arguments) } class SliderHandle extends _widget.default { _getDefaultOptions() { return _extends({}, super._getDefaultOptions(), { hoverStateEnabled: false, value: 0, tooltip: { enabled: false, format: value => value, position: "top", showMode: "onHover" } }) } _initMarkup() { super._initMarkup(); this.$element().addClass("dx-slider-handle"); this.setAria({ role: "slider", valuenow: this.option("value"), label: "Slider" }) } _render() { super._render(); this._renderTooltip() } _renderTooltip() { const { tooltip: tooltip, value: value } = this.option(); const { position: position, format: format, enabled: enabled, showMode: showMode } = tooltip ?? {}; const $sliderTooltip = (0, _renderer.default)("<div>"); this._sliderTooltip = this._createComponent($sliderTooltip, _m_slider_tooltip.default, { target: this.$element(), container: $sliderTooltip, position: position, visible: enabled, showMode: showMode, format: format, value: value }) } _clean() { super._clean(); this._sliderTooltip = null } _updateTooltipOptions(args) { var _this$_sliderTooltip; const tooltipOptions = _widget.default.getOptionsFromContainer(args); this._setWidgetOption("_sliderTooltip", [tooltipOptions]); null === (_this$_sliderTooltip = this._sliderTooltip) || void 0 === _this$_sliderTooltip || _this$_sliderTooltip.option("visible", tooltipOptions.enabled) } _optionChanged(args) { const { name: name, value: value } = args; switch (name) { case "value": var _this$_sliderTooltip2; null === (_this$_sliderTooltip2 = this._sliderTooltip) || void 0 === _this$_sliderTooltip2 || _this$_sliderTooltip2.option("value", value); this.setAria("valuenow", value); break; case "tooltip": this._updateTooltipOptions(args); break; default: super._optionChanged(args) } } updateTooltipPosition() { var _this$_sliderTooltip3; null === (_this$_sliderTooltip3 = this._sliderTooltip) || void 0 === _this$_sliderTooltip3 || _this$_sliderTooltip3.updatePosition() } repaint() { var _this$_sliderTooltip4; null === (_this$_sliderTooltip4 = this._sliderTooltip) || void 0 === _this$_sliderTooltip4 || _this$_sliderTooltip4.repaint() } } exports.default = SliderHandle }, 52904: /*!**************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/ui/slider/m_slider_tooltip.js ***! \**************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _number = _interopRequireDefault(__webpack_require__( /*! ../../../common/core/localization/number */ 52771)); var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../../core/renderer */ 64553)); var _m_tooltip = _interopRequireDefault(__webpack_require__( /*! ../../ui/m_tooltip */ 3504)); var _m_slider_tooltip_position_controller = __webpack_require__( /*! ./m_slider_tooltip_position_controller */ 12039); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } function _extends() { return _extends = Object.assign ? Object.assign.bind() : function(n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) { ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]) } } return n }, _extends.apply(null, arguments) } class SliderTooltip extends _m_tooltip.default { _getDefaultOptions() { return _extends({}, super._getDefaultOptions(), { visible: false, position: "top", hideOnOutsideClick: false, hideTopOverlayHandler: null, hideOnParentScroll: false, animation: null, arrowPosition: null, templatesRenderAsynchronously: false, _fixWrapperPosition: false, useResizeObserver: false, showMode: "onHover", format: value => value, value: 0 }) } _initMarkup() { super._initMarkup(); const { visible: visible } = this.option(); this._attachToMarkup(visible); this._toggleShowModeClass() } _renderContent() { super._renderContent(); this._renderContentText() } _toggleAriaAttributes() {} _renderContentText() { const { value: value, format: format } = this.option(); const formattedText = _number.default.format(value ?? 0, format); this.$content().text(formattedText); this._renderPosition() } _toggleShowModeClass() { const { showMode: showMode, target: target } = this.option(); const isHoverMode = "onHover" === showMode; const $sliderHandle = (0, _renderer.default)(target); $sliderHandle.toggleClass("dx-slider-tooltip-visible-on-hover", isHoverMode) } _initPositionController() { this._positionController = new _m_slider_tooltip_position_controller.SliderTooltipPositionController(this._getPositionControllerConfig()) } _attachToMarkup(enabled) { const { target: target } = this.option(); const $sliderHandle = (0, _renderer.default)(target); if (enabled) { this.$element().appendTo($sliderHandle) } else { this.$element().detach() } } _optionChanged(args) { const { name: name, value: value } = args; switch (name) { case "visible": this._attachToMarkup(value); super._optionChanged(args); break; case "showMode": this._toggleShowModeClass(); break; case "format": case "value": this._renderContentText(); break; default: super._optionChanged(args) } } updatePosition() { this._renderPosition() } } exports.default = SliderTooltip }, 12039: /*!**********************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/ui/slider/m_slider_tooltip_position_controller.js ***! \**********************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.SliderTooltipPositionController = void 0; var _position = (e = __webpack_require__( /*! ../../../common/core/animation/position */ 3030), e && e.__esModule ? e : { default: e }); var e; var _translator = __webpack_require__( /*! ../../../common/core/animation/translator */ 88603); var _extend = __webpack_require__( /*! ../../../core/utils/extend */ 52576); var _type = __webpack_require__( /*! ../../../core/utils/type */ 11528); var _m_popover_position_controller = __webpack_require__( /*! ../../ui/popover/m_popover_position_controller */ 96423); const SLIDER_TOOLTIP_POSITION_ALIASES = { top: { my: "bottom center", at: "top center", collision: "fit none" }, bottom: { my: "top center", at: "bottom center", collision: "fit none" } }; const SLIDER_TOOLTIP_DEFAULT_BOUNDARY_OFFSET = { h: 2, v: 1 }; class SliderTooltipPositionController extends _m_popover_position_controller.PopoverPositionController { _normalizePosition(positionProp) { const $sliderHandle = this._props.target; const $slider = null === $sliderHandle || void 0 === $sliderHandle ? void 0 : $sliderHandle.closest(".dx-slider"); const defaultPositionConfig = { of: $sliderHandle, boundaryOffset: SLIDER_TOOLTIP_DEFAULT_BOUNDARY_OFFSET, boundary: null === $slider || void 0 === $slider ? void 0 : $slider.get(0) }; const resultPosition = (0, _extend.extend)(true, {}, defaultPositionConfig, this._positionToObject(positionProp)); this._positionSide = this._getDisplaySide(resultPosition); return resultPosition } _renderContentInitialPosition() { super._renderContentInitialPosition(); this._fitIntoSlider() } _fitIntoSlider() { const { collisionSide: collisionSide, oversize: oversize } = _position.default.calculate(this._$content, this._position).h; const { left: left } = this._visualPosition; const isLeftSide = "left" === collisionSide; const offset = (isLeftSide ? 1 : -1) * oversize; (0, _translator.move)(this._$content, { left: left + offset }); this._updateVisualPositionValue() } _positionToObject(positionProp) { if ((0, _type.isString)(positionProp)) { return (0, _extend.extend)({}, SLIDER_TOOLTIP_POSITION_ALIASES[positionProp]) } return positionProp } } exports.SliderTooltipPositionController = SliderTooltipPositionController }, 24251: /*!*****************************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/ui/speed_dial_action/m_repaint_floating_action_button.js ***! \*****************************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _m_speed_dial_main_item = __webpack_require__( /*! ./m_speed_dial_main_item */ 57325); exports.default = _m_speed_dial_main_item.repaint }, 16616: /*!****************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/ui/speed_dial_action/m_speed_dial_action.js ***! \****************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _component_registrator = _interopRequireDefault(__webpack_require__( /*! ../../../core/component_registrator */ 92848)); var _guid = _interopRequireDefault(__webpack_require__( /*! ../../../core/guid */ 19427)); var _extend = __webpack_require__( /*! ../../../core/utils/extend */ 52576); var _ready_callbacks = _interopRequireDefault(__webpack_require__( /*! ../../../core/utils/ready_callbacks */ 3122)); var _swatch_container = _interopRequireDefault(__webpack_require__( /*! ../../../ui/widget/swatch_container */ 5080)); var _widget = _interopRequireDefault(__webpack_require__( /*! ../../core/widget/widget */ 89275)); var _m_speed_dial_main_item = __webpack_require__( /*! ./m_speed_dial_main_item */ 57325); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } const { getSwatchContainer: getSwatchContainer } = _swatch_container.default; const ready = _ready_callbacks.default.add; class SpeedDialAction extends _widget.default { _getDefaultOptions() { return (0, _extend.extend)(super._getDefaultOptions(), { icon: "", onClick: null, label: "", visible: true, index: 0, onContentReady: null, activeStateEnabled: true, hoverStateEnabled: true, animation: { show: { type: "pop", duration: 200, easing: "cubic-bezier(0.4, 0, 0.2, 1)", from: { scale: 0, opacity: 0 }, to: { scale: 1, opacity: 1 } }, hide: { type: "pop", duration: 200, easing: "cubic-bezier(0.4, 0, 0.2, 1)", from: { scale: 1, opacity: 1 }, to: { scale: 0, opacity: 0 } } }, id: new _guid.default }) } _optionChanged(args) { switch (args.name) { case "onClick": case "icon": case "label": case "visible": case "index": case "onInitializing": (0, _m_speed_dial_main_item.initAction)(this); break; case "animation": case "id": break; default: super._optionChanged(args) } } _render() { this._toggleVisibility(false); if (!getSwatchContainer(this.$element())) { ready((() => (0, _m_speed_dial_main_item.initAction)(this))) } else { (0, _m_speed_dial_main_item.initAction)(this) } } _dispose() { (0, _m_speed_dial_main_item.disposeAction)(this._options.silent("id")); super._dispose() } }(0, _component_registrator.default)("dxSpeedDialAction", SpeedDialAction); exports.default = SpeedDialAction }, 56893: /*!**************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/ui/speed_dial_action/m_speed_dial_item.js ***! \**************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _click = __webpack_require__( /*! ../../../common/core/events/click */ 64044); var _events_engine = _interopRequireDefault(__webpack_require__( /*! ../../../common/core/events/core/events_engine */ 92774)); var _index = __webpack_require__( /*! ../../../common/core/events/utils/index */ 98834); var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../../core/renderer */ 64553)); var _icon = __webpack_require__( /*! ../../../core/utils/icon */ 69629); var _type = __webpack_require__( /*! ../../../core/utils/type */ 11528); var _ui = _interopRequireDefault(__webpack_require__( /*! ../../../ui/overlay/ui.overlay */ 89132)); var _themes = __webpack_require__( /*! ../../../ui/themes */ 52071); var _utils = __webpack_require__( /*! ../../../ui/widget/utils.ink_ripple */ 63322); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } function _extends() { return _extends = Object.assign ? Object.assign.bind() : function(n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) { ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]) } } return n }, _extends.apply(null, arguments) } class SpeedDialItem extends _ui.default { _getDefaultOptions() { return _extends({}, super._getDefaultOptions(), { shading: false, useInkRipple: false, callOverlayRenderShading: false, width: "auto", zIndex: 1500, _observeContentResize: false }) } _defaultOptionsRules() { return super._defaultOptionsRules().concat([{ device: () => (0, _themes.isMaterial)(), options: { useInkRipple: true } }]) } _moveToContainer() { this._$wrapper.appendTo(this.$element()); this._$content.appendTo(this._$wrapper) } _render() { this.$element().addClass("dx-fa-button"); this._renderIcon(); this._renderLabel(); super._render(); if (this.option("useInkRipple")) { this._renderInkRipple() } this._renderClick() } _renderLabel() { if (this._$label) { this._$label.remove() } const { label: label } = this.option(); if (!label) { this._$label = null; return } const $element = (0, _renderer.default)("<div>").addClass("dx-fa-button-label"); const $wrapper = (0, _renderer.default)("<div>").addClass("dx-fa-button-label-wrapper"); this._$label = $wrapper.prependTo(this.$content()).append($element.text(label)); this.$content().toggleClass("dx-fa-button-content-reverse", this._isPositionLeft(this.option("parentPosition"))) } _isPositionLeft(position) { let currentLocation = ""; if (position) { if ((0, _type.isPlainObject)(position) && position.at) { if (position.at.x) { currentLocation = position.at.x } else { currentLocation = position.at } } else if ("string" === typeof position) { currentLocation = position } } return "left" === currentLocation.split(" ")[0] } _renderButtonIcon($element, icon, iconClass) { !!$element && $element.remove(); $element = (0, _renderer.default)("<div>").addClass(iconClass); const $iconElement = (0, _icon.getImageContainer)(icon); $element.append($iconElement).appendTo(this.$content()); return $element } _renderIcon() { this._$icon = this._renderButtonIcon(this._$icon, this._options.silent("icon"), "dx-fa-button-icon") } _renderWrapper() { if (this._options.silent("callOverlayRenderShading")) { super._renderWrapper() } } _getVisibleActions(actions) { const currentActions = actions || this.option("actions") || []; return currentActions.filter((action => action.option("visible"))) } _getActionComponent() { if (1 === this._getVisibleActions().length) { return this._getVisibleActions()[0] } return this.option("actionComponent") || this.option("actions")[0] } _initContentReadyAction() { this._contentReadyAction = this._getActionComponent()._createActionByOption("onContentReady", { excludeValidators: ["disabled", "readOnly"] }, true) } _fireContentReadyAction() { this._contentReadyAction({ actionElement: this.$element() }) } _updateZIndexStackPosition() { const { zIndex: zIndex } = this.option(); this._$wrapper.css("zIndex", zIndex); this._$content.css("zIndex", zIndex) } _setClickAction() { const eventName = (0, _index.addNamespace)(_click.name, this.NAME); const overlayContent = this.$element().find(".dx-overlay-content"); _events_engine.default.off(overlayContent, eventName); _events_engine.default.on(overlayContent, eventName, (e => { const clickActionArgs = { event: e, actionElement: this.element(), element: this._getActionComponent().$element() }; this._clickAction(clickActionArgs) })) } _defaultActionArgs() { return { component: this._getActionComponent() } } _renderClick() { this._clickAction = this._getActionComponent()._createActionByOption("onClick"); this._setClickAction() } _renderInkRipple() { this._inkRipple = (0, _utils.render)() } _getInkRippleContainer() { return this._$icon } _toggleActiveState($element, value, event) { super._toggleActiveState($element, value, event); if (!this._inkRipple) { return } const config = { element: this._getInkRippleContainer(), event: event }; if (value) { this._inkRipple.showWave(config) } else { this._inkRipple.hideWave(config) } } _optionChanged(args) { const { name: name, value: value, previousValue: previousValue } = args; switch (name) { case "icon": this._renderIcon(); break; case "onClick": this._renderClick(); break; case "label": this._renderLabel(); break; case "visible": this._currentVisible = previousValue; if (value) { this._show() } else { this._hide() } break; case "useInkRipple": this._render(); break; default: super._optionChanged(args) } } } exports.default = SpeedDialItem }, 57325: /*!*******************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/ui/speed_dial_action/m_speed_dial_main_item.js ***! \*******************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.disposeAction = function(actionId) { if (!speedDialMainItem) { return } const { actions: actions = [] } = speedDialMainItem.option(); let savedActions = actions; const savedActionsCount = savedActions.length; savedActions = savedActions.filter((action => action._options.silent("id") !== actionId)); if (savedActionsCount === savedActions.length) { return } if (!savedActions.length) { speedDialMainItem.dispose(); speedDialMainItem.$element().remove(); speedDialMainItem = null } else if (1 === savedActions.length) { speedDialMainItem.option((0, _extend.extend)({}, modifyActionOptions(savedActions[0]), { actions: savedActions })) } else { speedDialMainItem.option({ actions: savedActions }) } }; exports.initAction = function(newAction) { newAction._options.silent("onInitializing", null); let isActionExist = false; if (!speedDialMainItem) { const $fabMainElement = (0, _renderer.default)("<div>").appendTo(getSwatchContainer(newAction.$element())); speedDialMainItem = newAction._createComponent($fabMainElement, SpeedDialMainItem, (0, _extend.extend)({}, modifyActionOptions(newAction), { actions: [newAction] })) } else { const { actions: savedActions = [] } = speedDialMainItem.option(); savedActions.forEach((action => { if (action._options.silent("id") === newAction._options.silent("id")) { isActionExist = true; return newAction } })); delete speedDialMainItem._options.position; if (!isActionExist) { if (speedDialMainItem._getVisibleActions(savedActions).length >= speedDialMainItem.option("maxSpeedDialActionCount")) { newAction.dispose(); _ui.default.log("W1014"); return } savedActions.push(newAction); speedDialMainItem.option((0, _extend.extend)(speedDialMainItem._getCurrentOptions(savedActions), { actions: savedActions })) } else if (1 === savedActions.length) { speedDialMainItem.option((0, _extend.extend)({}, modifyActionOptions(savedActions[0]), { actions: savedActions, position: speedDialMainItem._getPosition() })) } else { speedDialMainItem.option((0, _extend.extend)(speedDialMainItem._getCurrentOptions(savedActions), { actions: savedActions })) } } }; exports.repaint = function() { if (!speedDialMainItem) { return } const visibleActions = speedDialMainItem._getVisibleActions(); const icon = 1 === visibleActions.length ? visibleActions[0].option("icon") : speedDialMainItem._getDefaultOptions().icon; const label = 1 === visibleActions.length ? visibleActions[0].option("label") : speedDialMainItem._getDefaultOptions().label; speedDialMainItem.option({ actions: speedDialMainItem.option("actions"), icon: icon, closeIcon: speedDialMainItem._getDefaultOptions().closeIcon, position: speedDialMainItem._getPosition(), label: label, maxSpeedDialActionCount: speedDialMainItem._getDefaultOptions().maxSpeedDialActionCount, direction: speedDialMainItem._getDefaultOptions().direction }) }; var _events_engine = _interopRequireDefault(__webpack_require__( /*! ../../../common/core/events/core/events_engine */ 92774)); var _config = _interopRequireDefault(__webpack_require__( /*! ../../../core/config */ 66636)); var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../../core/renderer */ 64553)); var _extend = __webpack_require__( /*! ../../../core/utils/extend */ 52576); var _size = __webpack_require__( /*! ../../../core/utils/size */ 57653); var _themes = __webpack_require__( /*! ../../../ui/themes */ 52071); var _swatch_container = _interopRequireDefault(__webpack_require__( /*! ../../../ui/widget/swatch_container */ 5080)); var _ui = _interopRequireDefault(__webpack_require__( /*! ../../../ui/widget/ui.errors */ 35185)); var _m_speed_dial_item = _interopRequireDefault(__webpack_require__( /*! ./m_speed_dial_item */ 56893)); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } function _extends() { return _extends = Object.assign ? Object.assign.bind() : function(n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) { ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]) } } return n }, _extends.apply(null, arguments) } const { getSwatchContainer: getSwatchContainer } = _swatch_container.default; let speedDialMainItem = null; const modifyActionOptions = action => { const { animation: animation, actionComponent: actionComponent, actionVisible: actionVisible, actions: actions, activeStateEnabled: activeStateEnabled, direction: direction, elementAttr: elementAttr, hint: hint, hoverStateEnabled: hoverStateEnabled, icon: icon, id: id, index: index, label: label, onClick: onClick, onContentReady: onContentReady, parentPosition: parentPosition, position: position, visible: visible, zIndex: zIndex } = action.option(); return (0, _extend.extend)({}, { animation: animation, actionComponent: actionComponent, actionVisible: actionVisible, actions: actions, activeStateEnabled: activeStateEnabled, direction: direction, elementAttr: elementAttr, hint: hint, hoverStateEnabled: hoverStateEnabled, icon: icon, id: id, index: index, label: label, onClick: onClick, onContentReady: onContentReady, parentPosition: parentPosition, position: position, visible: visible, zIndex: zIndex }, { onInitialized: null, onDisposing: null }) }; class SpeedDialMainItem extends _m_speed_dial_item.default { _getDefaultOptions() { const defaultOptions = { icon: "add", closeIcon: "close", position: { at: "right bottom", my: "right bottom", offset: { x: -16, y: -16 } }, maxSpeedDialActionCount: 5, hint: "", label: "", direction: "auto", actions: [], activeStateEnabled: true, hoverStateEnabled: true, indent: (0, _themes.isCompact)() ? 49 : 55, childIndent: 40, childOffset: (0, _themes.isCompact)() ? 2 : 9, callOverlayRenderShading: true, hideOnOutsideClick: true }; return _extends({}, super._getDefaultOptions(), defaultOptions, (0, _config.default)().floatingActionButtonConfig, { shading: false }) } _defaultOptionsRules() { return super._defaultOptionsRules().concat([{ device: () => (0, _themes.isFluent)() && !(0, _themes.isCompact)(), options: { indent: 60, childIndent: 60, childOffset: 0 } }, { device: () => (0, _themes.isFluent)() && (0, _themes.isCompact)(), options: { indent: 48, childIndent: 48, childOffset: 0 } }, { device: () => (0, _themes.isMaterial)() && !(0, _themes.isCompact)(), options: { indent: 72, childIndent: 56, childOffset: 8 } }, { device: () => (0, _themes.isMaterial)() && (0, _themes.isCompact)(), options: { indent: 58, childIndent: 48, childOffset: 1 } }]) } _render() { this.$element().addClass("dx-fa-button-main"); super._render(); this._moveToContainer(); this._renderCloseIcon(); this._renderClick() } _renderLabel() { super._renderLabel(); this.$element().toggleClass("dx-fa-button-with-label", !!this._$label) } _renderIcon() { super._renderIcon(); this.$element().toggleClass("dx-fa-button-without-icon", !this.option("icon")) } _renderCloseIcon() { this._$closeIcon = this._renderButtonIcon(this._$closeIcon, this._options.silent("closeIcon"), "dx-fa-button-icon-close"); this._$closeIcon.addClass("dx-state-invisible") } _renderClick() { this._clickAction = 1 === this._getVisibleActions().length ? this._getActionComponent()._createActionByOption("onClick") : this._createAction(this._clickHandler.bind(this)); this._setClickAction() } _getVisibleActions(actions) { const currentActions = actions || this.option("actions"); return currentActions.filter((action => action.option("visible"))) } _getCurrentOptions(actions) { var _speedDialMainItem; const visibleActions = null === (_speedDialMainItem = speedDialMainItem) || void 0 === _speedDialMainItem ? void 0 : _speedDialMainItem._getVisibleActions(actions); const defaultOptions = this._getDefaultOptions(); return 1 === visibleActions.length ? (0, _extend.extend)(modifyActionOptions(visibleActions[0]), { position: this._getPosition() }) : (0, _extend.extend)(defaultOptions, { visible: 0 !== visibleActions.length }) } _clickHandler() { var _config$floatingActio; const actions = this._actionItems.filter((action => action.option("actionVisible"))).sort(((action, nextAction) => action.option("index") - nextAction.option("index"))); if (1 === actions.length) { return } const lastActionIndex = actions.length - 1; for (let i = 0; i < actions.length; i++) { actions[i].option("animation", this._getActionAnimation(actions[i], i, lastActionIndex)); actions[i].option("position", this._getActionPosition(actions, i)); actions[i]._$wrapper.css("position", this._$wrapper.css("position")); actions[i].toggle() } if (null !== (_config$floatingActio = (0, _config.default)().floatingActionButtonConfig) && void 0 !== _config$floatingActio && _config$floatingActio.shading) { this._isShadingShown = !this.option("shading"); this.option("shading", this._isShadingShown) } this._$icon.toggleClass("dx-state-invisible"); this._$closeIcon.toggleClass("dx-state-invisible") } _updateZIndexStackPosition() { super._updateZIndexStackPosition(); const overlayStack = this._overlayStack(); overlayStack.push(this) } _renderActions() { var _this$_actionItems; const { actions: actions = [] } = this.option(); if (null !== (_this$_actionItems = this._actionItems) && void 0 !== _this$_actionItems && _this$_actionItems.length) { this._actionItems.forEach((actionItem => { actionItem.dispose(); actionItem.$element().remove() })); this._actionItems = [] } this._actionItems = []; if (1 === actions.length) { return } for (let i = 0; i < actions.length; i++) { const action = actions[i]; const $actionElement = (0, _renderer.default)("<div>").appendTo(getSwatchContainer(action.$element())); _events_engine.default.off($actionElement, "click"); _events_engine.default.on($actionElement, "click", (() => { this._clickHandler() })); action._options.silent("actionComponent", action); action._options.silent("parentPosition", this._getPosition()); action._options.silent("actionVisible", action._options.silent("visible")); this._actionItems.push(this._createComponent($actionElement, _m_speed_dial_item.default, (0, _extend.extend)({}, modifyActionOptions(action), { visible: false }))) } } _getActionAnimation(action, index, lastActionIndex) { action._options.silent("animation.show.delay", 30 * index); action._options.silent("animation.hide.delay", 30 * (lastActionIndex - index)); return action._options.silent("animation") } _getDirectionIndex(actions, direction) { if ("auto" === direction) { const contentHeight = (0, _size.getHeight)(this.$content()); const actionsHeight = this.initialOption("indent") + this.initialOption("childIndent") * actions.length - contentHeight; const offsetTop = this.$content().offset().top; if (actionsHeight < offsetTop) { return -1 } const offsetBottom = (0, _size.getHeight)(this._positionController._$wrapperCoveredElement) - contentHeight - offsetTop; return offsetTop >= offsetBottom ? -1 : 1 } return "down" !== direction ? -1 : 1 } _getActionPosition(actions, index) { const action = actions[index]; const actionOffsetXValue = this.initialOption("childOffset"); const actionOffsetX = action._options.silent("label") && !this._$label ? this._isPositionLeft(this._getPosition()) ? actionOffsetXValue : -actionOffsetXValue : 0; const actionOffsetYValue = this.initialOption("indent") + this.initialOption("childIndent") * index; const actionOffsetY = this._getDirectionIndex(actions, this.option("direction")) * actionOffsetYValue; const actionPositionAtMy = action._options.silent("label") ? this._isPositionLeft(this._getPosition()) ? "left" : "right" : "center"; return { of: this.$content(), at: actionPositionAtMy, my: actionPositionAtMy, offset: { x: actionOffsetX, y: actionOffsetY } } } _outsideClickHandler(e) { if (this._isShadingShown) { const isShadingClick = (0, _renderer.default)(e.target)[0] === this._$wrapper[0]; if (isShadingClick) { e.preventDefault(); this._clickHandler() } } } _setPosition() { if (this.option("visible")) { this._hide(); this._show() } } _getPosition() { return this._getDefaultOptions().position } _getInkRippleContainer() { return this.$content() } _optionChanged(args) { switch (args.name) { case "actions": if (this._isVisible()) { this._renderIcon(); this._renderLabel() } this._renderCloseIcon(); this._renderClick(); this._renderActions(); break; case "maxSpeedDialActionCount": this._renderActions(); break; case "closeIcon": this._renderCloseIcon(); break; case "position": super._optionChanged(args); this._setPosition(); break; case "label": if (this._isVisible()) { this._renderLabel() } this._setPosition(); break; case "icon": if (this._isVisible()) { this._renderIcon() } break; default: super._optionChanged(args) } } } }, 4916: /*!*************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/ui/splitter/resize_handle.js ***! \*************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = exports.RESIZE_HANDLE_CLASS = void 0; var _click = __webpack_require__( /*! ../../../common/core/events/click */ 64044); var _events_engine = _interopRequireDefault(__webpack_require__( /*! ../../../common/core/events/core/events_engine */ 92774)); var _double_click = __webpack_require__( /*! ../../../common/core/events/double_click */ 5636); var _drag = __webpack_require__( /*! ../../../common/core/events/drag */ 59144); var _index = __webpack_require__( /*! ../../../common/core/events/utils/index */ 98834); var _message = _interopRequireDefault(__webpack_require__( /*! ../../../common/core/localization/message */ 4671)); var _guid = _interopRequireDefault(__webpack_require__( /*! ../../../core/guid */ 19427)); var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../../core/renderer */ 64553)); var _widget = _interopRequireDefault(__webpack_require__( /*! ../../core/widget/widget */ 89275)); var _event = __webpack_require__( /*! ./utils/event */ 58545); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } function _extends() { return _extends = Object.assign ? Object.assign.bind() : function(n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) { ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]) } } return n }, _extends.apply(null, arguments) } const RESIZE_HANDLE_CLASS = exports.RESIZE_HANDLE_CLASS = "dx-resize-handle"; const RESIZE_DIRECTION_horizontal = "horizontal", RESIZE_DIRECTION_vertical = "vertical"; class ResizeHandle extends _widget.default { _supportedKeys() { return _extends({}, super._supportedKeys(), { rightArrow(e) { e.preventDefault(); e.stopPropagation(); const { direction: direction, showCollapseNext: showCollapseNext, showCollapsePrev: showCollapsePrev, rtlEnabled: rtlEnabled } = this.option(); const forbidCollapseNext = rtlEnabled ? false === showCollapsePrev : false === showCollapseNext; if ((0, _index.isCommandKeyPressed)(e)) { if (direction === RESIZE_DIRECTION_vertical || forbidCollapseNext) { return } if (rtlEnabled) { this._collapsePrevHandler(e) } else { this._collapseNextHandler(e) } } else { this._resizeBy(e, { x: 5 }) } }, leftArrow(e) { e.preventDefault(); e.stopPropagation(); const { direction: direction, showCollapsePrev: showCollapsePrev, showCollapseNext: showCollapseNext, rtlEnabled: rtlEnabled } = this.option(); const forbidCollapsePrev = rtlEnabled ? false === showCollapseNext : false === showCollapsePrev; if ((0, _index.isCommandKeyPressed)(e)) { if (direction === RESIZE_DIRECTION_vertical || forbidCollapsePrev) { return } if (rtlEnabled) { this._collapseNextHandler(e) } else { this._collapsePrevHandler(e) } } else { this._resizeBy(e, { x: -5 }) } }, upArrow(e) { e.preventDefault(); e.stopPropagation(); const { direction: direction, showCollapsePrev: showCollapsePrev } = this.option(); if ((0, _index.isCommandKeyPressed)(e)) { if (direction === RESIZE_DIRECTION_horizontal || false === showCollapsePrev) { return } this._collapsePrevHandler(e) } else { this._resizeBy(e, { y: -5 }) } }, downArrow(e) { e.preventDefault(); e.stopPropagation(); const { direction: direction, showCollapseNext: showCollapseNext } = this.option(); if ((0, _index.isCommandKeyPressed)(e)) { if (direction === RESIZE_DIRECTION_horizontal || false === showCollapseNext) { return } this._collapseNextHandler(e) } else { this._resizeBy(e, { y: 5 }) } } }) } _getDefaultOptions() { return _extends({}, super._getDefaultOptions(), { direction: RESIZE_DIRECTION_horizontal, hoverStateEnabled: true, focusStateEnabled: true, activeStateEnabled: true, onResize: void 0, onResizeEnd: void 0, onResizeStart: void 0, resizable: true, showCollapsePrev: true, showCollapseNext: true, onCollapsePrev: void 0, onCollapseNext: void 0, separatorSize: 8 }) } _init() { super._init(); const namespace = `dxResizeHandle${new _guid.default}`; this.RESIZE_START_EVENT_NAME = (0, _index.addNamespace)(_drag.start, namespace); this.RESIZE_EVENT_NAME = (0, _index.addNamespace)(_drag.move, namespace); this.RESIZE_END_EVENT_NAME = (0, _index.addNamespace)(_drag.end, namespace); this.CLICK_EVENT_NAME = (0, _index.addNamespace)(_click.name, namespace); this.DOUBLE_CLICK_EVENT_NAME = (0, _index.addNamespace)(_double_click.name, namespace) } _initMarkup() { super._initMarkup(); this._renderResizeHandleContent(); this._setAriaAttributes() } _renderResizeHandleContent() { const { resizable: resizable } = this.option(); (0, _renderer.default)(this.element()).addClass(RESIZE_HANDLE_CLASS); (0, _renderer.default)(this.element()).toggleClass("dx-resize-handle-resizable", resizable); this._toggleDirectionClass(); this._updateDimensions(); this._$collapsePrevButton = (0, _renderer.default)("<div>").addClass(this._getIconClass("prev")).appendTo(this.$element()); this._$resizeHandle = (0, _renderer.default)("<div>").addClass(this._getIconClass("icon")).appendTo(this.$element()); this._$collapseNextButton = (0, _renderer.default)("<div>").addClass(this._getIconClass("next")).appendTo(this.$element()); this._setCollapseButtonsVisibility(); this._setResizeIconVisibility() } _updateIconsClasses() { var _this$_$collapsePrevB, _this$_$resizeHandle, _this$_$collapseNextB; const isHorizontal = this._isHorizontalDirection(); const rtlEnabled = this.option("rtlEnabled"); null === (_this$_$collapsePrevB = this._$collapsePrevButton) || void 0 === _this$_$collapsePrevB || _this$_$collapsePrevB.removeClass(this._getCollapseIconClass(false, !isHorizontal, !!rtlEnabled)).addClass(this._getCollapseIconClass(false, isHorizontal, !!rtlEnabled)); null === (_this$_$resizeHandle = this._$resizeHandle) || void 0 === _this$_$resizeHandle || _this$_$resizeHandle.removeClass(this._getResizeIconClass(!isHorizontal)).addClass(this._getResizeIconClass(isHorizontal)); null === (_this$_$collapseNextB = this._$collapseNextButton) || void 0 === _this$_$collapseNextB || _this$_$collapseNextB.removeClass(this._getCollapseIconClass(true, !isHorizontal, !!rtlEnabled)).addClass(this._getCollapseIconClass(true, isHorizontal, !!rtlEnabled)) } _updateDimensions() { const isHorizontal = this._isHorizontalDirection(); const dimension = isHorizontal ? "width" : "height"; const inverseDimension = isHorizontal ? "height" : "width"; this.option(inverseDimension, null); this.option(dimension, this.getSize()) } _isInactive() { const { resizable: resizable, showCollapseNext: showCollapseNext, showCollapsePrev: showCollapsePrev } = this.option(); return false === resizable && false === showCollapseNext && false === showCollapsePrev } _getIconClass(iconType) { const isHorizontal = this._isHorizontalDirection(); const rtlEnabled = this.option("rtlEnabled"); switch (iconType) { case "prev": return `dx-resize-handle-collapse-prev-pane dx-icon ${this._getCollapseIconClass(false,isHorizontal,!!rtlEnabled)}`; case "next": return `dx-resize-handle-collapse-next-pane dx-icon ${this._getCollapseIconClass(true,isHorizontal,!!rtlEnabled)}`; case "icon": return `dx-resize-handle-icon dx-icon ${this._getResizeIconClass(isHorizontal)}`; default: return "" } } _getResizeIconClass(isHorizontal) { return "dx-icon-handle" + (isHorizontal ? "vertical" : "horizontal") } _getCollapseIconClass(isNextButton, isHorizontal, rtlEnabled) { const horizontalDirection = isNextButton === rtlEnabled ? "left" : "right"; const verticalDirection = isNextButton ? "down" : "up"; return `dx-icon-triangle${isHorizontal?horizontalDirection:verticalDirection}` } _setCollapseButtonsVisibility() { var _this$_$collapsePrevB2, _this$_$collapseNextB2; const { showCollapsePrev: showCollapsePrev, showCollapseNext: showCollapseNext } = this.option(); null === (_this$_$collapsePrevB2 = this._$collapsePrevButton) || void 0 === _this$_$collapsePrevB2 || _this$_$collapsePrevB2.toggleClass("dx-state-invisible", !showCollapsePrev); null === (_this$_$collapseNextB2 = this._$collapseNextButton) || void 0 === _this$_$collapseNextB2 || _this$_$collapseNextB2.toggleClass("dx-state-invisible", !showCollapseNext) } _setResizeIconVisibility() { var _this$_$resizeHandle2; const { resizable: resizable } = this.option(); null === (_this$_$resizeHandle2 = this._$resizeHandle) || void 0 === _this$_$resizeHandle2 || _this$_$resizeHandle2.toggleClass("dx-state-invisible", !resizable) } _setAriaAttributes() { this.setAria({ role: "application", roledescription: _message.default.format("dxSplitter-resizeHandleAriaRoleDescription"), label: _message.default.format("dxSplitter-resizeHandleAriaLabel") }) } _toggleDirectionClass() { (0, _renderer.default)(this.element()).toggleClass("dx-resize-handle-horizontal", this._isHorizontalDirection()); (0, _renderer.default)(this.element()).toggleClass("dx-resize-handle-vertical", !this._isHorizontalDirection()) } _render() { super._render(); this._attachEventHandlers() } _resizeStartHandler(e) { this._getAction(_event.RESIZE_EVENT.onResizeStart)({ event: e }) } _resizeHandler(e) { this._getAction(_event.RESIZE_EVENT.onResize)({ event: e }) } _resizeEndHandler(e) { this._getAction(_event.RESIZE_EVENT.onResizeEnd)({ event: e }) } _collapsePrevHandler(e) { this._getAction(_event.COLLAPSE_EVENT.onCollapsePrev)({ event: e }) } _collapseNextHandler(e) { this._getAction(_event.COLLAPSE_EVENT.onCollapseNext)({ event: e }) } _resizeBy(e) { let offset = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : { x: 0, y: 0 }; const { resizable: resizable } = this.option(); if (false === resizable) { return } e.offset = offset; this._resizeStartHandler(e); this._resizeHandler(e); this._resizeEndHandler(e) } _createEventAction(eventName) { const actionName = (0, _event.getActionNameByEventName)(eventName); this[actionName] = this._createActionByOption(eventName, { excludeValidators: ["disabled", "readOnly"] }) } _getAction(eventName) { const actionName = (0, _event.getActionNameByEventName)(eventName); if (!this[actionName]) { this._createEventAction(eventName) } return this[actionName] } _attachEventHandlers() { this._attachResizeEventHandlers(); this._attachPointerEventHandlers() } _attachResizeEventHandlers() { const { resizable: resizable, direction: direction } = this.option(); if (resizable) { const eventData = { direction: direction, immediate: true }; _events_engine.default.on(this.$element(), this.RESIZE_START_EVENT_NAME, eventData, this._resizeStartHandler.bind(this)); _events_engine.default.on(this.$element(), this.RESIZE_EVENT_NAME, eventData, this._resizeHandler.bind(this)); _events_engine.default.on(this.$element(), this.RESIZE_END_EVENT_NAME, eventData, this._resizeEndHandler.bind(this)) } } _attachPointerEventHandlers() { const { showCollapsePrev: showCollapsePrev, showCollapseNext: showCollapseNext } = this.option(); if (true === showCollapsePrev || true === showCollapseNext) { _events_engine.default.on(this.$element(), this.DOUBLE_CLICK_EVENT_NAME, this._doubleClickHandler.bind(this)) } if (true === showCollapsePrev) { _events_engine.default.on(this._$collapsePrevButton, this.CLICK_EVENT_NAME, this._collapsePrevHandler.bind(this)) } if (true === showCollapseNext) { _events_engine.default.on(this._$collapseNextButton, this.CLICK_EVENT_NAME, this._collapseNextHandler.bind(this)) } } _detachEventHandlers() { this._detachResizeEventHandlers(); this._detachPointerEventHandlers() } _detachResizeEventHandlers() { _events_engine.default.off(this.$element(), this.RESIZE_START_EVENT_NAME); _events_engine.default.off(this.$element(), this.RESIZE_EVENT_NAME); _events_engine.default.off(this.$element(), this.RESIZE_END_EVENT_NAME) } _detachPointerEventHandlers() { _events_engine.default.off(this.$element(), this.DOUBLE_CLICK_EVENT_NAME); _events_engine.default.off(this._$collapsePrevButton, this.CLICK_EVENT_NAME); _events_engine.default.off(this._$collapseNextButton, this.CLICK_EVENT_NAME) } _doubleClickHandler(e) { const { showCollapsePrev: showCollapsePrev, showCollapseNext: showCollapseNext } = this.option(); if (true === showCollapsePrev) { this._collapsePrevHandler(e) } else if (true === showCollapseNext) { this._collapseNextHandler(e) } } _isHorizontalDirection() { const { direction: direction } = this.option(); return direction === RESIZE_DIRECTION_horizontal } _clean() { this._detachResizeEventHandlers(); this._detachPointerEventHandlers(); super._clean() } _optionChanged(args) { const { name: name, value: value } = args; switch (name) { case "direction": this._toggleDirectionClass(); this._detachResizeEventHandlers(); this._attachResizeEventHandlers(); this._updateDimensions(); this._updateIconsClasses(); break; case "resizable": this._setResizeIconVisibility(); (0, _renderer.default)(this.element()).toggleClass("dx-resize-handle-resizable", !!value); this._detachResizeEventHandlers(); this._attachResizeEventHandlers(); this._updateDimensions(); break; case "separatorSize": this._updateDimensions(); break; case "showCollapsePrev": case "showCollapseNext": this._setCollapseButtonsVisibility(); this._setResizeIconVisibility(); this._updateDimensions(); this._detachPointerEventHandlers(); this._attachPointerEventHandlers(); break; case "onCollapsePrev": case "onCollapseNext": case "onResize": case "onResizeStart": case "onResizeEnd": this._createEventAction(name); break; default: super._optionChanged(args) } } getSize() { const { separatorSize: separatorSize } = this.option(); if (this._isInactive()) { return 2 } return void 0 !== separatorSize && Number.isFinite(separatorSize) && separatorSize >= 0 ? separatorSize : 8 } isInactive() { return this._isInactive() } } exports.default = ResizeHandle }, 32364: /*!********************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/ui/splitter/splitter.js ***! \********************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _emitter = __webpack_require__( /*! ../../../common/core/events/core/emitter.feedback */ 69331); var _component_registrator = _interopRequireDefault(__webpack_require__( /*! ../../../core/component_registrator */ 92848)); var _dom_adapter = _interopRequireDefault(__webpack_require__( /*! ../../../core/dom_adapter */ 64960)); var _element = __webpack_require__( /*! ../../../core/element */ 61404); var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../../core/renderer */ 64553)); var _resize_observer = _interopRequireDefault(__webpack_require__( /*! ../../../core/resize_observer */ 11787)); var _deferred = __webpack_require__( /*! ../../../core/utils/deferred */ 87739); var _dom = __webpack_require__( /*! ../../../core/utils/dom */ 86858); var _extend = __webpack_require__( /*! ../../../core/utils/extend */ 52576); var _size = __webpack_require__( /*! ../../../core/utils/size */ 57653); var _type = __webpack_require__( /*! ../../../core/utils/type */ 11528); var _window = __webpack_require__( /*! ../../../core/utils/window */ 3104); var _m_collection_widget = _interopRequireDefault(__webpack_require__( /*! ../../ui/collection/m_collection_widget.live_update */ 68005)); var _resize_handle = __webpack_require__( /*! ./resize_handle */ 4916); var _splitter_item = _interopRequireDefault(__webpack_require__( /*! ./splitter_item */ 9492)); var _component = __webpack_require__( /*! ./utils/component */ 38674); var _event = __webpack_require__( /*! ./utils/event */ 58545); var _layout = __webpack_require__( /*! ./utils/layout */ 49291); var _layout_default = __webpack_require__( /*! ./utils/layout_default */ 54285); var _number_comparison = __webpack_require__( /*! ./utils/number_comparison */ 94178); var _types = __webpack_require__( /*! ./utils/types */ 49624); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } function _extends() { return _extends = Object.assign ? Object.assign.bind() : function(n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) { ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]) } } return n }, _extends.apply(null, arguments) } const FLEX_PROPERTY_flexGrow = "flexGrow", FLEX_PROPERTY_flexShrink = "flexShrink", FLEX_PROPERTY_flexBasis = "flexBasis"; const ORIENTATION_horizontal = "horizontal"; class Splitter extends _m_collection_widget.default { constructor() { super(...arguments); this._renderQueue = []; this._panesCacheSize = []; this._panesCacheSizeVisible = []; this._itemRestrictions = [] } _getDefaultOptions() { const defaultOptions = super._getDefaultOptions(); return _extends({}, defaultOptions, { orientation: ORIENTATION_horizontal, onItemCollapsed: void 0, onItemExpanded: void 0, onResize: void 0, onResizeEnd: void 0, onResizeStart: void 0, allowKeyboardNavigation: true, separatorSize: 8, _itemAttributes: _extends({}, defaultOptions._itemAttributes, { role: "group" }), _renderQueue: void 0 }) } _itemClass() { return "dx-splitter-item" } _itemDataKey() { return "dxSplitterItemData" } _init() { super._init(); this._initializeRenderQueue() } _initializeRenderQueue() { this._renderQueue = this.option("_renderQueue") ?? [] } _isRenderQueueEmpty() { return this._renderQueue.length <= 0 } _pushItemToRenderQueue(itemContent, splitterConfig) { this._renderQueue.push({ itemContent: itemContent, splitterConfig: splitterConfig }) } _shiftItemFromQueue() { return this._renderQueue.shift() } _initMarkup() { (0, _renderer.default)(this.element()).addClass("dx-splitter"); this._toggleOrientationClass(); super._initMarkup(); this._panesCacheSize = []; this._panesCacheSizeVisible = []; this._attachResizeObserverSubscription() } _getItemDimension(element) { return this._isHorizontalOrientation() ? (0, _size.getOuterWidth)(element) : (0, _size.getOuterHeight)(element) } _attachResizeObserverSubscription() { if ((0, _window.hasWindow)()) { const element = (0, _renderer.default)(this.element()).get(0); _resize_observer.default.unobserve(element); _resize_observer.default.observe(element, (() => { this._resizeHandler() })) } } _attachHoldEvent() {} _isAttached() { return !!(0, _dom.contains)(_dom_adapter.default.getBody(), (0, _renderer.default)(this.element()).get(0)) } _isVisible() { return (0, _layout.isElementVisible)((0, _renderer.default)(this.element())[0]) } _resizeHandler() { if (this._shouldRecalculateLayout && this._isAttached() && this._isVisible()) { this._layout = this._getDefaultLayoutBasedOnSize(); this._applyStylesFromLayout(this._layout); this._updateItemSizes(); this._shouldRecalculateLayout = false } } _renderItems(items) { super._renderItems(items); this._updateResizeHandlesResizableState(); this._updateResizeHandlesCollapsibleState(); if (this._isVisible()) { this._layout = this._getDefaultLayoutBasedOnSize(); this._applyStylesFromLayout(this._layout); this._updateItemSizes() } else { this._shouldRecalculateLayout = true } this._processRenderQueue() } _processRenderQueue() { if (this._isRenderQueueEmpty()) { return } const item = this._shiftItemFromQueue(); if (!item) { return } this._createComponent((0, _renderer.default)(item.itemContent), Splitter, (0, _extend.extend)({ itemTemplate: this.option("itemTemplate"), onResize: this.option("onResize"), onResizeStart: this.option("onResizeStart"), onResizeEnd: this.option("onResizeEnd"), onItemClick: this.option("onItemClick"), onItemContextMenu: this.option("onItemContextMenu"), onItemRendered: this.option("onItemRendered"), onItemExpanded: this.option("onItemExpanded"), onItemCollapsed: this.option("onItemCollapsed"), separatorSize: this.option("separatorSize"), allowKeyboardNavigation: this.option("allowKeyboardNavigation"), rtlEnabled: this.option("rtlEnabled"), _renderQueue: this._renderQueue }, item.splitterConfig)); this._processRenderQueue() } _itemElements() { return (0, _renderer.default)(this._itemContainer()).children(this._itemSelector()) } _isLastVisibleItem(index) { const { items: items = [] } = this.option(); return index === (0, _layout.findLastIndexOfVisibleItem)(items) } _renderItem(index, itemData, $container, $itemToReplace) { const $itemFrame = super._renderItem(index, itemData, $container, $itemToReplace); const itemElement = $itemFrame.get(0); (0, _layout.setFlexProp)(itemElement, FLEX_PROPERTY_flexShrink, 0); (0, _layout.setFlexProp)(itemElement, FLEX_PROPERTY_flexBasis, 0); this._getItemInstance($itemFrame)._renderResizeHandle(); return $itemFrame } _getItemInstance($item) { return _splitter_item.default.getInstance($item) } _updateResizeHandlesResizableState() { this._getResizeHandles().forEach((resizeHandle => { this._updateResizeHandleResizableState(resizeHandle) })) } _updateResizeHandleResizableState(resizeHandle) { const $resizeHandle = resizeHandle.$element(); const $leftItem = this._getResizeHandleLeftItem($resizeHandle); const $rightItem = this._getResizeHandleRightItem($resizeHandle); const leftItemData = this._getItemData($leftItem); const rightItemData = this._getItemData($rightItem); const resizable = false !== leftItemData.resizable && false !== rightItemData.resizable && true !== leftItemData.collapsed && true !== rightItemData.collapsed; resizeHandle.option("resizable", resizable); resizeHandle.option("disabled", resizeHandle.isInactive()) } _updateResizeHandlesCollapsibleState() { this._getResizeHandles().forEach((resizeHandle => { this._updateResizeHandleCollapsibleState(resizeHandle) })) } _updateResizeHandleCollapsibleState(resizeHandle) { const $resizeHandle = (0, _renderer.default)(resizeHandle.element()); const $leftItem = this._getResizeHandleLeftItem($resizeHandle); const $rightItem = this._getResizeHandleRightItem($resizeHandle); const leftItemData = this._getItemData($leftItem); const rightItemData = this._getItemData($rightItem); const showCollapsePrev = true === rightItemData.collapsed ? true === rightItemData.collapsible && true !== leftItemData.collapsed : true === leftItemData.collapsible && true !== leftItemData.collapsed; const showCollapseNext = true === leftItemData.collapsed ? true === leftItemData.collapsible : true === rightItemData.collapsible && true !== rightItemData.collapsed; resizeHandle.option({ showCollapsePrev: showCollapsePrev, showCollapseNext: showCollapseNext }); resizeHandle.option("disabled", resizeHandle.isInactive()) } _updateNestedSplitterOption(optionName, optionValue) { const { items: items = [] } = this.option(); items.forEach((item => { if (null !== item && void 0 !== item && item.splitter) { const $nestedSplitter = this._findItemElementByItem(item).find(".dx-splitter").eq(0); if ($nestedSplitter.length) { (0, _component.getComponentInstance)($nestedSplitter).option(optionName, optionValue) } } })) } _updateResizeHandlesOption(optionName, optionValue) { this._getResizeHandles().forEach((resizeHandle => { resizeHandle.option(optionName, optionValue) })) } _getNextVisibleItemData(index) { const { items: items = [] } = this.option(); return this._getItemDataByIndex((0, _layout.findIndexOfNextVisibleItem)(items, index)) } _getItemDataByIndex(index) { return this._editStrategy.getItemDataByIndex(index) } _createEventAction(eventName) { const actionName = (0, _event.getActionNameByEventName)(eventName); this[actionName] = this._createActionByOption(eventName, { excludeValidators: ["disabled", "readOnly"] }) } _getAction(eventName) { const actionName = (0, _event.getActionNameByEventName)(eventName); if (!this[actionName]) { this._createEventAction(eventName) } return this[actionName] } _getResizeHandleConfig(paneId) { const { orientation: orientation, rtlEnabled: rtlEnabled, allowKeyboardNavigation: allowKeyboardNavigation, separatorSize: separatorSize } = this.option(); return { direction: orientation, focusStateEnabled: allowKeyboardNavigation, hoverStateEnabled: true, separatorSize: separatorSize, elementAttr: { "aria-controls": paneId }, onCollapsePrev: e => { var _e$event; null === (_e$event = e.event) || void 0 === _e$event || _e$event.stopPropagation(); this._savedCollapsingEvent = e.event; this.handleCollapseEvent(this._getResizeHandleLeftItem((0, _renderer.default)(e.element)), _types.CollapseExpandDirection.Previous) }, onCollapseNext: e => { var _e$event2; null === (_e$event2 = e.event) || void 0 === _e$event2 || _e$event2.stopPropagation(); this._savedCollapsingEvent = e.event; this.handleCollapseEvent(this._getResizeHandleLeftItem((0, _renderer.default)(e.element)), _types.CollapseExpandDirection.Next) }, onResizeStart: e => { const { element: element, event: event } = e; if (!event) { return } const $resizeHandle = (0, _renderer.default)(element); const eventArgs = { event: event, handleElement: (0, _element.getPublicElement)($resizeHandle) }; this._getAction(_event.RESIZE_EVENT.onResizeStart)(eventArgs); if (eventArgs.cancel) { event.cancel = true; return } this._feedbackDeferred = (0, _deferred.Deferred)(); (0, _emitter.lock)(this._feedbackDeferred); this._toggleActiveState($resizeHandle, true); const $leftItem = this._getResizeHandleLeftItem($resizeHandle); const leftItemData = this._getItemData($leftItem); const leftItemIndex = this._getIndexByItem(leftItemData); this._activeResizeHandleIndex = leftItemIndex; this._currentOnePxRatio = (0, _layout.convertSizeToRatio)(1, (0, _layout.getElementSize)((0, _renderer.default)(this.element()), orientation), this._getResizeHandlesSize()); this._currentLayout = this.getLayout(); this._updateItemsRestrictions() }, onResize: e => { const { element: element, event: event } = e; if (!event) { return } const eventArgs = { event: event, handleElement: (0, _element.getPublicElement)((0, _renderer.default)(element)) }; this._getAction(_event.RESIZE_EVENT.onResize)(eventArgs); if (eventArgs.cancel) { event.cancel = true; return } const { orientation: currentOrientation } = this.option(); const newLayout = (0, _layout.getNextLayout)(this._currentLayout ?? [], (0, _layout.calculateDelta)(event.offset, currentOrientation, rtlEnabled, this._currentOnePxRatio), this._activeResizeHandleIndex, this._itemRestrictions); this._applyStylesFromLayout(newLayout); this._layout = newLayout }, onResizeEnd: e => { var _this$_feedbackDeferr; const { element: element, event: event } = e; this._activeResizeHandleIndex = void 0; if (!event) { return } const $resizeHandle = (0, _renderer.default)(element); const eventArgs = { event: event, handleElement: (0, _element.getPublicElement)($resizeHandle) }; null === (_this$_feedbackDeferr = this._feedbackDeferred) || void 0 === _this$_feedbackDeferr || _this$_feedbackDeferr.resolve(); this._toggleActiveState($resizeHandle, false); this._updateItemSizes(); this._getAction(_event.RESIZE_EVENT.onResizeEnd)(eventArgs) } } } handleCollapseEvent($resizeHandle, direction, isItemCollapsed) { const $leftItem = $resizeHandle; const leftItemData = this._getItemData($leftItem); const leftItemIndex = this._getIndexByItem(leftItemData); const $rightItem = this._getResizeHandleRightItem($leftItem); const rightItemData = this._getItemData($rightItem); const rightItemIndex = this._getIndexByItem(rightItemData); this._activeResizeHandleIndex = leftItemIndex; this._collapseDirection = direction; const isCollapsed = isItemCollapsed ?? (direction === _types.CollapseExpandDirection.Previous ? rightItemData.collapsed : leftItemData.collapsed); let index = 0; if (direction === _types.CollapseExpandDirection.Previous) { index = isCollapsed ? rightItemIndex : leftItemIndex } else { index = isCollapsed ? leftItemIndex : rightItemIndex } this._updateItemData("collapsed", index, !isCollapsed, false) } _getResizeHandleLeftItem($element) { let $leftItem = $element.prev(); while ($leftItem.hasClass("dx-state-invisible") || $leftItem.hasClass(_resize_handle.RESIZE_HANDLE_CLASS)) { $leftItem = $leftItem.prev() } return $leftItem } _getResizeHandleRightItem($element) { let $rightItem = $element.next(); while ($rightItem.hasClass("dx-state-invisible") || $rightItem.hasClass(_resize_handle.RESIZE_HANDLE_CLASS)) { $rightItem = $rightItem.next() } return $rightItem } _getResizeHandlesSize() { return this._getResizeHandles().reduce(((size, resizeHandle) => size + resizeHandle.getSize()), 0) } _createItemByTemplate(itemTemplate, args) { const { itemData: itemData } = args; if (itemData.splitter) { this._onItemTemplateRendered(itemTemplate, args)(); return itemTemplate.source ? itemTemplate.source() : (0, _renderer.default)() } return super._createItemByTemplate(itemTemplate, args) } _postprocessRenderItem(args) { const splitterConfig = args.itemData.splitter; if (!splitterConfig) { return } this._pushItemToRenderQueue(args.itemContent, splitterConfig) } _isHorizontalOrientation() { const { orientation: orientation } = this.option(); return orientation === ORIENTATION_horizontal } _toggleOrientationClass() { (0, _renderer.default)(this.element()).toggleClass("dx-splitter-horizontal", this._isHorizontalOrientation()).toggleClass("dx-splitter-vertical", !this._isHorizontalOrientation()) } _itemOptionChanged(item, property, value, prevValue) { switch (property) { case "size": case "maxSize": case "minSize": case "collapsedSize": this._layout = this._getDefaultLayoutBasedOnSize(); this._applyStylesFromLayout(this.getLayout()); this._updateItemSizes(); break; case "collapsed": this._itemCollapsedOptionChanged(item, value, prevValue); break; case "resizable": this._updateResizeHandlesResizableState(); break; case "collapsible": this._updateResizeHandlesCollapsibleState(); break; case "visible": super._itemOptionChanged(item, property, value, prevValue); this._itemVisibleOptionChanged(item, value, prevValue); break; case "template": super._itemOptionChanged(item, property, value, prevValue); this._applyStylesFromLayout(this.getLayout()); this._updateResizeHandles(); break; default: super._itemOptionChanged(item, property, value, prevValue) } } _itemVisibleOptionChanged(item) { let value = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : true; let prevValue = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : true; if (Boolean(prevValue) === Boolean(value)) { return } const { direction: direction, paneIndex: paneIndex } = this._getDistributionData(item, value); this._updateResizeHandles(); if (paneIndex && paneIndex < 0) { return } this._updateItemsRestrictions(); const collapsedDelta = this._getCollapseDelta(item, !value, this._panesCacheSizeVisible, direction); this._itemRestrictions.forEach((pane => { pane.maxSize = void 0; pane.resizable = void 0 })); this._layout = (0, _layout.getNextLayout)(this.getLayout(), collapsedDelta, paneIndex, this._itemRestrictions); this._applyStylesFromLayout(this.getLayout()); this._updateItemSizes() } _getDistributionData(item, value) { const itemIndex = this._getIndexByItem(item); const $item = (0, _renderer.default)(this._itemElements()[itemIndex]); const { items: items = [] } = this.option(); const isLastVisible = itemIndex >= (0, _layout.findLastIndexOfVisibleItem)(items); const direction = isLastVisible === (false === value) ? _types.CollapseExpandDirection.Next : _types.CollapseExpandDirection.Previous; const paneIndex = this._getPaneIndexByElement(isLastVisible ? this._getResizeHandleLeftItem($item) : $item); return { direction: direction, paneIndex: paneIndex } } _updateResizeHandles() { this._iterateItems(((_, itemElement) => { const item = this._getItemInstance((0, _renderer.default)(itemElement)); item.updateResizeHandle(); const resizeHandle = item.getResizeHandle(); if (resizeHandle) { this._updateResizeHandleResizableState(resizeHandle); this._updateResizeHandleCollapsibleState(resizeHandle) } })) } _getPaneIndexByElement($element) { const itemData = this._getItemData($element); return this._getIndexByItem(itemData) } _itemCollapsedOptionChanged(item, value, prevValue) { if (Boolean(value) === Boolean(prevValue)) { return } const itemIndex = this._getIndexByItem(item); const $item = (0, _renderer.default)(this._itemElements()[itemIndex]); const { items: items = [] } = this.option(); if (!(0, _type.isDefined)(this._activeResizeHandleIndex)) { if (value) { const isLastNonCollapsedItem = itemIndex > (0, _layout.findLastIndexOfNonCollapsedItem)(items); if (this._isLastVisibleItem(itemIndex) || isLastNonCollapsedItem) { this.handleCollapseEvent(this._getResizeHandleLeftItem($item), _types.CollapseExpandDirection.Next, !!prevValue) } else { this.handleCollapseEvent($item, _types.CollapseExpandDirection.Previous, !!prevValue) } } else { var _this$_panesCacheSize; const isLastNonCollapsedItem = itemIndex >= (0, _layout.findLastIndexOfNonCollapsedItem)(items); if (this._isLastVisibleItem(itemIndex) || isLastNonCollapsedItem) { this.handleCollapseEvent(this._getResizeHandleLeftItem($item), _types.CollapseExpandDirection.Previous, !!prevValue) } else if ((null === (_this$_panesCacheSize = this._panesCacheSize[itemIndex]) || void 0 === _this$_panesCacheSize ? void 0 : _this$_panesCacheSize.direction) === _types.CollapseExpandDirection.Previous) { this.handleCollapseEvent(this._getResizeHandleLeftItem($item), _types.CollapseExpandDirection.Previous, !!prevValue) } else { this.handleCollapseEvent($item, _types.CollapseExpandDirection.Next, !!prevValue) } } } this._updateItemsRestrictions(); const collapsedDelta = this._getCollapseDelta(item, value, this._panesCacheSize, this._collapseDirection); this._itemRestrictions.forEach((pane => { pane.maxSize = void 0; pane.resizable = void 0 })); this._layout = (0, _layout.getNextLayout)(this.getLayout(), collapsedDelta, this._activeResizeHandleIndex, this._itemRestrictions); this._applyStylesFromLayout(this.getLayout()); this._updateItemSizes(); this._updateResizeHandlesResizableState(); this._updateResizeHandlesCollapsibleState(); this._fireCollapsedStateChanged(!value, $item, this._savedCollapsingEvent); this._savedCollapsingEvent = void 0; this._collapseDirection = void 0; this._activeResizeHandleIndex = void 0 } _calculateExpandToLeftSize(leftItemIndex) { const { items: items = [] } = this.option(); for (let i = leftItemIndex; i >= 0; i -= 1) { const { collapsed: collapsed, visible: visible } = items[i]; if (true !== collapsed && false !== visible) { return this.getLayout()[i] / 2 } } return 0 } _calculateExpandToRightSize(rightItemIndex) { const { items: items = [] } = this.option(); for (let i = rightItemIndex; i <= items.length - 1; i += 1) { const { collapsed: collapsed, visible: visible } = items[i]; if (true !== collapsed && false !== visible) { return this.getLayout()[i] / 2 } } return 0 } _getCollapseDelta(item, newCollapsedState, panesCacheSize, direction) { const itemIndex = this._getIndexByItem(item); const { collapsedSize: collapsedSize = 0, minSize: minSize = 0, maxSize: maxSize = 100 } = this._itemRestrictions[itemIndex]; const currentPaneSize = this.getLayout()[itemIndex]; if (newCollapsedState) { const targetPaneSize = collapsedSize; if (currentPaneSize > targetPaneSize) { panesCacheSize[itemIndex] = { size: currentPaneSize, direction: direction === _types.CollapseExpandDirection.Next ? _types.CollapseExpandDirection.Previous : _types.CollapseExpandDirection.Next } } const delta = direction === _types.CollapseExpandDirection.Previous ? targetPaneSize - currentPaneSize : currentPaneSize - targetPaneSize; return delta } const paneCache = panesCacheSize[itemIndex]; panesCacheSize[itemIndex] = void 0; let targetPaneSize = 0; if (paneCache && paneCache.direction === direction) { targetPaneSize = paneCache.size - collapsedSize } else { targetPaneSize = direction === _types.CollapseExpandDirection.Previous ? this._calculateExpandToLeftSize(itemIndex - 1) : this._calculateExpandToRightSize(itemIndex + 1) } let adjustedSize = (0, _number_comparison.compareNumbersWithPrecision)(targetPaneSize, minSize) < 0 ? minSize : targetPaneSize; adjustedSize = Math.min(maxSize, adjustedSize); const deltaSign = direction === _types.CollapseExpandDirection.Previous ? -1 : 1; const delta = adjustedSize * deltaSign; return delta } _fireCollapsedStateChanged(isExpanded, $item, e) { const eventName = isExpanded ? _event.ITEM_EXPANDED_EVENT : _event.ITEM_COLLAPSED_EVENT; this._itemEventHandler($item, eventName, { event: e }) } _getDefaultLayoutBasedOnSize() { this._updateItemsRestrictions(); return (0, _layout_default.getDefaultLayout)(this._itemRestrictions) } _updateItemsRestrictions() { const { orientation: orientation, items: items = [] } = this.option(); const handlesSizeSum = this._getResizeHandlesSize(); const elementSize = (0, _layout.getElementSize)((0, _renderer.default)(this.element()), orientation); this._itemRestrictions = []; items.forEach((item => { this._itemRestrictions.push({ resizable: false !== item.resizable, visible: false !== item.visible, collapsed: true === item.collapsed, collapsedSize: (0, _layout.convertSizeToRatio)(item.collapsedSize, elementSize, handlesSizeSum), size: (0, _layout.convertSizeToRatio)(item.size, elementSize, handlesSizeSum), maxSize: (0, _layout.convertSizeToRatio)(item.maxSize, elementSize, handlesSizeSum), minSize: (0, _layout.convertSizeToRatio)(item.minSize, elementSize, handlesSizeSum) }) })) } _applyStylesFromLayout(layout) { this._iterateItems(((index, itemElement) => { (0, _layout.setFlexProp)((0, _renderer.default)(itemElement)[0], FLEX_PROPERTY_flexGrow, layout[index]); const itemData = this._getItemData(itemElement); const shouldHideContent = 0 === layout[index] && false !== itemData.visible; (0, _renderer.default)(itemElement).toggleClass("dx-splitter-item-hidden-content", shouldHideContent) })) } _updateItemSizes() { this._iterateItems(((index, itemElement) => { this._updateItemData("size", index, this._getItemDimension(itemElement)) })) } _updateItemData(prop, itemIndex, value) { let silent = arguments.length > 3 && void 0 !== arguments[3] ? arguments[3] : true; const itemPath = `items[${itemIndex}]`; const itemData = this.option(itemPath); if ((0, _type.isObject)(itemData)) { this._updateItemOption(`${itemPath}.${prop}`, value, silent) } else { this._updateItemOption(itemPath, { text: itemData, [prop]: value }, silent) } } _updateItemOption(path, value) { let silent = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : false; if (silent) { this._options.silent(path, value) } else { this.option(path, value) } } _iterateItems(callback) { this._itemElements().each(((index, itemElement) => { callback(index, itemElement); return true })) } _getResizeHandles() { const handles = []; this._iterateItems(((_, itemElement) => { const instance = this._getItemInstance((0, _renderer.default)(itemElement)); const resizeHandle = instance.getResizeHandle(); if (resizeHandle) { handles.push(resizeHandle) } })); return handles } _getResizeHandleItems() { return (0, _renderer.default)(this.element()).children(`.${_resize_handle.RESIZE_HANDLE_CLASS}`) } _iterateResizeHandles(callback) { this._getResizeHandleItems().each(((index, element) => { callback((0, _component.getComponentInstance)((0, _renderer.default)(element))); return true })) } _dimensionChanged() { this._updateItemSizes(); this._layout = this._getDefaultLayoutBasedOnSize() } _optionChanged(args) { const { name: name, value: value } = args; switch (name) { case "width": case "height": super._optionChanged(args); this._dimensionChanged(); break; case "allowKeyboardNavigation": this._iterateResizeHandles((instance => { instance.option("focusStateEnabled", !!value) })); this._updateNestedSplitterOption(name, value); break; case "orientation": this._toggleOrientationClass(); this._updateResizeHandlesOption("direction", value); break; case "onResizeStart": case "onResizeEnd": case "onResize": case "onItemCollapsed": case "onItemExpanded": this._createEventAction(name); this._updateNestedSplitterOption(name, value); break; case "separatorSize": this._updateResizeHandlesOption(name, value); this._updateNestedSplitterOption(name, value); break; case "_renderQueue": this._invalidate(); break; default: super._optionChanged(args) } } registerKeyHandler(key, handler) { (0, _renderer.default)(this.element()).find(`.${_resize_handle.RESIZE_HANDLE_CLASS}`).each(((index, element) => { (0, _component.getComponentInstance)((0, _renderer.default)(element)).registerKeyHandler(key, handler); return true })) } getLayout() { return this._layout ?? [] } } Splitter.ItemClass = _splitter_item.default; (0, _component_registrator.default)("dxSplitter", Splitter); exports.default = Splitter }, 9492: /*!*************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/ui/splitter/splitter_item.js ***! \*************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _guid = _interopRequireDefault(__webpack_require__( /*! ../../../core/guid */ 19427)); var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../../core/renderer */ 64553)); var _item = _interopRequireDefault(__webpack_require__( /*! ../../ui/collection/item */ 30845)); var _resize_handle = _interopRequireDefault(__webpack_require__( /*! ./resize_handle */ 4916)); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } class SplitterItem extends _item.default { constructor($element, options, rawData) { super($element, options, rawData); this._owner = options.owner } _renderResizeHandle() { if (this._shouldHaveResizeHandle()) { const id = `dx_${new _guid.default}`; this._setIdAttr(id); const config = this._owner._getResizeHandleConfig(id); this._resizeHandle = this._owner._createComponent((0, _renderer.default)("<div>"), _resize_handle.default, config); if (this._resizeHandle && this._$element) { (0, _renderer.default)(this._resizeHandle.element()).insertAfter(this._$element) } } } _shouldHaveResizeHandle() { var _this$_rawData; return false !== (null === (_this$_rawData = this._rawData) || void 0 === _this$_rawData ? void 0 : _this$_rawData.visible) && !this.isLast() } updateResizeHandle() { if (this._shouldHaveResizeHandle()) { if (this.getResizeHandle()) { return } this._renderResizeHandle() } else { this._removeIdAttr(); this._removeResizeHandle() } } _setIdAttr(id) { this._$element.attr("id", id) } _removeIdAttr() { this._$element.attr("id", null) } getIndex() { return this._owner._getIndexByItemData(this._rawData) } getResizeHandle() { return this._resizeHandle } _removeResizeHandle() { var _this$getResizeHandle; null === (_this$getResizeHandle = this.getResizeHandle()) || void 0 === _this$getResizeHandle || _this$getResizeHandle.$element().remove(); delete this._resizeHandle } isLast() { return this._owner._isLastVisibleItem(this.getIndex()) } _dispose() { this._removeResizeHandle(); super._dispose() } } exports.default = SplitterItem }, 38674: /*!***************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/ui/splitter/utils/component.js ***! \***************************************************************************************/ function(__unused_webpack_module, exports) { Object.defineProperty(exports, "__esModule", { value: true }); exports.getComponentInstance = function($element) { var _$element$data, _$element$data2; const componentName = null === (_$element$data = $element.data) || void 0 === _$element$data ? void 0 : _$element$data.call($element, "dxComponents")[0]; return componentName && (null === (_$element$data2 = $element.data) || void 0 === _$element$data2 ? void 0 : _$element$data2.call($element, `${componentName}`)) } }, 58545: /*!***********************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/ui/splitter/utils/event.js ***! \***********************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.RESIZE_EVENT = exports.ITEM_EXPANDED_EVENT = exports.ITEM_COLLAPSED_EVENT = exports.COLLAPSE_EVENT = void 0; exports.getActionNameByEventName = function(eventName) { return `_${(0,_inflector.camelize)(eventName.replace("on",""))}Action` }; var _inflector = __webpack_require__( /*! ../../../../core/utils/inflector */ 53124); exports.RESIZE_EVENT = { onResize: "onResize", onResizeStart: "onResizeStart", onResizeEnd: "onResizeEnd" }; exports.COLLAPSE_EVENT = { onCollapsePrev: "onCollapsePrev", onCollapseNext: "onCollapseNext" }; exports.ITEM_COLLAPSED_EVENT = "onItemCollapsed"; exports.ITEM_EXPANDED_EVENT = "onItemExpanded" }, 49291: /*!************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/ui/splitter/utils/layout.js ***! \************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.calculateDelta = function(offset, orientation, rtlEnabled) { let ratio = arguments.length > 3 && void 0 !== arguments[3] ? arguments[3] : 0; const delta = function(offset, orientation, rtlEnabled) { if (orientation === ORIENTATION.vertical) { return offset.y ?? 0 } return (rtlEnabled ? -1 : 1) * (offset.x ?? 0) }(offset, orientation, rtlEnabled) * ratio; return delta }; exports.convertSizeToRatio = function(size, totalPanesSize, handlesSizeSum) { const sizeInPx = tryConvertToNumber(size, totalPanesSize); if (!(0, _type.isDefined)(sizeInPx)) { return } const adjustedSize = totalPanesSize - handlesSizeSum; const ratio = function(totalSize, size) { if (0 === totalSize) { return 0 } const percentage = size / totalSize * 100; return percentage }(adjustedSize, sizeInPx); return parseFloat((0, _utils.toFixed)(ratio, _number_comparison.PRECISION)) }; exports.findIndexOfNextVisibleItem = function(items, index) { for (let i = index + 1; i < items.length; i += 1) { if (false !== items[i].visible) { return i } } return -1 }; exports.findLastIndexOfNonCollapsedItem = function(items) { for (let i = items.length - 1; i >= 0; i -= 1) { if (true !== items[i].collapsed) { return i } } return -1 }; exports.findLastIndexOfVisibleItem = function(items) { for (let i = items.length - 1; i >= 0; i -= 1) { if (false !== items[i].visible) { return i } } return -1 }; exports.findLastVisibleExpandedItemIndex = function(items) { for (let i = items.length - 1; i >= 0; i -= 1) { const { collapsed: collapsed, visible: visible } = items[i]; if (true !== collapsed && false !== visible) { return i } } return -1 }; exports.getElementSize = function($element, orientation) { return orientation === ORIENTATION.horizontal ? (0, _size.getWidth)($element) : (0, _size.getHeight)($element) }; exports.getNextLayout = function(currentLayout, delta, prevPaneIndex, paneRestrictions) { if (!(0, _type.isDefined)(prevPaneIndex)) { return currentLayout } const nextLayout = [...currentLayout]; const nextPaneIndex = prevPaneIndex + 1; let currentDelta = delta; const increment = currentDelta < 0 ? 1 : -1; let currentItemIndex = currentDelta < 0 ? nextPaneIndex : prevPaneIndex; const maxDelta = findMaxAvailableDelta(increment, currentLayout, paneRestrictions, currentItemIndex, 0); const minAbsDelta = Math.min(Math.abs(currentDelta), Math.abs(maxDelta)); let deltaApplied = 0; currentDelta = currentDelta < 0 ? -minAbsDelta : minAbsDelta; currentItemIndex = currentDelta < 0 ? prevPaneIndex : nextPaneIndex; while (currentItemIndex >= 0 && currentItemIndex < paneRestrictions.length) { const deltaRemaining = Math.abs(currentDelta) - Math.abs(deltaApplied); const prevSize = currentLayout[currentItemIndex]; const unsafeSize = prevSize - deltaRemaining; const safeSize = normalizePanelSize(paneRestrictions[currentItemIndex], unsafeSize); if (!(0 === (0, _number_comparison.compareNumbersWithPrecision)(prevSize, safeSize))) { deltaApplied += prevSize - safeSize; nextLayout[currentItemIndex] = safeSize; if (parseFloat((0, _utils.toFixed)(deltaApplied, _number_comparison.PRECISION)) >= parseFloat((0, _utils.toFixed)(Math.abs(currentDelta), _number_comparison.PRECISION))) { break } } if (currentDelta < 0) { currentItemIndex -= 1 } else { currentItemIndex += 1 } } if (0 === (0, _number_comparison.compareNumbersWithPrecision)(deltaApplied, 0)) { return currentLayout } let pivotIndex = currentDelta < 0 ? nextPaneIndex : prevPaneIndex; let prevSize = currentLayout[pivotIndex]; let unsafeSize = prevSize + deltaApplied; let safeSize = normalizePanelSize(paneRestrictions[pivotIndex], unsafeSize); nextLayout[pivotIndex] = safeSize; if (!(0 === (0, _number_comparison.compareNumbersWithPrecision)(safeSize, unsafeSize))) { let deltaRemaining = unsafeSize - safeSize; pivotIndex = currentDelta < 0 ? nextPaneIndex : prevPaneIndex; let index = pivotIndex; while (index >= 0 && index < paneRestrictions.length) { prevSize = nextLayout[index]; unsafeSize = prevSize + deltaRemaining; safeSize = normalizePanelSize(paneRestrictions[index], unsafeSize); if (!(0 === (0, _number_comparison.compareNumbersWithPrecision)(prevSize, safeSize))) { deltaRemaining -= safeSize - prevSize; nextLayout[index] = safeSize } if (0 === (0, _number_comparison.compareNumbersWithPrecision)(deltaRemaining, 0)) { break } if (currentDelta > 0) { index -= 1 } else { index += 1 } } } const totalSize = nextLayout.reduce(((total, size) => size + total), 0); if (!(0 === (0, _number_comparison.compareNumbersWithPrecision)(totalSize, 100, 2))) { return currentLayout } return nextLayout }; exports.getVisibleItems = getVisibleItems; exports.getVisibleItemsCount = function(items) { return getVisibleItems(items).length }; exports.isElementVisible = function(element) { if (element) { var _element$getClientRec; return !!(element.offsetWidth || element.offsetHeight || null !== (_element$getClientRec = element.getClientRects) && void 0 !== _element$getClientRec && _element$getClientRec.call(element).length) } return false }; exports.isPercentWidth = isPercentWidth; exports.isPixelWidth = isPixelWidth; exports.normalizePanelSize = normalizePanelSize; exports.setFlexProp = function(element, prop, value) { const normalizedProp = (0, _style.normalizeStyleProp)(prop, value); element.style[(0, _style.styleProp)(prop)] = normalizedProp }; exports.tryConvertToNumber = tryConvertToNumber; var _utils = __webpack_require__( /*! ../../../../common/core/localization/utils */ 57181); var _size = __webpack_require__( /*! ../../../../core/utils/size */ 57653); var _style = __webpack_require__( /*! ../../../../core/utils/style */ 58515); var _type = __webpack_require__( /*! ../../../../core/utils/type */ 11528); var _number_comparison = __webpack_require__( /*! ./number_comparison */ 94178); const ORIENTATION = { horizontal: "horizontal", vertical: "vertical" }; const PERCENT_UNIT = "%"; const PIXEL_UNIT = "px"; function normalizePanelSize(paneRestrictions, size) { const { minSize: minSize = 0, maxSize: maxSize = 100, resizable: resizable, visible: visible, collapsed: collapsed, collapsedSize: collapsedSize = 0 } = paneRestrictions; if (false === visible) { return 0 } if (true === collapsed) { return collapsedSize ?? 0 } if (false === resizable && (0, _type.isDefined)(paneRestrictions.size)) { return paneRestrictions.size } let adjustedSize = (0, _number_comparison.compareNumbersWithPrecision)(size, minSize) < 0 ? minSize : size; adjustedSize = Math.min(maxSize, adjustedSize); adjustedSize = parseFloat((0, _utils.toFixed)(adjustedSize, _number_comparison.PRECISION)); return adjustedSize } function findMaxAvailableDelta(increment, currentLayout, paneRestrictions, paneIndex) { let maxDelta = arguments.length > 4 && void 0 !== arguments[4] ? arguments[4] : 0; if (paneIndex < 0 || paneIndex >= paneRestrictions.length) { return maxDelta } const prevSize = currentLayout[paneIndex]; const maxPaneSize = normalizePanelSize(paneRestrictions[paneIndex], 100); const delta = maxPaneSize - prevSize; const nextMaxDelta = maxDelta + delta; return findMaxAvailableDelta(increment, currentLayout, paneRestrictions, paneIndex + increment, nextMaxDelta) } function isValidFormat(size, unit) { if (!(0, _type.isString)(size)) { return false } const regex = new RegExp(`^\\d+(\\.\\d+)?${unit}$`); return regex.test(size) } function isPercentWidth(size) { return isValidFormat(size, PERCENT_UNIT) } function isPixelWidth(size) { if ("number" === typeof size) { return size >= 0 } return isValidFormat(size, PIXEL_UNIT) } function tryConvertToNumber(size, totalPanesSize) { if (!(0, _type.isDefined)(size)) { return } if ((0, _type.isNumeric)(size) && size >= 0) { return Number(size) } if ((0, _type.isString)(size)) { if (isPercentWidth(size)) { return parseFloat(size) / 100 * totalPanesSize } if (isPixelWidth(size)) { return parseFloat(size.slice(0, -2)) } } return } function getVisibleItems(items) { return items.filter((p => false !== p.visible)) } }, 54285: /*!********************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/ui/splitter/utils/layout_default.js ***! \********************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.getDefaultLayout = function(layoutRestrictions) { let layout = new Array(layoutRestrictions.length).fill(null); let numPanelsWithDefinedSize = 0; let remainingSize = 100; layoutRestrictions.forEach(((paneRestrictions, index) => { const { size: size, visible: visible, collapsed: collapsed, collapsedSize: collapsedSize = 0 } = paneRestrictions; if (false === visible) { numPanelsWithDefinedSize += 1; layout[index] = 0; remainingSize -= 0; return } if (true === collapsed) { numPanelsWithDefinedSize += 1; layout[index] = collapsedSize; remainingSize -= collapsedSize; return } if ((0, _type.isDefined)(size)) { numPanelsWithDefinedSize += 1; if (remainingSize - size < 0) { layout[index] = remainingSize; remainingSize = 0; return } layout[index] = size; remainingSize -= size } })); let panelsToDistribute = layoutRestrictions.length - numPanelsWithDefinedSize; if (0 === panelsToDistribute) { layout[(0, _layout.findLastIndexOfVisibleItem)(layoutRestrictions)] += remainingSize; remainingSize = 0 } else { layoutRestrictions.forEach(((paneRestrictions, index) => { if (null === layout[index]) { if ((0, _type.isDefined)(paneRestrictions.maxSize) && 1 === panelsToDistribute) { layout[index] = remainingSize > paneRestrictions.maxSize ? remainingSize : paneRestrictions.maxSize; remainingSize -= layout[index]; numPanelsWithDefinedSize += 1 } else if ((0, _type.isDefined)(paneRestrictions.maxSize) && paneRestrictions.maxSize < remainingSize / panelsToDistribute) { layout[index] = paneRestrictions.maxSize; remainingSize -= paneRestrictions.maxSize; numPanelsWithDefinedSize += 1; panelsToDistribute -= 1 } } })); panelsToDistribute = layoutRestrictions.length - numPanelsWithDefinedSize; if (panelsToDistribute > 0) { const spacePerPanel = remainingSize / panelsToDistribute; layout.forEach(((panelSize, index) => { if (null === panelSize) { layout[index] = spacePerPanel } })) } } layout = layout.map((size => null === size ? 0 : parseFloat((0, _utils.toFixed)(size, _number_comparison.PRECISION)))); if (1 === layout.length) { return layout } let nextLayout = [...layout]; const nextLayoutTotalSize = nextLayout.reduce(((accumulated, current) => accumulated + current), 0); if (!(0 === (0, _number_comparison.compareNumbersWithPrecision)(nextLayoutTotalSize, 100))) { for (let index = 0; index < layoutRestrictions.length; index += 1) { const unsafeSize = nextLayout[index]; const safeSize = 100 / nextLayoutTotalSize * unsafeSize; nextLayout[index] = safeSize } } remainingSize = 0; nextLayout = layout.map(((panelSize, index) => { const restriction = layoutRestrictions[index]; const adjustedSize = (0, _layout.normalizePanelSize)(restriction, panelSize); remainingSize += panelSize - adjustedSize; return adjustedSize })); if (0 !== (0, _number_comparison.compareNumbersWithPrecision)(remainingSize, 0)) { for (let index = 0; index < nextLayout.length && 0 !== (0, _number_comparison.compareNumbersWithPrecision)(remainingSize, 0); index += 1) { const currentSize = nextLayout[index]; const adjustedSize = (0, _layout.normalizePanelSize)(layoutRestrictions[index], currentSize + remainingSize); remainingSize -= adjustedSize - currentSize; nextLayout[index] = adjustedSize } if (remainingSize > 0) { const paneIndex = (0, _layout.findLastVisibleExpandedItemIndex)(layoutRestrictions); if (-1 !== paneIndex) { nextLayout[paneIndex] += remainingSize } } } return nextLayout }; var _utils = __webpack_require__( /*! ../../../../common/core/localization/utils */ 57181); var _type = __webpack_require__( /*! ../../../../core/utils/type */ 11528); var _layout = __webpack_require__( /*! ./layout */ 49291); var _number_comparison = __webpack_require__( /*! ./number_comparison */ 94178) }, 94178: /*!***********************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/ui/splitter/utils/number_comparison.js ***! \***********************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.PRECISION = void 0; exports.compareNumbersWithPrecision = function(actual, expected) { let precision = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : PRECISION; const delta = parseFloat((0, _utils.toFixed)(actual, precision)) - parseFloat((0, _utils.toFixed)(expected, precision)); if (0 === delta) { return 0 } return delta > 0 ? 1 : -1 }; var _utils = __webpack_require__( /*! ../../../../common/core/localization/utils */ 57181); const PRECISION = exports.PRECISION = 10 }, 49624: /*!***********************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/ui/splitter/utils/types.js ***! \***********************************************************************************/ function(__unused_webpack_module, exports) { Object.defineProperty(exports, "__esModule", { value: true }); exports.CollapseExpandDirection = void 0; var CollapseExpandDirection; ! function(CollapseExpandDirection) { CollapseExpandDirection.Previous = "prev"; CollapseExpandDirection.Next = "next" }(CollapseExpandDirection || (exports.CollapseExpandDirection = CollapseExpandDirection = {})) }, 95094: /*!********************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/ui/stepper/connector.js ***! \********************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = exports.STEPPER_CONNECTOR_VERTICAL_ORIENTATION_CLASS = exports.STEPPER_CONNECTOR_VALUE_CLASS = exports.STEPPER_CONNECTOR_HORIZONTAL_ORIENTATION_CLASS = exports.STEPPER_CONNECTOR_CONTAINER_CLASS = exports.STEPPER_CONNECTOR_CLASS = exports.MAX_SIZE = void 0; var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../../core/renderer */ 64553)); var _style = __webpack_require__( /*! ../../../core/utils/style */ 58515); var _dom_component = _interopRequireDefault(__webpack_require__( /*! ../../core/widget/dom_component */ 22331)); var _stepper = __webpack_require__( /*! ./stepper */ 65348); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } function _extends() { return _extends = Object.assign ? Object.assign.bind() : function(n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) { ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]) } } return n }, _extends.apply(null, arguments) } const STEPPER_CONNECTOR_CLASS = exports.STEPPER_CONNECTOR_CLASS = "dx-stepper-connector"; const STEPPER_CONNECTOR_HORIZONTAL_ORIENTATION_CLASS = exports.STEPPER_CONNECTOR_HORIZONTAL_ORIENTATION_CLASS = "dx-stepper-connector-horizontal"; const STEPPER_CONNECTOR_VERTICAL_ORIENTATION_CLASS = exports.STEPPER_CONNECTOR_VERTICAL_ORIENTATION_CLASS = "dx-stepper-connector-vertical"; const STEPPER_CONNECTOR_CONTAINER_CLASS = exports.STEPPER_CONNECTOR_CONTAINER_CLASS = "dx-stepper-connector-container"; const STEPPER_CONNECTOR_VALUE_CLASS = exports.STEPPER_CONNECTOR_VALUE_CLASS = "dx-stepper-connector-value"; const MAX_SIZE = exports.MAX_SIZE = 100; class Connector extends _dom_component.default { _getDefaultOptions() { return _extends({}, super._getDefaultOptions(), { orientation: "horizontal", size: MAX_SIZE, value: 0 }) } _init() { super._init(); (0, _renderer.default)(this.element()).addClass(STEPPER_CONNECTOR_CLASS) } _initMarkup() { super._initMarkup(); this._toggleOrientationClass(); this._renderContent(); this._updateDimensions() } _updateDimensions() { const isHorizontal = this._isHorizontalOrientation(); const dimension = isHorizontal ? "width" : "height"; const inverseDimension = isHorizontal ? "height" : "width"; const { size: size } = this.option(); this.option(inverseDimension, null); this.option(dimension, `${size}%`); this._updateConnectorValue() } _updateConnectorValue() { const { value: value } = this.option(); const connectorElement = this._$connectorValue().get(0); const ratio = value / MAX_SIZE; connectorElement.style[(0, _style.styleProp)("flexGrow")] = String(ratio) } _$connectorValue() { return this.$element().find(`.${STEPPER_CONNECTOR_VALUE_CLASS}`) } _toggleOrientationClass() { (0, _renderer.default)(this.element()).toggleClass(STEPPER_CONNECTOR_HORIZONTAL_ORIENTATION_CLASS, this._isHorizontalOrientation()).toggleClass(STEPPER_CONNECTOR_VERTICAL_ORIENTATION_CLASS, !this._isHorizontalOrientation()) } _isHorizontalOrientation() { const { orientation: orientation } = this.option(); return orientation === _stepper.ORIENTATION.horizontal } _renderContent() { const $container = (0, _renderer.default)("<div>").addClass(STEPPER_CONNECTOR_CONTAINER_CLASS).appendTo(this.element()); (0, _renderer.default)("<div>").addClass(STEPPER_CONNECTOR_VALUE_CLASS).appendTo($container) } _clean() { super._clean(); this.$element().empty() } _optionChanged(args) { const { name: name } = args; switch (name) { case "orientation": this._toggleOrientationClass(); this._updateDimensions(); break; case "size": case "value": this._updateDimensions(); break; default: super._optionChanged(args) } } } exports.default = Connector }, 65348: /*!******************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/ui/stepper/stepper.js ***! \******************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = exports.STEP_TEXT_CLASS = exports.STEP_SELECTED_CLASS = exports.STEP_OPTIONAL_MARK_CLASS = exports.STEP_LIST_CLASS = exports.STEP_LABEL_CLASS = exports.STEP_INDICATOR_CLASS = exports.STEP_CLASS = exports.STEP_CAPTION_CLASS = exports.STEPPER_VERTICAL_ORIENTATION_CLASS = exports.STEPPER_ITEM_DATA_KEY = exports.STEPPER_HORIZONTAL_ORIENTATION_CLASS = exports.STEPPER_CLASS = exports.ORIENTATION = void 0; var _message = _interopRequireDefault(__webpack_require__( /*! ../../../common/core/localization/message */ 4671)); var _component_registrator = _interopRequireDefault(__webpack_require__( /*! ../../../core/component_registrator */ 92848)); var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../../core/renderer */ 64553)); var _deferred = __webpack_require__( /*! ../../../core/utils/deferred */ 87739); var _type = __webpack_require__( /*! ../../../core/utils/type */ 11528); var _m_bindable_template = __webpack_require__( /*! ../../core/templates/m_bindable_template */ 52820); var _m_icon = __webpack_require__( /*! ../../core/utils/m_icon */ 42463); var _m_collection_widget = _interopRequireDefault(__webpack_require__( /*! ../../ui/collection/m_collection_widget.async */ 88575)); var _connector = _interopRequireDefault(__webpack_require__( /*! ../../ui/stepper/connector */ 95094)); var _stepper_item = function(e, r) { if (!r && e && e.__esModule) { return e } if (null === e || "object" != typeof e && "function" != typeof e) { return { default: e } } var t = _getRequireWildcardCache(r); if (t && t.has(e)) { return t.get(e) } var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) { if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u] } } return n.default = e, t && t.set(e, n), n }(__webpack_require__( /*! ../../ui/stepper/stepper_item */ 1452)); function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) { return null } var r = new WeakMap, t = new WeakMap; return (_getRequireWildcardCache = function(e) { return e ? t : r })(e) } function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } function _extends() { return _extends = Object.assign ? Object.assign.bind() : function(n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) { ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]) } } return n }, _extends.apply(null, arguments) } const STEPPER_CLASS = exports.STEPPER_CLASS = "dx-stepper"; const STEP_LIST_CLASS = exports.STEP_LIST_CLASS = "dx-step-list"; const STEP_CLASS = exports.STEP_CLASS = "dx-step"; const STEP_SELECTED_CLASS = exports.STEP_SELECTED_CLASS = "dx-step-selected"; const STEPPER_HORIZONTAL_ORIENTATION_CLASS = exports.STEPPER_HORIZONTAL_ORIENTATION_CLASS = "dx-stepper-horizontal"; const STEPPER_VERTICAL_ORIENTATION_CLASS = exports.STEPPER_VERTICAL_ORIENTATION_CLASS = "dx-stepper-vertical"; const STEP_INDICATOR_CLASS = exports.STEP_INDICATOR_CLASS = "dx-step-indicator"; const STEP_TEXT_CLASS = exports.STEP_TEXT_CLASS = "dx-step-text"; const STEP_CAPTION_CLASS = exports.STEP_CAPTION_CLASS = "dx-step-caption"; const STEP_LABEL_CLASS = exports.STEP_LABEL_CLASS = "dx-step-label"; const STEP_OPTIONAL_MARK_CLASS = exports.STEP_OPTIONAL_MARK_CLASS = "dx-step-optional-mark"; const STEPPER_ITEM_DATA_KEY = exports.STEPPER_ITEM_DATA_KEY = "dxStepperItemData"; const ORIENTATION = exports.ORIENTATION = { horizontal: "horizontal", vertical: "vertical" }; class Stepper extends _m_collection_widget.default { _getDefaultOptions() { return _extends({}, super._getDefaultOptions(), { orientation: "horizontal", linear: true, selectionMode: "single", selectOnFocus: true, activeStateEnabled: true, hoverStateEnabled: true, focusStateEnabled: true, loopItemFocus: false, selectionRequired: true, hintExpr: data => data ? data.hint : void 0, _itemAttributes: { role: "tab" } }) } _supportedKeys() { const defaultHandlers = super._supportedKeys(); const { linear: linear, selectOnFocus: selectOnFocus } = this.option(); return _extends({}, defaultHandlers, { home: linear && selectOnFocus ? defaultHandlers.leftArrow : defaultHandlers.home, end: linear && selectOnFocus ? defaultHandlers.rightArrow : defaultHandlers.end }) } _getStepIcon(data) { const { isValid: isValid, icon: icon } = data; if (false === isValid) { return _stepper_item.STEP_INVALID_ICON } if (true === isValid) { return _stepper_item.STEP_VALID_ICON } return icon } _getStepIndicator(data) { const { text: text } = data; const $indicatorElement = (0, _renderer.default)("<div>").addClass(STEP_INDICATOR_CLASS); const iconName = this._getStepIcon(data); const $indicatorContent = (0, _m_icon.getImageContainer)(iconName) ?? (0, _renderer.default)("<div>").addClass(STEP_TEXT_CLASS).text(text ?? ""); $indicatorElement.append($indicatorContent); return $indicatorElement } _getStepLabel(data) { const { label: label } = data; if ((0, _type.isDefined)(label)) { return (0, _renderer.default)("<div>").addClass(STEP_LABEL_CLASS).text(label) } return (0, _renderer.default)() } _getStepOptionalMark(data) { const { optional: optional } = data; if (optional) { const optionalMarkText = _message.default.format("dxStepper-optionalMark"); return (0, _renderer.default)("<div>").addClass(STEP_OPTIONAL_MARK_CLASS).text(optionalMarkText) } return (0, _renderer.default)() } _getStepCaption(data) { const $stepLabel = this._getStepLabel(data); const $stepOptionalMark = this._getStepOptionalMark(data); if ($stepLabel.length || $stepOptionalMark.length) { const $stepCaption = (0, _renderer.default)("<div>").addClass(STEP_CAPTION_CLASS); $stepCaption.append($stepLabel).append($stepOptionalMark); return $stepCaption } return (0, _renderer.default)() } _prepareDefaultItemTemplate(data, $container) { const $stepIndicator = this._getStepIndicator(data); const $stepLabel = this._getStepCaption(data); $container.append($stepIndicator).append($stepLabel) } _initTemplates() { super._initTemplates(); this._templateManager.addDefaultTemplates({ item: new _m_bindable_template.BindableTemplate((($container, data) => { this._prepareDefaultItemTemplate(data, $container) }), ["text", "icon", "label", "isValid", "optional"], this.option("integrationOptions.watchMethod")) }) } _createItemByTemplate(itemTemplate, renderArgs) { const { itemData: itemData, index: index } = renderArgs; return super._createItemByTemplate(itemTemplate, _extends({}, renderArgs, { itemData: _extends({ text: `${index+1}` }, itemData) })) } _getItemInstance($item) { return _stepper_item.default.getInstance($item) } _renderItem(index, itemData, $container, $itemToReplace) { const $itemFrame = super._renderItem(index, itemData, $container, $itemToReplace); this._getItemInstance($itemFrame).updateInvalidClass(itemData.isValid); return $itemFrame } _postprocessRenderItem(args) { super._postprocessRenderItem(args); const { selectedIndex: selectedIndex = 0 } = this.option(); const itemInstance = this._getItemInstance(args.itemElement); itemInstance.changeCompleted(args.itemIndex < selectedIndex) } _itemClass() { return STEP_CLASS } _itemContainer() { return this._$stepsContainer } _selectedItemClass() { return STEP_SELECTED_CLASS } _isItemSelected(index) { const { items: items = [], selectedItem: selectedItem } = this.option(); return selectedItem === items[index] } _itemDataKey() { return STEPPER_ITEM_DATA_KEY } _init() { super._init(); this.setAria("role", "tablist"); this._appendStepsContainer() } _initMarkup() { (0, _renderer.default)(this.element()).addClass(STEPPER_CLASS); this._renderConnector(); this._toggleOrientationClass(); this._setAriaOrientation(); super._initMarkup() } _renderConnector() { if (this._connector) { return } const { orientation: orientation } = this.option(); this._connector = this._createComponent((0, _renderer.default)("<div>"), _connector.default, { orientation: orientation, size: this._getConnectorSize(), value: this._getConnectorValue() }); (0, _renderer.default)(this.element()).prepend(this._connector.$element()) } _getConnectorSize() { const { items: items = [] } = this.option(); const itemRatio = 100 / (items.length || 1); return 100 - itemRatio } _getConnectorValue() { const { items: items = [], selectedIndex: selectedIndex = 0 } = this.option(); const segmentsCount = items.length - 1; const itemRatio = 100 / Math.max(segmentsCount, 1); return selectedIndex * itemRatio } _appendStepsContainer() { this._$stepsContainer = (0, _renderer.default)("<div>").addClass(STEP_LIST_CLASS); (0, _renderer.default)(this.element()).append(this._$stepsContainer) } _setAriaOrientation() { const { orientation: orientation } = this.option(); this.setAria("orientation", orientation) } _toggleOrientationClass() { (0, _renderer.default)(this.element()).toggleClass(STEPPER_HORIZONTAL_ORIENTATION_CLASS, this._isHorizontalOrientation()).toggleClass(STEPPER_VERTICAL_ORIENTATION_CLASS, !this._isHorizontalOrientation()) } _isHorizontalOrientation() { const { orientation: orientation } = this.option(); return orientation === ORIENTATION.horizontal } _shouldPreventItemEvent(itemElement) { const itemIndex = this._editStrategy.getIndex(itemElement); const { linear: linear, selectedIndex: selectedIndex = 0 } = this.option(); return !!linear && Math.abs(selectedIndex - itemIndex) > 1 } _itemClickHandler(e, args, config) { if (!this._shouldPreventItemEvent(e.currentTarget)) { super._itemClickHandler(e, args, config) } } _itemPointerDownHandler(e) { if (!this._shouldPreventItemEvent(e.currentTarget)) { super._itemPointerDownHandler(e) } } _itemSelectHandler(e) { if (!this._shouldPreventItemEvent(e.currentTarget)) { super._itemSelectHandler(e) } } _hover($el, $previous) { const $hoverTarget = this._findHoverTarget($el); if ($hoverTarget && this._shouldPreventItemEvent($hoverTarget)) { return } super._hover($el, $previous) } _focusOutHandler(e) { this._clearFocusedItem(); super._focusOutHandler(e) } _clearFocusedItem() { this.option("focusedElement", null) } _processChangeCompletedItems() { const itemElements = this._itemElements(); if (!itemElements.length) { return } const $lastCompletedElement = itemElements.filter(`.${_stepper_item.STEP_COMPLETED_CLASS}`).last(); const lastCompletedIndex = this._editStrategy.getIndex($lastCompletedElement); const { selectedIndex: selectedIndex = 0 } = this.option(); const startIndex = Math.min(lastCompletedIndex + 1, selectedIndex); const endIndex = Math.max(lastCompletedIndex + 1, selectedIndex); const isCompleted = lastCompletedIndex < selectedIndex; for (let i = startIndex; i < endIndex; i += 1) { const itemInstance = this._getItemInstance((0, _renderer.default)(itemElements[i])); itemInstance.changeCompleted(isCompleted) } } _postProcessSyncSelection() { this._connector.option("value", this._getConnectorValue()); this._processChangeCompletedItems() } _syncSelectionOptions(byOption) { super._syncSelectionOptions(byOption).done((() => { this._postProcessSyncSelection() })); return (0, _deferred.Deferred)().resolve().promise() } _itemOptionChanged(item, property, value, prevValue) { switch (property) { case "isValid": { const itemIndex = this._getIndexByItem(item); const $item = (0, _renderer.default)(this._itemElements()[itemIndex]); const itemInstance = this._getItemInstance($item); itemInstance.updateInvalidClass(value); super._itemOptionChanged(item, property, value, prevValue); break } default: super._itemOptionChanged(item, property, value, prevValue) } } _optionChanged(args) { const { name: name, value: value } = args; switch (name) { case "orientation": this._toggleOrientationClass(); this._setAriaOrientation(); this._connector.option(name, value); break; case "linear": break; case "hintExpr": this._invalidate(); break; default: super._optionChanged(args) } } } Stepper.ItemClass = _stepper_item.default; (0, _component_registrator.default)("dxStepper", Stepper); exports.default = Stepper }, 1452: /*!***********************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/ui/stepper/stepper_item.js ***! \***********************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = exports.STEP_VALID_ICON = exports.STEP_INVALID_ICON = exports.STEP_INVALID_CLASS = exports.STEP_COMPLETED_CLASS = void 0; var _item = (e = __webpack_require__( /*! ../../ui/collection/item */ 30845), e && e.__esModule ? e : { default: e }); var e; const STEP_COMPLETED_CLASS = exports.STEP_COMPLETED_CLASS = "dx-step-completed"; const STEP_INVALID_CLASS = exports.STEP_INVALID_CLASS = "dx-step-invalid"; exports.STEP_VALID_ICON = "check"; exports.STEP_INVALID_ICON = "errorcircle"; class StepperItem extends _item.default { _renderWatchers() { super._renderWatchers(); this._startWatcher("hint", (value => { this._renderHint(value) })) } _renderHint(hint) { this._$element.attr("title", hint ?? null) } updateInvalidClass(isValid) { this._$element.toggleClass(STEP_INVALID_CLASS, void 0 !== isValid && !isValid) } changeCompleted(isCompleted) { this._$element.toggleClass(STEP_COMPLETED_CLASS, isCompleted) } } exports.default = StepperItem }, 41211: /*!*****************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/ui/tab_panel/item.js ***! \*****************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _common = __webpack_require__( /*! ../../../core/utils/common */ 17781); var _item = (e = __webpack_require__( /*! ../../ui/collection/item */ 30845), e && e.__esModule ? e : { default: e }); var e; class TabPanelItem extends _item.default { _renderWatchers() { this._startWatcher("badge", _common.noop); super._renderWatchers() } } exports.default = TabPanelItem }, 98444: /*!**********************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/ui/tab_panel/tab_panel.js ***! \**********************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = exports.TABS_POSITION = exports.TABS_ORIENTATION = exports.TABPANEL_TABS_POSITION_CLASS = exports.TABPANEL_TABS_ITEM_CLASS = exports.TABPANEL_CONTAINER_CLASS = exports.TABPANEL_CLASS = exports.DISABLED_FOCUSED_TAB_CLASS = void 0; var _component_registrator = _interopRequireDefault(__webpack_require__( /*! ../../../core/component_registrator */ 92848)); var _devices = _interopRequireDefault(__webpack_require__( /*! ../../../core/devices */ 65951)); var _dom_adapter = _interopRequireDefault(__webpack_require__( /*! ../../../core/dom_adapter */ 64960)); var _element = __webpack_require__( /*! ../../../core/element */ 61404); var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../../core/renderer */ 64553)); var _bindable_template = __webpack_require__( /*! ../../../core/templates/bindable_template */ 27286); var _icon = __webpack_require__( /*! ../../../core/utils/icon */ 69629); var _type = __webpack_require__( /*! ../../../core/utils/type */ 11528); var _themes = __webpack_require__( /*! ../../../ui/themes */ 52071); var _m_support = _interopRequireDefault(__webpack_require__( /*! ../../core/utils/m_support */ 85991)); var _m_multi_view = _interopRequireDefault(__webpack_require__( /*! ../../ui/m_multi_view */ 95916)); var _tabs = function(e, r) { if (!r && e && e.__esModule) { return e } if (null === e || "object" != typeof e && "function" != typeof e) { return { default: e } } var t = _getRequireWildcardCache(r); if (t && t.has(e)) { return t.get(e) } var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) { if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u] } } return n.default = e, t && t.set(e, n), n }(__webpack_require__( /*! ../../ui/tabs/tabs */ 43474)); var _item = _interopRequireDefault(__webpack_require__( /*! ./item */ 41211)); function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) { return null } var r = new WeakMap, t = new WeakMap; return (_getRequireWildcardCache = function(e) { return e ? t : r })(e) } function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } function _extends() { return _extends = Object.assign ? Object.assign.bind() : function(n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) { ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]) } } return n }, _extends.apply(null, arguments) } const TABPANEL_CLASS = exports.TABPANEL_CLASS = "dx-tabpanel"; const TABPANEL_TABS_ITEM_CLASS = exports.TABPANEL_TABS_ITEM_CLASS = "dx-tabpanel-tab"; const TABPANEL_CONTAINER_CLASS = exports.TABPANEL_CONTAINER_CLASS = "dx-tabpanel-container"; const DISABLED_FOCUSED_TAB_CLASS = exports.DISABLED_FOCUSED_TAB_CLASS = "dx-disabled-focused-tab"; const TABPANEL_TABS_POSITION_CLASS = exports.TABPANEL_TABS_POSITION_CLASS = { top: "dx-tabpanel-tabs-position-top", right: "dx-tabpanel-tabs-position-right", bottom: "dx-tabpanel-tabs-position-bottom", left: "dx-tabpanel-tabs-position-left" }; const TABS_POSITION = exports.TABS_POSITION = { top: "top", right: "right", bottom: "bottom", left: "left" }; const TABS_INDICATOR_POSITION_BY_TABS_POSITION = { top: "bottom", right: "left", bottom: "top", left: "right" }; const TABS_ORIENTATION = exports.TABS_ORIENTATION = { horizontal: "horizontal", vertical: "vertical" }; const ICON_POSITION_top = "top", ICON_POSITION_start = "start"; const STYLING_MODE_primary = "primary", STYLING_MODE_secondary = "secondary"; class TabPanel extends _m_multi_view.default { _getDefaultOptions() { return _extends({}, super._getDefaultOptions(), { itemTitleTemplate: "title", hoverStateEnabled: true, selectOnFocus: false, showNavButtons: false, scrollByContent: true, scrollingEnabled: true, tabsPosition: TABS_POSITION.top, iconPosition: ICON_POSITION_start, stylingMode: STYLING_MODE_primary, onTitleClick: null, onTitleHold: null, onTitleRendered: null, badgeExpr: data => null === data || void 0 === data ? void 0 : data.badge, _tabsIndicatorPosition: null }) } _defaultOptionsRules() { const themeName = (0, _themes.current)(); return super._defaultOptionsRules().concat([{ device: () => "desktop" === _devices.default.real().deviceType && !_devices.default.isSimulator(), options: { focusStateEnabled: true } }, { device: () => !_m_support.default.touch, options: { swipeEnabled: false } }, { device: { platform: "generic" }, options: { animationEnabled: false } }, { device: () => (0, _themes.isFluent)(themeName), options: { stylingMode: STYLING_MODE_secondary } }, { device: () => (0, _themes.isMaterialBased)(themeName), options: { iconPosition: ICON_POSITION_top } }]) } _init() { super._init(); this.$element().addClass(TABPANEL_CLASS); this._toggleTabPanelTabsPositionClass() } _getElementAria() { return { role: "tabpanel" } } _getItemAria() { return { role: "tabpanel" } } _initMarkup() { super._initMarkup(); this._createTitleActions(); this._renderLayout() } _prepareTabsItemTemplate(data, $container) { const $iconElement = (0, _icon.getImageContainer)(null === data || void 0 === data ? void 0 : data.icon); if ($iconElement) { $container.append($iconElement) } const title = (0, _type.isPlainObject)(data) ? null === data || void 0 === data ? void 0 : data.title : data; if ((0, _type.isDefined)(title) && !(0, _type.isPlainObject)(title)) { const $tabTextSpan = (0, _renderer.default)("<span>").addClass(_tabs.TABS_ITEM_TEXT_SPAN_CLASS); $tabTextSpan.append(_dom_adapter.default.createTextNode(title)); const $tabTextSpanPseudo = (0, _renderer.default)("<span>").addClass(_tabs.TABS_ITEM_TEXT_SPAN_PSEUDO_CLASS); $tabTextSpanPseudo.append(_dom_adapter.default.createTextNode(title)); $tabTextSpanPseudo.appendTo($tabTextSpan); $tabTextSpan.appendTo($container) } } _initTemplates() { super._initTemplates(); this._templateManager.addDefaultTemplates({ title: new _bindable_template.BindableTemplate((($container, data) => { this._prepareTabsItemTemplate(data, $container); const $tabItem = (0, _renderer.default)("<div>").addClass(_tabs.TABS_ITEM_TEXT_CLASS); $container.wrapInner($tabItem) }), ["title", "icon"], this.option("integrationOptions.watchMethod")) }) } _createTitleActions() { this._createTitleClickAction(); this._createTitleHoldAction(); this._createTitleRenderedAction() } _createTitleClickAction() { this._titleClickAction = this._createActionByOption("onTitleClick") } _createTitleHoldAction() { this._titleHoldAction = this._createActionByOption("onTitleHold") } _createTitleRenderedAction() { this._titleRenderedAction = this._createActionByOption("onTitleRendered") } _renderLayout() { if (this._tabs) { return } const $element = this.$element(); this._$tabContainer = (0, _renderer.default)("<div>").addClass("dx-tabpanel-tabs").appendTo($element); const $tabs = (0, _renderer.default)("<div>").appendTo(this._$tabContainer); this._tabs = this._createComponent($tabs, _tabs.default, this._tabConfig()); this._$container = (0, _renderer.default)("<div>").addClass(TABPANEL_CONTAINER_CLASS).appendTo($element); this._$container.append(this._$wrapper); const { focusStateEnabled: focusStateEnabled, selectedIndex: selectedIndex } = this.option(); if (focusStateEnabled && (0, _type.isDefined)(selectedIndex)) { const selectedItem = this._tabs.itemElements().get(selectedIndex); if (selectedItem) { this._tabs.option({ focusedElement: selectedItem }) } } } _refreshActiveDescendant() { if (!this._tabs) { return } const tabs = this._tabs; const tabItems = tabs.itemElements(); const $activeTab = (0, _renderer.default)(tabItems[tabs.option("selectedIndex")]); const id = this.getFocusedItemId(); this.setAria("controls", void 0, (0, _renderer.default)(tabItems)); this.setAria("controls", id, $activeTab) } _getTabsIndicatorPosition() { const { _tabsIndicatorPosition: _tabsIndicatorPosition, tabsPosition: tabsPosition } = this.option(); return _tabsIndicatorPosition ?? TABS_INDICATOR_POSITION_BY_TABS_POSITION[tabsPosition ?? TABS_POSITION.top] } _tabConfig() { const tabsIndicatorPosition = this._getTabsIndicatorPosition(); const { focusStateEnabled: focusStateEnabled, hoverStateEnabled: hoverStateEnabled, repaintChangesOnly: repaintChangesOnly, tabIndex: tabIndex, selectedIndex: selectedIndex, badgeExpr: badgeExpr, itemHoldTimeout: itemHoldTimeout, items: items, scrollingEnabled: scrollingEnabled, scrollByContent: scrollByContent, showNavButtons: showNavButtons, loop: loop, iconPosition: iconPosition, stylingMode: stylingMode } = this.option(); return { selectOnFocus: true, focusStateEnabled: focusStateEnabled, hoverStateEnabled: hoverStateEnabled, repaintChangesOnly: repaintChangesOnly, tabIndex: tabIndex, selectedIndex: selectedIndex, badgeExpr: badgeExpr, onItemClick: this._titleClickAction.bind(this), onItemHold: this._titleHoldAction.bind(this), itemHoldTimeout: itemHoldTimeout, onSelectionChanging: e => { const newTabsSelectedItemData = e.addedItems[0]; const newTabsSelectedIndex = this._getIndexByItemData(newTabsSelectedItemData); const selectingResult = this.selectItem(newTabsSelectedIndex); const promiseState = selectingResult.state(); if ("pending" !== promiseState) { e.cancel = "rejected" === promiseState; return } e.cancel = new Promise((resolve => { selectingResult.done((() => { resolve(false) })).fail((() => { resolve(true) })) })) }, onSelectionChanged: () => { this._refreshActiveDescendant() }, onItemRendered: this._titleRenderedAction.bind(this), itemTemplate: this._getTemplateByOption("itemTitleTemplate"), items: items, noDataText: null, scrollingEnabled: scrollingEnabled, scrollByContent: scrollByContent, showNavButtons: showNavButtons, itemTemplateProperty: "tabTemplate", loopItemFocus: loop, selectionRequired: true, onOptionChanged: args => { if ("focusedElement" === args.name) { if (args.value) { const $value = (0, _renderer.default)(args.value); const $newItem = this._itemElements().eq($value.index()); this.option("focusedElement", (0, _element.getPublicElement)($newItem)) } else { this.option("focusedElement", args.value) } } }, onFocusIn: args => { this._focusInHandler(args.event) }, onFocusOut: args => { if (!this._isFocusOutHandlerExecuting) { this._focusOutHandler(args.event) } }, orientation: this._getTabsOrientation(), iconPosition: iconPosition, stylingMode: stylingMode, _itemAttributes: { class: TABPANEL_TABS_ITEM_CLASS }, _indicatorPosition: tabsIndicatorPosition } } _renderFocusTarget() { this._focusTarget().attr("tabIndex", -1) } _getTabsOrientation() { const { tabsPosition: tabsPosition } = this.option(); if ([TABS_POSITION.right, TABS_POSITION.left].includes(tabsPosition)) { return TABS_ORIENTATION.vertical } return TABS_ORIENTATION.horizontal } _getTabPanelTabsPositionClass() { const { tabsPosition: tabsPosition } = this.option(); switch (tabsPosition) { case TABS_POSITION.right: return TABPANEL_TABS_POSITION_CLASS.right; case TABS_POSITION.bottom: return TABPANEL_TABS_POSITION_CLASS.bottom; case TABS_POSITION.left: return TABPANEL_TABS_POSITION_CLASS.left; case TABS_POSITION.top: default: return TABPANEL_TABS_POSITION_CLASS.top } } _toggleTabPanelTabsPositionClass() { for (const key in TABPANEL_TABS_POSITION_CLASS) { this.$element().removeClass(TABPANEL_TABS_POSITION_CLASS[key]) } const newClass = this._getTabPanelTabsPositionClass(); this.$element().addClass(newClass) } _updateTabsOrientation() { const orientation = this._getTabsOrientation(); this._setTabsOption("orientation", orientation) } _toggleWrapperFocusedClass(isFocused) { this._toggleFocusClass(isFocused, this._$wrapper) } _toggleDisabledFocusedClass(isFocused) { this._focusTarget().toggleClass(DISABLED_FOCUSED_TAB_CLASS, isFocused) } _updateFocusState(e, isFocused) { super._updateFocusState(e, isFocused); const isTabsTarget = e.target === this._tabs._focusTarget().get(0); const isMultiViewTarget = e.target === this._focusTarget().get(0); if (isTabsTarget) { this._toggleFocusClass(isFocused, this._focusTarget()) } if (isTabsTarget || isMultiViewTarget) { const isDisabled = this._isDisabled(this.option("focusedElement")); this._toggleWrapperFocusedClass(isFocused && !isDisabled); this._toggleDisabledFocusedClass(isFocused && isDisabled) } if (isMultiViewTarget) { this._toggleFocusClass(isFocused, this._tabs.$element()); this._toggleFocusClass(isFocused, this._tabs.option("focusedElement")) } } _focusOutHandler(e) { this._isFocusOutHandlerExecuting = true; super._focusOutHandler(e); this._tabs._focusOutHandler(e); this._isFocusOutHandlerExecuting = false } _setTabsOption(name, value) { if (this._tabs) { this._tabs.option(name, value) } } _postprocessSwipe(args) { this._setTabsOption("selectedIndex", args.swipedTabsIndex) } _visibilityChanged(visible) { if (visible) { this._tabs._dimensionChanged() } } registerKeyHandler(key, handler) { super.registerKeyHandler(key, handler); if (this._tabs) { this._tabs.registerKeyHandler(key, handler) } } repaint() { super.repaint(); this._tabs.repaint() } _updateTabsIndicatorPosition() { const value = this._getTabsIndicatorPosition(); this._setTabsOption("_indicatorPosition", value) } _optionChanged(args) { const { name: name, value: value, fullName: fullName } = args; switch (name) { case "dataSource": default: super._optionChanged(args); break; case "items": this._setTabsOption(name, this.option(name)); if (!this.option("repaintChangesOnly")) { this._tabs.repaint() } super._optionChanged(args); break; case "width": super._optionChanged(args); this._tabs.repaint(); break; case "selectedIndex": case "selectedItem": { this._setTabsOption(fullName, value); super._optionChanged(args); const { focusStateEnabled: focusStateEnabled } = this.option(); if (true === focusStateEnabled) { const selectedIndex = this.option("selectedIndex"); const selectedTabContent = this._itemElements().eq(selectedIndex); this.option("focusedElement", (0, _element.getPublicElement)(selectedTabContent)) } break } case "itemHoldTimeout": case "focusStateEnabled": case "hoverStateEnabled": this._setTabsOption(fullName, value); super._optionChanged(args); break; case "scrollingEnabled": case "scrollByContent": case "showNavButtons": this._setTabsOption(fullName, value); break; case "focusedElement": { const id = value ? (0, _renderer.default)(value).index() : value; const newItem = value && this._tabs ? this._tabs._itemElements().eq(id) : value; this._setTabsOption("focusedElement", (0, _element.getPublicElement)(newItem)); if (value) { const isDisabled = this._isDisabled(value); this._toggleWrapperFocusedClass(!isDisabled); this._toggleDisabledFocusedClass(isDisabled) } super._optionChanged(args); break } case "itemTitleTemplate": this._setTabsOption("itemTemplate", this._getTemplateByOption("itemTitleTemplate")); break; case "onTitleClick": this._createTitleClickAction(); this._setTabsOption("onItemClick", this._titleClickAction.bind(this)); break; case "onTitleHold": this._createTitleHoldAction(); this._setTabsOption("onItemHold", this._titleHoldAction.bind(this)); break; case "onTitleRendered": this._createTitleRenderedAction(); this._setTabsOption("onItemRendered", this._titleRenderedAction.bind(this)); break; case "loop": this._setTabsOption("loopItemFocus", value); super._optionChanged(args); break; case "badgeExpr": this._invalidate(); break; case "tabsPosition": this._toggleTabPanelTabsPositionClass(); this._updateTabsIndicatorPosition(); this._updateTabsOrientation(); break; case "iconPosition": this._setTabsOption("iconPosition", value); break; case "stylingMode": this._setTabsOption("stylingMode", value); break; case "_tabsIndicatorPosition": this._setTabsOption("_indicatorPosition", value) } } } TabPanel.ItemClass = _item.default; (0, _component_registrator.default)("dxTabPanel", TabPanel); exports.default = TabPanel }, 20425: /*!*****************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/ui/tabs/constants.js ***! \*****************************************************************************/ function(__unused_webpack_module, exports) { Object.defineProperty(exports, "__esModule", { value: true }); exports.TABS_EXPANDED_CLASS = void 0; exports.TABS_EXPANDED_CLASS = "dx-tabs-expanded" }, 25685: /*!************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/ui/tabs/item.js ***! \************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = exports.TABS_ITEM_BADGE_CLASS = void 0; var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../../core/renderer */ 64553)); var _item = _interopRequireDefault(__webpack_require__( /*! ../../ui/collection/item */ 30845)); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } const TABS_ITEM_BADGE_CLASS = exports.TABS_ITEM_BADGE_CLASS = "dx-tabs-item-badge"; class TabsItem extends _item.default { _renderWatchers() { super._renderWatchers(); this._startWatcher("badge", this._renderBadge.bind(this)) } _renderBadge(badge) { this._$element.children(".dx-badge").remove(); if (!badge) { return } const $badge = (0, _renderer.default)("<div>").addClass(TABS_ITEM_BADGE_CLASS).addClass("dx-badge").text(badge); this._$element.append($badge) } } exports.default = TabsItem }, 43474: /*!************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/ui/tabs/tabs.js ***! \************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = exports.TABS_WRAPPER_CLASS = exports.TABS_STYLING_MODE_CLASS = exports.TABS_STRETCHED_CLASS = exports.TABS_SCROLLING_ENABLED_CLASS = exports.TABS_SCROLLABLE_CLASS = exports.TABS_RIGHT_NAV_BUTTON_CLASS = exports.TABS_ORIENTATION_CLASS = exports.TABS_NAV_BUTTON_CLASS = exports.TABS_NAV_BUTTONS_CLASS = exports.TABS_LEFT_NAV_BUTTON_CLASS = exports.TABS_ITEM_TEXT_SPAN_PSEUDO_CLASS = exports.TABS_ITEM_TEXT_SPAN_CLASS = exports.TABS_ITEM_TEXT_CLASS = exports.TABS_ITEM_SELECTED_CLASS = exports.TABS_ITEM_CLASS = exports.TABS_INDICATOR_POSITION_CLASS = exports.TABS_ICON_POSITION_CLASS = exports.TABS_CLASS = exports.FOCUSED_DISABLED_PREV_TAB_CLASS = exports.FOCUSED_DISABLED_NEXT_TAB_CLASS = void 0; var _events_engine = _interopRequireDefault(__webpack_require__( /*! ../../../common/core/events/core/events_engine */ 92774)); var _hold = _interopRequireDefault(__webpack_require__( /*! ../../../common/core/events/hold */ 68095)); var _pointer = _interopRequireDefault(__webpack_require__( /*! ../../../common/core/events/pointer */ 89797)); var _utils = __webpack_require__( /*! ../../../common/core/events/utils */ 98834); var _component_registrator = _interopRequireDefault(__webpack_require__( /*! ../../../core/component_registrator */ 92848)); var _devices = _interopRequireDefault(__webpack_require__( /*! ../../../core/devices */ 65951)); var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../../core/renderer */ 64553)); var _resize_observer = _interopRequireDefault(__webpack_require__( /*! ../../../core/resize_observer */ 11787)); var _bindable_template = __webpack_require__( /*! ../../../core/templates/bindable_template */ 27286); var _icon = __webpack_require__( /*! ../../../core/utils/icon */ 69629); var _iterator = __webpack_require__( /*! ../../../core/utils/iterator */ 21274); var _size = __webpack_require__( /*! ../../../core/utils/size */ 57653); var _type = __webpack_require__( /*! ../../../core/utils/type */ 11528); var _window = __webpack_require__( /*! ../../../core/utils/window */ 3104); var _button = _interopRequireDefault(__webpack_require__( /*! ../../../ui/button */ 64973)); var _uiCollection_widget = _interopRequireDefault(__webpack_require__( /*! ../../../ui/collection/ui.collection_widget.live_update */ 55213)); var _themes = __webpack_require__( /*! ../../../ui/themes */ 52071); var _utils2 = __webpack_require__( /*! ../../../ui/widget/utils.ink_ripple */ 63322); var _m_scrollable = _interopRequireDefault(__webpack_require__( /*! ../../ui/scroll_view/m_scrollable */ 94790)); var _get_boundary_props = __webpack_require__( /*! ../../ui/scroll_view/utils/get_boundary_props */ 78955); var _get_scroll_left_max = __webpack_require__( /*! ../../ui/scroll_view/utils/get_scroll_left_max */ 43200); var _constants = __webpack_require__( /*! ./constants */ 20425); var _item = _interopRequireDefault(__webpack_require__( /*! ./item */ 25685)); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } function _extends() { return _extends = Object.assign ? Object.assign.bind() : function(n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) { ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]) } } return n }, _extends.apply(null, arguments) } const TABS_CLASS = exports.TABS_CLASS = "dx-tabs"; const TABS_WRAPPER_CLASS = exports.TABS_WRAPPER_CLASS = "dx-tabs-wrapper"; const TABS_STRETCHED_CLASS = exports.TABS_STRETCHED_CLASS = "dx-tabs-stretched"; const TABS_SCROLLABLE_CLASS = exports.TABS_SCROLLABLE_CLASS = "dx-tabs-scrollable"; const TABS_NAV_BUTTONS_CLASS = exports.TABS_NAV_BUTTONS_CLASS = "dx-tabs-nav-buttons"; const TABS_ITEM_CLASS = exports.TABS_ITEM_CLASS = "dx-tab"; const TABS_ITEM_SELECTED_CLASS = exports.TABS_ITEM_SELECTED_CLASS = "dx-tab-selected"; const TABS_SCROLLING_ENABLED_CLASS = exports.TABS_SCROLLING_ENABLED_CLASS = "dx-tabs-scrolling-enabled"; const TABS_NAV_BUTTON_CLASS = exports.TABS_NAV_BUTTON_CLASS = "dx-tabs-nav-button"; const TABS_LEFT_NAV_BUTTON_CLASS = exports.TABS_LEFT_NAV_BUTTON_CLASS = "dx-tabs-nav-button-left"; const TABS_RIGHT_NAV_BUTTON_CLASS = exports.TABS_RIGHT_NAV_BUTTON_CLASS = "dx-tabs-nav-button-right"; const TABS_ITEM_TEXT_CLASS = exports.TABS_ITEM_TEXT_CLASS = "dx-tab-text"; const TABS_ITEM_TEXT_SPAN_CLASS = exports.TABS_ITEM_TEXT_SPAN_CLASS = "dx-tab-text-span"; const TABS_ITEM_TEXT_SPAN_PSEUDO_CLASS = exports.TABS_ITEM_TEXT_SPAN_PSEUDO_CLASS = "dx-tab-text-span-pseudo"; const FOCUSED_DISABLED_NEXT_TAB_CLASS = exports.FOCUSED_DISABLED_NEXT_TAB_CLASS = "dx-focused-disabled-next-tab"; const FOCUSED_DISABLED_PREV_TAB_CLASS = exports.FOCUSED_DISABLED_PREV_TAB_CLASS = "dx-focused-disabled-prev-tab"; const TABS_ORIENTATION_CLASS = exports.TABS_ORIENTATION_CLASS = { vertical: "dx-tabs-vertical", horizontal: "dx-tabs-horizontal" }; const TABS_INDICATOR_POSITION_CLASS = exports.TABS_INDICATOR_POSITION_CLASS = { top: "dx-tab-indicator-position-top", right: "dx-tab-indicator-position-right", bottom: "dx-tab-indicator-position-bottom", left: "dx-tab-indicator-position-left" }; const TABS_ICON_POSITION_CLASS = exports.TABS_ICON_POSITION_CLASS = { top: "dx-tabs-icon-position-top", end: "dx-tabs-icon-position-end", bottom: "dx-tabs-icon-position-bottom", start: "dx-tabs-icon-position-start" }; const TABS_STYLING_MODE_CLASS = exports.TABS_STYLING_MODE_CLASS = { primary: "dx-tabs-styling-mode-primary", secondary: "dx-tabs-styling-mode-secondary" }; const ORIENTATION_horizontal = "horizontal", ORIENTATION_vertical = "vertical"; const INDICATOR_POSITION_right = "right", INDICATOR_POSITION_bottom = "bottom", INDICATOR_POSITION_left = "left"; const SCROLLABLE_DIRECTION_horizontal = "horizontal", SCROLLABLE_DIRECTION_vertical = "vertical"; const ICON_POSITION_top = "top", ICON_POSITION_end = "end", ICON_POSITION_bottom = "bottom", ICON_POSITION_start = "start"; const STYLING_MODE_primary = "primary", STYLING_MODE_secondary = "secondary"; class Tabs extends _uiCollection_widget.default { _getDefaultOptions() { return _extends({}, super._getDefaultOptions(), { hoverStateEnabled: true, showNavButtons: true, scrollByContent: true, scrollingEnabled: true, selectionMode: "single", orientation: ORIENTATION_horizontal, iconPosition: ICON_POSITION_start, stylingMode: STYLING_MODE_primary, activeStateEnabled: true, selectionRequired: false, selectOnFocus: true, loopItemFocus: false, useInkRipple: false, badgeExpr: data => null === data || void 0 === data ? void 0 : data.badge, _itemAttributes: { role: "tab" }, _indicatorPosition: null }) } _defaultOptionsRules() { const themeName = (0, _themes.current)(); return super._defaultOptionsRules().concat([{ device: () => "desktop" !== _devices.default.real().deviceType, options: { showNavButtons: false } }, { device: { deviceType: "desktop" }, options: { scrollByContent: false } }, { device: () => "desktop" === _devices.default.real().deviceType && !_devices.default.isSimulator(), options: { focusStateEnabled: true } }, { device: () => (0, _themes.isFluent)(themeName), options: { iconPosition: ICON_POSITION_top, stylingMode: STYLING_MODE_secondary } }, { device: () => (0, _themes.isMaterial)(themeName), options: { useInkRipple: true, selectOnFocus: false, iconPosition: ICON_POSITION_top } }]) } _init() { const { orientation: orientation, stylingMode: stylingMode, scrollingEnabled: scrollingEnabled } = this.option(); const indicatorPosition = this._getIndicatorPosition(); super._init(); this._activeStateUnit = `.${TABS_ITEM_CLASS}`; this.setAria("role", "tablist"); this.$element().addClass(TABS_CLASS); this._toggleScrollingEnabledClass(scrollingEnabled); this._toggleOrientationClass(orientation); this._toggleIndicatorPositionClass(indicatorPosition); this._toggleIconPositionClass(); this._toggleStylingModeClass(stylingMode); this._renderWrapper(); this._renderMultiple(); this._feedbackHideTimeout = 100 } _prepareDefaultItemTemplate(data, $container) { const text = (0, _type.isPlainObject)(data) ? null === data || void 0 === data ? void 0 : data.text : data; if ((0, _type.isDefined)(text)) { const $tabTextSpan = (0, _renderer.default)("<span>").addClass(TABS_ITEM_TEXT_SPAN_CLASS); $tabTextSpan.text(text); const $tabTextSpanPseudo = (0, _renderer.default)("<span>").addClass(TABS_ITEM_TEXT_SPAN_PSEUDO_CLASS); $tabTextSpanPseudo.text(text); $tabTextSpanPseudo.appendTo($tabTextSpan); $tabTextSpan.appendTo($container) } if ((0, _type.isDefined)(data.html)) { $container.html(data.html) } } _initTemplates() { super._initTemplates(); this._templateManager.addDefaultTemplates({ item: new _bindable_template.BindableTemplate((($container, data) => { this._prepareDefaultItemTemplate(data, $container); const $iconElement = (0, _icon.getImageContainer)(data.icon); if ($iconElement) { $iconElement.prependTo($container) } const $tabItem = (0, _renderer.default)("<div>").addClass(TABS_ITEM_TEXT_CLASS); $container.wrapInner($tabItem) }), ["text", "html", "icon"], this.option("integrationOptions.watchMethod")) }) } _itemClass() { return TABS_ITEM_CLASS } _selectedItemClass() { return TABS_ITEM_SELECTED_CLASS } _itemDataKey() { return "dxTabData" } _initMarkup() { super._initMarkup(); if (this.option("useInkRipple")) { this._renderInkRipple() } this.$element().addClass("dx-overflow-hidden"); this._attachResizeObserverSubscription() } _postProcessRenderItems() { this._renderScrolling() } _renderScrolling() { const removeClasses = [TABS_STRETCHED_CLASS, _constants.TABS_EXPANDED_CLASS, "dx-overflow-hidden"]; this.$element().removeClass(removeClasses.join(" ")); if (this.option("scrollingEnabled") && this._isItemsSizeExceeded()) { if (!this._scrollable) { this._renderScrollable(); this._renderNavButtons() } const scrollable = this.getScrollable(); null === scrollable || void 0 === scrollable || scrollable.update(); if (this.option("rtlEnabled")) { const maxLeftOffset = (0, _get_scroll_left_max.getScrollLeftMax)((0, _renderer.default)(this.getScrollable().container()).get(0)); null === scrollable || void 0 === scrollable || scrollable.scrollTo({ left: maxLeftOffset }) } this._updateNavButtonsState(); const { selectedItem: selectedItem } = this.option(); this._scrollToItem(selectedItem) } if (!(this.option("scrollingEnabled") && this._isItemsSizeExceeded())) { this._cleanScrolling(); if (this._needStretchItems()) { this.$element().addClass(TABS_STRETCHED_CLASS) } this.$element().removeClass(TABS_NAV_BUTTONS_CLASS).addClass(_constants.TABS_EXPANDED_CLASS) } } _isVertical() { const { orientation: orientation } = this.option(); return orientation === ORIENTATION_vertical } _isItemsSizeExceeded() { const isVertical = this._isVertical(); return isVertical ? this._isItemsHeightExceeded() : this._isItemsWidthExceeded() } _isItemsWidthExceeded() { const $visibleItems = this._getVisibleItems(); const tabItemTotalWidth = this._getSummaryItemsSize("width", $visibleItems, true); const elementWidth = (0, _size.getWidth)(this.$element()); if ([tabItemTotalWidth, elementWidth].includes(0)) { return false } return tabItemTotalWidth > elementWidth - 1 } _isItemsHeightExceeded() { const $visibleItems = this._getVisibleItems(); const itemsHeight = this._getSummaryItemsSize("height", $visibleItems, true); const elementHeight = (0, _size.getHeight)(this.$element()); return itemsHeight - 1 > elementHeight } _needStretchItems() { const $visibleItems = this._getVisibleItems(); const elementWidth = (0, _size.getWidth)(this.$element()); const itemsWidth = []; (0, _iterator.each)($visibleItems, ((_, item) => { itemsWidth.push((0, _size.getOuterWidth)(item, true)) })); const maxTabItemWidth = Math.max.apply(null, itemsWidth); const requireWidth = elementWidth / $visibleItems.length; return maxTabItemWidth > requireWidth + 1 } _cleanNavButtons() { if (!this._leftButton || !this._rightButton) { return } this._leftButton.$element().remove(); this._rightButton.$element().remove(); this._leftButton = null; this._rightButton = null } _cleanScrolling() { if (!this._scrollable) { return } this._$wrapper.appendTo(this.$element()); this._scrollable.$element().remove(); this._scrollable = null; this._cleanNavButtons() } _renderInkRipple() { this._inkRipple = (0, _utils2.render)() } _getPointerEvent() { return _pointer.default.up } _toggleActiveState($element, value, e) { super._toggleActiveState($element, value, e); if (!this._inkRipple) { return } const config = { element: $element, event: e }; if (value) { this._inkRipple.showWave(config) } else { this._inkRipple.hideWave(config) } } _renderMultiple() { const { selectionMode: selectionMode } = this.option(); if ("multiple" === selectionMode) { this.option("selectOnFocus", false) } } _renderWrapper() { this._$wrapper = (0, _renderer.default)("<div>").addClass(TABS_WRAPPER_CLASS); this.$element().append(this._$wrapper) } _itemContainer() { return this._$wrapper } _getScrollableDirection() { const isVertical = this._isVertical(); return isVertical ? SCROLLABLE_DIRECTION_vertical : SCROLLABLE_DIRECTION_horizontal } _updateScrollable() { if (this.getScrollable()) { this._cleanScrolling() } this._renderScrolling() } _renderScrollable() { const $itemContainer = this.$element().wrapInner((0, _renderer.default)("<div>").addClass(TABS_SCROLLABLE_CLASS)).children(); this._scrollable = this._createComponent($itemContainer, _m_scrollable.default, { direction: this._getScrollableDirection(), showScrollbar: "never", useKeyboard: false, useNative: false, scrollByContent: this.option("scrollByContent"), onScroll: () => { this._updateNavButtonsState() } }); this.$element().append(this._scrollable.$element()) } _scrollToItem(item) { if (!this._scrollable) { return } const $item = this._editStrategy.getItemElement(item); this._scrollable.scrollToElement($item) } _renderNavButtons() { const { showNavButtons: showNavButtons, rtlEnabled: rtlEnabled } = this.option(); this.$element().toggleClass(TABS_NAV_BUTTONS_CLASS, showNavButtons); if (!showNavButtons) { return } this._leftButton = this._createNavButton(-30, rtlEnabled ? "chevronnext" : "chevronprev"); const $leftButton = this._leftButton.$element(); $leftButton.addClass(TABS_LEFT_NAV_BUTTON_CLASS); this.$element().prepend($leftButton); this._rightButton = this._createNavButton(30, rtlEnabled ? "chevronprev" : "chevronnext"); const $rightButton = this._rightButton.$element(); $rightButton.addClass(TABS_RIGHT_NAV_BUTTON_CLASS); this.$element().append($rightButton) } _updateNavButtonsAriaDisabled() { const buttons = [this._leftButton, this._rightButton]; buttons.forEach((button => { null === button || void 0 === button || button.$element().attr({ "aria-disabled": null }) })) } _updateNavButtonsState() { const isVertical = this._isVertical(); const scrollable = this.getScrollable(); if (isVertical) { var _this$_leftButton, _this$_rightButton; null === (_this$_leftButton = this._leftButton) || void 0 === _this$_leftButton || _this$_leftButton.option("disabled", (0, _get_boundary_props.isReachedTop)(scrollable.scrollTop(), 1)); null === (_this$_rightButton = this._rightButton) || void 0 === _this$_rightButton || _this$_rightButton.option("disabled", (0, _get_boundary_props.isReachedBottom)((0, _renderer.default)(scrollable.container()).get(0), scrollable.scrollTop(), 0, 1)) } else { var _this$_leftButton2, _this$_rightButton2; null === (_this$_leftButton2 = this._leftButton) || void 0 === _this$_leftButton2 || _this$_leftButton2.option("disabled", (0, _get_boundary_props.isReachedLeft)(scrollable.scrollLeft(), 1)); null === (_this$_rightButton2 = this._rightButton) || void 0 === _this$_rightButton2 || _this$_rightButton2.option("disabled", (0, _get_boundary_props.isReachedRight)((0, _renderer.default)(scrollable.container()).get(0), scrollable.scrollLeft(), 1)) } this._updateNavButtonsAriaDisabled() } _updateScrollPosition(offset, duration) { var _this$_scrollable, _this$_scrollable2; null === (_this$_scrollable = this._scrollable) || void 0 === _this$_scrollable || _this$_scrollable.update(); null === (_this$_scrollable2 = this._scrollable) || void 0 === _this$_scrollable2 || _this$_scrollable2.scrollBy(offset / duration) } _createNavButton(offset, icon) { const holdAction = this._createAction((() => { this._holdInterval = setInterval((() => { this._updateScrollPosition(offset, 5) }), 5) })); const holdEventName = (0, _utils.addNamespace)(_hold.default.name, "dxNavButton"); const pointerUpEventName = (0, _utils.addNamespace)(_pointer.default.up, "dxNavButton"); const pointerOutEventName = (0, _utils.addNamespace)(_pointer.default.out, "dxNavButton"); const navButton = this._createComponent((0, _renderer.default)("<div>").addClass(TABS_NAV_BUTTON_CLASS), _button.default, { focusStateEnabled: false, icon: icon, integrationOptions: {}, elementAttr: { role: null, "aria-label": null, "aria-disabled": null }, onClick: () => { this._updateScrollPosition(offset, 1) } }); const $navButton = navButton.$element(); _events_engine.default.on($navButton, holdEventName, { timeout: 300 }, (e => { holdAction({ event: e }) })); _events_engine.default.on($navButton, pointerUpEventName, (() => { this._clearInterval() })); _events_engine.default.on($navButton, pointerOutEventName, (() => { this._clearInterval() })); return navButton } _clearInterval() { if (this._holdInterval) { clearInterval(this._holdInterval) } } _updateSelection(addedSelection) { if (this._scrollable) { return this._scrollable.scrollToElement(this.itemElements().eq(addedSelection[0])) } return } _visibilityChanged(visible) { if (visible) { this._dimensionChanged() } } _attachResizeObserverSubscription() { _resize_observer.default.unobserve(this.$element().get(0)); _resize_observer.default.observe(this.$element().get(0), (() => { this._dimensionChanged() })) } _dimensionChanged() { this._renderScrolling() } _enterKeyHandler(e) { const { focusedElement: focusedElement } = this.option(); super._enterKeyHandler(e); this.option("focusedElement", focusedElement) } _itemSelectHandler(e) { const { selectionMode: selectionMode } = this.option(); if ("single" === selectionMode && this.isItemSelected(e.currentTarget)) { return } super._itemSelectHandler(e) } _clean() { _resize_observer.default.unobserve(this.$element().get(0)); this._cleanScrolling(); super._clean() } _toggleTabsVerticalClass(value) { this.$element().toggleClass(TABS_ORIENTATION_CLASS.vertical, value) } _toggleTabsHorizontalClass(value) { this.$element().toggleClass(TABS_ORIENTATION_CLASS.horizontal, value) } _getIndicatorPositionClass(indicatorPosition) { return TABS_INDICATOR_POSITION_CLASS[indicatorPosition] } _getIndicatorPosition() { const { _indicatorPosition: _indicatorPosition, rtlEnabled: rtlEnabled } = this.option(); if (_indicatorPosition) { return _indicatorPosition } const isVertical = this._isVertical(); if (rtlEnabled) { return isVertical ? INDICATOR_POSITION_left : INDICATOR_POSITION_bottom } return isVertical ? INDICATOR_POSITION_right : INDICATOR_POSITION_bottom } _toggleIndicatorPositionClass(indicatorPosition) { const newClass = this._getIndicatorPositionClass(indicatorPosition); this._toggleElementClasses(TABS_INDICATOR_POSITION_CLASS, newClass) } _toggleScrollingEnabledClass(scrollingEnabled) { this.$element().toggleClass(TABS_SCROLLING_ENABLED_CLASS, Boolean(scrollingEnabled)) } _toggleOrientationClass(orientation) { const isVertical = orientation === ORIENTATION_vertical; this._toggleTabsVerticalClass(isVertical); this._toggleTabsHorizontalClass(!isVertical) } _getTabsIconPositionClass() { const { iconPosition: iconPosition } = this.option(); switch (iconPosition) { case ICON_POSITION_top: return TABS_ICON_POSITION_CLASS.top; case ICON_POSITION_end: return TABS_ICON_POSITION_CLASS.end; case ICON_POSITION_bottom: return TABS_ICON_POSITION_CLASS.bottom; default: return TABS_ICON_POSITION_CLASS.start } } _toggleIconPositionClass() { const newClass = this._getTabsIconPositionClass(); this._toggleElementClasses(TABS_ICON_POSITION_CLASS, newClass) } _toggleStylingModeClass(value) { const newClass = TABS_STYLING_MODE_CLASS[value ?? "primary"]; this._toggleElementClasses(TABS_STYLING_MODE_CLASS, newClass) } _toggleElementClasses(classMap, newClass) { for (const key in classMap) { this.$element().removeClass(classMap[key]) } this.$element().addClass(newClass) } _toggleFocusedDisabledNextClass(currentIndex, isNextDisabled) { this._itemElements().eq(currentIndex).toggleClass(FOCUSED_DISABLED_NEXT_TAB_CLASS, isNextDisabled) } _toggleFocusedDisabledPrevClass(currentIndex, isPrevDisabled) { this._itemElements().eq(currentIndex).toggleClass(FOCUSED_DISABLED_PREV_TAB_CLASS, isPrevDisabled) } _toggleFocusedDisabledClasses(value) { const { selectedIndex: currentIndex } = this.option(); this._itemElements().removeClass(FOCUSED_DISABLED_NEXT_TAB_CLASS).removeClass(FOCUSED_DISABLED_PREV_TAB_CLASS); const prevItemIndex = currentIndex - 1; const nextItemIndex = currentIndex + 1; const nextFocusedIndex = (0, _renderer.default)(value).index(); const isNextDisabled = this._itemElements().eq(nextItemIndex).hasClass("dx-state-disabled"); const isPrevDisabled = this._itemElements().eq(prevItemIndex).hasClass("dx-state-disabled"); const shouldNextClassBeSetted = isNextDisabled && nextFocusedIndex === nextItemIndex; const shouldPrevClassBeSetted = isPrevDisabled && nextFocusedIndex === prevItemIndex; this._toggleFocusedDisabledNextClass(currentIndex, shouldNextClassBeSetted); this._toggleFocusedDisabledPrevClass(currentIndex, shouldPrevClassBeSetted) } _updateFocusedElement() { const { focusStateEnabled: focusStateEnabled, selectedIndex: selectedIndex } = this.option(); const itemElements = this._itemElements(); if (focusStateEnabled && itemElements.length) { const selectedItem = itemElements.get(selectedIndex); this.option({ focusedElement: selectedItem }) } } _optionChanged(args) { var _this$_scrollable3; const { name: name, value: value } = args; switch (name) { case "useInkRipple": case "scrollingEnabled": this._toggleScrollingEnabledClass(value); this._invalidate(); break; case "showNavButtons": case "badgeExpr": this._invalidate(); break; case "scrollByContent": null === (_this$_scrollable3 = this._scrollable) || void 0 === _this$_scrollable3 || _this$_scrollable3.option(name, value); break; case "width": case "height": super._optionChanged(args); this._dimensionChanged(); break; case "selectionMode": this._renderMultiple(); super._optionChanged(args); break; case "focusedElement": this._toggleFocusedDisabledClasses(value); super._optionChanged(args); this._scrollToItem(value); break; case "rtlEnabled": { super._optionChanged(args); const indicatorPosition = this._getIndicatorPosition(); this._toggleIndicatorPositionClass(indicatorPosition); break } case "orientation": { this._toggleOrientationClass(value); const indicatorPosition = this._getIndicatorPosition(); this._toggleIndicatorPositionClass(indicatorPosition); if ((0, _window.hasWindow)()) { this._updateScrollable() } break } case "iconPosition": this._toggleIconPositionClass(); if ((0, _window.hasWindow)()) { this._dimensionChanged() } break; case "stylingMode": this._toggleStylingModeClass(value); if ((0, _window.hasWindow)()) { this._dimensionChanged() } break; case "_indicatorPosition": { const indicatorPosition = this._getIndicatorPosition(); this._toggleIndicatorPositionClass(indicatorPosition); break } case "selectedIndex": case "selectedItem": case "selectedItems": super._optionChanged(args); this._updateFocusedElement(); break; default: super._optionChanged(args) } } _afterItemElementInserted() { super._afterItemElementInserted(); this._planPostRenderActions() } _afterItemElementDeleted($item, deletedActionArgs) { super._afterItemElementDeleted($item, deletedActionArgs); this._renderScrolling() } getScrollable() { return this._scrollable } } Tabs.ItemClass = _item.default; (0, _component_registrator.default)("dxTabs", Tabs); exports.default = Tabs }, 85968: /*!**********************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/ui/text_box/m_text_box.js ***! \**********************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _index = __webpack_require__( /*! ../../../common/core/events/utils/index */ 98834); var _component_registrator = _interopRequireDefault(__webpack_require__( /*! ../../../core/component_registrator */ 92848)); var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../../core/renderer */ 64553)); var _size = __webpack_require__( /*! ../../../core/utils/size */ 57653); var _window = __webpack_require__( /*! ../../../core/utils/window */ 3104); var _m_text_editor = _interopRequireDefault(__webpack_require__( /*! ../../ui/text_box/m_text_editor.mask */ 19132)); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } function _extends() { return _extends = Object.assign ? Object.assign.bind() : function(n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) { ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]) } } return n }, _extends.apply(null, arguments) } const window = (0, _window.getWindow)(); const ignoreKeys = ["backspace", "tab", "enter", "pageUp", "pageDown", "end", "home", "leftArrow", "rightArrow", "downArrow", "upArrow", "del"]; class TextBox extends _m_text_editor.default { ctor(element, options) { if (options) { this._showClearButton = options.showClearButton } super.ctor(element, options) } _getDefaultOptions() { return _extends({}, super._getDefaultOptions(), { value: "", mode: "text", maxLength: null }) } _initMarkup() { this.$element().addClass("dx-textbox"); super._initMarkup(); this.setAria("role", "textbox") } _renderInputType() { super._renderInputType(); this._renderSearchMode() } _useTemplates() { return false } _renderProps() { super._renderProps(); this._toggleMaxLengthProp() } _toggleMaxLengthProp() { const maxLength = this._getMaxLength(); if (maxLength && maxLength > 0) { this._input().attr("maxLength", maxLength) } else { this._input().removeAttr("maxLength") } } _renderSearchMode() { const { mode: mode } = this.option(); if ("search" === mode) { this.$element().addClass("dx-searchbox"); this._renderSearchIcon(); if (void 0 === this._showClearButton) { const { showClearButton: showClearButton } = this.option(); this._showClearButton = showClearButton; this.option("showClearButton", true) } } else { this.$element().removeClass("dx-searchbox"); if (this._$searchIcon) { this._$searchIcon.remove() } this.option("showClearButton", void 0 === this._showClearButton ? this.option("showClearButton") : this._showClearButton); delete this._showClearButton } } _renderSearchIcon() { const $searchIcon = (0, _renderer.default)("<div>").addClass("dx-icon").addClass("dx-icon-search"); $searchIcon.prependTo(this._input().parent()); this._$searchIcon = $searchIcon } _getLabelContainerWidth() { if (this._$searchIcon) { const $inputContainer = this._input().parent(); return (0, _size.getWidth)($inputContainer) - this._getLabelBeforeWidth() } return super._getLabelContainerWidth() } _getLabelBeforeWidth() { let labelBeforeWidth = super._getLabelBeforeWidth(); if (this._$searchIcon) { labelBeforeWidth += (0, _size.getOuterWidth)(this._$searchIcon) } return labelBeforeWidth } _optionChanged(args) { switch (args.name) { case "maxLength": this._toggleMaxLengthProp(); break; case "mode": super._optionChanged(args); this._updateLabelWidth(); break; case "mask": super._optionChanged(args); this._toggleMaxLengthProp(); break; default: super._optionChanged(args) } } _onKeyDownCutOffHandler(e) { const actualMaxLength = this._getMaxLength(); if (actualMaxLength && !e.ctrlKey && !this._hasSelection()) { const $input = (0, _renderer.default)(e.target); const key = (0, _index.normalizeKeyName)(e); this._cutOffExtraChar($input); return $input.val().length < actualMaxLength || ignoreKeys.includes(key) || "" !== window.getSelection().toString() } return true } _onChangeCutOffHandler(e) { const $input = (0, _renderer.default)(e.target); if (this.option("maxLength")) { this._cutOffExtraChar($input) } } _cutOffExtraChar($input) { const actualMaxLength = this._getMaxLength(); const textInput = $input.val(); if (actualMaxLength && textInput.length > actualMaxLength) { $input.val(textInput.substr(0, actualMaxLength)) } } _getMaxLength() { const { mask: mask, maxLength: maxLength } = this.option(); const isMaskSpecified = !!mask; return isMaskSpecified ? null : maxLength } }(0, _component_registrator.default)("dxTextBox", TextBox); exports.default = TextBox }, 34705: /*!******************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/ui/text_box/m_text_editor.base.js ***! \******************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = exports.TEXTEDITOR_INPUT_CONTAINER_CLASS = exports.TEXTEDITOR_INPUT_CLASS = exports.TEXTEDITOR_CLASS = void 0; var _events_engine = _interopRequireDefault(__webpack_require__( /*! ../../../common/core/events/core/events_engine */ 92774)); var _pointer = _interopRequireDefault(__webpack_require__( /*! ../../../common/core/events/pointer */ 89797)); var _index = __webpack_require__( /*! ../../../common/core/events/utils/index */ 98834); var _config = _interopRequireDefault(__webpack_require__( /*! ../../../core/config */ 66636)); var _devices = _interopRequireDefault(__webpack_require__( /*! ../../../core/devices */ 65951)); var _dom_adapter = _interopRequireDefault(__webpack_require__( /*! ../../../core/dom_adapter */ 64960)); var _guid = _interopRequireDefault(__webpack_require__( /*! ../../../core/guid */ 19427)); var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../../core/renderer */ 64553)); var _resize_observer = _interopRequireDefault(__webpack_require__( /*! ../../../core/resize_observer */ 11787)); var _deferred = __webpack_require__( /*! ../../../core/utils/deferred */ 87739); var _extend = __webpack_require__( /*! ../../../core/utils/extend */ 52576); var _iterator = __webpack_require__( /*! ../../../core/utils/iterator */ 21274); var _size = __webpack_require__( /*! ../../../core/utils/size */ 57653); var _type = __webpack_require__( /*! ../../../core/utils/type */ 11528); var _load_indicator = _interopRequireDefault(__webpack_require__( /*! ../../../ui/load_indicator */ 11979)); var _themes = __webpack_require__( /*! ../../../ui/themes */ 52071); var _selectors = __webpack_require__( /*! ../../../ui/widget/selectors */ 35944); var _ui = _interopRequireDefault(__webpack_require__( /*! ../../../ui/widget/ui.errors */ 35185)); var _editor = _interopRequireDefault(__webpack_require__( /*! ../../ui/editor/editor */ 24768)); var _m_text_editor = _interopRequireDefault(__webpack_require__( /*! ./m_text_editor.clear */ 90987)); var _m_text_editor2 = __webpack_require__( /*! ./m_text_editor.label */ 50640); var _m_index = _interopRequireDefault(__webpack_require__( /*! ./texteditor_button_collection/m_index */ 79686)); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } function _extends() { return _extends = Object.assign ? Object.assign.bind() : function(n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) { ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]) } } return n }, _extends.apply(null, arguments) } const TEXTEDITOR_CLASS = exports.TEXTEDITOR_CLASS = "dx-texteditor"; const TEXTEDITOR_INPUT_CONTAINER_CLASS = exports.TEXTEDITOR_INPUT_CONTAINER_CLASS = "dx-texteditor-input-container"; const TEXTEDITOR_INPUT_CLASS = exports.TEXTEDITOR_INPUT_CLASS = "dx-texteditor-input"; const TEXTEDITOR_INPUT_SELECTOR = `.${TEXTEDITOR_INPUT_CLASS}`; const EVENTS_LIST = ["KeyDown", "KeyPress", "KeyUp", "Change", "Cut", "Copy", "Paste", "Input"]; const CONTROL_KEYS = ["tab", "enter", "shift", "control", "alt", "escape", "pageUp", "pageDown", "end", "home", "leftArrow", "upArrow", "rightArrow", "downArrow"]; let TextEditorLabelCreator = _m_text_editor2.TextEditorLabel; function checkButtonsOptionType(buttons) { if ((0, _type.isDefined)(buttons) && !Array.isArray(buttons)) { throw _ui.default.Error("E1053") } } class TextEditorBase extends _editor.default { ctor(element, options) { if (options) { checkButtonsOptionType(options.buttons) } this._buttonCollection = new _m_index.default(this, this._getDefaultButtons()); this._$beforeButtonsContainer = null; this._$afterButtonsContainer = null; this._labelContainerElement = null; super.ctor(element, options) } _getDefaultOptions() { return _extends({}, super._getDefaultOptions(), { buttons: void 0, value: "", spellcheck: false, showClearButton: false, valueChangeEvent: "change", placeholder: "", inputAttr: {}, onFocusIn: null, onFocusOut: null, onKeyDown: null, onKeyUp: null, onChange: null, onInput: null, onCut: null, onCopy: null, onPaste: null, onEnterKey: null, mode: "text", hoverStateEnabled: true, focusStateEnabled: true, text: void 0, displayValueFormatter: value => (0, _type.isDefined)(value) && false !== value ? value : "", stylingMode: (0, _config.default)().editorStylingMode || "outlined", showValidationMark: true, label: "", labelMode: "static", labelMark: "" }) } _defaultOptionsRules() { return super._defaultOptionsRules().concat([{ device() { const themeName = (0, _themes.current)(); return (0, _themes.isMaterial)(themeName) }, options: { labelMode: "floating", stylingMode: (0, _config.default)().editorStylingMode || "filled" } }, { device() { const themeName = (0, _themes.current)(); return (0, _themes.isFluent)(themeName) }, options: { labelMode: "outside" } }]) } _getDefaultButtons() { return [{ name: "clear", Ctor: _m_text_editor.default }] } _isClearButtonVisible() { return this.option("showClearButton") && !this.option("readOnly") } _input() { return this.$element().find(TEXTEDITOR_INPUT_SELECTOR).first() } _isFocused() { return (0, _selectors.focused)(this._input()) || super._isFocused() } _inputWrapper() { return this.$element() } _buttonsContainer() { return this._inputWrapper().find(".dx-texteditor-buttons-container").eq(0) } _isControlKey(key) { return CONTROL_KEYS.includes(key) } _renderStylingMode() { super._renderStylingMode(); const { stylingMode: stylingMode } = this.option(); this._updateButtonsStyling(stylingMode) } _initMarkup() { this.$element().addClass(TEXTEDITOR_CLASS); this._renderInput(); this._renderButtonContainers(); this._renderStylingMode(); this._renderInputType(); this._renderPlaceholder(); this._renderProps(); super._initMarkup(); this._renderValue(); this._renderLabel() } _render() { super._render(); this._refreshValueChangeEvent(); this._refreshEvents(); this._renderEnterKeyAction(); this._renderEmptinessEvent() } _renderInput() { this._$textEditorContainer = (0, _renderer.default)("<div>").addClass("dx-texteditor-container").appendTo(this.$element()); this._$textEditorInputContainer = (0, _renderer.default)("<div>").addClass(TEXTEDITOR_INPUT_CONTAINER_CLASS).appendTo(this._$textEditorContainer); this._$textEditorInputContainer.append(this._createInput()) } _getInputContainer() { return this._$textEditorInputContainer } _renderPendingIndicator() { this.$element().addClass("dx-validation-pending"); const $inputContainer = this._getInputContainer(); const $indicatorElement = (0, _renderer.default)("<div>").addClass("dx-pending-indicator").appendTo($inputContainer); this._pendingIndicator = this._createComponent($indicatorElement, _load_indicator.default) } _disposePendingIndicator() { if (!this._pendingIndicator) { return } this._pendingIndicator.dispose(); this._pendingIndicator.$element().remove(); this._pendingIndicator = null; this.$element().removeClass("dx-validation-pending") } _renderValidationState() { super._renderValidationState(); const isPending = "pending" === this.option("validationStatus"); if (isPending) { if (!this._pendingIndicator) { this._renderPendingIndicator() } this._showValidMark = false } else { if ("invalid" === this.option("validationStatus")) { this._showValidMark = false } if (!this._showValidMark && true === this.option("showValidationMark")) { this._showValidMark = "valid" === this.option("validationStatus") && !!this._pendingIndicator } this._disposePendingIndicator() } this._toggleValidMark() } _getButtonsContainer() { return this._$textEditorContainer } _renderButtonContainers() { const { buttons: buttons } = this.option(); const $buttonsContainer = this._getButtonsContainer(); this._$beforeButtonsContainer = this._buttonCollection.renderBeforeButtons(buttons, $buttonsContainer); this._$afterButtonsContainer = this._buttonCollection.renderAfterButtons(buttons, $buttonsContainer) } _cleanButtonContainers() { var _this$_$beforeButtons, _this$_$afterButtonsC; null === (_this$_$beforeButtons = this._$beforeButtonsContainer) || void 0 === _this$_$beforeButtons || _this$_$beforeButtons.remove(); null === (_this$_$afterButtonsC = this._$afterButtonsContainer) || void 0 === _this$_$afterButtonsC || _this$_$afterButtonsC.remove(); this._buttonCollection.clean() } _clean() { this._buttonCollection.clean(); this._disposePendingIndicator(); this._unobserveLabelContainerResize(); this._$beforeButtonsContainer = null; this._$afterButtonsContainer = null; this._$textEditorContainer = null; super._clean() } _createInput() { const $input = (0, _renderer.default)("<input>"); this._applyInputAttributes($input, this.option("inputAttr")); return $input } _setSubmitElementName(name) { const { inputAttr: inputAttr } = this.option(); super._setSubmitElementName(name || (null === inputAttr || void 0 === inputAttr ? void 0 : inputAttr.name) || "") } _applyInputAttributes($input) { let customAttributes = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {}; const inputAttributes = (0, _extend.extend)(this._getDefaultAttributes(), customAttributes); $input.attr(inputAttributes).addClass(TEXTEDITOR_INPUT_CLASS); this._setInputMinHeight($input) } _setInputMinHeight($input) { $input.css("minHeight", this.option("height") ? "0" : "") } _getPlaceholderAttr() { const { ios: ios, mac: mac } = _devices.default.real(); const { placeholder: placeholder } = this.option(); const value = placeholder || (ios || mac ? " " : null); return value } _getDefaultAttributes() { const defaultAttributes = { autocomplete: "off", placeholder: this._getPlaceholderAttr() }; return defaultAttributes } _updateButtons(names) { this._buttonCollection.updateButtons(names) } _updateButtonsStyling(editorStylingMode) { (0, _iterator.each)(this.option("buttons"), ((_, _ref) => { let { options: options, name: buttonName } = _ref; if (options && !options.stylingMode && this.option("visible")) { const buttonInstance = this.getButton(buttonName); if (null !== buttonInstance && void 0 !== buttonInstance && buttonInstance.option) { buttonInstance.option("stylingMode", "underlined" === editorStylingMode ? "text" : "contained") } } })) } _renderValue() { const renderInputPromise = this._renderInputValue(); return renderInputPromise.promise() } _renderInputValue(value) { value = value ?? this.option("value"); const { text: text, displayValue: displayValue, displayValueFormatter: displayValueFormatter } = this.option(); let textValue = text; if (void 0 !== displayValue && null !== value) { textValue = null === displayValueFormatter || void 0 === displayValueFormatter ? void 0 : displayValueFormatter(displayValue) } else if (!(0, _type.isDefined)(textValue)) { textValue = null === displayValueFormatter || void 0 === displayValueFormatter ? void 0 : displayValueFormatter(value) } this.option("text", textValue); if (this._input().val() !== ((0, _type.isDefined)(textValue) ? textValue : "")) { this._renderDisplayText(textValue) } else { this._toggleEmptinessEventHandler() } return (0, _deferred.Deferred)().resolve() } _renderDisplayText(text) { this._input().val(text); this._toggleEmptinessEventHandler() } _isValueValid() { if (this._input().length) { const { validity: validity } = this._input().get(0); if (validity) { return validity.valid } } return true } _toggleEmptiness(isEmpty) { this.$element().toggleClass("dx-texteditor-empty", isEmpty); this._togglePlaceholder(isEmpty) } _togglePlaceholder(isEmpty) { this.$element().find(".dx-placeholder").eq(0).toggleClass("dx-state-invisible", !isEmpty) } _renderProps() { this._toggleReadOnlyState(); this._toggleSpellcheckState(); this._toggleTabIndex() } _toggleDisabledState(value) { super._toggleDisabledState(value); const $input = this._input(); $input.prop("disabled", value) } _toggleTabIndex() { const $input = this._input(); const disabled = this.option("disabled"); const focusStateEnabled = this.option("focusStateEnabled"); if (disabled || !focusStateEnabled) { $input.attr("tabIndex", -1) } else { $input.removeAttr("tabIndex") } } _toggleReadOnlyState() { this._input().prop("readOnly", this._readOnlyPropValue()); super._toggleReadOnlyState() } _readOnlyPropValue() { const { readOnly: readOnly } = this.option(); return !!readOnly } _toggleSpellcheckState() { const { spellcheck: spellcheck } = this.option(); this._input().prop("spellcheck", spellcheck) } _unobserveLabelContainerResize() { if (this._labelContainerElement) { _resize_observer.default.unobserve(this._labelContainerElement); this._labelContainerElement = null } } _getLabelContainer() { return this._input() } _getLabelContainerWidth() { return (0, _size.getWidth)(this._getLabelContainer()) } _getLabelBeforeWidth() { const buttonsBeforeWidth = this._$beforeButtonsContainer && (0, _size.getWidth)(this._$beforeButtonsContainer); return buttonsBeforeWidth ?? 0 } _updateLabelWidth() { this._label.updateBeforeWidth(this._getLabelBeforeWidth()); this._label.updateMaxWidth(this._getLabelContainerWidth()) } _getFieldElement() { return this._getLabelContainer() } _setFieldAria(force) { var _this$_label; const inputAttr = this.option("inputAttr"); const ariaLabel = null === inputAttr || void 0 === inputAttr ? void 0 : inputAttr["aria-label"]; const labelId = null === (_this$_label = this._label) || void 0 === _this$_label ? void 0 : _this$_label.getId(); const value = ariaLabel ? void 0 : labelId; if (value || force) { const aria = { labelledby: value, label: ariaLabel }; this.setAria(aria, this._getFieldElement()) } } _renderLabel() { this._unobserveLabelContainerResize(); this._labelContainerElement = (0, _renderer.default)(this._getLabelContainer()).get(0); const { label: label, labelMode: labelMode, labelMark: labelMark, rtlEnabled: rtlEnabled } = this.option(); const labelConfig = { onClickHandler: () => { this.focus() }, onHoverHandler: e => { e.stopPropagation() }, onActiveHandler: e => { e.stopPropagation() }, $editor: this.$element(), text: label, mark: labelMark, mode: labelMode, rtlEnabled: rtlEnabled, containsButtonsBefore: !!this._$beforeButtonsContainer, getContainerWidth: () => this._getLabelContainerWidth(), getBeforeWidth: () => this._getLabelBeforeWidth() }; this._label = new TextEditorLabelCreator(labelConfig); this._setFieldAria(); if (this._labelContainerElement) { _resize_observer.default.observe(this._labelContainerElement, this._updateLabelWidth.bind(this)) } } _renderPlaceholder() { this._renderPlaceholderMarkup(); this._attachPlaceholderEvents() } _renderPlaceholderMarkup() { if (this._$placeholder) { this._$placeholder.remove(); this._$placeholder = null } const $input = this._input(); const placeholder = this.option("placeholder"); const placeholderAttributes = { id: placeholder ? `dx-${new _guid.default}` : void 0, "data-dx_placeholder": placeholder }; const $placeholder = this._$placeholder = (0, _renderer.default)("<div>").attr(placeholderAttributes); $placeholder.insertAfter($input); $placeholder.addClass("dx-placeholder") } _attachPlaceholderEvents() { const startEvent = (0, _index.addNamespace)(_pointer.default.up, this.NAME); _events_engine.default.on(this._$placeholder, startEvent, (() => { _events_engine.default.trigger(this._input(), "focus") })); this._toggleEmptinessEventHandler() } _placeholder() { return this._$placeholder ?? (0, _renderer.default)() } _clearValueHandler(e) { const $input = this._input(); e.stopPropagation(); this._saveValueChangeEvent(e); this._clearValue(); if (!this._isFocused()) { _events_engine.default.trigger($input, "focus") } _events_engine.default.trigger($input, "input") } _clearValue() { this.clear() } _renderEvents() { const $input = this._input(); (0, _iterator.each)(EVENTS_LIST, ((_, event) => { if (this.hasActionSubscription(`on${event}`)) { const action = this._createActionByOption(`on${event}`, { excludeValidators: ["readOnly"] }); _events_engine.default.on($input, (0, _index.addNamespace)(event.toLowerCase(), this.NAME), (e => { if (this._disposed) { return } action({ event: e }) })) } })) } _refreshEvents() { const $input = this._input(); (0, _iterator.each)(EVENTS_LIST, ((_, event) => { _events_engine.default.off($input, (0, _index.addNamespace)(event.toLowerCase(), this.NAME)) })); this._renderEvents() } _keyPressHandler(e) { this.option("text", this._input().val()) } _keyDownHandler(e) { const $input = this._input(); const isCtrlEnter = e.ctrlKey && "enter" === (0, _index.normalizeKeyName)(e); const { value: value } = this.option(); const isNewValue = $input.val() !== value; if (isCtrlEnter && isNewValue) { _events_engine.default.trigger($input, "change") } } _getValueChangeEventOptionName() { return "valueChangeEvent" } _renderValueChangeEvent() { const keyPressEvent = (0, _index.addNamespace)(this._renderValueEventName(), `${this.NAME}TextChange`); const valueChangeEvent = (0, _index.addNamespace)(this.option(this._getValueChangeEventOptionName()), `${this.NAME}ValueChange`); const keyDownEvent = (0, _index.addNamespace)("keydown", `${this.NAME}TextChange`); const $input = this._input(); _events_engine.default.on($input, keyPressEvent, this._keyPressHandler.bind(this)); _events_engine.default.on($input, valueChangeEvent, this._valueChangeEventHandler.bind(this)); _events_engine.default.on($input, keyDownEvent, this._keyDownHandler.bind(this)) } _cleanValueChangeEvent() { const valueChangeNamespace = `.${this.NAME}ValueChange`; const textChangeNamespace = `.${this.NAME}TextChange`; _events_engine.default.off(this._input(), valueChangeNamespace); _events_engine.default.off(this._input(), textChangeNamespace) } _refreshValueChangeEvent() { this._cleanValueChangeEvent(); this._renderValueChangeEvent() } _renderValueEventName() { return "input change keypress" } _focusTarget() { return this._input() } _focusEventTarget() { return this.element() } _isInput(element) { return element === this._input().get(0) } _preventNestedFocusEvent(event) { if (event.isDefaultPrevented()) { return true } let shouldPrevent = this._isNestedTarget(event.relatedTarget); if ("focusin" === event.type) { shouldPrevent = shouldPrevent && this._isNestedTarget(event.target) && !this._isInput(event.target) } else if (!shouldPrevent) { this._toggleFocusClass(false, this.$element()) } if (shouldPrevent) { event.preventDefault() } return shouldPrevent } _isNestedTarget(target) { return !!this.$element().find(target).length } _focusClassTarget($element) { return this.$element() } _focusInHandler(event) { this._preventNestedFocusEvent(event); super._focusInHandler(event) } _focusOutHandler(event) { this._preventNestedFocusEvent(event); super._focusOutHandler(event) } _toggleFocusClass(isFocused, $element) { super._toggleFocusClass(isFocused, this._focusClassTarget($element)) } _hasFocusClass(element) { return super._hasFocusClass((0, _renderer.default)(element || this.$element())) } _renderEmptinessEvent() { const $input = this._input(); _events_engine.default.on($input, "input blur", this._toggleEmptinessEventHandler.bind(this)) } _toggleEmptinessEventHandler() { const text = this._input().val(); const isEmpty = ("" === text || null === text) && this._isValueValid(); this._toggleEmptiness(isEmpty) } _valueChangeEventHandler(e, formattedValue) { if (this.option("readOnly")) { return } this._saveValueChangeEvent(e); this.option("value", arguments.length > 1 ? formattedValue : this._input().val()); this._saveValueChangeEvent(void 0) } _renderEnterKeyAction() { this._enterKeyAction = this._createActionByOption("onEnterKey", { excludeValidators: ["readOnly"] }); _events_engine.default.off(this._input(), "keyup.onEnterKey.dxTextEditor"); _events_engine.default.on(this._input(), "keyup.onEnterKey.dxTextEditor", this._enterKeyHandlerUp.bind(this)) } _enterKeyHandlerUp(e) { if (this._disposed) { return } if ("enter" === (0, _index.normalizeKeyName)(e)) { var _this$_enterKeyAction; null === (_this$_enterKeyAction = this._enterKeyAction) || void 0 === _this$_enterKeyAction || _this$_enterKeyAction.call(this, { event: e }) } } _updateValue() { this._options.silent("text", null); this._renderValue() } _dispose() { this._enterKeyAction = void 0; super._dispose() } _getSubmitElement() { return this._input() } _hasActiveElement() { return this._input().is(_dom_adapter.default.getActiveElement(this._input()[0])) } _optionChanged(args) { const { name: name, fullName: fullName, value: value } = args; const eventName = name.replace("on", ""); if (EVENTS_LIST.includes(eventName)) { this._refreshEvents(); return } switch (name) { case "valueChangeEvent": this._refreshValueChangeEvent(); this._refreshFocusEvent(); this._refreshEvents(); break; case "onValueChanged": this._createValueChangeAction(); break; case "focusStateEnabled": super._optionChanged(args); this._toggleTabIndex(); break; case "spellcheck": this._toggleSpellcheckState(); break; case "mode": this._renderInputType(); break; case "onEnterKey": this._renderEnterKeyAction(); break; case "placeholder": this._renderPlaceholder(); this._setFieldAria(true); this._input().attr({ placeholder: this._getPlaceholderAttr() }); break; case "label": this._label.updateText(value); this._setFieldAria(true); break; case "labelMark": this._label.updateMark(value); break; case "labelMode": this._label.updateMode(value); this._setFieldAria(); break; case "width": super._optionChanged(args); this._label.updateMaxWidth(this._getLabelContainerWidth()); break; case "readOnly": case "disabled": this._updateButtons(); super._optionChanged(args); break; case "showClearButton": this._updateButtons(["clear"]); break; case "text": case "showValidationMark": break; case "value": this._updateValue(); super._optionChanged(args); break; case "inputAttr": this._applyInputAttributes(this._input(), this.option(name)); break; case "stylingMode": this._renderStylingMode(); this._updateLabelWidth(); break; case "buttons": { if (fullName === name) { checkButtonsOptionType(value) } this._cleanButtonContainers(); this._renderButtonContainers(); const { stylingMode: stylingMode } = this.option(); this._updateButtonsStyling(stylingMode); this._updateLabelWidth(); this._label.updateContainsButtonsBefore(!!this._$beforeButtonsContainer); break } case "visible": super._optionChanged(args); if (value && this.option("buttons")) { this._cleanButtonContainers(); this._renderButtonContainers(); const { stylingMode: stylingMode } = this.option(); this._updateButtonsStyling(stylingMode) } break; case "displayValueFormatter": this._invalidate(); break; default: super._optionChanged(args) } } _renderInputType() { this._setInputType(this.option("mode")) } _setInputType(type) { const input = this._input(); if ("search" === type) { type = "text" } try { input.prop("type", type) } catch (e) { input.prop("type", "text") } } getButton(name) { return this._buttonCollection.getButton(name) } focus() { _events_engine.default.trigger(this._input(), "focus") } clear() { if (this._showValidMark) { this._showValidMark = false; this._renderValidationState() } const defaultOptions = this._getDefaultOptions(); if (this.option("value") === defaultOptions.value) { this._options.silent("text", ""); this._renderValue() } else { this.option("value", defaultOptions.value) } } _resetInputText() { this._options.silent("text", this._initialValue); this._renderValue() } _isValueEqualToInitial() { const { value: value } = this.option(); const initialValue = this._initialValue; return value === initialValue } _resetToInitialValue() { const shouldResetInputText = this._isValueEqualToInitial(); if (shouldResetInputText) { this._resetInputText() } else { super._resetToInitialValue() } this._disposePendingIndicator(); this._showValidMark = false; this._toggleValidMark() } _toggleValidMark() { this.$element().toggleClass("dx-valid", !!this._showValidMark) } reset() { let value = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : void 0; if (arguments.length) { super.reset(value) } else { super.reset() } } on(eventName, eventHandler) { const result = super.on(eventName, eventHandler); const event = eventName.charAt(0).toUpperCase() + eventName.substr(1); if (EVENTS_LIST.includes(event)) { this._refreshEvents() } return result } } exports.default = TextEditorBase }, 90987: /*!*******************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/ui/text_box/m_text_editor.clear.js ***! \*******************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _click = __webpack_require__( /*! ../../../common/core/events/click */ 64044); var _events_engine = _interopRequireDefault(__webpack_require__( /*! ../../../common/core/events/core/events_engine */ 92774)); var _pointer = _interopRequireDefault(__webpack_require__( /*! ../../../common/core/events/pointer */ 89797)); var _index = __webpack_require__( /*! ../../../common/core/events/utils/index */ 98834); var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../../core/renderer */ 64553)); var _m_button = _interopRequireDefault(__webpack_require__( /*! ../../ui/text_box/texteditor_button_collection/m_button */ 88244)); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } const pointerDown = _pointer.default.down; class ClearButton extends _m_button.default { _create() { const $element = (0, _renderer.default)("<span>").addClass("dx-clear-button-area").append((0, _renderer.default)("<span>").addClass("dx-icon").addClass("dx-icon-clear")); this._addToContainer($element); this.update(true); return { instance: $element, $element: $element } } _isVisible() { const { editor: editor } = this; return editor._isClearButtonVisible() } _attachEvents(instance, $button) { const { editor: editor } = this; const editorName = editor.NAME; _events_engine.default.on($button, (0, _index.addNamespace)(pointerDown, editorName), (e => { e.preventDefault(); if ("mouse" !== e.pointerType) { editor._clearValueHandler(e) } })); _events_engine.default.on($button, (0, _index.addNamespace)(_click.name, editorName), (e => editor._clearValueHandler(e))) } _legacyRender($editor, isVisible) { $editor.toggleClass("dx-show-clear-button", isVisible) } update() { let rendered = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : false; if (!rendered) { super.update() } const { editor: editor, instance: instance } = this; const $editor = editor.$element(); const isVisible = this._isVisible(); if (instance) { instance.toggleClass("dx-state-invisible", !isVisible) } this._legacyRender($editor, isVisible) } } exports.default = ClearButton }, 37932: /*!*************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/ui/text_box/m_text_editor.js ***! \*************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _component_registrator = _interopRequireDefault(__webpack_require__( /*! ../../../core/component_registrator */ 92848)); var _m_text_editor = _interopRequireDefault(__webpack_require__( /*! ./m_text_editor.mask */ 19132)); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } }(0, _component_registrator.default)("dxTextEditor", _m_text_editor.default); exports.default = _m_text_editor.default }, 50640: /*!*******************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/ui/text_box/m_text_editor.label.js ***! \*******************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.TextEditorLabel = void 0; var _click = __webpack_require__( /*! ../../../common/core/events/click */ 64044); var _emitter = __webpack_require__( /*! ../../../common/core/events/core/emitter.feedback */ 69331); var _events_engine = _interopRequireDefault(__webpack_require__( /*! ../../../common/core/events/core/events_engine */ 92774)); var _hover = __webpack_require__( /*! ../../../common/core/events/hover */ 638); var _index = __webpack_require__( /*! ../../../common/core/events/utils/index */ 98834); var _guid = _interopRequireDefault(__webpack_require__( /*! ../../../core/guid */ 19427)); var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../../core/renderer */ 64553)); var _size = __webpack_require__( /*! ../../../core/utils/size */ 57653); var _window = __webpack_require__( /*! ../../../core/utils/window */ 3104); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } exports.TextEditorLabel = class { constructor(props) { this.NAME = "dxLabel"; this._props = props; this._id = `dx-texteditor-label-${new _guid.default}`; this._render(); this._toggleMarkupVisibility() } _isVisible() { return !!this._props.text && "hidden" !== this._props.mode } _render() { this._$before = (0, _renderer.default)("<div>").addClass("dx-label-before"); this._$labelSpan = (0, _renderer.default)("<span>"); this._$label = (0, _renderer.default)("<div>").addClass("dx-label").append(this._$labelSpan); this._$after = (0, _renderer.default)("<div>").addClass("dx-label-after"); this._$root = (0, _renderer.default)("<div>").addClass("dx-texteditor-label").attr("id", this._id).append(this._$before).append(this._$label).append(this._$after); this._updateMark(); this._updateText(); this._updateBeforeWidth(); this._updateMaxWidth() } _toggleMarkupVisibility() { const visible = this._isVisible(); this._updateEditorBeforeButtonsClass(visible); this._updateEditorLabelClass(visible); visible ? this._$root.appendTo(this._props.$editor) : this._$root.detach(); this._attachEvents() } _attachEvents() { const clickEventName = (0, _index.addNamespace)(_click.name, this.NAME); const hoverStartEventName = (0, _index.addNamespace)(_hover.start, this.NAME); const activeEventName = (0, _index.addNamespace)(_emitter.active, this.NAME); _events_engine.default.off(this._$labelSpan, clickEventName); _events_engine.default.off(this._$labelSpan, hoverStartEventName); _events_engine.default.off(this._$labelSpan, activeEventName); if (this._isVisible() && this._isOutsideMode()) { _events_engine.default.on(this._$labelSpan, clickEventName, (e => { const selectedText = (0, _window.getWindow)().getSelection().toString(); if ("" === selectedText) { this._props.onClickHandler(); e.preventDefault() } })); _events_engine.default.on(this._$labelSpan, hoverStartEventName, (e => { this._props.onHoverHandler(e) })); _events_engine.default.on(this._$labelSpan, activeEventName, (e => { this._props.onActiveHandler(e) })) } } _updateEditorLabelClass(visible) { this._props.$editor.removeClass("dx-texteditor-with-floating-label").removeClass("dx-texteditor-label-outside").removeClass("dx-texteditor-with-label"); if (visible) { const labelClass = "floating" === this._props.mode ? "dx-texteditor-with-floating-label" : "dx-texteditor-with-label"; this._props.$editor.addClass(labelClass); if (this._isOutsideMode()) { this._props.$editor.addClass("dx-texteditor-label-outside") } } } _isOutsideMode() { return "outside" === this._props.mode } _updateEditorBeforeButtonsClass() { let visible = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : this._isVisible(); this._props.$editor.removeClass("dx-texteditor-with-before-buttons"); if (visible) { const beforeButtonsClass = this._props.containsButtonsBefore ? "dx-texteditor-with-before-buttons" : ""; this._props.$editor.addClass(beforeButtonsClass) } } _updateMark() { this._$labelSpan.attr("data-mark", this._props.mark) } _updateText() { this._$labelSpan.text(this._props.text) } _updateBeforeWidth() { if (this._isVisible()) { const width = this._props.beforeWidth ?? this._props.getBeforeWidth(); this._$before.css({ width: width }); this._updateLabelTransform() } } _updateLabelTransform() { let offset = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : 0; this._$labelSpan.css("transform", ""); if (this._isVisible() && this._isOutsideMode()) { const sign = this._props.rtlEnabled ? 1 : -1; const labelTranslateX = sign * ((0, _size.getWidth)(this._$before) + offset); this._$labelSpan.css("transform", `translateX(${labelTranslateX}px)`) } } _updateMaxWidth() { if (this._isVisible() && !this._isOutsideMode()) { const maxWidth = this._props.containerWidth ?? this._props.getContainerWidth(); this._$label.css({ maxWidth: maxWidth }) } } $element() { return this._$root } isVisible() { return this._isVisible() } getId() { if (this._isVisible()) { return this._id } } updateMode(mode) { this._props.mode = mode; this._toggleMarkupVisibility(); this._updateBeforeWidth(); this._updateMaxWidth() } updateText(text) { this._props.text = text; this._updateText(); this._toggleMarkupVisibility(); this._updateBeforeWidth(); this._updateMaxWidth() } updateMark(mark) { this._props.mark = mark; this._updateMark() } updateContainsButtonsBefore(containsButtonsBefore) { this._props.containsButtonsBefore = containsButtonsBefore; this._updateEditorBeforeButtonsClass() } updateBeforeWidth(beforeWidth) { this._props.beforeWidth = beforeWidth; this._updateBeforeWidth() } updateMaxWidth(containerWidth) { this._props.containerWidth = containerWidth; this._updateMaxWidth() } } }, 19132: /*!******************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/ui/text_box/m_text_editor.mask.js ***! \******************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _events_engine = _interopRequireDefault(__webpack_require__( /*! ../../../common/core/events/core/events_engine */ 92774)); var _wheel = __webpack_require__( /*! ../../../common/core/events/core/wheel */ 37373); var _index = __webpack_require__( /*! ../../../common/core/events/utils/index */ 98834); var _message = _interopRequireDefault(__webpack_require__( /*! ../../../common/core/localization/message */ 4671)); var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../../core/renderer */ 64553)); var _extend = __webpack_require__( /*! ../../../core/utils/extend */ 52576); var _iterator = __webpack_require__( /*! ../../../core/utils/iterator */ 21274); var _string = __webpack_require__( /*! ../../../core/utils/string */ 54497); var _type = __webpack_require__( /*! ../../../core/utils/type */ 11528); var _selectors = __webpack_require__( /*! ../../../ui/widget/selectors */ 35944); var _m_text_editor = _interopRequireDefault(__webpack_require__( /*! ./m_text_editor.base */ 34705)); var _m_text_editorMask = __webpack_require__( /*! ./m_text_editor.mask.rule */ 97270); var _m_text_editorMask2 = _interopRequireDefault(__webpack_require__( /*! ./m_text_editor.mask.strategy */ 9217)); var _m_utils = _interopRequireDefault(__webpack_require__( /*! ./m_utils.caret */ 45929)); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } function _extends() { return _extends = Object.assign ? Object.assign.bind() : function(n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) { ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]) } } return n }, _extends.apply(null, arguments) } const caret = _m_utils.default; const buildInMaskRules = { 0: /[0-9]/, 9: /[0-9\s]/, "#": /[-+0-9\s]/, L: char => isLiteralChar(char), l: char => isLiteralChar(char) || isSpaceChar(char), C: /\S/, c: /./, A: char => isLiteralChar(char) || isNumericChar(char), a: char => isLiteralChar(char) || isNumericChar(char) || isSpaceChar(char) }; function isNumericChar(char) { return /[0-9]/.test(char) } function isLiteralChar(char) { const code = char.charCodeAt(); return code > 64 && code < 91 || code > 96 && code < 123 || code > 127 } function isSpaceChar(char) { return " " === char } class TextEditorMask extends _m_text_editor.default { _getDefaultOptions() { return _extends({}, super._getDefaultOptions(), { mask: "", maskChar: "_", maskRules: {}, maskInvalidMessage: _message.default.format("validation-mask"), useMaskedValue: false, showMaskMode: "always" }) } _supportedKeys() { const that = this; const keyHandlerMap = { del: that._maskStrategy.getHandler("del"), enter: that._changeHandler }; const result = super._supportedKeys(); (0, _iterator.each)(keyHandlerMap, ((key, callback) => { const parentHandler = result[key]; result[key] = function(e) { that.option("mask") && callback.call(that, e); parentHandler && parentHandler(e) } })); return result } _getSubmitElement() { return !this.option("mask") ? super._getSubmitElement() : this._$hiddenElement } _init() { super._init(); this._initMaskStrategy() } _initMaskStrategy() { this._maskStrategy = new _m_text_editorMask2.default(this) } _initMarkup() { this._renderHiddenElement(); super._initMarkup() } _attachMouseWheelEventHandlers() { if (!this._hasMouseWheelHandler()) { return } const input = this._input(); const eventName = (0, _index.addNamespace)(_wheel.name, this.NAME); const mouseWheelAction = this._createAction((e => { const { event: event } = e; if ((0, _selectors.focused)(input) && !(0, _index.isCommandKeyPressed)(event)) { this._onMouseWheel(event); event.preventDefault(); event.stopPropagation() } })); _events_engine.default.off(input, eventName); _events_engine.default.on(input, eventName, (e => { mouseWheelAction({ event: e }) })) } _hasMouseWheelHandler() { return false } _onMouseWheel(e) {} _useMaskBehavior() { return Boolean(this.option("mask")) } _attachDropEventHandler() { const useMaskBehavior = this._useMaskBehavior(); if (!useMaskBehavior) { return } const eventName = (0, _index.addNamespace)("drop", this.NAME); const input = this._input(); _events_engine.default.off(input, eventName); _events_engine.default.on(input, eventName, (e => e.preventDefault())) } _render() { this._attachMouseWheelEventHandlers(); this._renderMask(); super._render(); this._attachDropEventHandler() } _renderHiddenElement() { if (this.option("mask")) { this._$hiddenElement = (0, _renderer.default)("<input>").attr("type", "hidden").appendTo(this._inputWrapper()) } } _removeHiddenElement() { this._$hiddenElement && this._$hiddenElement.remove() } _renderMask() { this.$element().removeClass("dx-texteditor-masked"); this._maskRulesChain = null; this._maskStrategy.detachEvents(); if (!this.option("mask")) { return } this.$element().addClass("dx-texteditor-masked"); this._maskStrategy.attachEvents(); this._parseMask(); this._renderMaskedValue() } _changeHandler(e) { const $input = this._input(); const inputValue = $input.val(); if (inputValue === this._changedValue) { return } this._changedValue = inputValue; const changeEvent = (0, _index.createEvent)(e, { type: "change" }); _events_engine.default.trigger($input, changeEvent) } _parseMask() { this._maskRules = (0, _extend.extend)({}, buildInMaskRules, this.option("maskRules")); this._maskRulesChain = this._parseMaskRule(0) } _parseMaskRule(index) { const { mask: mask } = this.option(); if (index >= mask.length) { return new _m_text_editorMask.EmptyMaskRule } const currentMaskChar = mask[index]; const isEscapedChar = "\\" === currentMaskChar; const result = isEscapedChar ? new _m_text_editorMask.StubMaskRule({ maskChar: mask[index + 1] }) : this._getMaskRule(currentMaskChar); result.next(this._parseMaskRule(index + 1 + isEscapedChar)); return result } _getMaskRule(pattern) { let ruleConfig; (0, _iterator.each)(this._maskRules, ((rulePattern, allowedChars) => { if (rulePattern === pattern) { ruleConfig = { pattern: rulePattern, allowedChars: allowedChars }; return false } })); return (0, _type.isDefined)(ruleConfig) ? new _m_text_editorMask.MaskRule((0, _extend.extend)({ maskChar: this.option("maskChar") || " " }, ruleConfig)) : new _m_text_editorMask.StubMaskRule({ maskChar: pattern }) } _renderMaskedValue() { if (!this._maskRulesChain) { return } const value = this.option("value") || ""; this._maskRulesChain.clear(this._normalizeChainArguments()); const chainArgs = { length: value.length }; chainArgs[this._isMaskedValueMode() ? "text" : "value"] = value; this._handleChain(chainArgs); this._displayMask() } _replaceSelectedText(text, selection, char) { if (void 0 === char) { return text } const textBefore = text.slice(0, selection.start); const textAfter = text.slice(selection.end); const edited = textBefore + char + textAfter; return edited } _isMaskedValueMode() { return this.option("useMaskedValue") } _displayMask(caret) { caret = caret || this._caret(); this._renderValue(); this._caret(caret) } _isValueEmpty() { return (0, _string.isEmpty)(this._value) } _shouldShowMask() { const { showMaskMode: showMaskMode } = this.option(); if ("onFocus" === showMaskMode) { return (0, _selectors.focused)(this._input()) || !this._isValueEmpty() } return true } _showMaskPlaceholder() { if (this._shouldShowMask()) { const text = this._maskRulesChain.text(); this.option("text", text); const { showMaskMode: showMaskMode } = this.option(); if ("onFocus" === showMaskMode) { this._renderDisplayText(text) } } } _renderValue() { if (this._maskRulesChain) { this._showMaskPlaceholder(); if (this._$hiddenElement) { const value = this._maskRulesChain.value(); const submitElementValue = !(0, _string.isEmpty)(value) ? this._getPreparedValue() : ""; this._$hiddenElement.val(submitElementValue) } } return super._renderValue() } _getPreparedValue() { return this._convertToValue().replace(/\s+$/, "") } _valueChangeEventHandler(e, value) { if (!this._maskRulesChain) { super._valueChangeEventHandler.apply(this, arguments); return } this._saveValueChangeEvent(e); this.option("value", this._getPreparedValue()) } _isControlKeyFired(e) { return this._isControlKey((0, _index.normalizeKeyName)(e)) || (0, _index.isCommandKeyPressed)(e) } _handleChain(args) { const handledCount = this._maskRulesChain.handle(this._normalizeChainArguments(args)); this._updateMaskInfo(); return handledCount } _normalizeChainArguments(args) { args = args || {}; args.index = 0; args.fullText = this._maskRulesChain.text(); return args } _convertToValue(text) { if (this._isMaskedValueMode()) { text = this._replaceMaskCharWithEmpty(text || this._textValue || "") } else { text = text || this._value || "" } return text } _replaceMaskCharWithEmpty(text) { const { maskChar: maskChar } = this.option(); return text.replace(new RegExp(maskChar, "g"), " ") } _maskKeyHandler(e, keyHandler) { if (this.option("readOnly")) { return } this.setForwardDirection(); e.preventDefault(); this._handleSelection(); const previousText = this._input().val(); const raiseInputEvent = () => { if (previousText !== this._input().val()) { _events_engine.default.trigger(this._input(), "input") } }; const handled = keyHandler(); if (handled) { handled.then(raiseInputEvent) } else { this.setForwardDirection(); this._adjustCaret(); this._displayMask(); this._maskRulesChain.reset(); raiseInputEvent() } } _handleKey(key, direction) { this._direction(direction || "forward"); this._adjustCaret(key); this._handleKeyChain(key); this._moveCaret() } _handleSelection() { if (!this._hasSelection()) { return } const caret = this._caret(); const emptyChars = new Array(caret.end - caret.start + 1).join(" "); this._handleKeyChain(emptyChars) } _handleKeyChain(chars) { const caret = this._caret(); const start = this.isForwardDirection() ? caret.start : caret.start - 1; const end = this.isForwardDirection() ? caret.end : caret.end - 1; const length = start === end ? 1 : end - start; this._handleChain({ text: chars, start: start, length: length }) } _tryMoveCaretBackward() { this.setBackwardDirection(); const currentCaret = this._caret().start; this._adjustCaret(); return !currentCaret || currentCaret !== this._caret().start } _adjustCaret(char) { const caretStart = this._caret().start; const isForwardDirection = this.isForwardDirection(); const caret = this._maskRulesChain.adjustedCaret(caretStart, isForwardDirection, char); this._caret({ start: caret, end: caret }) } _moveCaret() { const currentCaret = this._caret().start; const maskRuleIndex = currentCaret + (this.isForwardDirection() ? 0 : -1); const caret = this._maskRulesChain.isAccepted(maskRuleIndex) ? currentCaret + (this.isForwardDirection() ? 1 : -1) : currentCaret; this._caret({ start: caret, end: caret }) } _caret(position, force) { const $input = this._input(); if (!$input.length) { return } if (!arguments.length) { return caret($input) } caret($input, position, force) } _hasSelection() { const caret = this._caret(); return caret.start !== caret.end } _direction(direction) { if (!arguments.length) { return this._typingDirection } this._typingDirection = direction } setForwardDirection() { this._direction("forward") } setBackwardDirection() { this._direction("backward") } isForwardDirection() { return "forward" === this._direction() } _updateMaskInfo() { this._textValue = this._maskRulesChain.text(); this._value = this._maskRulesChain.value() } _clean() { this._maskStrategy && this._maskStrategy.clean(); super._clean() } _validateMask() { if (!this._maskRulesChain) { return } const isValid = (0, _string.isEmpty)(this.option("value")) || this._maskRulesChain.isValid(this._normalizeChainArguments()); this.option({ isValid: isValid, validationError: isValid ? null : { editorSpecific: true, message: this.option("maskInvalidMessage") } }) } _updateHiddenElement() { this._removeHiddenElement(); if (this.option("mask")) { this._input().removeAttr("name"); this._renderHiddenElement() } const { name: name } = this.option(); this._setSubmitElementName(name) } _updateMaskOption() { this._updateHiddenElement(); this._renderMask(); this._validateMask(); this._refreshValueChangeEvent() } _processEmptyMask(mask) { if (mask) { return } const value = this.option("value"); this.option({ text: value, isValid: true, validationError: null }); this.validationRequest.fire({ value: value, editor: this }); this._renderValue() } _optionChanged(args) { switch (args.name) { case "mask": this._updateMaskOption(); this._processEmptyMask(args.value); break; case "maskChar": case "maskRules": case "useMaskedValue": this._updateMaskOption(); break; case "value": this._renderMaskedValue(); this._validateMask(); super._optionChanged(args); this._changedValue = this._input().val(); break; case "maskInvalidMessage": break; case "showMaskMode": this.option("text", ""); this._renderValue(); break; default: super._optionChanged(args) } } clear() { const { value: defaultValue } = this._getDefaultOptions(); if (this.option("value") === defaultValue) { this._renderMaskedValue() } super.clear() } } exports.default = TextEditorMask }, 97270: /*!***********************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/ui/text_box/m_text_editor.mask.rule.js ***! \***********************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.StubMaskRule = exports.MaskRule = exports.EmptyMaskRule = void 0; var _extend = __webpack_require__( /*! ../../../core/utils/extend */ 52576); var _type = __webpack_require__( /*! ../../../core/utils/type */ 11528); class BaseMaskRule { constructor(config) { this._value = " "; (0, _extend.extend)(this, config) } next(rule) { if (!arguments.length) { return this._next } this._next = rule } _prepareHandlingArgs(args, config) { config = config || {}; const handlingProperty = Object.prototype.hasOwnProperty.call(args, "value") ? "value" : "text"; args[handlingProperty] = config.str ?? args[handlingProperty]; args.start = config.start ?? args.start; args.length = config.length ?? args.length; args.index += 1; return args } first(index) { index = index || 0; return this.next().first(index + 1) } isAccepted(caret) { return false } adjustedCaret(caret, isForwardDirection, char) { return isForwardDirection ? this._adjustedForward(caret, 0, char) : this._adjustedBackward(caret, 0, char) } _adjustedForward(caret, index, char) {} _adjustedBackward(caret, index, char) {} isValid(args) {} reset() {} clear(args) {} text() {} value() {} rawValue() {} handle(args) {} } exports.EmptyMaskRule = class extends BaseMaskRule { next() {} handle() { return 0 } text() { return "" } value() { return "" } first() { return 0 } rawValue() { return "" } adjustedCaret() { return 0 } isValid() { return true } }; class MaskRule extends BaseMaskRule { text() { return (" " !== this._value ? this._value : this.maskChar) + this.next().text() } value() { return this._value + this.next().value() } rawValue() { return this._value + this.next().rawValue() } handle(args) { const str = Object.prototype.hasOwnProperty.call(args, "value") ? args.value : args.text; if (!str || !str.length || !args.length) { return 0 } if (args.start) { return this.next().handle(this._prepareHandlingArgs(args, { start: args.start - 1 })) } const char = str[0]; const rest = str.substring(1); this._tryAcceptChar(char, args); return this._accepted() ? this.next().handle(this._prepareHandlingArgs(args, { str: rest, length: args.length - 1 })) + 1 : this.handle(this._prepareHandlingArgs(args, { str: rest, length: args.length - 1 })) } clear(args) { this._tryAcceptChar(" ", args); this.next().clear(this._prepareHandlingArgs(args)) } reset() { this._accepted(false); this.next().reset() } _tryAcceptChar(char, args) { this._accepted(false); if (!this._isAllowed(char, args)) { return } const acceptedChar = " " === char ? this.maskChar : char; args.fullText = args.fullText.substring(0, args.index) + acceptedChar + args.fullText.substring(args.index + 1); this._accepted(true); this._value = char } _accepted(value) { if (!arguments.length) { return !!this._isAccepted } this._isAccepted = !!value } first(index) { return " " === this._value ? index || 0 : super.first(index) } _isAllowed(char, args) { if (" " === char) { return true } return this._isValid(char, args) } _isValid(char, args) { const { allowedChars: allowedChars } = this; if (allowedChars instanceof RegExp) { return allowedChars.test(char) } if ((0, _type.isFunction)(allowedChars)) { return allowedChars(char, args.index, args.fullText) } if (Array.isArray(allowedChars)) { return allowedChars.includes(char) } return allowedChars === char } isAccepted(caret) { return 0 === caret ? this._accepted() : this.next().isAccepted(caret - 1) } _adjustedForward(caret, index, char) { if (index >= caret) { return index } return this.next()._adjustedForward(caret, index + 1, char) || index + 1 } _adjustedBackward(caret, index) { if (index >= caret - 1) { return caret } return this.next()._adjustedBackward(caret, index + 1) || index + 1 } isValid(args) { return this._isValid(this._value, args) && this.next().isValid(this._prepareHandlingArgs(args)) } } exports.MaskRule = MaskRule; exports.StubMaskRule = class extends MaskRule { value() { return this.next().value() } handle(args) { const hasValueProperty = Object.prototype.hasOwnProperty.call(args, "value"); const str = hasValueProperty ? args.value : args.text; if (!str.length || !args.length) { return 0 } if (args.start || hasValueProperty) { return this.next().handle(this._prepareHandlingArgs(args, { start: args.start && args.start - 1 })) } const char = str[0]; const rest = str.substring(1); this._tryAcceptChar(char); const nextArgs = this._isAllowed(char) ? this._prepareHandlingArgs(args, { str: rest, length: args.length - 1 }) : args; return this.next().handle(nextArgs) + 1 } clear(args) { this._accepted(false); this.next().clear(this._prepareHandlingArgs(args)) } _tryAcceptChar(char) { this._accepted(this._isValid(char)) } _isValid(char) { return char === this.maskChar } first(index) { index = index || 0; return this.next().first(index + 1) } _adjustedForward(caret, index, char) { if (index >= caret && char === this.maskChar) { return index } if (caret === index + 1 && this._accepted()) { return caret } return this.next()._adjustedForward(caret, index + 1, char) } _adjustedBackward(caret, index) { if (index >= caret - 1) { return 0 } return this.next()._adjustedBackward(caret, index + 1) } isValid(args) { return this.next().isValid(this._prepareHandlingArgs(args)) } } }, 9217: /*!***************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/ui/text_box/m_text_editor.mask.strategy.js ***! \***************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _events_engine = _interopRequireDefault(__webpack_require__( /*! ../../../common/core/events/core/events_engine */ 92774)); var _index = __webpack_require__( /*! ../../../common/core/events/utils/index */ 98834); var _browser = _interopRequireDefault(__webpack_require__( /*! ../../../core/utils/browser */ 48314)); var _dom = __webpack_require__( /*! ../../../core/utils/dom */ 86858); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } const DELETE_INPUT_TYPES = ["deleteContentBackward", "deleteSoftLineBackward", "deleteContent", "deleteHardLineBackward"]; const HISTORY_INPUT_TYPES = ["historyUndo", "historyRedo"]; const EVENT_NAMES = ["focusIn", "focusOut", "input", "paste", "cut", "drop", "beforeInput"]; function getEmptyString(length) { return " ".repeat(length) } exports.default = class { constructor(editor) { this.editor = editor } _editorOption() { return this.editor.option(...arguments) } _editorInput() { return this.editor._input() } _editorCaret(newCaret) { if (!newCaret) { return this.editor._caret() } this.editor._caret(newCaret) } _attachChangeEventHandler() { if (!this._editorOption("valueChangeEvent").split(" ").includes("change")) { return } const $input = this._editorInput(); const namespace = (0, _index.addNamespace)("blur beforedeactivate", "dxMask"); _events_engine.default.on($input, namespace, (e => { this.editor._changeHandler(e) })) } _beforeInputHandler() { this._previousText = this._editorOption("text"); this._prevCaret = this._editorCaret() } _inputHandler(event) { const { originalEvent: originalEvent } = event; if (!originalEvent) { return } const { inputType: inputType } = originalEvent; if (HISTORY_INPUT_TYPES.includes(inputType)) { this._handleHistoryInputEvent() } else if (DELETE_INPUT_TYPES.includes(inputType)) { this._handleBackwardDeleteInputEvent() } else { const currentCaret = this._editorCaret(); if (!currentCaret.end) { return } this._clearSelectedText(); this._autoFillHandler(originalEvent); this._editorCaret(currentCaret); this._handleInsertTextInputEvent(originalEvent.data) } if (this._editorOption("text") === this._previousText) { event.stopImmediatePropagation() } } _handleHistoryInputEvent() { const caret = this._editorCaret(); this._updateEditorMask({ start: caret.start, length: caret.end - caret.start, text: "" }); this._editorCaret(this._prevCaret) } _handleBackwardDeleteInputEvent() { this._clearSelectedText(true); const caret = this._editorCaret(); this.editor.setForwardDirection(); this.editor._adjustCaret(); const adjustedForwardCaret = this._editorCaret(); if (adjustedForwardCaret.start !== caret.start) { this.editor.setBackwardDirection(); this.editor._adjustCaret() } } _clearSelectedText(isDeleteInputEvent) { const selectionLength = this._prevCaret && this._prevCaret.end - this._prevCaret.start; const length = selectionLength || Number(isDeleteInputEvent); const caret = this._editorCaret(); if (!this._isAutoFill()) { this.editor.setBackwardDirection(); this._updateEditorMask({ start: caret.start, length: length, text: getEmptyString(length) }) } } _handleInsertTextInputEvent(data) { var _this$_prevCaret; const text = data ?? ""; this.editor.setForwardDirection(); const hasValidChars = this._updateEditorMask({ start: (null === (_this$_prevCaret = this._prevCaret) || void 0 === _this$_prevCaret ? void 0 : _this$_prevCaret.start) ?? 0, length: text.length || 1, text: text }); if (!hasValidChars) { this._editorCaret(this._prevCaret) } } _updateEditorMask(args) { const textLength = args.text.length; const processedCharsCount = this.editor._handleChain(args); this.editor._displayMask(); if (this.editor.isForwardDirection()) { const { start: start, end: end } = this._editorCaret(); const correction = processedCharsCount - textLength; const hasSkippedStub = processedCharsCount > 1; if (hasSkippedStub && 1 === textLength) { this._editorCaret({ start: start + correction, end: end + correction }) } this.editor._adjustCaret() } return !!processedCharsCount } _focusInHandler() { this.editor._showMaskPlaceholder(); this.editor.setForwardDirection(); if (!this.editor._isValueEmpty() && this._editorOption("isValid")) { this.editor._adjustCaret() } else { const caret = this.editor._maskRulesChain.first(); this._caretTimeout = setTimeout((() => { this._editorCaret({ start: caret, end: caret }) }), 0) } } _focusOutHandler(event) { this.editor._changeHandler(event); if ("onFocus" === this._editorOption("showMaskMode") && this.editor._isValueEmpty()) { this._editorOption("text", ""); this.editor._renderDisplayText("") } } _delHandler(event) { const { editor: editor } = this; editor._maskKeyHandler(event, (() => { if (!editor._hasSelection()) { editor._handleKey(" ") } })) } _cutHandler(event) { const caret = this._editorCaret(); const selectedText = this._editorInput().val().substring(caret.start, caret.end); this.editor._maskKeyHandler(event, (() => (0, _dom.clipboardText)(event, selectedText))) } _dropHandler() { this._clearDragTimer(); this._dragTimer = setTimeout((() => { const value = this.editor._convertToValue(this._editorInput().val()); this._editorOption("value", value) })) } _pasteHandler(event) { const { editor: editor } = this; if (this._editorOption("disabled")) { return } const caret = this._editorCaret(); editor._maskKeyHandler(event, (() => { const pastedText = (0, _dom.clipboardText)(event); const restText = editor._maskRulesChain.text().substring(caret.end); const accepted = editor._handleChain({ text: pastedText, start: caret.start, length: pastedText.length }); const newCaret = caret.start + accepted; editor._handleChain({ text: restText, start: newCaret, length: restText.length }); editor._caret({ start: newCaret, end: newCaret }) })) } _autoFillHandler(event) { const { editor: editor } = this; const inputVal = this._editorInput().val(); this._inputHandlerTimer = setTimeout((() => { if (this._isAutoFill()) { editor._maskKeyHandler(event, (() => { editor._handleChain({ text: inputVal, start: 0, length: inputVal.length }) })); editor._validateMask() } })) } _isAutoFill() { const $input = this._editorInput(); if (_browser.default.webkit) { const input = $input.get(0); return (null === input || void 0 === input ? void 0 : input.matches(":-webkit-autofill")) ?? false } return false } _clearDragTimer() { clearTimeout(this._dragTimer) } _clearTimers() { this._clearDragTimer(); clearTimeout(this._caretTimeout); clearTimeout(this._inputHandlerTimer) } getHandler(handlerName) { return args => { var _this; null === (_this = this[`_${handlerName}Handler`]) || void 0 === _this || _this.call(this, args) } } attachEvents() { const $input = this._editorInput(); EVENT_NAMES.forEach((eventName => { const namespace = (0, _index.addNamespace)(eventName.toLowerCase(), "dxMask"); _events_engine.default.on($input, namespace, this.getHandler(eventName)) })); this._attachChangeEventHandler() } detachEvents() { this._clearTimers(); _events_engine.default.off(this._editorInput(), ".dxMask") } clean() { this._clearTimers() } } }, 45929: /*!*************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/ui/text_box/m_utils.caret.js ***! \*************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _devices = _interopRequireDefault(__webpack_require__( /*! ../../../core/devices */ 65951)); var _dom_adapter = _interopRequireDefault(__webpack_require__( /*! ../../../core/dom_adapter */ 64960)); var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../../core/renderer */ 64553)); var _type = __webpack_require__( /*! ../../../core/utils/type */ 11528); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } const { ios: ios, mac: mac } = _devices.default.real(); const isFocusingOnCaretChange = ios || mac; exports.default = function(input, position) { let force = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : false; input = (0, _renderer.default)(input).get(0); if (!(0, _type.isDefined)(position)) { return (input => { let range; try { range = { start: input.selectionStart, end: input.selectionEnd } } catch (e) { range = { start: 0, end: 0 } } return range })(input) } if (!force && isFocusingOnCaretChange && _dom_adapter.default.getActiveElement(input) !== input) { return }((input, position) => { const body = _dom_adapter.default.getBody(); if (!body.contains(input) && !body.contains(input.getRootNode().host)) { return } try { input.selectionStart = position.start; input.selectionEnd = position.end } catch (e) {} })(input, position) } }, 81569: /*!**************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/ui/text_box/m_utils.scroll.js ***! \**************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.prepareScrollData = exports.allowScroll = void 0; var _index = __webpack_require__( /*! ../../../common/core/events/utils/index */ 98834); var _renderer = (e = __webpack_require__( /*! ../../../core/renderer */ 64553), e && e.__esModule ? e : { default: e }); var e; const allowScroll = function(container, delta, shiftKey) { const $container = (0, _renderer.default)(container); const scrollTopPos = shiftKey ? $container.scrollLeft() : $container.scrollTop(); const prop = shiftKey ? "Width" : "Height"; const scrollSize = $container.prop(`scroll${prop}`); const clientSize = $container.prop(`client${prop}`); const scrollBottomPos = scrollSize - clientSize - scrollTopPos | 0; if (0 === scrollTopPos && 0 === scrollBottomPos) { return false } const isScrollFromTop = 0 === scrollTopPos && delta >= 0; const isScrollFromBottom = 0 === scrollBottomPos && delta <= 0; const isScrollFromMiddle = scrollTopPos > 0 && scrollBottomPos > 0; if (isScrollFromTop || isScrollFromBottom || isScrollFromMiddle) { return true } }; exports.allowScroll = allowScroll; exports.prepareScrollData = function(container, validateTarget) { const $container = (0, _renderer.default)(container); return { validate(e) { if ((0, _index.isDxMouseWheelEvent)(e) && (eventTarget = e.target, validateTarget ? (0, _renderer.default)(eventTarget).is(container) : true)) { if (allowScroll($container, -e.delta, e.shiftKey)) { e._needSkipEvent = true; return true } return false } var eventTarget } } } }, 88244: /*!*************************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/ui/text_box/texteditor_button_collection/m_button.js ***! \*************************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _renderer = (e = __webpack_require__( /*! ../../../../core/renderer */ 64553), e && e.__esModule ? e : { default: e }); var e; exports.default = class { constructor(name, editor, options) { this.instance = null; this.$container = null; this.$placeMarker = null; this.editor = editor; this.name = name; this.options = options || {} } _addPlaceMarker($container) { this.$placeMarker = (0, _renderer.default)("<div>").appendTo($container) } _addToContainer($element) { const { $placeMarker: $placeMarker, $container: $container } = this; if ($placeMarker) { $placeMarker.replaceWith($element) } else { $element.appendTo($container) } } _attachEvents(instance, $element) { throw "Not implemented" } _create() { throw "Not implemented" } _isRendered() { return !!this.instance } _isVisible() { const { editor: editor, options: options } = this; return options.visible || !editor.option("readOnly") } _isDisabled() { throw "Not implemented" } _shouldRender() { return this._isVisible() && !this._isRendered() } dispose() { const { instance: instance, $placeMarker: $placeMarker } = this; if (instance) { if (instance.dispose) { instance.dispose() } else { instance.remove() } this.instance = null } null === $placeMarker || void 0 === $placeMarker || $placeMarker.remove() } render() { let $container = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : this.$container; this.$container = $container; if (this._isVisible()) { const { instance: instance, $element: $element } = this._create(); this.instance = instance; this._attachEvents(instance, $element) } else { this._addPlaceMarker($container) } } update() { if (this._shouldRender()) { this.render() } return !!this.instance } } }, 77683: /*!*************************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/ui/text_box/texteditor_button_collection/m_custom.js ***! \*************************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _click = __webpack_require__( /*! ../../../../common/core/events/click */ 64044); var _events_engine = _interopRequireDefault(__webpack_require__( /*! ../../../../common/core/events/core/events_engine */ 92774)); var _hover = __webpack_require__( /*! ../../../../common/core/events/hover */ 638); var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../../../core/renderer */ 64553)); var _button = _interopRequireDefault(__webpack_require__( /*! ../../../../ui/button */ 64973)); var _m_button = _interopRequireDefault(__webpack_require__( /*! ./m_button */ 88244)); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } function _extends() { return _extends = Object.assign ? Object.assign.bind() : function(n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) { ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]) } } return n }, _extends.apply(null, arguments) } class CustomButton extends _m_button.default { _attachEvents(instance, $element) { const { editor: editor } = this; _events_engine.default.on($element, _hover.start, (() => { editor.$element().addClass("dx-custom-button-hovered") })); _events_engine.default.on($element, _hover.end, (() => { editor.$element().removeClass("dx-custom-button-hovered") })); _events_engine.default.on($element, _click.name, (e => { e.stopPropagation() })) } _create() { const { editor: editor } = this; const $element = (0, _renderer.default)("<div>"); this._addToContainer($element); const instance = editor._createComponent($element, _button.default, _extends({}, this.options, { ignoreParentReadOnly: true, disabled: this._isDisabled(), integrationOptions: this._prepareIntegrationOptions(editor) })); return { $element: $element, instance: instance } } _prepareIntegrationOptions(editor) { return _extends({}, editor.option("integrationOptions"), { skipTemplates: ["content"] }) } update() { const isUpdated = super.update(); if (this.instance) { this.instance.option("disabled", this._isDisabled()) } return isUpdated } _isVisible() { const { visible: visible } = this.editor.option(); return !!visible } _isDisabled() { const isDefinedByUser = void 0 !== this.options.disabled; if (isDefinedByUser) { if (this.instance) { return this.instance.option("disabled") } return this.options.disabled } const { readOnly: readOnly } = this.editor.option(); return readOnly } } exports.default = CustomButton }, 79686: /*!************************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/ui/text_box/texteditor_button_collection/m_index.js ***! \************************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../../../core/renderer */ 64553)); var _ui = _interopRequireDefault(__webpack_require__( /*! ../../../../ui/widget/ui.errors */ 35185)); var _m_custom = _interopRequireDefault(__webpack_require__( /*! ./m_custom */ 77683)); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } function _extends() { return _extends = Object.assign ? Object.assign.bind() : function(n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) { ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]) } } return n }, _extends.apply(null, arguments) } function checkNamesUniqueness(existingNames, newName) { if (existingNames.includes(newName)) { throw _ui.default.Error("E1055", newName) } existingNames.push(newName) } exports.default = class { constructor(editor, defaultButtonsInfo) { this.buttons = []; this.defaultButtonsInfo = defaultButtonsInfo; this.editor = editor } _compileButtonInfo(buttons) { const names = []; return buttons.map((button => { const isStringButton = "string" === typeof button; if (!isStringButton) { ! function(buttonInfo) { (() => { if (!buttonInfo || "object" !== typeof buttonInfo || Array.isArray(buttonInfo)) { throw _ui.default.Error("E1053") } })(); (() => { if (!("name" in buttonInfo)) { throw _ui.default.Error("E1054") } })(); (() => { const { name: name } = buttonInfo; if ("string" !== typeof name) { throw _ui.default.Error("E1055") } })(); (() => { const { location: location } = buttonInfo; if ("location" in buttonInfo && "after" !== location && "before" !== location) { buttonInfo.location = "after" } })() }(button) } const isDefaultButton = isStringButton || function(name, predefinedButtonsInfo) { return !!predefinedButtonsInfo.find((info => info.name === name)) }(button.name, this.defaultButtonsInfo); if (isDefaultButton) { const defaultButtonInfo = this.defaultButtonsInfo.find((_ref => { let { name: name } = _ref; return name === button || name === button.name })); if (!defaultButtonInfo) { throw _ui.default.Error("E1056", this.editor.NAME, button) } checkNamesUniqueness(names, button); return defaultButtonInfo } const { name: name } = button; checkNamesUniqueness(names, name); return _extends({}, button, { Ctor: _m_custom.default }) })) } _createButton(buttonsInfo) { const { Ctor: Ctor, options: options, name: name } = buttonsInfo; const button = new Ctor(name, this.editor, options); this.buttons.push(button); return button } _renderButtons(buttons, $container, targetLocation) { let $buttonsContainer = null; const buttonsInfo = buttons ? this._compileButtonInfo(buttons) : this.defaultButtonsInfo; buttonsInfo.forEach((buttonInfo => { const { location: location = "after" } = buttonInfo; if (location === targetLocation) { this._createButton(buttonInfo).render((() => { $buttonsContainer = $buttonsContainer ?? (0, _renderer.default)("<div>").addClass("dx-texteditor-buttons-container"); if ("before" === targetLocation) { $container.prepend($buttonsContainer) } else { $container.append($buttonsContainer) } return $buttonsContainer })()) } })); return $buttonsContainer } clean() { this.buttons.forEach((button => button.dispose())); this.buttons = [] } getButton(buttonName) { const button = this.buttons.find((_ref2 => { let { name: name } = _ref2; return name === buttonName })); return null === button || void 0 === button ? void 0 : button.instance } renderAfterButtons(buttons, $container) { return this._renderButtons(buttons, $container, "after") } renderBeforeButtons(buttons, $container) { return this._renderButtons(buttons, $container, "before") } updateButtons(names) { this.buttons.forEach((button => { if (!names || names.includes(button.name)) { button.update() } })) } } }, 57250: /*!**********************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/ui/toast/m_hide_toasts.js ***! \**********************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _renderer = (e = __webpack_require__( /*! ../../../core/renderer */ 64553), e && e.__esModule ? e : { default: e }); var e; exports.default = function(container) { const toasts = (0, _renderer.default)(".dx-toast").toArray(); if (!arguments.length) { toasts.forEach((toast => { (0, _renderer.default)(toast).dxToast("hide") })); return } const containerElement = (0, _renderer.default)(container).get(0); toasts.map((toast => (0, _renderer.default)(toast).dxToast("instance"))).filter((instance => { const toastContainerElement = (0, _renderer.default)(instance.option("container")).get(0); return containerElement === toastContainerElement && containerElement })).forEach((instance => { instance.hide() })) } }, 11100: /*!****************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/ui/toast/m_toast.js ***! \****************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _events_engine = _interopRequireDefault(__webpack_require__( /*! ../../../common/core/events/core/events_engine */ 92774)); var _pointer = _interopRequireDefault(__webpack_require__( /*! ../../../common/core/events/pointer */ 89797)); var _component_registrator = _interopRequireDefault(__webpack_require__( /*! ../../../core/component_registrator */ 92848)); var _dom_adapter = _interopRequireDefault(__webpack_require__( /*! ../../../core/dom_adapter */ 64960)); var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../../core/renderer */ 64553)); var _extend = __webpack_require__( /*! ../../../core/utils/extend */ 52576); var _ready_callbacks = _interopRequireDefault(__webpack_require__( /*! ../../../core/utils/ready_callbacks */ 3122)); var _type = __webpack_require__( /*! ../../../core/utils/type */ 11528); var _ui = _interopRequireDefault(__webpack_require__( /*! ../../../ui/overlay/ui.overlay */ 89132)); var _themes = __webpack_require__( /*! ../../../ui/themes */ 52071); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } function _extends() { return _extends = Object.assign ? Object.assign.bind() : function(n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) { ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]) } } return n }, _extends.apply(null, arguments) } const ready = _ready_callbacks.default.add; const toastTypes = ["info", "warning", "error", "success"]; const TOAST_STACK = []; const POSITION_ALIASES = { top: { my: "top", at: "top", of: null, offset: "0 0" }, bottom: { my: "bottom", at: "bottom", of: null, offset: "0 -20" }, center: { my: "center", at: "center", of: null, offset: "0 0" }, right: { my: "center right", at: "center right", of: null, offset: "0 0" }, left: { my: "center left", at: "center left", of: null, offset: "0 0" } }; const DEFAULT_BOUNDARY_OFFSET = { h: 0, v: 0 }; ready((() => { _events_engine.default.subscribeGlobal(_dom_adapter.default.getDocument(), _pointer.default.down, (e => { for (let i = TOAST_STACK.length - 1; i >= 0; i--) { if (!TOAST_STACK[i]._proxiedDocumentDownHandler(e)) { return } } })) })); class Toast extends _ui.default { _getDefaultOptions() { return _extends({}, super._getDefaultOptions(), { message: "", type: "info", displayTime: 2e3, position: "bottom center", animation: { show: { type: "fade", duration: 400, from: 0, to: 1 }, hide: { type: "fade", duration: 400, from: 1, to: 0 } }, shading: false, height: "auto", hideTopOverlayHandler: null, preventScrollEvents: false, closeOnSwipe: true, closeOnClick: false }) } _defaultOptionsRules() { const tabletAndMobileCommonOptions = { displayTime: (0, _themes.isMaterialBased)() ? 4e3 : 2e3, hideOnOutsideClick: true, animation: { show: { type: "fade", duration: 200, from: 0, to: 1 }, hide: { type: "fade", duration: 200, from: 1, to: 0 } } }; return super._defaultOptionsRules().concat([{ device: device => "phone" === device.deviceType, options: _extends({ width: "calc(100vw - 40px)" }, tabletAndMobileCommonOptions) }, { device: device => "tablet" === device.deviceType, options: _extends({ width: "auto", maxWidth: "80vw" }, tabletAndMobileCommonOptions) }, { device: device => (0, _themes.isMaterialBased)() && "desktop" === device.deviceType, options: { minWidth: 344, maxWidth: 568, displayTime: 4e3 } }]) } _init() { super._init(); this._posStringToObject() } _renderContentImpl() { const { message: message, type: type } = this.option(); this._message = (0, _renderer.default)("<div>").addClass("dx-toast-message").text(message).appendTo(this.$content()); this.setAria("role", "alert", this._message); if (toastTypes.includes(type.toLowerCase())) { this.$content().prepend((0, _renderer.default)("<div>").addClass("dx-toast-icon")) } super._renderContentImpl() } _render() { super._render(); this.$element().addClass("dx-toast"); this.$wrapper().addClass("dx-toast-wrapper"); const { type: type } = this.option(); this.$content().addClass("dx-toast-" + String(type).toLowerCase()); this.$content().addClass("dx-toast-content"); this._toggleCloseEvents("Swipe"); this._toggleCloseEvents("Click") } _toggleCloseEvents(event) { const dxEvent = `dx${event.toLowerCase()}`; _events_engine.default.off(this.$content(), dxEvent); this.option(`closeOn${event}`) && _events_engine.default.on(this.$content(), dxEvent, this.hide.bind(this)) } _posStringToObject() { const { position: position } = this.option(); if (!(0, _type.isString)(position)) { return } const verticalPosition = position.split(" ")[0]; const horizontalPosition = position.split(" ")[1]; this.option("position", (0, _extend.extend)({ boundaryOffset: DEFAULT_BOUNDARY_OFFSET }, POSITION_ALIASES[verticalPosition])); switch (horizontalPosition) { case "center": case "left": case "right": this.option("position").at += ` ${horizontalPosition}`; this.option("position").my += ` ${horizontalPosition}` } } _show() { return super._show.apply(this, arguments).always((() => { clearTimeout(this._hideTimeout); const { displayTime: displayTime } = this.option(); this._hideTimeout = setTimeout(this.hide.bind(this), displayTime) })) } _overlayStack() { return TOAST_STACK } _zIndexInitValue() { return super._zIndexInitValue() + 8e3 } _dispose() { clearTimeout(this._hideTimeout); super._dispose() } _optionChanged(args) { const { name: name, value: value, previousValue: previousValue } = args; switch (name) { case "type": this.$content().removeClass("dx-toast-" + previousValue); this.$content().addClass("dx-toast-" + String(value).toLowerCase()); break; case "message": if (this._message) { this._message.text(value) } break; case "closeOnSwipe": this._toggleCloseEvents("Swipe"); break; case "closeOnClick": this._toggleCloseEvents("Click"); break; case "displayTime": break; default: super._optionChanged(args) } } }(0, _component_registrator.default)("dxToast", Toast); exports.default = Toast }, 41437: /*!**********************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/ui/toolbar/internal/m_toolbar.menu.js ***! \**********************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; __webpack_require__( /*! ../../../../ui/popup/ui.popup */ 10720); var _devices = _interopRequireDefault(__webpack_require__( /*! ../../../../core/devices */ 65951)); var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../../../core/renderer */ 64553)); var _child_default_template = __webpack_require__( /*! ../../../../core/templates/child_default_template */ 91585); var _extend = __webpack_require__( /*! ../../../../core/utils/extend */ 52576); var _size = __webpack_require__( /*! ../../../../core/utils/size */ 57653); var _window = __webpack_require__( /*! ../../../../core/utils/window */ 3104); var _button = _interopRequireDefault(__webpack_require__( /*! ../../../../ui/button */ 64973)); var _themes = __webpack_require__( /*! ../../../../ui/themes */ 52071); var _widget = _interopRequireDefault(__webpack_require__( /*! ../../../core/widget/widget */ 89275)); var _m_toolbar = __webpack_require__( /*! ../m_toolbar.utils */ 58227); var _m_toolbarMenu = _interopRequireDefault(__webpack_require__( /*! ./m_toolbar.menu.list */ 30363)); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } function _extends() { return _extends = Object.assign ? Object.assign.bind() : function(n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) { ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]) } } return n }, _extends.apply(null, arguments) } class DropDownMenu extends _widget.default { _supportedKeys() { var _this$_list; let extension = {}; if (!this.option("opened") || !(null !== (_this$_list = this._list) && void 0 !== _this$_list && _this$_list.option("focusedElement"))) { extension = this._button._supportedKeys() } return (0, _extend.extend)(super._supportedKeys(), extension, { tab() { var _this$_popup; null === (_this$_popup = this._popup) || void 0 === _this$_popup || _this$_popup.hide() } }) } _getDefaultOptions() { return _extends({}, super._getDefaultOptions(), { items: [], onItemClick: null, dataSource: null, itemTemplate: "item", onButtonClick: null, activeStateEnabled: true, hoverStateEnabled: true, opened: false, onItemRendered: null, closeOnClick: true, useInkRipple: false, container: void 0, animation: { show: { type: "fade", from: 0, to: 1 }, hide: { type: "fade", to: 0 } } }) } _defaultOptionsRules() { return super._defaultOptionsRules().concat([{ device: () => "desktop" === _devices.default.real().deviceType && !_devices.default.isSimulator(), options: { focusStateEnabled: true } }, { device: () => (0, _themes.isMaterialBased)(), options: { useInkRipple: true, animation: { show: { type: "pop", duration: 200, from: { scale: 0 }, to: { scale: 1 } }, hide: { type: "pop", duration: 200, from: { scale: 1 }, to: { scale: 0 } } } } }]) } _init() { super._init(); this.$element().addClass("dx-dropdownmenu"); this._initItemClickAction(); this._initButtonClickAction() } _initItemClickAction() { this._itemClickAction = this._createActionByOption("onItemClick", {}) } _initButtonClickAction() { this._buttonClickAction = this._createActionByOption("onButtonClick", {}) } _initTemplates() { this._templateManager.addDefaultTemplates({ content: new _child_default_template.ChildDefaultTemplate("content") }); super._initTemplates() } _initMarkup() { this._renderButton(); super._initMarkup() } _render() { super._render(); this.setAria({ haspopup: true, expanded: this.option("opened") }) } _renderContentImpl() { if (this.option("opened")) { this._renderPopup() } } _clean() { var _this$_list2, _this$_popup2; this._cleanFocusState(); null === (_this$_list2 = this._list) || void 0 === _this$_list2 || _this$_list2.$element().remove(); null === (_this$_popup2 = this._popup) || void 0 === _this$_popup2 || _this$_popup2.$element().remove(); delete this._list; delete this._popup } _renderButton() { const $button = this.$element().addClass("dx-dropdownmenu-button"); this._button = this._createComponent($button, _button.default, { icon: "overflow", template: "content", stylingMode: (0, _themes.isFluent)() ? "text" : "contained", useInkRipple: this.option("useInkRipple"), hoverStateEnabled: false, focusStateEnabled: false, onClick: e => { this.option("opened", !this.option("opened")); this._buttonClickAction(e) } }) } _toggleActiveState($element, value, e) { this._button._toggleActiveState($element, value, e) } _toggleMenuVisibility(opened) { var _this$_popup3, _this$_popup4; const state = opened ?? !(null !== (_this$_popup3 = this._popup) && void 0 !== _this$_popup3 && _this$_popup3.option("visible")); if (opened) { this._renderPopup() } null === (_this$_popup4 = this._popup) || void 0 === _this$_popup4 || _this$_popup4.toggle(state); this.setAria("expanded", state) } _renderPopup() { if (this._$popup) { return } this._$popup = (0, _renderer.default)("<div>").appendTo(this.$element()); const { rtlEnabled: rtlEnabled, container: container, animation: animation } = this.option(); this._popup = this._createComponent(this._$popup, "dxPopup", { onInitialized(_ref) { let { component: component } = _ref; component.$wrapper().addClass("dx-dropdownmenu-popup-wrapper").addClass("dx-dropdownmenu-popup") }, deferRendering: false, preventScrollEvents: false, contentTemplate: contentElement => this._renderList(contentElement), _ignoreFunctionValueDeprecation: true, maxHeight: () => this._getMaxHeight(), position: { my: "top " + (rtlEnabled ? "left" : "right"), at: "bottom " + (rtlEnabled ? "left" : "right"), collision: "fit flip", offset: { v: 3 }, of: this.$element() }, animation: animation, onOptionChanged: _ref2 => { let { name: name, value: value } = _ref2; if ("visible" === name) { this.option("opened", value) } }, container: container, autoResizeEnabled: false, height: "auto", width: "auto", hideOnOutsideClick: e => this._closeOutsideDropDownHandler(e), hideOnParentScroll: true, shading: false, dragEnabled: false, showTitle: false, fullScreen: false, _fixWrapperPosition: true }) } _getMaxHeight() { const $element = this.$element(); const offsetTop = $element.offset().top; const windowHeight = (0, _size.getOuterHeight)((0, _window.getWindow)()); const maxHeight = Math.max(offsetTop, windowHeight - offsetTop - (0, _size.getOuterHeight)($element)); return Math.min(windowHeight, maxHeight - 3 - 10) } _closeOutsideDropDownHandler(e) { const isOutsideClick = !(0, _renderer.default)(e.target).closest(this.$element()).length; return isOutsideClick } _renderList(contentElement) { const $content = (0, _renderer.default)(contentElement); $content.addClass("dx-dropdownmenu-list"); const { itemTemplate: itemTemplate, onItemRendered: onItemRendered } = this.option(); this._list = this._createComponent($content, _m_toolbarMenu.default, { dataSource: this._getListDataSource(), pageLoadMode: "scrollBottom", indicateLoading: false, noDataText: "", itemTemplate: itemTemplate, onItemClick: e => { if (this.option("closeOnClick")) { this.option("opened", false) } this._itemClickAction(e) }, tabIndex: -1, focusStateEnabled: false, activeStateEnabled: true, onItemRendered: onItemRendered, _itemAttributes: { role: "menuitem" } }) } _itemOptionChanged(item, property, value) { var _this$_list3; null === (_this$_list3 = this._list) || void 0 === _this$_list3 || _this$_list3._itemOptionChanged(item, property, value); (0, _m_toolbar.toggleItemFocusableElementTabIndex)(this._list, item) } _getListDataSource() { return this.option("dataSource") ?? this.option("items") } _setListDataSource() { var _this$_list4; null === (_this$_list4 = this._list) || void 0 === _this$_list4 || _this$_list4.option("dataSource", this._getListDataSource()); delete this._deferRendering } _getKeyboardListeners() { return super._getKeyboardListeners().concat([this._list]) } _toggleVisibility(visible) { var _this$_button; super._toggleVisibility(visible); null === (_this$_button = this._button) || void 0 === _this$_button || _this$_button.option("visible", visible) } _optionChanged(args) { var _this$_list5, _this$_list6, _this$_list7; const { name: name, value: value } = args; switch (name) { case "items": case "dataSource": if (!this.option("opened")) { this._deferRendering = true } else { this._setListDataSource() } break; case "itemTemplate": null === (_this$_list5 = this._list) || void 0 === _this$_list5 || _this$_list5.option(name, this._getTemplate(value)); break; case "onItemClick": this._initItemClickAction(); break; case "onButtonClick": this._buttonClickAction(); break; case "useInkRipple": this._invalidate(); break; case "focusStateEnabled": null === (_this$_list6 = this._list) || void 0 === _this$_list6 || _this$_list6.option(name, value); super._optionChanged(args); break; case "onItemRendered": null === (_this$_list7 = this._list) || void 0 === _this$_list7 || _this$_list7.option(name, value); break; case "opened": if (this._deferRendering) { this._setListDataSource() } this._toggleMenuVisibility(value); this._updateFocusableItemsTabIndex(); break; case "closeOnClick": break; case "container": this._popup && this._popup.option(name, value); break; case "disabled": if (this._list) { this._updateFocusableItemsTabIndex() } break; default: super._optionChanged(args) } } _updateFocusableItemsTabIndex() { this.option("items").forEach((item => (0, _m_toolbar.toggleItemFocusableElementTabIndex)(this._list, item))) } } exports.default = DropDownMenu }, 30363: /*!***************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/ui/toolbar/internal/m_toolbar.menu.list.js ***! \***************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _renderer = (e = __webpack_require__( /*! ../../../../core/renderer */ 64553), e && e.__esModule ? e : { default: e }); var e; var _iterator = __webpack_require__( /*! ../../../../core/utils/iterator */ 21274); var _m_list = __webpack_require__( /*! ../../../ui/list/m_list.base */ 26031); class ToolbarMenuList extends _m_list.ListBase { _init() { super._init(); this._activeStateUnit = ".dx-toolbar-menu-action:not(.dx-toolbar-hidden-button-group)" } _initMarkup() { this._renderSections(); super._initMarkup(); this._setMenuRole() } _getSections() { return this._itemContainer().children() } _itemElements() { return this._getSections().children(this._itemSelector()) } _renderSections() { const $container = this._itemContainer(); (0, _iterator.each)(["before", "center", "after", "menu"], ((_, section) => { const sectionName = `_$${section}Section`; if (!this[sectionName]) { this[sectionName] = (0, _renderer.default)("<div>").addClass("dx-toolbar-menu-section") } this[sectionName].appendTo($container) })) } _renderItems() { super._renderItems.apply(this, arguments); this._updateSections() } _setMenuRole() { const $menuContainer = this.$element().find(".dx-scrollview-content"); $menuContainer.attr("role", "menu") } _updateSections() { const $sections = this.$element().find(".dx-toolbar-menu-section"); $sections.removeClass("dx-toolbar-menu-last-section"); $sections.not(":empty").eq(-1).addClass("dx-toolbar-menu-last-section") } _renderItem(index, item, itemContainer, $after) { const $container = this[`_$${item.location??"menu"}Section`]; const itemElement = super._renderItem(index, item, $container, $after); const itemCssClasses = this._getItemCssClasses(item); itemElement.addClass(itemCssClasses.join(" ")); return itemElement } _getItemCssClasses(item) { const cssClasses = []; const actionableComponents = this._getActionableComponents(); if (this._getItemTemplateName({ itemData: item })) { cssClasses.push("dx-toolbar-menu-custom") } if (!item.widget || actionableComponents.includes(item.widget)) { cssClasses.push("dx-toolbar-menu-action") } if ("dxButton" === item.widget) { cssClasses.push("dx-toolbar-hidden-button") } if ("dxButtonGroup" === item.widget) { cssClasses.push("dx-toolbar-hidden-button-group") } cssClasses.push(item.cssClass); return cssClasses } _getActionableComponents() { return ["dxButton", "dxButtonGroup"] } _getItemTemplateName(args) { const template = super._getItemTemplateName(args); const data = args.itemData; const menuTemplate = null === data || void 0 === data ? void 0 : data.menuItemTemplate; return menuTemplate || template } _dataSourceOptions() { return { paginate: false } } _itemClickHandler(e, args, config) { if ((0, _renderer.default)(e.target).closest(".dx-toolbar-menu-action").length) { super._itemClickHandler(e, args, config) } } _clean() { this._getSections().empty(); super._clean() } } exports.default = ToolbarMenuList }, 96002: /*!**********************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/ui/toolbar/m_constants.js ***! \**********************************************************************************/ function(__unused_webpack_module, exports) { Object.defineProperty(exports, "__esModule", { value: true }); exports.TOOLBAR_CLASS = void 0; exports.TOOLBAR_CLASS = "dx-toolbar" }, 30577: /*!*************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/ui/toolbar/m_toolbar.base.js ***! \*************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _animation = __webpack_require__( /*! ../../../common/core/animation */ 16826); var _component_registrator = _interopRequireDefault(__webpack_require__( /*! ../../../core/component_registrator */ 92848)); var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../../core/renderer */ 64553)); var _bindable_template = __webpack_require__( /*! ../../../core/templates/bindable_template */ 27286); var _iterator = __webpack_require__( /*! ../../../core/utils/iterator */ 21274); var _position = __webpack_require__( /*! ../../../core/utils/position */ 41639); var _size = __webpack_require__( /*! ../../../core/utils/size */ 57653); var _type = __webpack_require__( /*! ../../../core/utils/type */ 11528); var _themes = __webpack_require__( /*! ../../../ui/themes */ 52071); var _m_collection_widget = _interopRequireDefault(__webpack_require__( /*! ../../ui/collection/m_collection_widget.async */ 88575)); var _m_constants = __webpack_require__( /*! ./m_constants */ 96002); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } function _extends() { return _extends = Object.assign ? Object.assign.bind() : function(n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) { ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]) } } return n }, _extends.apply(null, arguments) } class ToolbarBase extends _m_collection_widget.default { _getSynchronizableOptionsForCreateComponent() { return super._getSynchronizableOptionsForCreateComponent().filter((item => "disabled" !== item)) } _initTemplates() { super._initTemplates(); const template = new _bindable_template.BindableTemplate((($container, data, rawModel) => { if ((0, _type.isPlainObject)(data)) { const { text: text, html: html, widget: widget } = data; if (text) { $container.text(text).wrapInner("<div>") } if (html) { $container.html(html) } if ("dxDropDownButton" === widget) { data.options = data.options ?? {}; if (!(0, _type.isDefined)(data.options.stylingMode)) { data.options.stylingMode = this.option("useFlatButtons") ? "text" : "contained" } } if ("dxButton" === widget) { if (this.option("useFlatButtons")) { data.options = data.options ?? {}; data.options.stylingMode = data.options.stylingMode ?? "text" } if (this.option("useDefaultButtons")) { data.options = data.options ?? {}; data.options.type = data.options.type ?? "default" } } } else { $container.text(String(data)) } this._getTemplate("dx-polymorph-widget").render({ container: $container, model: rawModel, parent: this }) }), ["text", "html", "widget", "options"], this.option("integrationOptions.watchMethod")); this._templateManager.addDefaultTemplates({ item: template, menuItem: template }) } _getDefaultOptions() { return _extends({}, super._getDefaultOptions(), { renderAs: "topToolbar", grouped: false, useFlatButtons: false, useDefaultButtons: false }) } _defaultOptionsRules() { return super._defaultOptionsRules().concat([{ device: () => (0, _themes.isMaterialBased)(), options: { useFlatButtons: true } }]) } _itemContainer() { return this._$toolbarItemsContainer.find([".dx-toolbar-before", ".dx-toolbar-center", ".dx-toolbar-after"].join(",")) } _itemClass() { return "dx-toolbar-item" } _itemDataKey() { return "dxToolbarItemDataKey" } _dimensionChanged(dimension) { if (this._disposed) { return } this._arrangeItems(); this._applyCompactMode() } _initMarkup() { this._renderToolbar(); this._renderSections(); super._initMarkup() } _render() { super._render(); this._updateDimensionsInMaterial() } _postProcessRenderItems() { this._arrangeItems() } _renderToolbar() { this.$element().addClass(_m_constants.TOOLBAR_CLASS); this._$toolbarItemsContainer = (0, _renderer.default)("<div>").addClass("dx-toolbar-items-container").appendTo(this.$element()); this.setAria("role", "toolbar") } _renderSections() { const $container = this._$toolbarItemsContainer; (0, _iterator.each)(["before", "center", "after"], ((_, section) => { const sectionClass = `dx-toolbar-${section}`; const $section = $container.find(`.${sectionClass}`); if (!$section.length) { this[`_$${section}Section`] = (0, _renderer.default)("<div>").addClass(sectionClass).attr("role", "presentation").appendTo($container) } })) } _arrangeItems(width) { var _this$_$beforeSection, _this$_$afterSection; const elementWidth = width ?? (0, _size.getWidth)(this.$element()); this._$centerSection.css({ margin: "0 auto", float: "none" }); const beforeRect = (0, _position.getBoundingRect)(null === (_this$_$beforeSection = this._$beforeSection) || void 0 === _this$_$beforeSection ? void 0 : _this$_$beforeSection.get(0)); const afterRect = (0, _position.getBoundingRect)(null === (_this$_$afterSection = this._$afterSection) || void 0 === _this$_$afterSection ? void 0 : _this$_$afterSection.get(0)); this._alignCenterSection(beforeRect, afterRect, elementWidth); const $label = this._$toolbarItemsContainer.find(".dx-toolbar-label").eq(0); const $section = $label.parent(); if (!$label.length) { return } const labelOffset = beforeRect.width ? beforeRect.width : $label.position().left; const widthBeforeSection = $section.hasClass("dx-toolbar-before") ? 0 : labelOffset; const widthAfterSection = $section.hasClass("dx-toolbar-after") ? 0 : afterRect.width; let elemsAtSectionWidth = 0; $section.children().not(".dx-toolbar-label").each(((index, element) => { elemsAtSectionWidth += (0, _size.getOuterWidth)(element) })); const freeSpace = elementWidth - elemsAtSectionWidth; const sectionMaxWidth = Math.max(freeSpace - widthBeforeSection - widthAfterSection, 0); if ($section.hasClass("dx-toolbar-before")) { this._alignSection(this._$beforeSection, sectionMaxWidth) } else { const labelPaddings = (0, _size.getOuterWidth)($label) - (0, _size.getWidth)($label); $label.css("maxWidth", sectionMaxWidth - labelPaddings) } } _alignCenterSection(beforeRect, afterRect, elementWidth) { var _this$_$centerSection; this._alignSection(this._$centerSection, elementWidth - beforeRect.width - afterRect.width); const isRTL = this.option("rtlEnabled"); const leftRect = isRTL ? afterRect : beforeRect; const rightRect = isRTL ? beforeRect : afterRect; const centerRect = (0, _position.getBoundingRect)(null === (_this$_$centerSection = this._$centerSection) || void 0 === _this$_$centerSection ? void 0 : _this$_$centerSection.get(0)); if (leftRect.right > centerRect.left || centerRect.right > rightRect.left) { this._$centerSection.css({ marginLeft: leftRect.width, marginRight: rightRect.width, float: leftRect.width > rightRect.width ? "none" : "right" }) } } _alignSection($section, maxWidth) { const $labels = $section.find(".dx-toolbar-label"); let labels = $labels.toArray(); maxWidth -= this._getCurrentLabelsPaddings(labels); const currentWidth = this._getCurrentLabelsWidth(labels); const difference = Math.abs(currentWidth - maxWidth); if (maxWidth < currentWidth) { labels = labels.reverse(); this._alignSectionLabels(labels, difference, false) } else { this._alignSectionLabels(labels, difference, true) } } _alignSectionLabels(labels, difference, expanding) { const getRealLabelWidth = function(label) { return (0, _position.getBoundingRect)(label).width }; for (let i = 0; i < labels.length; i++) { const $label = (0, _renderer.default)(labels[i]); const currentLabelWidth = Math.ceil(getRealLabelWidth(labels[i])); let labelMaxWidth; if (expanding) { $label.css("maxWidth", "inherit") } const possibleLabelWidth = Math.ceil(expanding ? getRealLabelWidth(labels[i]) : currentLabelWidth); if (possibleLabelWidth < difference) { labelMaxWidth = expanding ? possibleLabelWidth : 0; difference -= possibleLabelWidth } else { labelMaxWidth = expanding ? currentLabelWidth + difference : currentLabelWidth - difference; $label.css("maxWidth", labelMaxWidth); break } $label.css("maxWidth", labelMaxWidth) } } _applyCompactMode() { const $element = (0, _renderer.default)(this.element()); $element.removeClass("dx-toolbar-compact"); if (this.option("compactMode") && this._getSummaryItemsSize("width", this._itemElements(), true) > (0, _size.getWidth)($element)) { $element.addClass("dx-toolbar-compact") } } _getCurrentLabelsWidth(labels) { let width = 0; labels.forEach((label => { width += (0, _size.getOuterWidth)(label) })); return width } _getCurrentLabelsPaddings(labels) { let padding = 0; labels.forEach((label => { padding += (0, _size.getOuterWidth)(label) - (0, _size.getWidth)(label) })); return padding } _renderItem(index, item, itemContainer, $after) { const location = item.location ?? "center"; const container = itemContainer ?? this[`_$${location}Section`]; const itemHasText = !!(item.text ?? item.html); const itemElement = super._renderItem(index, item, container, $after); itemElement.toggleClass("dx-toolbar-button", !itemHasText).toggleClass("dx-toolbar-label", itemHasText).addClass(item.cssClass); return itemElement } _renderGroupedItems() { (0, _iterator.each)(this.option("items"), ((groupIndex, group) => { const groupItems = group.items; const $container = (0, _renderer.default)("<div>").addClass("dx-toolbar-group"); const location = group.location ?? "center"; if (!groupItems || !groupItems.length) { return }(0, _iterator.each)(groupItems, ((itemIndex, item) => { this._renderItem(itemIndex, item, $container, null) })); this._$toolbarItemsContainer.find(`.dx-toolbar-${location}`).append($container) })) } _renderItems(items) { const grouped = this.option("grouped") && items.length && items[0].items; grouped ? this._renderGroupedItems() : super._renderItems(items) } _getToolbarItems() { return this.option("items") ?? [] } _renderContentImpl() { const items = this._getToolbarItems(); this.$element().toggleClass("dx-toolbar-mini", 0 === items.length); if (this._renderedItemsCount) { this._renderItems(items.slice(this._renderedItemsCount)) } else { this._renderItems(items) } this._applyCompactMode() } _renderEmptyMessage() {} _clean() { this._$toolbarItemsContainer.children().empty(); this.$element().empty(); delete this._$beforeSection; delete this._$centerSection; delete this._$afterSection } _visibilityChanged(visible) { if (visible) { this._arrangeItems() } } _isVisible() { return (0, _size.getWidth)(this.$element()) > 0 && (0, _size.getHeight)(this.$element()) > 0 } _getIndexByItem(item) { return this._getToolbarItems().indexOf(item) } _itemOptionChanged(item, property, value, prevValue) { super._itemOptionChanged(item, property, value, prevValue); this._arrangeItems() } _optionChanged(args) { const { name: name } = args; switch (name) { case "width": super._optionChanged(args); this._dimensionChanged(); break; case "renderAs": case "useFlatButtons": case "useDefaultButtons": this._invalidate(); break; case "compactMode": this._applyCompactMode(); break; case "grouped": break; default: super._optionChanged(args) } } _dispose() { super._dispose(); clearTimeout(this._waitParentAnimationTimeout) } _updateDimensionsInMaterial() { if ((0, _themes.isMaterial)()) { const _waitParentAnimationFinished = () => new Promise((resolve => { const check = () => { let readyToResolve = true; this.$element().parents().each(((_, parent) => { if (_animation.fx.isAnimating((0, _renderer.default)(parent))) { readyToResolve = false; return false } })); if (readyToResolve) { resolve() } return readyToResolve }; const runCheck = () => { clearTimeout(this._waitParentAnimationTimeout); this._waitParentAnimationTimeout = setTimeout((() => check() || runCheck()), 15) }; runCheck() })); const _checkWebFontForLabelsLoaded = () => { const $labels = this.$element().find(".dx-toolbar-label"); const promises = []; $labels.each(((_, label) => { const text = (0, _renderer.default)(label).text(); const fontWeight = (0, _renderer.default)(label).css("fontWeight"); promises.push((0, _themes.waitWebFont)(text, fontWeight)) })); return Promise.all(promises) }; Promise.all([_waitParentAnimationFinished(), _checkWebFontForLabelsLoaded()]).then((() => { this._dimensionChanged() })) } } }(0, _component_registrator.default)("dxToolbarBase", ToolbarBase); exports.default = ToolbarBase }, 56044: /*!********************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/ui/toolbar/m_toolbar.js ***! \********************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _component_registrator = _interopRequireDefault(__webpack_require__( /*! ../../../core/component_registrator */ 92848)); var _m_toolbar = _interopRequireDefault(__webpack_require__( /*! ./m_toolbar.base */ 30577)); var _m_toolbar2 = __webpack_require__( /*! ./m_toolbar.utils */ 58227); var _m_toolbar3 = __webpack_require__( /*! ./strategy/m_toolbar.multiline */ 92227); var _m_toolbar4 = __webpack_require__( /*! ./strategy/m_toolbar.singleline */ 63468); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } function _extends() { return _extends = Object.assign ? Object.assign.bind() : function(n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) { ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]) } } return n }, _extends.apply(null, arguments) } class Toolbar extends _m_toolbar.default { _getDefaultOptions() { return _extends({}, super._getDefaultOptions(), { menuItemTemplate: "menuItem", menuContainer: void 0, overflowMenuVisible: false, multiline: false }) } _isMultiline() { return this.option("multiline") } _dimensionChanged(dimension) { if ("height" === dimension) { return } super._dimensionChanged(); this._layoutStrategy._dimensionChanged() } _initMarkup() { super._initMarkup(); this._updateFocusableItemsTabIndex(); this._layoutStrategy._initMarkup() } _renderToolbar() { super._renderToolbar(); this._renderLayoutStrategy() } _itemContainer() { if (this._isMultiline()) { return this._$toolbarItemsContainer } return super._itemContainer() } _renderLayoutStrategy() { this.$element().toggleClass("dx-toolbar-multiline", this._isMultiline()); this._layoutStrategy = this._isMultiline() ? new _m_toolbar3.MultiLineStrategy(this) : new _m_toolbar4.SingleLineStrategy(this) } _renderSections() { if (this._isMultiline()) { return } return super._renderSections() } _postProcessRenderItems() { this._layoutStrategy._hideOverflowItems(); this._layoutStrategy._updateMenuVisibility(); super._postProcessRenderItems(); this._layoutStrategy._renderMenuItems() } _renderItem(index, item, itemContainer, $after) { const itemElement = super._renderItem(index, item, itemContainer, $after); this._layoutStrategy._renderItem(item, itemElement); const { widget: widget, showText: showText } = item; if ("dxButton" === widget && "inMenu" === showText) { itemElement.toggleClass("dx-toolbar-text-auto-hide") } return itemElement } _getItemsWidth() { return this._layoutStrategy._getItemsWidth() } _getMenuItems() { return this._layoutStrategy._getMenuItems() } _getToolbarItems() { return this._layoutStrategy._getToolbarItems() } _arrangeItems() { if (this.$element().is(":hidden")) { return } const elementWidth = this._layoutStrategy._arrangeItems(); if (!this._isMultiline()) { super._arrangeItems(elementWidth) } } _itemOptionChanged(item, property, value, prevValue) { if (!this._isMenuItem(item)) { super._itemOptionChanged(item, property, value, prevValue) } this._layoutStrategy._itemOptionChanged(item, property, value); if ("disabled" === property || "options.disabled" === property) { (0, _m_toolbar2.toggleItemFocusableElementTabIndex)(this, item) } if ("location" === property) { this.repaint() } } _updateFocusableItemsTabIndex() { this._getToolbarItems().forEach((item => (0, _m_toolbar2.toggleItemFocusableElementTabIndex)(this, item))) } _isMenuItem(itemData) { return "menu" === itemData.location || "always" === itemData.locateInMenu } _isToolbarItem(itemData) { return void 0 === itemData.location || "never" === itemData.locateInMenu } _optionChanged(args) { const { name: name, value: value } = args; this._layoutStrategy._optionChanged(name, value); switch (name) { case "menuContainer": case "menuItemTemplate": case "overflowMenuVisible": break; case "multiline": this._invalidate(); break; case "disabled": super._optionChanged(args); this._updateFocusableItemsTabIndex(); break; default: super._optionChanged(args) } } updateDimensions() { this._dimensionChanged() } }(0, _component_registrator.default)("dxToolbar", Toolbar); exports.default = Toolbar }, 58227: /*!**************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/ui/toolbar/m_toolbar.utils.js ***! \**************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.toggleItemFocusableElementTabIndex = function(context, item) { var _itemData$options; if (!context) { return } const $item = context._findItemElementByItem(item); if (!$item.length) { return } const itemData = context._getItemData($item); const isItemNotFocusable = !!(null !== (_itemData$options = itemData.options) && void 0 !== _itemData$options && _itemData$options.disabled || itemData.disabled || context.option("disabled")); const { widget: widget } = itemData; if (widget && TOOLBAR_ITEMS.includes(widget)) { const $widget = $item.find(widget.toLowerCase().replace("dx", ".dx-")); if ($widget.length) { var _itemInstance$_focusT, _itemData$options2; const itemInstance = getItemInstance($widget); if (!itemInstance) { return } let $focusTarget = null === (_itemInstance$_focusT = itemInstance._focusTarget) || void 0 === _itemInstance$_focusT ? void 0 : _itemInstance$_focusT.call(itemInstance); if ("dxDropDownButton" === widget) { $focusTarget = $focusTarget && $focusTarget.find(`.${BUTTON_GROUP_CLASS}`) } else { $focusTarget = $focusTarget ?? (0, _renderer.default)(itemInstance.element()) } const tabIndex = null === (_itemData$options2 = itemData.options) || void 0 === _itemData$options2 ? void 0 : _itemData$options2.tabIndex; if (isItemNotFocusable) { $focusTarget.attr("tabIndex", -1) } else { $focusTarget.attr("tabIndex", tabIndex ?? 0) } } } }; var _renderer = (e = __webpack_require__( /*! ../../../core/renderer */ 64553), e && e.__esModule ? e : { default: e }); var e; const BUTTON_GROUP_CLASS = "dx-buttongroup"; const TOOLBAR_ITEMS = ["dxAutocomplete", "dxButton", "dxCheckBox", "dxDateBox", "dxMenu", "dxSelectBox", "dxTabs", "dxTextBox", "dxButtonGroup", "dxDropDownButton"]; const getItemInstance = function($element) { const itemData = $element.data && $element.data(); const dxComponents = itemData && itemData.dxComponents; const widgetName = dxComponents && dxComponents[0]; return widgetName && itemData[widgetName] } }, 92227: /*!***************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/ui/toolbar/strategy/m_toolbar.multiline.js ***! \***************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.MultiLineStrategy = void 0; var _size = __webpack_require__( /*! ../../../../core/utils/size */ 57653); exports.MultiLineStrategy = class { constructor(toolbar) { this._toolbar = toolbar } _initMarkup() {} _updateMenuVisibility() {} _renderMenuItems() {} _renderItem() {} _getMenuItems() {} _getToolbarItems() { return this._toolbar.option("items") ?? [] } _getItemsWidth() { return this._toolbar._getSummaryItemsSize("width", this._toolbar._itemElements(), true) } _arrangeItems() { const $label = this._toolbar._$toolbarItemsContainer.find(".dx-toolbar-label").eq(0); if (!$label.length) { return } const elementWidth = (0, _size.getWidth)(this._toolbar.$element()); const labelPaddings = (0, _size.getOuterWidth)($label) - (0, _size.getWidth)($label); $label.css("maxWidth", elementWidth - labelPaddings) } _hideOverflowItems() {} _dimensionChanged() {} _itemOptionChanged() {} _optionChanged() {} } }, 63468: /*!****************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/ui/toolbar/strategy/m_toolbar.singleline.js ***! \****************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.SingleLineStrategy = void 0; var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../../../core/renderer */ 64553)); var _common = __webpack_require__( /*! ../../../../core/utils/common */ 17781); var _data = __webpack_require__( /*! ../../../../core/utils/data */ 31e3); var _extend = __webpack_require__( /*! ../../../../core/utils/extend */ 52576); var _iterator = __webpack_require__( /*! ../../../../core/utils/iterator */ 21274); var _size = __webpack_require__( /*! ../../../../core/utils/size */ 57653); var _m_toolbar = _interopRequireDefault(__webpack_require__( /*! ../../../ui/toolbar/internal/m_toolbar.menu */ 41437)); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } exports.SingleLineStrategy = class { constructor(toolbar) { this._toolbar = toolbar } _initMarkup() { (0, _common.deferRender)((() => { this._renderOverflowMenu(); this._renderMenuItems() })) } _renderOverflowMenu() { if (!this._hasVisibleMenuItems()) { return } this._renderMenuButtonContainer(); const $menu = (0, _renderer.default)("<div>").appendTo(this._overflowMenuContainer()); const itemClickAction = this._toolbar._createActionByOption("onItemClick"); const menuItemTemplate = this._toolbar._getTemplateByOption("menuItemTemplate"); const { disabled: disabled, menuContainer: menuContainer } = this._toolbar.option(); this._menu = this._toolbar._createComponent($menu, _m_toolbar.default, { disabled: disabled, itemTemplate: () => menuItemTemplate, onItemClick: e => { itemClickAction(e) }, container: menuContainer, onOptionChanged: _ref => { let { name: name, value: value } = _ref; if ("opened" === name) { this._toolbar.option("overflowMenuVisible", value) } if ("items" === name) { this._updateMenuVisibility(value) } } }) } renderMenuItems() { var _this$_menu; if (!this._menu) { this._renderOverflowMenu() } null === (_this$_menu = this._menu) || void 0 === _this$_menu || _this$_menu.option("items", this._getMenuItems()); if (this._menu && !this._menu.option("items").length) { this._menu.option("opened", false) } } _renderMenuButtonContainer() { this._$overflowMenuContainer = (0, _renderer.default)("<div>").appendTo(this._toolbar._$afterSection).addClass("dx-toolbar-button").addClass("dx-toolbar-menu-container") } _overflowMenuContainer() { return this._$overflowMenuContainer } _updateMenuVisibility(menuItems) { const items = menuItems ?? this._getMenuItems(); const isMenuVisible = items.length && this._hasVisibleMenuItems(items); this._toggleMenuVisibility(isMenuVisible) } _toggleMenuVisibility(value) { if (!this._overflowMenuContainer()) { return } this._overflowMenuContainer().toggleClass("dx-state-invisible", !value) } _renderMenuItems() { (0, _common.deferRender)((() => { this.renderMenuItems() })) } _dimensionChanged() { this.renderMenuItems() } _getToolbarItems() { return (0, _common.grep)(this._toolbar.option("items") ?? [], (item => !this._toolbar._isMenuItem(item))) } _getHiddenItems() { return this._toolbar._itemContainer().children(".dx-toolbar-item-auto-hide.dx-toolbar-item-invisible").not(".dx-state-invisible") } _getMenuItems() { const menuItems = (0, _common.grep)(this._toolbar.option("items") ?? [], (item => this._toolbar._isMenuItem(item))); const $hiddenItems = this._getHiddenItems(); this._restoreItems = this._restoreItems ?? []; const overflowItems = [].slice.call($hiddenItems).map((hiddenItem => { const itemData = this._toolbar._getItemData(hiddenItem); const $itemContainer = (0, _renderer.default)(hiddenItem); const $itemMarkup = $itemContainer.children(); return (0, _extend.extend)({ menuItemTemplate: () => { this._restoreItems.push({ container: $itemContainer, item: $itemMarkup }); const $container = (0, _renderer.default)("<div>").addClass("dx-toolbar-item-auto-hide"); return $container.append($itemMarkup) } }, itemData) })); return [...overflowItems, ...menuItems] } _hasVisibleMenuItems(items) { const menuItems = items ?? this._toolbar.option("items"); let result = false; const optionGetter = (0, _data.compileGetter)("visible"); const overflowGetter = (0, _data.compileGetter)("locateInMenu"); (0, _iterator.each)(menuItems, ((index, item) => { const itemVisible = optionGetter(item, { functionsAsIs: true }); const itemOverflow = overflowGetter(item, { functionsAsIs: true }); if (false !== itemVisible && ("auto" === itemOverflow || "always" === itemOverflow) || "menu" === item.location) { result = true } })); return result } _arrangeItems() { this._toolbar._$centerSection.css({ margin: "0 auto", float: "none" }); (0, _iterator.each)(this._restoreItems ?? [], ((_, obj) => { (0, _renderer.default)(obj.container).append(obj.item) })); this._restoreItems = []; const elementWidth = (0, _size.getWidth)(this._toolbar.$element()); this._hideOverflowItems(elementWidth); return elementWidth } _hideOverflowItems(width) { const overflowItems = this._toolbar.$element().find(".dx-toolbar-item-auto-hide"); if (!overflowItems.length) { return } const elementWidth = width ?? (0, _size.getWidth)(this._toolbar.$element()); (0, _renderer.default)(overflowItems).removeClass("dx-toolbar-item-invisible"); let itemsWidth = this._getItemsWidth(); while (overflowItems.length && elementWidth < itemsWidth) { const $item = overflowItems.eq(-1); $item.addClass("dx-toolbar-item-invisible"); itemsWidth = this._getItemsWidth(); [].splice.apply(overflowItems, [-1, 1]) } } _getItemsWidth() { return this._toolbar._getSummaryItemsSize("width", [this._toolbar._$beforeSection, this._toolbar._$centerSection, this._toolbar._$afterSection]) } _itemOptionChanged(item, property, value) { if ("disabled" === property || "options.disabled" === property) { if (this._toolbar._isMenuItem(item)) { var _this$_menu2; null === (_this$_menu2 = this._menu) || void 0 === _this$_menu2 || _this$_menu2._itemOptionChanged(item, property, value); return } } this.renderMenuItems() } _renderItem(item, itemElement) { if ("auto" === item.locateInMenu) { itemElement.addClass("dx-toolbar-item-auto-hide") } } _optionChanged(name, value) { var _this$_menu3, _this$_menu4, _this$_menu5, _this$_menu6, _this$_menu7; switch (name) { case "disabled": null === (_this$_menu3 = this._menu) || void 0 === _this$_menu3 || _this$_menu3.option(name, value); break; case "overflowMenuVisible": null === (_this$_menu4 = this._menu) || void 0 === _this$_menu4 || _this$_menu4.option("opened", value); break; case "onItemClick": null === (_this$_menu5 = this._menu) || void 0 === _this$_menu5 || _this$_menu5.option(name, value); break; case "menuContainer": null === (_this$_menu6 = this._menu) || void 0 === _this$_menu6 || _this$_menu6.option("container", value); break; case "menuItemTemplate": null === (_this$_menu7 = this._menu) || void 0 === _this$_menu7 || _this$_menu7.option("itemTemplate", value) } } } }, 33476: /*!********************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/ui/tooltip/m_tooltip.js ***! \********************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.hide = function() { if (!tooltip) { return (0, _deferred.Deferred)().resolve() } return tooltip.hide().done(removeTooltip).promise() }; exports.show = function(options) { removeTooltip(); createTooltip(options); return tooltip.show() }; var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../../core/renderer */ 64553)); var _deferred = __webpack_require__( /*! ../../../core/utils/deferred */ 87739); var _extend = __webpack_require__( /*! ../../../core/utils/extend */ 52576); var _view_port = __webpack_require__( /*! ../../../core/utils/view_port */ 55355); var _tooltip = _interopRequireDefault(__webpack_require__( /*! ../../../ui/tooltip */ 93370)); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } let tooltip = null; let removeTooltipElement = null; const createTooltip = function(options) { options = (0, _extend.extend)({ position: "top" }, options); const { content: content } = options; delete options.content; const $tooltip = (0, _renderer.default)("<div>").html(content).appendTo((0, _view_port.value)()); removeTooltipElement = function() { $tooltip.remove() }; tooltip = new _tooltip.default($tooltip, options) }; const removeTooltip = function() { if (!tooltip) { return } removeTooltipElement(); tooltip = null } }, 61897: /*!*****************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/ui/tree_view/m_tree_view.base.js ***! \*****************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _animation = __webpack_require__( /*! ../../../common/core/animation */ 16826); var _click = __webpack_require__( /*! ../../../common/core/events/click */ 64044); var _events_engine = _interopRequireDefault(__webpack_require__( /*! ../../../common/core/events/core/events_engine */ 92774)); var _double_click = __webpack_require__( /*! ../../../common/core/events/double_click */ 5636); var _pointer = _interopRequireDefault(__webpack_require__( /*! ../../../common/core/events/pointer */ 89797)); var _index = __webpack_require__( /*! ../../../common/core/events/utils/index */ 98834); var _message = _interopRequireDefault(__webpack_require__( /*! ../../../common/core/localization/message */ 4671)); var _dom_adapter = _interopRequireDefault(__webpack_require__( /*! ../../../core/dom_adapter */ 64960)); var _element = __webpack_require__( /*! ../../../core/element */ 61404); var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../../core/renderer */ 64553)); var _deferred = __webpack_require__( /*! ../../../core/utils/deferred */ 87739); var _extend = __webpack_require__( /*! ../../../core/utils/extend */ 52576); var _icon = __webpack_require__( /*! ../../../core/utils/icon */ 69629); var _iterator = __webpack_require__( /*! ../../../core/utils/iterator */ 21274); var _size = __webpack_require__( /*! ../../../core/utils/size */ 57653); var _type = __webpack_require__( /*! ../../../core/utils/type */ 11528); var _window = __webpack_require__( /*! ../../../core/utils/window */ 3104); var _check_box = _interopRequireDefault(__webpack_require__( /*! ../../../ui/check_box */ 94319)); var _load_indicator = _interopRequireDefault(__webpack_require__( /*! ../../../ui/load_indicator */ 11979)); var _m_support = _interopRequireDefault(__webpack_require__( /*! ../../core/utils/m_support */ 85991)); var _m_hierarchical_collection_widget = _interopRequireDefault(__webpack_require__( /*! ../../ui/hierarchical_collection/m_hierarchical_collection_widget */ 16383)); var _consts = __webpack_require__( /*! ../../ui/scroll_view/consts */ 21363); var _m_scrollable = _interopRequireDefault(__webpack_require__( /*! ../../ui/scroll_view/m_scrollable */ 94790)); var _get_relative_offset = __webpack_require__( /*! ../../ui/scroll_view/utils/get_relative_offset */ 91524); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } function _extends() { return _extends = Object.assign ? Object.assign.bind() : function(n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) { ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]) } } return n }, _extends.apply(null, arguments) } const NODE_CLASS = "dx-treeview-node"; const NODE_CONTAINER_CLASS = `${NODE_CLASS}-container`; const NODE_LOAD_INDICATOR_CLASS = `${NODE_CLASS}-loadindicator`; const OPENED_NODE_CONTAINER_CLASS = `${NODE_CLASS}-container-opened`; const IS_LEAF = `${NODE_CLASS}-is-leaf`; const ITEM_CLASS = "dx-treeview-item"; const ITEM_WITH_CHECKBOX_CLASS = `${ITEM_CLASS}-with-checkbox`; const ITEM_WITH_CUSTOM_EXPANDER_ICON_CLASS = `${ITEM_CLASS}-with-custom-expander-icon`; const ITEM_WITHOUT_CHECKBOX_CLASS = `${ITEM_CLASS}-without-checkbox`; const ITEM_DATA_KEY = `${ITEM_CLASS}-data`; class TreeViewBase extends _m_hierarchical_collection_widget.default { _supportedKeys() { const click = e => { const { focusedElement: focusedElement } = this.option(); const $itemElement = (0, _renderer.default)(focusedElement); if (!$itemElement.length) { return } e.target = $itemElement; e.currentTarget = $itemElement; this._itemClickHandler(e, $itemElement.children(`.${ITEM_CLASS}`)); const expandEventName = this._getEventNameByOption(this.option("expandEvent")); const expandByClick = expandEventName === (0, _index.addNamespace)(_click.name, "dxTreeView_expand"); if (expandByClick) { this._expandEventHandler(e) } }; const select = e => { e.preventDefault(); const { focusedElement: focusedElement } = this.option(); const $focusedElement = (0, _renderer.default)(focusedElement); const checkboxInstance = this._getCheckBoxInstance($focusedElement); if (!checkboxInstance.option("disabled")) { const currentState = checkboxInstance.option("value"); this._updateItemSelection(!currentState, $focusedElement.find(`.${ITEM_CLASS}`).get(0), true) } }; const toggleExpandedNestedItems = function(state, e) { if (!this.option("expandAllEnabled")) { return } e.preventDefault(); const $rootElement = (0, _renderer.default)(this.option("focusedElement")); if (!$rootElement.length) { return } const rootItem = this._getItemData($rootElement.find(`.${ITEM_CLASS}`)); this._toggleExpandedNestedItems([rootItem], state) }; return _extends({}, super._supportedKeys(), { enter: this._showCheckboxes() ? select : click, space: this._showCheckboxes() ? select : click, asterisk: toggleExpandedNestedItems.bind(this, true), minus: toggleExpandedNestedItems.bind(this, false) }) } _toggleExpandedNestedItems(items, state) { if (!items) { return } for (let i = 0, len = items.length; i < len; i++) { const item = items[i]; const node = this._dataAdapter.getNodeByItem(item); this._toggleExpandedState(node, state); this._toggleExpandedNestedItems(item.items, state) } } _getNodeElement(node, cache) { const key = this._encodeString(node.internalFields.key); if (cache) { if (!cache.$nodeByKey) { cache.$nodeByKey = {}; this.$element().find(`.${NODE_CLASS}`).each((function() { const $node = (0, _renderer.default)(this); const key = $node.attr("data-item-id"); cache.$nodeByKey[key] = $node })) } return cache.$nodeByKey[key] || (0, _renderer.default)() } const element = this.$element().get(0).querySelector(`[data-item-id="${key}"]`); return (0, _renderer.default)(element) } _widgetClass() { return "dx-treeview" } _getDefaultOptions() { const defaultOptions = (0, _extend.extend)(super._getDefaultOptions(), { animationEnabled: true, dataStructure: "tree", deferRendering: true, expandAllEnabled: false, hasItemsExpr: "hasItems", selectNodesRecursive: true, expandNodesRecursive: true, showCheckBoxesMode: "none", expandIcon: null, collapseIcon: null, selectAllText: _message.default.format("dxList-selectAll"), onItemSelectionChanged: null, onItemExpanded: null, onItemCollapsed: null, scrollDirection: "vertical", useNativeScrolling: true, virtualModeEnabled: false, rootValue: 0, focusStateEnabled: false, selectionMode: "multiple", expandEvent: "dblclick", selectByClick: false, createChildren: null, onSelectAllValueChanged: null, _supportItemUrl: false }); return (0, _extend.extend)(true, defaultOptions, { integrationOptions: { useDeferUpdateForTemplates: false } }) } _defaultOptionsRules() { return super._defaultOptionsRules().concat([{ device: () => !_m_support.default.nativeScrolling, options: { useNativeScrolling: false } }]) } _initSelectedItems() {} _syncSelectionOptions() { return (0, _deferred.Deferred)().resolve().promise() } _fireSelectionChanged() { this._createActionByOption("onSelectionChanged", { excludeValidators: ["disabled", "readOnly"] })() } _createSelectAllValueChangedAction() { this._selectAllValueChangedAction = this._createActionByOption("onSelectAllValueChanged", { excludeValidators: ["disabled", "readOnly"] }) } _fireSelectAllValueChanged(value) { var _this$_selectAllValue; null === (_this$_selectAllValue = this._selectAllValueChangedAction) || void 0 === _this$_selectAllValue || _this$_selectAllValue.call(this, { value: value }) } _checkBoxModeChange(value, previousValue) { const searchEnabled = this.option("searchEnabled"); const previousSelectAllEnabled = this._selectAllEnabled(previousValue); const previousItemsContainer = this._itemContainer(searchEnabled, previousSelectAllEnabled); this._detachClickEvent(previousItemsContainer); this._detachExpandEvent(previousItemsContainer); if ("none" === previousValue || "none" === value) { return } const selectAllExists = this._$selectAllItem && this._$selectAllItem.length; switch (value) { case "selectAll": if (!selectAllExists) { this._createSelectAllValueChangedAction(); this._renderSelectAllItem() } break; case "normal": if (selectAllExists) { var _this$_$selectAllItem; null === (_this$_$selectAllItem = this._$selectAllItem) || void 0 === _this$_$selectAllItem || _this$_$selectAllItem.remove(); delete this._$selectAllItem } } } _removeSelection() { const that = this; (0, _iterator.each)(this._dataAdapter.getFullData(), ((_, node) => { if (!that._hasChildren(node)) { return } that._dataAdapter.toggleSelection(node.internalFields.key, false, true) })) } _optionChanged(args) { const { name: name, value: value, previousValue: previousValue } = args; switch (name) { case "selectAllText": if (this._$selectAllItem) { this._$selectAllItem.dxCheckBox("instance").option("text", value) } break; case "showCheckBoxesMode": this._checkBoxModeChange(value, previousValue); this._invalidate(); break; case "scrollDirection": this.getScrollable().option("direction", value); break; case "useNativeScrolling": this.getScrollable().option("useNative", value); break; case "items": delete this._$selectAllItem; super._optionChanged(args); break; case "dataSource": super._optionChanged(args); this._initDataAdapter(); this._filter = {}; break; case "hasItemsExpr": this._initAccessors(); this.repaint(); break; case "expandEvent": this._attachExpandEvent(); break; case "deferRendering": case "dataStructure": case "rootValue": case "createChildren": case "expandNodesRecursive": case "onItemSelectionChanged": case "onItemExpanded": case "onItemCollapsed": case "expandAllEnabled": case "animationEnabled": case "virtualModeEnabled": case "selectByClick": case "_supportItemUrl": break; case "selectionMode": this._initDataAdapter(); super._optionChanged(args); break; case "onSelectAllValueChanged": this._createSelectAllValueChangedAction(); break; case "selectNodesRecursive": this._dataAdapter.setOption("recursiveSelection", args.value); this.repaint(); break; case "expandIcon": case "collapseIcon": this.repaint(); break; default: super._optionChanged(args) } } _initDataSource() { if (this._useCustomChildrenLoader()) { this._loadChildrenByCustomLoader(null).done((newItems => { if (newItems && newItems.length) { this.option("items", newItems) } })) } else { super._initDataSource(); this._isVirtualMode() && this._initVirtualMode() } } _initVirtualMode() { const filter = this._filter; if (!filter.custom) { filter.custom = this._dataSource.filter() } if (!filter.internal) { filter.internal = [this.option("parentIdExpr"), this.option("rootValue")] } } _useCustomChildrenLoader() { return (0, _type.isFunction)(this.option("createChildren")) && this._isDataStructurePlain() } _loadChildrenByCustomLoader(parentNode) { const invocationResult = this.option("createChildren").call(this, parentNode); if (Array.isArray(invocationResult)) { return (0, _deferred.Deferred)().resolve(invocationResult).promise() } if (invocationResult && (0, _type.isFunction)(invocationResult.then)) { return (0, _deferred.fromPromise)(invocationResult) } return (0, _deferred.Deferred)().resolve([]).promise() } _combineFilter() { if (!this._filter.custom || !this._filter.custom.length) { return this._filter.internal } return [this._filter.custom, this._filter.internal] } _dataSourceLoadErrorHandler() { this._renderEmptyMessage() } _init() { this._filter = {}; super._init(); this._activeStateUnit = `.${ITEM_CLASS}`; this._initStoreChangeHandlers() } _dataSourceChangedHandler(newItems) { const items = this.option("items"); if (this._initialized && this._isVirtualMode() && items.length) { return } this.option("items", newItems) } _removeTreeViewLoadIndicator() { if (!this._treeViewLoadIndicator) { return } this._treeViewLoadIndicator.remove(); this._treeViewLoadIndicator = null } _createTreeViewLoadIndicator() { this._treeViewLoadIndicator = (0, _renderer.default)("<div>").addClass("dx-treeview-loadindicator"); this._createComponent(this._treeViewLoadIndicator, _load_indicator.default, {}); return this._treeViewLoadIndicator } _dataSourceLoadingChangedHandler(isLoading) { let resultFilter; if (this._isVirtualMode()) { resultFilter = this._combineFilter(); this._dataSource.filter(resultFilter) } if (isLoading && !this._dataSource.isLoaded()) { this.option("items", []); const $wrapper = (0, _renderer.default)("<div>").addClass("dx-treeview-loadindicator-wrapper"); this._createTreeViewLoadIndicator().appendTo($wrapper); this.itemsContainer().append($wrapper); if (this._isVirtualMode() && this._dataSource.filter() !== resultFilter) { this._dataSource.filter([]) } } else { this._removeTreeViewLoadIndicator() } } _initStoreChangeHandlers() { const { dataStructure: dataStructure } = this.option(); if ("plain" !== dataStructure) { return } this._dataSource && this._dataSource.store().on("inserted", (newItem => { this.option().items = this.option("items").concat(newItem); this._dataAdapter.addItem(newItem); if (!this._dataAdapter.isFiltered(newItem)) { return } this._updateLevel(this._parentIdGetter(newItem)) })).on("removed", (removedKey => { const node = this._dataAdapter.getNodeByKey(removedKey); if ((0, _type.isDefined)(node)) { this.option("items")[this._dataAdapter.getIndexByKey(node.internalFields.key)] = 0; this._markChildrenItemsToRemove(node); this._removeItems(); this._dataAdapter.removeItem(removedKey); this._updateLevel(this._parentIdGetter(node)) } })) } _markChildrenItemsToRemove(node) { const keys = node.internalFields.childrenKeys; (0, _iterator.each)(keys, ((_, key) => { this.option("items")[this._dataAdapter.getIndexByKey(key)] = 0; this._markChildrenItemsToRemove(this._dataAdapter.getNodeByKey(key)) })) } _removeItems() { const items = (0, _extend.extend)(true, [], this.option("items")); let counter = 0; (0, _iterator.each)(items, ((index, item) => { if (!item) { this.option("items").splice(index - counter, 1); counter++ } })) } _updateLevel(parentId) { const $container = this._getContainerByParentKey(parentId); this._renderItems($container, this._dataAdapter.getChildrenNodes(parentId)) } _getOldContainer($itemElement) { if ($itemElement.length) { return $itemElement.children(`.${NODE_CONTAINER_CLASS}`) } const scrollable = this.getScrollable(); if (scrollable) { return (0, _renderer.default)(scrollable.content()).children() } return (0, _renderer.default)() } _getContainerByParentKey(parentId) { const node = this._dataAdapter.getNodeByKey(parentId); const $itemElement = node ? this._getNodeElement(node) : []; this._getOldContainer($itemElement).remove(); const $container = this._renderNodeContainer($itemElement); if (this._isRootLevel(parentId)) { const scrollable = this.getScrollable(); if (!scrollable) { this._renderScrollableContainer() }(0, _renderer.default)(scrollable.content()).append($container) } return $container } _isRootLevel(parentId) { return parentId === this.option("rootValue") } _getAccessors() { const accessors = super._getAccessors(); accessors.push("hasItems"); return accessors } _getDataAdapterOptions() { var _this$_dataSource, _this$_dataSource2, _this$_dataSource2$lo; return { rootValue: this.option("rootValue"), multipleSelection: !this._isSingleSelection(), recursiveSelection: this._isRecursiveSelection(), recursiveExpansion: this.option("expandNodesRecursive"), selectionRequired: this.option("selectionRequired"), dataType: this.option("dataStructure"), sort: null === (_this$_dataSource = this._dataSource) || void 0 === _this$_dataSource ? void 0 : _this$_dataSource.sort(), langParams: null === (_this$_dataSource2 = this._dataSource) || void 0 === _this$_dataSource2 || null === (_this$_dataSource2$lo = _this$_dataSource2.loadOptions) || void 0 === _this$_dataSource2$lo || null === (_this$_dataSource2$lo = _this$_dataSource2$lo.call(_this$_dataSource2)) || void 0 === _this$_dataSource2$lo ? void 0 : _this$_dataSource2$lo.langParams } } _initMarkup() { this._renderScrollableContainer(); this._renderEmptyMessage(this._dataAdapter.getRootNodes()); super._initMarkup(); this._setAriaRole() } _setAriaRole() { const { items: items } = this.option(); if (items && items.length) { this.setAria({ role: "tree" }) } } _renderContentImpl() { const $nodeContainer = this._renderNodeContainer(); (0, _renderer.default)(this.getScrollable().content()).append($nodeContainer); if (!this.option("items") || !this.option("items").length) { return } this._renderItems($nodeContainer, this._dataAdapter.getRootNodes()); this._attachExpandEvent(); if (this._selectAllEnabled()) { this._createSelectAllValueChangedAction(); this._renderSelectAllItem($nodeContainer) } } _isVirtualMode() { return this.option("virtualModeEnabled") && this._isDataStructurePlain() && !!this.option("dataSource") } _isDataStructurePlain() { const { dataStructure: dataStructure } = this.option(); return "plain" === dataStructure } _fireContentReadyAction() { const dataSource = this.getDataSource(); const skipContentReadyAction = dataSource && !dataSource.isLoaded() || this._skipContentReadyAndItemExpanded; const scrollable = this.getScrollable(); if (scrollable && (0, _window.hasWindow)()) { scrollable.update() } if (!skipContentReadyAction) { super._fireContentReadyAction() } if (scrollable && (0, _window.hasWindow)()) { scrollable.update() } } _renderScrollableContainer() { this._scrollable = this._createComponent((0, _renderer.default)("<div>").appendTo(this.$element()), _m_scrollable.default, { useNative: this.option("useNativeScrolling"), direction: this.option("scrollDirection"), useKeyboard: false }) } _renderNodeContainer($parent) { const $container = (0, _renderer.default)("<ul>").addClass(NODE_CONTAINER_CLASS); this.setAria("role", "group", $container); if (null !== $parent && void 0 !== $parent && $parent.length) { const itemData = this._getItemData($parent.children(`.${ITEM_CLASS}`)); if (this._expandedGetter(itemData)) { $container.addClass(OPENED_NODE_CONTAINER_CLASS) } $container.appendTo($parent) } return $container } _createDOMElement($nodeContainer, node) { var _node$internalFields; const $node = (0, _renderer.default)("<li>").addClass(NODE_CLASS).attr("data-item-id", this._encodeString(node.internalFields.key)).prependTo($nodeContainer); const attrs = { role: "treeitem", label: this._displayGetter(node.internalFields.item) || "", level: this._getLevel($nodeContainer) }; const hasChildNodes = !!(null !== node && void 0 !== node && null !== (_node$internalFields = node.internalFields) && void 0 !== _node$internalFields && null !== (_node$internalFields = _node$internalFields.childrenKeys) && void 0 !== _node$internalFields && _node$internalFields.length); if (hasChildNodes) { attrs.expanded = node.internalFields.expanded || false } this.setAria(attrs, $node); return $node } _getLevel($nodeContainer) { const parent = $nodeContainer.parent(); return parent.hasClass("dx-scrollable-content") ? 1 : parseInt(parent.attr("aria-level")) + 1 } _showCheckboxes() { const { showCheckBoxesMode: showCheckBoxesMode } = this.option(); return "none" !== showCheckBoxesMode } _hasCustomExpanderIcons() { return this.option("expandIcon") || this.option("collapseIcon") } _selectAllEnabled(showCheckBoxesMode) { const mode = showCheckBoxesMode ?? this.option("showCheckBoxesMode"); return "selectAll" === mode && !this._isSingleSelection() } _renderItems($nodeContainer, nodes) { const length = nodes.length - 1; for (let i = length; i >= 0; i--) { this._renderItem(i, nodes[i], $nodeContainer) } this._renderedItemsCount += nodes.length } _renderItem(nodeIndex, node, $nodeContainer) { const $node = this._createDOMElement($nodeContainer, node); const nodeData = node.internalFields; const showCheckBox = this._showCheckboxes(); $node.addClass(showCheckBox ? ITEM_WITH_CHECKBOX_CLASS : ITEM_WITHOUT_CHECKBOX_CLASS); $node.toggleClass("dx-state-invisible", false === nodeData.item.visible); if (this._hasCustomExpanderIcons()) { $node.addClass(ITEM_WITH_CUSTOM_EXPANDER_ICON_CLASS); $nodeContainer.addClass("dx-treeview-custom-expander-icon-item-container") } this.setAria("selected", nodeData.selected, $node); this._toggleSelectedClass($node, nodeData.selected); if (nodeData.disabled) { this.setAria("disabled", nodeData.disabled, $node) } super._renderItem(this._renderedItemsCount + nodeIndex, nodeData.item, $node); const parent = this._getNode(node.internalFields.parentKey); if (!parent) { $node.addClass("dx-treeview-root-node") } if (false !== nodeData.item.visible) { this._renderChildren($node, node) } } _setAriaSelectionAttribute() {} _renderChildren($node, node) { if (!this._hasChildren(node)) { this._addLeafClass($node); (0, _renderer.default)("<div>").addClass("dx-treeview-expander-icon-stub").appendTo(this._getItem($node)); return } if (this._hasCustomExpanderIcons()) { this._renderCustomExpanderIcons($node, node) } else { this._renderDefaultExpanderIcons($node, node) } if (this._shouldRenderSublevel(node.internalFields.expanded)) { this._loadSublevel(node).done((childNodes => { this._renderSublevel($node, this._getActualNode(node), childNodes) })) } } _shouldRenderSublevel(expanded) { return expanded || !this.option("deferRendering") } _getActualNode(cachedNode) { return this._dataAdapter.getNodeByKey(cachedNode.internalFields.key) } _hasChildren(node) { if (this._isVirtualMode() || this._useCustomChildrenLoader()) { return false !== this._hasItemsGetter(node.internalFields.item) } return super._hasChildren(node) } _loadSublevel(node) { const deferred = (0, _deferred.Deferred)(); const childrenNodes = this._getChildNodes(node); if (childrenNodes.length) { deferred.resolve(childrenNodes) } else { this._loadNestedItems(node).done((items => { deferred.resolve(this._dataAdapter.getNodesByItems(items)) })) } return deferred.promise() } _getItemExtraPropNames() { return ["url", "linkAttr"] } _addContent($container, itemData) { const { html: html, url: url } = itemData; if (this.option("_supportItemUrl") && url) { $container.html(html); const link = this._getLinkContainer(this._getIconContainer(itemData), this._getTextContainer(itemData), itemData); $container.append(link) } else { super._addContent($container, itemData) } } _postprocessRenderItem(args) { const { itemData: itemData, itemElement: itemElement } = args; if (this._showCheckboxes()) { this._renderCheckBox(itemElement, this._getNode(itemData)) } super._postprocessRenderItem(args) } _renderSublevel($node, node, childNodes) { const $nestedNodeContainer = this._renderNodeContainer($node); const childNodesByChildrenKeys = childNodes.filter((childNode => -1 !== node.internalFields.childrenKeys.indexOf(childNode.internalFields.key))); this._renderItems($nestedNodeContainer, childNodesByChildrenKeys); if (childNodesByChildrenKeys.length && !node.internalFields.selected) { const firstChild = childNodesByChildrenKeys[0]; this._updateParentsState(firstChild, this._getNodeElement(firstChild)) } this._normalizeIconState($node, childNodesByChildrenKeys.length); if (node.internalFields.expanded) { $nestedNodeContainer.addClass(OPENED_NODE_CONTAINER_CLASS) } } _executeItemRenderAction(itemIndex, itemData, itemElement) { const node = this._getNode(itemElement); this._getItemRenderAction()({ itemElement: itemElement, itemIndex: itemIndex, itemData: itemData, node: this._dataAdapter.getPublicNode(node) }) } _addLeafClass($node) { $node.addClass(IS_LEAF) } _expandEventHandler(e) { const $nodeElement = (0, _renderer.default)(e.currentTarget.parentNode); if (!$nodeElement.hasClass(IS_LEAF)) { this._toggleExpandedState(e.currentTarget, void 0, e) } } _attachExpandEvent() { const expandedEventName = this._getEventNameByOption(this.option("expandEvent")); const $itemsContainer = this._itemContainer(); this._detachExpandEvent($itemsContainer); _events_engine.default.on($itemsContainer, expandedEventName, this._itemSelector(), this._expandEventHandler.bind(this)) } _detachExpandEvent(itemsContainer) { _events_engine.default.off(itemsContainer, ".dxTreeView_expand", this._itemSelector()) } _getEventNameByOption(name) { const event = "click" === name ? _click.name : _double_click.name; return (0, _index.addNamespace)(event, "dxTreeView_expand") } _getNode(identifier) { if (!(0, _type.isDefined)(identifier)) { return null } if (identifier.internalFields) { return identifier } if ((0, _type.isPrimitive)(identifier)) { return this._dataAdapter.getNodeByKey(identifier) } const itemElement = (0, _renderer.default)(identifier).get(0); if (!itemElement) { return null } if (_dom_adapter.default.isElementNode(itemElement)) { return this._getNodeByElement(itemElement) } return this._dataAdapter.getNodeByItem(itemElement) } _getNodeByElement(itemElement) { const $node = (0, _renderer.default)(itemElement).closest(`.${NODE_CLASS}`); const key = this._decodeString($node.attr("data-item-id")); return this._dataAdapter.getNodeByKey(key) } _toggleExpandedState(itemElement, state, e) { const node = this._getNode(itemElement); if (!node) { return (0, _deferred.Deferred)().reject().promise() } if (node.internalFields.disabled) { return (0, _deferred.Deferred)().reject().promise() } const currentState = node.internalFields.expanded; if (currentState === state) { return (0, _deferred.Deferred)().resolve().promise() } if (this._hasChildren(node)) { const $node = this._getNodeElement(node); if ($node.find(`.${NODE_LOAD_INDICATOR_CLASS}:not(.dx-state-invisible)`).length) { return (0, _deferred.Deferred)().reject().promise() } if (!currentState && !this._nodeHasRenderedChildren($node)) { this._createLoadIndicator($node) } } if (!(0, _type.isDefined)(state)) { state = !currentState } this._dataAdapter.toggleExpansion(node.internalFields.key, state); return this._updateExpandedItemsUI(node, state, e) } _nodeHasRenderedChildren($node) { const $nodeContainer = $node.children(`.${NODE_CONTAINER_CLASS}`); return $nodeContainer.not(":empty").length } _getItem($node) { return $node.children(`.${ITEM_CLASS}`).eq(0) } _createLoadIndicator($node) { const $treeviewItem = this._getItem($node); this._createComponent((0, _renderer.default)("<div>").addClass(NODE_LOAD_INDICATOR_CLASS), _load_indicator.default, {}).$element().appendTo($treeviewItem); const $icon = $treeviewItem.children(".dx-treeview-toggle-item-visibility,.dx-treeview-custom-expand-icon"); $icon.hide() } _renderExpanderIcon($node, node, $icon, iconClass) { $icon.appendTo(this._getItem($node)); $icon.addClass(iconClass); if (node.internalFields.disabled) { $icon.addClass("dx-state-disabled") } this._renderToggleItemVisibilityIconClick($icon, node) } _renderDefaultExpanderIcons($node, node) { const $treeViewItem = this._getItem($node); const $icon = (0, _renderer.default)("<div>").addClass("dx-treeview-toggle-item-visibility").appendTo($treeViewItem); if (node.internalFields.expanded) { $icon.addClass("dx-treeview-toggle-item-visibility-opened"); $node.parent().addClass(OPENED_NODE_CONTAINER_CLASS) } if (node.internalFields.disabled) { $icon.addClass("dx-state-disabled") } this._renderToggleItemVisibilityIconClick($icon, node) } _renderCustomExpanderIcons($node, node) { const { expandIcon: expandIcon, collapseIcon: collapseIcon } = this.option(); const $expandIcon = (0, _icon.getImageContainer)(expandIcon ?? collapseIcon); const $collapseIcon = (0, _icon.getImageContainer)(collapseIcon ?? expandIcon); this._renderExpanderIcon($node, node, $expandIcon, "dx-treeview-custom-expand-icon"); this._renderExpanderIcon($node, node, $collapseIcon, "dx-treeview-custom-collapse-icon"); const isNodeExpanded = node.internalFields.expanded; if (isNodeExpanded) { $node.parent().addClass(OPENED_NODE_CONTAINER_CLASS) } this._toggleCustomExpanderIcons($expandIcon, $collapseIcon, isNodeExpanded) } _renderToggleItemVisibilityIconClick($icon, node) { const eventName = (0, _index.addNamespace)(_click.name, this.NAME); _events_engine.default.off($icon, eventName); _events_engine.default.on($icon, eventName, (e => { this._toggleExpandedState(node.internalFields.key, void 0, e); return false })) } _toggleCustomExpanderIcons($expandIcon, $collapseIcon, isNodeExpanded) { $collapseIcon.toggle(isNodeExpanded); $expandIcon.toggle(!isNodeExpanded) } _updateExpandedItemsUI(node, state, e) { const $node = this._getNodeElement(node); const isHiddenNode = !$node.length || state && $node.is(":hidden"); if (this.option("expandNodesRecursive") && isHiddenNode) { const parentNode = this._getNode(node.internalFields.parentKey); if (parentNode) { this._updateExpandedItemsUI(parentNode, state, e) } } if (!this._hasCustomExpanderIcons()) { const $icon = this._getItem($node).children(".dx-treeview-toggle-item-visibility"); $icon.toggleClass("dx-treeview-toggle-item-visibility-opened", state) } else if (this._nodeHasRenderedChildren($node)) { const $item = this._getItem($node); const $childExpandIcons = $item.children(".dx-treeview-custom-expand-icon"); const $childCollapseIcons = $item.children(".dx-treeview-custom-collapse-icon"); this._toggleCustomExpanderIcons($childExpandIcons, $childCollapseIcons, state) } const $nodeContainer = $node.children(`.${NODE_CONTAINER_CLASS}`); const nodeContainerExists = $nodeContainer.length > 0; const completionCallback = (0, _deferred.Deferred)(); if (!state || nodeContainerExists && !$nodeContainer.is(":empty")) { this._animateNodeContainer(node, state, e, completionCallback); return completionCallback.promise() } if (0 === node.internalFields.childrenKeys.length && (this._isVirtualMode() || this._useCustomChildrenLoader())) { this._loadNestedItemsWithUpdate(node, state, e, completionCallback); return completionCallback.promise() } this._renderSublevel($node, node, this._getChildNodes(node)); this._fireContentReadyAction(); this._animateNodeContainer(node, state, e, completionCallback); return completionCallback.promise() } _loadNestedItemsWithUpdate(node, state, e, completionCallback) { const $node = this._getNodeElement(node); this._loadNestedItems(node).done((items => { const actualNodeData = this._getActualNode(node); this._renderSublevel($node, actualNodeData, this._dataAdapter.getNodesByItems(items)); if (!items || !items.length) { completionCallback.resolve(); return } this._fireContentReadyAction(); this._animateNodeContainer(actualNodeData, state, e, completionCallback) })) } _loadNestedItems(node) { if (this._useCustomChildrenLoader()) { const publicNode = this._dataAdapter.getPublicNode(node); return this._loadChildrenByCustomLoader(publicNode).done((newItems => { if (!this._areNodesExists(newItems)) { this._appendItems(newItems) } })) } if (!this._isVirtualMode()) { return (0, _deferred.Deferred)().resolve([]).promise() } this._filter.internal = [this.option("parentIdExpr"), node.internalFields.key]; this._dataSource.filter(this._combineFilter()); return this._dataSource.load().done((newItems => { if (!this._areNodesExists(newItems)) { this._appendItems(newItems) } })) } _areNodesExists(newItems) { const keyOfRootItem = this.keyOf(newItems[0]); const fullData = this._dataAdapter.getFullData(); return !!this._dataAdapter.getNodeByKey(keyOfRootItem, fullData) } _appendItems(newItems) { const { items: items = [] } = this.option(); this.option().items = items.concat(newItems); this._initDataAdapter() } _animateNodeContainer(node, state, e, completionCallback) { const $node = this._getNodeElement(node); const $nodeContainer = $node.children(`.${NODE_CONTAINER_CLASS}`); if (node && completionCallback && 0 === $nodeContainer.length) { completionCallback.resolve() } $nodeContainer.addClass(OPENED_NODE_CONTAINER_CLASS); const nodeHeight = (0, _size.getHeight)($nodeContainer); _animation.fx.stop($nodeContainer, true); _animation.fx.animate($nodeContainer, { type: "custom", duration: this.option("animationEnabled") ? 400 : 0, from: { maxHeight: state ? 0 : nodeHeight }, to: { maxHeight: state ? nodeHeight : 0 }, complete: function() { $nodeContainer.css("maxHeight", "none"); $nodeContainer.toggleClass(OPENED_NODE_CONTAINER_CLASS, state); this.setAria("expanded", state, $node); this.getScrollable().update(); this._fireExpandedStateUpdatedEvent(state, node, e); if (completionCallback) { completionCallback.resolve() } }.bind(this) }) } _fireExpandedStateUpdatedEvent(isExpanded, node, e) { if (!this._hasChildren(node) || this._skipContentReadyAndItemExpanded) { return } const optionName = isExpanded ? "onItemExpanded" : "onItemCollapsed"; if ((0, _type.isDefined)(e)) { this._itemDXEventHandler(e, optionName, { node: this._dataAdapter.getPublicNode(node) }) } else { const target = this._getNodeElement(node); this._itemEventHandler(target, optionName, { event: e, node: this._dataAdapter.getPublicNode(node) }) } } _normalizeIconState($node, hasNewItems) { const $loadIndicator = $node.find(`.${NODE_LOAD_INDICATOR_CLASS}`); if ($loadIndicator.length) { var _LoadIndicator$getIns; null === (_LoadIndicator$getIns = _load_indicator.default.getInstance($loadIndicator)) || void 0 === _LoadIndicator$getIns || _LoadIndicator$getIns.option("visible", false) } const $treeViewItem = this._getItem($node); const $toggleItem = $treeViewItem.children(".dx-treeview-custom-collapse-icon,.dx-treeview-toggle-item-visibility"); if (hasNewItems) { $toggleItem.show(); return } $toggleItem.removeClass("dx-treeview-toggle-item-visibility"); $node.addClass(IS_LEAF) } _emptyMessageContainer() { const scrollable = this.getScrollable(); return scrollable ? (0, _renderer.default)(scrollable.content()) : super._emptyMessageContainer() } _renderContent() { const { items: items } = this.option(); if (items && items.length) { this._contentAlreadyRendered = true } super._renderContent() } _renderSelectAllItem($container) { const { selectAllText: selectAllText, focusStateEnabled: focusStateEnabled } = this.option(); $container = $container || this.$element().find(`.${NODE_CONTAINER_CLASS}`).first(); this._$selectAllItem = (0, _renderer.default)("<div>").addClass("dx-treeview-select-all-item"); const value = this._dataAdapter.isAllSelected(); this._createComponent(this._$selectAllItem, _check_box.default, { value: value, elementAttr: { "aria-label": "Select All" }, text: selectAllText, focusStateEnabled: focusStateEnabled, onValueChanged: this._onSelectAllCheckboxValueChanged.bind(this), onInitialized: _ref => { let { component: component } = _ref; component.registerKeyHandler("enter", (() => { component.option("value", !component.option("value")) })) } }); this._toggleSelectedClass(this._$selectAllItem, value); $container.before(this._$selectAllItem) } _onSelectAllCheckboxValueChanged(args) { this._toggleSelectAll(args); this._fireSelectAllValueChanged(args.value) } _toggleSelectAll(args) { this._dataAdapter.toggleSelectAll(args.value); this._updateItemsUI(); this._fireSelectionChanged() } _renderCheckBox($node, node) { const $checkbox = (0, _renderer.default)("<div>").appendTo($node); this._createComponent($checkbox, _check_box.default, { value: node.internalFields.selected, onValueChanged: this._changeCheckboxValue.bind(this), focusStateEnabled: false, elementAttr: { "aria-label": _message.default.format("CheckState") }, disabled: this._disabledGetter(node) }) } _toggleSelectedClass($node, value) { $node.toggleClass("dx-state-selected", !!value) } _toggleNodeDisabledState(node, state) { const $node = this._getNodeElement(node); const $item = $node.find(`.${ITEM_CLASS}`).eq(0); this._dataAdapter.toggleNodeDisabledState(node.internalFields.key, state); $item.toggleClass("dx-state-disabled", !!state); if (this._showCheckboxes()) { const checkbox = this._getCheckBoxInstance($node); checkbox.option("disabled", !!state) } } _itemOptionChanged(item, property, value) { const node = this._dataAdapter.getNodeByItem(item); if (property === this.option("disabledExpr")) { this._toggleNodeDisabledState(node, value) } } _changeCheckboxValue(e) { const $node = (0, _renderer.default)(e.element).closest(`.${NODE_CLASS}`); const $item = this._getItem($node); const item = this._getItemData($item); const node = this._getNodeByElement($item); const { value: value } = e; if (node && node.internalFields.selected === value) { return } this._updateItemSelection(value, item, e.event) } _isSingleSelection() { const { selectionMode: selectionMode } = this.option(); return "single" === selectionMode } _isRecursiveSelection() { const { selectionMode: selectionMode } = this.option(); return this.option("selectNodesRecursive") && "single" !== selectionMode } _isLastSelectedBranch(publicNode, selectedNodesKeys, deep) { const keyIndex = selectedNodesKeys.indexOf(publicNode.key); if (keyIndex >= 0) { selectedNodesKeys.splice(keyIndex, 1) } if (deep) { (0, _iterator.each)(publicNode.children, ((_, childNode) => { this._isLastSelectedBranch(childNode, selectedNodesKeys, true) })) } if (publicNode.parent) { this._isLastSelectedBranch(publicNode.parent, selectedNodesKeys) } return 0 === selectedNodesKeys.length } _isLastRequired(node) { const selectionRequired = this.option("selectionRequired"); const isSingleMode = this._isSingleSelection(); const selectedNodesKeys = this.getSelectedNodeKeys(); if (!selectionRequired) { return } if (isSingleMode) { return 1 === selectedNodesKeys.length } return this._isLastSelectedBranch(node.internalFields.publicNode, selectedNodesKeys.slice(), true) } _updateItemSelection(value, itemElement, dxEvent) { const node = this._getNode(itemElement); if (!node || false === node.visible) { return false } if (node.internalFields.selected === value) { return true } if (!value && this._isLastRequired(node)) { if (this._showCheckboxes()) { const $node = this._getNodeElement(node); this._getCheckBoxInstance($node).option("value", true) } return false } if (value && this._isSingleSelection()) { const selectedKeys = this.getSelectedNodeKeys(); (0, _iterator.each)(selectedKeys, ((index, key) => { this._dataAdapter.toggleSelection(key, false); this._updateItemsUI(); this._fireItemSelectionChanged(this._getNode(key)) })) } this._dataAdapter.toggleSelection(node.internalFields.key, value); const isAllSelected = this._dataAdapter.isAllSelected(); const needFireSelectAllChanged = this._selectAllEnabled() && this._$selectAllItem.dxCheckBox("instance").option("value") !== isAllSelected; this._updateItemsUI(); this._fireItemSelectionChanged(node, dxEvent); this._fireSelectionChanged(); if (needFireSelectAllChanged) { this._fireSelectAllValueChanged(isAllSelected) } return true } _fireItemSelectionChanged(node, dxEvent) { const initiator = dxEvent || this._findItemElementByItem(node.internalFields.item); const handler = dxEvent ? this._itemDXEventHandler : this._itemEventHandler; handler.call(this, initiator, "onItemSelectionChanged", { node: this._dataAdapter.getPublicNode(node), itemData: node.internalFields.item }) } _getCheckBoxInstance($node) { const $treeViewItem = this._getItem($node); return $treeViewItem.children(".dx-checkbox").dxCheckBox("instance") } _updateItemsUI() { const cache = {}; (0, _iterator.each)(this._dataAdapter.getData(), ((_, node) => { const $node = this._getNodeElement(node, cache); const nodeSelection = node.internalFields.selected; if (!$node.length) { return } this._toggleSelectedClass($node, nodeSelection); this.setAria("selected", nodeSelection, $node); if (this._showCheckboxes()) { this._getCheckBoxInstance($node).option("value", nodeSelection) } })); if (this._selectAllEnabled()) { const selectAllCheckbox = this._$selectAllItem.dxCheckBox("instance"); selectAllCheckbox.option("onValueChanged", void 0); selectAllCheckbox.option("value", this._dataAdapter.isAllSelected()); selectAllCheckbox.option("onValueChanged", this._onSelectAllCheckboxValueChanged.bind(this)) } } _updateParentsState(node, $node) { if (!$node) { return } const parentNode = this._dataAdapter.getNodeByKey(node.internalFields.parentKey); const $parentNode = (0, _renderer.default)($node.parents(`.${NODE_CLASS}`)[0]); if (this._showCheckboxes()) { var _this$_getCheckBoxIns; const parentValue = parentNode.internalFields.selected; null === (_this$_getCheckBoxIns = this._getCheckBoxInstance($parentNode)) || void 0 === _this$_getCheckBoxIns || _this$_getCheckBoxIns.option("value", parentValue); this._toggleSelectedClass($parentNode, parentValue) } if (parentNode.internalFields.parentKey !== this.option("rootValue")) { this._updateParentsState(parentNode, $parentNode) } } _itemEventHandlerImpl(initiator, action, actionArgs) { const $itemElement = (0, _renderer.default)(initiator).closest(`.${NODE_CLASS}`).children(`.${ITEM_CLASS}`); return action((0, _extend.extend)(this._extendActionArgs($itemElement), actionArgs)) } _itemContextMenuHandler(e) { this._createEventHandler("onItemContextMenu", e) } _itemHoldHandler(e) { this._createEventHandler("onItemHold", e) } _createEventHandler(eventName, e) { const node = this._getNodeByElement(e.currentTarget); this._itemDXEventHandler(e, eventName, { node: this._dataAdapter.getPublicNode(node) }) } _itemClass() { return ITEM_CLASS } _itemDataKey() { return ITEM_DATA_KEY } _attachClickEvent() { const $itemContainer = this._itemContainer(); this._detachClickEvent($itemContainer); const { clickEventNamespace: clickEventNamespace, itemSelector: itemSelector, pointerDownEventNamespace: pointerDownEventNamespace, nodeSelector: nodeSelector } = this._getItemClickEventData(); _events_engine.default.on($itemContainer, clickEventNamespace, itemSelector, (e => { if ((0, _renderer.default)(e.target).hasClass("dx-checkbox-icon") || (0, _renderer.default)(e.target).hasClass("dx-checkbox")) { return } this._itemClickHandler(e, (0, _renderer.default)(e.currentTarget)) })); _events_engine.default.on($itemContainer, pointerDownEventNamespace, nodeSelector, (e => { this._itemPointerDownHandler(e) })) } _detachClickEvent(itemsContainer) { const { clickEventNamespace: clickEventNamespace, itemSelector: itemSelector, pointerDownEventNamespace: pointerDownEventNamespace, nodeSelector: nodeSelector } = this._getItemClickEventData(); _events_engine.default.off(itemsContainer, clickEventNamespace, itemSelector); _events_engine.default.off(itemsContainer, pointerDownEventNamespace, nodeSelector) } _getItemClickEventData() { const itemSelector = `.${this._itemClass()}`; const nodeSelector = `.${NODE_CLASS}, .dx-treeview-select-all-item`; const clickEventNamespace = (0, _index.addNamespace)(_click.name, this.NAME); const pointerDownEventNamespace = (0, _index.addNamespace)(_pointer.default.down, this.NAME); return { clickEventNamespace: clickEventNamespace, itemSelector: itemSelector, pointerDownEventNamespace: pointerDownEventNamespace, nodeSelector: nodeSelector } } _itemClick(actionArgs) { const args = actionArgs.args[0]; const target = args.event.target[0] || args.event.target; const link = target.getElementsByClassName("dx-item-url")[0]; if (args.itemData.url && link) { link.click() } } _itemClickHandler(e, $item) { const itemData = this._getItemData($item); const node = this._getNodeByElement($item); this._itemDXEventHandler(e, "onItemClick", { node: this._dataAdapter.getPublicNode(node) }, { beforeExecute: this._itemClick }); if (this.option("selectByClick") && !e.isDefaultPrevented()) { this._updateItemSelection(!node.internalFields.selected, itemData, e) } } _updateSelectionToFirstItem($items, startIndex) { let itemIndex = startIndex; while (itemIndex >= 0) { const $item = (0, _renderer.default)($items[itemIndex]); this._updateItemSelection(true, $item.find(`.${ITEM_CLASS}`).get(0)); itemIndex-- } } _updateSelectionToLastItem($items, startIndex) { const { length: length } = $items; let itemIndex = startIndex; while (itemIndex < length) { const $item = (0, _renderer.default)($items[itemIndex]); this._updateItemSelection(true, $item.find(`.${ITEM_CLASS}`).get(0)); itemIndex++ } } focus() { if (this._selectAllEnabled()) { _events_engine.default.trigger(this._$selectAllItem, "focus"); return } super.focus() } _focusInHandler(e) { this._updateFocusState(e, true); const isSelectAllItem = (0, _renderer.default)(e.target).hasClass("dx-treeview-select-all-item"); if (isSelectAllItem || this.option("focusedElement")) { clearTimeout(this._setFocusedItemTimeout); this._setFocusedItemTimeout = setTimeout((() => { const { focusedElement: focusedElement } = this.option(); const element = isSelectAllItem ? (0, _element.getPublicElement)(this._$selectAllItem) : (0, _renderer.default)(focusedElement); this._setFocusedItem(element) })); return } const $activeItem = this._getActiveItem(); this.option("focusedElement", (0, _element.getPublicElement)($activeItem.closest(`.${NODE_CLASS}`))) } _itemPointerDownHandler(e) { if (!this.option("focusStateEnabled")) { return } const $target = (0, _renderer.default)(e.target).closest(`.${NODE_CLASS}, .dx-treeview-select-all-item`); if (!$target.length) { return } const itemElement = $target.hasClass("dx-state-disabled") ? null : $target; this.option("focusedElement", (0, _element.getPublicElement)(itemElement)) } _findNonDisabledNodes($nodes) { return $nodes.not((function() { return (0, _renderer.default)(this).children(`.${ITEM_CLASS}`).hasClass("dx-state-disabled") })) } _moveFocus(location, e) { const FOCUS_LEFT = this.option("rtlEnabled") ? "right" : "left"; const FOCUS_RIGHT = this.option("rtlEnabled") ? "left" : "right"; this.$element().find(`.${NODE_CONTAINER_CLASS}`).each((function() { _animation.fx.stop(this, true) })); const $items = this._nodeElements(); if (!$items || !$items.length) { return } switch (location) { case "up": { const $prevItem = this._prevItem($items); this.option("focusedElement", (0, _element.getPublicElement)($prevItem)); const prevItemElement = this._getNodeItemElement($prevItem); this.getScrollable().scrollToElement(prevItemElement); if (e.shiftKey && this._showCheckboxes()) { this._updateItemSelection(true, prevItemElement) } break } case "down": { const $nextItem = this._nextItem($items); this.option("focusedElement", (0, _element.getPublicElement)($nextItem)); const nextItemElement = this._getNodeItemElement($nextItem); this.getScrollable().scrollToElement(nextItemElement); if (e.shiftKey && this._showCheckboxes()) { this._updateItemSelection(true, nextItemElement) } break } case "first": { const $firstItem = $items.first(); if (e.shiftKey && this._showCheckboxes()) { this._updateSelectionToFirstItem($items, $items.index(this._prevItem($items))) } this.option("focusedElement", (0, _element.getPublicElement)($firstItem)); this.getScrollable().scrollToElement(this._getNodeItemElement($firstItem)); break } case "last": { const $lastItem = $items.last(); if (e.shiftKey && this._showCheckboxes()) { this._updateSelectionToLastItem($items, $items.index(this._nextItem($items))) } this.option("focusedElement", (0, _element.getPublicElement)($lastItem)); this.getScrollable().scrollToElement(this._getNodeItemElement($lastItem)); break } case FOCUS_RIGHT: this._expandFocusedContainer(); break; case FOCUS_LEFT: this._collapseFocusedContainer(); break; default: super._moveFocus.apply(this, arguments) } } _getNodeItemElement($node) { return $node.find(`.${ITEM_CLASS}`).get(0) } _nodeElements() { return this.$element().find(`.${NODE_CLASS}`).not(":hidden") } _expandFocusedContainer() { const { focusedElement: focusedElement } = this.option(); const $focusedNode = (0, _renderer.default)(focusedElement); if (!$focusedNode.length || $focusedNode.hasClass(IS_LEAF)) { return } const $node = $focusedNode.find(`.${NODE_CONTAINER_CLASS}`).eq(0); if ($node.hasClass(OPENED_NODE_CONTAINER_CLASS)) { const $nextItem = this._nextItem(this._findNonDisabledNodes(this._nodeElements())); this.option("focusedElement", (0, _element.getPublicElement)($nextItem)); this.getScrollable().scrollToElement(this._getNodeItemElement($nextItem)); return } const node = this._getNodeByElement(this._getItem($focusedNode)); this._toggleExpandedState(node, true) } _getClosestNonDisabledNode($node) { do { $node = $node.parent().closest(`.${NODE_CLASS}`) } while ($node.children(".dx-treeview-item.dx-state-disabled").length); return $node } _collapseFocusedContainer() { const { focusedElement: focusedElement } = this.option(); const $focusedNode = (0, _renderer.default)(focusedElement); if (!$focusedNode.length) { return } const nodeElement = $focusedNode.find(`.${NODE_CONTAINER_CLASS}`).eq(0); if (!$focusedNode.hasClass(IS_LEAF) && nodeElement.hasClass(OPENED_NODE_CONTAINER_CLASS)) { const node = this._getNodeByElement(this._getItem($focusedNode)); this._toggleExpandedState(node, false) } else { const collapsedNode = this._getClosestNonDisabledNode($focusedNode); collapsedNode.length && this.option("focusedElement", (0, _element.getPublicElement)(collapsedNode)); this.getScrollable().scrollToElement(this._getNodeItemElement(collapsedNode)) } } _encodeString(value) { return (0, _type.isString)(value) ? encodeURI(value) : value } _decodeString(value) { return (0, _type.isString)(value) ? decodeURI(value) : value } getScrollable() { return this._scrollable } updateDimensions() { const deferred = (0, _deferred.Deferred)(); const scrollable = this.getScrollable(); if (scrollable) { scrollable.update().done((() => { deferred.resolveWith(this) })) } else { deferred.resolveWith(this) } return deferred.promise() } selectItem(itemElement) { return this._updateItemSelection(true, itemElement) } unselectItem(itemElement) { return this._updateItemSelection(false, itemElement) } expandItem(itemElement) { return this._toggleExpandedState(itemElement, true) } collapseItem(itemElement) { return this._toggleExpandedState(itemElement, false) } getNodes() { return this._dataAdapter.getTreeNodes() } getSelectedNodes() { return this.getSelectedNodeKeys().map((key => { const node = this._dataAdapter.getNodeByKey(key); return this._dataAdapter.getPublicNode(node) })) } getSelectedNodeKeys() { return this._dataAdapter.getSelectedNodesKeys() } selectAll() { if (this._selectAllEnabled()) { this._$selectAllItem.dxCheckBox("instance").option("value", true) } else { this._toggleSelectAll({ value: true }) } } unselectAll() { if (this._selectAllEnabled()) { this._$selectAllItem.dxCheckBox("instance").option("value", false) } else { this._toggleSelectAll({ value: false }) } } _allItemsExpandedHandler() { this._skipContentReadyAndItemExpanded = false; this._fireContentReadyAction() } expandAll() { const nodes = this._dataAdapter.getData(); const expandingPromises = []; this._skipContentReadyAndItemExpanded = true; nodes.forEach((node => expandingPromises.push(this._toggleExpandedState(node.internalFields.key, true)))); Promise.allSettled(expandingPromises).then((() => { var _this$_allItemsExpand; return null === (_this$_allItemsExpand = this._allItemsExpandedHandler) || void 0 === _this$_allItemsExpand ? void 0 : _this$_allItemsExpand.call(this) })) } collapseAll() { (0, _iterator.each)(this._dataAdapter.getExpandedNodesKeys(), ((_, key) => { this._toggleExpandedState(key, false) })) } scrollToItem(keyOrItemOrElement) { const node = this._getNode(keyOrItemOrElement); if (!node) { return (0, _deferred.Deferred)().reject().promise() } const nodeKeysToExpand = []; let parentNode = node.internalFields.publicNode.parent; while (null != parentNode) { if (!parentNode.expanded) { nodeKeysToExpand.push(parentNode.key) } parentNode = parentNode.parent } const scrollCallback = (0, _deferred.Deferred)(); this._expandNodes(nodeKeysToExpand.reverse()).always((() => { const $element = this._getNodeElement(node); if ($element && $element.length) { this.scrollToElementTopLeft($element.get(0)); scrollCallback.resolve() } else { scrollCallback.reject() } })); return scrollCallback.promise() } scrollToElementTopLeft(targetElement) { const scrollable = this.getScrollable(); const { scrollDirection: scrollDirection, rtlEnabled: rtlEnabled } = this.option(); const targetLocation = { top: 0, left: 0 }; const relativeOffset = (0, _get_relative_offset.getRelativeOffset)(_consts.SCROLLABLE_CONTENT_CLASS, targetElement); if (scrollDirection !== _consts.DIRECTION_VERTICAL) { const containerElement = (0, _renderer.default)(scrollable.container()).get(0); targetLocation.left = rtlEnabled ? relativeOffset.left + targetElement.offsetWidth - containerElement.clientWidth : relativeOffset.left } if (scrollDirection !== _consts.DIRECTION_HORIZONTAL) { targetLocation.top = relativeOffset.top } scrollable.scrollTo(targetLocation) } _expandNodes(keysToExpand) { if (!keysToExpand || 0 === keysToExpand.length) { return (0, _deferred.Deferred)().resolve().promise() } const resultCallback = (0, _deferred.Deferred)(); const callbacksByNodes = keysToExpand.map((key => this.expandItem(key))); _deferred.when.apply(_renderer.default, callbacksByNodes).done((() => resultCallback.resolve())).fail((() => resultCallback.reject())); return resultCallback.promise() } _dispose() { super._dispose(); clearTimeout(this._setFocusedItemTimeout); this._allItemsExpandedHandler = null } } exports.default = TreeViewBase }, 66592: /*!*******************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/ui/tree_view/m_tree_view.search.js ***! \*******************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _component_registrator = _interopRequireDefault(__webpack_require__( /*! ../../../core/component_registrator */ 92848)); var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../../core/renderer */ 64553)); var _extend = __webpack_require__( /*! ../../../core/utils/extend */ 52576); var _text_box = _interopRequireDefault(__webpack_require__( /*! ../../../ui/text_box */ 20780)); var _ui = _interopRequireDefault(__webpack_require__( /*! ../../../ui/widget/ui.search_box_mixin */ 44690)); var _m_tree_view = _interopRequireDefault(__webpack_require__( /*! ./m_tree_view.base */ 61897)); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } _ui.default.setEditorClass(_text_box.default); const TreeViewSearch = _m_tree_view.default.inherit(_ui.default).inherit({ _addWidgetPrefix: className => `dx-treeview-${className}`, _optionChanged(args) { switch (args.name) { case "searchValue": if (this._showCheckboxes() && this._isRecursiveSelection()) { this._removeSelection() } this._initDataAdapter(); this._updateSearch(); this._repaintContainer(); this.option("focusedElement", null); break; case "searchExpr": this._initDataAdapter(); this.repaint(); break; case "searchMode": this.option("expandNodesRecursive") ? this._updateDataAdapter() : this._initDataAdapter(); this.repaint(); break; default: this.callBase(args) } }, _updateDataAdapter() { this._setOptionWithoutOptionChange("expandNodesRecursive", false); this._initDataAdapter(); this._setOptionWithoutOptionChange("expandNodesRecursive", true) }, _getDataAdapterOptions() { return (0, _extend.extend)(this.callBase(), { searchValue: this.option("searchValue"), searchMode: this.option("searchMode") || "contains", searchExpr: this.option("searchExpr") }) }, _getNodeContainer() { return this.$element().find(".dx-treeview-node-container").first() }, _updateSearch() { if (this._searchEditor) { const editorOptions = this._getSearchEditorOptions(); this._searchEditor.option(editorOptions) } }, _repaintContainer() { const $container = this._getNodeContainer(); let rootNodes; if ($container.length) { $container.empty(); rootNodes = this._dataAdapter.getRootNodes(); this._renderEmptyMessage(rootNodes); this._renderItems($container, rootNodes); this._fireContentReadyAction() } }, _focusTarget() { return this._itemContainer(this.option("searchEnabled")) }, _cleanItemContainer() { this.$element().empty() }, _itemContainer(isSearchMode, selectAllEnabled) { selectAllEnabled ?? (selectAllEnabled = this._selectAllEnabled()); if (selectAllEnabled) { return this._getNodeContainer() } if (this._scrollable && isSearchMode) { return (0, _renderer.default)(this._scrollable.content()) } return this.callBase() }, _addWidgetClass() { this.$element().addClass(this._widgetClass()) }, _clean() { this.callBase(); this._removeSearchBox() } }); (0, _component_registrator.default)("dxTreeView", TreeViewSearch); exports.default = TreeViewSearch }, 67618: /*!*******************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/ui/validation/m_default_adapter.js ***! \*******************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _class = (e = __webpack_require__( /*! ../../../core/class */ 55620), e && e.__esModule ? e : { default: e }); var e; class DefaultAdapter extends(_class.default.inherit({})) { ctor(editor, validator) { this.editor = editor; this.validator = validator; this.validationRequestsCallbacks = []; const handler = args => { this.validationRequestsCallbacks.forEach((item => item(args))) }; editor.validationRequest.add(handler); editor.on("disposing", (() => { editor.validationRequest.remove(handler) })) } getValue() { return this.editor.option("value") } getCurrentValidationError() { return this.editor.option("validationError") } bypass() { return this.editor.option("disabled") } applyValidationResults(params) { this.editor.option({ validationErrors: params.brokenRules, validationStatus: params.status }) } reset() { this.editor.clear() } focus() { this.editor.focus() } } exports.default = DefaultAdapter }, 78698: /*!*************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/utils/memoize.js ***! \*************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.memoize = void 0; var _common = __webpack_require__( /*! ../../core/utils/common */ 17781); const compareByReference = (args, lastArgs) => args.length === lastArgs.length && !Object.keys(args).some((key => args[key] !== lastArgs[key])); const compareByValue = (args, lastArgs) => (0, _common.equalByValue)(args, lastArgs, { maxDepth: 4 }); const MEMOIZE_DEFAULT_OPTIONS = { compareType: "reference" }; exports.memoize = function(func) { let { compareType: compareType } = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : MEMOIZE_DEFAULT_OPTIONS; let cachedFunc = null; return function() { for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) { args[_key2] = arguments[_key2] } if (!cachedFunc) { const firstResult = func(...args); cachedFunc = ((firstArgs, firstResult, originFunc, compareFunc) => { let lastArgs = firstArgs; let lastResult = firstResult; return function() { for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { args[_key] = arguments[_key] } const argsEquals = compareFunc(args, lastArgs); if (argsEquals) { return lastResult } lastArgs = args; lastResult = originFunc(...lastArgs); return lastResult } })(args, firstResult, func, "reference" === compareType ? compareByReference : compareByValue); return firstResult } return cachedFunc(...args) } } }, 24491: /*!********************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/utils/toMilliseconds.js ***! \********************************************************************************/ function(__unused_webpack_module, exports) { Object.defineProperty(exports, "__esModule", { value: true }); exports.toMilliseconds = function(value) { return timeIntervals[value] }; const timeIntervals = { millisecond: 1, second: 1e3, minute: 6e4, hour: 36e5, day: 864e5, week: 6048e5, month: 2592e6, quarter: 7776e6, year: 31536e6 } }, 39903: /*!*********************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/utils/type_conversion.js ***! \*********************************************************************************/ function(__unused_webpack_module, exports) { Object.defineProperty(exports, "__esModule", { value: true }); exports.toNumber = function(attribute) { return attribute ? Number(attribute.replace("px", "")) : 0 } }, 20258: /*!*************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/utils/version.js ***! \*************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.assertDevExtremeVersion = function(packageName, version) { assertedVersions.push({ packageName: packageName, version: version }) }; exports.assertedVersionsCompatible = function(currentVersion) { const mismatchingVersions = assertedVersions.filter((assertedVersion => { return !(versionA = parseVersion(assertedVersion.version), versionB = currentVersion, versionA.major === versionB.major && versionA.minor === versionB.minor && versionA.patch === versionB.patch); var versionA, versionB })); if (mismatchingVersions.length) { _errors.default.log("W0023", (assertedVersionList = [{ packageName: "devextreme", version: stringifyVersion(currentVersion) }, ...mismatchingVersions], assertedVersionList.map((assertedVersion => `${assertedVersion.packageName}: ${assertedVersion.version}`)).join("\n"))); return false } var assertedVersionList; return true }; exports.clearAssertedVersions = function() {}; exports.getPreviousMajorVersion = function(_ref) { let { major: major, minor: minor, patch: patch } = _ref; const previousMajorVersion = minor === MIN_MINOR_VERSION ? { major: major - 1, minor: MAX_MINOR_VERSION, patch: patch } : { major: major, minor: minor - 1, patch: patch }; return previousMajorVersion }; exports.parseVersion = parseVersion; exports.stringifyVersion = stringifyVersion; var _errors = (e = __webpack_require__( /*! ../../core/errors */ 87129), e && e.__esModule ? e : { default: e }); var e; const MAX_MINOR_VERSION = 2; const MIN_MINOR_VERSION = 1; const assertedVersions = []; const VERSION_SPLITTER = "."; function stringifyVersion(version) { const { major: major, minor: minor, patch: patch } = version; return [major, minor, patch].join(VERSION_SPLITTER) } function parseVersion(version) { const [major, minor, patch] = version.split(".").map(Number); return { major: major, minor: minor, patch: patch } } }, 34506: /*!**********************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/viz/core/m_base_widget.js ***! \**********************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _events_engine = _interopRequireDefault(__webpack_require__( /*! ../../../common/core/events/core/events_engine */ 92774)); var _devices = _interopRequireDefault(__webpack_require__( /*! ../../../core/devices */ 65951)); var _dom_adapter = _interopRequireDefault(__webpack_require__( /*! ../../../core/dom_adapter */ 64960)); var _dom_component = _interopRequireDefault(__webpack_require__( /*! ../../../core/dom_component */ 97832)); var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../../core/renderer */ 64553)); var _common = __webpack_require__( /*! ../../../core/utils/common */ 17781); var _deferred = __webpack_require__( /*! ../../../core/utils/deferred */ 87739); var _extend = __webpack_require__( /*! ../../../core/utils/extend */ 52576); var _iterator = __webpack_require__( /*! ../../../core/utils/iterator */ 21274); var _size = __webpack_require__( /*! ../../../core/utils/size */ 57653); var _type = __webpack_require__( /*! ../../../core/utils/type */ 11528); var _window = __webpack_require__( /*! ../../../core/utils/window */ 3104); var _base_theme_manager = __webpack_require__( /*! ../../../viz/core/base_theme_manager */ 71671); var _base_widget = __webpack_require__( /*! ../../../viz/core/base_widget.utils */ 95943); var _errors_warnings = _interopRequireDefault(__webpack_require__( /*! ../../../viz/core/errors_warnings */ 38355)); var _helpers = __webpack_require__( /*! ../../../viz/core/helpers */ 71115); var _layout = _interopRequireDefault(__webpack_require__( /*! ../../../viz/core/layout */ 48874)); var _renderer2 = __webpack_require__( /*! ../../../viz/core/renderers/renderer */ 63022); var _utils = __webpack_require__( /*! ../../../viz/core/utils */ 28779); var _utils2 = __webpack_require__( /*! ../../../viz/utils */ 2225); var _m_charts = _interopRequireDefault(__webpack_require__( /*! ../../common/m_charts */ 55351)); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } const { log: log } = _errors_warnings.default; const baseOptionMethod = _dom_component.default.prototype.option; function getTrue() { return true } function getFalse() { return false } function defaultOnIncidentOccurred(e) { if (!e.component._eventsStrategy.hasEvent("incidentOccurred")) { log.apply(null, [e.target.id].concat(e.target.args || [])) } } function pickPositiveValue(values) { return values.reduce(((result, value) => value > 0 && !result ? value : result), 0) } function callForEach(functions) { functions.forEach((c => c())) } const isServerSide = !(0, _window.hasWindow)(); const baseWidget = isServerSide ? function() { const emptyComponentConfig = { _initTemplates() {}, ctor(element, options) { this.callBase(element, options); const sizedElement = _dom_adapter.default.createElement("div"); const width = options && (0, _type.isNumeric)(options.width) ? `${options.width}px` : "100%"; const height = options && (0, _type.isNumeric)(options.height) ? `${options.height}px` : `${this._getDefaultSize().height}px`; _dom_adapter.default.setStyle(sizedElement, "width", width); _dom_adapter.default.setStyle(sizedElement, "height", height); _dom_adapter.default.setClass(sizedElement, "dx-sized-element", false); _dom_adapter.default.insertElement(element, sizedElement) } }; const EmptyComponent = _dom_component.default.inherit(emptyComponentConfig); const originalInherit = EmptyComponent.inherit; EmptyComponent.inherit = function(config) { Object.keys(config).forEach((field => { if ((0, _type.isFunction)(config[field]) && "_" !== field.substr(0, 1) && "option" !== field || "_dispose" === field || "_optionChanged" === field) { config[field] = _common.noop } })); return originalInherit.call(this, config) }; return EmptyComponent }() : _dom_component.default.inherit({ _eventsMap: { onIncidentOccurred: { name: "incidentOccurred", actionSettings: { excludeValidators: ["disabled"] } }, onDrawn: { name: "drawn", actionSettings: { excludeValidators: ["disabled"] } } }, _getDefaultOptions() { return (0, _extend.extend)(this.callBase(), { onIncidentOccurred: defaultOnIncidentOccurred }) }, _useLinks: true, _init() { this._$element.children(".dx-sized-element").remove(); this._graphicObjects = {}; this.callBase(...arguments); this._changesLocker = 0; this._optionChangedLocker = 0; this._asyncFirstDrawing = true; this._changes = (0, _helpers.changes)(); this._suspendChanges(); this._themeManager = this._createThemeManager(); this._themeManager.setCallback((() => { this._requestChange(this._themeDependentChanges) })); this._renderElementAttributes(); this._initRenderer(); const useLinks = this._useLinks; if (useLinks) { this._renderer.root.enableLinks().virtualLink("core").virtualLink("peripheral") } this._renderVisibilityChange(); this._attachVisibilityChangeHandlers(); this._toggleParentsScrollSubscription(this._isVisible()); this._initEventTrigger(); this._incidentOccurred = (0, _base_widget.createIncidentOccurred)(this.NAME, this._eventTrigger); this._layout = new _layout.default; if (useLinks) { this._renderer.root.linkAfter("core") } this._initPlugins(); this._initCore(); if (useLinks) { this._renderer.root.linkAfter() } this._change(this._initialChanges) }, _createThemeManager() { return new _base_theme_manager.BaseThemeManager(this._getThemeManagerOptions()) }, _getThemeManagerOptions() { return { themeSection: this._themeSection, fontFields: this._fontFields } }, _initialChanges: ["LAYOUT", "RESIZE_HANDLER", "THEME", "DISABLED"], _initPlugins() { (0, _iterator.each)(this._plugins, ((_, plugin) => { plugin.init.call(this) })) }, _disposePlugins() { (0, _iterator.each)(this._plugins.slice().reverse(), ((_, plugin) => { plugin.dispose.call(this) })) }, _change(codes) { this._changes.add(codes) }, _suspendChanges() { this._changesLocker += 1 }, _resumeChanges() { if (0 === --this._changesLocker && this._changes.count() > 0 && !this._applyingChanges) { this._renderer.lock(); this._applyingChanges = true; this._applyChanges(); this._changes.reset(); this._applyingChanges = false; this._changesApplied(); this._renderer.unlock(); if (this._optionsQueue) { this._applyQueuedOptions() } this.resolveItemsDeferred(this._legend ? [this._legend] : []); this._optionChangedLocker += 1; this._notify(); this._optionChangedLocker -= 1 } }, resolveItemsDeferred(items) { this._resolveDeferred(this._getTemplatesItems(items)) }, _collectTemplatesFromItems: items => items.reduce(((prev, i) => ({ items: prev.items.concat(i.getTemplatesDef()), groups: prev.groups.concat(i.getTemplatesGroups()) })), { items: [], groups: [] }), _getTemplatesItems(items) { const elements = this._collectTemplatesFromItems(items); const extraItems = this._getExtraTemplatesItems(); return { items: extraItems.items.concat(elements.items), groups: extraItems.groups.concat(elements.groups), launchRequest: [extraItems.launchRequest], doneRequest: [extraItems.doneRequest] } }, _getExtraTemplatesItems: () => ({ items: [], groups: [], launchRequest: () => {}, doneRequest: () => {} }), _resolveDeferred(_ref) { let { items: items, launchRequest: launchRequest, doneRequest: doneRequest, groups: groups } = _ref; this._setGroupsVisibility(groups, "hidden"); if (this._changesApplying) { this._changesApplying = false; callForEach(doneRequest); return } let syncRendering = true; _deferred.when.apply(this, items).done((() => { var _groups$; const isGroupInDom = !(null !== (_groups$ = groups[0]) && void 0 !== _groups$ && _groups$.element) || !!(0, _renderer.default)(groups[0].element.closest("svg")).length; if (!isGroupInDom) { return } if (syncRendering) { this._setGroupsVisibility(groups, "visible"); return } callForEach(launchRequest); this._changesApplying = true; const changes = ["LAYOUT", "FULL_RENDER"]; if (this._asyncFirstDrawing) { changes.push("FORCE_FIRST_DRAWING"); this._asyncFirstDrawing = false } else { changes.push("FORCE_DRAWING") } this._requestChange(changes); this._setGroupsVisibility(groups, "visible") })); syncRendering = false }, _setGroupsVisibility(groups, visibility) { groups.forEach((g => g.attr({ visibility: visibility }))) }, _applyQueuedOptions() { const queue = this._optionsQueue; this._optionsQueue = null; this.beginUpdate(); (0, _iterator.each)(queue, ((_, action) => { action() })); this.endUpdate() }, _requestChange(codes) { this._suspendChanges(); this._change(codes); this._resumeChanges() }, _applyChanges() { const changes = this._changes; const order = this._totalChangesOrder; const changesOrderLength = order.length; for (let i = 0; i < changesOrderLength; i += 1) { if (changes.has(order[i])) { this[`_change_${order[i]}`]() } } }, _optionChangesOrder: ["EVENTS", "THEME", "RENDERER", "RESIZE_HANDLER"], _layoutChangesOrder: ["ELEMENT_ATTR", "CONTAINER_SIZE", "LAYOUT"], _customChangesOrder: ["DISABLED"], _change_EVENTS() { this._eventTrigger.applyChanges() }, _change_THEME() { this._setThemeAndRtl() }, _change_RENDERER() { this._setRendererOptions() }, _change_RESIZE_HANDLER() { this._setupResizeHandler() }, _change_ELEMENT_ATTR() { this._renderElementAttributes(); this._change(["CONTAINER_SIZE"]) }, _change_CONTAINER_SIZE() { this._updateSize() }, _change_LAYOUT() { this._setContentSize() }, _change_DISABLED() { const renderer = this._renderer; const { root: root } = renderer; if (this.option("disabled")) { this._initDisabledState = root.attr("pointer-events"); root.attr({ "pointer-events": "none", filter: renderer.getGrayScaleFilter().id }) } else if ("none" === root.attr("pointer-events")) { root.attr({ "pointer-events": (0, _type.isDefined)(this._initDisabledState) ? this._initDisabledState : null, filter: null }) } }, _themeDependentChanges: ["RENDERER"], _initRenderer() { const rawCanvas = this._calculateRawCanvas(); this._canvas = (0, _utils2.floorCanvasDimensions)(rawCanvas); this._renderer = new _renderer2.Renderer({ cssClass: `${this._rootClassPrefix} ${this._rootClass}`, pathModified: this.option("pathModified"), container: this._$element[0] }); this._renderer.resize(this._canvas.width, this._canvas.height) }, _disposeRenderer() { this._renderer.dispose() }, _disposeGraphicObjects() { Object.keys(this._graphicObjects).forEach((id => { this._graphicObjects[id].dispose() })); this._graphicObjects = null }, _getAnimationOptions: _common.noop, render() { this._requestChange(["CONTAINER_SIZE"]); const visible = this._isVisible(); this._toggleParentsScrollSubscription(visible); !visible && this._stopCurrentHandling() }, _toggleParentsScrollSubscription(subscribe) { let $parents = (0, _renderer.default)(this._renderer.root.element).parents(); if ("generic" === _devices.default.real().platform) { $parents = $parents.add((0, _window.getWindow)()) } this._proxiedTargetParentsScrollHandler = this._proxiedTargetParentsScrollHandler || function() { this._stopCurrentHandling() }.bind(this); _events_engine.default.off((0, _renderer.default)("").add(this._$prevRootParents), "scroll.viz_widgets", this._proxiedTargetParentsScrollHandler); if (subscribe) { _events_engine.default.on($parents, "scroll.viz_widgets", this._proxiedTargetParentsScrollHandler); this._$prevRootParents = $parents } }, _stopCurrentHandling: _common.noop, _dispose() { if (this._disposed) { return } this.callBase(...arguments); this._toggleParentsScrollSubscription(false); this._removeResizeHandler(); this._layout.dispose(); this._eventTrigger.dispose(); this._disposeCore(); this._disposePlugins(); this._disposeGraphicObjects(); this._disposeRenderer(); this._themeManager.dispose(); this._themeManager = null; this._renderer = null; this._eventTrigger = null }, _initEventTrigger() { this._eventTrigger = (0, _base_widget.createEventTrigger)(this._eventsMap, ((name, actionSettings) => this._createActionByOption(name, actionSettings))) }, _calculateRawCanvas() { const size = this.option("size") || {}; const margin = this.option("margin") || {}; const defaultCanvas = this._getDefaultSize() || {}; const getSizeOfSide = (size, side, getter) => { if ((value = size[side], (0, _type.isDefined)(value) && value > 0) || !(0, _window.hasWindow)()) { return 0 } var value; const elementSize = getter(this._$element); return elementSize <= 1 ? 0 : elementSize }; const elementWidth = getSizeOfSide(size, "width", (x => (0, _size.getWidth)(x))); const elementHeight = getSizeOfSide(size, "height", (x => (0, _size.getHeight)(x))); let canvas = { width: size.width <= 0 ? 0 : pickPositiveValue([size.width, elementWidth, defaultCanvas.width]), height: size.height <= 0 ? 0 : pickPositiveValue([size.height, elementHeight, defaultCanvas.height]), left: pickPositiveValue([margin.left, defaultCanvas.left]), top: pickPositiveValue([margin.top, defaultCanvas.top]), right: pickPositiveValue([margin.right, defaultCanvas.right]), bottom: pickPositiveValue([margin.bottom, defaultCanvas.bottom]) }; if (canvas.width - canvas.left - canvas.right <= 0 || canvas.height - canvas.top - canvas.bottom <= 0) { canvas = { width: 0, height: 0 } } return canvas }, _updateSize() { const rawCanvas = this._calculateRawCanvas(); if ((0, _utils2.areCanvasesDifferent)(this._canvas, rawCanvas) || this.__forceRender) { this._canvas = (0, _utils2.floorCanvasDimensions)(rawCanvas); this._recreateSizeDependentObjects(true); this._renderer.resize(this._canvas.width, this._canvas.height); this._change(["LAYOUT"]) } }, _recreateSizeDependentObjects: _common.noop, _getMinSize: () => [0, 0], _getAlignmentRect: _common.noop, _setContentSize() { const canvas = this._canvas; const layout = this._layout; let rect = canvas.width > 0 && canvas.height > 0 ? [canvas.left, canvas.top, canvas.width - canvas.right, canvas.height - canvas.bottom] : [0, 0, 0, 0]; rect = layout.forward(rect, this._getMinSize()); const nextRect = this._applySize(rect) || rect; layout.backward(nextRect, this._getAlignmentRect() || nextRect) }, _getOption(name, isScalar) { const theme = this._themeManager.theme(name); const option = this.option(name); return isScalar ? void 0 !== option ? option : theme : (0, _extend.extend)(true, {}, theme, option) }, _setupResizeHandler() { const redrawOnResize = (0, _utils.parseScalar)(this._getOption("redrawOnResize", true), true); if (this._disposeResizeHandler) { this._removeResizeHandler() } this._disposeResizeHandler = (0, _base_widget.createResizeHandler)(this._$element[0], redrawOnResize, (() => this._requestChange(["CONTAINER_SIZE"]))) }, _removeResizeHandler() { if (this._disposeResizeHandler) { this._disposeResizeHandler(); this._disposeResizeHandler = null } }, _onBeginUpdate: _common.noop, beginUpdate() { if (this._initialized && this._isUpdateAllowed()) { this._onBeginUpdate(); this._suspendChanges() } this.callBase(...arguments); return this }, endUpdate() { this.callBase(); this._isUpdateAllowed() && this._resumeChanges(); return this }, option(name) { if (this._initialized && this._applyingChanges && (arguments.length > 1 || (0, _type.isObject)(name))) { this._optionsQueue = this._optionsQueue || []; this._optionsQueue.push(this._getActionForUpdating(arguments)) } else { return baseOptionMethod.apply(this, arguments) } }, _getActionForUpdating(args) { return () => { baseOptionMethod.apply(this, args) } }, _clean: _common.noop, _render: _common.noop, _optionChanged(arg) { if (this._optionChangedLocker) { return } const partialChanges = this.getPartialChangeOptionsName(arg); let changes = []; if (partialChanges.length > 0) { partialChanges.forEach((pc => changes.push(this._partialOptionChangesMap[pc]))) } else { changes.push(this._optionChangesMap[arg.name]) } changes = changes.filter((c => !!c)); if (this._eventTrigger.change(arg.name)) { this._change(["EVENTS"]) } else if (changes.length > 0) { this._change(changes) } else { this.callBase.apply(this, arguments) } }, _notify: _common.noop, _changesApplied: _common.noop, _optionChangesMap: { size: "CONTAINER_SIZE", margin: "CONTAINER_SIZE", redrawOnResize: "RESIZE_HANDLER", theme: "THEME", rtlEnabled: "THEME", encodeHtml: "THEME", elementAttr: "ELEMENT_ATTR", disabled: "DISABLED" }, _partialOptionChangesMap: {}, _partialOptionChangesPath: {}, getPartialChangeOptionsName(changedOption) { const { fullName: fullName } = changedOption; const sections = fullName.split(/[.]/); const { name: name } = changedOption; const { value: value } = changedOption; const options = this._partialOptionChangesPath[name]; const partialChangeOptionsName = []; if (options) { if (true === options) { partialChangeOptionsName.push(name) } else { options.forEach((op => { fullName.indexOf(op) >= 0 && partialChangeOptionsName.push(op) })); if (1 === sections.length) { if ("object" === (0, _type.type)(value)) { this._addOptionsNameForPartialUpdate(value, options, partialChangeOptionsName) } else if ("array" === (0, _type.type)(value)) { if (value.length > 0 && value.every((item => this._checkOptionsForPartialUpdate(item, options)))) { value.forEach((item => { this._addOptionsNameForPartialUpdate(item, options, partialChangeOptionsName) })) } } } } } return partialChangeOptionsName.filter(((value, index, self) => self.indexOf(value) === index)) }, _checkOptionsForPartialUpdate: (optionObject, options) => !Object.keys(optionObject).some((key => -1 === options.indexOf(key))), _addOptionsNameForPartialUpdate(optionObject, options, partialChangeOptionsName) { const optionKeys = Object.keys(optionObject); if (this._checkOptionsForPartialUpdate(optionObject, options)) { optionKeys.forEach((key => options.indexOf(key) > -1 && partialChangeOptionsName.push(key))) } }, _visibilityChanged() { this.render() }, _setThemeAndRtl() { this._themeManager.setTheme(this.option("theme"), this.option("rtlEnabled")) }, _getRendererOptions() { return { rtl: this.option("rtlEnabled"), encodeHtml: this.option("encodeHtml"), animation: this._getAnimationOptions() } }, _setRendererOptions() { this._renderer.setOptions(this._getRendererOptions()) }, svg() { return this._renderer.svg() }, getSize() { const canvas = this._canvas || {}; return { width: canvas.width, height: canvas.height } }, isReady: getFalse, _dataIsReady: getTrue, _resetIsReady() { this.isReady = getFalse }, _renderGraphicObjects() { const renderer = this._renderer; const graphics = _m_charts.default.getGraphicObjects(); Object.keys(graphics).forEach((id => { if (!this._graphicObjects[id]) { const { type: type, colors: colors, rotationAngle: rotationAngle, template: template, width: width, height: height } = graphics[id]; switch (type) { case "linear": this._graphicObjects[id] = renderer.linearGradient(colors, id, rotationAngle); break; case "radial": this._graphicObjects[id] = renderer.radialGradient(colors, id); break; case "pattern": this._graphicObjects[id] = renderer.customPattern(id, this._getTemplate(template), width, height) } } })) }, _drawn() { this.isReady = getFalse; if (this._dataIsReady()) { this._renderer.onEndAnimation((() => { this.isReady = getTrue })) } this._eventTrigger("drawn", {}) } }); exports.default = baseWidget; (0, _helpers.replaceInherit)(baseWidget) }, 12638: /*!****************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/viz/core/themes/fluent/index.js ***! \****************************************************************************************/ function(__unused_webpack_module, exports) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; exports.default = [{ baseThemeName: "material.blue.light", theme: { name: "fluent.blue.light" } }, { baseThemeName: "fluent.blue.light", theme: { name: "fluent.blue.light.compact" } }, { baseThemeName: "fluent.blue.light", theme: { name: "fluent.saas.light" } }, { baseThemeName: "fluent.saas.light", theme: { name: "fluent.saas.light.compact" } }, { baseThemeName: "material.blue.dark", theme: { name: "fluent.blue.dark" } }, { baseThemeName: "fluent.blue.dark", theme: { name: "fluent.blue.dark.compact" } }, { baseThemeName: "fluent.blue.dark", theme: { name: "fluent.saas.dark" } }, { baseThemeName: "fluent.saas.dark", theme: { name: "fluent.saas.dark.compact" } }] }, 58208: /*!*******************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/viz/core/themes/generic/carmine.js ***! \*******************************************************************************************/ function(__unused_webpack_module, exports) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; exports.default = [{ baseThemeName: "generic.light", theme: { name: "generic.carmine", defaultPalette: "Carmine", backgroundColor: "#fff", primaryTitleColor: "#333", secondaryTitleColor: "#8899a8", gridColor: "#dee1e3", axisColor: "#707070", export: { backgroundColor: "#fff", font: { color: "#333" }, button: { default: { color: "#333", borderColor: "#b1b7bd", backgroundColor: "#fff" }, hover: { color: "#333", borderColor: "#b1b7bd", backgroundColor: "#faf2f0" }, focus: { color: "#333", borderColor: "#6d7781", backgroundColor: "#faf2f0" }, active: { color: "#333", borderColor: "#6d7781", backgroundColor: "#f5e7e4" } } }, legend: { font: { color: "#707070" } }, tooltip: { color: "#fff", border: { color: "#dee1e3" }, font: { color: "#333" } }, "chart:common": { commonSeriesSettings: { label: { border: { color: "#dee1e3" } } } }, "chart:common:annotation": { font: { color: "#333" }, border: { color: "#dee1e3" }, color: "#fff" }, chart: { commonPaneSettings: { border: { color: "#dee1e3" } }, commonAxisSettings: { breakStyle: { color: "#c1c5c7" } } }, rangeSelector: { scale: { breakStyle: { color: "#c1c5c7" }, tick: { opacity: .12 } }, selectedRangeColor: "#f05b41", sliderMarker: { color: "#f05b41" }, sliderHandle: { color: "#f05b41", opacity: .5 } }, sparkline: { pointColor: "#fff", minColor: "#f0ad4e", maxColor: "#f74d61" }, treeMap: { group: { color: "#dee1e3", label: { font: { color: "#8899a8" } } } }, bullet: { color: "#f05b41" }, gauge: { valueIndicators: { rangebar: { color: "#f05b41" }, textcloud: { color: "#f05b41" } } } } }, { baseThemeName: "generic.carmine", theme: { name: "generic.carmine.compact" } }] }, 2611: /*!********************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/viz/core/themes/generic/contrast.js ***! \********************************************************************************************/ function(__unused_webpack_module, exports) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; const WHITE = "#ffffff"; const BLACK = "#000000"; exports.default = [{ baseThemeName: "generic.light", theme: { name: "generic.contrast", defaultPalette: "Bright", font: { color: WHITE }, backgroundColor: BLACK, primaryTitleColor: WHITE, secondaryTitleColor: WHITE, gridColor: WHITE, axisColor: WHITE, export: { backgroundColor: BLACK, font: { color: WHITE }, button: { default: { color: WHITE, borderColor: WHITE, backgroundColor: BLACK }, hover: { color: WHITE, borderColor: WHITE, backgroundColor: "#cf00d7" }, focus: { color: WHITE, borderColor: "#cf00d7", backgroundColor: BLACK }, active: { color: BLACK, borderColor: WHITE, backgroundColor: WHITE } }, borderColor: WHITE, menuButtonColor: BLACK, activeBackgroundColor: WHITE, activeColor: BLACK, selectedBorderColor: "#cf00da", selectedColor: "#cf00da", shadowColor: "none" }, tooltip: { border: { color: WHITE }, font: { color: WHITE }, color: BLACK }, "chart:common": { commonSeriesSettings: { valueErrorBar: { color: WHITE }, hoverStyle: { hatching: { opacity: .5 } }, selectionStyle: { hatching: { opacity: .35 } }, label: { font: { color: WHITE }, border: { color: WHITE } } } }, "chart:common:axis": { constantLineStyle: { color: WHITE } }, "chart:common:annotation": { font: { color: WHITE }, border: { color: WHITE }, color: BLACK }, chart: { commonSeriesSettings: {}, crosshair: { color: "#cf00d7" }, commonPaneSettings: { backgroundColor: BLACK, border: { color: WHITE } }, scrollBar: { color: WHITE }, commonAxisSettings: { breakStyle: { color: "#cf00d7" } }, zoomAndPan: { dragBoxStyle: { color: WHITE, opacity: .7 } } }, pie: { commonSeriesSettings: { pie: { hoverStyle: { hatching: { opacity: .5 } }, selectionStyle: { hatching: { opacity: .35 } } }, doughnut: { hoverStyle: { hatching: { opacity: .5 } }, selectionStyle: { hatching: { opacity: .35 } } }, donut: { hoverStyle: { hatching: { opacity: .5 } }, selectionStyle: { hatching: { opacity: .35 } } } } }, gauge: { rangeContainer: { backgroundColor: WHITE }, valueIndicators: { _default: { color: WHITE }, rangebar: { color: WHITE, backgroundColor: BLACK }, twocolorneedle: { secondColor: WHITE }, trianglemarker: { color: WHITE }, textcloud: { color: WHITE, text: { font: { color: BLACK } } } } }, barGauge: { backgroundColor: "#3c3c3c" }, rangeSelector: { scale: { tick: { color: WHITE, opacity: .4 }, minorTick: { color: WHITE, opacity: .12 }, breakStyle: { color: "#cf00d7" } }, selectedRangeColor: "#cf00da", sliderMarker: { color: "#cf00da" }, sliderHandle: { color: "#cf00da", opacity: 1 }, shutter: { opacity: .75 }, background: { color: BLACK } }, map: { background: { borderColor: WHITE }, layer: { label: { stroke: BLACK, font: { color: WHITE } } }, "layer:area": { borderColor: BLACK, color: "#686868", hoveredBorderColor: WHITE, selectedBorderColor: WHITE, label: { font: { opacity: 1 } } }, "layer:line": { color: "#267cff", hoveredColor: "#f613ff", selectedColor: WHITE }, "layer:marker:dot": { borderColor: BLACK, color: "#f8ca00", backColor: BLACK, backOpacity: .32 }, "layer:marker:bubble": { color: "#f8ca00", hoveredBorderColor: WHITE, selectedBorderColor: WHITE }, "layer:marker:pie": { hoveredBorderColor: WHITE, selectedBorderColor: WHITE }, controlBar: { borderColor: WHITE, color: BLACK, opacity: .3 } }, treeMap: { tile: { color: "#70c92f" }, group: { color: "#797979", label: { font: { color: WHITE } } } }, sparkline: { pointColor: BLACK }, bullet: {}, polar: { commonSeriesSettings: {} }, funnel: { label: { connector: { opacity: 1 } } }, sankey: { label: { font: { color: WHITE }, shadow: { opacity: 0 } }, node: { border: { visible: true, width: 1, color: WHITE } }, link: { opacity: .5, border: { visible: true, width: 1, color: WHITE }, hoverStyle: { opacity: .9 } } } } }, { baseThemeName: "generic.contrast", theme: { name: "generic.contrast.compact" } }] }, 52541: /*!****************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/viz/core/themes/generic/dark.js ***! \****************************************************************************************/ function(__unused_webpack_module, exports) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; const WHITE = "#ffffff"; exports.default = [{ baseThemeName: "generic.light", theme: { name: "generic.dark", font: { color: "#808080" }, backgroundColor: "#2a2a2a", primaryTitleColor: "#dedede", secondaryTitleColor: "#a3a3a3", gridColor: "#555555", axisColor: "#a3a3a3", export: { backgroundColor: "#2a2a2a", font: { color: "#dbdbdb" }, button: { default: { color: "#dedede", borderColor: "#4d4d4d", backgroundColor: "#2e2e2e" }, hover: { color: "#dedede", borderColor: "#6c6c6c", backgroundColor: "#444" }, focus: { color: "#dedede", borderColor: "#8d8d8d", backgroundColor: "#444444" }, active: { color: "#dedede", borderColor: "#8d8d8d", backgroundColor: "#555555" } }, shadowColor: "#292929" }, tooltip: { color: "#2b2b2b", border: { color: "#494949" }, font: { color: "#929292" } }, "chart:common": { commonSeriesSettings: { label: { border: { color: "#494949" } }, valueErrorBar: { color: WHITE } } }, "chart:common:axis": { constantLineStyle: { color: WHITE } }, "chart:common:annotation": { font: { color: "#929292" }, border: { color: "#494949" }, color: "#2b2b2b", shadow: { opacity: .008, offsetY: 4, blur: 8 } }, chart: { commonPaneSettings: { border: { color: "#494949" } }, commonAxisSettings: { breakStyle: { color: "#818181" } }, zoomAndPan: { dragBoxStyle: { color: WHITE } } }, gauge: { rangeContainer: { backgroundColor: "#b5b5b5" }, valueIndicators: { _default: { color: "#b5b5b5" }, rangebar: { color: "#84788b" }, twocolorneedle: { secondColor: "#ba544d" }, trianglemarker: { color: "#b7918f" }, textcloud: { color: "#ba544d" } } }, barGauge: { backgroundColor: "#3c3c3c" }, rangeSelector: { scale: { tick: { color: WHITE, opacity: .32 }, minorTick: { color: WHITE, opacity: .1 }, breakStyle: { color: "#818181" } }, selectedRangeColor: "#b5b5b5", sliderMarker: { color: "#b5b5b5", font: { color: "#303030" } }, sliderHandle: { color: WHITE, opacity: .2 }, shutter: { color: "#2b2b2b", opacity: .9 } }, map: { background: { borderColor: "#3f3f3f" }, layer: { label: { stroke: "#000000", font: { color: WHITE } } }, "layer:area": { borderColor: "#303030", color: "#686868", hoveredBorderColor: WHITE, selectedBorderColor: WHITE }, "layer:line": { color: "#c77244", hoveredColor: "#ff5d04", selectedColor: "#ff784f" }, "layer:marker:bubble": { hoveredBorderColor: WHITE, selectedBorderColor: WHITE }, "layer:marker:pie": { hoveredBorderColor: WHITE, selectedBorderColor: WHITE }, legend: { border: { color: "#3f3f3f" }, font: { color: WHITE } }, controlBar: { borderColor: "#c7c7c7", color: "#303030" } }, treeMap: { group: { color: "#4c4c4c", label: { font: { color: "#a3a3a3" } } } }, sparkline: { lineColor: "#c7c7c7", firstLastColor: "#c7c7c7", barPositiveColor: "#b8b8b8", barNegativeColor: "#8e8e8e", winColor: "#b8b8b8", lossColor: "#8e8e8e", pointColor: "#303030" }, bullet: { targetColor: "#8e8e8e" }, funnel: { item: { border: { color: "#2a2a2a" } } }, sankey: { label: { font: { color: WHITE }, shadow: { opacity: 0 } }, node: { border: { color: "#2a2a2a" } }, link: { color: "#888888", border: { color: "#2a2a2a" }, hoverStyle: { color: "#bbbbbb" } } } } }, { baseThemeName: "generic.dark", theme: { name: "generic.dark.compact" } }] }, 9940: /*!********************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/viz/core/themes/generic/darkmoon.js ***! \********************************************************************************************/ function(__unused_webpack_module, exports) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; exports.default = [{ baseThemeName: "generic.dark", theme: { name: "generic.darkmoon", defaultPalette: "Dark Moon", backgroundColor: "#465672", primaryTitleColor: "#fff", secondaryTitleColor: "#919bac", gridColor: "#596980", axisColor: "#c7ccd4", export: { backgroundColor: "#465672", font: { color: "#fff" }, button: { default: { color: "#fff", borderColor: "#7a889e", backgroundColor: "#465672" }, hover: { color: "#fff", borderColor: "#9da8b8", backgroundColor: "#596e92" }, focus: { color: "#fff", borderColor: "#c4cad4", backgroundColor: "#596e92" }, active: { color: "#fff", borderColor: "#c4cad4", backgroundColor: "#6b80a4" } } }, legend: { font: { color: "#c7ccd4" } }, tooltip: { color: "#62789e", border: { color: "#596980" }, font: { color: "#fff" } }, "chart:common": { commonSeriesSettings: { label: { border: { color: "#596980" } } } }, "chart:common:annotation": { font: { color: "#fff" }, border: { color: "#596980" }, color: "#62789e" }, chart: { commonPaneSettings: { border: { color: "#596980" } }, commonAxisSettings: { breakStyle: { color: "#73869e" } } }, gauge: { valueIndicators: { rangebar: { color: "#3debd3" }, textcloud: { color: "#3debd3", text: { font: { color: "#465672" } } } } }, barGauge: { backgroundColor: "#526280" }, funnel: { item: { border: { color: "#465672" } } }, sparkline: { pointColor: "#465672", minColor: "#f0ad4e", maxColor: "#f9517e" }, treeMap: { group: { color: "#596980", label: { font: { color: "#fff" } } } }, map: { background: { borderColor: "#596980" }, "layer:area": { color: "#97a3b6", borderColor: "#465672" } }, rangeSelector: { shutter: { color: "#465672" }, scale: { breakStyle: { color: "#73869e" }, tick: { opacity: .2 } }, selectedRangeColor: "#3debd3", sliderMarker: { color: "#3debd3", font: { color: "#000" } }, sliderHandle: { color: "#3debd3", opacity: .5 } }, bullet: { color: "#3debd3" }, sankey: { link: { border: { color: "#465672" } }, node: { border: { color: "#465672" } } } } }, { baseThemeName: "generic.darkmoon", theme: { name: "generic.darkmoon.compact" } }] }, 26374: /*!**********************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/viz/core/themes/generic/darkviolet.js ***! \**********************************************************************************************/ function(__unused_webpack_module, exports) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; exports.default = [{ baseThemeName: "generic.dark", theme: { name: "generic.darkviolet", defaultPalette: "Dark Violet", backgroundColor: "#17171f", primaryTitleColor: "#f5f6f7", secondaryTitleColor: "#fff", gridColor: "#343840", axisColor: "#b2b2b6", export: { backgroundColor: "#17171f", font: { color: "#f5f6f7" }, button: { default: { color: "#f5f6f7", borderColor: "#414152", backgroundColor: "#17171f" }, hover: { color: "#f5f6f7", borderColor: "#5c5c74", backgroundColor: "#2d2d3c" }, focus: { color: "#f5f6f7", borderColor: "#7c7c97", backgroundColor: "#2d2d3c" }, active: { color: "#f5f6f7", borderColor: "#7c7c97", backgroundColor: "#3c3c51" } } }, legend: { font: { color: "#b2b2b6" } }, tooltip: { color: "#17171f", border: { color: "#414152" }, font: { color: "#f5f6f7" } }, "chart:common": { commonSeriesSettings: { label: { border: { color: "#343840" } } } }, "chart:common:annotation": { font: { color: "#f5f6f7" }, border: { color: "#414152" }, color: "#17171f" }, chart: { commonPaneSettings: { border: { color: "#343840" } }, commonAxisSettings: { breakStyle: { color: "#575e6b" } } }, funnel: { item: { border: { color: "#17171f" } } }, sparkline: { pointColor: "#17171f", minColor: "#f0ad4e", maxColor: "#d9534f" }, treeMap: { group: { color: "#343840", label: { font: { color: "#fff" } } } }, rangeSelector: { shutter: { color: "#17171f" }, scale: { breakStyle: { color: "#575e6b" }, tick: { opacity: .2 } }, selectedRangeColor: "#9c63ff", sliderMarker: { color: "#9c63ff", font: { color: "#fff" } }, sliderHandle: { color: "#9c63ff", opacity: .5 } }, bullet: { color: "#9c63ff" }, gauge: { valueIndicators: { rangebar: { color: "#9c63ff" }, textcloud: { color: "#9c63ff" } } }, sankey: { link: { border: { color: "#17171f" } }, node: { border: { color: "#17171f" } } } } }, { baseThemeName: "generic.darkviolet", theme: { name: "generic.darkviolet.compact" } }] }, 29431: /*!*********************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/viz/core/themes/generic/greenmist.js ***! \*********************************************************************************************/ function(__unused_webpack_module, exports) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; exports.default = [{ baseThemeName: "generic.light", theme: { name: "generic.greenmist", defaultPalette: "Green Mist", backgroundColor: "#f5f5f5", primaryTitleColor: "#28484f", secondaryTitleColor: "#7eb2be", gridColor: "#dedede", axisColor: "#657c80", export: { backgroundColor: "#f5f5f5", font: { color: "#28484f" }, button: { default: { color: "#28484f", borderColor: "#a2b4b8", backgroundColor: "#f5f5f5" }, hover: { color: "#28484f", borderColor: "#7f989e", backgroundColor: "rgba(222, 222, 222, 0.4)" }, focus: { color: "#28484f", borderColor: "#5f777c", backgroundColor: "rgba(222, 222, 222, 0.4)" }, active: { color: "#28484f", borderColor: "#5f777c", backgroundColor: "rgba(222, 222, 222, 0.8)" } } }, legend: { font: { color: "#657c80" } }, tooltip: { color: "#fff", border: { color: "#dedede" }, font: { color: "#28484f" } }, "chart:common": { commonSeriesSettings: { label: { border: { color: "#dedede" } } } }, "chart:common:annotation": { color: "#fff", border: { color: "#dedede" }, font: { color: "#28484f" } }, chart: { commonPaneSettings: { border: { color: "#dedede" } }, commonAxisSettings: { breakStyle: { color: "#c1c1c1" } } }, funnel: { item: { border: { color: "#f5f5f5" } } }, sparkline: { pointColor: "#f5f5f5", minColor: "#ffc852", maxColor: "#f74a5e" }, treeMap: { group: { color: "#dedede", label: { font: { color: "#7eb2be" } } } }, rangeSelector: { shutter: { color: "#f5f5f5" }, scale: { breakStyle: { color: "#c1c1c1" }, tick: { opacity: .12 } }, selectedRangeColor: "#3cbab2", sliderMarker: { color: "#3cbab2" }, sliderHandle: { color: "#3cbab2", opacity: .5 } }, bullet: { color: "#3cbab2" }, gauge: { valueIndicators: { rangebar: { color: "#3cbab2" }, textcloud: { color: "#3cbab2" } } } } }, { baseThemeName: "generic.greenmist", theme: { name: "generic.greenmist.compact" } }] }, 39599: /*!***************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/viz/core/themes/generic/light/bar_gauge.js ***! \***************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _contants = __webpack_require__( /*! ./contants */ 12462); exports.default = { barGauge: { backgroundColor: "#e0e0e0", relativeInnerRadius: .3, barSpacing: 4, resolveLabelOverlapping: "hide", label: { indent: 20, connectorWidth: 2, font: { size: 16 } }, legend: { visible: false }, indicator: { hasPositiveMeaning: true, layout: { horizontalAlignment: _contants.CENTER, verticalAlignment: _contants.BOTTOM }, text: { font: { size: 18 } } } } } }, 5828: /*!************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/viz/core/themes/generic/light/bullet.js ***! \************************************************************************************************/ function(__unused_webpack_module, exports) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; exports.default = { bullet: { color: "#e8c267", targetColor: "#666666", targetWidth: 4, showTarget: true, showZeroLevel: true, tooltip: { enabled: true } } } }, 67322: /*!***********************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/viz/core/themes/generic/light/chart.js ***! \***********************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _contants = __webpack_require__( /*! ./contants */ 12462); exports.default = { "chart:common": { animation: { enabled: true, duration: 1e3, easing: "easeOutCubic", maxPointCountSupported: 300 }, commonSeriesSettings: { border: { visible: false, width: 2 }, showInLegend: true, visible: true, hoverMode: "nearestPoint", selectionMode: "includePoints", hoverStyle: { hatching: { direction: _contants.RIGHT, width: 2, step: 6, opacity: .75 }, highlight: true, border: { visible: false, width: 3 } }, selectionStyle: { hatching: { direction: _contants.RIGHT, width: 2, step: 6, opacity: .5 }, highlight: true, border: { visible: false, width: 3 } }, valueErrorBar: { displayMode: "auto", value: 1, color: _contants.BLACK, lineWidth: 2, edgeLength: 8 }, label: { visible: false, alignment: _contants.CENTER, rotationAngle: 0, horizontalOffset: 0, verticalOffset: 0, radialOffset: 0, showForZeroValues: true, customizeText: void 0, maxLabelCount: void 0, position: _contants.OUTSIDE, font: { color: _contants.WHITE }, border: { visible: false, width: 1, color: _contants.LIGHT_GREY, dashStyle: _contants.SOLID }, connector: { visible: false, width: 1 } } }, seriesSelectionMode: "single", pointSelectionMode: "single", equalRowHeight: true, dataPrepareSettings: { checkTypeForAllData: false, convertToAxisDataType: true, sortingMethod: true }, title: { margin: 10 }, adaptiveLayout: { width: 80, height: 80, keepLabels: true }, _rtl: { legend: { itemTextPosition: _contants.LEFT } }, resolveLabelOverlapping: _contants.NONE }, "chart:common:axis": { visible: true, valueMarginsEnabled: true, placeholderSize: null, logarithmBase: 10, discreteAxisDivisionMode: "betweenLabels", aggregatedPointsPosition: "betweenTicks", width: 1, label: { visible: true }, grid: { visible: false, width: 1 }, minorGrid: { visible: false, width: 1, opacity: .3 }, tick: { visible: true, width: 1, length: 7, shift: 3 }, minorTick: { visible: false, width: 1, opacity: .3, length: 7, shift: 3 }, stripStyle: { paddingLeftRight: 10, paddingTopBottom: 5 }, constantLineStyle: { width: 1, color: _contants.BLACK, dashStyle: _contants.SOLID, label: { visible: true, position: _contants.INSIDE } }, marker: { label: {} } }, "chart:common:annotation": { font: { color: "#333333" }, tooltipEnabled: true, border: { width: 1, color: "#dddddd", dashStyle: _contants.SOLID, visible: true }, color: _contants.WHITE, opacity: .9, arrowLength: 14, arrowWidth: 14, paddingLeftRight: 10, paddingTopBottom: 10, shadow: { opacity: .15, offsetX: 0, offsetY: 1, blur: 4, color: _contants.BLACK }, image: { width: 30, height: 30 }, wordWrap: "normal", textOverflow: "ellipsis", allowDragging: false }, chart: { commonSeriesSettings: { type: "line", stack: "default", aggregation: { enabled: void 0 }, point: { visible: true, symbol: "circle", size: 12, border: { visible: false, width: 1 }, hoverMode: "onlyPoint", selectionMode: "onlyPoint", hoverStyle: { border: { visible: true, width: 4 } }, selectionStyle: { border: { visible: true, width: 4 } } }, scatter: {}, line: { width: 2, dashStyle: _contants.SOLID, hoverStyle: { width: 3, hatching: { direction: _contants.NONE }, highlight: false }, selectionStyle: { width: 3 } }, stackedline: { width: 2, dashStyle: _contants.SOLID, hoverStyle: { width: 3, hatching: { direction: _contants.NONE }, highlight: false }, selectionStyle: { width: 3 } }, stackedspline: { width: 2, dashStyle: _contants.SOLID, hoverStyle: { width: 3, hatching: { direction: _contants.NONE }, highlight: false }, selectionStyle: { width: 3 } }, fullstackedline: { width: 2, dashStyle: _contants.SOLID, hoverStyle: { width: 3, hatching: { direction: _contants.NONE }, highlight: false }, selectionStyle: { width: 3 } }, fullstackedspline: { width: 2, dashStyle: _contants.SOLID, hoverStyle: { width: 3, hatching: { direction: _contants.NONE }, highlight: false }, selectionStyle: { width: 3 } }, stepline: { width: 2, dashStyle: _contants.SOLID, hoverStyle: { width: 3, hatching: { direction: _contants.NONE }, highlight: false }, selectionStyle: { width: 3 } }, area: { point: { visible: false }, opacity: .5 }, stackedarea: { point: { visible: false }, opacity: .5 }, fullstackedarea: { point: { visible: false }, opacity: .5 }, fullstackedsplinearea: { point: { visible: false }, opacity: .5 }, steparea: { border: { visible: true, width: 2 }, point: { visible: false }, hoverStyle: { border: { visible: true, width: 3 } }, selectionStyle: { border: { visible: true, width: 3 } }, opacity: .5 }, spline: { width: 2, hoverStyle: { width: 3, hatching: { direction: _contants.NONE }, highlight: false }, selectionStyle: { width: 3 } }, splinearea: { point: { visible: false }, opacity: .5 }, stackedsplinearea: { point: { visible: false }, opacity: .5 }, bar: { cornerRadius: 0, point: { hoverStyle: { border: { visible: false } }, selectionStyle: { border: { visible: false } } } }, stackedbar: { cornerRadius: 0, point: { hoverStyle: { border: { visible: false } }, selectionStyle: { border: { visible: false } } }, label: { position: _contants.INSIDE } }, fullstackedbar: { cornerRadius: 0, point: { hoverStyle: { border: { visible: false } }, selectionStyle: { border: { visible: false } } }, label: { position: _contants.INSIDE } }, rangebar: { cornerRadius: 0, point: { hoverStyle: { border: { visible: false } }, selectionStyle: { border: { visible: false } } } }, rangearea: { point: { visible: false }, opacity: .5 }, rangesplinearea: { point: { visible: false }, opacity: .5 }, bubble: { opacity: .5, point: { hoverStyle: { border: { visible: false } }, selectionStyle: { border: { visible: false } } } }, candlestick: { width: 1, reduction: { color: _contants.RED }, hoverStyle: { width: 3, hatching: { direction: _contants.NONE }, highlight: false }, selectionStyle: { width: 3, highlight: false }, point: { border: { visible: true } } }, stock: { width: 1, reduction: { color: _contants.RED }, hoverStyle: { width: 3, hatching: { direction: _contants.NONE }, highlight: false }, selectionStyle: { width: 3, highlight: false }, point: { border: { visible: true } } } }, crosshair: { enabled: false, color: "#f05b41", width: 1, dashStyle: _contants.SOLID, label: { visible: false, font: { color: _contants.WHITE, size: 12 } }, verticalLine: { visible: true }, horizontalLine: { visible: true } }, commonAxisSettings: { multipleAxesSpacing: 5, forceUserTickInterval: false, breakStyle: { width: 5, color: "#ababab", line: "waved" }, label: { displayMode: "standard", overlappingBehavior: "hide", indentFromAxis: 10, wordWrap: "normal", textOverflow: "none" }, title: { font: { size: 16 }, margin: 6, alignment: _contants.CENTER }, constantLineStyle: { paddingLeftRight: 10, paddingTopBottom: 10 } }, horizontalAxis: { position: _contants.BOTTOM, axisDivisionFactor: 70, label: { rotationAngle: 90, staggeringSpacing: 5, alignment: _contants.CENTER }, stripStyle: { label: { horizontalAlignment: _contants.CENTER, verticalAlignment: _contants.TOP } }, constantLineStyle: { label: { horizontalAlignment: _contants.RIGHT, verticalAlignment: _contants.TOP } }, constantLines: [] }, verticalAxis: { position: _contants.LEFT, axisDivisionFactor: 40, label: { alignment: _contants.RIGHT }, stripStyle: { label: { horizontalAlignment: _contants.LEFT, verticalAlignment: _contants.CENTER } }, constantLineStyle: { label: { horizontalAlignment: _contants.LEFT, verticalAlignment: _contants.TOP } }, constantLines: [] }, argumentAxis: { endOnTick: false, workWeek: [1, 2, 3, 4, 5] }, valueAxis: { grid: { visible: true }, autoBreaksEnabled: false, maxAutoBreakCount: 4 }, commonPaneSettings: { backgroundColor: _contants.NONE, border: { color: _contants.LIGHT_GREY, width: 1, visible: false, top: true, bottom: true, left: true, right: true, dashStyle: _contants.SOLID } }, scrollBar: { visible: false, offset: 5, color: "gray", width: 10 }, adjustOnZoom: true, autoHidePointMarkers: true, rotated: false, synchronizeMultiAxes: true, stickyHovering: true, barGroupPadding: .3, minBubbleSize: 12, maxBubbleSize: .2, zoomAndPan: { dragBoxStyle: { color: "#2a2a2a", opacity: .2 }, panKey: "shift", allowMouseWheel: true, allowTouchGestures: true } } } }, 12462: /*!**************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/viz/core/themes/generic/light/contants.js ***! \**************************************************************************************************/ function(__unused_webpack_module, exports) { Object.defineProperty(exports, "__esModule", { value: true }); exports.WHITE = exports.TOP = exports.SOME_GREY = exports.SOLID = exports.SECONDARY_TITLE_COLOR = exports.RIGHT = exports.RED = exports.PRIMARY_TITLE_COLOR = exports.OUTSIDE = exports.NONE = exports.LIGHT_GREY = exports.LEFT = exports.INSIDE = exports.GREY_GREEN = exports.CENTER = exports.BOTTOM = exports.BLACK = void 0; exports.WHITE = "#ffffff"; exports.BLACK = "#000000"; exports.LIGHT_GREY = "#d3d3d3"; exports.GREY_GREEN = "#303030"; exports.SOME_GREY = "#2b2b2b"; exports.RED = "#ff0000"; exports.PRIMARY_TITLE_COLOR = "#232323"; exports.SECONDARY_TITLE_COLOR = "#767676"; exports.NONE = "none"; exports.SOLID = "solid"; exports.TOP = "top"; exports.RIGHT = "right"; exports.BOTTOM = "bottom"; exports.LEFT = "left"; exports.CENTER = "center"; exports.INSIDE = "inside"; exports.OUTSIDE = "outside" }, 60980: /*!************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/viz/core/themes/generic/light/funnel.js ***! \************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _contants = __webpack_require__( /*! ./contants */ 12462); exports.default = { funnel: { sortData: true, valueField: "val", colorField: "color", argumentField: "arg", hoverEnabled: true, selectionMode: "single", item: { border: { visible: false, width: 2, color: _contants.WHITE }, hoverStyle: { hatching: { opacity: .75, step: 6, width: 2, direction: _contants.RIGHT }, border: {} }, selectionStyle: { hatching: { opacity: .5, step: 6, width: 2, direction: _contants.RIGHT }, border: {} } }, title: { margin: 10 }, adaptiveLayout: { width: 80, height: 80, keepLabels: true }, legend: { visible: false }, _rtl: { legend: { itemTextPosition: _contants.LEFT } }, tooltip: { customizeTooltip: info => ({ text: `${info.item.argument} ${info.valueText}` }) }, inverted: false, algorithm: "dynamicSlope", neckWidth: 0, neckHeight: 0, resolveLabelOverlapping: "shift", label: { textOverflow: "ellipsis", wordWrap: "normal", visible: true, horizontalAlignment: _contants.RIGHT, horizontalOffset: 0, verticalOffset: 0, showForZeroValues: false, customizeText: info => `${info.item.argument} ${info.valueText}`, position: "columns", font: { color: _contants.WHITE }, border: { visible: false, width: 1, color: _contants.LIGHT_GREY, dashStyle: _contants.SOLID }, connector: { visible: true, width: 1, opacity: .5 } } } } }, 77393: /*!***********************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/viz/core/themes/generic/light/gauge.js ***! \***********************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _contants = __webpack_require__( /*! ./contants */ 12462); exports.default = { gauge: { scale: { tick: { visible: true, length: 5, width: 2, opacity: 1 }, minorTick: { visible: false, length: 3, width: 1, opacity: 1 }, label: { visible: true, alignment: _contants.CENTER, hideFirstOrLast: "last", overlappingBehavior: "hide" }, position: _contants.TOP, endOnTick: false }, rangeContainer: { offset: 0, width: 5, backgroundColor: "#808080" }, valueIndicators: { _default: { color: "#c2c2c2" }, rangebar: { space: 2, size: 10, color: "#cbc5cf", backgroundColor: _contants.NONE, text: { indent: 0, font: { size: 14, color: null } } }, twocolorneedle: { secondColor: "#e18e92" }, trianglemarker: { space: 2, length: 14, width: 13, color: "#8798a5" }, textcloud: { arrowLength: 5, horizontalOffset: 6, verticalOffset: 3, color: "#679ec5", text: { font: { color: _contants.WHITE, size: 18 } } } }, indicator: { hasPositiveMeaning: true, layout: { horizontalAlignment: _contants.CENTER, verticalAlignment: _contants.BOTTOM }, text: { font: { size: 18 } } }, _circular: { scale: { scaleDivisionFactor: 17, orientation: _contants.OUTSIDE, label: { indentFromTick: 10 } }, rangeContainer: { orientation: _contants.OUTSIDE }, valueIndicatorType: "rectangleneedle", subvalueIndicatorType: "trianglemarker", valueIndicators: { _type: "rectangleneedle", _default: { offset: 20, indentFromCenter: 0, width: 2, spindleSize: 14, spindleGapSize: 10, beginAdaptingAtRadius: 50 }, triangleneedle: { width: 4 }, twocolorneedle: { space: 2, secondFraction: .4 }, rangebar: { offset: 30 }, trianglemarker: { offset: 6 }, textcloud: { offset: -6 } } }, _linear: { scale: { scaleDivisionFactor: 25, horizontalOrientation: _contants.RIGHT, verticalOrientation: _contants.BOTTOM, label: { indentFromTick: -10 } }, rangeContainer: { horizontalOrientation: _contants.RIGHT, verticalOrientation: _contants.BOTTOM }, valueIndicatorType: "rangebar", subvalueIndicatorType: "trianglemarker", valueIndicators: { _type: "rectangle", _default: { offset: 2.5, length: 15, width: 15 }, rectangle: { width: 10 }, rangebar: { offset: 10, horizontalOrientation: _contants.RIGHT, verticalOrientation: _contants.BOTTOM }, trianglemarker: { offset: 10, horizontalOrientation: _contants.LEFT, verticalOrientation: _contants.TOP }, textcloud: { offset: -1, horizontalOrientation: _contants.LEFT, verticalOrientation: _contants.TOP } } } } } }, 4702: /*!***********************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/viz/core/themes/generic/light/index.js ***! \***********************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _bar_gauge = _interopRequireDefault(__webpack_require__( /*! ./bar_gauge */ 39599)); var _bullet = _interopRequireDefault(__webpack_require__( /*! ./bullet */ 5828)); var _chart = _interopRequireDefault(__webpack_require__( /*! ./chart */ 67322)); var _contants = __webpack_require__( /*! ./contants */ 12462); var _funnel = _interopRequireDefault(__webpack_require__( /*! ./funnel */ 60980)); var _gauge = _interopRequireDefault(__webpack_require__( /*! ./gauge */ 77393)); var _pie_chart = _interopRequireDefault(__webpack_require__( /*! ./pie_chart */ 82611)); var _polar_chart = _interopRequireDefault(__webpack_require__( /*! ./polar_chart */ 53949)); var _range_selector = _interopRequireDefault(__webpack_require__( /*! ./range_selector */ 11055)); var _sankey = _interopRequireDefault(__webpack_require__( /*! ./sankey */ 4517)); var _sparkline = _interopRequireDefault(__webpack_require__( /*! ./sparkline */ 72513)); var _tree_map = _interopRequireDefault(__webpack_require__( /*! ./tree_map */ 47661)); var _vector_map = _interopRequireDefault(__webpack_require__( /*! ./vector_map */ 44062)); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } function _extends() { return _extends = Object.assign ? Object.assign.bind() : function(n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) { ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]) } } return n }, _extends.apply(null, arguments) } exports.default = [{ baseThemeName: void 0, theme: _extends({ name: "generic.light", isDefault: true, font: { color: _contants.SECONDARY_TITLE_COLOR, family: "'Segoe UI', 'Helvetica Neue', 'Trebuchet MS', Verdana, sans-serif", weight: 400, size: 12, cursor: "default" }, redrawOnResize: true, backgroundColor: _contants.WHITE, primaryTitleColor: _contants.PRIMARY_TITLE_COLOR, secondaryTitleColor: _contants.SECONDARY_TITLE_COLOR, gridColor: _contants.LIGHT_GREY, axisColor: _contants.SECONDARY_TITLE_COLOR, title: { backgroundColor: _contants.WHITE, font: { size: 28, family: "'Segoe UI Light', 'Helvetica Neue Light', 'Segoe UI', 'Helvetica Neue', 'Trebuchet MS', Verdana, sans-serif", weight: 200 }, subtitle: { font: { size: 16 }, offset: 0, wordWrap: "normal", textOverflow: "ellipsis" }, wordWrap: "normal", textOverflow: "ellipsis" }, loadingIndicator: { text: "Loading..." }, export: { backgroundColor: _contants.WHITE, margin: 10, font: { size: 14, color: _contants.PRIMARY_TITLE_COLOR, weight: 400 }, button: { margin: { top: 8, left: 10, right: 10, bottom: 8 }, default: { color: "#333", borderColor: "#ddd", backgroundColor: _contants.WHITE }, hover: { color: "#333", borderColor: "#bebebe", backgroundColor: "#e6e6e6" }, focus: { color: _contants.BLACK, borderColor: "#9d9d9d", backgroundColor: "#e6e6e6" }, active: { color: "#333", borderColor: "#9d9d9d", backgroundColor: "#d4d4d4" } }, shadowColor: _contants.LIGHT_GREY }, tooltip: { enabled: false, border: { width: 1, color: _contants.LIGHT_GREY, dashStyle: _contants.SOLID, visible: true }, font: { color: _contants.PRIMARY_TITLE_COLOR }, color: _contants.WHITE, arrowLength: 10, paddingLeftRight: 18, paddingTopBottom: 15, textAlignment: "center", shared: false, location: _contants.CENTER, shadow: { opacity: .4, offsetX: 0, offsetY: 4, blur: 2, color: _contants.BLACK }, interactive: false }, legend: { hoverMode: "includePoints", verticalAlignment: _contants.TOP, horizontalAlignment: _contants.RIGHT, position: _contants.OUTSIDE, visible: true, margin: 10, markerSize: 12, border: { visible: false, width: 1, cornerRadius: 0, dashStyle: _contants.SOLID }, paddingLeftRight: 20, paddingTopBottom: 15, columnCount: 0, rowCount: 0, columnItemSpacing: 20, rowItemSpacing: 8, title: { backgroundColor: _contants.WHITE, margin: { left: 0, bottom: 9, right: 0, top: 0 }, font: { size: 18, weight: 200 }, subtitle: { offset: 0, font: { size: 14 }, wordWrap: "none", textOverflow: "ellipsis" }, wordWrap: "none", textOverflow: "ellipsis" } } }, _chart.default, _funnel.default, _gauge.default, _bar_gauge.default, _vector_map.default, _pie_chart.default, _polar_chart.default, _range_selector.default, _sankey.default, _sparkline.default, _bullet.default, _tree_map.default) }, { baseThemeName: "generic.light", theme: { name: "generic.light.compact" } }] }, 82611: /*!***************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/viz/core/themes/generic/light/pie_chart.js ***! \***************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _contants = __webpack_require__( /*! ./contants */ 12462); exports.default = { pie: { innerRadius: .5, minDiameter: .5, type: "pie", dataPrepareSettings: { _skipArgumentSorting: true }, commonSeriesSettings: { pie: { border: { visible: false, width: 2, color: _contants.WHITE }, hoverStyle: { hatching: { direction: _contants.RIGHT, width: 4, step: 10, opacity: .75 }, highlight: true, border: { visible: false, width: 2 } }, selectionStyle: { hatching: { direction: _contants.RIGHT, width: 4, step: 10, opacity: .5 }, highlight: true, border: { visible: false, width: 2 } } }, doughnut: { border: { visible: false, width: 2, color: _contants.WHITE }, hoverStyle: { hatching: { direction: _contants.RIGHT, width: 4, step: 10, opacity: .75 }, highlight: true, border: { visible: false, width: 2 } }, selectionStyle: { hatching: { direction: _contants.RIGHT, width: 4, step: 10, opacity: .5 }, highlight: true, border: { visible: false, width: 2 } } }, donut: { border: { visible: false, width: 2, color: _contants.WHITE }, hoverStyle: { hatching: { direction: _contants.RIGHT, width: 4, step: 10, opacity: .75 }, highlight: true, border: { visible: false, width: 2 } }, selectionStyle: { hatching: { direction: _contants.RIGHT, width: 4, step: 10, opacity: .5 }, highlight: true, border: { visible: false, width: 2 } } }, label: { textOverflow: "ellipsis", wordWrap: "normal" } }, legend: { hoverMode: "allArgumentPoints", backgroundColor: _contants.NONE }, adaptiveLayout: { keepLabels: false } } } }, 53949: /*!*****************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/viz/core/themes/generic/light/polar_chart.js ***! \*****************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _contants = __webpack_require__( /*! ./contants */ 12462); exports.default = { polar: { commonSeriesSettings: { type: "scatter", closed: true, point: { visible: true, symbol: "circle", size: 12, border: { visible: false, width: 1 }, hoverMode: "onlyPoint", selectionMode: "onlyPoint", hoverStyle: { border: { visible: true, width: 4 }, size: 12 }, selectionStyle: { border: { visible: true, width: 4 }, size: 12 } }, scatter: {}, line: { width: 2, dashStyle: _contants.SOLID, hoverStyle: { width: 3, hatching: { direction: _contants.NONE } }, selectionStyle: { width: 3 } }, area: { point: { visible: false }, opacity: .5 }, stackedline: { width: 2 }, bar: { opacity: .8 }, stackedbar: { opacity: .8 } }, adaptiveLayout: { width: 80, height: 80, keepLabels: true }, barGroupPadding: .3, commonAxisSettings: { visible: true, forceUserTickInterval: false, label: { overlappingBehavior: "hide", indentFromAxis: 5 }, grid: { visible: true }, minorGrid: { visible: true }, tick: { visible: true }, title: { font: { size: 16 }, margin: 10 } }, argumentAxis: { startAngle: 0, firstPointOnStartAngle: false, period: void 0 }, valueAxis: { endOnTick: false, tick: { visible: false } }, horizontalAxis: { position: _contants.TOP, axisDivisionFactor: 50, label: { alignment: _contants.CENTER } }, verticalAxis: { position: _contants.TOP, axisDivisionFactor: 30, label: { alignment: _contants.RIGHT } } } } }, 11055: /*!********************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/viz/core/themes/generic/light/range_selector.js ***! \********************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _contants = __webpack_require__( /*! ./contants */ 12462); exports.default = { rangeSelector: { scale: { valueMarginsEnabled: true, width: 1, color: _contants.BLACK, opacity: .1, showCustomBoundaryTicks: true, label: { overlappingBehavior: "hide", alignment: _contants.CENTER, visible: true, topIndent: 7, font: { size: 11 } }, tick: { width: 1, color: _contants.BLACK, opacity: .17, visible: true, length: 12 }, minorTick: { width: 1, color: _contants.BLACK, opacity: .05, visible: true, length: 12 }, marker: { width: 1, color: "#000000", opacity: .1, visible: true, separatorHeight: 33, topIndent: 10, textLeftIndent: 7, textTopIndent: 11, label: {} }, logarithmBase: 10, workWeek: [1, 2, 3, 4, 5], breakStyle: { width: 5, color: "#ababab", line: "waved" }, endOnTick: false }, selectedRangeColor: "#606060", sliderMarker: { visible: true, paddingTopBottom: 2, paddingLeftRight: 4, color: "#606060", invalidRangeColor: _contants.RED, font: { color: _contants.WHITE, size: 11 } }, sliderHandle: { width: 1, color: _contants.BLACK, opacity: .2 }, shutter: { opacity: .75 }, background: { color: "#c0bae1", visible: true, image: { location: "full" } }, behavior: { snapToTicks: true, animationEnabled: true, moveSelectedRangeByClick: true, manualRangeSelectionEnabled: true, allowSlidersSwap: true, valueChangeMode: "onHandleRelease" }, redrawOnResize: true, chart: { barGroupPadding: .3, minBubbleSize: 12, maxBubbleSize: .2, topIndent: .1, bottomIndent: 0, valueAxis: { inverted: false, logarithmBase: 10 }, commonSeriesSettings: { type: "area", aggregation: { enabled: void 0 }, point: { visible: false }, scatter: { point: { visible: true } } } } } } }, 4517: /*!************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/viz/core/themes/generic/light/sankey.js ***! \************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _contants = __webpack_require__( /*! ./contants */ 12462); exports.default = { sankey: { sourceField: "source", targetField: "target", weightField: "weight", hoverEnabled: true, alignment: _contants.CENTER, adaptiveLayout: { width: 80, height: 80, keepLabels: true }, label: { visible: true, horizontalOffset: 8, verticalOffset: 0, overlappingBehavior: "ellipsis", useNodeColors: false, font: { color: _contants.BLACK, weight: 500 }, border: { visible: false, width: 2, color: _contants.WHITE }, customizeText: info => info.label, shadow: { opacity: .2, offsetX: 0, offsetY: 1, blur: 1, color: _contants.WHITE } }, title: { margin: 10, font: { size: 28, weight: 200 }, subtitle: { font: { size: 16 } } }, tooltip: { enabled: true }, node: { padding: 30, width: 8, opacity: 1, border: { color: _contants.WHITE, width: 1, visible: false }, hoverStyle: { hatching: { opacity: .75, step: 6, width: 2, direction: _contants.RIGHT }, border: {} } }, link: { color: "#888888", colorMode: "none", opacity: .3, border: { color: _contants.WHITE, width: 1, visible: false }, hoverStyle: { opacity: .5, hatching: { opacity: .75, step: 6, width: 2, direction: _contants.RIGHT }, border: {} } } } } }, 72513: /*!***************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/viz/core/themes/generic/light/sparkline.js ***! \***************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _contants = __webpack_require__( /*! ./contants */ 12462); exports.default = { sparkline: { lineColor: "#666666", lineWidth: 2, areaOpacity: .2, minColor: "#e8c267", maxColor: "#e55253", barPositiveColor: "#a9a9a9", barNegativeColor: "#d7d7d7", winColor: "#a9a9a9", lossColor: "#d7d7d7", firstLastColor: "#666666", pointSymbol: "circle", pointColor: _contants.WHITE, pointSize: 4, type: "line", argumentField: "arg", valueField: "val", winlossThreshold: 0, showFirstLast: true, showMinMax: false, tooltip: { enabled: true } } } }, 47661: /*!**************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/viz/core/themes/generic/light/tree_map.js ***! \**************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _contants = __webpack_require__( /*! ./contants */ 12462); exports.default = { treeMap: { tile: { border: { width: 1, opacity: .2, color: "#000000" }, color: "#5f8b95", hoverStyle: { hatching: { opacity: .75, step: 6, width: 2, direction: "right" }, border: {} }, selectionStyle: { hatching: { opacity: .5, step: 6, width: 2, direction: "right" }, border: { opacity: 1 } }, label: { visible: true, paddingLeftRight: 5, paddingTopBottom: 4, font: { color: "#ffffff", weight: 600 }, shadow: { opacity: .6, offsetX: 0, offsetY: 1, blur: 2, color: "#000000" }, wordWrap: "normal", textOverflow: "ellipsis" } }, group: { padding: 4, border: { width: 1 }, color: "#eeeeee", hoverStyle: { hatching: { opacity: 0, step: 6, width: 2, direction: "right" }, border: {} }, selectionStyle: { hatching: { opacity: 0, step: 6, width: 2, direction: "right" }, border: {} }, label: { visible: true, paddingLeftRight: 5, paddingTopBottom: 4, font: { color: _contants.SECONDARY_TITLE_COLOR, weight: 600 }, textOverflow: "ellipsis" } }, title: { subtitle: {} }, tooltip: {}, loadingIndicator: {} } } }, 44062: /*!****************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/viz/core/themes/generic/light/vector_map.js ***! \****************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _contants = __webpack_require__( /*! ./contants */ 12462); exports.default = { map: { title: { margin: 10 }, background: { borderWidth: 1, borderColor: "#cacaca" }, layer: { label: { enabled: false, stroke: _contants.WHITE, "stroke-width": 1, "stroke-opacity": .7, font: { color: _contants.SOME_GREY, size: 12 } } }, "layer:area": { borderWidth: 1, borderColor: _contants.WHITE, color: "#d2d2d2", hoveredBorderColor: _contants.GREY_GREEN, selectedBorderWidth: 2, selectedBorderColor: _contants.GREY_GREEN, label: { "stroke-width": 2, font: { size: 16 } } }, "layer:line": { borderWidth: 2, color: "#ba8365", hoveredColor: "#a94813", selectedBorderWidth: 3, selectedColor: "#e55100", label: { "stroke-width": 2, font: { size: 16 } } }, "layer:marker": { label: { enabled: true, "stroke-width": 1, font: { size: 12 } } }, "layer:marker:dot": { borderWidth: 2, borderColor: _contants.WHITE, size: 8, selectedStep: 2, backStep: 18, backColor: _contants.WHITE, backOpacity: .32, shadow: true }, "layer:marker:bubble": { minSize: 20, maxSize: 50, hoveredBorderWidth: 1, hoveredBorderColor: _contants.GREY_GREEN, selectedBorderWidth: 2, selectedBorderColor: _contants.GREY_GREEN }, "layer:marker:pie": { size: 50, hoveredBorderWidth: 1, hoveredBorderColor: _contants.GREY_GREEN, selectedBorderWidth: 2, selectedBorderColor: _contants.GREY_GREEN }, "layer:marker:image": { size: 20 }, legend: { verticalAlignment: _contants.BOTTOM, horizontalAlignment: _contants.RIGHT, position: _contants.INSIDE, backgroundOpacity: .65, border: { visible: true }, paddingLeftRight: 16, paddingTopBottom: 12 }, controlBar: { borderColor: "#5d5d5d", borderWidth: 3, color: _contants.WHITE, margin: 20, opacity: .3 }, _rtl: { legend: { itemTextPosition: _contants.LEFT } } } } }, 56829: /*!********************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/viz/core/themes/generic/softblue.js ***! \********************************************************************************************/ function(__unused_webpack_module, exports) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; exports.default = [{ baseThemeName: "generic.light", theme: { name: "generic.softblue", defaultPalette: "Soft Blue", backgroundColor: "#fff", primaryTitleColor: "#333", secondaryTitleColor: "#99a1a8", gridColor: "#e8eaeb", axisColor: "#707070", export: { backgroundColor: "#fff", font: { color: "#333" }, button: { default: { color: "#333", borderColor: "#c9d0d4", backgroundColor: "#fff" }, hover: { color: "#333", borderColor: "#a7b2b9", backgroundColor: "#e6e6e6" }, focus: { color: "#333", borderColor: "#82929b", backgroundColor: "#e6e6e6" }, active: { color: "#333", borderColor: "#82929b", backgroundColor: "#d4d4d4" } } }, legend: { font: { color: "#707070" } }, tooltip: { color: "#fff", border: { color: "#e8eaeb" }, font: { color: "#333" } }, "chart:common": { commonSeriesSettings: { label: { border: { color: "#e8eaeb" } } } }, "chart:common:annotation": { color: "#fff", border: { color: "#e8eaeb" }, font: { color: "#333" } }, chart: { commonPaneSettings: { border: { color: "#e8eaeb" } }, commonAxisSettings: { breakStyle: { color: "#cfd2d3" } } }, rangeSelector: { scale: { breakStyle: { color: "#cfd2d3" }, tick: { opacity: .12 } }, selectedRangeColor: "#7ab8eb", sliderMarker: { color: "#7ab8eb" }, sliderHandle: { color: "#7ab8eb", opacity: .5 } }, sparkline: { pointColor: "#fff", minColor: "#f0ad4e", maxColor: "#d9534f" }, treeMap: { group: { color: "#e8eaeb", label: { font: { color: "#99a1a8" } } } }, bullet: { color: "#7ab8eb" }, gauge: { valueIndicators: { rangebar: { color: "#7ab8eb" }, textcloud: { color: "#7ab8eb" } } } } }, { baseThemeName: "generic.softblue", theme: { name: "generic.softblue.compact" } }] }, 55073: /*!******************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/__internal/viz/core/themes/material/index.js ***! \******************************************************************************************/ function(__unused_webpack_module, exports) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; const FONT_FAMILY = "'Roboto', 'RobotoFallback', 'Helvetica', 'Arial', sans-serif"; const WHITE = "#ffffff"; const themes = [{ baseThemeName: "generic.light", theme: { name: "material", defaultPalette: "Material", font: { family: FONT_FAMILY }, title: { margin: { top: 20, bottom: 20, left: 0, right: 0 }, font: { size: 20, family: FONT_FAMILY, weight: 500 }, horizontalAlignment: "left", subtitle: { font: { size: 14 }, horizontalAlignment: "left" } }, tooltip: { shadow: { opacity: 0 }, border: { visible: false }, paddingLeftRight: 8, paddingTopBottom: 6, arrowLength: 0, location: "edge", color: "#616161", font: { color: WHITE }, cornerRadius: 4 }, chart: { commonAxisSettings: { minorTick: { opacity: .5 }, label: { font: { size: 11 } } }, commonAnnotationSettings: { font: { color: WHITE }, border: { color: "#616161" }, color: "#616161", arrowLength: 14, arrowWidth: 0, shadow: { opacity: .08, offsetY: 4, blur: 8 }, cornerRadius: 4 } }, pie: { title: { horizontalAlignment: "center", subtitle: { horizontalAlignment: "center" } } }, polar: { commonAxisSettings: { minorTick: { opacity: .5 } }, title: { horizontalAlignment: "center", subtitle: { horizontalAlignment: "center" } } }, funnel: { title: { horizontalAlignment: "center", subtitle: { horizontalAlignment: "center" } } }, gauge: { title: { horizontalAlignment: "center", subtitle: { horizontalAlignment: "center" } } }, barGauge: { title: { horizontalAlignment: "center", subtitle: { horizontalAlignment: "center" } } }, rangeSelector: { sliderHandle: { opacity: .5 } }, treeMap: { group: { label: { font: { weight: 500 } } } } } }, { baseThemeName: "material", theme: { name: "material.light", gridColor: "#e0e0e0", axisColor: "rgba(0,0,0,0.54)", primaryTitleColor: "rgba(0,0,0,0.87)", legend: { font: { color: "rgba(0,0,0,0.54)" } }, chart: { scrollBar: { color: "#bfbfbf", opacity: .7 } }, gauge: { rangeContainer: { backgroundColor: "rgba(0,0,0,0.2)" } }, barGauge: { backgroundColor: "#efefef" } } }, { baseThemeName: "material", theme: { name: "material.dark", gridColor: "#515159", backgroundColor: "#363640", axisColor: "rgba(255,255,255,0.54)", font: { color: "rgba(255,255,255,0.54)" }, primaryTitleColor: "rgba(255,255,255,0.87)", secondaryTitleColor: "rgba(255,255,255,0.87)", tooltip: { color: "#000" }, export: { backgroundColor: "#363640", font: { color: "#dbdbdb" }, button: { default: { color: "#dedede", borderColor: "#4d4d4d", backgroundColor: "#363640" }, hover: { color: "#dedede", borderColor: "#6c6c6c", backgroundColor: "#3f3f4b" }, focus: { color: "#dedede", borderColor: "#8d8d8d", backgroundColor: "#494956" }, active: { color: "#dedede", borderColor: "#8d8d8d", backgroundColor: "#494956" } }, shadowColor: "#292929" }, "chart:common": { commonSeriesSettings: { label: { border: { color: "#494949" } }, valueErrorBar: { color: WHITE } } }, "chart:common:axis": { constantLineStyle: { color: WHITE } }, "chart:common:annotation": { border: { color: "#000" }, color: "#000" }, chart: { commonPaneSettings: { border: { color: "#494949" } }, commonAxisSettings: { breakStyle: { color: "#818181" } }, zoomAndPan: { dragBoxStyle: { color: WHITE } } }, gauge: { rangeContainer: { backgroundColor: "#b5b5b5" }, valueIndicators: { _default: { color: "#b5b5b5" }, rangebar: { color: "#84788b" }, twocolorneedle: { secondColor: "#ba544d" }, trianglemarker: { color: "#b7918f" }, textcloud: { color: "#ba544d" } } }, barGauge: { backgroundColor: "#3c3c3c" }, rangeSelector: { scale: { tick: { color: WHITE, opacity: .32 }, minorTick: { color: WHITE, opacity: .1 }, breakStyle: { color: "#818181" } }, selectedRangeColor: "#b5b5b5", sliderMarker: { color: "#b5b5b5", font: { color: "#363640" } }, sliderHandle: { color: WHITE, opacity: .2 }, shutter: { color: WHITE, opacity: .1 } }, map: { background: { borderColor: "#3f3f3f" }, layer: { label: { stroke: "#000000", font: { color: WHITE } } }, "layer:area": { borderColor: "#363640", color: "#686868", hoveredBorderColor: WHITE, selectedBorderColor: WHITE }, "layer:line": { color: "#c77244", hoveredColor: "#ff5d04", selectedColor: "#ff784f" }, "layer:marker:bubble": { hoveredBorderColor: WHITE, selectedBorderColor: WHITE }, "layer:marker:pie": { hoveredBorderColor: WHITE, selectedBorderColor: WHITE }, legend: { border: { color: "#3f3f3f" }, font: { color: WHITE } }, controlBar: { borderColor: "#c7c7c7", color: "#363640" } }, treeMap: { group: { color: "#4c4c4c", label: { font: { color: "#a3a3a3" } } } }, sparkline: { lineColor: "#c7c7c7", firstLastColor: "#c7c7c7", barPositiveColor: "#b8b8b8", barNegativeColor: "#8e8e8e", winColor: "#b8b8b8", lossColor: "#8e8e8e", pointColor: "#363640" }, bullet: { targetColor: "#8e8e8e" }, funnel: { item: { border: { color: "#363640" } } }, sankey: { label: { font: { color: WHITE } } } } }]; function getMaterialColorScheme(accentName, themeName, accentColor) { return { theme: { name: `material.${accentName}.${themeName}`, rangeSelector: { selectedRangeColor: accentColor, sliderMarker: { color: accentColor }, sliderHandle: { color: accentColor } }, map: { "layer:marker:dot": { color: accentColor }, "layer:marker:bubble": { color: accentColor }, legend: { markerColor: accentColor } }, bullet: { color: accentColor }, gauge: { valueIndicators: { rangebar: { color: accentColor }, textcloud: { color: accentColor } } } }, baseThemeName: `material.${themeName}` } } const materialAccents = { blue: "#03a9f4", lime: "#cddc39", orange: "#ff5722", purple: "#9c27b0", teal: "#009688" }; Object.keys(materialAccents).forEach((accent => { const color = materialAccents[accent]; themes.push(getMaterialColorScheme(accent, "light", color), getMaterialColorScheme(accent, "dark", color), { theme: { name: `material.${accent}.light.compact` }, baseThemeName: `material.${accent}.light` }, { theme: { name: `material.${accent}.dark.compact` }, baseThemeName: `material.${accent}.dark` }) })); exports.default = themes }, 81578: /*!****************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/animation/frame.js ***! \****************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "cancelAnimationFrame", { enumerable: true, get: function() { return _animation.cancelAnimationFrame } }); Object.defineProperty(exports, "requestAnimationFrame", { enumerable: true, get: function() { return _animation.requestAnimationFrame } }); var _animation = __webpack_require__( /*! ../common/core/animation */ 16826) }, 44229: /*!*************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/animation/fx.js ***! \*************************************************************/ function(module, exports, __webpack_require__) { exports.default = void 0; var _animation = __webpack_require__( /*! ../common/core/animation */ 16826); exports.default = _animation.fx; module.exports = exports.default; module.exports.default = exports.default }, 27287: /*!******************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/animation/presets.js ***! \******************************************************************/ function(module, exports, __webpack_require__) { exports.default = void 0; var _animation = __webpack_require__( /*! ../common/core/animation */ 16826); exports.default = _animation.animationPresets; module.exports = exports.default; module.exports.default = exports.default }, 54830: /*!******************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/animation/transition_executor.js ***! \******************************************************************************/ function(module, exports, __webpack_require__) { exports.default = void 0; var _animation = __webpack_require__( /*! ../common/core/animation */ 16826); exports.default = _animation.TransitionExecutor; module.exports = exports.default; module.exports.default = exports.default }, 92307: /*!*********************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/bundles/modules/core.js ***! \*********************************************************************/ function(module, __unused_webpack_exports, __webpack_require__) { const windowUtils = __webpack_require__( /*! ../../core/utils/window */ 3104); const window = windowUtils.getWindow(); const DevExpress = window.DevExpress = window.DevExpress || {}; const errors = DevExpress.errors = __webpack_require__( /*! ../../core/errors */ 87129); if (DevExpress._DEVEXTREME_BUNDLE_INITIALIZED) { throw errors.Error("E0024") } DevExpress._DEVEXTREME_BUNDLE_INITIALIZED = true; DevExpress.clientExporter = __webpack_require__( /*! ../../exporter */ 73549); DevExpress.excelExporter = __webpack_require__( /*! ../../common/export/excel */ 54594); DevExpress.pdfExporter = __webpack_require__( /*! ../../common/export/pdf */ 92731); DevExpress.VERSION = __webpack_require__( /*! ../../core/version */ 1956).version; DevExpress.assertDevExtremeVersion = __webpack_require__( /*! ../../core/version_check */ 48367).c; DevExpress.Class = __webpack_require__( /*! ../../core/class */ 55620); DevExpress.DOMComponent = __webpack_require__( /*! ../../core/dom_component */ 97832); DevExpress.Component = __webpack_require__( /*! ../../core/component */ 17863).Component; DevExpress.registerComponent = __webpack_require__( /*! ../../core/component_registrator */ 92848); DevExpress.devices = __webpack_require__( /*! ../../common/core/environment */ 63705).devices; DevExpress.trial = __webpack_require__( /*! ../../core/trial_panel */ 71669); DevExpress.Color = __webpack_require__( /*! ../../color */ 43101); const animationFrame = __webpack_require__( /*! ../../common/core/animation/frame */ 84096); DevExpress.utils = {}; DevExpress.utils.requestAnimationFrame = animationFrame.requestAnimationFrame; DevExpress.utils.cancelAnimationFrame = animationFrame.cancelAnimationFrame; DevExpress.utils.initMobileViewport = __webpack_require__( /*! ../../common/core/environment */ 63705).initMobileViewport; DevExpress.utils.getTimeZones = __webpack_require__( /*! ../../common/core/environment */ 63705).getTimeZones; DevExpress.utils.extendFromObject = __webpack_require__( /*! ../../core/utils/extend */ 52576).extendFromObject; DevExpress.utils.triggerShownEvent = __webpack_require__( /*! ../../common/core/events/visibility_change */ 18029).triggerShownEvent; DevExpress.utils.triggerHidingEvent = __webpack_require__( /*! ../../common/core/events/visibility_change */ 18029).triggerHidingEvent; DevExpress.utils.resetActiveElement = __webpack_require__( /*! ../../core/utils/dom */ 86858).resetActiveElement; DevExpress.utils.findBestMatches = __webpack_require__( /*! ../../core/utils/common */ 17781).findBestMatches; DevExpress.createQueue = __webpack_require__( /*! ../../core/utils/queue */ 65221).create; DevExpress.utils.dom = __webpack_require__( /*! ../../core/utils/dom */ 86858); DevExpress.utils.common = __webpack_require__( /*! ../../core/utils/common */ 17781); DevExpress.utils.date = __webpack_require__( /*! ../../core/utils/date */ 41380); DevExpress.utils.browser = __webpack_require__( /*! ../../core/utils/browser */ 48314); DevExpress.utils.inflector = __webpack_require__( /*! ../../core/utils/inflector */ 53124); DevExpress.utils.iterator = __webpack_require__( /*! ../../core/utils/iterator */ 21274); DevExpress.utils.readyCallbacks = __webpack_require__( /*! ../../core/utils/ready_callbacks */ 3122); DevExpress.utils.resizeCallbacks = __webpack_require__( /*! ../../core/utils/resize_callbacks */ 63283); DevExpress.utils.console = __webpack_require__( /*! ../../core/utils/console */ 31951); DevExpress.utils.string = __webpack_require__( /*! ../../core/utils/string */ 54497); DevExpress.utils.support = __webpack_require__( /*! ../../core/utils/support */ 4785); DevExpress.utils.ajax = __webpack_require__( /*! ../../core/utils/ajax */ 78670); DevExpress.viewPort = __webpack_require__( /*! ../../core/utils/view_port */ 55355).value; DevExpress.hideTopOverlay = __webpack_require__( /*! ../../common/core/environment */ 63705).hideTopOverlay; DevExpress.formatHelper = __webpack_require__( /*! ../../format_helper */ 2082); DevExpress.config = __webpack_require__( /*! ../../common */ 83077).config; DevExpress.animationPresets = __webpack_require__( /*! ../../common/core/animation/presets/presets */ 61310).presets; DevExpress.fx = __webpack_require__( /*! ../../common/core/animation */ 16826).fx; DevExpress.TransitionExecutor = __webpack_require__( /*! ../../common/core/animation/transition_executor/transition_executor */ 33054).TransitionExecutor; DevExpress.AnimationPresetCollection = __webpack_require__( /*! ../../common/core/animation/presets/presets */ 61310).PresetCollection; DevExpress.events = __webpack_require__( /*! ../../common/core/events */ 52391); DevExpress.events.click = __webpack_require__( /*! ../../common/core/events/click */ 64044); DevExpress.events.utils = __webpack_require__( /*! ../../common/core/events/utils */ 98834); DevExpress.events.GestureEmitter = __webpack_require__( /*! ../../common/core/events/gesture/emitter.gesture */ 85915); DevExpress.localization = __webpack_require__( /*! ../../common/core/localization */ 46795); DevExpress.templateRendered = __webpack_require__( /*! ../../core/templates/template_base */ 42186).renderedCallbacks; DevExpress.setTemplateEngine = __webpack_require__( /*! ../../core/templates/template_engine_registry */ 35155).setTemplateEngine; module.exports = DevExpress }, 11166: /*!****************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/bundles/modules/core.legacy.js ***! \****************************************************************************/ function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { __webpack_require__( /*! ../../excel_exporter */ 6285); __webpack_require__( /*! ../../pdf_exporter */ 72134); __webpack_require__( /*! ../../mobile/hide_top_overlay */ 90270); __webpack_require__( /*! ../../mobile/init_mobile_viewport */ 21113); __webpack_require__( /*! ../../file_management/custom_provider */ 85096); __webpack_require__( /*! ../../file_management/error */ 46327); __webpack_require__( /*! ../../file_management/file_system_item */ 53093); __webpack_require__( /*! ../../file_management/object_provider */ 76856); __webpack_require__( /*! ../../file_management/provider_base */ 65266); __webpack_require__( /*! ../../file_management/remote_provider */ 80175); __webpack_require__( /*! ../../events */ 69786); __webpack_require__( /*! ../../time_zone_utils */ 53200); __webpack_require__( /*! ../../core/config */ 66636); __webpack_require__( /*! ../../core/devices */ 65951); __webpack_require__( /*! ../../core/set_template_engine */ 91366); __webpack_require__( /*! ../../core/templates/template */ 67872); __webpack_require__( /*! ../../animation/frame */ 81578); __webpack_require__( /*! ../../animation/fx */ 44229); __webpack_require__( /*! ../../animation/presets */ 27287); __webpack_require__( /*! ../../animation/transition_executor */ 54830); __webpack_require__( /*! ../../localization/globalize/core */ 16615); __webpack_require__( /*! ../../localization/globalize/message */ 30725); __webpack_require__( /*! ../../localization/globalize/number */ 36069); __webpack_require__( /*! ../../localization/globalize/date */ 94348); __webpack_require__( /*! ../../localization/globalize/currency */ 89207) }, 54844: /*!*********************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/bundles/modules/data.js ***! \*********************************************************************/ function(module, __unused_webpack_exports, __webpack_require__) { const DevExpress = __webpack_require__( /*! ./core */ 92307); const errors = __webpack_require__( /*! ../../core/errors */ 87129); module.exports = DevExpress.data = DevExpress.data || {}; Object.defineProperty(DevExpress.data, "errorHandler", { get: function() { return __webpack_require__( /*! ../../common/data */ 11036).errorHandler }, set: function(value) { errors.log("W0003", "DevExpress.data", "errorHandler", "21.1", "Use the 'setErrorHandler' method instead"); __webpack_require__( /*! ../../common/data/errors */ 82812).setErrorHandler(value) } }); Object.defineProperty(DevExpress.data, "_errorHandler", { get: function() { return __webpack_require__( /*! ../../common/data/errors */ 82812).handleError }, set: function(value) { errors.log("W0003", "DevExpress.data", "_errorHandler", "21.1", "Use the 'setErrorHandler' method instead"); __webpack_require__( /*! ../../common/data/errors */ 82812).setErrorHandler(value) } }); DevExpress.data.setErrorHandler = __webpack_require__( /*! ../../common/data/errors */ 82812).setErrorHandler; DevExpress.data.DataSource = __webpack_require__( /*! ../../common/data/data_source */ 14479); DevExpress.data.query = __webpack_require__( /*! ../../common/data/query */ 30771); DevExpress.data.Store = __webpack_require__( /*! ../../data/abstract_store */ 77735); DevExpress.data.ArrayStore = __webpack_require__( /*! ../../common/data/array_store */ 80556); DevExpress.data.CustomStore = __webpack_require__( /*! ../../common/data/custom_store */ 63326).CustomStore; DevExpress.data.LocalStore = __webpack_require__( /*! ../../common/data/local_store */ 71790); DevExpress.data.base64_encode = __webpack_require__( /*! ../../common/data/utils */ 89358).base64_encode; DevExpress.data.applyChanges = __webpack_require__( /*! ../../common/data/apply_changes */ 99745); DevExpress.data.Guid = __webpack_require__( /*! ../../core/guid */ 19427); DevExpress.data.utils = {}; DevExpress.data.utils.compileGetter = __webpack_require__( /*! ../../core/utils/data */ 31e3).compileGetter; DevExpress.data.utils.compileSetter = __webpack_require__( /*! ../../core/utils/data */ 31e3).compileSetter; DevExpress.EndpointSelector = __webpack_require__( /*! ../../common/data/endpoint_selector */ 44180); DevExpress.data.queryImpl = __webpack_require__( /*! ../../common/data/query_implementation */ 84816).queryImpl; DevExpress.data.queryAdapters = __webpack_require__( /*! ../../common/data/query_adapters */ 5842); const dataUtils = __webpack_require__( /*! ../../common/data/utils */ 89358); DevExpress.data.utils.normalizeBinaryCriterion = dataUtils.normalizeBinaryCriterion; DevExpress.data.utils.normalizeSortingInfo = dataUtils.normalizeSortingInfo; DevExpress.data.utils.errorMessageFromXhr = dataUtils.errorMessageFromXhr; DevExpress.data.utils.aggregators = dataUtils.aggregators; DevExpress.data.utils.keysEqual = dataUtils.keysEqual; DevExpress.data.utils.isDisjunctiveOperator = dataUtils.isDisjunctiveOperator; DevExpress.data.utils.isConjunctiveOperator = dataUtils.isConjunctiveOperator; DevExpress.data.utils.processRequestResultLock = dataUtils.processRequestResultLock; DevExpress.data.utils.toComparable = __webpack_require__( /*! ../../core/utils/data */ 31e3).toComparable; DevExpress.data.utils.multiLevelGroup = __webpack_require__( /*! ../../common/data/store_helper */ 66177).multiLevelGroup; DevExpress.data.utils.arrangeSortingInfo = __webpack_require__( /*! ../../common/data/store_helper */ 66177).arrangeSortingInfo; DevExpress.data.utils.normalizeDataSourceOptions = __webpack_require__( /*! ../../common/data/data_source/utils */ 97169).normalizeDataSourceOptions }, 23555: /*!****************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/bundles/modules/data.legacy.js ***! \****************************************************************************/ function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { __webpack_require__( /*! ../../data/errors */ 74760); __webpack_require__( /*! ../../data/data_source */ 47283); __webpack_require__( /*! ../../data/query */ 22567); __webpack_require__( /*! ../../data/abstract_store */ 77735); __webpack_require__( /*! ../../data/array_store */ 67664); __webpack_require__( /*! ../../data/custom_store */ 37754); __webpack_require__( /*! ../../data/local_store */ 1242); __webpack_require__( /*! ../../data/utils */ 99354); __webpack_require__( /*! ../../data/apply_changes */ 50797); __webpack_require__( /*! ../../core/guid */ 19427); __webpack_require__( /*! ../../core/utils/data */ 31e3); __webpack_require__( /*! ../../data/endpoint_selector */ 73192); __webpack_require__( /*! ../../data/utils */ 99354) }, 71043: /*!***************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/bundles/modules/data.odata.js ***! \***************************************************************************/ function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { __webpack_require__( /*! ./data */ 54844); DevExpress.data.ODataStore = __webpack_require__( /*! ../../common/data/odata/store */ 29284); DevExpress.data.ODataContext = __webpack_require__( /*! ../../common/data/odata/context */ 34170); DevExpress.data.utils = DevExpress.data.utils || {}; DevExpress.data.utils.odata = {}; DevExpress.data.utils.odata.keyConverters = __webpack_require__( /*! ../../common/data/odata/utils */ 8056).keyConverters; DevExpress.data.EdmLiteral = __webpack_require__( /*! ../../common/data/odata/utils */ 8056).EdmLiteral; const ODataUtilsModule = __webpack_require__( /*! ../../common/data/odata/utils */ 8056); DevExpress.data.utils.odata.serializePropName = ODataUtilsModule.serializePropName; DevExpress.data.utils.odata.serializeValue = ODataUtilsModule.serializeValue; DevExpress.data.utils.odata.serializeKey = ODataUtilsModule.serializeKey; DevExpress.data.utils.odata.sendRequest = ODataUtilsModule.sendRequest; DevExpress.data.queryAdapters = DevExpress.data.queryAdapters || {}; DevExpress.data.queryAdapters.odata = __webpack_require__( /*! ../../common/data/odata/query_adapter */ 65001).odata }, 42190: /*!**********************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/bundles/modules/data.odata.legacy.js ***! \**********************************************************************************/ function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { __webpack_require__( /*! ./data */ 54844); __webpack_require__( /*! ../../data/odata/store */ 25184); __webpack_require__( /*! ../../data/odata/context */ 87062); __webpack_require__( /*! ../../data/odata/utils */ 57076) }, 73338: /*!********************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/bundles/modules/file_management.js ***! \********************************************************************************/ function(module, __unused_webpack_exports, __webpack_require__) { var _core = _interopRequireDefault(__webpack_require__( /*! ./core */ 92307)); var _error = _interopRequireDefault(__webpack_require__( /*! ../../file_management/error */ 46327)); var _file_system_item = _interopRequireDefault(__webpack_require__( /*! ../../file_management/file_system_item */ 53093)); var _object_provider = _interopRequireDefault(__webpack_require__( /*! ../../file_management/object_provider */ 76856)); var _remote_provider = _interopRequireDefault(__webpack_require__( /*! ../../file_management/remote_provider */ 80175)); var _custom_provider = _interopRequireDefault(__webpack_require__( /*! ../../file_management/custom_provider */ 85096)); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } module.exports = _core.default.fileManagement = _core.default.fileManagement || {}; _core.default.fileManagement.FileSystemError = _error.default; _core.default.fileManagement.FileSystemItem = _file_system_item.default; _core.default.fileManagement.ObjectFileSystemProvider = _object_provider.default; _core.default.fileManagement.RemoteFileSystemProvider = _remote_provider.default; _core.default.fileManagement.CustomFileSystemProvider = _custom_provider.default }, 67712: /*!***************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/bundles/modules/parts/core.js ***! \***************************************************************************/ function(module, __unused_webpack_exports, __webpack_require__) { const DevExpress = __webpack_require__( /*! ../../../bundles/modules/core */ 92307); __webpack_require__( /*! ../../../bundles/modules/core.legacy */ 11166); __webpack_require__( /*! ../../../integration/jquery */ 21001); __webpack_require__( /*! ../../../integration/knockout */ 34563); __webpack_require__( /*! ../../../common/core/localization/globalize/core */ 23805); __webpack_require__( /*! ../../../common/core/localization/globalize/message */ 84207); __webpack_require__( /*! ../../../common/core/localization/globalize/number */ 13203); __webpack_require__( /*! ../../../common/core/localization/globalize/date */ 99862); __webpack_require__( /*! ../../../common/core/localization/globalize/currency */ 869); __webpack_require__( /*! ../../../common/core/events/click */ 64044); __webpack_require__( /*! ../../../common/core/events/contextmenu */ 80248); __webpack_require__( /*! ../../../common/core/events/double_click */ 5636); __webpack_require__( /*! ../../../common/core/events/drag */ 59144); __webpack_require__( /*! ../../../common/core/events/hold */ 68095); __webpack_require__( /*! ../../../common/core/events/hover */ 638); __webpack_require__( /*! ../../../common/core/events/pointer */ 89797); __webpack_require__( /*! ../../../common/core/events/swipe */ 80250); __webpack_require__( /*! ../../../common/core/events/transform */ 37008); module.exports = DevExpress }, 51323: /*!***************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/bundles/modules/parts/data.js ***! \***************************************************************************/ function(module, __unused_webpack_exports, __webpack_require__) { const DevExpress = __webpack_require__( /*! ./core */ 67712); const data = DevExpress.data = __webpack_require__( /*! ../../../bundles/modules/data */ 54844); __webpack_require__( /*! ../../../bundles/modules/data.legacy */ 23555); data.odata = __webpack_require__( /*! ../../../bundles/modules/data.odata */ 71043); __webpack_require__( /*! ../../../bundles/modules/data.odata.legacy */ 42190); module.exports = data }, 18899: /*!**************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/bundles/modules/parts/file_management.js ***! \**************************************************************************************/ function(module, __unused_webpack_exports, __webpack_require__) { var _core = (e = __webpack_require__( /*! ./core */ 67712), e && e.__esModule ? e : { default: e }); var e; const fileManagement = __webpack_require__( /*! ../../../bundles/modules/file_management */ 73338); _core.default.fileManagement = fileManagement; module.exports = fileManagement }, 79178: /*!***********************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/bundles/modules/parts/widgets-base.js ***! \***********************************************************************************/ function(module, __unused_webpack_exports, __webpack_require__) { const DevExpress = __webpack_require__( /*! ./core */ 67712); __webpack_require__( /*! ./data */ 51323); __webpack_require__( /*! ./file_management */ 18899); const ui = DevExpress.ui = __webpack_require__( /*! ../../../bundles/modules/ui */ 57190); ui.themes = __webpack_require__( /*! ../../../ui/themes */ 52071); ui.setTemplateEngine = __webpack_require__( /*! ../../../core/templates/template_engine_registry */ 35155).setTemplateEngine; ui.dialog = __webpack_require__( /*! ../../../ui/dialog */ 35757); ui.notify = __webpack_require__( /*! ../../../ui/notify */ 93380); ui.repaintFloatingActionButton = __webpack_require__( /*! ../../../ui/speed_dial_action/repaint_floating_action_button */ 92725); ui.hideToasts = __webpack_require__( /*! ../../../ui/toast/hide_toasts */ 41792); ui.dxActionSheet = __webpack_require__( /*! ../../../ui/action_sheet */ 45263); ui.dxAutocomplete = __webpack_require__( /*! ../../../ui/autocomplete */ 93485); ui.dxBox = __webpack_require__( /*! ../../../ui/box */ 91204); ui.dxButton = __webpack_require__( /*! ../../../ui/button */ 64973); ui.dxDropDownButton = __webpack_require__( /*! ../../../ui/drop_down_button */ 56582); ui.dxButtonGroup = __webpack_require__( /*! ../../../ui/button_group */ 17809); ui.dxCalendar = __webpack_require__( /*! ../../../ui/calendar */ 22195); ui.dxCheckBox = __webpack_require__( /*! ../../../ui/check_box */ 94319); ui.dxColorBox = __webpack_require__( /*! ../../../ui/color_box */ 87928); ui.dxChat = __webpack_require__( /*! ../../../ui/chat */ 73571); ui.dxDateBox = __webpack_require__( /*! ../../../ui/date_box */ 2739); ui.dxDateRangeBox = __webpack_require__( /*! ../../../ui/date_range_box */ 45453); ui.dxDrawer = __webpack_require__( /*! ../../../ui/drawer */ 7968); ui.dxDeferRendering = __webpack_require__( /*! ../../../ui/defer_rendering */ 41302); ui.dxDropDownBox = __webpack_require__( /*! ../../../ui/drop_down_box */ 74417); ui.dxFileUploader = __webpack_require__( /*! ../../../ui/file_uploader */ 26980); ui.dxForm = __webpack_require__( /*! ../../../ui/form */ 74075); ui.dxGallery = __webpack_require__( /*! ../../../ui/gallery */ 89987); ui.dxHtmlEditor = __webpack_require__( /*! ../../../ui/html_editor */ 16802); ui.dxInformer = __webpack_require__( /*! ../../../ui/informer */ 22363); ui.dxList = __webpack_require__( /*! ../../../ui/list */ 3121); ui.dxLoadIndicator = __webpack_require__( /*! ../../../ui/load_indicator */ 11979); ui.dxLoadPanel = __webpack_require__( /*! ../../../ui/load_panel */ 31876); ui.dxLookup = __webpack_require__( /*! ../../../ui/lookup */ 99203); ui.dxMap = __webpack_require__( /*! ../../../ui/map */ 55211); ui.dxMultiView = __webpack_require__( /*! ../../../ui/multi_view */ 24150); ui.dxNumberBox = __webpack_require__( /*! ../../../ui/number_box */ 48042); ui.dxOverlay = __webpack_require__( /*! ../../../ui/overlay/ui.overlay */ 89132); ui.dxPagination = __webpack_require__( /*! ../../../ui/pagination */ 38389); ui.dxPopover = __webpack_require__( /*! ../../../ui/popover */ 46184); ui.dxPopup = __webpack_require__( /*! ../../../ui/popup */ 97643); ui.dxProgressBar = __webpack_require__( /*! ../../../ui/progress_bar */ 58436); ui.dxRadioGroup = __webpack_require__( /*! ../../../ui/radio_group */ 84798); ui.dxRangeSlider = __webpack_require__( /*! ../../../ui/range_slider */ 80790); ui.dxResizable = __webpack_require__( /*! ../../../ui/resizable */ 28416); ui.dxResponsiveBox = __webpack_require__( /*! ../../../ui/responsive_box */ 43597); ui.dxScrollView = __webpack_require__( /*! ../../../ui/scroll_view */ 91374); ui.dxSelectBox = __webpack_require__( /*! ../../../ui/select_box */ 60695); ui.dxSlider = __webpack_require__( /*! ../../../ui/slider */ 56220); ui.dxSpeedDialAction = __webpack_require__( /*! ../../../ui/speed_dial_action */ 67924); ui.dxStepper = __webpack_require__( /*! ../../../ui/stepper */ 87244); ui.dxSplitter = __webpack_require__( /*! ../../../ui/splitter */ 78254); ui.dxSwitch = __webpack_require__( /*! ../../../ui/switch */ 91029); ui.dxTabPanel = __webpack_require__( /*! ../../../ui/tab_panel */ 78175); ui.dxTabs = __webpack_require__( /*! ../../../ui/tabs */ 94385); ui.dxTagBox = __webpack_require__( /*! ../../../ui/tag_box */ 4575); ui.dxTextArea = __webpack_require__( /*! ../../../ui/text_area */ 23116); ui.dxTextBox = __webpack_require__( /*! ../../../ui/text_box */ 20780); ui.dxTileView = __webpack_require__( /*! ../../../ui/tile_view */ 96993); ui.dxToast = __webpack_require__( /*! ../../../ui/toast */ 36574); ui.dxToolbar = __webpack_require__( /*! ../../../ui/toolbar */ 2850); ui.dxTooltip = __webpack_require__( /*! ../../../ui/tooltip */ 93370); ui.dxTrackBar = __webpack_require__( /*! ../../../ui/track_bar */ 76256); ui.dxDraggable = __webpack_require__( /*! ../../../ui/draggable */ 5298); ui.dxSortable = __webpack_require__( /*! ../../../ui/sortable */ 95305); DevExpress.validationEngine = __webpack_require__( /*! ../../../ui/validation_engine */ 19391); ui.dxValidationSummary = __webpack_require__( /*! ../../../ui/validation_summary */ 10585); ui.dxValidationGroup = __webpack_require__( /*! ../../../ui/validation_group */ 16390); ui.dxValidator = __webpack_require__( /*! ../../../ui/validator */ 71775); ui.CollectionWidget = __webpack_require__( /*! ../../../ui/collection/ui.collection_widget.edit */ 7607); ui.dxDropDownEditor = __webpack_require__( /*! ../../../ui/drop_down_editor/ui.drop_down_editor */ 99142); module.exports = ui }, 84789: /*!**********************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/bundles/modules/parts/widgets-web.js ***! \**********************************************************************************/ function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { const data = __webpack_require__( /*! ./data */ 51323); const ui = __webpack_require__( /*! ./widgets-base */ 79178); ui.dxAccordion = __webpack_require__( /*! ../../../ui/accordion */ 30543); ui.dxContextMenu = __webpack_require__( /*! ../../../ui/context_menu */ 34378); ui.dxDataGrid = __webpack_require__( /*! ../../../ui/data_grid */ 4920); ui.dxTreeList = __webpack_require__( /*! ../../../ui/tree_list */ 21872); ui.dxCardView = __webpack_require__( /*! ../../../ui/card_view */ 44655); ui.dxMenu = __webpack_require__( /*! ../../../ui/menu */ 1614); ui.dxPivotGrid = __webpack_require__( /*! ../../../ui/pivot_grid */ 49344); ui.dxPivotGridFieldChooser = __webpack_require__( /*! ../../../ui/pivot_grid_field_chooser */ 55633); data.PivotGridDataSource = __webpack_require__( /*! ../../../ui/pivot_grid/data_source */ 55067); data.XmlaStore = __webpack_require__( /*! ../../../ui/pivot_grid/xmla_store */ 80445); ui.dxScheduler = __webpack_require__( /*! ../../../ui/scheduler */ 17636); ui.dxTreeView = __webpack_require__( /*! ../../../ui/tree_view */ 4313); ui.dxFilterBuilder = __webpack_require__( /*! ../../../ui/filter_builder */ 35299); ui.dxFileManager = __webpack_require__( /*! ../../../ui/file_manager */ 14247); ui.dxDiagram = __webpack_require__( /*! ../../../ui/diagram */ 87632); ui.dxGantt = __webpack_require__( /*! ../../../ui/gantt */ 16075) }, 57190: /*!*******************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/bundles/modules/ui.js ***! \*******************************************************************/ function(module, __unused_webpack_exports, __webpack_require__) { __webpack_require__( /*! ./core */ 92307); module.exports = DevExpress.ui = {} }, 43101: /*!******************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/color.js ***! \******************************************************/ function(module, exports) { exports.default = void 0; const standardColorNames = { aliceblue: "f0f8ff", antiquewhite: "faebd7", aqua: "00ffff", aquamarine: "7fffd4", azure: "f0ffff", beige: "f5f5dc", bisque: "ffe4c4", black: "000000", blanchedalmond: "ffebcd", blue: "0000ff", blueviolet: "8a2be2", brown: "a52a2a", burlywood: "deb887", cadetblue: "5f9ea0", chartreuse: "7fff00", chocolate: "d2691e", coral: "ff7f50", cornflowerblue: "6495ed", cornsilk: "fff8dc", crimson: "dc143c", cyan: "00ffff", darkblue: "00008b", darkcyan: "008b8b", darkgoldenrod: "b8860b", darkgray: "a9a9a9", darkgreen: "006400", darkgrey: "a9a9a9", darkkhaki: "bdb76b", darkmagenta: "8b008b", darkolivegreen: "556b2f", darkorange: "ff8c00", darkorchid: "9932cc", darkred: "8b0000", darksalmon: "e9967a", darkseagreen: "8fbc8f", darkslateblue: "483d8b", darkslategray: "2f4f4f", darkslategrey: "2f4f4f", darkturquoise: "00ced1", darkviolet: "9400d3", deeppink: "ff1493", deepskyblue: "00bfff", dimgray: "696969", dimgrey: "696969", dodgerblue: "1e90ff", feldspar: "d19275", firebrick: "b22222", floralwhite: "fffaf0", forestgreen: "228b22", fuchsia: "ff00ff", gainsboro: "dcdcdc", ghostwhite: "f8f8ff", gold: "ffd700", goldenrod: "daa520", gray: "808080", green: "008000", greenyellow: "adff2f", grey: "808080", honeydew: "f0fff0", hotpink: "ff69b4", indianred: "cd5c5c", indigo: "4b0082", ivory: "fffff0", khaki: "f0e68c", lavender: "e6e6fa", lavenderblush: "fff0f5", lawngreen: "7cfc00", lemonchiffon: "fffacd", lightblue: "add8e6", lightcoral: "f08080", lightcyan: "e0ffff", lightgoldenrodyellow: "fafad2", lightgray: "d3d3d3", lightgreen: "90ee90", lightgrey: "d3d3d3", lightpink: "ffb6c1", lightsalmon: "ffa07a", lightseagreen: "20b2aa", lightskyblue: "87cefa", lightslateblue: "8470ff", lightslategray: "778899", lightslategrey: "778899", lightsteelblue: "b0c4de", lightyellow: "ffffe0", lime: "00ff00", limegreen: "32cd32", linen: "faf0e6", magenta: "ff00ff", maroon: "800000", mediumaquamarine: "66cdaa", mediumblue: "0000cd", mediumorchid: "ba55d3", mediumpurple: "9370d8", mediumseagreen: "3cb371", mediumslateblue: "7b68ee", mediumspringgreen: "00fa9a", mediumturquoise: "48d1cc", mediumvioletred: "c71585", midnightblue: "191970", mintcream: "f5fffa", mistyrose: "ffe4e1", moccasin: "ffe4b5", navajowhite: "ffdead", navy: "000080", oldlace: "fdf5e6", olive: "808000", olivedrab: "6b8e23", orange: "ffa500", orangered: "ff4500", orchid: "da70d6", palegoldenrod: "eee8aa", palegreen: "98fb98", paleturquoise: "afeeee", palevioletred: "d87093", papayawhip: "ffefd5", peachpuff: "ffdab9", peru: "cd853f", pink: "ffc0cb", plum: "dda0dd", powderblue: "b0e0e6", purple: "800080", rebeccapurple: "663399", red: "ff0000", rosybrown: "bc8f8f", royalblue: "4169e1", saddlebrown: "8b4513", salmon: "fa8072", sandybrown: "f4a460", seagreen: "2e8b57", seashell: "fff5ee", sienna: "a0522d", silver: "c0c0c0", skyblue: "87ceeb", slateblue: "6a5acd", slategray: "708090", slategrey: "708090", snow: "fffafa", springgreen: "00ff7f", steelblue: "4682b4", tan: "d2b48c", teal: "008080", thistle: "d8bfd8", tomato: "ff6347", turquoise: "40e0d0", violet: "ee82ee", violetred: "d02090", wheat: "f5deb3", white: "ffffff", whitesmoke: "f5f5f5", yellow: "ffff00", yellowgreen: "9acd32" }; const standardColorTypes = [{ re: /^rgb\((\d{1,3}),\s*(\d{1,3}),\s*(\d{1,3})\)$/, process: function(colorString) { return [parseInt(colorString[1], 10), parseInt(colorString[2], 10), parseInt(colorString[3], 10)] } }, { re: /^rgba\((\d{1,3}),\s*(\d{1,3}),\s*(\d{1,3}),\s*(\d*\.*\d+)\)$/, process: function(colorString) { return [parseInt(colorString[1], 10), parseInt(colorString[2], 10), parseInt(colorString[3], 10), parseFloat(colorString[4])] } }, { re: /^#([a-f0-9]{2})([a-f0-9]{2})([a-f0-9]{2})$/, process: function(colorString) { return [parseInt(colorString[1], 16), parseInt(colorString[2], 16), parseInt(colorString[3], 16)] } }, { re: /^#([a-f0-9]{2})([a-f0-9]{2})([a-f0-9]{2})([a-f0-9]{2})$/, process: function(colorString) { return [parseInt(colorString[1], 16), parseInt(colorString[2], 16), parseInt(colorString[3], 16), Number((parseInt(colorString[4], 16) / 255).toFixed(2))] } }, { re: /^#([a-f0-9]{1})([a-f0-9]{1})([a-f0-9]{1})([a-f0-9]{1})$/, process: function(colorString) { return [parseInt(colorString[1] + colorString[1], 16), parseInt(colorString[2] + colorString[2], 16), parseInt(colorString[3] + colorString[3], 16), Number((parseInt(colorString[4] + colorString[4], 16) / 255).toFixed(2))] } }, { re: /^#([a-f0-9]{1})([a-f0-9]{1})([a-f0-9]{1})$/, process: function(colorString) { return [parseInt(colorString[1] + colorString[1], 16), parseInt(colorString[2] + colorString[2], 16), parseInt(colorString[3] + colorString[3], 16)] } }, { re: /^hsv\((\d{1,3}),\s*(\d{1,3}),\s*(\d{1,3})\)$/, process: function(colorString) { const h = parseInt(colorString[1], 10); const s = parseInt(colorString[2], 10); const v = parseInt(colorString[3], 10); const rgb = hsvToRgb(h, s, v); return [rgb[0], rgb[1], rgb[2], 1, [h, s, v]] } }, { re: /^hsl\((\d{1,3}),\s*(\d{1,3}),\s*(\d{1,3})\)$/, process: function(colorString) { const h = parseInt(colorString[1], 10); const s = parseInt(colorString[2], 10); const l = parseInt(colorString[3], 10); const rgb = hslToRgb(h, s, l); return [rgb[0], rgb[1], rgb[2], 1, null, [h, s, l]] } }]; const _round = Math.round; function Color(value) { this.baseColor = value; let color; if (value) { color = String(value).toLowerCase().replace(/ /g, ""); color = standardColorNames[color] ? "#" + standardColorNames[color] : color; color = function(color) { if ("transparent" === color) { return [0, 0, 0, 0] } let i = 0; const ii = standardColorTypes.length; let str; for (; i < ii; ++i) { str = standardColorTypes[i].re.exec(color); if (str) { return standardColorTypes[i].process(str) } } return null }(color) } if (!color) { this.colorIsInvalid = true } color = color || {}; this.r = normalize(color[0]); this.g = normalize(color[1]); this.b = normalize(color[2]); this.a = normalize(color[3], 1, 1); if (color[4]) { this.hsv = { h: color[4][0], s: color[4][1], v: color[4][2] } } else { this.hsv = function(r, g, b) { const max = Math.max(r, g, b); const min = Math.min(r, g, b); const delta = max - min; let H; let S; let V = max; S = 0 === max ? 0 : 1 - min / max; if (max === min) { H = 0 } else { switch (max) { case r: H = (g - b) / delta * 60; if (g < b) { H += 360 } break; case g: H = (b - r) / delta * 60 + 120; break; case b: H = (r - g) / delta * 60 + 240 } } S *= 100; V *= 100 / 255; return { h: Math.round(H), s: Math.round(S), v: Math.round(V) } }(this.r, this.g, this.b) } if (color[5]) { this.hsl = { h: color[5][0], s: color[5][1], l: color[5][2] } } else { this.hsl = function(r, g, b) { r = convertTo01Bounds(r, 255); g = convertTo01Bounds(g, 255); b = convertTo01Bounds(b, 255); const max = Math.max(r, g, b); const min = Math.min(r, g, b); const maxMinSum = max + min; let h; let s; const l = maxMinSum / 2; if (max === min) { h = s = 0 } else { const delta = max - min; if (l > .5) { s = delta / (2 - maxMinSum) } else { s = delta / maxMinSum } h = function(r, g, b, delta) { const max = Math.max(r, g, b); switch (max) { case r: return (g - b) / delta + (g < b ? 6 : 0); case g: return (b - r) / delta + 2; case b: return (r - g) / delta + 4 } }(r, g, b, delta); h /= 6 } return { h: _round(360 * h), s: _round(100 * s), l: _round(100 * l) } }(this.r, this.g, this.b) } } function normalize(colorComponent, def, max) { def = def || 0; max = max || 255; return colorComponent < 0 || isNaN(colorComponent) ? def : colorComponent > max ? max : colorComponent } function hsvToRgb(h, s, v) { const index = Math.floor(h % 360 / 60); const vMin = (100 - s) * v / 100; const a = h % 60 / 60 * (v - vMin); const vInc = vMin + a; const vDec = v - a; let r; let g; let b; switch (index) { case 0: r = v; g = vInc; b = vMin; break; case 1: r = vDec; g = v; b = vMin; break; case 2: r = vMin; g = v; b = vInc; break; case 3: r = vMin; g = vDec; b = v; break; case 4: r = vInc; g = vMin; b = v; break; case 5: r = v; g = vMin; b = vDec } return [Math.round(2.55 * r), Math.round(2.55 * g), Math.round(2.55 * b)] } function makeColorTint(colorPart, h) { let colorTint = h; if ("r" === colorPart) { colorTint = h + 1 / 3 } if ("b" === colorPart) { colorTint = h - 1 / 3 } return colorTint } function hueToRgb(p, q, colorTint) { colorTint = function(colorTint) { if (colorTint < 0) { colorTint += 1 } if (colorTint > 1) { colorTint -= 1 } return colorTint }(colorTint); if (colorTint < 1 / 6) { return p + 6 * (q - p) * colorTint } if (colorTint < .5) { return q } if (colorTint < 2 / 3) { return p + (q - p) * (2 / 3 - colorTint) * 6 } return p } function hslToRgb(h, s, l) { let r; let g; let b; h = convertTo01Bounds(h, 360); s = convertTo01Bounds(s, 100); l = convertTo01Bounds(l, 100); if (0 === s) { r = g = b = l } else { const q = l < .5 ? l * (1 + s) : l + s - l * s; const p = 2 * l - q; r = hueToRgb(p, q, makeColorTint("r", h)); g = hueToRgb(p, q, makeColorTint("g", h)); b = hueToRgb(p, q, makeColorTint("b", h)) } return [_round(255 * r), _round(255 * g), _round(255 * b)] } function convertTo01Bounds(n, max) { n = Math.min(max, Math.max(0, parseFloat(n))); if (Math.abs(n - max) < 1e-6) { return 1 } return n % max / parseFloat(max) } function isIntegerBetweenMinAndMax(number, min, max) { min = min || 0; max = max || 255; if (number % 1 !== 0 || number < min || number > max || "number" !== typeof number || isNaN(number)) { return false } return true } Color.prototype = { constructor: Color, highlight: function(step) { step = step || 10; return this.alter(step).toHex() }, darken: function(step) { step = step || 10; return this.alter(-step).toHex() }, alter: function(step) { const result = new Color; result.r = normalize(this.r + step); result.g = normalize(this.g + step); result.b = normalize(this.b + step); return result }, blend: function(blendColor, opacity) { const other = blendColor instanceof Color ? blendColor : new Color(blendColor); const result = new Color; result.r = normalize(_round(this.r * (1 - opacity) + other.r * opacity)); result.g = normalize(_round(this.g * (1 - opacity) + other.g * opacity)); result.b = normalize(_round(this.b * (1 - opacity) + other.b * opacity)); return result }, toHex: function() { return r = this.r, g = this.g, b = this.b, "#" + (16777216 | r << 16 | g << 8 | b).toString(16).slice(1); var r, g, b }, getPureColor: function() { const rgb = hsvToRgb(this.hsv.h, 100, 100); return new Color("rgb(" + rgb.join(",") + ")") }, isValidHex: function(hex) { return /(^#[0-9A-F]{6}$)|(^#[0-9A-F]{3}$)/i.test(hex) }, isValidRGB: function(r, g, b) { if (!isIntegerBetweenMinAndMax(r) || !isIntegerBetweenMinAndMax(g) || !isIntegerBetweenMinAndMax(b)) { return false } return true }, isValidAlpha: function(a) { if (isNaN(a) || a < 0 || a > 1 || "number" !== typeof a) { return false } return true }, colorIsInvalid: false, fromHSL: function(hsl) { const color = new Color; const rgb = hslToRgb(hsl.h, hsl.s, hsl.l); color.r = rgb[0]; color.g = rgb[1]; color.b = rgb[2]; return color } }; exports.default = Color; module.exports = exports.default; module.exports.default = exports.default }, 83077: /*!*******************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/common.js ***! \*******************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "Guid", { enumerable: true, get: function() { return _guid.default } }); Object.defineProperty(exports, "config", { enumerable: true, get: function() { return _config.default } }); Object.defineProperty(exports, "setTemplateEngine", { enumerable: true, get: function() { return _set_template_engine.default } }); var _config = _interopRequireDefault(__webpack_require__( /*! ./common/config */ 66518)); var _guid = _interopRequireDefault(__webpack_require__( /*! ./common/guid */ 71037)); var _set_template_engine = _interopRequireDefault(__webpack_require__( /*! ./common/set_template_engine */ 32480)); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } }, 66518: /*!**************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/common/config.js ***! \**************************************************************/ function(module, exports, __webpack_require__) { exports.default = void 0; var _m_config = (e = __webpack_require__( /*! ../__internal/core/m_config */ 34338), e && e.__esModule ? e : { default: e }); var e; exports.default = _m_config.default; module.exports = exports.default; module.exports.default = exports.default }, 16826: /*!**********************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/common/core/animation.js ***! \**********************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "TransitionExecutor", { enumerable: true, get: function() { return _transition_executor.default } }); Object.defineProperty(exports, "animationPresets", { enumerable: true, get: function() { return _presets.default } }); Object.defineProperty(exports, "cancelAnimationFrame", { enumerable: true, get: function() { return _frame.cancelAnimationFrame } }); Object.defineProperty(exports, "fx", { enumerable: true, get: function() { return _fx.default } }); Object.defineProperty(exports, "requestAnimationFrame", { enumerable: true, get: function() { return _frame.requestAnimationFrame } }); var _frame = __webpack_require__( /*! ./animation/frame */ 84096); var _fx = _interopRequireDefault(__webpack_require__( /*! ./animation/fx */ 27075)); var _presets = _interopRequireDefault(__webpack_require__( /*! ./animation/presets */ 58049)); var _transition_executor = _interopRequireDefault(__webpack_require__( /*! ./animation/transition_executor */ 94680)); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } }, 88424: /*!*****************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/common/core/animation/easing.js ***! \*****************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { exports.convertTransitionTimingFuncToEasing = void 0; exports.getEasing = function(name) { return easing[name] }; exports.setEasing = function(value) { easing = value }; var _type = __webpack_require__( /*! ../../../core/utils/type */ 11528); const CSS_TRANSITION_EASING_REGEX = /cubic-bezier\((\d+(?:\.\d+)?)\s*,\s*(\d+(?:\.\d+)?)\s*,\s*(\d+(?:\.\d+)?)\s*,\s*(\d+(?:\.\d+)?)\)/; const TransitionTimingFuncMap = { linear: "cubic-bezier(0, 0, 1, 1)", swing: "cubic-bezier(0.445, 0.05, 0.55, 0.95)", ease: "cubic-bezier(0.25, 0.1, 0.25, 1)", "ease-in": "cubic-bezier(0.42, 0, 1, 1)", "ease-out": "cubic-bezier(0, 0, 0.58, 1)", "ease-in-out": "cubic-bezier(0.42, 0, 0.58, 1)" }; const polynomBezier = function(x1, y1, x2, y2) { const Cx = 3 * x1; const Bx = 3 * (x2 - x1) - Cx; const Ax = 1 - Cx - Bx; const Cy = 3 * y1; const By = 3 * (y2 - y1) - Cy; const Ay = 1 - Cy - By; const bezierX = function(t) { return t * (Cx + t * (Bx + t * Ax)) }; const derivativeX = function(t) { return Cx + t * (2 * Bx + 3 * t * Ax) }; return function(t) { return function(t) { return t * (Cy + t * (By + t * Ay)) }(function(t) { let x = t; let i = 0; let z; while (i < 14) { z = bezierX(x) - t; if (Math.abs(z) < .001) { break } x -= z / derivativeX(x); i++ } return x }(t)) } }; let easing = {}; exports.convertTransitionTimingFuncToEasing = function(cssTransitionEasing) { cssTransitionEasing = TransitionTimingFuncMap[cssTransitionEasing] || cssTransitionEasing; let coeffs = cssTransitionEasing.match(CSS_TRANSITION_EASING_REGEX); let forceName; if (!coeffs) { forceName = "linear"; coeffs = TransitionTimingFuncMap[forceName].match(CSS_TRANSITION_EASING_REGEX) } coeffs = coeffs.slice(1, 5); for (let i = 0; i < coeffs.length; i++) { coeffs[i] = parseFloat(coeffs[i]) } const easingName = forceName || "cubicbezier_" + coeffs.join("_").replace(/\./g, "p"); if (!(0, _type.isFunction)(easing[easingName])) { easing[easingName] = function(x, t, b, c, d) { return c * polynomBezier(coeffs[0], coeffs[1], coeffs[2], coeffs[3])(t / d) + b } } return easingName } }, 84096: /*!****************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/common/core/animation/frame.js ***! \****************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { exports.cancelAnimationFrame = function() { setAnimationFrameMethods(); cancel.apply(window, arguments) }; exports.requestAnimationFrame = function() { setAnimationFrameMethods(); return request.apply(window, arguments) }; var _window = __webpack_require__( /*! ../../../core/utils/window */ 3104); var _call_once = (e = __webpack_require__( /*! ../../../core/utils/call_once */ 13630), e && e.__esModule ? e : { default: e }); var e; const window = (0, _window.hasWindow)() ? (0, _window.getWindow)() : {}; let request = function(callback) { return setTimeout(callback, 16.666666666666668) }; let cancel = function(requestID) { clearTimeout(requestID) }; const setAnimationFrameMethods = (0, _call_once.default)((function() { const nativeRequest = window.requestAnimationFrame || window.webkitRequestAnimationFrame || window.mozRequestAnimationFrame || window.oRequestAnimationFrame || window.msRequestAnimationFrame; const nativeCancel = window.cancelAnimationFrame || window.webkitCancelAnimationFrame || window.mozCancelAnimationFrame || window.oCancelAnimationFrame || window.msCancelAnimationFrame; if (nativeRequest && nativeCancel) { request = nativeRequest; cancel = nativeCancel } })) }, 27075: /*!*************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/common/core/animation/fx.js ***! \*************************************************************************/ function(module, exports, __webpack_require__) { exports.default = void 0; var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../../core/renderer */ 64553)); var _window = __webpack_require__( /*! ../../../core/utils/window */ 3104); var _events_engine = _interopRequireDefault(__webpack_require__( /*! ../events/core/events_engine */ 92774)); var _errors = _interopRequireDefault(__webpack_require__( /*! ../../../core/errors */ 87129)); var _element = __webpack_require__( /*! ../../../core/element */ 61404); var _extend = __webpack_require__( /*! ../../../core/utils/extend */ 52576); var _type = __webpack_require__( /*! ../../../core/utils/type */ 11528); var _iterator = __webpack_require__( /*! ../../../core/utils/iterator */ 21274); var _translator = __webpack_require__( /*! ./translator */ 88603); var _easing = __webpack_require__( /*! ./easing */ 88424); var _frame = __webpack_require__( /*! ./frame */ 84096); var _m_support = _interopRequireDefault(__webpack_require__( /*! ../../../__internal/core/utils/m_support */ 85991)); var _position = _interopRequireDefault(__webpack_require__( /*! ./position */ 3030)); var _remove = __webpack_require__( /*! ../events/remove */ 28630); var _index = __webpack_require__( /*! ../events/utils/index */ 98834); var _deferred = __webpack_require__( /*! ../../../core/utils/deferred */ 87739); var _common = __webpack_require__( /*! ../../../core/utils/common */ 17781); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } const window = (0, _window.getWindow)(); const removeEventName = (0, _index.addNamespace)(_remove.removeEvent, "dxFX"); const RELATIVE_VALUE_REGEX = /^([+-])=(.*)/i; const TransitionAnimationStrategy = { initAnimation: function($element, config) { $element.css({ transitionProperty: "none" }); if ("string" === typeof config.from) { $element.addClass(config.from) } else { setProps($element, config.from) } const that = this; const deferred = new _deferred.Deferred; const cleanupWhen = config.cleanupWhen; config.transitionAnimation = { deferred: deferred, finish: function() { that._finishTransition($element); if (cleanupWhen) { (0, _deferred.when)(deferred, cleanupWhen).always((function() { that._cleanup($element, config) })) } else { that._cleanup($element, config) } deferred.resolveWith($element, [config, $element]) } }; this._completeAnimationCallback($element, config).done((function() { config.transitionAnimation.finish() })).fail((function() { deferred.rejectWith($element, [config, $element]) })); if (!config.duration) { config.transitionAnimation.finish() } $element.css("transform") }, animate: function($element, config) { this._startAnimation($element, config); return config.transitionAnimation.deferred.promise() }, _completeAnimationCallback: function($element, config) { const that = this; const startTime = Date.now() + config.delay; const deferred = new _deferred.Deferred; const transitionEndFired = new _deferred.Deferred; const simulatedTransitionEndFired = new _deferred.Deferred; let simulatedEndEventTimer; const transitionEndEventFullName = _m_support.default.transitionEndEventName() + ".dxFX"; config.transitionAnimation.cleanup = function() { clearTimeout(simulatedEndEventTimer); clearTimeout(waitForJSCompleteTimer); _events_engine.default.off($element, transitionEndEventFullName); _events_engine.default.off($element, removeEventName) }; _events_engine.default.one($element, transitionEndEventFullName, (function() { if (Date.now() - startTime >= config.duration) { transitionEndFired.reject() } })); _events_engine.default.off($element, removeEventName); _events_engine.default.on($element, removeEventName, (function() { that.stop($element, config); deferred.reject() })); const waitForJSCompleteTimer = setTimeout((function() { simulatedEndEventTimer = setTimeout((function() { simulatedTransitionEndFired.reject() }), config.duration + config.delay + fx._simulatedTransitionEndDelay); (0, _deferred.when)(transitionEndFired, simulatedTransitionEndFired).fail(function() { deferred.resolve() }.bind(this)) })); return deferred.promise() }, _startAnimation: function($element, config) { $element.css({ transitionProperty: "all", transitionDelay: config.delay + "ms", transitionDuration: config.duration + "ms", transitionTimingFunction: config.easing }); if ("string" === typeof config.to) { $element[0].className += " " + config.to } else if (config.to) { setProps($element, config.to) } }, _finishTransition: function($element) { $element.css("transition", "none") }, _cleanup: function($element, config) { config.transitionAnimation.cleanup(); if ("string" === typeof config.from) { $element.removeClass(config.from); $element.removeClass(config.to) } }, stop: function($element, config, jumpToEnd) { if (!config) { return } if (jumpToEnd) { config.transitionAnimation.finish() } else { if ((0, _type.isPlainObject)(config.to)) { (0, _iterator.each)(config.to, (function(key) { $element.css(key, $element.css(key)) })) } this._finishTransition($element); this._cleanup($element, config) } } }; const FrameAnimationStrategy = { initAnimation: function($element, config) { setProps($element, config.from) }, animate: function($element, config) { const deferred = new _deferred.Deferred; const that = this; if (!config) { return deferred.reject().promise() }(0, _iterator.each)(config.to, (function(prop) { if (void 0 === config.from[prop]) { config.from[prop] = that._normalizeValue($element.css(prop)) } })); if (config.to.transform) { config.from.transform = that._parseTransform(config.from.transform); config.to.transform = that._parseTransform(config.to.transform) } config.frameAnimation = { to: config.to, from: config.from, currentValue: config.from, easing: (0, _easing.convertTransitionTimingFuncToEasing)(config.easing), duration: config.duration, startTime: (new Date).valueOf(), finish: function() { this.currentValue = this.to; this.draw(); (0, _frame.cancelAnimationFrame)(config.frameAnimation.animationFrameId); deferred.resolve() }, draw: function() { if (config.draw) { config.draw(this.currentValue); return } const currentValue = (0, _extend.extend)({}, this.currentValue); if (currentValue.transform) { currentValue.transform = (0, _iterator.map)(currentValue.transform, (function(value, prop) { if ("translate" === prop) { return (0, _translator.getTranslateCss)(value) } else if ("scale" === prop) { return "scale(" + value + ")" } else if ("rotate" === prop.substr(0, prop.length - 1)) { return prop + "(" + value + "deg)" } })).join(" ") } $element.css(currentValue) } }; if (config.delay) { config.frameAnimation.startTime += config.delay; config.frameAnimation.delayTimeout = setTimeout((function() { that._startAnimation($element, config) }), config.delay) } else { that._startAnimation($element, config) } return deferred.promise() }, _startAnimation: function($element, config) { _events_engine.default.off($element, removeEventName); _events_engine.default.on($element, removeEventName, (function() { if (config.frameAnimation) { (0, _frame.cancelAnimationFrame)(config.frameAnimation.animationFrameId) } })); this._animationStep($element, config) }, _parseTransform: function(transformString) { const result = {}; (0, _iterator.each)(transformString.match(/\w+\d*\w*\([^)]*\)\s*/g), (function(i, part) { const translateData = (0, _translator.parseTranslate)(part); const scaleData = part.match(/scale\((.+?)\)/); const rotateData = part.match(/(rotate.)\((.+)deg\)/); if (translateData) { result.translate = translateData } if (scaleData && scaleData[1]) { result.scale = parseFloat(scaleData[1]) } if (rotateData && rotateData[1]) { result[rotateData[1]] = parseFloat(rotateData[2]) } })); return result }, stop: function($element, config, jumpToEnd) { const frameAnimation = config && config.frameAnimation; if (!frameAnimation) { return }(0, _frame.cancelAnimationFrame)(frameAnimation.animationFrameId); clearTimeout(frameAnimation.delayTimeout); if (jumpToEnd) { frameAnimation.finish() } delete config.frameAnimation }, _animationStep: function($element, config) { const frameAnimation = config && config.frameAnimation; if (!frameAnimation) { return } const now = (new Date).valueOf(); if (now >= frameAnimation.startTime + frameAnimation.duration) { frameAnimation.finish(); return } frameAnimation.currentValue = this._calcStepValue(frameAnimation, now - frameAnimation.startTime); frameAnimation.draw(); const that = this; frameAnimation.animationFrameId = (0, _frame.requestAnimationFrame)((function() { that._animationStep($element, config) })) }, _calcStepValue: function(frameAnimation, currentDuration) { const calcValueRecursively = function(from, to) { const result = Array.isArray(to) ? [] : {}; (0, _iterator.each)(to, (function(propName, endPropValue) { if ("string" === typeof endPropValue && false === parseFloat(endPropValue)) { return true } result[propName] = "object" === typeof endPropValue ? calcValueRecursively(from[propName], endPropValue) : function(propName) { const x = currentDuration / frameAnimation.duration; const t = currentDuration; const b = 1 * from[propName]; const c = to[propName] - from[propName]; const d = frameAnimation.duration; return (0, _easing.getEasing)(frameAnimation.easing)(x, t, b, c, d) }(propName) })); return result }; return calcValueRecursively(frameAnimation.from, frameAnimation.to) }, _normalizeValue: function(value) { const numericValue = parseFloat(value); if (false === numericValue) { return value } return numericValue } }; const FallbackToNoAnimationStrategy = { initAnimation: function() {}, animate: function() { return (new _deferred.Deferred).resolve().promise() }, stop: _common.noop, isSynchronous: true }; const baseConfigValidator = function(config, animationType, validate, typeMessage) { (0, _iterator.each)(["from", "to"], (function() { if (!validate(config[this])) { throw _errors.default.Error("E0010", animationType, this, typeMessage) } })) }; const isObjectConfigValidator = function(config, animationType) { return baseConfigValidator(config, animationType, (function(target) { return (0, _type.isPlainObject)(target) }), "a plain object") }; const CssAnimationConfigurator = { validateConfig: function(config) { ! function(config, animationType) { return baseConfigValidator(config, animationType, (function(target) { return "string" === typeof target }), "a string") }(config, "css") }, setup: function() {} }; const positionAliases = { top: { my: "bottom center", at: "top center" }, bottom: { my: "top center", at: "bottom center" }, right: { my: "left center", at: "right center" }, left: { my: "right center", at: "left center" } }; const SlideAnimationConfigurator = { validateConfig: function(config) { isObjectConfigValidator(config, "slide") }, setup: function($element, config) { const location = (0, _translator.locate)($element); if ("slide" !== config.type) { const positioningConfig = "slideIn" === config.type ? config.from : config.to; positioningConfig.position = (0, _extend.extend)({ of: window }, positionAliases[config.direction]); setupPosition($element, positioningConfig) } this._setUpConfig(location, config.from); this._setUpConfig(location, config.to); (0, _translator.clearCache)($element) }, _setUpConfig: function(location, config) { config.left = "left" in config ? config.left : "+=0"; config.top = "top" in config ? config.top : "+=0"; this._initNewPosition(location, config) }, _initNewPosition: function(location, config) { const position = { left: config.left, top: config.top }; delete config.left; delete config.top; let relativeValue = this._getRelativeValue(position.left); if (void 0 !== relativeValue) { position.left = relativeValue + location.left } else { config.left = 0 } relativeValue = this._getRelativeValue(position.top); if (void 0 !== relativeValue) { position.top = relativeValue + location.top } else { config.top = 0 } config.transform = (0, _translator.getTranslateCss)({ x: position.left, y: position.top }) }, _getRelativeValue: function(value) { let relativeValue; if ("string" === typeof value && (relativeValue = RELATIVE_VALUE_REGEX.exec(value))) { return parseInt(relativeValue[1] + "1") * relativeValue[2] } } }; const FadeAnimationConfigurator = { setup: function($element, config) { const from = config.from; const to = config.to; const defaultFromOpacity = "fadeOut" === config.type ? 1 : 0; const defaultToOpacity = "fadeOut" === config.type ? 0 : 1; let fromOpacity = (0, _type.isPlainObject)(from) ? String(from.opacity ?? defaultFromOpacity) : String(from); let toOpacity = (0, _type.isPlainObject)(to) ? String(to.opacity ?? defaultToOpacity) : String(to); if (!config.skipElementInitialStyles) { fromOpacity = $element.css("opacity") } switch (config.type) { case "fadeIn": toOpacity = 1; break; case "fadeOut": toOpacity = 0 } config.from = { visibility: "visible", opacity: fromOpacity }; config.to = { opacity: toOpacity } } }; const PopAnimationConfigurator = { validateConfig: function(config) { isObjectConfigValidator(config, "pop") }, setup: function($element, config) { const from = config.from; const to = config.to; const fromOpacity = "opacity" in from ? from.opacity : $element.css("opacity"); const toOpacity = "opacity" in to ? to.opacity : 1; const fromScale = "scale" in from ? from.scale : 0; const toScale = "scale" in to ? to.scale : 1; config.from = { opacity: fromOpacity }; const translate = (0, _translator.getTranslate)($element); config.from.transform = this._getCssTransform(translate, fromScale); config.to = { opacity: toOpacity }; config.to.transform = this._getCssTransform(translate, toScale) }, _getCssTransform: function(translate, scale) { return (0, _translator.getTranslateCss)(translate) + "scale(" + scale + ")" } }; const animationConfigurators = { custom: { setup: function() {} }, slide: SlideAnimationConfigurator, slideIn: SlideAnimationConfigurator, slideOut: SlideAnimationConfigurator, fade: FadeAnimationConfigurator, fadeIn: FadeAnimationConfigurator, fadeOut: FadeAnimationConfigurator, pop: PopAnimationConfigurator, css: CssAnimationConfigurator }; const defaultJSConfig = { type: "custom", from: {}, to: {}, duration: 400, start: _common.noop, complete: _common.noop, easing: "ease", delay: 0 }; const defaultCssConfig = { duration: 400, easing: "ease", delay: 0 }; function setupAnimationOnElement() { const $element = this.element; const config = this.config; setupPosition($element, config.from); setupPosition($element, config.to); this.configurator.setup($element, config); $element.data("dxAnimData", this); if (fx.off) { config.duration = 0; config.delay = 0 } this.strategy.initAnimation($element, config); if (config.start) { const element = (0, _element.getPublicElement)($element); config.start.apply(this, [element, config]) } } const startAnimationOnElement = function() { const animation = this; const $element = animation.element; const config = animation.config; animation.isStarted = true; return animation.strategy.animate($element, config).done((function() { ! function(animation) { const $element = animation.element; const config = animation.config; $element.removeData("dxAnimData"); if (config.complete) { const element = (0, _element.getPublicElement)($element); config.complete.apply(this, [element, config]) } animation.deferred.resolveWith(this, [$element, config]) }(animation) })).fail((function() { animation.deferred.rejectWith(this, [$element, config]) })) }; const stopAnimationOnElement = function(jumpToEnd) { const animation = this; const $element = animation.element; const config = animation.config; clearTimeout(animation.startTimeout); if (!animation.isStarted) { animation.start() } animation.strategy.stop($element, config, jumpToEnd) }; const scopedRemoveEvent = (0, _index.addNamespace)(_remove.removeEvent, "dxFXStartAnimation"); const createAnimation = function(element, initialConfig) { const defaultConfig = "css" === initialConfig.type ? defaultCssConfig : defaultJSConfig; const config = (0, _extend.extend)(true, {}, defaultConfig, initialConfig); const configurator = function(config) { const result = animationConfigurators[config.type]; if (!result) { throw _errors.default.Error("E0011", config.type) } return result }(config); const strategy = function(config) { config = config || {}; const animationStrategies = { transition: _m_support.default.transition() ? TransitionAnimationStrategy : FrameAnimationStrategy, frame: FrameAnimationStrategy, noAnimation: FallbackToNoAnimationStrategy }; let strategy = config.strategy || "transition"; if ("css" === config.type && !_m_support.default.transition()) { strategy = "noAnimation" } return animationStrategies[strategy] }(config); const animation = { element: (0, _renderer.default)(element), config: config, configurator: configurator, strategy: strategy, isSynchronous: strategy.isSynchronous, setup: setupAnimationOnElement, start: startAnimationOnElement, stop: stopAnimationOnElement, deferred: new _deferred.Deferred }; if ((0, _type.isFunction)(configurator.validateConfig)) { configurator.validateConfig(config) }! function(animation) { _events_engine.default.off(animation.element, scopedRemoveEvent); _events_engine.default.on(animation.element, scopedRemoveEvent, (function() { fx.stop(animation.element) })); animation.deferred.always((function() { _events_engine.default.off(animation.element, scopedRemoveEvent) })) }(animation); return animation }; function getAnimQueueData($element) { return $element.data("dxAnimQueue") || [] } const destroyAnimQueueData = function($element) { $element.removeData("dxAnimQueue") }; function isAnimating($element) { return !!$element.data("dxAnimData") } function shiftFromAnimationQueue($element, queueData) { queueData = getAnimQueueData($element); if (!queueData.length) { return } const animation = queueData.shift(); if (0 === queueData.length) { destroyAnimQueueData($element) }(function(animation) { animation.setup(); if (fx.off || animation.isSynchronous) { animation.start() } else { animation.startTimeout = setTimeout((function() { animation.start() })) } return animation.deferred.promise() })(animation).done((function() { if (!isAnimating($element)) { shiftFromAnimationQueue($element) } })) } function setupPosition($element, config) { if (!config || !config.position) { return } const win = (0, _renderer.default)(window); let left = 0; let top = 0; const position = _position.default.calculate($element, config.position); const offset = $element.offset(); const currentPosition = $element.position(); if (currentPosition.top > offset.top) { top = win.scrollTop() } if (currentPosition.left > offset.left) { left = win.scrollLeft() }(0, _extend.extend)(config, { left: position.h.location - offset.left + currentPosition.left - left, top: position.v.location - offset.top + currentPosition.top - top }); delete config.position } function setProps($element, props) { (0, _iterator.each)(props, (function(key, value) { try { $element.css(key, (0, _type.isFunction)(value) ? value() : value) } catch (e) {} })) } const fx = { off: false, animationTypes: animationConfigurators, animate: function(element, config) { const $element = (0, _renderer.default)(element); if (!$element.length) { return (new _deferred.Deferred).resolve().promise() } const animation = createAnimation($element, config); ! function($element, animation) { const queueData = getAnimQueueData($element); ! function($element, queueData) { $element.data("dxAnimQueue", queueData) }($element, queueData); queueData.push(animation); if (!isAnimating($element)) { shiftFromAnimationQueue($element, queueData) } }($element, animation); return animation.deferred.promise() }, createAnimation: createAnimation, isAnimating: isAnimating, stop: function(element, jumpToEnd) { const $element = (0, _renderer.default)(element); const queueData = getAnimQueueData($element); (0, _iterator.each)(queueData, (function(_, animation) { animation.config.delay = 0; animation.config.duration = 0; animation.isSynchronous = true })); if (!isAnimating($element)) { shiftFromAnimationQueue($element, queueData) } const animation = $element.data("dxAnimData"); if (animation) { animation.stop(jumpToEnd) } $element.removeData("dxAnimData"); destroyAnimQueueData($element) }, _simulatedTransitionEndDelay: 100 }; exports.default = fx; module.exports = exports.default; module.exports.default = exports.default }, 3030: /*!*******************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/common/core/animation/position.js ***! \*******************************************************************************/ function(module, exports, __webpack_require__) { exports.default = void 0; var _size = __webpack_require__( /*! ../../../core/utils/size */ 57653); var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../../core/renderer */ 64553)); var _common = __webpack_require__( /*! ../../../core/utils/common */ 17781); var _iterator = __webpack_require__( /*! ../../../core/utils/iterator */ 21274); var _window = __webpack_require__( /*! ../../../core/utils/window */ 3104); var _dom_adapter = _interopRequireDefault(__webpack_require__( /*! ../../../core/dom_adapter */ 64960)); var _type = __webpack_require__( /*! ../../../core/utils/type */ 11528); var _extend = __webpack_require__( /*! ../../../core/utils/extend */ 52576); var _position = __webpack_require__( /*! ../../../core/utils/position */ 41639); var _browser = _interopRequireDefault(__webpack_require__( /*! ../../../core/utils/browser */ 48314)); var _translator = __webpack_require__( /*! ./translator */ 88603); var _support = __webpack_require__( /*! ../../../core/utils/support */ 4785); var _devices = _interopRequireDefault(__webpack_require__( /*! ../../../core/devices */ 65951)); var _style = __webpack_require__( /*! ../../../core/utils/style */ 58515); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } const window = (0, _window.getWindow)(); const horzRe = /left|right/; const vertRe = /top|bottom/; const collisionRe = /fit|flip|none/; const scaleRe = /scale\(.+?\)/; const IS_SAFARI = _browser.default.safari; const normalizeAlign = function(raw) { const result = { h: "center", v: "center" }; const pair = (0, _common.splitPair)(raw); if (pair) { (0, _iterator.each)(pair, (function() { const w = String(this).toLowerCase(); if (horzRe.test(w)) { result.h = w } else if (vertRe.test(w)) { result.v = w } })) } return result }; const normalizeOffset = function(raw, preventRound) { return (0, _common.pairToObject)(raw, preventRound) }; const getAlignFactor = function(align) { switch (align) { case "center": return .5; case "right": case "bottom": return 1; default: return 0 } }; const inverseAlign = function(align) { switch (align) { case "left": return "right"; case "right": return "left"; case "top": return "bottom"; case "bottom": return "top"; default: return align } }; const calculateOversize = function(data, bounds) { let oversize = 0; if (data.myLocation < bounds.min) { oversize += bounds.min - data.myLocation } if (data.myLocation > bounds.max) { oversize += data.myLocation - bounds.max } return oversize }; const collisionSide = function(direction, data, bounds) { if (data.myLocation < bounds.min) { return "h" === direction ? "left" : "top" } if (data.myLocation > bounds.max) { return "h" === direction ? "right" : "bottom" } return "none" }; const initMyLocation = function(data) { data.myLocation = data.atLocation + getAlignFactor(data.atAlign) * data.atSize - getAlignFactor(data.myAlign) * data.mySize + data.offset }; const collisionResolvers = { fit: function(data, bounds) { let result = false; if (data.myLocation > bounds.max) { data.myLocation = bounds.max; result = true } if (data.myLocation < bounds.min) { data.myLocation = bounds.min; result = true } data.fit = result }, flip: function(data, bounds) { data.flip = false; if ("center" === data.myAlign && "center" === data.atAlign) { return } if (data.myLocation < bounds.min || data.myLocation > bounds.max) { const inverseData = (0, _extend.extend)({}, data, { myAlign: inverseAlign(data.myAlign), atAlign: inverseAlign(data.atAlign), offset: -data.offset }); initMyLocation(inverseData); inverseData.oversize = calculateOversize(inverseData, bounds); if (inverseData.myLocation >= bounds.min && inverseData.myLocation <= bounds.max || data.oversize > inverseData.oversize) { data.myLocation = inverseData.myLocation; data.oversize = inverseData.oversize; data.flip = true } } }, flipfit: function(data, bounds) { this.flip(data, bounds); this.fit(data, bounds) }, none: function(data) { data.oversize = 0 } }; let scrollbarWidth; const calculateScrollbarWidth = function() { const $scrollDiv = (0, _renderer.default)("<div>").css({ width: 100, height: 100, overflow: "scroll", position: "absolute", top: -9999 }).appendTo((0, _renderer.default)("body")); const result = $scrollDiv.get(0).offsetWidth - $scrollDiv.get(0).clientWidth; $scrollDiv.remove(); scrollbarWidth = result }; const defaultPositionResult = { h: { location: 0, flip: false, fit: false, oversize: 0 }, v: { location: 0, flip: false, fit: false, oversize: 0 } }; const calculatePosition = function(what, options) { const $what = (0, _renderer.default)(what); const currentOffset = $what.offset(); const result = (0, _extend.extend)(true, {}, defaultPositionResult, { h: { location: currentOffset.left }, v: { location: currentOffset.top } }); if (!options) { return result } const my = normalizeAlign(options.my); const at = normalizeAlign(options.at); let of = (0, _renderer.default)(options.of).length && options.of || window; const offset = normalizeOffset(options.offset, options.precise); const collision = function(raw) { const pair = (0, _common.splitPair)(raw); let h = String(pair && pair[0]).toLowerCase(); let v = String(pair && pair[1]).toLowerCase(); if (!collisionRe.test(h)) { h = "none" } if (!collisionRe.test(v)) { v = h } return { h: h, v: v } }(options.collision); const boundary = options.boundary; const boundaryOffset = normalizeOffset(options.boundaryOffset, options.precise); const h = { mySize: (0, _size.getOuterWidth)($what), myAlign: my.h, atAlign: at.h, offset: offset.h, collision: collision.h, boundaryOffset: boundaryOffset.h }; const v = { mySize: (0, _size.getOuterHeight)($what), myAlign: my.v, atAlign: at.v, offset: offset.v, collision: collision.v, boundaryOffset: boundaryOffset.v }; if (of.preventDefault) { h.atLocation = of.pageX; v.atLocation = of.pageY; h.atSize = 0; v.atSize = 0 } else { of = (0, _renderer.default)(of); if ((0, _type.isWindow)(of [0])) { h.atLocation = of.scrollLeft(); v.atLocation = of.scrollTop(); if ("phone" === _devices.default.real().deviceType && of [0].visualViewport) { h.atLocation = Math.max(h.atLocation, of [0].visualViewport.offsetLeft); v.atLocation = Math.max(v.atLocation, of [0].visualViewport.offsetTop); h.atSize = of [0].visualViewport.width; v.atSize = of [0].visualViewport.height } else { h.atSize = of [0].innerWidth > of [0].outerWidth ? of [0].innerWidth : (0, _size.getWidth)(of); v.atSize = of [0].innerHeight > of [0].outerHeight || IS_SAFARI ? of [0].innerHeight : (0, _size.getHeight)(of) } } else if (9 === of [0].nodeType) { h.atLocation = 0; v.atLocation = 0; h.atSize = (0, _size.getWidth)(of); v.atSize = (0, _size.getHeight)(of) } else { const ofRect = (0, _position.getBoundingRect)(of.get(0)); const o = getOffsetWithoutScale(of); h.atLocation = o.left; v.atLocation = o.top; h.atSize = Math.max(ofRect.width, (0, _size.getOuterWidth)(of)); v.atSize = Math.max(ofRect.height, (0, _size.getOuterHeight)(of)) } } initMyLocation(h); initMyLocation(v); const bounds = function() { const win = (0, _renderer.default)(window); const windowWidth = (0, _size.getWidth)(win); const windowHeight = (0, _size.getHeight)(win); let left = win.scrollLeft(); let top = win.scrollTop(); const documentElement = _dom_adapter.default.getDocumentElement(); const hZoomLevel = _support.touch ? documentElement.clientWidth / windowWidth : 1; const vZoomLevel = _support.touch ? documentElement.clientHeight / windowHeight : 1; if (void 0 === scrollbarWidth) { calculateScrollbarWidth() } let boundaryWidth = windowWidth; let boundaryHeight = windowHeight; if (boundary && !(0, _type.isWindow)(boundary)) { const $boundary = (0, _renderer.default)(boundary); const boundaryPosition = $boundary.offset(); left = boundaryPosition.left; top = boundaryPosition.top; boundaryWidth = (0, _size.getWidth)($boundary); boundaryHeight = (0, _size.getHeight)($boundary) } return { h: { min: left + h.boundaryOffset, max: left + boundaryWidth / hZoomLevel - h.mySize - h.boundaryOffset }, v: { min: top + v.boundaryOffset, max: top + boundaryHeight / vZoomLevel - v.mySize - v.boundaryOffset } } }(); h.oversize = calculateOversize(h, bounds.h); v.oversize = calculateOversize(v, bounds.v); h.collisionSide = collisionSide("h", h, bounds.h); v.collisionSide = collisionSide("v", v, bounds.v); if (collisionResolvers[h.collision]) { collisionResolvers[h.collision](h, bounds.h) } if (collisionResolvers[v.collision]) { collisionResolvers[v.collision](v, bounds.v) } const preciser = function(number) { return options.precise ? number : Math.round(number) }; (0, _extend.extend)(true, result, { h: { location: preciser(h.myLocation), oversize: preciser(h.oversize), fit: h.fit, flip: h.flip, collisionSide: h.collisionSide }, v: { location: preciser(v.myLocation), oversize: preciser(v.oversize), fit: v.fit, flip: v.flip, collisionSide: v.collisionSide }, precise: options.precise }); return result }; const setScaleProperty = function(element, scale, styleAttr, isEmpty) { const stylePropIsValid = (0, _type.isDefined)(element.style) && !_dom_adapter.default.isNode(element.style); const newStyleValue = isEmpty ? styleAttr.replace(scale, "") : styleAttr; if (stylePropIsValid) { (0, _style.setStyle)(element, newStyleValue, false) } else { const styleAttributeNode = _dom_adapter.default.createAttribute("style"); styleAttributeNode.value = newStyleValue; element.setAttributeNode(styleAttributeNode) } }; const getOffsetWithoutScale = function($startElement) { var _currentElement$getAt, _style$match; let $currentElement = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : $startElement; const currentElement = $currentElement.get(0); if (!currentElement) { return $startElement.offset() } const style = (null === (_currentElement$getAt = currentElement.getAttribute) || void 0 === _currentElement$getAt ? void 0 : _currentElement$getAt.call(currentElement, "style")) || ""; const scale = null === (_style$match = style.match(scaleRe)) || void 0 === _style$match ? void 0 : _style$match[0]; let offset; if (scale) { setScaleProperty(currentElement, scale, style, true); offset = getOffsetWithoutScale($startElement, $currentElement.parent()); setScaleProperty(currentElement, scale, style, false) } else { offset = getOffsetWithoutScale($startElement, $currentElement.parent()) } return offset }; const position = function(what, options) { const $what = (0, _renderer.default)(what); if (!options) { return $what.offset() }(0, _translator.resetPosition)($what, true); const offset = getOffsetWithoutScale($what); const targetPosition = options.h && options.v ? options : calculatePosition($what, options); const preciser = function(number) { return options.precise ? number : Math.round(number) }; (0, _translator.move)($what, { left: targetPosition.h.location - preciser(offset.left), top: targetPosition.v.location - preciser(offset.top) }); return targetPosition }; if (!position.inverseAlign) { position.inverseAlign = inverseAlign } if (!position.normalizeAlign) { position.normalizeAlign = normalizeAlign } exports.default = { calculateScrollbarWidth: calculateScrollbarWidth, calculate: calculatePosition, setup: position, offset: function(element) { element = (0, _renderer.default)(element).get(0); if ((0, _type.isWindow)(element)) { return null } else if (element && "pageY" in element && "pageX" in element) { return { top: element.pageY, left: element.pageX } } return (0, _renderer.default)(element).offset() } }; module.exports = exports.default; module.exports.default = exports.default }, 58049: /*!******************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/common/core/animation/presets.js ***! \******************************************************************************/ function(module, exports, __webpack_require__) { exports.default = void 0; var _presets = __webpack_require__( /*! ./presets/presets */ 61310); exports.default = _presets.presets; module.exports = exports.default; module.exports.default = exports.default }, 61310: /*!**************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/common/core/animation/presets/presets.js ***! \**************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { exports.presets = exports.PresetCollection = void 0; var _size = __webpack_require__( /*! ../../../../core/utils/size */ 57653); var _component = __webpack_require__( /*! ../../../../core/component */ 17863); var _iterator = __webpack_require__( /*! ../../../../core/utils/iterator */ 21274); var _extend = __webpack_require__( /*! ../../../../core/utils/extend */ 52576); var _devices = _interopRequireDefault(__webpack_require__( /*! ../../environment/devices */ 44257)); var _fx = _interopRequireDefault(__webpack_require__( /*! ../fx */ 27075)); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } const directionPostfixes = { forward: " dx-forward", backward: " dx-backward", none: " dx-no-direction", undefined: " dx-no-direction" }; const AnimationPresetCollection = exports.PresetCollection = _component.Component.inherit({ ctor: function() { this.callBase.apply(this, arguments); this._registeredPresets = []; this.resetToDefaults() }, _getDefaultOptions: function() { return (0, _extend.extend)(this.callBase(), { defaultAnimationDuration: 400, defaultAnimationDelay: 0, defaultStaggerAnimationDuration: 300, defaultStaggerAnimationDelay: 40, defaultStaggerAnimationStartDelay: 500 }) }, _defaultOptionsRules: function() { return this.callBase().concat([{ device: function(device) { return device.phone }, options: { defaultStaggerAnimationDuration: 350, defaultStaggerAnimationDelay: 50, defaultStaggerAnimationStartDelay: 0 } }, { device: function() { return _devices.default.current().android || _devices.default.real.android }, options: { defaultAnimationDelay: 100 } }]) }, _getPresetOptionName: function(animationName) { return "preset_" + animationName }, _createAndroidSlideAnimationConfig: function(throughOpacity, widthMultiplier) { const that = this; const createBaseConfig = function(configModifier) { return { type: "slide", delay: void 0 === configModifier.delay ? that.option("defaultAnimationDelay") : configModifier.delay, duration: void 0 === configModifier.duration ? that.option("defaultAnimationDuration") : configModifier.duration } }; return { enter: function($element, configModifier) { const width = (0, _size.getWidth)($element.parent()) * widthMultiplier; const direction = configModifier.direction; const config = createBaseConfig(configModifier); config.to = { left: 0, opacity: 1 }; if ("forward" === direction) { config.from = { left: width, opacity: throughOpacity } } else if ("backward" === direction) { config.from = { left: -width, opacity: throughOpacity } } else { config.from = { left: 0, opacity: 0 } } return _fx.default.createAnimation($element, config) }, leave: function($element, configModifier) { const width = (0, _size.getWidth)($element.parent()) * widthMultiplier; const direction = configModifier.direction; const config = createBaseConfig(configModifier); config.from = { left: 0, opacity: 1 }; if ("forward" === direction) { config.to = { left: -width, opacity: throughOpacity } } else if ("backward" === direction) { config.to = { left: width, opacity: throughOpacity } } else { config.to = { left: 0, opacity: 0 } } return _fx.default.createAnimation($element, config) } } }, _createOpenDoorConfig: function() { const that = this; const createBaseConfig = function(configModifier) { return { type: "css", extraCssClasses: "dx-opendoor-animation", delay: void 0 === configModifier.delay ? that.option("defaultAnimationDelay") : configModifier.delay, duration: void 0 === configModifier.duration ? that.option("defaultAnimationDuration") : configModifier.duration } }; return { enter: function($element, configModifier) { const direction = configModifier.direction; const config = createBaseConfig(configModifier); config.delay = "none" === direction ? config.delay : config.duration; config.from = "dx-enter dx-opendoor-animation" + directionPostfixes[direction]; config.to = "dx-enter-active"; return _fx.default.createAnimation($element, config) }, leave: function($element, configModifier) { const direction = configModifier.direction; const config = createBaseConfig(configModifier); config.from = "dx-leave dx-opendoor-animation" + directionPostfixes[direction]; config.to = "dx-leave-active"; return _fx.default.createAnimation($element, config) } } }, _createWinPopConfig: function() { const that = this; const baseConfig = { type: "css", extraCssClasses: "dx-win-pop-animation", duration: that.option("defaultAnimationDuration") }; return { enter: function($element, configModifier) { const config = baseConfig; const direction = configModifier.direction; config.delay = "none" === direction ? that.option("defaultAnimationDelay") : that.option("defaultAnimationDuration") / 2; config.from = "dx-enter dx-win-pop-animation" + directionPostfixes[direction]; config.to = "dx-enter-active"; return _fx.default.createAnimation($element, config) }, leave: function($element, configModifier) { const config = baseConfig; const direction = configModifier.direction; config.delay = that.option("defaultAnimationDelay"); config.from = "dx-leave dx-win-pop-animation" + directionPostfixes[direction]; config.to = "dx-leave-active"; return _fx.default.createAnimation($element, config) } } }, resetToDefaults: function() { this.clear(); this.registerDefaultPresets(); this.applyChanges() }, clear: function(name) { const that = this; const newRegisteredPresets = []; (0, _iterator.each)(this._registeredPresets, (function(index, preset) { if (!name || name === preset.name) { that.option(that._getPresetOptionName(preset.name), void 0) } else { newRegisteredPresets.push(preset) } })); this._registeredPresets = newRegisteredPresets; this.applyChanges() }, registerPreset: function(name, config) { this._registeredPresets.push({ name: name, config: config }) }, applyChanges: function() { const that = this; const customRules = []; (0, _iterator.each)(this._registeredPresets, (function(index, preset) { const rule = { device: preset.config.device, options: {} }; rule.options[that._getPresetOptionName(preset.name)] = preset.config.animation; customRules.push(rule) })); this._setOptionsByDevice(customRules) }, getPreset: function(name) { let result = name; while ("string" === typeof result) { result = this.option(this._getPresetOptionName(result)) } return result }, registerDefaultPresets: function() { this.registerPreset("pop", { animation: { extraCssClasses: "dx-android-pop-animation", delay: this.option("defaultAnimationDelay"), duration: this.option("defaultAnimationDuration") } }); this.registerPreset("openDoor", { animation: this._createOpenDoorConfig() }); this.registerPreset("win-pop", { animation: this._createWinPopConfig() }); this.registerPreset("fade", { animation: { extraCssClasses: "dx-fade-animation", delay: this.option("defaultAnimationDelay"), duration: this.option("defaultAnimationDuration") } }); this.registerPreset("slide", { device: function() { return _devices.default.current().android || _devices.default.real.android }, animation: this._createAndroidSlideAnimationConfig(1, 1) }); this.registerPreset("slide", { device: function() { return !_devices.default.current().android && !_devices.default.real.android }, animation: { extraCssClasses: "dx-slide-animation", delay: this.option("defaultAnimationDelay"), duration: this.option("defaultAnimationDuration") } }); this.registerPreset("ios7-slide", { animation: { extraCssClasses: "dx-ios7-slide-animation", delay: this.option("defaultAnimationDelay"), duration: this.option("defaultAnimationDuration") } }); this.registerPreset("overflow", { animation: { extraCssClasses: "dx-overflow-animation", delay: this.option("defaultAnimationDelay"), duration: this.option("defaultAnimationDuration") } }); this.registerPreset("ios7-toolbar", { device: function() { return !_devices.default.current().android && !_devices.default.real.android }, animation: { extraCssClasses: "dx-ios7-toolbar-animation", delay: this.option("defaultAnimationDelay"), duration: this.option("defaultAnimationDuration") } }); this.registerPreset("ios7-toolbar", { device: function() { return _devices.default.current().android || _devices.default.real.android }, animation: this._createAndroidSlideAnimationConfig(0, .4) }); this.registerPreset("stagger-fade", { animation: { extraCssClasses: "dx-fade-animation", staggerDelay: this.option("defaultStaggerAnimationDelay"), duration: this.option("defaultStaggerAnimationDuration"), delay: this.option("defaultStaggerAnimationStartDelay") } }); this.registerPreset("stagger-slide", { animation: { extraCssClasses: "dx-slide-animation", staggerDelay: this.option("defaultStaggerAnimationDelay"), duration: this.option("defaultStaggerAnimationDuration"), delay: this.option("defaultStaggerAnimationStartDelay") } }); this.registerPreset("stagger-fade-slide", { animation: { extraCssClasses: "dx-fade-slide-animation", staggerDelay: this.option("defaultStaggerAnimationDelay"), duration: this.option("defaultStaggerAnimationDuration"), delay: this.option("defaultStaggerAnimationStartDelay") } }); this.registerPreset("stagger-drop", { animation: { extraCssClasses: "dx-drop-animation", staggerDelay: this.option("defaultStaggerAnimationDelay"), duration: this.option("defaultStaggerAnimationDuration"), delay: this.option("defaultStaggerAnimationStartDelay") } }); this.registerPreset("stagger-fade-drop", { animation: { extraCssClasses: "dx-fade-drop-animation", staggerDelay: this.option("defaultStaggerAnimationDelay"), duration: this.option("defaultStaggerAnimationDuration"), delay: this.option("defaultStaggerAnimationStartDelay") } }); this.registerPreset("stagger-fade-rise", { animation: { extraCssClasses: "dx-fade-rise-animation", staggerDelay: this.option("defaultStaggerAnimationDelay"), duration: this.option("defaultStaggerAnimationDuration"), delay: this.option("defaultStaggerAnimationStartDelay") } }); this.registerPreset("stagger-3d-drop", { animation: { extraCssClasses: "dx-3d-drop-animation", staggerDelay: this.option("defaultStaggerAnimationDelay"), duration: this.option("defaultStaggerAnimationDuration"), delay: this.option("defaultStaggerAnimationStartDelay") } }); this.registerPreset("stagger-fade-zoom", { animation: { extraCssClasses: "dx-fade-zoom-animation", staggerDelay: this.option("defaultStaggerAnimationDelay"), duration: this.option("defaultStaggerAnimationDuration"), delay: this.option("defaultStaggerAnimationStartDelay") } }) } }); exports.presets = new AnimationPresetCollection }, 94680: /*!******************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/common/core/animation/transition_executor.js ***! \******************************************************************************************/ function(module, exports, __webpack_require__) { exports.default = void 0; var _transition_executor = __webpack_require__( /*! ./transition_executor/transition_executor */ 33054); exports.default = _transition_executor.TransitionExecutor; module.exports = exports.default; module.exports.default = exports.default }, 33054: /*!**************************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/common/core/animation/transition_executor/transition_executor.js ***! \**************************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { exports.TransitionExecutor = void 0; var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../../../core/renderer */ 64553)); var _class = _interopRequireDefault(__webpack_require__( /*! ../../../../core/class */ 55620)); var _extend = __webpack_require__( /*! ../../../../core/utils/extend */ 52576); var _m_common = _interopRequireDefault(__webpack_require__( /*! ../../../../__internal/core/utils/m_common */ 39315)); var _type = __webpack_require__( /*! ../../../../core/utils/type */ 11528); var _iterator = __webpack_require__( /*! ../../../../core/utils/iterator */ 21274); var _fx = _interopRequireDefault(__webpack_require__( /*! ../fx */ 27075)); var _presets = __webpack_require__( /*! ../presets/presets */ 61310); var _deferred = __webpack_require__( /*! ../../../../core/utils/deferred */ 87739); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } const directionPostfixes = { forward: " dx-forward", backward: " dx-backward", none: " dx-no-direction", undefined: " dx-no-direction" }; exports.TransitionExecutor = _class.default.inherit({ ctor: function() { this._accumulatedDelays = { enter: 0, leave: 0 }; this._animations = []; this.reset() }, _createAnimations: function($elements, initialConfig, configModifier, type) { $elements = (0, _renderer.default)($elements); const that = this; const result = []; configModifier = configModifier || {}; const animationConfig = this._prepareElementAnimationConfig(initialConfig, configModifier, type); if (animationConfig) { $elements.each((function() { const animation = that._createAnimation((0, _renderer.default)(this), animationConfig, configModifier); if (animation) { animation.element.addClass("dx-animating"); animation.setup(); result.push(animation) } })) } return result }, _prepareElementAnimationConfig: function(config, configModifier, type) { let result; if ("string" === typeof config) { const presetName = config; config = _presets.presets.getPreset(presetName) } if (!config) { result = void 0 } else if ((0, _type.isFunction)(config[type])) { result = config[type] } else { result = (0, _extend.extend)({ skipElementInitialStyles: true, cleanupWhen: this._completePromise }, config, configModifier); if (!result.type || "css" === result.type) { const cssClass = "dx-" + type; const extraCssClasses = (result.extraCssClasses ? " " + result.extraCssClasses : "") + directionPostfixes[result.direction]; result.type = "css"; result.from = (result.from || cssClass) + extraCssClasses; result.to = result.to || cssClass + "-active" } result.staggerDelay = result.staggerDelay || 0; result.delay = result.delay || 0; if (result.staggerDelay) { result.delay += this._accumulatedDelays[type]; this._accumulatedDelays[type] += result.staggerDelay } } return result }, _createAnimation: function($element, animationConfig, configModifier) { let result; if ((0, _type.isPlainObject)(animationConfig)) { result = _fx.default.createAnimation($element, animationConfig) } else if ((0, _type.isFunction)(animationConfig)) { result = animationConfig($element, configModifier) } return result }, _startAnimations: function() { const animations = this._animations; for (let i = 0; i < animations.length; i++) { animations[i].start() } }, _stopAnimations: function(jumpToEnd) { const animations = this._animations; for (let i = 0; i < animations.length; i++) { animations[i].stop(jumpToEnd) } }, _clearAnimations: function() { const animations = this._animations; for (let i = 0; i < animations.length; i++) { animations[i].element.removeClass("dx-animating") } this._animations.length = 0 }, reset: function() { this._accumulatedDelays.enter = 0; this._accumulatedDelays.leave = 0; this._clearAnimations(); this._completeDeferred = new _deferred.Deferred; this._completePromise = this._completeDeferred.promise() }, enter: function($elements, animationConfig, configModifier) { const animations = this._createAnimations($elements, animationConfig, configModifier, "enter"); this._animations.push.apply(this._animations, animations) }, leave: function($elements, animationConfig, configModifier) { const animations = this._createAnimations($elements, animationConfig, configModifier, "leave"); this._animations.push.apply(this._animations, animations) }, start: function() { const that = this; let result; if (!this._animations.length) { that.reset(); result = (new _deferred.Deferred).resolve().promise() } else { const animationDeferreds = (0, _iterator.map)(this._animations, (function(animation) { const result = new _deferred.Deferred; animation.deferred.always((function() { result.resolve() })); return result.promise() })); result = _deferred.when.apply(_renderer.default, animationDeferreds).always((function() { that._completeDeferred.resolve(); that.reset() })); _m_common.default.executeAsync((function() { that._startAnimations() })) } return result }, stop: function(jumpToEnd) { this._stopAnimations(jumpToEnd) } }) }, 88603: /*!*********************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/common/core/animation/translator.js ***! \*********************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { exports.resetPosition = exports.parseTranslate = exports.move = exports.locate = exports.getTranslateCss = exports.getTranslate = exports.clearCache = void 0; var _renderer = (e = __webpack_require__( /*! ../../../core/renderer */ 64553), e && e.__esModule ? e : { default: e }); var e; var _element_data = __webpack_require__( /*! ../../../core/element_data */ 74663); var _type = __webpack_require__( /*! ../../../core/utils/type */ 11528); const TRANSFORM_MATRIX_REGEX = /matrix(3d)?\((.+?)\)/; const TRANSLATE_REGEX = /translate(?:3d)?\((.+?)\)/; exports.locate = function($element) { $element = (0, _renderer.default)($element); const translate = getTranslate($element); return { left: translate.x, top: translate.y } }; function isPercentValue(value) { return "string" === (0, _type.type)(value) && "%" === value[value.length - 1] } function cacheTranslate($element, translate) { if ($element.length) { (0, _element_data.data)($element.get(0), "dxTranslator", translate) } } const clearCache = function($element) { if ($element.length) { (0, _element_data.removeData)($element.get(0), "dxTranslator") } }; exports.clearCache = clearCache; const getTranslateCss = function(translate) { translate.x = translate.x || 0; translate.y = translate.y || 0; const xValueString = isPercentValue(translate.x) ? translate.x : translate.x + "px"; const yValueString = isPercentValue(translate.y) ? translate.y : translate.y + "px"; return "translate(" + xValueString + ", " + yValueString + ")" }; exports.getTranslateCss = getTranslateCss; const getTranslate = function($element) { let result = $element.length ? (0, _element_data.data)($element.get(0), "dxTranslator") : null; if (!result) { const transformValue = $element.css("transform") || getTranslateCss({ x: 0, y: 0 }); let matrix = transformValue.match(TRANSFORM_MATRIX_REGEX); const is3D = matrix && matrix[1]; if (matrix) { matrix = matrix[2].split(","); if ("3d" === is3D) { matrix = matrix.slice(12, 15) } else { matrix.push(0); matrix = matrix.slice(4, 7) } } else { matrix = [0, 0, 0] } result = { x: parseFloat(matrix[0]), y: parseFloat(matrix[1]), z: parseFloat(matrix[2]) }; cacheTranslate($element, result) } return result }; exports.getTranslate = getTranslate; exports.move = function($element, position) { $element = (0, _renderer.default)($element); const left = position.left; const top = position.top; let translate; if (void 0 === left) { translate = getTranslate($element); translate.y = top || 0 } else if (void 0 === top) { translate = getTranslate($element); translate.x = left || 0 } else { translate = { x: left || 0, y: top || 0, z: 0 }; cacheTranslate($element, translate) } $element.css({ transform: getTranslateCss(translate) }); if (isPercentValue(left) || isPercentValue(top)) { clearCache($element) } }; exports.resetPosition = function($element, finishTransition) { $element = (0, _renderer.default)($element); let originalTransition; const stylesConfig = { left: 0, top: 0, transform: "none" }; if (finishTransition) { originalTransition = $element.css("transition"); stylesConfig.transition = "none" } $element.css(stylesConfig); clearCache($element); if (finishTransition) { $element.get(0).offsetHeight; $element.css("transition", originalTransition) } }; exports.parseTranslate = function(translateString) { let result = translateString.match(TRANSLATE_REGEX); if (!result || !result[1]) { return } result = result[1].split(","); result = { x: parseFloat(result[0]), y: parseFloat(result[1]), z: parseFloat(result[2]) }; return result } }, 63705: /*!************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/common/core/environment.js ***! \************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "devices", { enumerable: true, get: function() { return _devices.default } }); Object.defineProperty(exports, "getTimeZones", { enumerable: true, get: function() { return _time_zone_utils.getTimeZones } }); Object.defineProperty(exports, "hideTopOverlay", { enumerable: true, get: function() { return _hide_top_overlay.default } }); Object.defineProperty(exports, "initMobileViewport", { enumerable: true, get: function() { return _init_mobile_viewport.default } }); var _devices = _interopRequireDefault(__webpack_require__( /*! ./environment/devices */ 44257)); var _hide_top_overlay = _interopRequireDefault(__webpack_require__( /*! ./environment/hide_top_overlay */ 45527)); var _init_mobile_viewport = _interopRequireDefault(__webpack_require__( /*! ./environment/init_mobile_viewport */ 64256)); var _time_zone_utils = __webpack_require__( /*! ./environment/time_zone_utils */ 95256); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } }, 44257: /*!********************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/common/core/environment/devices.js ***! \********************************************************************************/ function(module, exports, __webpack_require__) { Object.defineProperty(exports, "default", { enumerable: true, get: function() { return _m_devices.default } }); var _m_devices = (e = __webpack_require__( /*! ../../../__internal/core/m_devices */ 98905), e && e.__esModule ? e : { default: e }); var e; module.exports = exports.default; module.exports.default = exports.default }, 83916: /*!**************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/common/core/environment/hide_callback.js ***! \**************************************************************************************/ function(__unused_webpack_module, exports) { exports.hideCallback = void 0; exports.hideCallback = function() { let callbacks = []; return { add: function(callback) { if (!callbacks.includes(callback)) { callbacks.push(callback) } }, remove: function(callback) { const indexOfCallback = callbacks.indexOf(callback); if (-1 !== indexOfCallback) { callbacks.splice(indexOfCallback, 1) } }, fire: function() { const callback = callbacks.pop(); const result = !!callback; if (result) { callback() } return result }, hasCallback: function() { return callbacks.length > 0 } } }() }, 45527: /*!*****************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/common/core/environment/hide_top_overlay.js ***! \*****************************************************************************************/ function(module, exports, __webpack_require__) { exports.default = function() { return _hide_callback.hideCallback.fire() }; var _hide_callback = __webpack_require__( /*! ./hide_callback */ 83916); module.exports = exports.default; module.exports.default = exports.default }, 64256: /*!*********************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/common/core/environment/init_mobile_viewport.js ***! \*********************************************************************************************/ function(module, exports, __webpack_require__) { exports.default = void 0; var _init_mobile_viewport = __webpack_require__( /*! ./init_mobile_viewport/init_mobile_viewport */ 79279); exports.default = _init_mobile_viewport.initMobileViewport; module.exports = exports.default; module.exports.default = exports.default }, 79279: /*!******************************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/common/core/environment/init_mobile_viewport/init_mobile_viewport.js ***! \******************************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { exports.initMobileViewport = void 0; var _size = __webpack_require__( /*! ../../../../core/utils/size */ 57653); var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../../../core/renderer */ 64553)); var _window = __webpack_require__( /*! ../../../../core/utils/window */ 3104); var _events_engine = _interopRequireDefault(__webpack_require__( /*! ../../events/core/events_engine */ 92774)); var _extend = __webpack_require__( /*! ../../../../core/utils/extend */ 52576); var _resize_callbacks = _interopRequireDefault(__webpack_require__( /*! ../../../../core/utils/resize_callbacks */ 63283)); var _style = __webpack_require__( /*! ../../../../core/utils/style */ 58515); var _m_devices = _interopRequireDefault(__webpack_require__( /*! ../../../../__internal/core/m_devices */ 98905)); var _m_dom_adapter = _interopRequireDefault(__webpack_require__( /*! ../../../../__internal/core/m_dom_adapter */ 62018)); var _m_support = _interopRequireDefault(__webpack_require__( /*! ../../../../__internal/core/utils/m_support */ 85991)); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } const window = (0, _window.getWindow)(); exports.initMobileViewport = function(options) { options = (0, _extend.extend)({}, options); let realDevice = _m_devices.default.real(); const allowZoom = options.allowZoom; const allowPan = options.allowPan; const allowSelection = "allowSelection" in options ? options.allowSelection : "generic" === realDevice.platform; if (!(0, _renderer.default)("meta[name=viewport]").length) { (0, _renderer.default)("<meta>").attr("name", "viewport").appendTo("head") } const metaVerbs = ["width=device-width"]; const msTouchVerbs = []; if (allowZoom) { msTouchVerbs.push("pinch-zoom") } else { metaVerbs.push("initial-scale=1.0", "maximum-scale=1.0, user-scalable=no") } if (allowPan) { msTouchVerbs.push("pan-x", "pan-y") } if (!allowPan && !allowZoom) { (0, _renderer.default)("html, body").css({ msContentZooming: "none", msUserSelect: "none", overflow: "hidden" }) } else { (0, _renderer.default)("html").css("msOverflowStyle", "-ms-autohiding-scrollbar") } if (!allowSelection && _m_support.default.supportProp("userSelect")) { (0, _renderer.default)(".dx-viewport").css((0, _style.styleProp)("userSelect"), "none") }(0, _renderer.default)("meta[name=viewport]").attr("content", metaVerbs.join()); (0, _renderer.default)("html").css("msTouchAction", msTouchVerbs.join(" ") || "none"); realDevice = _m_devices.default.real(); if (_m_support.default.touch) { _events_engine.default.off(_m_dom_adapter.default.getDocument(), ".dxInitMobileViewport"); _events_engine.default.on(_m_dom_adapter.default.getDocument(), "dxpointermove.dxInitMobileViewport", (function(e) { const count = e.pointers.length; const isTouchEvent = "touch" === e.pointerType; const zoomDisabled = !allowZoom && count > 1; const panDisabled = !allowPan && 1 === count && !e.isScrollingEvent; if (isTouchEvent && (zoomDisabled || panDisabled)) { e.preventDefault() } })) } if (realDevice.ios) { const isPhoneGap = "file:" === _m_dom_adapter.default.getLocation().protocol; if (!isPhoneGap) { _resize_callbacks.default.add((function() { const windowWidth = (0, _size.getWidth)(window); (0, _size.setWidth)((0, _renderer.default)("body"), windowWidth) })) } } if (realDevice.android) { _resize_callbacks.default.add((function() { setTimeout((function() { const activeElement = _m_dom_adapter.default.getActiveElement(); activeElement.scrollIntoViewIfNeeded ? activeElement.scrollIntoViewIfNeeded() : activeElement.scrollIntoView(false) })) })) } } }, 95256: /*!****************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/common/core/environment/time_zone_utils.js ***! \****************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { exports.getTimeZones = void 0; var _m_utils_time_zone = (e = __webpack_require__( /*! ../../../__internal/scheduler/m_utils_time_zone */ 18648), e && e.__esModule ? e : { default: e }); var e; exports.getTimeZones = _m_utils_time_zone.default.getTimeZones }, 52391: /*!*******************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/common/core/events.js ***! \*******************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { exports.trigger = exports.one = exports.on = exports.off = exports.Event = void 0; var _events_engine = (e = __webpack_require__( /*! ./events/core/events_engine */ 92774), e && e.__esModule ? e : { default: e }); var e; exports.on = _events_engine.default.on; exports.one = _events_engine.default.one; exports.off = _events_engine.default.off; exports.trigger = _events_engine.default.trigger; exports.Event = _events_engine.default.Event }, 64044: /*!*************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/common/core/events/click.js ***! \*************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { var _m_click = __webpack_require__( /*! ../../../__internal/events/m_click */ 28356); Object.keys(_m_click).forEach((function(key) { if ("default" === key || "__esModule" === key) { return } if (key in exports && exports[key] === _m_click[key]) { return } Object.defineProperty(exports, key, { enumerable: true, get: function() { return _m_click[key] } }) })) }, 80248: /*!*******************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/common/core/events/contextmenu.js ***! \*******************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { var _m_contextmenu = __webpack_require__( /*! ../../../__internal/events/m_contextmenu */ 90096); Object.keys(_m_contextmenu).forEach((function(key) { if ("default" === key || "__esModule" === key) { return } if (key in exports && exports[key] === _m_contextmenu[key]) { return } Object.defineProperty(exports, key, { enumerable: true, get: function() { return _m_contextmenu[key] } }) })) }, 69331: /*!*****************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/common/core/events/core/emitter.feedback.js ***! \*****************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { var _m_emitter = __webpack_require__( /*! ../../../../__internal/events/core/m_emitter.feedback */ 14911); Object.keys(_m_emitter).forEach((function(key) { if ("default" === key || "__esModule" === key) { return } if (key in exports && exports[key] === _m_emitter[key]) { return } Object.defineProperty(exports, key, { enumerable: true, get: function() { return _m_emitter[key] } }) })) }, 59e3: /*!********************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/common/core/events/core/emitter.js ***! \********************************************************************************/ function(module, exports, __webpack_require__) { Object.defineProperty(exports, "default", { enumerable: true, get: function() { return _m_emitter.default } }); var _m_emitter = (e = __webpack_require__( /*! ../../../../__internal/events/core/m_emitter */ 96292), e && e.__esModule ? e : { default: e }); var e; module.exports = exports.default; module.exports.default = exports.default }, 81411: /*!********************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/common/core/events/core/emitter_registrator.js ***! \********************************************************************************************/ function(module, exports, __webpack_require__) { Object.defineProperty(exports, "default", { enumerable: true, get: function() { return _m_emitter_registrator.default } }); var _m_emitter_registrator = (e = __webpack_require__( /*! ../../../../__internal/events/core/m_emitter_registrator */ 58063), e && e.__esModule ? e : { default: e }); var e; module.exports = exports.default; module.exports.default = exports.default }, 15273: /*!******************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/common/core/events/core/event_registrator.js ***! \******************************************************************************************/ function(module, exports, __webpack_require__) { Object.defineProperty(exports, "default", { enumerable: true, get: function() { return _m_event_registrator.default } }); var _m_event_registrator = (e = __webpack_require__( /*! ../../../../__internal/events/core/m_event_registrator */ 65381), e && e.__esModule ? e : { default: e }); var e; module.exports = exports.default; module.exports.default = exports.default }, 85030: /*!****************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/common/core/events/core/event_registrator_callbacks.js ***! \****************************************************************************************************/ function(module, exports, __webpack_require__) { exports.default = void 0; var _memorized_callbacks = (e = __webpack_require__( /*! ../../../../core/memorized_callbacks */ 35329), e && e.__esModule ? e : { default: e }); var e; exports.default = new _memorized_callbacks.default; module.exports = exports.default; module.exports.default = exports.default }, 92774: /*!**************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/common/core/events/core/events_engine.js ***! \**************************************************************************************/ function(module, exports, __webpack_require__) { Object.defineProperty(exports, "default", { enumerable: true, get: function() { return _m_events_engine.default } }); var _m_events_engine = (e = __webpack_require__( /*! ../../../../__internal/events/core/m_events_engine */ 36306), e && e.__esModule ? e : { default: e }); var e; module.exports = exports.default; module.exports.default = exports.default }, 65462: /*!*****************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/common/core/events/core/hook_touch_props.js ***! \*****************************************************************************************/ function(module, exports, __webpack_require__) { Object.defineProperty(exports, "default", { enumerable: true, get: function() { return _m_hook_touch_props.default } }); var _m_hook_touch_props = (e = __webpack_require__( /*! ../../../../__internal/events/core/m_hook_touch_props */ 40866), e && e.__esModule ? e : { default: e }); var e; module.exports = exports.default; module.exports.default = exports.default }, 52818: /*!*******************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/common/core/events/core/keyboard_processor.js ***! \*******************************************************************************************/ function(module, exports, __webpack_require__) { Object.defineProperty(exports, "default", { enumerable: true, get: function() { return _m_keyboard_processor.default } }); var _m_keyboard_processor = (e = __webpack_require__( /*! ../../../../__internal/events/core/m_keyboard_processor */ 34422), e && e.__esModule ? e : { default: e }); var e; module.exports = exports.default; module.exports.default = exports.default }, 37373: /*!******************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/common/core/events/core/wheel.js ***! \******************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { var _m_wheel = __webpack_require__( /*! ../../../../__internal/events/core/m_wheel */ 58065); Object.keys(_m_wheel).forEach((function(key) { if ("default" === key || "__esModule" === key) { return } if (key in exports && exports[key] === _m_wheel[key]) { return } Object.defineProperty(exports, key, { enumerable: true, get: function() { return _m_wheel[key] } }) })) }, 5636: /*!********************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/common/core/events/double_click.js ***! \********************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "name", { enumerable: true, get: function() { return _m_dblclick.name } }); var _m_dblclick = __webpack_require__( /*! ../../../__internal/events/m_dblclick */ 36212); var _event_registrator = (e = __webpack_require__( /*! ./core/event_registrator */ 15273), e && e.__esModule ? e : { default: e }); var e; (0, _event_registrator.default)(_m_dblclick.name, _m_dblclick.dblClick) }, 59144: /*!************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/common/core/events/drag.js ***! \************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { var _m_drag = __webpack_require__( /*! ../../../__internal/events/m_drag */ 88480); Object.keys(_m_drag).forEach((function(key) { if ("default" === key || "__esModule" === key) { return } if (key in exports && exports[key] === _m_drag[key]) { return } Object.defineProperty(exports, key, { enumerable: true, get: function() { return _m_drag[key] } }) })) }, 85915: /*!*******************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/common/core/events/gesture/emitter.gesture.js ***! \*******************************************************************************************/ function(module, exports, __webpack_require__) { Object.defineProperty(exports, "default", { enumerable: true, get: function() { return _m_emitter.default } }); var _m_emitter = (e = __webpack_require__( /*! ../../../../__internal/events/gesture/m_emitter.gesture */ 77859), e && e.__esModule ? e : { default: e }); var e; module.exports = exports.default; module.exports.default = exports.default }, 86548: /*!**************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/common/core/events/gesture/emitter.gesture.scroll.js ***! \**************************************************************************************************/ function(module, exports, __webpack_require__) { Object.defineProperty(exports, "default", { enumerable: true, get: function() { return _m_emitterGesture.default } }); var _m_emitterGesture = (e = __webpack_require__( /*! ../../../../__internal/events/gesture/m_emitter.gesture.scroll */ 18572), e && e.__esModule ? e : { default: e }); var e; module.exports = exports.default; module.exports.default = exports.default }, 18278: /*!*************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/common/core/events/gesture/swipeable.js ***! \*************************************************************************************/ function(module, exports, __webpack_require__) { Object.defineProperty(exports, "default", { enumerable: true, get: function() { return _m_swipeable.default } }); var _m_swipeable = (e = __webpack_require__( /*! ../../../../__internal/events/gesture/m_swipeable */ 54078), e && e.__esModule ? e : { default: e }); var e; module.exports = exports.default; module.exports.default = exports.default }, 68095: /*!************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/common/core/events/hold.js ***! \************************************************************************/ function(module, exports, __webpack_require__) { Object.defineProperty(exports, "default", { enumerable: true, get: function() { return _m_hold.default } }); var _m_hold = (e = __webpack_require__( /*! ../../../__internal/events/m_hold */ 3111), e && e.__esModule ? e : { default: e }); var e; module.exports = exports.default; module.exports.default = exports.default }, 638: /*!*************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/common/core/events/hover.js ***! \*************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { var _m_hover = __webpack_require__( /*! ../../../__internal/events/m_hover */ 57798); Object.keys(_m_hover).forEach((function(key) { if ("default" === key || "__esModule" === key) { return } if (key in exports && exports[key] === _m_hover[key]) { return } Object.defineProperty(exports, key, { enumerable: true, get: function() { return _m_hover[key] } }) })) }, 89797: /*!***************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/common/core/events/pointer.js ***! \***************************************************************************/ function(module, exports, __webpack_require__) { Object.defineProperty(exports, "default", { enumerable: true, get: function() { return _m_pointer.default } }); var _m_pointer = (e = __webpack_require__( /*! ../../../__internal/events/m_pointer */ 24381), e && e.__esModule ? e : { default: e }); var e; module.exports = exports.default; module.exports.default = exports.default }, 725: /*!********************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/common/core/events/pointer/base.js ***! \********************************************************************************/ function(module, exports, __webpack_require__) { Object.defineProperty(exports, "default", { enumerable: true, get: function() { return _m_base.default } }); var _m_base = (e = __webpack_require__( /*! ../../../../__internal/events/pointer/m_base */ 37321), e && e.__esModule ? e : { default: e }); var e; module.exports = exports.default; module.exports.default = exports.default }, 5949: /*!*********************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/common/core/events/pointer/mouse.js ***! \*********************************************************************************/ function(module, exports, __webpack_require__) { Object.defineProperty(exports, "default", { enumerable: true, get: function() { return _m_mouse.default } }); var _m_mouse = (e = __webpack_require__( /*! ../../../../__internal/events/pointer/m_mouse */ 45841), e && e.__esModule ? e : { default: e }); var e; module.exports = exports.default; module.exports.default = exports.default }, 71887: /*!*******************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/common/core/events/pointer/mouse_and_touch.js ***! \*******************************************************************************************/ function(module, exports, __webpack_require__) { Object.defineProperty(exports, "default", { enumerable: true, get: function() { return _m_mouse_and_touch.default } }); var _m_mouse_and_touch = (e = __webpack_require__( /*! ../../../../__internal/events/pointer/m_mouse_and_touch */ 60699), e && e.__esModule ? e : { default: e }); var e; module.exports = exports.default; module.exports.default = exports.default }, 38242: /*!************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/common/core/events/pointer/observer.js ***! \************************************************************************************/ function(module, exports, __webpack_require__) { Object.defineProperty(exports, "default", { enumerable: true, get: function() { return _m_observer.default } }); var _m_observer = (e = __webpack_require__( /*! ../../../../__internal/events/pointer/m_observer */ 62814), e && e.__esModule ? e : { default: e }); var e; module.exports = exports.default; module.exports.default = exports.default }, 71017: /*!*********************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/common/core/events/pointer/touch.js ***! \*********************************************************************************/ function(module, exports, __webpack_require__) { Object.defineProperty(exports, "default", { enumerable: true, get: function() { return _m_touch.default } }); var _m_touch = (e = __webpack_require__( /*! ../../../../__internal/events/pointer/m_touch */ 95253), e && e.__esModule ? e : { default: e }); var e; module.exports = exports.default; module.exports.default = exports.default }, 28630: /*!**************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/common/core/events/remove.js ***! \**************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { var _m_remove = __webpack_require__( /*! ../../../__internal/events/m_remove */ 92686); Object.keys(_m_remove).forEach((function(key) { if ("default" === key || "__esModule" === key) { return } if (key in exports && exports[key] === _m_remove[key]) { return } Object.defineProperty(exports, key, { enumerable: true, get: function() { return _m_remove[key] } }) })) }, 42222: /*!*************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/common/core/events/short.js ***! \*************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { var _m_short = __webpack_require__( /*! ../../../__internal/events/m_short */ 43926); Object.keys(_m_short).forEach((function(key) { if ("default" === key || "__esModule" === key) { return } if (key in exports && exports[key] === _m_short[key]) { return } Object.defineProperty(exports, key, { enumerable: true, get: function() { return _m_short[key] } }) })) }, 80250: /*!*************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/common/core/events/swipe.js ***! \*************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { var _m_swipe = __webpack_require__( /*! ../../../__internal/events/m_swipe */ 6066); Object.keys(_m_swipe).forEach((function(key) { if ("default" === key || "__esModule" === key) { return } if (key in exports && exports[key] === _m_swipe[key]) { return } Object.defineProperty(exports, key, { enumerable: true, get: function() { return _m_swipe[key] } }) })) }, 37008: /*!*****************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/common/core/events/transform.js ***! \*****************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { exports.zoomstart = exports.zoomend = exports.zoom = exports.translatestart = exports.translateend = exports.translate = exports.transformstart = exports.transformend = exports.transform = exports.rotatestart = exports.rotateend = exports.rotate = exports.pinchstart = exports.pinchend = exports.pinch = void 0; var _m_transform = __webpack_require__( /*! ../../../__internal/events/m_transform */ 68264); const { transformstart: transformstart, transform: transform, transformend: transformend, translatestart: translatestart, translate: translate, translateend: translateend, zoomstart: zoomstart, zoom: zoom, zoomend: zoomend, pinchstart: pinchstart, pinch: pinch, pinchend: pinchend, rotatestart: rotatestart, rotate: rotate, rotateend: rotateend } = _m_transform.exportNames; exports.rotateend = rotateend; exports.rotate = rotate; exports.rotatestart = rotatestart; exports.pinchend = pinchend; exports.pinch = pinch; exports.pinchstart = pinchstart; exports.zoomend = zoomend; exports.zoom = zoom; exports.zoomstart = zoomstart; exports.translateend = translateend; exports.translate = translate; exports.translatestart = translatestart; exports.transformend = transformend; exports.transform = transform; exports.transformstart = transformstart }, 47413: /*!***********************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/common/core/events/utils/event_nodes_disposing.js ***! \***********************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { var _m_event_nodes_disposing = __webpack_require__( /*! ../../../../__internal/events/utils/m_event_nodes_disposing */ 68337); Object.keys(_m_event_nodes_disposing).forEach((function(key) { if ("default" === key || "__esModule" === key) { return } if (key in exports && exports[key] === _m_event_nodes_disposing[key]) { return } Object.defineProperty(exports, key, { enumerable: true, get: function() { return _m_event_nodes_disposing[key] } }) })) }, 45280: /*!**************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/common/core/events/utils/event_target.js ***! \**************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { var _m_event_target = __webpack_require__( /*! ../../../../__internal/events/utils/m_event_target */ 86940); Object.keys(_m_event_target).forEach((function(key) { if ("default" === key || "__esModule" === key) { return } if (key in exports && exports[key] === _m_event_target[key]) { return } Object.defineProperty(exports, key, { enumerable: true, get: function() { return _m_event_target[key] } }) })) }, 98834: /*!*******************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/common/core/events/utils/index.js ***! \*******************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { var _index = __webpack_require__( /*! ../../../../__internal/events/utils/index */ 61210); Object.keys(_index).forEach((function(key) { if ("default" === key || "__esModule" === key) { return } if (key in exports && exports[key] === _index[key]) { return } Object.defineProperty(exports, key, { enumerable: true, get: function() { return _index[key] } }) })) }, 18029: /*!*************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/common/core/events/visibility_change.js ***! \*************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { exports.triggerShownEvent = exports.triggerResizeEvent = exports.triggerHidingEvent = exports.default = void 0; var _m_visibility_change = (e = __webpack_require__( /*! ../../../__internal/events/m_visibility_change */ 52997), e && e.__esModule ? e : { default: e }); var e; exports.triggerShownEvent = _m_visibility_change.default.triggerShownEvent; exports.triggerHidingEvent = _m_visibility_change.default.triggerHidingEvent; exports.triggerResizeEvent = _m_visibility_change.default.triggerResizeEvent; exports.default = _m_visibility_change.default }, 46795: /*!*************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/common/core/localization.js ***! \*************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "date", { enumerable: true, get: function() { return _date.default } }); exports.disableIntl = function() { if ("intl" === _number.default.engine()) { _number.default.resetInjection() } if ("intl" === _date.default.engine()) { _date.default.resetInjection() } }; exports.locale = exports.loadMessages = exports.formatNumber = exports.formatMessage = exports.formatDate = void 0; Object.defineProperty(exports, "message", { enumerable: true, get: function() { return _message.default } }); Object.defineProperty(exports, "number", { enumerable: true, get: function() { return _number.default } }); exports.parseNumber = exports.parseDate = void 0; var _core = _interopRequireDefault(__webpack_require__( /*! ./localization/core */ 84109)); var _message = _interopRequireDefault(__webpack_require__( /*! ./localization/message */ 4671)); var _number = _interopRequireDefault(__webpack_require__( /*! ./localization/number */ 52771)); var _date = _interopRequireDefault(__webpack_require__( /*! ./localization/date */ 38662)); __webpack_require__( /*! ./localization/currency */ 17333); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } exports.locale = _core.default.locale.bind(_core.default); exports.loadMessages = _message.default.load.bind(_message.default); exports.formatMessage = _message.default.format.bind(_message.default); exports.formatNumber = _number.default.format.bind(_number.default); exports.parseNumber = _number.default.parse.bind(_number.default); exports.formatDate = _date.default.format.bind(_date.default); exports.parseDate = _date.default.parse.bind(_date.default) }, 55581: /*!******************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/common/core/localization/cldr-data/accounting_formats.js ***! \******************************************************************************************************/ function(module, exports) { exports.default = void 0; // !!! AUTO-GENERATED FILE, DO NOT EDIT exports.default = { af: "\xa4#,##0.00;(\xa4#,##0.00)", "af-NA": "\xa4#,##0.00;(\xa4#,##0.00)", agq: "#,##0.00\xa4", ak: "\xa4#,##0.00", am: "\xa4#,##0.00;(\xa4#,##0.00)", ar: "\xa4#,##0.00;(\xa4#,##0.00)", "ar-AE": "\xa4#,##0.00;(\xa4#,##0.00)", "ar-BH": "\xa4#,##0.00;(\xa4#,##0.00)", "ar-DJ": "\xa4#,##0.00;(\xa4#,##0.00)", "ar-DZ": "\xa4#,##0.00;(\xa4#,##0.00)", "ar-EG": "\xa4#,##0.00;(\xa4#,##0.00)", "ar-EH": "\xa4#,##0.00;(\xa4#,##0.00)", "ar-ER": "\xa4#,##0.00;(\xa4#,##0.00)", "ar-IL": "\xa4#,##0.00;(\xa4#,##0.00)", "ar-IQ": "\xa4#,##0.00;(\xa4#,##0.00)", "ar-JO": "\xa4#,##0.00;(\xa4#,##0.00)", "ar-KM": "\xa4#,##0.00;(\xa4#,##0.00)", "ar-KW": "\xa4#,##0.00;(\xa4#,##0.00)", "ar-LB": "\xa4#,##0.00;(\xa4#,##0.00)", "ar-LY": "\xa4#,##0.00;(\xa4#,##0.00)", "ar-MA": "\xa4#,##0.00;(\xa4#,##0.00)", "ar-MR": "\xa4#,##0.00;(\xa4#,##0.00)", "ar-OM": "\xa4#,##0.00;(\xa4#,##0.00)", "ar-PS": "\xa4#,##0.00;(\xa4#,##0.00)", "ar-QA": "\xa4#,##0.00;(\xa4#,##0.00)", "ar-SA": "\xa4#,##0.00;(\xa4#,##0.00)", "ar-SD": "\xa4#,##0.00;(\xa4#,##0.00)", "ar-SO": "\xa4#,##0.00;(\xa4#,##0.00)", "ar-SS": "\xa4#,##0.00;(\xa4#,##0.00)", "ar-SY": "\xa4#,##0.00;(\xa4#,##0.00)", "ar-TD": "\xa4#,##0.00;(\xa4#,##0.00)", "ar-TN": "\xa4#,##0.00;(\xa4#,##0.00)", "ar-YE": "\xa4#,##0.00;(\xa4#,##0.00)", as: "\xa4\xa0#,##,##0.00", asa: "#,##0.00\xa0\xa4", ast: "#,##0.00\xa0\xa4", az: "#,##0.00\xa0\xa4", "az-Cyrl": "#,##0.00\xa0\xa4", "az-Latn": "#,##0.00\xa0\xa4", bas: "#,##0.00\xa0\xa4", be: "#,##0.00\xa0\xa4", "be-tarask": "#,##0.00\xa0\xa4", bem: "\xa4#,##0.00;(\xa4#,##0.00)", bez: "#,##0.00\xa4", bg: "0.00\xa0\xa4;(0.00\xa0\xa4)", bm: "\xa4#,##0.00;(\xa4#,##0.00)", bn: "#,##,##0.00\xa4;(#,##,##0.00\xa4)", "bn-IN": "#,##,##0.00\xa4;(#,##,##0.00\xa4)", bo: "\xa4\xa0#,##0.00", "bo-IN": "\xa4\xa0#,##0.00", br: "#,##0.00\xa0\xa4", brx: "\xa4\xa0#,##,##0.00", bs: "#,##0.00\xa0\xa4", "bs-Cyrl": "#,##0.00\xa0\xa4", "bs-Latn": "#,##0.00\xa0\xa4", ca: "#,##0.00\xa0\xa4;(#,##0.00\xa0\xa4)", "ca-AD": "#,##0.00\xa0\xa4;(#,##0.00\xa0\xa4)", "ca-ES-valencia": "#,##0.00\xa0\xa4;(#,##0.00\xa0\xa4)", "ca-FR": "#,##0.00\xa0\xa4;(#,##0.00\xa0\xa4)", "ca-IT": "#,##0.00\xa0\xa4;(#,##0.00\xa0\xa4)", ccp: "#,##,##0.00\xa4;(#,##,##0.00\xa4)", "ccp-IN": "#,##,##0.00\xa4;(#,##,##0.00\xa4)", ce: "#,##0.00\xa0\xa4", ceb: "\xa4#,##0.00;(\xa4#,##0.00)", cgg: "\xa4#,##0.00", chr: "\xa4#,##0.00;(\xa4#,##0.00)", ckb: "\xa4\xa0#,##0.00", "ckb-IR": "\xa4\xa0#,##0.00", cs: "#,##0.00\xa0\xa4", cy: "\xa4#,##0.00;(\xa4#,##0.00)", da: "#,##0.00\xa0\xa4", "da-GL": "#,##0.00\xa0\xa4", dav: "\xa4#,##0.00;(\xa4#,##0.00)", de: "#,##0.00\xa0\xa4", "de-AT": "#,##0.00\xa0\xa4", "de-BE": "#,##0.00\xa0\xa4", "de-CH": "#,##0.00\xa0\xa4", "de-IT": "#,##0.00\xa0\xa4", "de-LI": "#,##0.00\xa0\xa4", "de-LU": "#,##0.00\xa0\xa4", dje: "#,##0.00\xa4", doi: "\xa4#,##0.00", dsb: "#,##0.00\xa0\xa4", dua: "#,##0.00\xa0\xa4", dyo: "#,##0.00\xa0\xa4", dz: "\xa4#,##,##0.00", ebu: "\xa4#,##0.00;(\xa4#,##0.00)", ee: "\xa4#,##0.00;(\xa4#,##0.00)", "ee-TG": "\xa4#,##0.00;(\xa4#,##0.00)", el: "#,##0.00\xa0\xa4", "el-CY": "#,##0.00\xa0\xa4", en: "\xa4#,##0.00;(\xa4#,##0.00)", "en-001": "\xa4#,##0.00;(\xa4#,##0.00)", "en-150": "#,##0.00\xa0\xa4", "en-AE": "\xa4#,##0.00;(\xa4#,##0.00)", "en-AG": "\xa4#,##0.00;(\xa4#,##0.00)", "en-AI": "\xa4#,##0.00;(\xa4#,##0.00)", "en-AS": "\xa4#,##0.00;(\xa4#,##0.00)", "en-AT": "\xa4\xa0#,##0.00", "en-AU": "\xa4#,##0.00;(\xa4#,##0.00)", "en-BB": "\xa4#,##0.00;(\xa4#,##0.00)", "en-BE": "#,##0.00\xa0\xa4", "en-BI": "\xa4#,##0.00;(\xa4#,##0.00)", "en-BM": "\xa4#,##0.00;(\xa4#,##0.00)", "en-BS": "\xa4#,##0.00;(\xa4#,##0.00)", "en-BW": "\xa4#,##0.00;(\xa4#,##0.00)", "en-BZ": "\xa4#,##0.00;(\xa4#,##0.00)", "en-CA": "\xa4#,##0.00;(\xa4#,##0.00)", "en-CC": "\xa4#,##0.00;(\xa4#,##0.00)", "en-CH": "\xa4\xa0#,##0.00;\xa4-#,##0.00", "en-CK": "\xa4#,##0.00;(\xa4#,##0.00)", "en-CM": "\xa4#,##0.00;(\xa4#,##0.00)", "en-CX": "\xa4#,##0.00;(\xa4#,##0.00)", "en-CY": "\xa4#,##0.00;(\xa4#,##0.00)", "en-DE": "#,##0.00\xa0\xa4", "en-DG": "\xa4#,##0.00;(\xa4#,##0.00)", "en-DK": "#,##0.00\xa0\xa4", "en-DM": "\xa4#,##0.00;(\xa4#,##0.00)", "en-ER": "\xa4#,##0.00;(\xa4#,##0.00)", "en-FI": "#,##0.00\xa0\xa4", "en-FJ": "\xa4#,##0.00;(\xa4#,##0.00)", "en-FK": "\xa4#,##0.00;(\xa4#,##0.00)", "en-FM": "\xa4#,##0.00;(\xa4#,##0.00)", "en-GB": "\xa4#,##0.00;(\xa4#,##0.00)", "en-GD": "\xa4#,##0.00;(\xa4#,##0.00)", "en-GG": "\xa4#,##0.00;(\xa4#,##0.00)", "en-GH": "\xa4#,##0.00;(\xa4#,##0.00)", "en-GI": "\xa4#,##0.00;(\xa4#,##0.00)", "en-GM": "\xa4#,##0.00;(\xa4#,##0.00)", "en-GU": "\xa4#,##0.00;(\xa4#,##0.00)", "en-GY": "\xa4#,##0.00;(\xa4#,##0.00)", "en-HK": "\xa4#,##0.00;(\xa4#,##0.00)", "en-IE": "\xa4#,##0.00;(\xa4#,##0.00)", "en-IL": "\xa4#,##0.00;(\xa4#,##0.00)", "en-IM": "\xa4#,##0.00;(\xa4#,##0.00)", "en-IN": "\xa4#,##0.00;(\xa4#,##0.00)", "en-IO": "\xa4#,##0.00;(\xa4#,##0.00)", "en-JE": "\xa4#,##0.00;(\xa4#,##0.00)", "en-JM": "\xa4#,##0.00;(\xa4#,##0.00)", "en-KE": "\xa4#,##0.00;(\xa4#,##0.00)", "en-KI": "\xa4#,##0.00;(\xa4#,##0.00)", "en-KN": "\xa4#,##0.00;(\xa4#,##0.00)", "en-KY": "\xa4#,##0.00;(\xa4#,##0.00)", "en-LC": "\xa4#,##0.00;(\xa4#,##0.00)", "en-LR": "\xa4#,##0.00;(\xa4#,##0.00)", "en-LS": "\xa4#,##0.00;(\xa4#,##0.00)", "en-MG": "\xa4#,##0.00;(\xa4#,##0.00)", "en-MH": "\xa4#,##0.00;(\xa4#,##0.00)", "en-MO": "\xa4#,##0.00;(\xa4#,##0.00)", "en-MP": "\xa4#,##0.00;(\xa4#,##0.00)", "en-MS": "\xa4#,##0.00;(\xa4#,##0.00)", "en-MT": "\xa4#,##0.00;(\xa4#,##0.00)", "en-MU": "\xa4#,##0.00;(\xa4#,##0.00)", "en-MV": "\xa4\xa0#,##0.00", "en-MW": "\xa4#,##0.00;(\xa4#,##0.00)", "en-MY": "\xa4#,##0.00;(\xa4#,##0.00)", "en-NA": "\xa4#,##0.00;(\xa4#,##0.00)", "en-NF": "\xa4#,##0.00;(\xa4#,##0.00)", "en-NG": "\xa4#,##0.00;(\xa4#,##0.00)", "en-NL": "\xa4\xa0#,##0.00;(\xa4\xa0#,##0.00)", "en-NR": "\xa4#,##0.00;(\xa4#,##0.00)", "en-NU": "\xa4#,##0.00;(\xa4#,##0.00)", "en-NZ": "\xa4#,##0.00;(\xa4#,##0.00)", "en-PG": "\xa4#,##0.00;(\xa4#,##0.00)", "en-PH": "\xa4#,##0.00;(\xa4#,##0.00)", "en-PK": "\xa4#,##0.00;(\xa4#,##0.00)", "en-PN": "\xa4#,##0.00;(\xa4#,##0.00)", "en-PR": "\xa4#,##0.00;(\xa4#,##0.00)", "en-PW": "\xa4#,##0.00;(\xa4#,##0.00)", "en-RW": "\xa4#,##0.00;(\xa4#,##0.00)", "en-SB": "\xa4#,##0.00;(\xa4#,##0.00)", "en-SC": "\xa4#,##0.00;(\xa4#,##0.00)", "en-SD": "\xa4#,##0.00;(\xa4#,##0.00)", "en-SE": "#,##0.00\xa0\xa4", "en-SG": "\xa4#,##0.00;(\xa4#,##0.00)", "en-SH": "\xa4#,##0.00;(\xa4#,##0.00)", "en-SI": "#,##0.00\xa0\xa4;(#,##0.00\xa0\xa4)", "en-SL": "\xa4#,##0.00;(\xa4#,##0.00)", "en-SS": "\xa4#,##0.00;(\xa4#,##0.00)", "en-SX": "\xa4#,##0.00;(\xa4#,##0.00)", "en-SZ": "\xa4#,##0.00;(\xa4#,##0.00)", "en-TC": "\xa4#,##0.00;(\xa4#,##0.00)", "en-TK": "\xa4#,##0.00;(\xa4#,##0.00)", "en-TO": "\xa4#,##0.00;(\xa4#,##0.00)", "en-TT": "\xa4#,##0.00;(\xa4#,##0.00)", "en-TV": "\xa4#,##0.00;(\xa4#,##0.00)", "en-TZ": "\xa4#,##0.00;(\xa4#,##0.00)", "en-UG": "\xa4#,##0.00;(\xa4#,##0.00)", "en-UM": "\xa4#,##0.00;(\xa4#,##0.00)", "en-VC": "\xa4#,##0.00;(\xa4#,##0.00)", "en-VG": "\xa4#,##0.00;(\xa4#,##0.00)", "en-VI": "\xa4#,##0.00;(\xa4#,##0.00)", "en-VU": "\xa4#,##0.00;(\xa4#,##0.00)", "en-WS": "\xa4#,##0.00;(\xa4#,##0.00)", "en-ZA": "\xa4#,##0.00;(\xa4#,##0.00)", "en-ZM": "\xa4#,##0.00;(\xa4#,##0.00)", "en-ZW": "\xa4#,##0.00;(\xa4#,##0.00)", eo: "\xa4\xa0#,##0.00", es: "#,##0.00\xa0\xa4", "es-419": "\xa4#,##0.00", "es-AR": "\xa4\xa0#,##0.00;(\xa4\xa0#,##0.00)", "es-BO": "\xa4#,##0.00", "es-BR": "\xa4#,##0.00", "es-BZ": "\xa4#,##0.00", "es-CL": "\xa4#,##0.00", "es-CO": "\xa4#,##0.00", "es-CR": "\xa4#,##0.00", "es-CU": "\xa4#,##0.00", "es-DO": "\xa4#,##0.00;(\xa4#,##0.00)", "es-EA": "#,##0.00\xa0\xa4", "es-EC": "\xa4#,##0.00", "es-GQ": "#,##0.00\xa0\xa4", "es-GT": "\xa4#,##0.00", "es-HN": "\xa4#,##0.00", "es-IC": "#,##0.00\xa0\xa4", "es-MX": "\xa4#,##0.00", "es-NI": "\xa4#,##0.00", "es-PA": "\xa4#,##0.00", "es-PE": "\xa4#,##0.00", "es-PH": "#,##0.00\xa0\xa4", "es-PR": "\xa4#,##0.00", "es-PY": "\xa4#,##0.00", "es-SV": "\xa4#,##0.00", "es-US": "\xa4#,##0.00", "es-UY": "\xa4\xa0#,##0.00;(\xa4\xa0#,##0.00)", "es-VE": "\xa4#,##0.00", et: "#,##0.00\xa0\xa4;(#,##0.00\xa0\xa4)", eu: "#,##0.00\xa0\xa4;(#,##0.00\xa0\xa4)", ewo: "#,##0.00\xa0\xa4", fa: "\u200e\xa4\xa0#,##0.00;\u200e(\xa4\xa0#,##0.00)", "fa-AF": "\xa4\xa0#,##0.00;\u200e(\xa4\xa0#,##0.00)", ff: "#,##0.00\xa0\xa4", "ff-Adlm": "\xa4\xa0#,##0.00", "ff-Adlm-BF": "\xa4\xa0#,##0.00", "ff-Adlm-CM": "\xa4\xa0#,##0.00", "ff-Adlm-GH": "\xa4\xa0#,##0.00", "ff-Adlm-GM": "\xa4\xa0#,##0.00", "ff-Adlm-GW": "\xa4\xa0#,##0.00", "ff-Adlm-LR": "\xa4\xa0#,##0.00", "ff-Adlm-MR": "\xa4\xa0#,##0.00", "ff-Adlm-NE": "\xa4\xa0#,##0.00", "ff-Adlm-NG": "\xa4\xa0#,##0.00", "ff-Adlm-SL": "\xa4\xa0#,##0.00", "ff-Adlm-SN": "\xa4\xa0#,##0.00", "ff-Latn": "#,##0.00\xa0\xa4", "ff-Latn-BF": "#,##0.00\xa0\xa4", "ff-Latn-CM": "#,##0.00\xa0\xa4", "ff-Latn-GH": "#,##0.00\xa0\xa4", "ff-Latn-GM": "#,##0.00\xa0\xa4", "ff-Latn-GN": "#,##0.00\xa0\xa4", "ff-Latn-GW": "#,##0.00\xa0\xa4", "ff-Latn-LR": "#,##0.00\xa0\xa4", "ff-Latn-MR": "#,##0.00\xa0\xa4", "ff-Latn-NE": "#,##0.00\xa0\xa4", "ff-Latn-NG": "#,##0.00\xa0\xa4", "ff-Latn-SL": "#,##0.00\xa0\xa4", fi: "#,##0.00\xa0\xa4", fil: "\xa4#,##0.00;(\xa4#,##0.00)", fo: "#,##0.00\xa0\xa4;(#,##0.00\xa0\xa4)", "fo-DK": "#,##0.00\xa0\xa4;(#,##0.00\xa0\xa4)", fr: "#,##0.00\xa0\xa4;(#,##0.00\xa0\xa4)", "fr-BE": "#,##0.00\xa0\xa4;(#,##0.00\xa0\xa4)", "fr-BF": "#,##0.00\xa0\xa4;(#,##0.00\xa0\xa4)", "fr-BI": "#,##0.00\xa0\xa4;(#,##0.00\xa0\xa4)", "fr-BJ": "#,##0.00\xa0\xa4;(#,##0.00\xa0\xa4)", "fr-BL": "#,##0.00\xa0\xa4;(#,##0.00\xa0\xa4)", "fr-CA": "#,##0.00\xa0\xa4;(#,##0.00\xa0\xa4)", "fr-CD": "#,##0.00\xa0\xa4;(#,##0.00\xa0\xa4)", "fr-CF": "#,##0.00\xa0\xa4;(#,##0.00\xa0\xa4)", "fr-CG": "#,##0.00\xa0\xa4;(#,##0.00\xa0\xa4)", "fr-CH": "#,##0.00\xa0\xa4;(#,##0.00\xa0\xa4)", "fr-CI": "#,##0.00\xa0\xa4;(#,##0.00\xa0\xa4)", "fr-CM": "#,##0.00\xa0\xa4;(#,##0.00\xa0\xa4)", "fr-DJ": "#,##0.00\xa0\xa4;(#,##0.00\xa0\xa4)", "fr-DZ": "#,##0.00\xa0\xa4;(#,##0.00\xa0\xa4)", "fr-GA": "#,##0.00\xa0\xa4;(#,##0.00\xa0\xa4)", "fr-GF": "#,##0.00\xa0\xa4;(#,##0.00\xa0\xa4)", "fr-GN": "#,##0.00\xa0\xa4;(#,##0.00\xa0\xa4)", "fr-GP": "#,##0.00\xa0\xa4;(#,##0.00\xa0\xa4)", "fr-GQ": "#,##0.00\xa0\xa4;(#,##0.00\xa0\xa4)", "fr-HT": "#,##0.00\xa0\xa4;(#,##0.00\xa0\xa4)", "fr-KM": "#,##0.00\xa0\xa4;(#,##0.00\xa0\xa4)", "fr-LU": "#,##0.00\xa0\xa4;(#,##0.00\xa0\xa4)", "fr-MA": "#,##0.00\xa0\xa4;(#,##0.00\xa0\xa4)", "fr-MC": "#,##0.00\xa0\xa4;(#,##0.00\xa0\xa4)", "fr-MF": "#,##0.00\xa0\xa4;(#,##0.00\xa0\xa4)", "fr-MG": "#,##0.00\xa0\xa4;(#,##0.00\xa0\xa4)", "fr-ML": "#,##0.00\xa0\xa4;(#,##0.00\xa0\xa4)", "fr-MQ": "#,##0.00\xa0\xa4;(#,##0.00\xa0\xa4)", "fr-MR": "#,##0.00\xa0\xa4;(#,##0.00\xa0\xa4)", "fr-MU": "#,##0.00\xa0\xa4;(#,##0.00\xa0\xa4)", "fr-NC": "#,##0.00\xa0\xa4;(#,##0.00\xa0\xa4)", "fr-NE": "#,##0.00\xa0\xa4;(#,##0.00\xa0\xa4)", "fr-PF": "#,##0.00\xa0\xa4;(#,##0.00\xa0\xa4)", "fr-PM": "#,##0.00\xa0\xa4;(#,##0.00\xa0\xa4)", "fr-RE": "#,##0.00\xa0\xa4;(#,##0.00\xa0\xa4)", "fr-RW": "#,##0.00\xa0\xa4;(#,##0.00\xa0\xa4)", "fr-SC": "#,##0.00\xa0\xa4;(#,##0.00\xa0\xa4)", "fr-SN": "#,##0.00\xa0\xa4;(#,##0.00\xa0\xa4)", "fr-SY": "#,##0.00\xa0\xa4;(#,##0.00\xa0\xa4)", "fr-TD": "#,##0.00\xa0\xa4;(#,##0.00\xa0\xa4)", "fr-TG": "#,##0.00\xa0\xa4;(#,##0.00\xa0\xa4)", "fr-TN": "#,##0.00\xa0\xa4;(#,##0.00\xa0\xa4)", "fr-VU": "#,##0.00\xa0\xa4;(#,##0.00\xa0\xa4)", "fr-WF": "#,##0.00\xa0\xa4;(#,##0.00\xa0\xa4)", "fr-YT": "#,##0.00\xa0\xa4;(#,##0.00\xa0\xa4)", fur: "\xa4\xa0#,##0.00", fy: "\xa4\xa0#,##0.00;(\xa4\xa0#,##0.00)", ga: "\xa4#,##0.00;(\xa4#,##0.00)", "ga-GB": "\xa4#,##0.00;(\xa4#,##0.00)", gd: "\xa4#,##0.00;(\xa4#,##0.00)", gl: "#,##0.00\xa0\xa4", gsw: "#,##0.00\xa0\xa4", "gsw-FR": "#,##0.00\xa0\xa4", "gsw-LI": "#,##0.00\xa0\xa4", gu: "\xa4#,##,##0.00;(\xa4#,##,##0.00)", guz: "\xa4#,##0.00;(\xa4#,##0.00)", gv: "\xa4#,##0.00", ha: "\xa4\xa0#,##0.00", "ha-GH": "\xa4\xa0#,##0.00", "ha-NE": "\xa4\xa0#,##0.00", haw: "\xa4#,##0.00;(\xa4#,##0.00)", he: "#,##0.00\xa0\xa4", hi: "\xa4#,##,##0.00", "hi-Latn": "\xa4#,##,##0.00", hr: "#,##0.00\xa0\xa4", "hr-BA": "#,##0.00\xa0\xa4", hsb: "#,##0.00\xa0\xa4", hu: "#,##0.00\xa0\xa4", hy: "#,##0.00\xa0\xa4", ia: "\xa4\xa0#,##0.00;(\xa4\xa0#,##0.00)", id: "\xa4#,##0.00", ig: "\xa4#,##0.00;(\xa4#,##0.00)", ii: "\xa4\xa0#,##0.00", is: "#,##0.00\xa0\xa4", it: "#,##0.00\xa0\xa4", "it-CH": "#,##0.00\xa0\xa4", "it-SM": "#,##0.00\xa0\xa4", "it-VA": "#,##0.00\xa0\xa4", ja: "\xa4#,##0.00;(\xa4#,##0.00)", jgo: "\xa4\xa0#,##0.00", jmc: "\xa4#,##0.00", jv: "\xa4\xa0#,##0.00", ka: "#,##0.00\xa0\xa4", kab: "#,##0.00\xa4", kam: "\xa4#,##0.00;(\xa4#,##0.00)", kde: "\xa4#,##0.00;(\xa4#,##0.00)", kea: "#,##0.00\xa0\xa4;(#,##0.00\xa0\xa4)", kgp: "\xa4\xa0#,##0.00", khq: "#,##0.00\xa4", ki: "\xa4#,##0.00;(\xa4#,##0.00)", kk: "#,##0.00\xa0\xa4", kkj: "\xa4\xa0#,##0.00", kl: "\xa4#,##0.00;\xa4-#,##0.00", kln: "\xa4#,##0.00;(\xa4#,##0.00)", km: "#,##0.00\xa4;(#,##0.00\xa4)", kn: "\xa4#,##0.00;(\xa4#,##0.00)", ko: "\xa4#,##0.00;(\xa4#,##0.00)", "ko-KP": "\xa4#,##0.00;(\xa4#,##0.00)", kok: "\xa4#,##0.00;(\xa4#,##0.00)", ks: "\xa4#,##0.00", "ks-Arab": "\xa4#,##0.00", "ks-Deva": "\xa4\xa0#,##0.00", ksb: "#,##0.00\xa4", ksf: "#,##0.00\xa0\xa4", ksh: "#,##0.00\xa0\xa4", ku: "#,##0.00\xa0\xa4;(#,##0.00\xa0\xa4)", kw: "\xa4#,##0.00", ky: "#,##0.00\xa0\xa4", lag: "\xa4\xa0#,##0.00", lb: "#,##0.00\xa0\xa4", lg: "#,##0.00\xa4", lkt: "\xa4\xa0#,##0.00", ln: "#,##0.00\xa0\xa4", "ln-AO": "#,##0.00\xa0\xa4", "ln-CF": "#,##0.00\xa0\xa4", "ln-CG": "#,##0.00\xa0\xa4", lo: "\xa4#,##0.00;\xa4-#,##0.00", lrc: "\xa4\xa0#,##0.00", "lrc-IQ": "\xa4\xa0#,##0.00", lt: "#,##0.00\xa0\xa4", lu: "#,##0.00\xa4", luo: "#,##0.00\xa4", luy: "\xa4#,##0.00;\xa4-\xa0#,##0.00", lv: "#,##0.00\xa0\xa4", mai: "\xa4\xa0#,##0.00", mas: "\xa4#,##0.00;(\xa4#,##0.00)", "mas-TZ": "\xa4#,##0.00;(\xa4#,##0.00)", mer: "\xa4#,##0.00;(\xa4#,##0.00)", mfe: "\xa4\xa0#,##0.00", mg: "\xa4#,##0.00", mgh: "\xa4\xa0#,##0.00", mgo: "\xa4\xa0#,##0.00", mi: "\xa4\xa0#,##0.00", mk: "#,##0.00\xa0\xa4", ml: "\xa4#,##0.00;(\xa4#,##0.00)", mn: "\xa4\xa0#,##0.00", mni: "\xa4\xa0#,##0.00", "mni-Beng": "\xa4\xa0#,##0.00", mr: "\xa4#,##0.00;(\xa4#,##0.00)", ms: "\xa4#,##0.00;(\xa4#,##0.00)", "ms-BN": "\xa4#,##0.00;(\xa4#,##0.00)", "ms-ID": "\xa4#,##0.00", "ms-SG": "\xa4#,##0.00;(\xa4#,##0.00)", mt: "\xa4#,##0.00", mua: "\xa4#,##0.00;(\xa4#,##0.00)", my: "\xa4\xa0#,##0.00", mzn: "\xa4\xa0#,##0.00", naq: "\xa4#,##0.00", nb: "\xa4\xa0#,##0.00;(\xa4\xa0#,##0.00)", "nb-SJ": "\xa4\xa0#,##0.00;(\xa4\xa0#,##0.00)", nd: "\xa4#,##0.00;(\xa4#,##0.00)", nds: "\xa4\xa0#,##0.00", "nds-NL": "\xa4\xa0#,##0.00", ne: "\xa4\xa0#,##,##0.00", "ne-IN": "\xa4\xa0#,##,##0.00", nl: "\xa4\xa0#,##0.00;(\xa4\xa0#,##0.00)", "nl-AW": "\xa4\xa0#,##0.00;(\xa4\xa0#,##0.00)", "nl-BE": "\xa4\xa0#,##0.00;(\xa4\xa0#,##0.00)", "nl-BQ": "\xa4\xa0#,##0.00;(\xa4\xa0#,##0.00)", "nl-CW": "\xa4\xa0#,##0.00;(\xa4\xa0#,##0.00)", "nl-SR": "\xa4\xa0#,##0.00;(\xa4\xa0#,##0.00)", "nl-SX": "\xa4\xa0#,##0.00;(\xa4\xa0#,##0.00)", nmg: "#,##0.00\xa0\xa4", nn: "#,##0.00\xa0\xa4", nnh: "\xa4\xa0#,##0.00", no: "\xa4\xa0#,##0.00;(\xa4\xa0#,##0.00)", nus: "\xa4#,##0.00;(\xa4#,##0.00)", nyn: "\xa4#,##0.00", om: "\xa4#,##0.00", "om-KE": "\xa4#,##0.00", or: "\xa4#,##0.00;(\xa4#,##0.00)", os: "\xa4\xa0#,##0.00", "os-RU": "\xa4\xa0#,##0.00", pa: "\xa4\xa0#,##0.00", "pa-Arab": "\xa4\xa0#,##0.00", "pa-Guru": "\xa4\xa0#,##0.00", pcm: "\xa4#,##0.00", pl: "#,##0.00\xa0\xa4;(#,##0.00\xa0\xa4)", ps: "\xa4#,##0.00;(\xa4#,##0.00)", "ps-PK": "\xa4#,##0.00;(\xa4#,##0.00)", pt: "\xa4\xa0#,##0.00", "pt-AO": "#,##0.00\xa0\xa4;(#,##0.00\xa0\xa4)", "pt-CH": "#,##0.00\xa0\xa4;(#,##0.00\xa0\xa4)", "pt-CV": "#,##0.00\xa0\xa4;(#,##0.00\xa0\xa4)", "pt-GQ": "#,##0.00\xa0\xa4;(#,##0.00\xa0\xa4)", "pt-GW": "#,##0.00\xa0\xa4;(#,##0.00\xa0\xa4)", "pt-LU": "#,##0.00\xa0\xa4;(#,##0.00\xa0\xa4)", "pt-MO": "#,##0.00\xa0\xa4;(#,##0.00\xa0\xa4)", "pt-MZ": "#,##0.00\xa0\xa4;(#,##0.00\xa0\xa4)", "pt-PT": "#,##0.00\xa0\xa4;(#,##0.00\xa0\xa4)", "pt-ST": "#,##0.00\xa0\xa4;(#,##0.00\xa0\xa4)", "pt-TL": "#,##0.00\xa0\xa4;(#,##0.00\xa0\xa4)", qu: "\xa4\xa0#,##0.00", "qu-BO": "\xa4\xa0#,##0.00", "qu-EC": "\xa4\xa0#,##0.00", rm: "#,##0.00\xa0\xa4", rn: "#,##0.00\xa4", ro: "#,##0.00\xa0\xa4;(#,##0.00\xa0\xa4)", "ro-MD": "#,##0.00\xa0\xa4;(#,##0.00\xa0\xa4)", rof: "\xa4#,##0.00", ru: "#,##0.00\xa0\xa4", "ru-BY": "#,##0.00\xa0\xa4", "ru-KG": "#,##0.00\xa0\xa4", "ru-KZ": "#,##0.00\xa0\xa4", "ru-MD": "#,##0.00\xa0\xa4", "ru-UA": "#,##0.00\xa0\xa4", rw: "\xa4\xa0#,##0.00", rwk: "#,##0.00\xa4", sa: "\xa4\xa0#,##0.00", sah: "#,##0.00\xa0\xa4", saq: "\xa4#,##0.00;(\xa4#,##0.00)", sat: "\xa4\xa0#,##0.00", "sat-Olck": "\xa4\xa0#,##0.00", sbp: "#,##0.00\xa4", sc: "#,##0.00\xa0\xa4", sd: "\xa4\xa0#,##0.00", "sd-Arab": "\xa4\xa0#,##0.00", "sd-Deva": "\xa4\xa0#,##0.00", se: "#,##0.00\xa0\xa4", "se-FI": "#,##0.00\xa0\xa4", "se-SE": "#,##0.00\xa0\xa4", seh: "#,##0.00\xa4", ses: "#,##0.00\xa4", sg: "\xa4#,##0.00;\xa4-#,##0.00", shi: "#,##0.00\xa4", "shi-Latn": "#,##0.00\xa4", "shi-Tfng": "#,##0.00\xa4", si: "\xa4#,##0.00;(\xa4#,##0.00)", sk: "#,##0.00\xa0\xa4;(#,##0.00\xa0\xa4)", sl: "#,##0.00\xa0\xa4;(#,##0.00\xa0\xa4)", smn: "#,##0.00\xa0\xa4", sn: "\xa4#,##0.00;(\xa4#,##0.00)", so: "\xa4#,##0.00;(\xa4#,##0.00)", "so-DJ": "\xa4#,##0.00;(\xa4#,##0.00)", "so-ET": "\xa4#,##0.00;(\xa4#,##0.00)", "so-KE": "\xa4#,##0.00;(\xa4#,##0.00)", sq: "#,##0.00\xa0\xa4;(#,##0.00\xa0\xa4)", "sq-MK": "#,##0.00\xa0\xa4;(#,##0.00\xa0\xa4)", "sq-XK": "#,##0.00\xa0\xa4;(#,##0.00\xa0\xa4)", sr: "#,##0.00\xa0\xa4;(#,##0.00\xa0\xa4)", "sr-Cyrl": "#,##0.00\xa0\xa4;(#,##0.00\xa0\xa4)", "sr-Cyrl-BA": "#,##0.00\xa0\xa4;(#,##0.00\xa0\xa4)", "sr-Cyrl-ME": "#,##0.00\xa0\xa4;(#,##0.00\xa0\xa4)", "sr-Cyrl-XK": "#,##0.00\xa0\xa4;(#,##0.00\xa0\xa4)", "sr-Latn": "#,##0.00\xa0\xa4;(#,##0.00\xa0\xa4)", "sr-Latn-BA": "#,##0.00\xa0\xa4;(#,##0.00\xa0\xa4)", "sr-Latn-ME": "#,##0.00\xa0\xa4;(#,##0.00\xa0\xa4)", "sr-Latn-XK": "#,##0.00\xa0\xa4;(#,##0.00\xa0\xa4)", su: "\xa4#,##0.00", "su-Latn": "\xa4#,##0.00", sv: "#,##0.00\xa0\xa4", "sv-AX": "#,##0.00\xa0\xa4", "sv-FI": "#,##0.00\xa0\xa4", sw: "\xa4\xa0#,##0.00", "sw-CD": "\xa4\xa0#,##0.00", "sw-KE": "\xa4\xa0#,##0.00", "sw-UG": "\xa4\xa0#,##0.00", ta: "\xa4#,##0.00;(\xa4#,##0.00)", "ta-LK": "\xa4#,##0.00;(\xa4#,##0.00)", "ta-MY": "\xa4#,##0.00;(\xa4#,##0.00)", "ta-SG": "\xa4#,##0.00;(\xa4#,##0.00)", te: "\xa4#,##0.00;(\xa4#,##0.00)", teo: "\xa4#,##0.00;(\xa4#,##0.00)", "teo-KE": "\xa4#,##0.00;(\xa4#,##0.00)", tg: "#,##0.00\xa0\xa4", th: "\xa4#,##0.00;(\xa4#,##0.00)", ti: "\xa4#,##0.00", "ti-ER": "\xa4#,##0.00", tk: "#,##0.00\xa0\xa4", to: "\xa4\xa0#,##0.00", tr: "\xa4#,##0.00;(\xa4#,##0.00)", "tr-CY": "\xa4#,##0.00;(\xa4#,##0.00)", tt: "#,##0.00\xa0\xa4", twq: "#,##0.00\xa4", tzm: "#,##0.00\xa0\xa4", ug: "\xa4#,##0.00;(\xa4#,##0.00)", uk: "#,##0.00\xa0\xa4", und: "\xa4\xa0#,##0.00", ur: "\xa4#,##0.00;(\xa4#,##0.00)", "ur-IN": "\xa4#,##0.00;(\xa4#,##0.00)", uz: "#,##0.00\xa0\xa4", "uz-Arab": "\xa4\xa0#,##0.00", "uz-Cyrl": "#,##0.00\xa0\xa4", "uz-Latn": "#,##0.00\xa0\xa4", vai: "\xa4#,##0.00;(\xa4#,##0.00)", "vai-Latn": "\xa4#,##0.00;(\xa4#,##0.00)", "vai-Vaii": "\xa4#,##0.00;(\xa4#,##0.00)", vi: "#,##0.00\xa0\xa4", vun: "\xa4#,##0.00", wae: "\xa4\xa0#,##0.00", wo: "\xa4\xa0#,##0.00", xh: "\xa4#,##0.00", xog: "#,##0.00\xa0\xa4", yav: "#,##0.00\xa0\xa4;(#,##0.00\xa0\xa4)", yi: "\xa4\xa0#,##0.00", yo: "\xa4#,##0.00;(\xa4#,##0.00)", "yo-BJ": "\xa4#,##0.00;(\xa4#,##0.00)", yrl: "\xa4\xa0#,##0.00", "yrl-CO": "\xa4\xa0#,##0.00", "yrl-VE": "\xa4\xa0#,##0.00", yue: "\xa4#,##0.00;(\xa4#,##0.00)", "yue-Hans": "\xa4#,##0.00;(\xa4#,##0.00)", "yue-Hant": "\xa4#,##0.00;(\xa4#,##0.00)", zgh: "#,##0.00\xa4", zh: "\xa4#,##0.00;(\xa4#,##0.00)", "zh-Hans": "\xa4#,##0.00;(\xa4#,##0.00)", "zh-Hans-HK": "\xa4#,##0.00;(\xa4#,##0.00)", "zh-Hans-MO": "\xa4#,##0.00;(\xa4#,##0.00)", "zh-Hans-SG": "\xa4#,##0.00;(\xa4#,##0.00)", "zh-Hant": "\xa4#,##0.00;(\xa4#,##0.00)", "zh-Hant-HK": "\xa4#,##0.00;(\xa4#,##0.00)", "zh-Hant-MO": "\xa4#,##0.00;(\xa4#,##0.00)", zu: "\xa4#,##0.00;(\xa4#,##0.00)" }; module.exports = exports.default; module.exports.default = exports.default }, 61316: /*!**************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/common/core/localization/cldr-data/en.js ***! \**************************************************************************************/ function(__unused_webpack_module, exports) { exports.enCldr = void 0; // !!! AUTO-GENERATED FILE, DO NOT EDIT exports.enCldr = { main: { en: { identity: { version: { _cldrVersion: "36" } }, dates: { calendars: { gregorian: { months: { format: { abbreviated: { 1: "Jan", 2: "Feb", 3: "Mar", 4: "Apr", 5: "May", 6: "Jun", 7: "Jul", 8: "Aug", 9: "Sep", 10: "Oct", 11: "Nov", 12: "Dec" }, narrow: { 1: "J", 2: "F", 3: "M", 4: "A", 5: "M", 6: "J", 7: "J", 8: "A", 9: "S", 10: "O", 11: "N", 12: "D" }, wide: { 1: "January", 2: "February", 3: "March", 4: "April", 5: "May", 6: "June", 7: "July", 8: "August", 9: "September", 10: "October", 11: "November", 12: "December" } }, "stand-alone": { abbreviated: { 1: "Jan", 2: "Feb", 3: "Mar", 4: "Apr", 5: "May", 6: "Jun", 7: "Jul", 8: "Aug", 9: "Sep", 10: "Oct", 11: "Nov", 12: "Dec" }, narrow: { 1: "J", 2: "F", 3: "M", 4: "A", 5: "M", 6: "J", 7: "J", 8: "A", 9: "S", 10: "O", 11: "N", 12: "D" }, wide: { 1: "January", 2: "February", 3: "March", 4: "April", 5: "May", 6: "June", 7: "July", 8: "August", 9: "September", 10: "October", 11: "November", 12: "December" } } }, days: { format: { abbreviated: { sun: "Sun", mon: "Mon", tue: "Tue", wed: "Wed", thu: "Thu", fri: "Fri", sat: "Sat" }, narrow: { sun: "S", mon: "M", tue: "T", wed: "W", thu: "T", fri: "F", sat: "S" }, short: { sun: "Su", mon: "Mo", tue: "Tu", wed: "We", thu: "Th", fri: "Fr", sat: "Sa" }, wide: { sun: "Sunday", mon: "Monday", tue: "Tuesday", wed: "Wednesday", thu: "Thursday", fri: "Friday", sat: "Saturday" } }, "stand-alone": { abbreviated: { sun: "Sun", mon: "Mon", tue: "Tue", wed: "Wed", thu: "Thu", fri: "Fri", sat: "Sat" }, narrow: { sun: "S", mon: "M", tue: "T", wed: "W", thu: "T", fri: "F", sat: "S" }, short: { sun: "Su", mon: "Mo", tue: "Tu", wed: "We", thu: "Th", fri: "Fr", sat: "Sa" }, wide: { sun: "Sunday", mon: "Monday", tue: "Tuesday", wed: "Wednesday", thu: "Thursday", fri: "Friday", sat: "Saturday" } } }, quarters: { format: { abbreviated: { 1: "Q1", 2: "Q2", 3: "Q3", 4: "Q4" }, narrow: { 1: "1", 2: "2", 3: "3", 4: "4" }, wide: { 1: "1st quarter", 2: "2nd quarter", 3: "3rd quarter", 4: "4th quarter" } }, "stand-alone": { abbreviated: { 1: "Q1", 2: "Q2", 3: "Q3", 4: "Q4" }, narrow: { 1: "1", 2: "2", 3: "3", 4: "4" }, wide: { 1: "1st quarter", 2: "2nd quarter", 3: "3rd quarter", 4: "4th quarter" } } }, dayPeriods: { format: { abbreviated: { midnight: "midnight", am: "AM", "am-alt-variant": "am", noon: "noon", pm: "PM", "pm-alt-variant": "pm", morning1: "in the morning", afternoon1: "in the afternoon", evening1: "in the evening", night1: "at night" }, narrow: { midnight: "mi", am: "a", "am-alt-variant": "am", noon: "n", pm: "p", "pm-alt-variant": "pm", morning1: "in the morning", afternoon1: "in the afternoon", evening1: "in the evening", night1: "at night" }, wide: { midnight: "midnight", am: "AM", "am-alt-variant": "am", noon: "noon", pm: "PM", "pm-alt-variant": "pm", morning1: "in the morning", afternoon1: "in the afternoon", evening1: "in the evening", night1: "at night" } }, "stand-alone": { abbreviated: { midnight: "midnight", am: "AM", "am-alt-variant": "am", noon: "noon", pm: "PM", "pm-alt-variant": "pm", morning1: "morning", afternoon1: "afternoon", evening1: "evening", night1: "night" }, narrow: { midnight: "midnight", am: "AM", "am-alt-variant": "am", noon: "noon", pm: "PM", "pm-alt-variant": "pm", morning1: "morning", afternoon1: "afternoon", evening1: "evening", night1: "night" }, wide: { midnight: "midnight", am: "AM", "am-alt-variant": "am", noon: "noon", pm: "PM", "pm-alt-variant": "pm", morning1: "morning", afternoon1: "afternoon", evening1: "evening", night1: "night" } } }, eras: { eraNames: { 0: "Before Christ", 1: "Anno Domini", "0-alt-variant": "Before Common Era", "1-alt-variant": "Common Era" }, eraAbbr: { 0: "BC", 1: "AD", "0-alt-variant": "BCE", "1-alt-variant": "CE" }, eraNarrow: { 0: "B", 1: "A", "0-alt-variant": "BCE", "1-alt-variant": "CE" } }, dateFormats: { full: "EEEE, MMMM d, y", long: "MMMM d, y", medium: "MMM d, y", short: "M/d/yy" }, timeFormats: { full: "h:mm:ss a zzzz", long: "h:mm:ss a z", medium: "h:mm:ss a", short: "h:mm a" }, dateTimeFormats: { full: "{1} 'at' {0}", long: "{1} 'at' {0}", medium: "{1}, {0}", short: "{1}, {0}", availableFormats: { Bh: "h B", Bhm: "h:mm B", Bhms: "h:mm:ss B", d: "d", E: "ccc", EBhm: "E h:mm B", EBhms: "E h:mm:ss B", Ed: "d E", Ehm: "E h:mm a", EHm: "E HH:mm", Ehms: "E h:mm:ss a", EHms: "E HH:mm:ss", Gy: "y G", GyMMM: "MMM y G", GyMMMd: "MMM d, y G", GyMMMEd: "E, MMM d, y G", h: "h a", H: "HH", hm: "h:mm a", Hm: "HH:mm", hms: "h:mm:ss a", Hms: "HH:mm:ss", hmsv: "h:mm:ss a v", Hmsv: "HH:mm:ss v", hmv: "h:mm a v", Hmv: "HH:mm v", M: "L", Md: "M/d", MEd: "E, M/d", MMM: "LLL", MMMd: "MMM d", MMMEd: "E, MMM d", MMMMd: "MMMM d", "MMMMW-count-one": "'week' W 'of' MMMM", "MMMMW-count-other": "'week' W 'of' MMMM", ms: "mm:ss", y: "y", yM: "M/y", yMd: "M/d/y", yMEd: "E, M/d/y", yMMM: "MMM y", yMMMd: "MMM d, y", yMMMEd: "E, MMM d, y", yMMMM: "MMMM y", yQQQ: "QQQ y", yQQQQ: "QQQQ y", "yw-count-one": "'week' w 'of' Y", "yw-count-other": "'week' w 'of' Y" } } } } }, numbers: { defaultNumberingSystem: "latn", otherNumberingSystems: { native: "latn" }, minimumGroupingDigits: "1", "symbols-numberSystem-latn": { decimal: ".", group: ",", list: ";", percentSign: "%", plusSign: "+", minusSign: "-", exponential: "E", superscriptingExponent: "\xd7", perMille: "\u2030", infinity: "\u221e", nan: "NaN", timeSeparator: ":" }, "decimalFormats-numberSystem-latn": { standard: "#,##0.###" }, "scientificFormats-numberSystem-latn": { standard: "#E0" }, "percentFormats-numberSystem-latn": { standard: "#,##0%" }, "currencyFormats-numberSystem-latn": { currencySpacing: { beforeCurrency: { currencyMatch: "[:^S:]", surroundingMatch: "[:digit:]", insertBetween: "\xa0" }, afterCurrency: { currencyMatch: "[:^S:]", surroundingMatch: "[:digit:]", insertBetween: "\xa0" } }, standard: "\xa4#,##0.00", accounting: "\xa4#,##0.00;(\xa4#,##0.00)" }, currencies: { ADP: { symbol: "ADP" }, AED: { symbol: "AED" }, AFA: { symbol: "AFA" }, AFN: { symbol: "AFN" }, ALK: { symbol: "ALK" }, ALL: { symbol: "ALL" }, AMD: { symbol: "AMD" }, ANG: { symbol: "ANG" }, AOA: { symbol: "AOA", "symbol-alt-narrow": "Kz" }, AOK: { symbol: "AOK" }, AON: { symbol: "AON" }, AOR: { symbol: "AOR" }, ARA: { symbol: "ARA" }, ARL: { symbol: "ARL" }, ARM: { symbol: "ARM" }, ARP: { symbol: "ARP" }, ARS: { symbol: "ARS", "symbol-alt-narrow": "$" }, ATS: { symbol: "ATS" }, AUD: { symbol: "A$", "symbol-alt-narrow": "$" }, AWG: { symbol: "AWG" }, AZM: { symbol: "AZM" }, AZN: { symbol: "AZN" }, BAD: { symbol: "BAD" }, BAM: { symbol: "BAM", "symbol-alt-narrow": "KM" }, BAN: { symbol: "BAN" }, BBD: { symbol: "BBD", "symbol-alt-narrow": "$" }, BDT: { symbol: "BDT", "symbol-alt-narrow": "\u09f3" }, BEC: { symbol: "BEC" }, BEF: { symbol: "BEF" }, BEL: { symbol: "BEL" }, BGL: { symbol: "BGL" }, BGM: { symbol: "BGM" }, BGN: { symbol: "BGN" }, BGO: { symbol: "BGO" }, BHD: { symbol: "BHD" }, BIF: { symbol: "BIF" }, BMD: { symbol: "BMD", "symbol-alt-narrow": "$" }, BND: { symbol: "BND", "symbol-alt-narrow": "$" }, BOB: { symbol: "BOB", "symbol-alt-narrow": "Bs" }, BOL: { symbol: "BOL" }, BOP: { symbol: "BOP" }, BOV: { symbol: "BOV" }, BRB: { symbol: "BRB" }, BRC: { symbol: "BRC" }, BRE: { symbol: "BRE" }, BRL: { symbol: "R$", "symbol-alt-narrow": "R$" }, BRN: { symbol: "BRN" }, BRR: { symbol: "BRR" }, BRZ: { symbol: "BRZ" }, BSD: { symbol: "BSD", "symbol-alt-narrow": "$" }, BTN: { symbol: "BTN" }, BUK: { symbol: "BUK" }, BWP: { symbol: "BWP", "symbol-alt-narrow": "P" }, BYB: { symbol: "BYB" }, BYN: { symbol: "BYN", "symbol-alt-narrow": "\u0440." }, BYR: { symbol: "BYR" }, BZD: { symbol: "BZD", "symbol-alt-narrow": "$" }, CAD: { symbol: "CA$", "symbol-alt-narrow": "$" }, CDF: { symbol: "CDF" }, CHE: { symbol: "CHE" }, CHF: { symbol: "CHF" }, CHW: { symbol: "CHW" }, CLE: { symbol: "CLE" }, CLF: { symbol: "CLF" }, CLP: { symbol: "CLP", "symbol-alt-narrow": "$" }, CNH: { symbol: "CNH" }, CNX: { symbol: "CNX" }, CNY: { symbol: "CN\xa5", "symbol-alt-narrow": "\xa5" }, COP: { symbol: "COP", "symbol-alt-narrow": "$" }, COU: { symbol: "COU" }, CRC: { symbol: "CRC", "symbol-alt-narrow": "\u20a1" }, CSD: { symbol: "CSD" }, CSK: { symbol: "CSK" }, CUC: { symbol: "CUC", "symbol-alt-narrow": "$" }, CUP: { symbol: "CUP", "symbol-alt-narrow": "$" }, CVE: { symbol: "CVE" }, CYP: { symbol: "CYP" }, CZK: { symbol: "CZK", "symbol-alt-narrow": "K\u010d" }, DDM: { symbol: "DDM" }, DEM: { symbol: "DEM" }, DJF: { symbol: "DJF" }, DKK: { symbol: "DKK", "symbol-alt-narrow": "kr" }, DOP: { symbol: "DOP", "symbol-alt-narrow": "$" }, DZD: { symbol: "DZD" }, ECS: { symbol: "ECS" }, ECV: { symbol: "ECV" }, EEK: { symbol: "EEK" }, EGP: { symbol: "EGP", "symbol-alt-narrow": "E\xa3" }, ERN: { symbol: "ERN" }, ESA: { symbol: "ESA" }, ESB: { symbol: "ESB" }, ESP: { symbol: "ESP", "symbol-alt-narrow": "\u20a7" }, ETB: { symbol: "ETB" }, EUR: { symbol: "\u20ac", "symbol-alt-narrow": "\u20ac" }, FIM: { symbol: "FIM" }, FJD: { symbol: "FJD", "symbol-alt-narrow": "$" }, FKP: { symbol: "FKP", "symbol-alt-narrow": "\xa3" }, FRF: { symbol: "FRF" }, GBP: { symbol: "\xa3", "symbol-alt-narrow": "\xa3" }, GEK: { symbol: "GEK" }, GEL: { symbol: "GEL", "symbol-alt-narrow": "\u20be" }, GHC: { symbol: "GHC" }, GHS: { symbol: "GHS" }, GIP: { symbol: "GIP", "symbol-alt-narrow": "\xa3" }, GMD: { symbol: "GMD" }, GNF: { symbol: "GNF", "symbol-alt-narrow": "FG" }, GNS: { symbol: "GNS" }, GQE: { symbol: "GQE" }, GRD: { symbol: "GRD" }, GTQ: { symbol: "GTQ", "symbol-alt-narrow": "Q" }, GWE: { symbol: "GWE" }, GWP: { symbol: "GWP" }, GYD: { symbol: "GYD", "symbol-alt-narrow": "$" }, HKD: { symbol: "HK$", "symbol-alt-narrow": "$" }, HNL: { symbol: "HNL", "symbol-alt-narrow": "L" }, HRD: { symbol: "HRD" }, HRK: { symbol: "HRK", "symbol-alt-narrow": "kn" }, HTG: { symbol: "HTG" }, HUF: { symbol: "HUF", "symbol-alt-narrow": "Ft" }, IDR: { symbol: "IDR", "symbol-alt-narrow": "Rp" }, IEP: { symbol: "IEP" }, ILP: { symbol: "ILP" }, ILR: { symbol: "ILR" }, ILS: { symbol: "\u20aa", "symbol-alt-narrow": "\u20aa" }, INR: { symbol: "\u20b9", "symbol-alt-narrow": "\u20b9" }, IQD: { symbol: "IQD" }, IRR: { symbol: "IRR" }, ISJ: { symbol: "ISJ" }, ISK: { symbol: "ISK", "symbol-alt-narrow": "kr" }, ITL: { symbol: "ITL" }, JMD: { symbol: "JMD", "symbol-alt-narrow": "$" }, JOD: { symbol: "JOD" }, JPY: { symbol: "\xa5", "symbol-alt-narrow": "\xa5" }, KES: { symbol: "KES" }, KGS: { symbol: "KGS" }, KHR: { symbol: "KHR", "symbol-alt-narrow": "\u17db" }, KMF: { symbol: "KMF", "symbol-alt-narrow": "CF" }, KPW: { symbol: "KPW", "symbol-alt-narrow": "\u20a9" }, KRH: { symbol: "KRH" }, KRO: { symbol: "KRO" }, KRW: { symbol: "\u20a9", "symbol-alt-narrow": "\u20a9" }, KWD: { symbol: "KWD" }, KYD: { symbol: "KYD", "symbol-alt-narrow": "$" }, KZT: { symbol: "KZT", "symbol-alt-narrow": "\u20b8" }, LAK: { symbol: "LAK", "symbol-alt-narrow": "\u20ad" }, LBP: { symbol: "LBP", "symbol-alt-narrow": "L\xa3" }, LKR: { symbol: "LKR", "symbol-alt-narrow": "Rs" }, LRD: { symbol: "LRD", "symbol-alt-narrow": "$" }, LSL: { symbol: "LSL" }, LTL: { symbol: "LTL", "symbol-alt-narrow": "Lt" }, LTT: { symbol: "LTT" }, LUC: { symbol: "LUC" }, LUF: { symbol: "LUF" }, LUL: { symbol: "LUL" }, LVL: { symbol: "LVL", "symbol-alt-narrow": "Ls" }, LVR: { symbol: "LVR" }, LYD: { symbol: "LYD" }, MAD: { symbol: "MAD" }, MAF: { symbol: "MAF" }, MCF: { symbol: "MCF" }, MDC: { symbol: "MDC" }, MDL: { symbol: "MDL" }, MGA: { symbol: "MGA", "symbol-alt-narrow": "Ar" }, MGF: { symbol: "MGF" }, MKD: { symbol: "MKD" }, MKN: { symbol: "MKN" }, MLF: { symbol: "MLF" }, MMK: { symbol: "MMK", "symbol-alt-narrow": "K" }, MNT: { symbol: "MNT", "symbol-alt-narrow": "\u20ae" }, MOP: { symbol: "MOP" }, MRO: { symbol: "MRO" }, MRU: { symbol: "MRU" }, MTL: { symbol: "MTL" }, MTP: { symbol: "MTP" }, MUR: { symbol: "MUR", "symbol-alt-narrow": "Rs" }, MVP: { symbol: "MVP" }, MVR: { symbol: "MVR" }, MWK: { symbol: "MWK" }, MXN: { symbol: "MX$", "symbol-alt-narrow": "$" }, MXP: { symbol: "MXP" }, MXV: { symbol: "MXV" }, MYR: { symbol: "MYR", "symbol-alt-narrow": "RM" }, MZE: { symbol: "MZE" }, MZM: { symbol: "MZM" }, MZN: { symbol: "MZN" }, NAD: { symbol: "NAD", "symbol-alt-narrow": "$" }, NGN: { symbol: "NGN", "symbol-alt-narrow": "\u20a6" }, NIC: { symbol: "NIC" }, NIO: { symbol: "NIO", "symbol-alt-narrow": "C$" }, NLG: { symbol: "NLG" }, NOK: { symbol: "NOK", "symbol-alt-narrow": "kr" }, NPR: { symbol: "NPR", "symbol-alt-narrow": "Rs" }, NZD: { symbol: "NZ$", "symbol-alt-narrow": "$" }, OMR: { symbol: "OMR" }, PAB: { symbol: "PAB" }, PEI: { symbol: "PEI" }, PEN: { symbol: "PEN" }, PES: { symbol: "PES" }, PGK: { symbol: "PGK" }, PHP: { symbol: "PHP", "symbol-alt-narrow": "\u20b1" }, PKR: { symbol: "PKR", "symbol-alt-narrow": "Rs" }, PLN: { symbol: "PLN", "symbol-alt-narrow": "z\u0142" }, PLZ: { symbol: "PLZ" }, PTE: { symbol: "PTE" }, PYG: { symbol: "PYG", "symbol-alt-narrow": "\u20b2" }, QAR: { symbol: "QAR" }, RHD: { symbol: "RHD" }, ROL: { symbol: "ROL" }, RON: { symbol: "RON", "symbol-alt-narrow": "lei" }, RSD: { symbol: "RSD" }, RUB: { symbol: "RUB", "symbol-alt-narrow": "\u20bd" }, RUR: { symbol: "RUR", "symbol-alt-narrow": "\u0440." }, RWF: { symbol: "RWF", "symbol-alt-narrow": "RF" }, SAR: { symbol: "SAR" }, SBD: { symbol: "SBD", "symbol-alt-narrow": "$" }, SCR: { symbol: "SCR" }, SDD: { symbol: "SDD" }, SDG: { symbol: "SDG" }, SDP: { symbol: "SDP" }, SEK: { symbol: "SEK", "symbol-alt-narrow": "kr" }, SGD: { symbol: "SGD", "symbol-alt-narrow": "$" }, SHP: { symbol: "SHP", "symbol-alt-narrow": "\xa3" }, SIT: { symbol: "SIT" }, SKK: { symbol: "SKK" }, SLL: { symbol: "SLL" }, SOS: { symbol: "SOS" }, SRD: { symbol: "SRD", "symbol-alt-narrow": "$" }, SRG: { symbol: "SRG" }, SSP: { symbol: "SSP", "symbol-alt-narrow": "\xa3" }, STD: { symbol: "STD" }, STN: { symbol: "STN", "symbol-alt-narrow": "Db" }, SUR: { symbol: "SUR" }, SVC: { symbol: "SVC" }, SYP: { symbol: "SYP", "symbol-alt-narrow": "\xa3" }, SZL: { symbol: "SZL" }, THB: { symbol: "THB", "symbol-alt-narrow": "\u0e3f" }, TJR: { symbol: "TJR" }, TJS: { symbol: "TJS" }, TMM: { symbol: "TMM" }, TMT: { symbol: "TMT" }, TND: { symbol: "TND" }, TOP: { symbol: "TOP", "symbol-alt-narrow": "T$" }, TPE: { symbol: "TPE" }, TRL: { symbol: "TRL" }, TRY: { symbol: "TRY", "symbol-alt-narrow": "\u20ba" }, TTD: { symbol: "TTD", "symbol-alt-narrow": "$" }, TWD: { symbol: "NT$", "symbol-alt-narrow": "$" }, TZS: { symbol: "TZS" }, UAH: { symbol: "UAH", "symbol-alt-narrow": "\u20b4" }, UAK: { symbol: "UAK" }, UGS: { symbol: "UGS" }, UGX: { symbol: "UGX" }, USD: { symbol: "$", "symbol-alt-narrow": "$" }, USN: { symbol: "USN" }, USS: { symbol: "USS" }, UYI: { symbol: "UYI" }, UYP: { symbol: "UYP" }, UYU: { symbol: "UYU", "symbol-alt-narrow": "$" }, UYW: { symbol: "UYW" }, UZS: { symbol: "UZS" }, VEB: { symbol: "VEB" }, VEF: { symbol: "VEF", "symbol-alt-narrow": "Bs" }, VES: { symbol: "VES" }, VND: { symbol: "\u20ab", "symbol-alt-narrow": "\u20ab" }, VNN: { symbol: "VNN" }, VUV: { symbol: "VUV" }, WST: { symbol: "WST" }, XAF: { symbol: "FCFA" }, XAG: { symbol: "XAG" }, XAU: { symbol: "XAU" }, XBA: { symbol: "XBA" }, XBB: { symbol: "XBB" }, XBC: { symbol: "XBC" }, XBD: { symbol: "XBD" }, XCD: { symbol: "EC$", "symbol-alt-narrow": "$" }, XDR: { symbol: "XDR" }, XEU: { symbol: "XEU" }, XFO: { symbol: "XFO" }, XFU: { symbol: "XFU" }, XOF: { symbol: "CFA" }, XPD: { symbol: "XPD" }, XPF: { symbol: "CFPF" }, XPT: { symbol: "XPT" }, XRE: { symbol: "XRE" }, XSU: { symbol: "XSU" }, XTS: { symbol: "XTS" }, XUA: { symbol: "XUA" }, XXX: { symbol: "\xa4" }, YDD: { symbol: "YDD" }, YER: { symbol: "YER" }, YUD: { symbol: "YUD" }, YUM: { symbol: "YUM" }, YUN: { symbol: "YUN" }, YUR: { symbol: "YUR" }, ZAL: { symbol: "ZAL" }, ZAR: { symbol: "ZAR", "symbol-alt-narrow": "R" }, ZMK: { symbol: "ZMK" }, ZMW: { symbol: "ZMW", "symbol-alt-narrow": "ZK" }, ZRN: { symbol: "ZRN" }, ZRZ: { symbol: "ZRZ" }, ZWD: { symbol: "ZWD" }, ZWL: { symbol: "ZWL" }, ZWR: { symbol: "ZWR" } } } } } } }, 29908: /*!**********************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/common/core/localization/cldr-data/first_day_of_week_data.js ***! \**********************************************************************************************************/ function(module, exports) { exports.default = void 0; // !!! AUTO-GENERATED FILE, DO NOT EDIT exports.default = { "af-NA": 1, agq: 1, ak: 1, ar: 6, "ar-EH": 1, "ar-ER": 1, "ar-KM": 1, "ar-LB": 1, "ar-MA": 1, "ar-MR": 1, "ar-PS": 1, "ar-SO": 1, "ar-SS": 1, "ar-TD": 1, "ar-TN": 1, asa: 1, ast: 1, az: 1, "az-Cyrl": 1, bas: 1, be: 1, bem: 1, bez: 1, bg: 1, bm: 1, br: 1, bs: 1, "bs-Cyrl": 1, ca: 1, ce: 1, cgg: 1, ckb: 6, cs: 1, cy: 1, da: 1, de: 1, dje: 1, dsb: 1, dua: 1, dyo: 1, ee: 1, el: 1, "en-001": 1, "en-AE": 6, "en-BI": 1, "en-MP": 1, "en-MV": 5, "en-SD": 6, eo: 1, es: 1, et: 1, eu: 1, ewo: 1, fa: 6, ff: 1, "ff-Adlm": 1, fi: 1, fo: 1, fr: 1, "fr-DJ": 6, "fr-DZ": 6, "fr-SY": 6, fur: 1, fy: 1, ga: 1, gd: 1, gl: 1, gsw: 1, gv: 1, ha: 1, hr: 1, hsb: 1, hu: 1, hy: 1, ia: 1, ig: 1, is: 1, it: 1, jgo: 1, jmc: 1, ka: 1, kab: 6, kde: 1, kea: 1, khq: 1, kk: 1, kkj: 1, kl: 1, "ko-KP": 1, ksb: 1, ksf: 1, ksh: 1, ku: 1, kw: 1, ky: 1, lag: 1, lb: 1, lg: 1, ln: 1, lrc: 6, lt: 1, lu: 1, lv: 1, "mas-TZ": 1, mfe: 1, mg: 1, mgo: 1, mi: 1, mk: 1, mn: 1, ms: 1, mua: 1, mzn: 6, naq: 1, nds: 1, nl: 1, nmg: 1, nnh: 1, no: 1, nus: 1, nyn: 1, os: 1, pcm: 1, pl: 1, ps: 6, "pt-AO": 1, "pt-CH": 1, "pt-CV": 1, "pt-GQ": 1, "pt-GW": 1, "pt-LU": 1, "pt-ST": 1, "pt-TL": 1, "qu-BO": 1, "qu-EC": 1, rm: 1, rn: 1, ro: 1, rof: 1, ru: 1, rw: 1, rwk: 1, sah: 1, sbp: 1, sc: 1, se: 1, ses: 1, sg: 1, shi: 1, "shi-Latn": 1, si: 1, sk: 1, sl: 1, smn: 1, so: 1, "so-DJ": 6, sq: 1, sr: 1, "sr-Latn": 1, sv: 1, sw: 1, "ta-LK": 1, "ta-MY": 1, teo: 1, tg: 1, "ti-ER": 1, tk: 1, to: 1, tr: 1, tt: 1, twq: 1, tzm: 1, uk: 1, uz: 1, "uz-Arab": 6, "uz-Cyrl": 1, vai: 1, "vai-Latn": 1, vi: 1, vun: 1, wae: 1, wo: 1, xog: 1, yav: 1, yi: 1, yo: 1, zgh: 1 }; module.exports = exports.default; module.exports.default = exports.default }, 85703: /*!**************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/common/core/localization/cldr-data/parent_locales.js ***! \**************************************************************************************************/ function(module, exports) { exports.default = void 0; // !!! AUTO-GENERATED FILE, DO NOT EDIT exports.default = { "en-150": "en-001", "en-AG": "en-001", "en-AI": "en-001", "en-AU": "en-001", "en-BB": "en-001", "en-BM": "en-001", "en-BS": "en-001", "en-BW": "en-001", "en-BZ": "en-001", "en-CC": "en-001", "en-CK": "en-001", "en-CM": "en-001", "en-CX": "en-001", "en-CY": "en-001", "en-DG": "en-001", "en-DM": "en-001", "en-ER": "en-001", "en-FJ": "en-001", "en-FK": "en-001", "en-FM": "en-001", "en-GB": "en-001", "en-GD": "en-001", "en-GG": "en-001", "en-GH": "en-001", "en-GI": "en-001", "en-GM": "en-001", "en-GY": "en-001", "en-HK": "en-001", "en-IE": "en-001", "en-IL": "en-001", "en-IM": "en-001", "en-IN": "en-001", "en-IO": "en-001", "en-JE": "en-001", "en-JM": "en-001", "en-KE": "en-001", "en-KI": "en-001", "en-KN": "en-001", "en-KY": "en-001", "en-LC": "en-001", "en-LR": "en-001", "en-LS": "en-001", "en-MG": "en-001", "en-MO": "en-001", "en-MS": "en-001", "en-MT": "en-001", "en-MU": "en-001", "en-MV": "en-001", "en-MW": "en-001", "en-MY": "en-001", "en-NA": "en-001", "en-NF": "en-001", "en-NG": "en-001", "en-NR": "en-001", "en-NU": "en-001", "en-NZ": "en-001", "en-PG": "en-001", "en-PK": "en-001", "en-PN": "en-001", "en-PW": "en-001", "en-RW": "en-001", "en-SB": "en-001", "en-SC": "en-001", "en-SD": "en-001", "en-SG": "en-001", "en-SH": "en-001", "en-SL": "en-001", "en-SS": "en-001", "en-SX": "en-001", "en-SZ": "en-001", "en-TC": "en-001", "en-TK": "en-001", "en-TO": "en-001", "en-TT": "en-001", "en-TV": "en-001", "en-TZ": "en-001", "en-UG": "en-001", "en-VC": "en-001", "en-VG": "en-001", "en-VU": "en-001", "en-WS": "en-001", "en-ZA": "en-001", "en-ZM": "en-001", "en-ZW": "en-001", "en-AT": "en-150", "en-BE": "en-150", "en-CH": "en-150", "en-DE": "en-150", "en-DK": "en-150", "en-FI": "en-150", "en-NL": "en-150", "en-SE": "en-150", "en-SI": "en-150", "hi-Latn": "en-IN", "es-AR": "es-419", "es-BO": "es-419", "es-BR": "es-419", "es-BZ": "es-419", "es-CL": "es-419", "es-CO": "es-419", "es-CR": "es-419", "es-CU": "es-419", "es-DO": "es-419", "es-EC": "es-419", "es-GT": "es-419", "es-HN": "es-419", "es-MX": "es-419", "es-NI": "es-419", "es-PA": "es-419", "es-PE": "es-419", "es-PR": "es-419", "es-PY": "es-419", "es-SV": "es-419", "es-US": "es-419", "es-UY": "es-419", "es-VE": "es-419", nb: "no", nn: "no", "pt-AO": "pt-PT", "pt-CH": "pt-PT", "pt-CV": "pt-PT", "pt-FR": "pt-PT", "pt-GQ": "pt-PT", "pt-GW": "pt-PT", "pt-LU": "pt-PT", "pt-MO": "pt-PT", "pt-MZ": "pt-PT", "pt-ST": "pt-PT", "pt-TL": "pt-PT", "az-Arab": "und", "az-Cyrl": "und", "bal-Latn": "und", "blt-Latn": "und", "bm-Nkoo": "und", "bs-Cyrl": "und", "byn-Latn": "und", "cu-Glag": "und", "dje-Arab": "und", "dyo-Arab": "und", "en-Dsrt": "und", "en-Shaw": "und", "ff-Adlm": "und", "ff-Arab": "und", "ha-Arab": "und", "iu-Latn": "und", "kk-Arab": "und", "ks-Deva": "und", "ku-Arab": "und", "ky-Arab": "und", "ky-Latn": "und", "ml-Arab": "und", "mn-Mong": "und", "mni-Mtei": "und", "ms-Arab": "und", "pa-Arab": "und", "sat-Deva": "und", "sd-Deva": "und", "sd-Khoj": "und", "sd-Sind": "und", "shi-Latn": "und", "so-Arab": "und", "sr-Latn": "und", "sw-Arab": "und", "tg-Arab": "und", "ug-Cyrl": "und", "uz-Arab": "und", "uz-Cyrl": "und", "vai-Latn": "und", "wo-Arab": "und", "yo-Arab": "und", "yue-Hans": "und", "zh-Hant": "und", "zh-Hant-MO": "zh-Hant-HK" }; module.exports = exports.default; module.exports.default = exports.default }, 99645: /*!************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/common/core/localization/cldr-data/supplemental.js ***! \************************************************************************************************/ function(__unused_webpack_module, exports) { exports.supplementalCldr = void 0; // !!! AUTO-GENERATED FILE, DO NOT EDIT exports.supplementalCldr = { supplemental: { version: { _unicodeVersion: "12.1.0", _cldrVersion: "36" }, likelySubtags: { aa: "aa-Latn-ET", aai: "aai-Latn-ZZ", aak: "aak-Latn-ZZ", aau: "aau-Latn-ZZ", ab: "ab-Cyrl-GE", abi: "abi-Latn-ZZ", abq: "abq-Cyrl-ZZ", abr: "abr-Latn-GH", abt: "abt-Latn-ZZ", aby: "aby-Latn-ZZ", acd: "acd-Latn-ZZ", ace: "ace-Latn-ID", ach: "ach-Latn-UG", ada: "ada-Latn-GH", ade: "ade-Latn-ZZ", adj: "adj-Latn-ZZ", adp: "adp-Tibt-BT", ady: "ady-Cyrl-RU", adz: "adz-Latn-ZZ", ae: "ae-Avst-IR", aeb: "aeb-Arab-TN", aey: "aey-Latn-ZZ", af: "af-Latn-ZA", agc: "agc-Latn-ZZ", agd: "agd-Latn-ZZ", agg: "agg-Latn-ZZ", agm: "agm-Latn-ZZ", ago: "ago-Latn-ZZ", agq: "agq-Latn-CM", aha: "aha-Latn-ZZ", ahl: "ahl-Latn-ZZ", aho: "aho-Ahom-IN", ajg: "ajg-Latn-ZZ", ak: "ak-Latn-GH", akk: "akk-Xsux-IQ", ala: "ala-Latn-ZZ", ali: "ali-Latn-ZZ", aln: "aln-Latn-XK", alt: "alt-Cyrl-RU", am: "am-Ethi-ET", amm: "amm-Latn-ZZ", amn: "amn-Latn-ZZ", amo: "amo-Latn-NG", amp: "amp-Latn-ZZ", an: "an-Latn-ES", anc: "anc-Latn-ZZ", ank: "ank-Latn-ZZ", ann: "ann-Latn-ZZ", any: "any-Latn-ZZ", aoj: "aoj-Latn-ZZ", aom: "aom-Latn-ZZ", aoz: "aoz-Latn-ID", apc: "apc-Arab-ZZ", apd: "apd-Arab-TG", ape: "ape-Latn-ZZ", apr: "apr-Latn-ZZ", aps: "aps-Latn-ZZ", apz: "apz-Latn-ZZ", ar: "ar-Arab-EG", arc: "arc-Armi-IR", "arc-Nbat": "arc-Nbat-JO", "arc-Palm": "arc-Palm-SY", arh: "arh-Latn-ZZ", arn: "arn-Latn-CL", aro: "aro-Latn-BO", arq: "arq-Arab-DZ", ars: "ars-Arab-SA", ary: "ary-Arab-MA", arz: "arz-Arab-EG", as: "as-Beng-IN", asa: "asa-Latn-TZ", ase: "ase-Sgnw-US", asg: "asg-Latn-ZZ", aso: "aso-Latn-ZZ", ast: "ast-Latn-ES", ata: "ata-Latn-ZZ", atg: "atg-Latn-ZZ", atj: "atj-Latn-CA", auy: "auy-Latn-ZZ", av: "av-Cyrl-RU", avl: "avl-Arab-ZZ", avn: "avn-Latn-ZZ", avt: "avt-Latn-ZZ", avu: "avu-Latn-ZZ", awa: "awa-Deva-IN", awb: "awb-Latn-ZZ", awo: "awo-Latn-ZZ", awx: "awx-Latn-ZZ", ay: "ay-Latn-BO", ayb: "ayb-Latn-ZZ", az: "az-Latn-AZ", "az-Arab": "az-Arab-IR", "az-IQ": "az-Arab-IQ", "az-IR": "az-Arab-IR", "az-RU": "az-Cyrl-RU", ba: "ba-Cyrl-RU", bal: "bal-Arab-PK", ban: "ban-Latn-ID", bap: "bap-Deva-NP", bar: "bar-Latn-AT", bas: "bas-Latn-CM", bav: "bav-Latn-ZZ", bax: "bax-Bamu-CM", bba: "bba-Latn-ZZ", bbb: "bbb-Latn-ZZ", bbc: "bbc-Latn-ID", bbd: "bbd-Latn-ZZ", bbj: "bbj-Latn-CM", bbp: "bbp-Latn-ZZ", bbr: "bbr-Latn-ZZ", bcf: "bcf-Latn-ZZ", bch: "bch-Latn-ZZ", bci: "bci-Latn-CI", bcm: "bcm-Latn-ZZ", bcn: "bcn-Latn-ZZ", bco: "bco-Latn-ZZ", bcq: "bcq-Ethi-ZZ", bcu: "bcu-Latn-ZZ", bdd: "bdd-Latn-ZZ", be: "be-Cyrl-BY", bef: "bef-Latn-ZZ", beh: "beh-Latn-ZZ", bej: "bej-Arab-SD", bem: "bem-Latn-ZM", bet: "bet-Latn-ZZ", bew: "bew-Latn-ID", bex: "bex-Latn-ZZ", bez: "bez-Latn-TZ", bfd: "bfd-Latn-CM", bfq: "bfq-Taml-IN", bft: "bft-Arab-PK", bfy: "bfy-Deva-IN", bg: "bg-Cyrl-BG", bgc: "bgc-Deva-IN", bgn: "bgn-Arab-PK", bgx: "bgx-Grek-TR", bhb: "bhb-Deva-IN", bhg: "bhg-Latn-ZZ", bhi: "bhi-Deva-IN", bhl: "bhl-Latn-ZZ", bho: "bho-Deva-IN", bhy: "bhy-Latn-ZZ", bi: "bi-Latn-VU", bib: "bib-Latn-ZZ", big: "big-Latn-ZZ", bik: "bik-Latn-PH", bim: "bim-Latn-ZZ", bin: "bin-Latn-NG", bio: "bio-Latn-ZZ", biq: "biq-Latn-ZZ", bjh: "bjh-Latn-ZZ", bji: "bji-Ethi-ZZ", bjj: "bjj-Deva-IN", bjn: "bjn-Latn-ID", bjo: "bjo-Latn-ZZ", bjr: "bjr-Latn-ZZ", bjt: "bjt-Latn-SN", bjz: "bjz-Latn-ZZ", bkc: "bkc-Latn-ZZ", bkm: "bkm-Latn-CM", bkq: "bkq-Latn-ZZ", bku: "bku-Latn-PH", bkv: "bkv-Latn-ZZ", blt: "blt-Tavt-VN", bm: "bm-Latn-ML", bmh: "bmh-Latn-ZZ", bmk: "bmk-Latn-ZZ", bmq: "bmq-Latn-ML", bmu: "bmu-Latn-ZZ", bn: "bn-Beng-BD", bng: "bng-Latn-ZZ", bnm: "bnm-Latn-ZZ", bnp: "bnp-Latn-ZZ", bo: "bo-Tibt-CN", boj: "boj-Latn-ZZ", bom: "bom-Latn-ZZ", bon: "bon-Latn-ZZ", bpy: "bpy-Beng-IN", bqc: "bqc-Latn-ZZ", bqi: "bqi-Arab-IR", bqp: "bqp-Latn-ZZ", bqv: "bqv-Latn-CI", br: "br-Latn-FR", bra: "bra-Deva-IN", brh: "brh-Arab-PK", brx: "brx-Deva-IN", brz: "brz-Latn-ZZ", bs: "bs-Latn-BA", bsj: "bsj-Latn-ZZ", bsq: "bsq-Bass-LR", bss: "bss-Latn-CM", bst: "bst-Ethi-ZZ", bto: "bto-Latn-PH", btt: "btt-Latn-ZZ", btv: "btv-Deva-PK", bua: "bua-Cyrl-RU", buc: "buc-Latn-YT", bud: "bud-Latn-ZZ", bug: "bug-Latn-ID", buk: "buk-Latn-ZZ", bum: "bum-Latn-CM", buo: "buo-Latn-ZZ", bus: "bus-Latn-ZZ", buu: "buu-Latn-ZZ", bvb: "bvb-Latn-GQ", bwd: "bwd-Latn-ZZ", bwr: "bwr-Latn-ZZ", bxh: "bxh-Latn-ZZ", bye: "bye-Latn-ZZ", byn: "byn-Ethi-ER", byr: "byr-Latn-ZZ", bys: "bys-Latn-ZZ", byv: "byv-Latn-CM", byx: "byx-Latn-ZZ", bza: "bza-Latn-ZZ", bze: "bze-Latn-ML", bzf: "bzf-Latn-ZZ", bzh: "bzh-Latn-ZZ", bzw: "bzw-Latn-ZZ", ca: "ca-Latn-ES", can: "can-Latn-ZZ", cbj: "cbj-Latn-ZZ", cch: "cch-Latn-NG", ccp: "ccp-Cakm-BD", ce: "ce-Cyrl-RU", ceb: "ceb-Latn-PH", cfa: "cfa-Latn-ZZ", cgg: "cgg-Latn-UG", ch: "ch-Latn-GU", chk: "chk-Latn-FM", chm: "chm-Cyrl-RU", cho: "cho-Latn-US", chp: "chp-Latn-CA", chr: "chr-Cher-US", cic: "cic-Latn-US", cja: "cja-Arab-KH", cjm: "cjm-Cham-VN", cjv: "cjv-Latn-ZZ", ckb: "ckb-Arab-IQ", ckl: "ckl-Latn-ZZ", cko: "cko-Latn-ZZ", cky: "cky-Latn-ZZ", cla: "cla-Latn-ZZ", cme: "cme-Latn-ZZ", cmg: "cmg-Soyo-MN", co: "co-Latn-FR", cop: "cop-Copt-EG", cps: "cps-Latn-PH", cr: "cr-Cans-CA", crh: "crh-Cyrl-UA", crj: "crj-Cans-CA", crk: "crk-Cans-CA", crl: "crl-Cans-CA", crm: "crm-Cans-CA", crs: "crs-Latn-SC", cs: "cs-Latn-CZ", csb: "csb-Latn-PL", csw: "csw-Cans-CA", ctd: "ctd-Pauc-MM", cu: "cu-Cyrl-RU", "cu-Glag": "cu-Glag-BG", cv: "cv-Cyrl-RU", cy: "cy-Latn-GB", da: "da-Latn-DK", dad: "dad-Latn-ZZ", daf: "daf-Latn-ZZ", dag: "dag-Latn-ZZ", dah: "dah-Latn-ZZ", dak: "dak-Latn-US", dar: "dar-Cyrl-RU", dav: "dav-Latn-KE", dbd: "dbd-Latn-ZZ", dbq: "dbq-Latn-ZZ", dcc: "dcc-Arab-IN", ddn: "ddn-Latn-ZZ", de: "de-Latn-DE", ded: "ded-Latn-ZZ", den: "den-Latn-CA", dga: "dga-Latn-ZZ", dgh: "dgh-Latn-ZZ", dgi: "dgi-Latn-ZZ", dgl: "dgl-Arab-ZZ", dgr: "dgr-Latn-CA", dgz: "dgz-Latn-ZZ", dia: "dia-Latn-ZZ", dje: "dje-Latn-NE", dnj: "dnj-Latn-CI", dob: "dob-Latn-ZZ", doi: "doi-Arab-IN", dop: "dop-Latn-ZZ", dow: "dow-Latn-ZZ", drh: "drh-Mong-CN", dri: "dri-Latn-ZZ", drs: "drs-Ethi-ZZ", dsb: "dsb-Latn-DE", dtm: "dtm-Latn-ML", dtp: "dtp-Latn-MY", dts: "dts-Latn-ZZ", dty: "dty-Deva-NP", dua: "dua-Latn-CM", duc: "duc-Latn-ZZ", dud: "dud-Latn-ZZ", dug: "dug-Latn-ZZ", dv: "dv-Thaa-MV", dva: "dva-Latn-ZZ", dww: "dww-Latn-ZZ", dyo: "dyo-Latn-SN", dyu: "dyu-Latn-BF", dz: "dz-Tibt-BT", dzg: "dzg-Latn-ZZ", ebu: "ebu-Latn-KE", ee: "ee-Latn-GH", efi: "efi-Latn-NG", egl: "egl-Latn-IT", egy: "egy-Egyp-EG", eka: "eka-Latn-ZZ", eky: "eky-Kali-MM", el: "el-Grek-GR", ema: "ema-Latn-ZZ", emi: "emi-Latn-ZZ", en: "en-Latn-US", "en-Shaw": "en-Shaw-GB", enn: "enn-Latn-ZZ", enq: "enq-Latn-ZZ", eo: "eo-Latn-001", eri: "eri-Latn-ZZ", es: "es-Latn-ES", esg: "esg-Gonm-IN", esu: "esu-Latn-US", et: "et-Latn-EE", etr: "etr-Latn-ZZ", ett: "ett-Ital-IT", etu: "etu-Latn-ZZ", etx: "etx-Latn-ZZ", eu: "eu-Latn-ES", ewo: "ewo-Latn-CM", ext: "ext-Latn-ES", fa: "fa-Arab-IR", faa: "faa-Latn-ZZ", fab: "fab-Latn-ZZ", fag: "fag-Latn-ZZ", fai: "fai-Latn-ZZ", fan: "fan-Latn-GQ", ff: "ff-Latn-SN", "ff-Adlm": "ff-Adlm-GN", ffi: "ffi-Latn-ZZ", ffm: "ffm-Latn-ML", fi: "fi-Latn-FI", fia: "fia-Arab-SD", fil: "fil-Latn-PH", fit: "fit-Latn-SE", fj: "fj-Latn-FJ", flr: "flr-Latn-ZZ", fmp: "fmp-Latn-ZZ", fo: "fo-Latn-FO", fod: "fod-Latn-ZZ", fon: "fon-Latn-BJ", for: "for-Latn-ZZ", fpe: "fpe-Latn-ZZ", fqs: "fqs-Latn-ZZ", fr: "fr-Latn-FR", frc: "frc-Latn-US", frp: "frp-Latn-FR", frr: "frr-Latn-DE", frs: "frs-Latn-DE", fub: "fub-Arab-CM", fud: "fud-Latn-WF", fue: "fue-Latn-ZZ", fuf: "fuf-Latn-GN", fuh: "fuh-Latn-ZZ", fuq: "fuq-Latn-NE", fur: "fur-Latn-IT", fuv: "fuv-Latn-NG", fuy: "fuy-Latn-ZZ", fvr: "fvr-Latn-SD", fy: "fy-Latn-NL", ga: "ga-Latn-IE", gaa: "gaa-Latn-GH", gaf: "gaf-Latn-ZZ", gag: "gag-Latn-MD", gah: "gah-Latn-ZZ", gaj: "gaj-Latn-ZZ", gam: "gam-Latn-ZZ", gan: "gan-Hans-CN", gaw: "gaw-Latn-ZZ", gay: "gay-Latn-ID", gba: "gba-Latn-ZZ", gbf: "gbf-Latn-ZZ", gbm: "gbm-Deva-IN", gby: "gby-Latn-ZZ", gbz: "gbz-Arab-IR", gcr: "gcr-Latn-GF", gd: "gd-Latn-GB", gde: "gde-Latn-ZZ", gdn: "gdn-Latn-ZZ", gdr: "gdr-Latn-ZZ", geb: "geb-Latn-ZZ", gej: "gej-Latn-ZZ", gel: "gel-Latn-ZZ", gez: "gez-Ethi-ET", gfk: "gfk-Latn-ZZ", ggn: "ggn-Deva-NP", ghs: "ghs-Latn-ZZ", gil: "gil-Latn-KI", gim: "gim-Latn-ZZ", gjk: "gjk-Arab-PK", gjn: "gjn-Latn-ZZ", gju: "gju-Arab-PK", gkn: "gkn-Latn-ZZ", gkp: "gkp-Latn-ZZ", gl: "gl-Latn-ES", glk: "glk-Arab-IR", gmm: "gmm-Latn-ZZ", gmv: "gmv-Ethi-ZZ", gn: "gn-Latn-PY", gnd: "gnd-Latn-ZZ", gng: "gng-Latn-ZZ", god: "god-Latn-ZZ", gof: "gof-Ethi-ZZ", goi: "goi-Latn-ZZ", gom: "gom-Deva-IN", gon: "gon-Telu-IN", gor: "gor-Latn-ID", gos: "gos-Latn-NL", got: "got-Goth-UA", grb: "grb-Latn-ZZ", grc: "grc-Cprt-CY", "grc-Linb": "grc-Linb-GR", grt: "grt-Beng-IN", grw: "grw-Latn-ZZ", gsw: "gsw-Latn-CH", gu: "gu-Gujr-IN", gub: "gub-Latn-BR", guc: "guc-Latn-CO", gud: "gud-Latn-ZZ", gur: "gur-Latn-GH", guw: "guw-Latn-ZZ", gux: "gux-Latn-ZZ", guz: "guz-Latn-KE", gv: "gv-Latn-IM", gvf: "gvf-Latn-ZZ", gvr: "gvr-Deva-NP", gvs: "gvs-Latn-ZZ", gwc: "gwc-Arab-ZZ", gwi: "gwi-Latn-CA", gwt: "gwt-Arab-ZZ", gyi: "gyi-Latn-ZZ", ha: "ha-Latn-NG", "ha-CM": "ha-Arab-CM", "ha-SD": "ha-Arab-SD", hag: "hag-Latn-ZZ", hak: "hak-Hans-CN", ham: "ham-Latn-ZZ", haw: "haw-Latn-US", haz: "haz-Arab-AF", hbb: "hbb-Latn-ZZ", hdy: "hdy-Ethi-ZZ", he: "he-Hebr-IL", hhy: "hhy-Latn-ZZ", hi: "hi-Deva-IN", hia: "hia-Latn-ZZ", hif: "hif-Latn-FJ", hig: "hig-Latn-ZZ", hih: "hih-Latn-ZZ", hil: "hil-Latn-PH", hla: "hla-Latn-ZZ", hlu: "hlu-Hluw-TR", hmd: "hmd-Plrd-CN", hmt: "hmt-Latn-ZZ", hnd: "hnd-Arab-PK", hne: "hne-Deva-IN", hnj: "hnj-Hmng-LA", hnn: "hnn-Latn-PH", hno: "hno-Arab-PK", ho: "ho-Latn-PG", hoc: "hoc-Deva-IN", hoj: "hoj-Deva-IN", hot: "hot-Latn-ZZ", hr: "hr-Latn-HR", hsb: "hsb-Latn-DE", hsn: "hsn-Hans-CN", ht: "ht-Latn-HT", hu: "hu-Latn-HU", hui: "hui-Latn-ZZ", hy: "hy-Armn-AM", hz: "hz-Latn-NA", ia: "ia-Latn-001", ian: "ian-Latn-ZZ", iar: "iar-Latn-ZZ", iba: "iba-Latn-MY", ibb: "ibb-Latn-NG", iby: "iby-Latn-ZZ", ica: "ica-Latn-ZZ", ich: "ich-Latn-ZZ", id: "id-Latn-ID", idd: "idd-Latn-ZZ", idi: "idi-Latn-ZZ", idu: "idu-Latn-ZZ", ife: "ife-Latn-TG", ig: "ig-Latn-NG", igb: "igb-Latn-ZZ", ige: "ige-Latn-ZZ", ii: "ii-Yiii-CN", ijj: "ijj-Latn-ZZ", ik: "ik-Latn-US", ikk: "ikk-Latn-ZZ", ikt: "ikt-Latn-CA", ikw: "ikw-Latn-ZZ", ikx: "ikx-Latn-ZZ", ilo: "ilo-Latn-PH", imo: "imo-Latn-ZZ", in: "in-Latn-ID", inh: "inh-Cyrl-RU", io: "io-Latn-001", iou: "iou-Latn-ZZ", iri: "iri-Latn-ZZ", is: "is-Latn-IS", it: "it-Latn-IT", iu: "iu-Cans-CA", iw: "iw-Hebr-IL", iwm: "iwm-Latn-ZZ", iws: "iws-Latn-ZZ", izh: "izh-Latn-RU", izi: "izi-Latn-ZZ", ja: "ja-Jpan-JP", jab: "jab-Latn-ZZ", jam: "jam-Latn-JM", jbo: "jbo-Latn-001", jbu: "jbu-Latn-ZZ", jen: "jen-Latn-ZZ", jgk: "jgk-Latn-ZZ", jgo: "jgo-Latn-CM", ji: "ji-Hebr-UA", jib: "jib-Latn-ZZ", jmc: "jmc-Latn-TZ", jml: "jml-Deva-NP", jra: "jra-Latn-ZZ", jut: "jut-Latn-DK", jv: "jv-Latn-ID", jw: "jw-Latn-ID", ka: "ka-Geor-GE", kaa: "kaa-Cyrl-UZ", kab: "kab-Latn-DZ", kac: "kac-Latn-MM", kad: "kad-Latn-ZZ", kai: "kai-Latn-ZZ", kaj: "kaj-Latn-NG", kam: "kam-Latn-KE", kao: "kao-Latn-ML", kbd: "kbd-Cyrl-RU", kbm: "kbm-Latn-ZZ", kbp: "kbp-Latn-ZZ", kbq: "kbq-Latn-ZZ", kbx: "kbx-Latn-ZZ", kby: "kby-Arab-NE", kcg: "kcg-Latn-NG", kck: "kck-Latn-ZW", kcl: "kcl-Latn-ZZ", kct: "kct-Latn-ZZ", kde: "kde-Latn-TZ", kdh: "kdh-Arab-TG", kdl: "kdl-Latn-ZZ", kdt: "kdt-Thai-TH", kea: "kea-Latn-CV", ken: "ken-Latn-CM", kez: "kez-Latn-ZZ", kfo: "kfo-Latn-CI", kfr: "kfr-Deva-IN", kfy: "kfy-Deva-IN", kg: "kg-Latn-CD", kge: "kge-Latn-ID", kgf: "kgf-Latn-ZZ", kgp: "kgp-Latn-BR", kha: "kha-Latn-IN", khb: "khb-Talu-CN", khn: "khn-Deva-IN", khq: "khq-Latn-ML", khs: "khs-Latn-ZZ", kht: "kht-Mymr-IN", khw: "khw-Arab-PK", khz: "khz-Latn-ZZ", ki: "ki-Latn-KE", kij: "kij-Latn-ZZ", kiu: "kiu-Latn-TR", kiw: "kiw-Latn-ZZ", kj: "kj-Latn-NA", kjd: "kjd-Latn-ZZ", kjg: "kjg-Laoo-LA", kjs: "kjs-Latn-ZZ", kjy: "kjy-Latn-ZZ", kk: "kk-Cyrl-KZ", "kk-AF": "kk-Arab-AF", "kk-Arab": "kk-Arab-CN", "kk-CN": "kk-Arab-CN", "kk-IR": "kk-Arab-IR", "kk-MN": "kk-Arab-MN", kkc: "kkc-Latn-ZZ", kkj: "kkj-Latn-CM", kl: "kl-Latn-GL", kln: "kln-Latn-KE", klq: "klq-Latn-ZZ", klt: "klt-Latn-ZZ", klx: "klx-Latn-ZZ", km: "km-Khmr-KH", kmb: "kmb-Latn-AO", kmh: "kmh-Latn-ZZ", kmo: "kmo-Latn-ZZ", kms: "kms-Latn-ZZ", kmu: "kmu-Latn-ZZ", kmw: "kmw-Latn-ZZ", kn: "kn-Knda-IN", knf: "knf-Latn-GW", knp: "knp-Latn-ZZ", ko: "ko-Kore-KR", koi: "koi-Cyrl-RU", kok: "kok-Deva-IN", kol: "kol-Latn-ZZ", kos: "kos-Latn-FM", koz: "koz-Latn-ZZ", kpe: "kpe-Latn-LR", kpf: "kpf-Latn-ZZ", kpo: "kpo-Latn-ZZ", kpr: "kpr-Latn-ZZ", kpx: "kpx-Latn-ZZ", kqb: "kqb-Latn-ZZ", kqf: "kqf-Latn-ZZ", kqs: "kqs-Latn-ZZ", kqy: "kqy-Ethi-ZZ", kr: "kr-Latn-ZZ", krc: "krc-Cyrl-RU", kri: "kri-Latn-SL", krj: "krj-Latn-PH", krl: "krl-Latn-RU", krs: "krs-Latn-ZZ", kru: "kru-Deva-IN", ks: "ks-Arab-IN", ksb: "ksb-Latn-TZ", ksd: "ksd-Latn-ZZ", ksf: "ksf-Latn-CM", ksh: "ksh-Latn-DE", ksj: "ksj-Latn-ZZ", ksr: "ksr-Latn-ZZ", ktb: "ktb-Ethi-ZZ", ktm: "ktm-Latn-ZZ", kto: "kto-Latn-ZZ", ktr: "ktr-Latn-MY", ku: "ku-Latn-TR", "ku-Arab": "ku-Arab-IQ", "ku-LB": "ku-Arab-LB", kub: "kub-Latn-ZZ", kud: "kud-Latn-ZZ", kue: "kue-Latn-ZZ", kuj: "kuj-Latn-ZZ", kum: "kum-Cyrl-RU", kun: "kun-Latn-ZZ", kup: "kup-Latn-ZZ", kus: "kus-Latn-ZZ", kv: "kv-Cyrl-RU", kvg: "kvg-Latn-ZZ", kvr: "kvr-Latn-ID", kvx: "kvx-Arab-PK", kw: "kw-Latn-GB", kwj: "kwj-Latn-ZZ", kwo: "kwo-Latn-ZZ", kwq: "kwq-Latn-ZZ", kxa: "kxa-Latn-ZZ", kxc: "kxc-Ethi-ZZ", kxe: "kxe-Latn-ZZ", kxm: "kxm-Thai-TH", kxp: "kxp-Arab-PK", kxw: "kxw-Latn-ZZ", kxz: "kxz-Latn-ZZ", ky: "ky-Cyrl-KG", "ky-Arab": "ky-Arab-CN", "ky-CN": "ky-Arab-CN", "ky-Latn": "ky-Latn-TR", "ky-TR": "ky-Latn-TR", kye: "kye-Latn-ZZ", kyx: "kyx-Latn-ZZ", kzj: "kzj-Latn-MY", kzr: "kzr-Latn-ZZ", kzt: "kzt-Latn-MY", la: "la-Latn-VA", lab: "lab-Lina-GR", lad: "lad-Hebr-IL", lag: "lag-Latn-TZ", lah: "lah-Arab-PK", laj: "laj-Latn-UG", las: "las-Latn-ZZ", lb: "lb-Latn-LU", lbe: "lbe-Cyrl-RU", lbu: "lbu-Latn-ZZ", lbw: "lbw-Latn-ID", lcm: "lcm-Latn-ZZ", lcp: "lcp-Thai-CN", ldb: "ldb-Latn-ZZ", led: "led-Latn-ZZ", lee: "lee-Latn-ZZ", lem: "lem-Latn-ZZ", lep: "lep-Lepc-IN", leq: "leq-Latn-ZZ", leu: "leu-Latn-ZZ", lez: "lez-Cyrl-RU", lg: "lg-Latn-UG", lgg: "lgg-Latn-ZZ", li: "li-Latn-NL", lia: "lia-Latn-ZZ", lid: "lid-Latn-ZZ", lif: "lif-Deva-NP", "lif-Limb": "lif-Limb-IN", lig: "lig-Latn-ZZ", lih: "lih-Latn-ZZ", lij: "lij-Latn-IT", lis: "lis-Lisu-CN", ljp: "ljp-Latn-ID", lki: "lki-Arab-IR", lkt: "lkt-Latn-US", lle: "lle-Latn-ZZ", lln: "lln-Latn-ZZ", lmn: "lmn-Telu-IN", lmo: "lmo-Latn-IT", lmp: "lmp-Latn-ZZ", ln: "ln-Latn-CD", lns: "lns-Latn-ZZ", lnu: "lnu-Latn-ZZ", lo: "lo-Laoo-LA", loj: "loj-Latn-ZZ", lok: "lok-Latn-ZZ", lol: "lol-Latn-CD", lor: "lor-Latn-ZZ", los: "los-Latn-ZZ", loz: "loz-Latn-ZM", lrc: "lrc-Arab-IR", lt: "lt-Latn-LT", ltg: "ltg-Latn-LV", lu: "lu-Latn-CD", lua: "lua-Latn-CD", luo: "luo-Latn-KE", luy: "luy-Latn-KE", luz: "luz-Arab-IR", lv: "lv-Latn-LV", lwl: "lwl-Thai-TH", lzh: "lzh-Hans-CN", lzz: "lzz-Latn-TR", mad: "mad-Latn-ID", maf: "maf-Latn-CM", mag: "mag-Deva-IN", mai: "mai-Deva-IN", mak: "mak-Latn-ID", man: "man-Latn-GM", "man-GN": "man-Nkoo-GN", "man-Nkoo": "man-Nkoo-GN", mas: "mas-Latn-KE", maw: "maw-Latn-ZZ", maz: "maz-Latn-MX", mbh: "mbh-Latn-ZZ", mbo: "mbo-Latn-ZZ", mbq: "mbq-Latn-ZZ", mbu: "mbu-Latn-ZZ", mbw: "mbw-Latn-ZZ", mci: "mci-Latn-ZZ", mcp: "mcp-Latn-ZZ", mcq: "mcq-Latn-ZZ", mcr: "mcr-Latn-ZZ", mcu: "mcu-Latn-ZZ", mda: "mda-Latn-ZZ", mde: "mde-Arab-ZZ", mdf: "mdf-Cyrl-RU", mdh: "mdh-Latn-PH", mdj: "mdj-Latn-ZZ", mdr: "mdr-Latn-ID", mdx: "mdx-Ethi-ZZ", med: "med-Latn-ZZ", mee: "mee-Latn-ZZ", mek: "mek-Latn-ZZ", men: "men-Latn-SL", mer: "mer-Latn-KE", met: "met-Latn-ZZ", meu: "meu-Latn-ZZ", mfa: "mfa-Arab-TH", mfe: "mfe-Latn-MU", mfn: "mfn-Latn-ZZ", mfo: "mfo-Latn-ZZ", mfq: "mfq-Latn-ZZ", mg: "mg-Latn-MG", mgh: "mgh-Latn-MZ", mgl: "mgl-Latn-ZZ", mgo: "mgo-Latn-CM", mgp: "mgp-Deva-NP", mgy: "mgy-Latn-TZ", mh: "mh-Latn-MH", mhi: "mhi-Latn-ZZ", mhl: "mhl-Latn-ZZ", mi: "mi-Latn-NZ", mif: "mif-Latn-ZZ", min: "min-Latn-ID", mis: "mis-Hatr-IQ", "mis-Medf": "mis-Medf-NG", miw: "miw-Latn-ZZ", mk: "mk-Cyrl-MK", mki: "mki-Arab-ZZ", mkl: "mkl-Latn-ZZ", mkp: "mkp-Latn-ZZ", mkw: "mkw-Latn-ZZ", ml: "ml-Mlym-IN", mle: "mle-Latn-ZZ", mlp: "mlp-Latn-ZZ", mls: "mls-Latn-SD", mmo: "mmo-Latn-ZZ", mmu: "mmu-Latn-ZZ", mmx: "mmx-Latn-ZZ", mn: "mn-Cyrl-MN", "mn-CN": "mn-Mong-CN", "mn-Mong": "mn-Mong-CN", mna: "mna-Latn-ZZ", mnf: "mnf-Latn-ZZ", mni: "mni-Beng-IN", mnw: "mnw-Mymr-MM", mo: "mo-Latn-RO", moa: "moa-Latn-ZZ", moe: "moe-Latn-CA", moh: "moh-Latn-CA", mos: "mos-Latn-BF", mox: "mox-Latn-ZZ", mpp: "mpp-Latn-ZZ", mps: "mps-Latn-ZZ", mpt: "mpt-Latn-ZZ", mpx: "mpx-Latn-ZZ", mql: "mql-Latn-ZZ", mr: "mr-Deva-IN", mrd: "mrd-Deva-NP", mrj: "mrj-Cyrl-RU", mro: "mro-Mroo-BD", ms: "ms-Latn-MY", "ms-CC": "ms-Arab-CC", "ms-ID": "ms-Arab-ID", mt: "mt-Latn-MT", mtc: "mtc-Latn-ZZ", mtf: "mtf-Latn-ZZ", mti: "mti-Latn-ZZ", mtr: "mtr-Deva-IN", mua: "mua-Latn-CM", mur: "mur-Latn-ZZ", mus: "mus-Latn-US", mva: "mva-Latn-ZZ", mvn: "mvn-Latn-ZZ", mvy: "mvy-Arab-PK", mwk: "mwk-Latn-ML", mwr: "mwr-Deva-IN", mwv: "mwv-Latn-ID", mww: "mww-Hmnp-US", mxc: "mxc-Latn-ZW", mxm: "mxm-Latn-ZZ", my: "my-Mymr-MM", myk: "myk-Latn-ZZ", mym: "mym-Ethi-ZZ", myv: "myv-Cyrl-RU", myw: "myw-Latn-ZZ", myx: "myx-Latn-UG", myz: "myz-Mand-IR", mzk: "mzk-Latn-ZZ", mzm: "mzm-Latn-ZZ", mzn: "mzn-Arab-IR", mzp: "mzp-Latn-ZZ", mzw: "mzw-Latn-ZZ", mzz: "mzz-Latn-ZZ", na: "na-Latn-NR", nac: "nac-Latn-ZZ", naf: "naf-Latn-ZZ", nak: "nak-Latn-ZZ", nan: "nan-Hans-CN", nap: "nap-Latn-IT", naq: "naq-Latn-NA", nas: "nas-Latn-ZZ", nb: "nb-Latn-NO", nca: "nca-Latn-ZZ", nce: "nce-Latn-ZZ", ncf: "ncf-Latn-ZZ", nch: "nch-Latn-MX", nco: "nco-Latn-ZZ", ncu: "ncu-Latn-ZZ", nd: "nd-Latn-ZW", ndc: "ndc-Latn-MZ", nds: "nds-Latn-DE", ne: "ne-Deva-NP", neb: "neb-Latn-ZZ", new: "new-Deva-NP", nex: "nex-Latn-ZZ", nfr: "nfr-Latn-ZZ", ng: "ng-Latn-NA", nga: "nga-Latn-ZZ", ngb: "ngb-Latn-ZZ", ngl: "ngl-Latn-MZ", nhb: "nhb-Latn-ZZ", nhe: "nhe-Latn-MX", nhw: "nhw-Latn-MX", nif: "nif-Latn-ZZ", nii: "nii-Latn-ZZ", nij: "nij-Latn-ID", nin: "nin-Latn-ZZ", niu: "niu-Latn-NU", niy: "niy-Latn-ZZ", niz: "niz-Latn-ZZ", njo: "njo-Latn-IN", nkg: "nkg-Latn-ZZ", nko: "nko-Latn-ZZ", nl: "nl-Latn-NL", nmg: "nmg-Latn-CM", nmz: "nmz-Latn-ZZ", nn: "nn-Latn-NO", nnf: "nnf-Latn-ZZ", nnh: "nnh-Latn-CM", nnk: "nnk-Latn-ZZ", nnm: "nnm-Latn-ZZ", nnp: "nnp-Wcho-IN", no: "no-Latn-NO", nod: "nod-Lana-TH", noe: "noe-Deva-IN", non: "non-Runr-SE", nop: "nop-Latn-ZZ", nou: "nou-Latn-ZZ", nqo: "nqo-Nkoo-GN", nr: "nr-Latn-ZA", nrb: "nrb-Latn-ZZ", nsk: "nsk-Cans-CA", nsn: "nsn-Latn-ZZ", nso: "nso-Latn-ZA", nss: "nss-Latn-ZZ", ntm: "ntm-Latn-ZZ", ntr: "ntr-Latn-ZZ", nui: "nui-Latn-ZZ", nup: "nup-Latn-ZZ", nus: "nus-Latn-SS", nuv: "nuv-Latn-ZZ", nux: "nux-Latn-ZZ", nv: "nv-Latn-US", nwb: "nwb-Latn-ZZ", nxq: "nxq-Latn-CN", nxr: "nxr-Latn-ZZ", ny: "ny-Latn-MW", nym: "nym-Latn-TZ", nyn: "nyn-Latn-UG", nzi: "nzi-Latn-GH", oc: "oc-Latn-FR", ogc: "ogc-Latn-ZZ", okr: "okr-Latn-ZZ", okv: "okv-Latn-ZZ", om: "om-Latn-ET", ong: "ong-Latn-ZZ", onn: "onn-Latn-ZZ", ons: "ons-Latn-ZZ", opm: "opm-Latn-ZZ", or: "or-Orya-IN", oro: "oro-Latn-ZZ", oru: "oru-Arab-ZZ", os: "os-Cyrl-GE", osa: "osa-Osge-US", ota: "ota-Arab-ZZ", otk: "otk-Orkh-MN", ozm: "ozm-Latn-ZZ", pa: "pa-Guru-IN", "pa-Arab": "pa-Arab-PK", "pa-PK": "pa-Arab-PK", pag: "pag-Latn-PH", pal: "pal-Phli-IR", "pal-Phlp": "pal-Phlp-CN", pam: "pam-Latn-PH", pap: "pap-Latn-AW", pau: "pau-Latn-PW", pbi: "pbi-Latn-ZZ", pcd: "pcd-Latn-FR", pcm: "pcm-Latn-NG", pdc: "pdc-Latn-US", pdt: "pdt-Latn-CA", ped: "ped-Latn-ZZ", peo: "peo-Xpeo-IR", pex: "pex-Latn-ZZ", pfl: "pfl-Latn-DE", phl: "phl-Arab-ZZ", phn: "phn-Phnx-LB", pil: "pil-Latn-ZZ", pip: "pip-Latn-ZZ", pka: "pka-Brah-IN", pko: "pko-Latn-KE", pl: "pl-Latn-PL", pla: "pla-Latn-ZZ", pms: "pms-Latn-IT", png: "png-Latn-ZZ", pnn: "pnn-Latn-ZZ", pnt: "pnt-Grek-GR", pon: "pon-Latn-FM", ppa: "ppa-Deva-IN", ppo: "ppo-Latn-ZZ", pra: "pra-Khar-PK", prd: "prd-Arab-IR", prg: "prg-Latn-001", ps: "ps-Arab-AF", pss: "pss-Latn-ZZ", pt: "pt-Latn-BR", ptp: "ptp-Latn-ZZ", puu: "puu-Latn-GA", pwa: "pwa-Latn-ZZ", qu: "qu-Latn-PE", quc: "quc-Latn-GT", qug: "qug-Latn-EC", rai: "rai-Latn-ZZ", raj: "raj-Deva-IN", rao: "rao-Latn-ZZ", rcf: "rcf-Latn-RE", rej: "rej-Latn-ID", rel: "rel-Latn-ZZ", res: "res-Latn-ZZ", rgn: "rgn-Latn-IT", rhg: "rhg-Arab-MM", ria: "ria-Latn-IN", rif: "rif-Tfng-MA", "rif-NL": "rif-Latn-NL", rjs: "rjs-Deva-NP", rkt: "rkt-Beng-BD", rm: "rm-Latn-CH", rmf: "rmf-Latn-FI", rmo: "rmo-Latn-CH", rmt: "rmt-Arab-IR", rmu: "rmu-Latn-SE", rn: "rn-Latn-BI", rna: "rna-Latn-ZZ", rng: "rng-Latn-MZ", ro: "ro-Latn-RO", rob: "rob-Latn-ID", rof: "rof-Latn-TZ", roo: "roo-Latn-ZZ", rro: "rro-Latn-ZZ", rtm: "rtm-Latn-FJ", ru: "ru-Cyrl-RU", rue: "rue-Cyrl-UA", rug: "rug-Latn-SB", rw: "rw-Latn-RW", rwk: "rwk-Latn-TZ", rwo: "rwo-Latn-ZZ", ryu: "ryu-Kana-JP", sa: "sa-Deva-IN", saf: "saf-Latn-GH", sah: "sah-Cyrl-RU", saq: "saq-Latn-KE", sas: "sas-Latn-ID", sat: "sat-Latn-IN", sav: "sav-Latn-SN", saz: "saz-Saur-IN", sba: "sba-Latn-ZZ", sbe: "sbe-Latn-ZZ", sbp: "sbp-Latn-TZ", sc: "sc-Latn-IT", sck: "sck-Deva-IN", scl: "scl-Arab-ZZ", scn: "scn-Latn-IT", sco: "sco-Latn-GB", scs: "scs-Latn-CA", sd: "sd-Arab-PK", "sd-Deva": "sd-Deva-IN", "sd-Khoj": "sd-Khoj-IN", "sd-Sind": "sd-Sind-IN", sdc: "sdc-Latn-IT", sdh: "sdh-Arab-IR", se: "se-Latn-NO", sef: "sef-Latn-CI", seh: "seh-Latn-MZ", sei: "sei-Latn-MX", ses: "ses-Latn-ML", sg: "sg-Latn-CF", sga: "sga-Ogam-IE", sgs: "sgs-Latn-LT", sgw: "sgw-Ethi-ZZ", sgz: "sgz-Latn-ZZ", shi: "shi-Tfng-MA", shk: "shk-Latn-ZZ", shn: "shn-Mymr-MM", shu: "shu-Arab-ZZ", si: "si-Sinh-LK", sid: "sid-Latn-ET", sig: "sig-Latn-ZZ", sil: "sil-Latn-ZZ", sim: "sim-Latn-ZZ", sjr: "sjr-Latn-ZZ", sk: "sk-Latn-SK", skc: "skc-Latn-ZZ", skr: "skr-Arab-PK", sks: "sks-Latn-ZZ", sl: "sl-Latn-SI", sld: "sld-Latn-ZZ", sli: "sli-Latn-PL", sll: "sll-Latn-ZZ", sly: "sly-Latn-ID", sm: "sm-Latn-WS", sma: "sma-Latn-SE", smj: "smj-Latn-SE", smn: "smn-Latn-FI", smp: "smp-Samr-IL", smq: "smq-Latn-ZZ", sms: "sms-Latn-FI", sn: "sn-Latn-ZW", snc: "snc-Latn-ZZ", snk: "snk-Latn-ML", snp: "snp-Latn-ZZ", snx: "snx-Latn-ZZ", sny: "sny-Latn-ZZ", so: "so-Latn-SO", sog: "sog-Sogd-UZ", sok: "sok-Latn-ZZ", soq: "soq-Latn-ZZ", sou: "sou-Thai-TH", soy: "soy-Latn-ZZ", spd: "spd-Latn-ZZ", spl: "spl-Latn-ZZ", sps: "sps-Latn-ZZ", sq: "sq-Latn-AL", sr: "sr-Cyrl-RS", "sr-ME": "sr-Latn-ME", "sr-RO": "sr-Latn-RO", "sr-RU": "sr-Latn-RU", "sr-TR": "sr-Latn-TR", srb: "srb-Sora-IN", srn: "srn-Latn-SR", srr: "srr-Latn-SN", srx: "srx-Deva-IN", ss: "ss-Latn-ZA", ssd: "ssd-Latn-ZZ", ssg: "ssg-Latn-ZZ", ssy: "ssy-Latn-ER", st: "st-Latn-ZA", stk: "stk-Latn-ZZ", stq: "stq-Latn-DE", su: "su-Latn-ID", sua: "sua-Latn-ZZ", sue: "sue-Latn-ZZ", suk: "suk-Latn-TZ", sur: "sur-Latn-ZZ", sus: "sus-Latn-GN", sv: "sv-Latn-SE", sw: "sw-Latn-TZ", swb: "swb-Arab-YT", swc: "swc-Latn-CD", swg: "swg-Latn-DE", swp: "swp-Latn-ZZ", swv: "swv-Deva-IN", sxn: "sxn-Latn-ID", sxw: "sxw-Latn-ZZ", syl: "syl-Beng-BD", syr: "syr-Syrc-IQ", szl: "szl-Latn-PL", ta: "ta-Taml-IN", taj: "taj-Deva-NP", tal: "tal-Latn-ZZ", tan: "tan-Latn-ZZ", taq: "taq-Latn-ZZ", tbc: "tbc-Latn-ZZ", tbd: "tbd-Latn-ZZ", tbf: "tbf-Latn-ZZ", tbg: "tbg-Latn-ZZ", tbo: "tbo-Latn-ZZ", tbw: "tbw-Latn-PH", tbz: "tbz-Latn-ZZ", tci: "tci-Latn-ZZ", tcy: "tcy-Knda-IN", tdd: "tdd-Tale-CN", tdg: "tdg-Deva-NP", tdh: "tdh-Deva-NP", tdu: "tdu-Latn-MY", te: "te-Telu-IN", ted: "ted-Latn-ZZ", tem: "tem-Latn-SL", teo: "teo-Latn-UG", tet: "tet-Latn-TL", tfi: "tfi-Latn-ZZ", tg: "tg-Cyrl-TJ", "tg-Arab": "tg-Arab-PK", "tg-PK": "tg-Arab-PK", tgc: "tgc-Latn-ZZ", tgo: "tgo-Latn-ZZ", tgu: "tgu-Latn-ZZ", th: "th-Thai-TH", thl: "thl-Deva-NP", thq: "thq-Deva-NP", thr: "thr-Deva-NP", ti: "ti-Ethi-ET", tif: "tif-Latn-ZZ", tig: "tig-Ethi-ER", tik: "tik-Latn-ZZ", tim: "tim-Latn-ZZ", tio: "tio-Latn-ZZ", tiv: "tiv-Latn-NG", tk: "tk-Latn-TM", tkl: "tkl-Latn-TK", tkr: "tkr-Latn-AZ", tkt: "tkt-Deva-NP", tl: "tl-Latn-PH", tlf: "tlf-Latn-ZZ", tlx: "tlx-Latn-ZZ", tly: "tly-Latn-AZ", tmh: "tmh-Latn-NE", tmy: "tmy-Latn-ZZ", tn: "tn-Latn-ZA", tnh: "tnh-Latn-ZZ", to: "to-Latn-TO", tof: "tof-Latn-ZZ", tog: "tog-Latn-MW", toq: "toq-Latn-ZZ", tpi: "tpi-Latn-PG", tpm: "tpm-Latn-ZZ", tpz: "tpz-Latn-ZZ", tqo: "tqo-Latn-ZZ", tr: "tr-Latn-TR", tru: "tru-Latn-TR", trv: "trv-Latn-TW", trw: "trw-Arab-ZZ", ts: "ts-Latn-ZA", tsd: "tsd-Grek-GR", tsf: "tsf-Deva-NP", tsg: "tsg-Latn-PH", tsj: "tsj-Tibt-BT", tsw: "tsw-Latn-ZZ", tt: "tt-Cyrl-RU", ttd: "ttd-Latn-ZZ", tte: "tte-Latn-ZZ", ttj: "ttj-Latn-UG", ttr: "ttr-Latn-ZZ", tts: "tts-Thai-TH", ttt: "ttt-Latn-AZ", tuh: "tuh-Latn-ZZ", tul: "tul-Latn-ZZ", tum: "tum-Latn-MW", tuq: "tuq-Latn-ZZ", tvd: "tvd-Latn-ZZ", tvl: "tvl-Latn-TV", tvu: "tvu-Latn-ZZ", twh: "twh-Latn-ZZ", twq: "twq-Latn-NE", txg: "txg-Tang-CN", ty: "ty-Latn-PF", tya: "tya-Latn-ZZ", tyv: "tyv-Cyrl-RU", tzm: "tzm-Latn-MA", ubu: "ubu-Latn-ZZ", udm: "udm-Cyrl-RU", ug: "ug-Arab-CN", "ug-Cyrl": "ug-Cyrl-KZ", "ug-KZ": "ug-Cyrl-KZ", "ug-MN": "ug-Cyrl-MN", uga: "uga-Ugar-SY", uk: "uk-Cyrl-UA", uli: "uli-Latn-FM", umb: "umb-Latn-AO", und: "en-Latn-US", "und-002": "en-Latn-NG", "und-003": "en-Latn-US", "und-005": "pt-Latn-BR", "und-009": "en-Latn-AU", "und-011": "en-Latn-NG", "und-013": "es-Latn-MX", "und-014": "sw-Latn-TZ", "und-015": "ar-Arab-EG", "und-017": "sw-Latn-CD", "und-018": "en-Latn-ZA", "und-019": "en-Latn-US", "und-021": "en-Latn-US", "und-029": "es-Latn-CU", "und-030": "zh-Hans-CN", "und-034": "hi-Deva-IN", "und-035": "id-Latn-ID", "und-039": "it-Latn-IT", "und-053": "en-Latn-AU", "und-054": "en-Latn-PG", "und-057": "en-Latn-GU", "und-061": "sm-Latn-WS", "und-142": "zh-Hans-CN", "und-143": "uz-Latn-UZ", "und-145": "ar-Arab-SA", "und-150": "ru-Cyrl-RU", "und-151": "ru-Cyrl-RU", "und-154": "en-Latn-GB", "und-155": "de-Latn-DE", "und-202": "en-Latn-NG", "und-419": "es-Latn-419", "und-AD": "ca-Latn-AD", "und-Adlm": "ff-Adlm-GN", "und-AE": "ar-Arab-AE", "und-AF": "fa-Arab-AF", "und-Aghb": "lez-Aghb-RU", "und-Ahom": "aho-Ahom-IN", "und-AL": "sq-Latn-AL", "und-AM": "hy-Armn-AM", "und-AO": "pt-Latn-AO", "und-AQ": "und-Latn-AQ", "und-AR": "es-Latn-AR", "und-Arab": "ar-Arab-EG", "und-Arab-CC": "ms-Arab-CC", "und-Arab-CN": "ug-Arab-CN", "und-Arab-GB": "ks-Arab-GB", "und-Arab-ID": "ms-Arab-ID", "und-Arab-IN": "ur-Arab-IN", "und-Arab-KH": "cja-Arab-KH", "und-Arab-MM": "rhg-Arab-MM", "und-Arab-MN": "kk-Arab-MN", "und-Arab-MU": "ur-Arab-MU", "und-Arab-NG": "ha-Arab-NG", "und-Arab-PK": "ur-Arab-PK", "und-Arab-TG": "apd-Arab-TG", "und-Arab-TH": "mfa-Arab-TH", "und-Arab-TJ": "fa-Arab-TJ", "und-Arab-TR": "az-Arab-TR", "und-Arab-YT": "swb-Arab-YT", "und-Armi": "arc-Armi-IR", "und-Armn": "hy-Armn-AM", "und-AS": "sm-Latn-AS", "und-AT": "de-Latn-AT", "und-Avst": "ae-Avst-IR", "und-AW": "nl-Latn-AW", "und-AX": "sv-Latn-AX", "und-AZ": "az-Latn-AZ", "und-BA": "bs-Latn-BA", "und-Bali": "ban-Bali-ID", "und-Bamu": "bax-Bamu-CM", "und-Bass": "bsq-Bass-LR", "und-Batk": "bbc-Batk-ID", "und-BD": "bn-Beng-BD", "und-BE": "nl-Latn-BE", "und-Beng": "bn-Beng-BD", "und-BF": "fr-Latn-BF", "und-BG": "bg-Cyrl-BG", "und-BH": "ar-Arab-BH", "und-Bhks": "sa-Bhks-IN", "und-BI": "rn-Latn-BI", "und-BJ": "fr-Latn-BJ", "und-BL": "fr-Latn-BL", "und-BN": "ms-Latn-BN", "und-BO": "es-Latn-BO", "und-Bopo": "zh-Bopo-TW", "und-BQ": "pap-Latn-BQ", "und-BR": "pt-Latn-BR", "und-Brah": "pka-Brah-IN", "und-Brai": "fr-Brai-FR", "und-BT": "dz-Tibt-BT", "und-Bugi": "bug-Bugi-ID", "und-Buhd": "bku-Buhd-PH", "und-BV": "und-Latn-BV", "und-BY": "be-Cyrl-BY", "und-Cakm": "ccp-Cakm-BD", "und-Cans": "cr-Cans-CA", "und-Cari": "xcr-Cari-TR", "und-CD": "sw-Latn-CD", "und-CF": "fr-Latn-CF", "und-CG": "fr-Latn-CG", "und-CH": "de-Latn-CH", "und-Cham": "cjm-Cham-VN", "und-Cher": "chr-Cher-US", "und-CI": "fr-Latn-CI", "und-CL": "es-Latn-CL", "und-CM": "fr-Latn-CM", "und-CN": "zh-Hans-CN", "und-CO": "es-Latn-CO", "und-Copt": "cop-Copt-EG", "und-CP": "und-Latn-CP", "und-Cprt": "grc-Cprt-CY", "und-CR": "es-Latn-CR", "und-CU": "es-Latn-CU", "und-CV": "pt-Latn-CV", "und-CW": "pap-Latn-CW", "und-CY": "el-Grek-CY", "und-Cyrl": "ru-Cyrl-RU", "und-Cyrl-AL": "mk-Cyrl-AL", "und-Cyrl-BA": "sr-Cyrl-BA", "und-Cyrl-GE": "ab-Cyrl-GE", "und-Cyrl-GR": "mk-Cyrl-GR", "und-Cyrl-MD": "uk-Cyrl-MD", "und-Cyrl-RO": "bg-Cyrl-RO", "und-Cyrl-SK": "uk-Cyrl-SK", "und-Cyrl-TR": "kbd-Cyrl-TR", "und-Cyrl-XK": "sr-Cyrl-XK", "und-CZ": "cs-Latn-CZ", "und-DE": "de-Latn-DE", "und-Deva": "hi-Deva-IN", "und-Deva-BT": "ne-Deva-BT", "und-Deva-FJ": "hif-Deva-FJ", "und-Deva-MU": "bho-Deva-MU", "und-Deva-PK": "btv-Deva-PK", "und-DJ": "aa-Latn-DJ", "und-DK": "da-Latn-DK", "und-DO": "es-Latn-DO", "und-Dogr": "doi-Dogr-IN", "und-Dupl": "fr-Dupl-FR", "und-DZ": "ar-Arab-DZ", "und-EA": "es-Latn-EA", "und-EC": "es-Latn-EC", "und-EE": "et-Latn-EE", "und-EG": "ar-Arab-EG", "und-Egyp": "egy-Egyp-EG", "und-EH": "ar-Arab-EH", "und-Elba": "sq-Elba-AL", "und-Elym": "arc-Elym-IR", "und-ER": "ti-Ethi-ER", "und-ES": "es-Latn-ES", "und-ET": "am-Ethi-ET", "und-Ethi": "am-Ethi-ET", "und-EU": "en-Latn-GB", "und-EZ": "de-Latn-EZ", "und-FI": "fi-Latn-FI", "und-FO": "fo-Latn-FO", "und-FR": "fr-Latn-FR", "und-GA": "fr-Latn-GA", "und-GE": "ka-Geor-GE", "und-Geor": "ka-Geor-GE", "und-GF": "fr-Latn-GF", "und-GH": "ak-Latn-GH", "und-GL": "kl-Latn-GL", "und-Glag": "cu-Glag-BG", "und-GN": "fr-Latn-GN", "und-Gong": "wsg-Gong-IN", "und-Gonm": "esg-Gonm-IN", "und-Goth": "got-Goth-UA", "und-GP": "fr-Latn-GP", "und-GQ": "es-Latn-GQ", "und-GR": "el-Grek-GR", "und-Gran": "sa-Gran-IN", "und-Grek": "el-Grek-GR", "und-Grek-TR": "bgx-Grek-TR", "und-GS": "und-Latn-GS", "und-GT": "es-Latn-GT", "und-Gujr": "gu-Gujr-IN", "und-Guru": "pa-Guru-IN", "und-GW": "pt-Latn-GW", "und-Hanb": "zh-Hanb-TW", "und-Hang": "ko-Hang-KR", "und-Hani": "zh-Hani-CN", "und-Hano": "hnn-Hano-PH", "und-Hans": "zh-Hans-CN", "und-Hant": "zh-Hant-TW", "und-Hatr": "mis-Hatr-IQ", "und-Hebr": "he-Hebr-IL", "und-Hebr-CA": "yi-Hebr-CA", "und-Hebr-GB": "yi-Hebr-GB", "und-Hebr-SE": "yi-Hebr-SE", "und-Hebr-UA": "yi-Hebr-UA", "und-Hebr-US": "yi-Hebr-US", "und-Hira": "ja-Hira-JP", "und-HK": "zh-Hant-HK", "und-Hluw": "hlu-Hluw-TR", "und-HM": "und-Latn-HM", "und-Hmng": "hnj-Hmng-LA", "und-Hmnp": "mww-Hmnp-US", "und-HN": "es-Latn-HN", "und-HR": "hr-Latn-HR", "und-HT": "ht-Latn-HT", "und-HU": "hu-Latn-HU", "und-Hung": "hu-Hung-HU", "und-IC": "es-Latn-IC", "und-ID": "id-Latn-ID", "und-IL": "he-Hebr-IL", "und-IN": "hi-Deva-IN", "und-IQ": "ar-Arab-IQ", "und-IR": "fa-Arab-IR", "und-IS": "is-Latn-IS", "und-IT": "it-Latn-IT", "und-Ital": "ett-Ital-IT", "und-Jamo": "ko-Jamo-KR", "und-Java": "jv-Java-ID", "und-JO": "ar-Arab-JO", "und-JP": "ja-Jpan-JP", "und-Jpan": "ja-Jpan-JP", "und-Kali": "eky-Kali-MM", "und-Kana": "ja-Kana-JP", "und-KE": "sw-Latn-KE", "und-KG": "ky-Cyrl-KG", "und-KH": "km-Khmr-KH", "und-Khar": "pra-Khar-PK", "und-Khmr": "km-Khmr-KH", "und-Khoj": "sd-Khoj-IN", "und-KM": "ar-Arab-KM", "und-Knda": "kn-Knda-IN", "und-Kore": "ko-Kore-KR", "und-KP": "ko-Kore-KP", "und-KR": "ko-Kore-KR", "und-Kthi": "bho-Kthi-IN", "und-KW": "ar-Arab-KW", "und-KZ": "ru-Cyrl-KZ", "und-LA": "lo-Laoo-LA", "und-Lana": "nod-Lana-TH", "und-Laoo": "lo-Laoo-LA", "und-Latn-AF": "tk-Latn-AF", "und-Latn-AM": "ku-Latn-AM", "und-Latn-CN": "za-Latn-CN", "und-Latn-CY": "tr-Latn-CY", "und-Latn-DZ": "fr-Latn-DZ", "und-Latn-ET": "en-Latn-ET", "und-Latn-GE": "ku-Latn-GE", "und-Latn-IR": "tk-Latn-IR", "und-Latn-KM": "fr-Latn-KM", "und-Latn-MA": "fr-Latn-MA", "und-Latn-MK": "sq-Latn-MK", "und-Latn-MM": "kac-Latn-MM", "und-Latn-MO": "pt-Latn-MO", "und-Latn-MR": "fr-Latn-MR", "und-Latn-RU": "krl-Latn-RU", "und-Latn-SY": "fr-Latn-SY", "und-Latn-TN": "fr-Latn-TN", "und-Latn-TW": "trv-Latn-TW", "und-Latn-UA": "pl-Latn-UA", "und-LB": "ar-Arab-LB", "und-Lepc": "lep-Lepc-IN", "und-LI": "de-Latn-LI", "und-Limb": "lif-Limb-IN", "und-Lina": "lab-Lina-GR", "und-Linb": "grc-Linb-GR", "und-Lisu": "lis-Lisu-CN", "und-LK": "si-Sinh-LK", "und-LS": "st-Latn-LS", "und-LT": "lt-Latn-LT", "und-LU": "fr-Latn-LU", "und-LV": "lv-Latn-LV", "und-LY": "ar-Arab-LY", "und-Lyci": "xlc-Lyci-TR", "und-Lydi": "xld-Lydi-TR", "und-MA": "ar-Arab-MA", "und-Mahj": "hi-Mahj-IN", "und-Maka": "mak-Maka-ID", "und-Mand": "myz-Mand-IR", "und-Mani": "xmn-Mani-CN", "und-Marc": "bo-Marc-CN", "und-MC": "fr-Latn-MC", "und-MD": "ro-Latn-MD", "und-ME": "sr-Latn-ME", "und-Medf": "mis-Medf-NG", "und-Mend": "men-Mend-SL", "und-Merc": "xmr-Merc-SD", "und-Mero": "xmr-Mero-SD", "und-MF": "fr-Latn-MF", "und-MG": "mg-Latn-MG", "und-MK": "mk-Cyrl-MK", "und-ML": "bm-Latn-ML", "und-Mlym": "ml-Mlym-IN", "und-MM": "my-Mymr-MM", "und-MN": "mn-Cyrl-MN", "und-MO": "zh-Hant-MO", "und-Modi": "mr-Modi-IN", "und-Mong": "mn-Mong-CN", "und-MQ": "fr-Latn-MQ", "und-MR": "ar-Arab-MR", "und-Mroo": "mro-Mroo-BD", "und-MT": "mt-Latn-MT", "und-Mtei": "mni-Mtei-IN", "und-MU": "mfe-Latn-MU", "und-Mult": "skr-Mult-PK", "und-MV": "dv-Thaa-MV", "und-MX": "es-Latn-MX", "und-MY": "ms-Latn-MY", "und-Mymr": "my-Mymr-MM", "und-Mymr-IN": "kht-Mymr-IN", "und-Mymr-TH": "mnw-Mymr-TH", "und-MZ": "pt-Latn-MZ", "und-NA": "af-Latn-NA", "und-Nand": "sa-Nand-IN", "und-Narb": "xna-Narb-SA", "und-Nbat": "arc-Nbat-JO", "und-NC": "fr-Latn-NC", "und-NE": "ha-Latn-NE", "und-Newa": "new-Newa-NP", "und-NI": "es-Latn-NI", "und-Nkoo": "man-Nkoo-GN", "und-NL": "nl-Latn-NL", "und-NO": "nb-Latn-NO", "und-NP": "ne-Deva-NP", "und-Nshu": "zhx-Nshu-CN", "und-Ogam": "sga-Ogam-IE", "und-Olck": "sat-Olck-IN", "und-OM": "ar-Arab-OM", "und-Orkh": "otk-Orkh-MN", "und-Orya": "or-Orya-IN", "und-Osge": "osa-Osge-US", "und-Osma": "so-Osma-SO", "und-PA": "es-Latn-PA", "und-Palm": "arc-Palm-SY", "und-Pauc": "ctd-Pauc-MM", "und-PE": "es-Latn-PE", "und-Perm": "kv-Perm-RU", "und-PF": "fr-Latn-PF", "und-PG": "tpi-Latn-PG", "und-PH": "fil-Latn-PH", "und-Phag": "lzh-Phag-CN", "und-Phli": "pal-Phli-IR", "und-Phlp": "pal-Phlp-CN", "und-Phnx": "phn-Phnx-LB", "und-PK": "ur-Arab-PK", "und-PL": "pl-Latn-PL", "und-Plrd": "hmd-Plrd-CN", "und-PM": "fr-Latn-PM", "und-PR": "es-Latn-PR", "und-Prti": "xpr-Prti-IR", "und-PS": "ar-Arab-PS", "und-PT": "pt-Latn-PT", "und-PW": "pau-Latn-PW", "und-PY": "gn-Latn-PY", "und-QA": "ar-Arab-QA", "und-QO": "en-Latn-DG", "und-RE": "fr-Latn-RE", "und-Rjng": "rej-Rjng-ID", "und-RO": "ro-Latn-RO", "und-Rohg": "rhg-Rohg-MM", "und-RS": "sr-Cyrl-RS", "und-RU": "ru-Cyrl-RU", "und-Runr": "non-Runr-SE", "und-RW": "rw-Latn-RW", "und-SA": "ar-Arab-SA", "und-Samr": "smp-Samr-IL", "und-Sarb": "xsa-Sarb-YE", "und-Saur": "saz-Saur-IN", "und-SC": "fr-Latn-SC", "und-SD": "ar-Arab-SD", "und-SE": "sv-Latn-SE", "und-Sgnw": "ase-Sgnw-US", "und-Shaw": "en-Shaw-GB", "und-Shrd": "sa-Shrd-IN", "und-SI": "sl-Latn-SI", "und-Sidd": "sa-Sidd-IN", "und-Sind": "sd-Sind-IN", "und-Sinh": "si-Sinh-LK", "und-SJ": "nb-Latn-SJ", "und-SK": "sk-Latn-SK", "und-SM": "it-Latn-SM", "und-SN": "fr-Latn-SN", "und-SO": "so-Latn-SO", "und-Sogd": "sog-Sogd-UZ", "und-Sogo": "sog-Sogo-UZ", "und-Sora": "srb-Sora-IN", "und-Soyo": "cmg-Soyo-MN", "und-SR": "nl-Latn-SR", "und-ST": "pt-Latn-ST", "und-Sund": "su-Sund-ID", "und-SV": "es-Latn-SV", "und-SY": "ar-Arab-SY", "und-Sylo": "syl-Sylo-BD", "und-Syrc": "syr-Syrc-IQ", "und-Tagb": "tbw-Tagb-PH", "und-Takr": "doi-Takr-IN", "und-Tale": "tdd-Tale-CN", "und-Talu": "khb-Talu-CN", "und-Taml": "ta-Taml-IN", "und-Tang": "txg-Tang-CN", "und-Tavt": "blt-Tavt-VN", "und-TD": "fr-Latn-TD", "und-Telu": "te-Telu-IN", "und-TF": "fr-Latn-TF", "und-Tfng": "zgh-Tfng-MA", "und-TG": "fr-Latn-TG", "und-Tglg": "fil-Tglg-PH", "und-TH": "th-Thai-TH", "und-Thaa": "dv-Thaa-MV", "und-Thai": "th-Thai-TH", "und-Thai-CN": "lcp-Thai-CN", "und-Thai-KH": "kdt-Thai-KH", "und-Thai-LA": "kdt-Thai-LA", "und-Tibt": "bo-Tibt-CN", "und-Tirh": "mai-Tirh-IN", "und-TJ": "tg-Cyrl-TJ", "und-TK": "tkl-Latn-TK", "und-TL": "pt-Latn-TL", "und-TM": "tk-Latn-TM", "und-TN": "ar-Arab-TN", "und-TO": "to-Latn-TO", "und-TR": "tr-Latn-TR", "und-TV": "tvl-Latn-TV", "und-TW": "zh-Hant-TW", "und-TZ": "sw-Latn-TZ", "und-UA": "uk-Cyrl-UA", "und-UG": "sw-Latn-UG", "und-Ugar": "uga-Ugar-SY", "und-UY": "es-Latn-UY", "und-UZ": "uz-Latn-UZ", "und-VA": "it-Latn-VA", "und-Vaii": "vai-Vaii-LR", "und-VE": "es-Latn-VE", "und-VN": "vi-Latn-VN", "und-VU": "bi-Latn-VU", "und-Wara": "hoc-Wara-IN", "und-Wcho": "nnp-Wcho-IN", "und-WF": "fr-Latn-WF", "und-WS": "sm-Latn-WS", "und-XK": "sq-Latn-XK", "und-Xpeo": "peo-Xpeo-IR", "und-Xsux": "akk-Xsux-IQ", "und-YE": "ar-Arab-YE", "und-Yiii": "ii-Yiii-CN", "und-YT": "fr-Latn-YT", "und-Zanb": "cmg-Zanb-MN", "und-ZW": "sn-Latn-ZW", unr: "unr-Beng-IN", "unr-Deva": "unr-Deva-NP", "unr-NP": "unr-Deva-NP", unx: "unx-Beng-IN", uok: "uok-Latn-ZZ", ur: "ur-Arab-PK", uri: "uri-Latn-ZZ", urt: "urt-Latn-ZZ", urw: "urw-Latn-ZZ", usa: "usa-Latn-ZZ", utr: "utr-Latn-ZZ", uvh: "uvh-Latn-ZZ", uvl: "uvl-Latn-ZZ", uz: "uz-Latn-UZ", "uz-AF": "uz-Arab-AF", "uz-Arab": "uz-Arab-AF", "uz-CN": "uz-Cyrl-CN", vag: "vag-Latn-ZZ", vai: "vai-Vaii-LR", van: "van-Latn-ZZ", ve: "ve-Latn-ZA", vec: "vec-Latn-IT", vep: "vep-Latn-RU", vi: "vi-Latn-VN", vic: "vic-Latn-SX", viv: "viv-Latn-ZZ", vls: "vls-Latn-BE", vmf: "vmf-Latn-DE", vmw: "vmw-Latn-MZ", vo: "vo-Latn-001", vot: "vot-Latn-RU", vro: "vro-Latn-EE", vun: "vun-Latn-TZ", vut: "vut-Latn-ZZ", wa: "wa-Latn-BE", wae: "wae-Latn-CH", waj: "waj-Latn-ZZ", wal: "wal-Ethi-ET", wan: "wan-Latn-ZZ", war: "war-Latn-PH", wbp: "wbp-Latn-AU", wbq: "wbq-Telu-IN", wbr: "wbr-Deva-IN", wci: "wci-Latn-ZZ", wer: "wer-Latn-ZZ", wgi: "wgi-Latn-ZZ", whg: "whg-Latn-ZZ", wib: "wib-Latn-ZZ", wiu: "wiu-Latn-ZZ", wiv: "wiv-Latn-ZZ", wja: "wja-Latn-ZZ", wji: "wji-Latn-ZZ", wls: "wls-Latn-WF", wmo: "wmo-Latn-ZZ", wnc: "wnc-Latn-ZZ", wni: "wni-Arab-KM", wnu: "wnu-Latn-ZZ", wo: "wo-Latn-SN", wob: "wob-Latn-ZZ", wos: "wos-Latn-ZZ", wrs: "wrs-Latn-ZZ", wsg: "wsg-Gong-IN", wsk: "wsk-Latn-ZZ", wtm: "wtm-Deva-IN", wuu: "wuu-Hans-CN", wuv: "wuv-Latn-ZZ", wwa: "wwa-Latn-ZZ", xav: "xav-Latn-BR", xbi: "xbi-Latn-ZZ", xcr: "xcr-Cari-TR", xes: "xes-Latn-ZZ", xh: "xh-Latn-ZA", xla: "xla-Latn-ZZ", xlc: "xlc-Lyci-TR", xld: "xld-Lydi-TR", xmf: "xmf-Geor-GE", xmn: "xmn-Mani-CN", xmr: "xmr-Merc-SD", xna: "xna-Narb-SA", xnr: "xnr-Deva-IN", xog: "xog-Latn-UG", xon: "xon-Latn-ZZ", xpr: "xpr-Prti-IR", xrb: "xrb-Latn-ZZ", xsa: "xsa-Sarb-YE", xsi: "xsi-Latn-ZZ", xsm: "xsm-Latn-ZZ", xsr: "xsr-Deva-NP", xwe: "xwe-Latn-ZZ", yam: "yam-Latn-ZZ", yao: "yao-Latn-MZ", yap: "yap-Latn-FM", yas: "yas-Latn-ZZ", yat: "yat-Latn-ZZ", yav: "yav-Latn-CM", yay: "yay-Latn-ZZ", yaz: "yaz-Latn-ZZ", yba: "yba-Latn-ZZ", ybb: "ybb-Latn-CM", yby: "yby-Latn-ZZ", yer: "yer-Latn-ZZ", ygr: "ygr-Latn-ZZ", ygw: "ygw-Latn-ZZ", yi: "yi-Hebr-001", yko: "yko-Latn-ZZ", yle: "yle-Latn-ZZ", ylg: "ylg-Latn-ZZ", yll: "yll-Latn-ZZ", yml: "yml-Latn-ZZ", yo: "yo-Latn-NG", yon: "yon-Latn-ZZ", yrb: "yrb-Latn-ZZ", yre: "yre-Latn-ZZ", yrl: "yrl-Latn-BR", yss: "yss-Latn-ZZ", yua: "yua-Latn-MX", yue: "yue-Hant-HK", "yue-CN": "yue-Hans-CN", "yue-Hans": "yue-Hans-CN", yuj: "yuj-Latn-ZZ", yut: "yut-Latn-ZZ", yuw: "yuw-Latn-ZZ", za: "za-Latn-CN", zag: "zag-Latn-SD", zdj: "zdj-Arab-KM", zea: "zea-Latn-NL", zgh: "zgh-Tfng-MA", zh: "zh-Hans-CN", "zh-AU": "zh-Hant-AU", "zh-BN": "zh-Hant-BN", "zh-Bopo": "zh-Bopo-TW", "zh-GB": "zh-Hant-GB", "zh-GF": "zh-Hant-GF", "zh-Hanb": "zh-Hanb-TW", "zh-Hant": "zh-Hant-TW", "zh-HK": "zh-Hant-HK", "zh-ID": "zh-Hant-ID", "zh-MO": "zh-Hant-MO", "zh-MY": "zh-Hant-MY", "zh-PA": "zh-Hant-PA", "zh-PF": "zh-Hant-PF", "zh-PH": "zh-Hant-PH", "zh-SR": "zh-Hant-SR", "zh-TH": "zh-Hant-TH", "zh-TW": "zh-Hant-TW", "zh-US": "zh-Hant-US", "zh-VN": "zh-Hant-VN", zhx: "zhx-Nshu-CN", zia: "zia-Latn-ZZ", zlm: "zlm-Latn-TG", zmi: "zmi-Latn-MY", zne: "zne-Latn-ZZ", zu: "zu-Latn-ZA", zza: "zza-Latn-TR" }, timeData: { AX: { _allowed: "H", _preferred: "H" }, BQ: { _allowed: "H", _preferred: "H" }, CP: { _allowed: "H", _preferred: "H" }, CZ: { _allowed: "H", _preferred: "H" }, DK: { _allowed: "H", _preferred: "H" }, FI: { _allowed: "H", _preferred: "H" }, ID: { _allowed: "H", _preferred: "H" }, IS: { _allowed: "H", _preferred: "H" }, ML: { _allowed: "H", _preferred: "H" }, NE: { _allowed: "H", _preferred: "H" }, RU: { _allowed: "H", _preferred: "H" }, SE: { _allowed: "H", _preferred: "H" }, SJ: { _allowed: "H", _preferred: "H" }, SK: { _allowed: "H", _preferred: "H" }, AS: { _allowed: "h H", _preferred: "h" }, BT: { _allowed: "h H", _preferred: "h" }, DJ: { _allowed: "h H", _preferred: "h" }, ER: { _allowed: "h H", _preferred: "h" }, GH: { _allowed: "h H", _preferred: "h" }, IN: { _allowed: "h H", _preferred: "h" }, LS: { _allowed: "h H", _preferred: "h" }, PG: { _allowed: "h H", _preferred: "h" }, PW: { _allowed: "h H", _preferred: "h" }, SO: { _allowed: "h H", _preferred: "h" }, TO: { _allowed: "h H", _preferred: "h" }, VU: { _allowed: "h H", _preferred: "h" }, WS: { _allowed: "h H", _preferred: "h" }, "001": { _allowed: "H h", _preferred: "H" }, AL: { _allowed: "h H hB", _preferred: "h" }, TD: { _allowed: "h H hB", _preferred: "h" }, ca_ES: { _allowed: "H h hB", _preferred: "H" }, CF: { _allowed: "H h hB", _preferred: "H" }, CM: { _allowed: "H h hB", _preferred: "H" }, fr_CA: { _allowed: "H h hB", _preferred: "H" }, gl_ES: { _allowed: "H h hB", _preferred: "H" }, it_CH: { _allowed: "H h hB", _preferred: "H" }, it_IT: { _allowed: "H h hB", _preferred: "H" }, LU: { _allowed: "H h hB", _preferred: "H" }, NP: { _allowed: "H h hB", _preferred: "H" }, PF: { _allowed: "H h hB", _preferred: "H" }, SC: { _allowed: "H h hB", _preferred: "H" }, SM: { _allowed: "H h hB", _preferred: "H" }, SN: { _allowed: "H h hB", _preferred: "H" }, TF: { _allowed: "H h hB", _preferred: "H" }, VA: { _allowed: "H h hB", _preferred: "H" }, CY: { _allowed: "h H hb hB", _preferred: "h" }, GR: { _allowed: "h H hb hB", _preferred: "h" }, CO: { _allowed: "h H hB hb", _preferred: "h" }, DO: { _allowed: "h H hB hb", _preferred: "h" }, KP: { _allowed: "h H hB hb", _preferred: "h" }, KR: { _allowed: "h H hB hb", _preferred: "h" }, NA: { _allowed: "h H hB hb", _preferred: "h" }, PA: { _allowed: "h H hB hb", _preferred: "h" }, PR: { _allowed: "h H hB hb", _preferred: "h" }, VE: { _allowed: "h H hB hb", _preferred: "h" }, AC: { _allowed: "H h hb hB", _preferred: "H" }, AI: { _allowed: "H h hb hB", _preferred: "H" }, BW: { _allowed: "H h hb hB", _preferred: "H" }, BZ: { _allowed: "H h hb hB", _preferred: "H" }, CC: { _allowed: "H h hb hB", _preferred: "H" }, CK: { _allowed: "H h hb hB", _preferred: "H" }, CX: { _allowed: "H h hb hB", _preferred: "H" }, DG: { _allowed: "H h hb hB", _preferred: "H" }, FK: { _allowed: "H h hb hB", _preferred: "H" }, GB: { _allowed: "H h hb hB", _preferred: "H" }, GG: { _allowed: "H h hb hB", _preferred: "H" }, GI: { _allowed: "H h hb hB", _preferred: "H" }, IE: { _allowed: "H h hb hB", _preferred: "H" }, IM: { _allowed: "H h hb hB", _preferred: "H" }, IO: { _allowed: "H h hb hB", _preferred: "H" }, JE: { _allowed: "H h hb hB", _preferred: "H" }, LT: { _allowed: "H h hb hB", _preferred: "H" }, MK: { _allowed: "H h hb hB", _preferred: "H" }, MN: { _allowed: "H h hb hB", _preferred: "H" }, MS: { _allowed: "H h hb hB", _preferred: "H" }, NF: { _allowed: "H h hb hB", _preferred: "H" }, NG: { _allowed: "H h hb hB", _preferred: "H" }, NR: { _allowed: "H h hb hB", _preferred: "H" }, NU: { _allowed: "H h hb hB", _preferred: "H" }, PN: { _allowed: "H h hb hB", _preferred: "H" }, SH: { _allowed: "H h hb hB", _preferred: "H" }, SX: { _allowed: "H h hb hB", _preferred: "H" }, TA: { _allowed: "H h hb hB", _preferred: "H" }, ZA: { _allowed: "H h hb hB", _preferred: "H" }, af_ZA: { _allowed: "H h hB hb", _preferred: "H" }, AR: { _allowed: "H h hB hb", _preferred: "H" }, CL: { _allowed: "H h hB hb", _preferred: "H" }, CR: { _allowed: "H h hB hb", _preferred: "H" }, CU: { _allowed: "H h hB hb", _preferred: "H" }, EA: { _allowed: "H h hB hb", _preferred: "H" }, es_BO: { _allowed: "H h hB hb", _preferred: "H" }, es_BR: { _allowed: "H h hB hb", _preferred: "H" }, es_EC: { _allowed: "H h hB hb", _preferred: "H" }, es_ES: { _allowed: "H h hB hb", _preferred: "H" }, es_GQ: { _allowed: "H h hB hb", _preferred: "H" }, es_PE: { _allowed: "H h hB hb", _preferred: "H" }, GT: { _allowed: "H h hB hb", _preferred: "H" }, HN: { _allowed: "H h hB hb", _preferred: "H" }, IC: { _allowed: "H h hB hb", _preferred: "H" }, KG: { _allowed: "H h hB hb", _preferred: "H" }, KM: { _allowed: "H h hB hb", _preferred: "H" }, LK: { _allowed: "H h hB hb", _preferred: "H" }, MA: { _allowed: "H h hB hb", _preferred: "H" }, MX: { _allowed: "H h hB hb", _preferred: "H" }, NI: { _allowed: "H h hB hb", _preferred: "H" }, PY: { _allowed: "H h hB hb", _preferred: "H" }, SV: { _allowed: "H h hB hb", _preferred: "H" }, UY: { _allowed: "H h hB hb", _preferred: "H" }, JP: { _allowed: "H h K", _preferred: "H" }, AD: { _allowed: "H hB", _preferred: "H" }, AM: { _allowed: "H hB", _preferred: "H" }, AO: { _allowed: "H hB", _preferred: "H" }, AT: { _allowed: "H hB", _preferred: "H" }, AW: { _allowed: "H hB", _preferred: "H" }, BE: { _allowed: "H hB", _preferred: "H" }, BF: { _allowed: "H hB", _preferred: "H" }, BJ: { _allowed: "H hB", _preferred: "H" }, BL: { _allowed: "H hB", _preferred: "H" }, BR: { _allowed: "H hB", _preferred: "H" }, CG: { _allowed: "H hB", _preferred: "H" }, CI: { _allowed: "H hB", _preferred: "H" }, CV: { _allowed: "H hB", _preferred: "H" }, DE: { _allowed: "H hB", _preferred: "H" }, EE: { _allowed: "H hB", _preferred: "H" }, FR: { _allowed: "H hB", _preferred: "H" }, GA: { _allowed: "H hB", _preferred: "H" }, GF: { _allowed: "H hB", _preferred: "H" }, GN: { _allowed: "H hB", _preferred: "H" }, GP: { _allowed: "H hB", _preferred: "H" }, GW: { _allowed: "H hB", _preferred: "H" }, HR: { _allowed: "H hB", _preferred: "H" }, IL: { _allowed: "H hB", _preferred: "H" }, IT: { _allowed: "H hB", _preferred: "H" }, KZ: { _allowed: "H hB", _preferred: "H" }, MC: { _allowed: "H hB", _preferred: "H" }, MD: { _allowed: "H hB", _preferred: "H" }, MF: { _allowed: "H hB", _preferred: "H" }, MQ: { _allowed: "H hB", _preferred: "H" }, MZ: { _allowed: "H hB", _preferred: "H" }, NC: { _allowed: "H hB", _preferred: "H" }, NL: { _allowed: "H hB", _preferred: "H" }, PM: { _allowed: "H hB", _preferred: "H" }, PT: { _allowed: "H hB", _preferred: "H" }, RE: { _allowed: "H hB", _preferred: "H" }, RO: { _allowed: "H hB", _preferred: "H" }, SI: { _allowed: "H hB", _preferred: "H" }, SR: { _allowed: "H hB", _preferred: "H" }, ST: { _allowed: "H hB", _preferred: "H" }, TG: { _allowed: "H hB", _preferred: "H" }, TR: { _allowed: "H hB", _preferred: "H" }, WF: { _allowed: "H hB", _preferred: "H" }, YT: { _allowed: "H hB", _preferred: "H" }, BD: { _allowed: "h hB H", _preferred: "h" }, PK: { _allowed: "h hB H", _preferred: "h" }, AZ: { _allowed: "H hB h", _preferred: "H" }, BA: { _allowed: "H hB h", _preferred: "H" }, BG: { _allowed: "H hB h", _preferred: "H" }, CH: { _allowed: "H hB h", _preferred: "H" }, GE: { _allowed: "H hB h", _preferred: "H" }, LI: { _allowed: "H hB h", _preferred: "H" }, ME: { _allowed: "H hB h", _preferred: "H" }, RS: { _allowed: "H hB h", _preferred: "H" }, UA: { _allowed: "H hB h", _preferred: "H" }, UZ: { _allowed: "H hB h", _preferred: "H" }, XK: { _allowed: "H hB h", _preferred: "H" }, AG: { _allowed: "h hb H hB", _preferred: "h" }, AU: { _allowed: "h hb H hB", _preferred: "h" }, BB: { _allowed: "h hb H hB", _preferred: "h" }, BM: { _allowed: "h hb H hB", _preferred: "h" }, BS: { _allowed: "h hb H hB", _preferred: "h" }, CA: { _allowed: "h hb H hB", _preferred: "h" }, DM: { _allowed: "h hb H hB", _preferred: "h" }, en_001: { _allowed: "h hb H hB", _preferred: "h" }, FJ: { _allowed: "h hb H hB", _preferred: "h" }, FM: { _allowed: "h hb H hB", _preferred: "h" }, GD: { _allowed: "h hb H hB", _preferred: "h" }, GM: { _allowed: "h hb H hB", _preferred: "h" }, GU: { _allowed: "h hb H hB", _preferred: "h" }, GY: { _allowed: "h hb H hB", _preferred: "h" }, JM: { _allowed: "h hb H hB", _preferred: "h" }, KI: { _allowed: "h hb H hB", _preferred: "h" }, KN: { _allowed: "h hb H hB", _preferred: "h" }, KY: { _allowed: "h hb H hB", _preferred: "h" }, LC: { _allowed: "h hb H hB", _preferred: "h" }, LR: { _allowed: "h hb H hB", _preferred: "h" }, MH: { _allowed: "h hb H hB", _preferred: "h" }, MP: { _allowed: "h hb H hB", _preferred: "h" }, MW: { _allowed: "h hb H hB", _preferred: "h" }, NZ: { _allowed: "h hb H hB", _preferred: "h" }, SB: { _allowed: "h hb H hB", _preferred: "h" }, SG: { _allowed: "h hb H hB", _preferred: "h" }, SL: { _allowed: "h hb H hB", _preferred: "h" }, SS: { _allowed: "h hb H hB", _preferred: "h" }, SZ: { _allowed: "h hb H hB", _preferred: "h" }, TC: { _allowed: "h hb H hB", _preferred: "h" }, TT: { _allowed: "h hb H hB", _preferred: "h" }, UM: { _allowed: "h hb H hB", _preferred: "h" }, US: { _allowed: "h hb H hB", _preferred: "h" }, VC: { _allowed: "h hb H hB", _preferred: "h" }, VG: { _allowed: "h hb H hB", _preferred: "h" }, VI: { _allowed: "h hb H hB", _preferred: "h" }, ZM: { _allowed: "h hb H hB", _preferred: "h" }, BO: { _allowed: "H hB h hb", _preferred: "H" }, EC: { _allowed: "H hB h hb", _preferred: "H" }, ES: { _allowed: "H hB h hb", _preferred: "H" }, GQ: { _allowed: "H hB h hb", _preferred: "H" }, PE: { _allowed: "H hB h hb", _preferred: "H" }, AE: { _allowed: "h hB hb H", _preferred: "h" }, ar_001: { _allowed: "h hB hb H", _preferred: "h" }, BH: { _allowed: "h hB hb H", _preferred: "h" }, DZ: { _allowed: "h hB hb H", _preferred: "h" }, EG: { _allowed: "h hB hb H", _preferred: "h" }, EH: { _allowed: "h hB hb H", _preferred: "h" }, IQ: { _allowed: "h hB hb H", _preferred: "h" }, JO: { _allowed: "h hB hb H", _preferred: "h" }, KW: { _allowed: "h hB hb H", _preferred: "h" }, LB: { _allowed: "h hB hb H", _preferred: "h" }, LY: { _allowed: "h hB hb H", _preferred: "h" }, MR: { _allowed: "h hB hb H", _preferred: "h" }, OM: { _allowed: "h hB hb H", _preferred: "h" }, PH: { _allowed: "h hB hb H", _preferred: "h" }, PS: { _allowed: "h hB hb H", _preferred: "h" }, QA: { _allowed: "h hB hb H", _preferred: "h" }, SA: { _allowed: "h hB hb H", _preferred: "h" }, SD: { _allowed: "h hB hb H", _preferred: "h" }, SY: { _allowed: "h hB hb H", _preferred: "h" }, TN: { _allowed: "h hB hb H", _preferred: "h" }, YE: { _allowed: "h hB hb H", _preferred: "h" }, AF: { _allowed: "H hb hB h", _preferred: "H" }, LA: { _allowed: "H hb hB h", _preferred: "H" }, LV: { _allowed: "H hB hb h", _preferred: "H" }, TL: { _allowed: "H hB hb h", _preferred: "H" }, zu_ZA: { _allowed: "H hB hb h", _preferred: "H" }, CD: { _allowed: "hB H", _preferred: "H" }, IR: { _allowed: "hB H", _preferred: "H" }, hi_IN: { _allowed: "hB h H", _preferred: "h" }, kn_IN: { _allowed: "hB h H", _preferred: "h" }, ml_IN: { _allowed: "hB h H", _preferred: "h" }, te_IN: { _allowed: "hB h H", _preferred: "h" }, KH: { _allowed: "hB h H hb", _preferred: "h" }, ta_IN: { _allowed: "hB h hb H", _preferred: "h" }, BN: { _allowed: "hb hB h H", _preferred: "h" }, MY: { _allowed: "hb hB h H", _preferred: "h" }, CN: { _allowed: "hB hb h H", _preferred: "h" }, ET: { _allowed: "hB hb h H", _preferred: "h" }, gu_IN: { _allowed: "hB hb h H", _preferred: "h" }, HK: { _allowed: "hB hb h H", _preferred: "h" }, MO: { _allowed: "hB hb h H", _preferred: "h" }, mr_IN: { _allowed: "hB hb h H", _preferred: "h" }, pa_IN: { _allowed: "hB hb h H", _preferred: "h" }, TW: { _allowed: "hB hb h H", _preferred: "h" }, KE: { _allowed: "hB hb H h", _preferred: "H" }, MM: { _allowed: "hB hb H h", _preferred: "H" }, TZ: { _allowed: "hB hb H h", _preferred: "H" }, UG: { _allowed: "hB hb H h", _preferred: "H" } }, weekData: { minDays: { "001": "1", AD: "4", AN: "4", AT: "4", AX: "4", BE: "4", BG: "4", CH: "4", CZ: "4", DE: "4", DK: "4", EE: "4", ES: "4", FI: "4", FJ: "4", FO: "4", FR: "4", GB: "4", GF: "4", GG: "4", GI: "4", GP: "4", GR: "4", GU: "1", HU: "4", IE: "4", IM: "4", IS: "4", IT: "4", JE: "4", LI: "4", LT: "4", LU: "4", MC: "4", MQ: "4", NL: "4", NO: "4", PL: "4", PT: "4", RE: "4", RU: "4", SE: "4", SJ: "4", SK: "4", SM: "4", UM: "1", US: "1", VA: "4", VI: "1" }, firstDay: { "001": "mon", AD: "mon", AE: "sat", AF: "sat", AG: "sun", AI: "mon", AL: "mon", AM: "mon", AN: "mon", AR: "mon", AS: "sun", AT: "mon", AU: "sun", AX: "mon", AZ: "mon", BA: "mon", BD: "sun", BE: "mon", BG: "mon", BH: "sat", BM: "mon", BN: "mon", BR: "sun", BS: "sun", BT: "sun", BW: "sun", BY: "mon", BZ: "sun", CA: "sun", CH: "mon", CL: "mon", CM: "mon", CN: "sun", CO: "sun", CR: "mon", CY: "mon", CZ: "mon", DE: "mon", DJ: "sat", DK: "mon", DM: "sun", DO: "sun", DZ: "sat", EC: "mon", EE: "mon", EG: "sat", ES: "mon", ET: "sun", FI: "mon", FJ: "mon", FO: "mon", FR: "mon", GB: "mon", "GB-alt-variant": "sun", GE: "mon", GF: "mon", GP: "mon", GR: "mon", GT: "sun", GU: "sun", HK: "sun", HN: "sun", HR: "mon", HU: "mon", ID: "sun", IE: "mon", IL: "sun", IN: "sun", IQ: "sat", IR: "sat", IS: "mon", IT: "mon", JM: "sun", JO: "sat", JP: "sun", KE: "sun", KG: "mon", KH: "sun", KR: "sun", KW: "sat", KZ: "mon", LA: "sun", LB: "mon", LI: "mon", LK: "mon", LT: "mon", LU: "mon", LV: "mon", LY: "sat", MC: "mon", MD: "mon", ME: "mon", MH: "sun", MK: "mon", MM: "sun", MN: "mon", MO: "sun", MQ: "mon", MT: "sun", MV: "fri", MX: "sun", MY: "mon", MZ: "sun", NI: "sun", NL: "mon", NO: "mon", NP: "sun", NZ: "mon", OM: "sat", PA: "sun", PE: "sun", PH: "sun", PK: "sun", PL: "mon", PR: "sun", PT: "sun", PY: "sun", QA: "sat", RE: "mon", RO: "mon", RS: "mon", RU: "mon", SA: "sun", SD: "sat", SE: "mon", SG: "sun", SI: "mon", SK: "mon", SM: "mon", SV: "sun", SY: "sat", TH: "sun", TJ: "mon", TM: "mon", TR: "mon", TT: "sun", TW: "sun", UA: "mon", UM: "sun", US: "sun", UY: "mon", UZ: "mon", VA: "mon", VE: "sun", VI: "sun", VN: "mon", WS: "sun", XK: "mon", YE: "sun", ZA: "sun", ZW: "sun" }, weekendStart: { "001": "sat", AE: "fri", AF: "thu", BH: "fri", DZ: "fri", EG: "fri", IL: "fri", IN: "sun", IQ: "fri", IR: "fri", JO: "fri", KW: "fri", LY: "fri", OM: "fri", QA: "fri", SA: "fri", SD: "fri", SY: "fri", UG: "sun", YE: "fri" }, weekendEnd: { "001": "sun", AE: "sat", AF: "fri", BH: "sat", DZ: "sat", EG: "sat", IL: "sat", IQ: "sat", IR: "fri", JO: "sat", KW: "sat", LY: "sat", OM: "sat", QA: "sat", SA: "sat", SD: "sat", SY: "sat", YE: "sat" }, af: { _ordering: "weekOfDate weekOfInterval weekOfMonth" }, "am az bs cs cy da el et hi ky lt mk sk ta th": { _ordering: "weekOfYear weekOfMonth" }, "ar fil gu hu hy id kk ko": { _ordering: "weekOfMonth" }, "be ro ru": { _ordering: "weekOfInterval weekOfMonth" }, "bg de iw pt ur zh": { _ordering: "weekOfDate weekOfMonth weekOfInterval" }, "ca es fr gl": { _ordering: "weekOfDate" }, "en bn ja ka": { _ordering: "weekOfDate weekOfMonth" }, eu: { _ordering: "weekOfMonth weekOfDate" }, "fa hr it lv pl si sr uk uz": { _ordering: "weekOfMonth weekOfInterval" }, "fi zh-TW": { _ordering: "weekOfYear weekOfDate weekOfMonth" }, "is mn no sv vi": { _ordering: "weekOfYear weekOfMonth weekOfInterval" }, "km mr": { _ordering: "weekOfMonth weekOfYear" }, "kn ml pa": { _ordering: "weekOfMonth weekOfDate weekOfYear" }, "lo sq": { _ordering: "weekOfMonth weekOfInterval weekOfDate weekOfYear" }, "ms tr": { _ordering: "weekOfMonth weekOfYear weekOfInterval weekOfDate" }, nl: { _ordering: "weekOfDate weekOfYear weekOfMonth" }, sl: { _ordering: "weekOfInterval" }, "sw te": { _ordering: "weekOfMonth weekOfInterval weekOfYear" }, und: { _ordering: "weekOfYear" }, zu: { _ordering: "weekOfYear weekOfInterval" } }, currencyData: { fractions: { ADP: { _rounding: "0", _digits: "0" }, AFN: { _rounding: "0", _digits: "0" }, ALL: { _rounding: "0", _digits: "0" }, AMD: { _rounding: "0", _digits: "2", _cashRounding: "0", _cashDigits: "0" }, BHD: { _rounding: "0", _digits: "3" }, BIF: { _rounding: "0", _digits: "0" }, BYN: { _rounding: "0", _digits: "2" }, BYR: { _rounding: "0", _digits: "0" }, CAD: { _rounding: "0", _digits: "2", _cashRounding: "5" }, CHF: { _rounding: "0", _digits: "2", _cashRounding: "5" }, CLF: { _rounding: "0", _digits: "4" }, CLP: { _rounding: "0", _digits: "0" }, COP: { _rounding: "0", _digits: "2", _cashRounding: "0", _cashDigits: "0" }, CRC: { _rounding: "0", _digits: "2", _cashRounding: "0", _cashDigits: "0" }, CZK: { _rounding: "0", _digits: "2", _cashRounding: "0", _cashDigits: "0" }, DEFAULT: { _rounding: "0", _digits: "2" }, DJF: { _rounding: "0", _digits: "0" }, DKK: { _rounding: "0", _digits: "2", _cashRounding: "50" }, ESP: { _rounding: "0", _digits: "0" }, GNF: { _rounding: "0", _digits: "0" }, GYD: { _rounding: "0", _digits: "2", _cashRounding: "0", _cashDigits: "0" }, HUF: { _rounding: "0", _digits: "2", _cashRounding: "0", _cashDigits: "0" }, IDR: { _rounding: "0", _digits: "2", _cashRounding: "0", _cashDigits: "0" }, IQD: { _rounding: "0", _digits: "0" }, IRR: { _rounding: "0", _digits: "0" }, ISK: { _rounding: "0", _digits: "0" }, ITL: { _rounding: "0", _digits: "0" }, JOD: { _rounding: "0", _digits: "3" }, JPY: { _rounding: "0", _digits: "0" }, KMF: { _rounding: "0", _digits: "0" }, KPW: { _rounding: "0", _digits: "0" }, KRW: { _rounding: "0", _digits: "0" }, KWD: { _rounding: "0", _digits: "3" }, LAK: { _rounding: "0", _digits: "0" }, LBP: { _rounding: "0", _digits: "0" }, LUF: { _rounding: "0", _digits: "0" }, LYD: { _rounding: "0", _digits: "3" }, MGA: { _rounding: "0", _digits: "0" }, MGF: { _rounding: "0", _digits: "0" }, MMK: { _rounding: "0", _digits: "0" }, MNT: { _rounding: "0", _digits: "2", _cashRounding: "0", _cashDigits: "0" }, MRO: { _rounding: "0", _digits: "0" }, MUR: { _rounding: "0", _digits: "2", _cashRounding: "0", _cashDigits: "0" }, NOK: { _rounding: "0", _digits: "2", _cashRounding: "0", _cashDigits: "0" }, OMR: { _rounding: "0", _digits: "3" }, PKR: { _rounding: "0", _digits: "2", _cashRounding: "0", _cashDigits: "0" }, PYG: { _rounding: "0", _digits: "0" }, RSD: { _rounding: "0", _digits: "0" }, RWF: { _rounding: "0", _digits: "0" }, SEK: { _rounding: "0", _digits: "2", _cashRounding: "0", _cashDigits: "0" }, SLL: { _rounding: "0", _digits: "0" }, SOS: { _rounding: "0", _digits: "0" }, STD: { _rounding: "0", _digits: "0" }, SYP: { _rounding: "0", _digits: "0" }, TMM: { _rounding: "0", _digits: "0" }, TND: { _rounding: "0", _digits: "3" }, TRL: { _rounding: "0", _digits: "0" }, TWD: { _rounding: "0", _digits: "2", _cashRounding: "0", _cashDigits: "0" }, TZS: { _rounding: "0", _digits: "2", _cashRounding: "0", _cashDigits: "0" }, UGX: { _rounding: "0", _digits: "0" }, UYI: { _rounding: "0", _digits: "0" }, UYW: { _rounding: "0", _digits: "4" }, UZS: { _rounding: "0", _digits: "2", _cashRounding: "0", _cashDigits: "0" }, VEF: { _rounding: "0", _digits: "2", _cashRounding: "0", _cashDigits: "0" }, VND: { _rounding: "0", _digits: "0" }, VUV: { _rounding: "0", _digits: "0" }, XAF: { _rounding: "0", _digits: "0" }, XOF: { _rounding: "0", _digits: "0" }, XPF: { _rounding: "0", _digits: "0" }, YER: { _rounding: "0", _digits: "0" }, ZMK: { _rounding: "0", _digits: "0" }, ZWD: { _rounding: "0", _digits: "0" } }, region: { AC: [{ SHP: { _from: "1976-01-01" } }], AD: [{ ESP: { _from: "1873-01-01", _to: "2002-02-28" } }, { ADP: { _from: "1936-01-01", _to: "2001-12-31" } }, { FRF: { _from: "1960-01-01", _to: "2002-02-17" } }, { EUR: { _from: "1999-01-01" } }], AE: [{ AED: { _from: "1973-05-19" } }], AF: [{ AFA: { _from: "1927-03-14", _to: "2002-12-31" } }, { AFN: { _from: "2002-10-07" } }], AG: [{ XCD: { _from: "1965-10-06" } }], AI: [{ XCD: { _from: "1965-10-06" } }], AL: [{ ALK: { _from: "1946-11-01", _to: "1965-08-16" } }, { ALL: { _from: "1965-08-16" } }], AM: [{ SUR: { _from: "1961-01-01", _to: "1991-12-25" } }, { RUR: { _from: "1991-12-25", _to: "1993-11-22" } }, { AMD: { _from: "1993-11-22" } }], AO: [{ AOK: { _from: "1977-01-08", _to: "1991-03-01" } }, { AON: { _from: "1990-09-25", _to: "2000-02-01" } }, { AOR: { _from: "1995-07-01", _to: "2000-02-01" } }, { AOA: { _from: "1999-12-13" } }], AQ: [{ XXX: { _tender: "false" } }], AR: [{ ARM: { _from: "1881-11-05", _to: "1970-01-01" } }, { ARL: { _from: "1970-01-01", _to: "1983-06-01" } }, { ARP: { _from: "1983-06-01", _to: "1985-06-14" } }, { ARA: { _from: "1985-06-14", _to: "1992-01-01" } }, { ARS: { _from: "1992-01-01" } }], AS: [{ USD: { _from: "1904-07-16" } }], AT: [{ ATS: { _from: "1947-12-04", _to: "2002-02-28" } }, { EUR: { _from: "1999-01-01" } }], AU: [{ AUD: { _from: "1966-02-14" } }], AW: [{ ANG: { _from: "1940-05-10", _to: "1986-01-01" } }, { AWG: { _from: "1986-01-01" } }], AX: [{ EUR: { _from: "1999-01-01" } }], AZ: [{ SUR: { _from: "1961-01-01", _to: "1991-12-25" } }, { RUR: { _from: "1991-12-25", _to: "1994-01-01" } }, { AZM: { _from: "1993-11-22", _to: "2006-12-31" } }, { AZN: { _from: "2006-01-01" } }], BA: [{ YUD: { _from: "1966-01-01", _to: "1990-01-01" } }, { YUN: { _from: "1990-01-01", _to: "1992-07-01" } }, { YUR: { _from: "1992-07-01", _to: "1993-10-01" } }, { BAD: { _from: "1992-07-01", _to: "1994-08-15" } }, { BAN: { _from: "1994-08-15", _to: "1997-07-01" } }, { BAM: { _from: "1995-01-01" } }], BB: [{ XCD: { _from: "1965-10-06", _to: "1973-12-03" } }, { BBD: { _from: "1973-12-03" } }], BD: [{ INR: { _from: "1835-08-17", _to: "1948-04-01" } }, { PKR: { _from: "1948-04-01", _to: "1972-01-01" } }, { BDT: { _from: "1972-01-01" } }], BE: [{ NLG: { _from: "1816-12-15", _to: "1831-02-07" } }, { BEF: { _from: "1831-02-07", _to: "2002-02-28" } }, { BEC: { _tender: "false", _from: "1970-01-01", _to: "1990-03-05" } }, { BEL: { _tender: "false", _from: "1970-01-01", _to: "1990-03-05" } }, { EUR: { _from: "1999-01-01" } }], BF: [{ XOF: { _from: "1984-08-04" } }], BG: [{ BGO: { _from: "1879-07-08", _to: "1952-05-12" } }, { BGM: { _from: "1952-05-12", _to: "1962-01-01" } }, { BGL: { _from: "1962-01-01", _to: "1999-07-05" } }, { BGN: { _from: "1999-07-05" } }], BH: [{ BHD: { _from: "1965-10-16" } }], BI: [{ BIF: { _from: "1964-05-19" } }], BJ: [{ XOF: { _from: "1975-11-30" } }], BL: [{ FRF: { _from: "1960-01-01", _to: "2002-02-17" } }, { EUR: { _from: "1999-01-01" } }], BM: [{ BMD: { _from: "1970-02-06" } }], BN: [{ MYR: { _from: "1963-09-16", _to: "1967-06-12" } }, { BND: { _from: "1967-06-12" } }], BO: [{ BOV: { _tender: "false" } }, { BOL: { _from: "1863-06-23", _to: "1963-01-01" } }, { BOP: { _from: "1963-01-01", _to: "1986-12-31" } }, { BOB: { _from: "1987-01-01" } }], BQ: [{ ANG: { _from: "2010-10-10", _to: "2011-01-01" } }, { USD: { _from: "2011-01-01" } }], BR: [{ BRZ: { _from: "1942-11-01", _to: "1967-02-13" } }, { BRB: { _from: "1967-02-13", _to: "1986-02-28" } }, { BRC: { _from: "1986-02-28", _to: "1989-01-15" } }, { BRN: { _from: "1989-01-15", _to: "1990-03-16" } }, { BRE: { _from: "1990-03-16", _to: "1993-08-01" } }, { BRR: { _from: "1993-08-01", _to: "1994-07-01" } }, { BRL: { _from: "1994-07-01" } }], BS: [{ BSD: { _from: "1966-05-25" } }], BT: [{ INR: { _from: "1907-01-01" } }, { BTN: { _from: "1974-04-16" } }], BU: [{ BUK: { _from: "1952-07-01", _to: "1989-06-18" } }], BV: [{ NOK: { _from: "1905-06-07" } }], BW: [{ ZAR: { _from: "1961-02-14", _to: "1976-08-23" } }, { BWP: { _from: "1976-08-23" } }], BY: [{ SUR: { _from: "1961-01-01", _to: "1991-12-25" } }, { RUR: { _from: "1991-12-25", _to: "1994-11-08" } }, { BYB: { _from: "1994-08-01", _to: "2000-12-31" } }, { BYR: { _from: "2000-01-01", _to: "2017-01-01" } }, { BYN: { _from: "2016-07-01" } }], BZ: [{ BZD: { _from: "1974-01-01" } }], CA: [{ CAD: { _from: "1858-01-01" } }], CC: [{ AUD: { _from: "1966-02-14" } }], CD: [{ ZRZ: { _from: "1971-10-27", _to: "1993-11-01" } }, { ZRN: { _from: "1993-11-01", _to: "1998-07-01" } }, { CDF: { _from: "1998-07-01" } }], CF: [{ XAF: { _from: "1993-01-01" } }], CG: [{ XAF: { _from: "1993-01-01" } }], CH: [{ CHE: { _tender: "false" } }, { CHW: { _tender: "false" } }, { CHF: { _from: "1799-03-17" } }], CI: [{ XOF: { _from: "1958-12-04" } }], CK: [{ NZD: { _from: "1967-07-10" } }], CL: [{ CLF: { _tender: "false" } }, { CLE: { _from: "1960-01-01", _to: "1975-09-29" } }, { CLP: { _from: "1975-09-29" } }], CM: [{ XAF: { _from: "1973-04-01" } }], CN: [{ CNY: { _from: "1953-03-01" } }, { CNX: { _tender: "false", _from: "1979-01-01", _to: "1998-12-31" } }, { CNH: { _tender: "false", _from: "2010-07-19" } }], CO: [{ COU: { _tender: "false" } }, { COP: { _from: "1905-01-01" } }], CP: [{ XXX: { _tender: "false" } }], CR: [{ CRC: { _from: "1896-10-26" } }], CS: [{ YUM: { _from: "1994-01-24", _to: "2002-05-15" } }, { CSD: { _from: "2002-05-15", _to: "2006-06-03" } }, { EUR: { _from: "2003-02-04", _to: "2006-06-03" } }], CU: [{ CUP: { _from: "1859-01-01" } }, { USD: { _from: "1899-01-01", _to: "1959-01-01" } }, { CUC: { _from: "1994-01-01" } }], CV: [{ PTE: { _from: "1911-05-22", _to: "1975-07-05" } }, { CVE: { _from: "1914-01-01" } }], CW: [{ ANG: { _from: "2010-10-10" } }], CX: [{ AUD: { _from: "1966-02-14" } }], CY: [{ CYP: { _from: "1914-09-10", _to: "2008-01-31" } }, { EUR: { _from: "2008-01-01" } }], CZ: [{ CSK: { _from: "1953-06-01", _to: "1993-03-01" } }, { CZK: { _from: "1993-01-01" } }], DD: [{ DDM: { _from: "1948-07-20", _to: "1990-10-02" } }], DE: [{ DEM: { _from: "1948-06-20", _to: "2002-02-28" } }, { EUR: { _from: "1999-01-01" } }], DG: [{ USD: { _from: "1965-11-08" } }], DJ: [{ DJF: { _from: "1977-06-27" } }], DK: [{ DKK: { _from: "1873-05-27" } }], DM: [{ XCD: { _from: "1965-10-06" } }], DO: [{ USD: { _from: "1905-06-21", _to: "1947-10-01" } }, { DOP: { _from: "1947-10-01" } }], DZ: [{ DZD: { _from: "1964-04-01" } }], EA: [{ EUR: { _from: "1999-01-01" } }], EC: [{ ECS: { _from: "1884-04-01", _to: "2000-10-02" } }, { ECV: { _tender: "false", _from: "1993-05-23", _to: "2000-01-09" } }, { USD: { _from: "2000-10-02" } }], EE: [{ SUR: { _from: "1961-01-01", _to: "1992-06-20" } }, { EEK: { _from: "1992-06-21", _to: "2010-12-31" } }, { EUR: { _from: "2011-01-01" } }], EG: [{ EGP: { _from: "1885-11-14" } }], EH: [{ MAD: { _from: "1976-02-26" } }], ER: [{ ETB: { _from: "1993-05-24", _to: "1997-11-08" } }, { ERN: { _from: "1997-11-08" } }], ES: [{ ESP: { _from: "1868-10-19", _to: "2002-02-28" } }, { ESB: { _tender: "false", _from: "1975-01-01", _to: "1994-12-31" } }, { ESA: { _tender: "false", _from: "1978-01-01", _to: "1981-12-31" } }, { EUR: { _from: "1999-01-01" } }], ET: [{ ETB: { _from: "1976-09-15" } }], EU: [{ XEU: { _tender: "false", _from: "1979-01-01", _to: "1998-12-31" } }, { EUR: { _from: "1999-01-01" } }], FI: [{ FIM: { _from: "1963-01-01", _to: "2002-02-28" } }, { EUR: { _from: "1999-01-01" } }], FJ: [{ FJD: { _from: "1969-01-13" } }], FK: [{ FKP: { _from: "1901-01-01" } }], FM: [{ JPY: { _from: "1914-10-03", _to: "1944-01-01" } }, { USD: { _from: "1944-01-01" } }], FO: [{ DKK: { _from: "1948-01-01" } }], FR: [{ FRF: { _from: "1960-01-01", _to: "2002-02-17" } }, { EUR: { _from: "1999-01-01" } }], GA: [{ XAF: { _from: "1993-01-01" } }], GB: [{ GBP: { _from: "1694-07-27" } }], GD: [{ XCD: { _from: "1967-02-27" } }], GE: [{ SUR: { _from: "1961-01-01", _to: "1991-12-25" } }, { RUR: { _from: "1991-12-25", _to: "1993-06-11" } }, { GEK: { _from: "1993-04-05", _to: "1995-09-25" } }, { GEL: { _from: "1995-09-23" } }], GF: [{ FRF: { _from: "1960-01-01", _to: "2002-02-17" } }, { EUR: { _from: "1999-01-01" } }], GG: [{ GBP: { _from: "1830-01-01" } }], GH: [{ GHC: { _from: "1979-03-09", _to: "2007-12-31" } }, { GHS: { _from: "2007-07-03" } }], GI: [{ GIP: { _from: "1713-01-01" } }], GL: [{ DKK: { _from: "1873-05-27" } }], GM: [{ GMD: { _from: "1971-07-01" } }], GN: [{ GNS: { _from: "1972-10-02", _to: "1986-01-06" } }, { GNF: { _from: "1986-01-06" } }], GP: [{ FRF: { _from: "1960-01-01", _to: "2002-02-17" } }, { EUR: { _from: "1999-01-01" } }], GQ: [{ GQE: { _from: "1975-07-07", _to: "1986-06-01" } }, { XAF: { _from: "1993-01-01" } }], GR: [{ GRD: { _from: "1954-05-01", _to: "2002-02-28" } }, { EUR: { _from: "2001-01-01" } }], GS: [{ GBP: { _from: "1908-01-01" } }], GT: [{ GTQ: { _from: "1925-05-27" } }], GU: [{ USD: { _from: "1944-08-21" } }], GW: [{ GWE: { _from: "1914-01-01", _to: "1976-02-28" } }, { GWP: { _from: "1976-02-28", _to: "1997-03-31" } }, { XOF: { _from: "1997-03-31" } }], GY: [{ GYD: { _from: "1966-05-26" } }], HK: [{ HKD: { _from: "1895-02-02" } }], HM: [{ AUD: { _from: "1967-02-16" } }], HN: [{ HNL: { _from: "1926-04-03" } }], HR: [{ YUD: { _from: "1966-01-01", _to: "1990-01-01" } }, { YUN: { _from: "1990-01-01", _to: "1991-12-23" } }, { HRD: { _from: "1991-12-23", _to: "1995-01-01" } }, { HRK: { _from: "1994-05-30" } }], HT: [{ HTG: { _from: "1872-08-26" } }, { USD: { _from: "1915-01-01" } }], HU: [{ HUF: { _from: "1946-07-23" } }], IC: [{ EUR: { _from: "1999-01-01" } }], ID: [{ IDR: { _from: "1965-12-13" } }], IE: [{ GBP: { _from: "1800-01-01", _to: "1922-01-01" } }, { IEP: { _from: "1922-01-01", _to: "2002-02-09" } }, { EUR: { _from: "1999-01-01" } }], IL: [{ ILP: { _from: "1948-08-16", _to: "1980-02-22" } }, { ILR: { _from: "1980-02-22", _to: "1985-09-04" } }, { ILS: { _from: "1985-09-04" } }], IM: [{ GBP: { _from: "1840-01-03" } }], IN: [{ INR: { _from: "1835-08-17" } }], IO: [{ USD: { _from: "1965-11-08" } }], IQ: [{ EGP: { _from: "1920-11-11", _to: "1931-04-19" } }, { INR: { _from: "1920-11-11", _to: "1931-04-19" } }, { IQD: { _from: "1931-04-19" } }], IR: [{ IRR: { _from: "1932-05-13" } }], IS: [{ DKK: { _from: "1873-05-27", _to: "1918-12-01" } }, { ISJ: { _from: "1918-12-01", _to: "1981-01-01" } }, { ISK: { _from: "1981-01-01" } }], IT: [{ ITL: { _from: "1862-08-24", _to: "2002-02-28" } }, { EUR: { _from: "1999-01-01" } }], JE: [{ GBP: { _from: "1837-01-01" } }], JM: [{ JMD: { _from: "1969-09-08" } }], JO: [{ JOD: { _from: "1950-07-01" } }], JP: [{ JPY: { _from: "1871-06-01" } }], KE: [{ KES: { _from: "1966-09-14" } }], KG: [{ SUR: { _from: "1961-01-01", _to: "1991-12-25" } }, { RUR: { _from: "1991-12-25", _to: "1993-05-10" } }, { KGS: { _from: "1993-05-10" } }], KH: [{ KHR: { _from: "1980-03-20" } }], KI: [{ AUD: { _from: "1966-02-14" } }], KM: [{ KMF: { _from: "1975-07-06" } }], KN: [{ XCD: { _from: "1965-10-06" } }], KP: [{ KPW: { _from: "1959-04-17" } }], KR: [{ KRO: { _from: "1945-08-15", _to: "1953-02-15" } }, { KRH: { _from: "1953-02-15", _to: "1962-06-10" } }, { KRW: { _from: "1962-06-10" } }], KW: [{ KWD: { _from: "1961-04-01" } }], KY: [{ JMD: { _from: "1969-09-08", _to: "1971-01-01" } }, { KYD: { _from: "1971-01-01" } }], KZ: [{ KZT: { _from: "1993-11-05" } }], LA: [{ LAK: { _from: "1979-12-10" } }], LB: [{ LBP: { _from: "1948-02-02" } }], LC: [{ XCD: { _from: "1965-10-06" } }], LI: [{ CHF: { _from: "1921-02-01" } }], LK: [{ LKR: { _from: "1978-05-22" } }], LR: [{ LRD: { _from: "1944-01-01" } }], LS: [{ ZAR: { _from: "1961-02-14" } }, { LSL: { _from: "1980-01-22" } }], LT: [{ SUR: { _from: "1961-01-01", _to: "1992-10-01" } }, { LTT: { _from: "1992-10-01", _to: "1993-06-25" } }, { LTL: { _from: "1993-06-25", _to: "2014-12-31" } }, { EUR: { _from: "2015-01-01" } }], LU: [{ LUF: { _from: "1944-09-04", _to: "2002-02-28" } }, { LUC: { _tender: "false", _from: "1970-01-01", _to: "1990-03-05" } }, { LUL: { _tender: "false", _from: "1970-01-01", _to: "1990-03-05" } }, { EUR: { _from: "1999-01-01" } }], LV: [{ SUR: { _from: "1961-01-01", _to: "1992-07-20" } }, { LVR: { _from: "1992-05-07", _to: "1993-10-17" } }, { LVL: { _from: "1993-06-28", _to: "2013-12-31" } }, { EUR: { _from: "2014-01-01" } }], LY: [{ LYD: { _from: "1971-09-01" } }], MA: [{ MAF: { _from: "1881-01-01", _to: "1959-10-17" } }, { MAD: { _from: "1959-10-17" } }], MC: [{ FRF: { _from: "1960-01-01", _to: "2002-02-17" } }, { MCF: { _from: "1960-01-01", _to: "2002-02-17" } }, { EUR: { _from: "1999-01-01" } }], MD: [{ MDC: { _from: "1992-06-01", _to: "1993-11-29" } }, { MDL: { _from: "1993-11-29" } }], ME: [{ YUM: { _from: "1994-01-24", _to: "2002-05-15" } }, { DEM: { _from: "1999-10-02", _to: "2002-05-15" } }, { EUR: { _from: "2002-01-01" } }], MF: [{ FRF: { _from: "1960-01-01", _to: "2002-02-17" } }, { EUR: { _from: "1999-01-01" } }], MG: [{ MGF: { _from: "1963-07-01", _to: "2004-12-31" } }, { MGA: { _from: "1983-11-01" } }], MH: [{ USD: { _from: "1944-01-01" } }], MK: [{ MKN: { _from: "1992-04-26", _to: "1993-05-20" } }, { MKD: { _from: "1993-05-20" } }], ML: [{ XOF: { _from: "1958-11-24", _to: "1962-07-02" } }, { MLF: { _from: "1962-07-02", _to: "1984-08-31" } }, { XOF: { _from: "1984-06-01" } }], MM: [{ BUK: { _from: "1952-07-01", _to: "1989-06-18" } }, { MMK: { _from: "1989-06-18" } }], MN: [{ MNT: { _from: "1915-03-01" } }], MO: [{ MOP: { _from: "1901-01-01" } }], MP: [{ USD: { _from: "1944-01-01" } }], MQ: [{ FRF: { _from: "1960-01-01", _to: "2002-02-17" } }, { EUR: { _from: "1999-01-01" } }], MR: [{ XOF: { _from: "1958-11-28", _to: "1973-06-29" } }, { MRO: { _from: "1973-06-29", _to: "2018-06-30" } }, { MRU: { _from: "2018-01-01" } }], MS: [{ XCD: { _from: "1967-02-27" } }], MT: [{ MTP: { _from: "1914-08-13", _to: "1968-06-07" } }, { MTL: { _from: "1968-06-07", _to: "2008-01-31" } }, { EUR: { _from: "2008-01-01" } }], MU: [{ MUR: { _from: "1934-04-01" } }], MV: [{ MVP: { _from: "1947-01-01", _to: "1981-07-01" } }, { MVR: { _from: "1981-07-01" } }], MW: [{ MWK: { _from: "1971-02-15" } }], MX: [{ MXV: { _tender: "false" } }, { MXP: { _from: "1822-01-01", _to: "1992-12-31" } }, { MXN: { _from: "1993-01-01" } }], MY: [{ MYR: { _from: "1963-09-16" } }], MZ: [{ MZE: { _from: "1975-06-25", _to: "1980-06-16" } }, { MZM: { _from: "1980-06-16", _to: "2006-12-31" } }, { MZN: { _from: "2006-07-01" } }], NA: [{ ZAR: { _from: "1961-02-14" } }, { NAD: { _from: "1993-01-01" } }], NC: [{ XPF: { _from: "1985-01-01" } }], NE: [{ XOF: { _from: "1958-12-19" } }], NF: [{ AUD: { _from: "1966-02-14" } }], NG: [{ NGN: { _from: "1973-01-01" } }], NI: [{ NIC: { _from: "1988-02-15", _to: "1991-04-30" } }, { NIO: { _from: "1991-04-30" } }], NL: [{ NLG: { _from: "1813-01-01", _to: "2002-02-28" } }, { EUR: { _from: "1999-01-01" } }], NO: [{ SEK: { _from: "1873-05-27", _to: "1905-06-07" } }, { NOK: { _from: "1905-06-07" } }], NP: [{ INR: { _from: "1870-01-01", _to: "1966-10-17" } }, { NPR: { _from: "1933-01-01" } }], NR: [{ AUD: { _from: "1966-02-14" } }], NU: [{ NZD: { _from: "1967-07-10" } }], NZ: [{ NZD: { _from: "1967-07-10" } }], OM: [{ OMR: { _from: "1972-11-11" } }], PA: [{ PAB: { _from: "1903-11-04" } }, { USD: { _from: "1903-11-18" } }], PE: [{ PES: { _from: "1863-02-14", _to: "1985-02-01" } }, { PEI: { _from: "1985-02-01", _to: "1991-07-01" } }, { PEN: { _from: "1991-07-01" } }], PF: [{ XPF: { _from: "1945-12-26" } }], PG: [{ AUD: { _from: "1966-02-14", _to: "1975-09-16" } }, { PGK: { _from: "1975-09-16" } }], PH: [{ PHP: { _from: "1946-07-04" } }], PK: [{ INR: { _from: "1835-08-17", _to: "1947-08-15" } }, { PKR: { _from: "1948-04-01" } }], PL: [{ PLZ: { _from: "1950-10-28", _to: "1994-12-31" } }, { PLN: { _from: "1995-01-01" } }], PM: [{ FRF: { _from: "1972-12-21", _to: "2002-02-17" } }, { EUR: { _from: "1999-01-01" } }], PN: [{ NZD: { _from: "1969-01-13" } }], PR: [{ ESP: { _from: "1800-01-01", _to: "1898-12-10" } }, { USD: { _from: "1898-12-10" } }], PS: [{ JOD: { _from: "1950-07-01", _to: "1967-06-01" } }, { ILP: { _from: "1967-06-01", _to: "1980-02-22" } }, { ILS: { _from: "1985-09-04" } }, { JOD: { _from: "1996-02-12" } }], PT: [{ PTE: { _from: "1911-05-22", _to: "2002-02-28" } }, { EUR: { _from: "1999-01-01" } }], PW: [{ USD: { _from: "1944-01-01" } }], PY: [{ PYG: { _from: "1943-11-01" } }], QA: [{ QAR: { _from: "1973-05-19" } }], RE: [{ FRF: { _from: "1975-01-01", _to: "2002-02-17" } }, { EUR: { _from: "1999-01-01" } }], RO: [{ ROL: { _from: "1952-01-28", _to: "2006-12-31" } }, { RON: { _from: "2005-07-01" } }], RS: [{ YUM: { _from: "1994-01-24", _to: "2002-05-15" } }, { CSD: { _from: "2002-05-15", _to: "2006-10-25" } }, { RSD: { _from: "2006-10-25" } }], RU: [{ RUR: { _from: "1991-12-25", _to: "1998-12-31" } }, { RUB: { _from: "1999-01-01" } }], RW: [{ RWF: { _from: "1964-05-19" } }], SA: [{ SAR: { _from: "1952-10-22" } }], SB: [{ AUD: { _from: "1966-02-14", _to: "1978-06-30" } }, { SBD: { _from: "1977-10-24" } }], SC: [{ SCR: { _from: "1903-11-01" } }], SD: [{ EGP: { _from: "1889-01-19", _to: "1958-01-01" } }, { GBP: { _from: "1889-01-19", _to: "1958-01-01" } }, { SDP: { _from: "1957-04-08", _to: "1998-06-01" } }, { SDD: { _from: "1992-06-08", _to: "2007-06-30" } }, { SDG: { _from: "2007-01-10" } }], SE: [{ SEK: { _from: "1873-05-27" } }], SG: [{ MYR: { _from: "1963-09-16", _to: "1967-06-12" } }, { SGD: { _from: "1967-06-12" } }], SH: [{ SHP: { _from: "1917-02-15" } }], SI: [{ SIT: { _from: "1992-10-07", _to: "2007-01-14" } }, { EUR: { _from: "2007-01-01" } }], SJ: [{ NOK: { _from: "1905-06-07" } }], SK: [{ CSK: { _from: "1953-06-01", _to: "1992-12-31" } }, { SKK: { _from: "1992-12-31", _to: "2009-01-01" } }, { EUR: { _from: "2009-01-01" } }], SL: [{ GBP: { _from: "1808-11-30", _to: "1966-02-04" } }, { SLL: { _from: "1964-08-04" } }], SM: [{ ITL: { _from: "1865-12-23", _to: "2001-02-28" } }, { EUR: { _from: "1999-01-01" } }], SN: [{ XOF: { _from: "1959-04-04" } }], SO: [{ SOS: { _from: "1960-07-01" } }], SR: [{ NLG: { _from: "1815-11-20", _to: "1940-05-10" } }, { SRG: { _from: "1940-05-10", _to: "2003-12-31" } }, { SRD: { _from: "2004-01-01" } }], SS: [{ SDG: { _from: "2007-01-10", _to: "2011-09-01" } }, { SSP: { _from: "2011-07-18" } }], ST: [{ STD: { _from: "1977-09-08", _to: "2017-12-31" } }, { STN: { _from: "2018-01-01" } }], SU: [{ SUR: { _from: "1961-01-01", _to: "1991-12-25" } }], SV: [{ SVC: { _from: "1919-11-11", _to: "2001-01-01" } }, { USD: { _from: "2001-01-01" } }], SX: [{ ANG: { _from: "2010-10-10" } }], SY: [{ SYP: { _from: "1948-01-01" } }], SZ: [{ SZL: { _from: "1974-09-06" } }], TA: [{ GBP: { _from: "1938-01-12" } }], TC: [{ USD: { _from: "1969-09-08" } }], TD: [{ XAF: { _from: "1993-01-01" } }], TF: [{ FRF: { _from: "1959-01-01", _to: "2002-02-17" } }, { EUR: { _from: "1999-01-01" } }], TG: [{ XOF: { _from: "1958-11-28" } }], TH: [{ THB: { _from: "1928-04-15" } }], TJ: [{ RUR: { _from: "1991-12-25", _to: "1995-05-10" } }, { TJR: { _from: "1995-05-10", _to: "2000-10-25" } }, { TJS: { _from: "2000-10-26" } }], TK: [{ NZD: { _from: "1967-07-10" } }], TL: [{ TPE: { _from: "1959-01-02", _to: "2002-05-20" } }, { IDR: { _from: "1975-12-07", _to: "2002-05-20" } }, { USD: { _from: "1999-10-20" } }], TM: [{ SUR: { _from: "1961-01-01", _to: "1991-12-25" } }, { RUR: { _from: "1991-12-25", _to: "1993-11-01" } }, { TMM: { _from: "1993-11-01", _to: "2009-01-01" } }, { TMT: { _from: "2009-01-01" } }], TN: [{ TND: { _from: "1958-11-01" } }], TO: [{ TOP: { _from: "1966-02-14" } }], TP: [{ TPE: { _from: "1959-01-02", _to: "2002-05-20" } }, { IDR: { _from: "1975-12-07", _to: "2002-05-20" } }], TR: [{ TRL: { _from: "1922-11-01", _to: "2005-12-31" } }, { TRY: { _from: "2005-01-01" } }], TT: [{ TTD: { _from: "1964-01-01" } }], TV: [{ AUD: { _from: "1966-02-14" } }], TW: [{ TWD: { _from: "1949-06-15" } }], TZ: [{ TZS: { _from: "1966-06-14" } }], UA: [{ SUR: { _from: "1961-01-01", _to: "1991-12-25" } }, { RUR: { _from: "1991-12-25", _to: "1992-11-13" } }, { UAK: { _from: "1992-11-13", _to: "1993-10-17" } }, { UAH: { _from: "1996-09-02" } }], UG: [{ UGS: { _from: "1966-08-15", _to: "1987-05-15" } }, { UGX: { _from: "1987-05-15" } }], UM: [{ USD: { _from: "1944-01-01" } }], US: [{ USN: { _tender: "false" } }, { USS: { _tender: "false", _to: "2014-03-01" } }, { USD: { _from: "1792-01-01" } }], UY: [{ UYI: { _tender: "false" } }, { UYW: { _tender: "false" } }, { UYP: { _from: "1975-07-01", _to: "1993-03-01" } }, { UYU: { _from: "1993-03-01" } }], UZ: [{ UZS: { _from: "1994-07-01" } }], VA: [{ ITL: { _from: "1870-10-19", _to: "2002-02-28" } }, { EUR: { _from: "1999-01-01" } }], VC: [{ XCD: { _from: "1965-10-06" } }], VE: [{ VEB: { _from: "1871-05-11", _to: "2008-06-30" } }, { VEF: { _from: "2008-01-01", _to: "2018-08-20" } }, { VES: { _from: "2018-08-20" } }], VG: [{ USD: { _from: "1833-01-01" } }, { GBP: { _from: "1833-01-01", _to: "1959-01-01" } }], VI: [{ USD: { _from: "1837-01-01" } }], VN: [{ VNN: { _from: "1978-05-03", _to: "1985-09-14" } }, { VND: { _from: "1985-09-14" } }], VU: [{ VUV: { _from: "1981-01-01" } }], WF: [{ XPF: { _from: "1961-07-30" } }], WS: [{ WST: { _from: "1967-07-10" } }], XK: [{ YUM: { _from: "1994-01-24", _to: "1999-09-30" } }, { DEM: { _from: "1999-09-01", _to: "2002-03-09" } }, { EUR: { _from: "2002-01-01" } }], YD: [{ YDD: { _from: "1965-04-01", _to: "1996-01-01" } }], YE: [{ YER: { _from: "1990-05-22" } }], YT: [{ KMF: { _from: "1975-01-01", _to: "1976-02-23" } }, { FRF: { _from: "1976-02-23", _to: "2002-02-17" } }, { EUR: { _from: "1999-01-01" } }], YU: [{ YUD: { _from: "1966-01-01", _to: "1990-01-01" } }, { YUN: { _from: "1990-01-01", _to: "1992-07-24" } }, { YUM: { _from: "1994-01-24", _to: "2002-05-15" } }], ZA: [{ ZAR: { _from: "1961-02-14" } }, { ZAL: { _tender: "false", _from: "1985-09-01", _to: "1995-03-13" } }], ZM: [{ ZMK: { _from: "1968-01-16", _to: "2013-01-01" } }, { ZMW: { _from: "2013-01-01" } }], ZR: [{ ZRZ: { _from: "1971-10-27", _to: "1993-11-01" } }, { ZRN: { _from: "1993-11-01", _to: "1998-07-31" } }], ZW: [{ RHD: { _from: "1970-02-17", _to: "1980-04-18" } }, { ZWD: { _from: "1980-04-18", _to: "2008-08-01" } }, { ZWR: { _from: "2008-08-01", _to: "2009-02-02" } }, { ZWL: { _from: "2009-02-02", _to: "2009-04-12" } }, { USD: { _from: "2009-04-12" } }], ZZ: [{ XAG: { _tender: "false" } }, { XAU: { _tender: "false" } }, { XBA: { _tender: "false" } }, { XBB: { _tender: "false" } }, { XBC: { _tender: "false" } }, { XBD: { _tender: "false" } }, { XDR: { _tender: "false" } }, { XPD: { _tender: "false" } }, { XPT: { _tender: "false" } }, { XSU: { _tender: "false" } }, { XTS: { _tender: "false" } }, { XUA: { _tender: "false" } }, { XXX: { _tender: "false" } }, { XRE: { _tender: "false", _to: "1999-11-30" } }, { XFU: { _tender: "false", _to: "2013-11-30" } }, { XFO: { _tender: "false", _from: "1930-01-01", _to: "2003-04-01" } }] } }, numberingSystems: { adlm: { _digits: "\ud83a\udd50\ud83a\udd51\ud83a\udd52\ud83a\udd53\ud83a\udd54\ud83a\udd55\ud83a\udd56\ud83a\udd57\ud83a\udd58\ud83a\udd59", _type: "numeric" }, ahom: { _digits: "\ud805\udf30\ud805\udf31\ud805\udf32\ud805\udf33\ud805\udf34\ud805\udf35\ud805\udf36\ud805\udf37\ud805\udf38\ud805\udf39", _type: "numeric" }, arab: { _digits: "\u0660\u0661\u0662\u0663\u0664\u0665\u0666\u0667\u0668\u0669", _type: "numeric" }, arabext: { _digits: "\u06f0\u06f1\u06f2\u06f3\u06f4\u06f5\u06f6\u06f7\u06f8\u06f9", _type: "numeric" }, armn: { _rules: "armenian-upper", _type: "algorithmic" }, armnlow: { _rules: "armenian-lower", _type: "algorithmic" }, bali: { _digits: "\u1b50\u1b51\u1b52\u1b53\u1b54\u1b55\u1b56\u1b57\u1b58\u1b59", _type: "numeric" }, beng: { _digits: "\u09e6\u09e7\u09e8\u09e9\u09ea\u09eb\u09ec\u09ed\u09ee\u09ef", _type: "numeric" }, bhks: { _digits: "\ud807\udc50\ud807\udc51\ud807\udc52\ud807\udc53\ud807\udc54\ud807\udc55\ud807\udc56\ud807\udc57\ud807\udc58\ud807\udc59", _type: "numeric" }, brah: { _digits: "\ud804\udc66\ud804\udc67\ud804\udc68\ud804\udc69\ud804\udc6a\ud804\udc6b\ud804\udc6c\ud804\udc6d\ud804\udc6e\ud804\udc6f", _type: "numeric" }, cakm: { _digits: "\ud804\udd36\ud804\udd37\ud804\udd38\ud804\udd39\ud804\udd3a\ud804\udd3b\ud804\udd3c\ud804\udd3d\ud804\udd3e\ud804\udd3f", _type: "numeric" }, cham: { _digits: "\uaa50\uaa51\uaa52\uaa53\uaa54\uaa55\uaa56\uaa57\uaa58\uaa59", _type: "numeric" }, cyrl: { _rules: "cyrillic-lower", _type: "algorithmic" }, deva: { _digits: "\u0966\u0967\u0968\u0969\u096a\u096b\u096c\u096d\u096e\u096f", _type: "numeric" }, ethi: { _rules: "ethiopic", _type: "algorithmic" }, fullwide: { _digits: "\uff10\uff11\uff12\uff13\uff14\uff15\uff16\uff17\uff18\uff19", _type: "numeric" }, geor: { _rules: "georgian", _type: "algorithmic" }, gong: { _digits: "\ud807\udda0\ud807\udda1\ud807\udda2\ud807\udda3\ud807\udda4\ud807\udda5\ud807\udda6\ud807\udda7\ud807\udda8\ud807\udda9", _type: "numeric" }, gonm: { _digits: "\ud807\udd50\ud807\udd51\ud807\udd52\ud807\udd53\ud807\udd54\ud807\udd55\ud807\udd56\ud807\udd57\ud807\udd58\ud807\udd59", _type: "numeric" }, grek: { _rules: "greek-upper", _type: "algorithmic" }, greklow: { _rules: "greek-lower", _type: "algorithmic" }, gujr: { _digits: "\u0ae6\u0ae7\u0ae8\u0ae9\u0aea\u0aeb\u0aec\u0aed\u0aee\u0aef", _type: "numeric" }, guru: { _digits: "\u0a66\u0a67\u0a68\u0a69\u0a6a\u0a6b\u0a6c\u0a6d\u0a6e\u0a6f", _type: "numeric" }, hanidays: { _rules: "zh/SpelloutRules/spellout-numbering-days", _type: "algorithmic" }, hanidec: { _digits: "\u3007\u4e00\u4e8c\u4e09\u56db\u4e94\u516d\u4e03\u516b\u4e5d", _type: "numeric" }, hans: { _rules: "zh/SpelloutRules/spellout-cardinal", _type: "algorithmic" }, hansfin: { _rules: "zh/SpelloutRules/spellout-cardinal-financial", _type: "algorithmic" }, hant: { _rules: "zh_Hant/SpelloutRules/spellout-cardinal", _type: "algorithmic" }, hantfin: { _rules: "zh_Hant/SpelloutRules/spellout-cardinal-financial", _type: "algorithmic" }, hebr: { _rules: "hebrew", _type: "algorithmic" }, hmng: { _digits: "\ud81a\udf50\ud81a\udf51\ud81a\udf52\ud81a\udf53\ud81a\udf54\ud81a\udf55\ud81a\udf56\ud81a\udf57\ud81a\udf58\ud81a\udf59", _type: "numeric" }, hmnp: { _digits: "\ud838\udd40\ud838\udd41\ud838\udd42\ud838\udd43\ud838\udd44\ud838\udd45\ud838\udd46\ud838\udd47\ud838\udd48\ud838\udd49", _type: "numeric" }, java: { _digits: "\ua9d0\ua9d1\ua9d2\ua9d3\ua9d4\ua9d5\ua9d6\ua9d7\ua9d8\ua9d9", _type: "numeric" }, jpan: { _rules: "ja/SpelloutRules/spellout-cardinal", _type: "algorithmic" }, jpanfin: { _rules: "ja/SpelloutRules/spellout-cardinal-financial", _type: "algorithmic" }, jpanyear: { _rules: "ja/SpelloutRules/spellout-numbering-year-latn", _type: "algorithmic" }, kali: { _digits: "\ua900\ua901\ua902\ua903\ua904\ua905\ua906\ua907\ua908\ua909", _type: "numeric" }, khmr: { _digits: "\u17e0\u17e1\u17e2\u17e3\u17e4\u17e5\u17e6\u17e7\u17e8\u17e9", _type: "numeric" }, knda: { _digits: "\u0ce6\u0ce7\u0ce8\u0ce9\u0cea\u0ceb\u0cec\u0ced\u0cee\u0cef", _type: "numeric" }, lana: { _digits: "\u1a80\u1a81\u1a82\u1a83\u1a84\u1a85\u1a86\u1a87\u1a88\u1a89", _type: "numeric" }, lanatham: { _digits: "\u1a90\u1a91\u1a92\u1a93\u1a94\u1a95\u1a96\u1a97\u1a98\u1a99", _type: "numeric" }, laoo: { _digits: "\u0ed0\u0ed1\u0ed2\u0ed3\u0ed4\u0ed5\u0ed6\u0ed7\u0ed8\u0ed9", _type: "numeric" }, latn: { _digits: "0123456789", _type: "numeric" }, lepc: { _digits: "\u1c40\u1c41\u1c42\u1c43\u1c44\u1c45\u1c46\u1c47\u1c48\u1c49", _type: "numeric" }, limb: { _digits: "\u1946\u1947\u1948\u1949\u194a\u194b\u194c\u194d\u194e\u194f", _type: "numeric" }, mathbold: { _digits: "\ud835\udfce\ud835\udfcf\ud835\udfd0\ud835\udfd1\ud835\udfd2\ud835\udfd3\ud835\udfd4\ud835\udfd5\ud835\udfd6\ud835\udfd7", _type: "numeric" }, mathdbl: { _digits: "\ud835\udfd8\ud835\udfd9\ud835\udfda\ud835\udfdb\ud835\udfdc\ud835\udfdd\ud835\udfde\ud835\udfdf\ud835\udfe0\ud835\udfe1", _type: "numeric" }, mathmono: { _digits: "\ud835\udff6\ud835\udff7\ud835\udff8\ud835\udff9\ud835\udffa\ud835\udffb\ud835\udffc\ud835\udffd\ud835\udffe\ud835\udfff", _type: "numeric" }, mathsanb: { _digits: "\ud835\udfec\ud835\udfed\ud835\udfee\ud835\udfef\ud835\udff0\ud835\udff1\ud835\udff2\ud835\udff3\ud835\udff4\ud835\udff5", _type: "numeric" }, mathsans: { _digits: "\ud835\udfe2\ud835\udfe3\ud835\udfe4\ud835\udfe5\ud835\udfe6\ud835\udfe7\ud835\udfe8\ud835\udfe9\ud835\udfea\ud835\udfeb", _type: "numeric" }, mlym: { _digits: "\u0d66\u0d67\u0d68\u0d69\u0d6a\u0d6b\u0d6c\u0d6d\u0d6e\u0d6f", _type: "numeric" }, modi: { _digits: "\ud805\ude50\ud805\ude51\ud805\ude52\ud805\ude53\ud805\ude54\ud805\ude55\ud805\ude56\ud805\ude57\ud805\ude58\ud805\ude59", _type: "numeric" }, mong: { _digits: "\u1810\u1811\u1812\u1813\u1814\u1815\u1816\u1817\u1818\u1819", _type: "numeric" }, mroo: { _digits: "\ud81a\ude60\ud81a\ude61\ud81a\ude62\ud81a\ude63\ud81a\ude64\ud81a\ude65\ud81a\ude66\ud81a\ude67\ud81a\ude68\ud81a\ude69", _type: "numeric" }, mtei: { _digits: "\uabf0\uabf1\uabf2\uabf3\uabf4\uabf5\uabf6\uabf7\uabf8\uabf9", _type: "numeric" }, mymr: { _digits: "\u1040\u1041\u1042\u1043\u1044\u1045\u1046\u1047\u1048\u1049", _type: "numeric" }, mymrshan: { _digits: "\u1090\u1091\u1092\u1093\u1094\u1095\u1096\u1097\u1098\u1099", _type: "numeric" }, mymrtlng: { _digits: "\ua9f0\ua9f1\ua9f2\ua9f3\ua9f4\ua9f5\ua9f6\ua9f7\ua9f8\ua9f9", _type: "numeric" }, newa: { _digits: "\ud805\udc50\ud805\udc51\ud805\udc52\ud805\udc53\ud805\udc54\ud805\udc55\ud805\udc56\ud805\udc57\ud805\udc58\ud805\udc59", _type: "numeric" }, nkoo: { _digits: "\u07c0\u07c1\u07c2\u07c3\u07c4\u07c5\u07c6\u07c7\u07c8\u07c9", _type: "numeric" }, olck: { _digits: "\u1c50\u1c51\u1c52\u1c53\u1c54\u1c55\u1c56\u1c57\u1c58\u1c59", _type: "numeric" }, orya: { _digits: "\u0b66\u0b67\u0b68\u0b69\u0b6a\u0b6b\u0b6c\u0b6d\u0b6e\u0b6f", _type: "numeric" }, osma: { _digits: "\ud801\udca0\ud801\udca1\ud801\udca2\ud801\udca3\ud801\udca4\ud801\udca5\ud801\udca6\ud801\udca7\ud801\udca8\ud801\udca9", _type: "numeric" }, rohg: { _digits: "\ud803\udd30\ud803\udd31\ud803\udd32\ud803\udd33\ud803\udd34\ud803\udd35\ud803\udd36\ud803\udd37\ud803\udd38\ud803\udd39", _type: "numeric" }, roman: { _rules: "roman-upper", _type: "algorithmic" }, romanlow: { _rules: "roman-lower", _type: "algorithmic" }, saur: { _digits: "\ua8d0\ua8d1\ua8d2\ua8d3\ua8d4\ua8d5\ua8d6\ua8d7\ua8d8\ua8d9", _type: "numeric" }, shrd: { _digits: "\ud804\uddd0\ud804\uddd1\ud804\uddd2\ud804\uddd3\ud804\uddd4\ud804\uddd5\ud804\uddd6\ud804\uddd7\ud804\uddd8\ud804\uddd9", _type: "numeric" }, sind: { _digits: "\ud804\udef0\ud804\udef1\ud804\udef2\ud804\udef3\ud804\udef4\ud804\udef5\ud804\udef6\ud804\udef7\ud804\udef8\ud804\udef9", _type: "numeric" }, sinh: { _digits: "\u0de6\u0de7\u0de8\u0de9\u0dea\u0deb\u0dec\u0ded\u0dee\u0def", _type: "numeric" }, sora: { _digits: "\ud804\udcf0\ud804\udcf1\ud804\udcf2\ud804\udcf3\ud804\udcf4\ud804\udcf5\ud804\udcf6\ud804\udcf7\ud804\udcf8\ud804\udcf9", _type: "numeric" }, sund: { _digits: "\u1bb0\u1bb1\u1bb2\u1bb3\u1bb4\u1bb5\u1bb6\u1bb7\u1bb8\u1bb9", _type: "numeric" }, takr: { _digits: "\ud805\udec0\ud805\udec1\ud805\udec2\ud805\udec3\ud805\udec4\ud805\udec5\ud805\udec6\ud805\udec7\ud805\udec8\ud805\udec9", _type: "numeric" }, talu: { _digits: "\u19d0\u19d1\u19d2\u19d3\u19d4\u19d5\u19d6\u19d7\u19d8\u19d9", _type: "numeric" }, taml: { _rules: "tamil", _type: "algorithmic" }, tamldec: { _digits: "\u0be6\u0be7\u0be8\u0be9\u0bea\u0beb\u0bec\u0bed\u0bee\u0bef", _type: "numeric" }, telu: { _digits: "\u0c66\u0c67\u0c68\u0c69\u0c6a\u0c6b\u0c6c\u0c6d\u0c6e\u0c6f", _type: "numeric" }, thai: { _digits: "\u0e50\u0e51\u0e52\u0e53\u0e54\u0e55\u0e56\u0e57\u0e58\u0e59", _type: "numeric" }, tibt: { _digits: "\u0f20\u0f21\u0f22\u0f23\u0f24\u0f25\u0f26\u0f27\u0f28\u0f29", _type: "numeric" }, tirh: { _digits: "\ud805\udcd0\ud805\udcd1\ud805\udcd2\ud805\udcd3\ud805\udcd4\ud805\udcd5\ud805\udcd6\ud805\udcd7\ud805\udcd8\ud805\udcd9", _type: "numeric" }, vaii: { _digits: "\ua620\ua621\ua622\ua623\ua624\ua625\ua626\ua627\ua628\ua629", _type: "numeric" }, wara: { _digits: "\ud806\udce0\ud806\udce1\ud806\udce2\ud806\udce3\ud806\udce4\ud806\udce5\ud806\udce6\ud806\udce7\ud806\udce8\ud806\udce9", _type: "numeric" }, wcho: { _digits: "\ud838\udef0\ud838\udef1\ud838\udef2\ud838\udef3\ud838\udef4\ud838\udef5\ud838\udef6\ud838\udef7\ud838\udef8\ud838\udef9", _type: "numeric" } } } } }, 84109: /*!******************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/common/core/localization/core.js ***! \******************************************************************************/ function(module, exports, __webpack_require__) { exports.default = void 0; var _dependency_injector = _interopRequireDefault(__webpack_require__( /*! ../../../core/utils/dependency_injector */ 89656)); var _parent_locales = _interopRequireDefault(__webpack_require__( /*! ./cldr-data/parent_locales */ 85703)); var _parentLocale = _interopRequireDefault(__webpack_require__( /*! ./parentLocale */ 55088)); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } exports.default = (0, _dependency_injector.default)({ locale: (() => { let currentLocale = "en"; return locale => { if (!locale) { return currentLocale } currentLocale = locale } })(), getValueByClosestLocale: function(getter) { let locale = this.locale(); let value = getter(locale); let isRootLocale; while (!value && !isRootLocale) { locale = (0, _parentLocale.default)(_parent_locales.default, locale); if (locale) { value = getter(locale) } else { isRootLocale = true } } if (void 0 === value && "en" !== locale) { return getter("en") } return value } }); module.exports = exports.default; module.exports.default = exports.default }, 17333: /*!**********************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/common/core/localization/currency.js ***! \**********************************************************************************/ function(module, exports, __webpack_require__) { exports.default = void 0; var _extend = __webpack_require__( /*! ../../../core/utils/extend */ 52576); exports.default = { _formatNumberCore: function(value, format, formatConfig) { if ("currency" === format) { formatConfig.precision = formatConfig.precision || 0; let result = this.format(value, (0, _extend.extend)({}, formatConfig, { type: "fixedpoint" })); const currencyPart = this.getCurrencySymbol().symbol.replace(/\$/g, "$$$$"); result = result.replace(/^(\D*)(\d.*)/, "$1" + currencyPart + "$2"); return result } return this.callBase.apply(this, arguments) }, getCurrencySymbol: function() { return { symbol: "$" } }, getOpenXmlCurrencyFormat: function() { return "$#,##0{0}_);\\($#,##0{0}\\)" } }; module.exports = exports.default; module.exports.default = exports.default }, 38662: /*!******************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/common/core/localization/date.js ***! \******************************************************************************/ function(module, exports, __webpack_require__) { exports.default = void 0; var _dependency_injector = _interopRequireDefault(__webpack_require__( /*! ../../../core/utils/dependency_injector */ 89656)); var _type = __webpack_require__( /*! ../../../core/utils/type */ 11528); var _iterator = __webpack_require__( /*! ../../../core/utils/iterator */ 21274); var _errors = _interopRequireDefault(__webpack_require__( /*! ../../../core/errors */ 87129)); var _date = __webpack_require__( /*! ./ldml/date.formatter */ 86670); var _date2 = __webpack_require__( /*! ./ldml/date.format */ 83445); var _date3 = __webpack_require__( /*! ./ldml/date.parser */ 46981); var _default_date_names = _interopRequireDefault(__webpack_require__( /*! ./default_date_names */ 81179)); var _first_day_of_week_data = _interopRequireDefault(__webpack_require__( /*! ./cldr-data/first_day_of_week_data */ 29908)); var _core = _interopRequireDefault(__webpack_require__( /*! ./core */ 84109)); var _number = _interopRequireDefault(__webpack_require__( /*! ./number */ 52771)); var _date4 = _interopRequireDefault(__webpack_require__( /*! ./intl/date */ 21840)); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } const hasIntl = "undefined" !== typeof Intl; const FORMATS_TO_PATTERN_MAP = { shortdate: "M/d/y", shorttime: "h:mm a", longdate: "EEEE, MMMM d, y", longtime: "h:mm:ss a", monthandday: "MMMM d", monthandyear: "MMMM y", quarterandyear: "QQQ y", day: "d", year: "y", shortdateshorttime: "M/d/y, h:mm a", longdatelongtime: "EEEE, MMMM d, y, h:mm:ss a", month: "LLLL", shortyear: "yy", dayofweek: "EEEE", quarter: "QQQ", hour: "HH", minute: "mm", second: "ss", millisecond: "SSS", "datetime-local": "yyyy-MM-ddTHH':'mm':'ss" }; const possiblePartPatterns = { year: ["y", "yy", "yyyy"], day: ["d", "dd"], month: ["M", "MM", "MMM", "MMMM"], hours: ["H", "HH", "h", "hh", "ah"], minutes: ["m", "mm"], seconds: ["s", "ss"], milliseconds: ["S", "SS", "SSS"] }; const dateLocalization = (0, _dependency_injector.default)({ engine: function() { return "base" }, _getPatternByFormat: function(format) { return FORMATS_TO_PATTERN_MAP[format.toLowerCase()] }, _expandPattern: function(pattern) { return this._getPatternByFormat(pattern) || pattern }, formatUsesMonthName: function(format) { return -1 !== this._expandPattern(format).indexOf("MMMM") }, formatUsesDayName: function(format) { return -1 !== this._expandPattern(format).indexOf("EEEE") }, getFormatParts: function(format) { const pattern = this._getPatternByFormat(format) || format; const result = []; (0, _iterator.each)(pattern.split(/\W+/), ((_, formatPart) => { (0, _iterator.each)(possiblePartPatterns, ((partName, possiblePatterns) => { if (possiblePatterns.includes(formatPart)) { result.push(partName) } })) })); return result }, getMonthNames: function(format) { return _default_date_names.default.getMonthNames(format) }, getDayNames: function(format) { return _default_date_names.default.getDayNames(format) }, getQuarterNames: function(format) { return _default_date_names.default.getQuarterNames(format) }, getPeriodNames: function(format) { return _default_date_names.default.getPeriodNames(format) }, getTimeSeparator: function() { return ":" }, is24HourFormat: function(format) { const amTime = new Date(2017, 0, 20, 11, 0, 0, 0); const pmTime = new Date(2017, 0, 20, 23, 0, 0, 0); const amTimeFormatted = this.format(amTime, format); const pmTimeFormatted = this.format(pmTime, format); for (let i = 0; i < amTimeFormatted.length; i++) { if (amTimeFormatted[i] !== pmTimeFormatted[i]) { return !isNaN(parseInt(amTimeFormatted[i])) } } }, format: function(date, format) { if (!date) { return } if (!format) { return date } let formatter; if ("function" === typeof format) { formatter = format } else if (format.formatter) { formatter = format.formatter } else { format = format.type || format; if ((0, _type.isString)(format)) { format = FORMATS_TO_PATTERN_MAP[format.toLowerCase()] || format; return _number.default.convertDigits((0, _date.getFormatter)(format, this)(date)) } } if (!formatter) { return } return formatter(date) }, parse: function(text, format) { const that = this; let ldmlFormat; let formatter; if (!text) { return } if (!format) { return this.parse(text, "shortdate") } if (format.parser) { return format.parser(text) } if ("string" === typeof format && !FORMATS_TO_PATTERN_MAP[format.toLowerCase()]) { ldmlFormat = format } else { formatter = value => { const text = that.format(value, format); return _number.default.convertDigits(text, true) }; try { ldmlFormat = (0, _date2.getFormat)(formatter) } catch (e) {} } if (ldmlFormat) { text = _number.default.convertDigits(text, true); return (0, _date3.getParser)(ldmlFormat, this)(text) } _errors.default.log("W0012"); const result = new Date(text); if (!result || isNaN(result.getTime())) { return } return result }, firstDayOfWeekIndex: function() { const index = _core.default.getValueByClosestLocale((locale => _first_day_of_week_data.default[locale])); return void 0 === index ? 0 : index } }); if (hasIntl) { dateLocalization.inject(_date4.default) } exports.default = dateLocalization; module.exports = exports.default; module.exports.default = exports.default }, 81179: /*!********************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/common/core/localization/default_date_names.js ***! \********************************************************************************************/ function(module, exports, __webpack_require__) { exports.default = void 0; var _iterator = __webpack_require__( /*! ../../../core/utils/iterator */ 21274); const MONTHS = ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"]; const DAYS = ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"]; const PERIODS = ["AM", "PM"]; const QUARTERS = ["Q1", "Q2", "Q3", "Q4"]; const cutCaptions = (captions, format) => { const lengthByFormat = { abbreviated: 3, short: 2, narrow: 1 }; return (0, _iterator.map)(captions, (caption => caption.substr(0, lengthByFormat[format]))) }; exports.default = { getMonthNames: function(format) { return cutCaptions(MONTHS, format) }, getDayNames: function(format) { return cutCaptions(DAYS, format) }, getQuarterNames: function(format) { return QUARTERS }, getPeriodNames: function(format) { return PERIODS } }; module.exports = exports.default; module.exports.default = exports.default }, 62788: /*!******************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/common/core/localization/default_messages.js ***! \******************************************************************************************/ function(__unused_webpack_module, exports) { exports.defaultMessages = void 0; // !!! AUTO-GENERATED FILE, DO NOT EDIT exports.defaultMessages = { en: { Yes: "Yes", No: "No", Cancel: "Cancel", CheckState: "Check state", Close: "Close", Clear: "Clear", Done: "Done", Loading: "Loading...", Select: "Select...", Search: "Search", Back: "Back", OK: "OK", Today: "Today", Yesterday: "Yesterday", "dxCollectionWidget-noDataText": "No data to display", "dxDropDownEditor-selectLabel": "Select", "validation-required": "Required", "validation-required-formatted": "{0} is required", "validation-numeric": "Value must be a number", "validation-numeric-formatted": "{0} must be a number", "validation-range": "Value is out of range", "validation-range-formatted": "{0} is out of range", "validation-stringLength": "The length of the value is not correct", "validation-stringLength-formatted": "The length of {0} is not correct", "validation-custom": "Value is invalid", "validation-custom-formatted": "{0} is invalid", "validation-async": "Value is invalid", "validation-async-formatted": "{0} is invalid", "validation-compare": "Values do not match", "validation-compare-formatted": "{0} does not match", "validation-pattern": "Value does not match pattern", "validation-pattern-formatted": "{0} does not match pattern", "validation-email": "Email is invalid", "validation-email-formatted": "{0} is invalid", "validation-mask": "Value is invalid", "dxLookup-searchPlaceholder": "Minimum character number: {0}", "dxList-pullingDownText": "Pull down to refresh...", "dxList-pulledDownText": "Release to refresh...", "dxList-refreshingText": "Refreshing...", "dxList-pageLoadingText": "Loading...", "dxList-nextButtonText": "More", "dxList-selectAll": "Select All", "dxList-listAriaLabel": "Items", "dxList-listAriaLabel-deletable": "Deletable items", "dxListEditDecorator-delete": "Delete", "dxListEditDecorator-more": "More", "dxList-selectAll-indeterminate": "Half-checked", "dxList-selectAll-checked": "Checked", "dxList-selectAll-notChecked": "Not checked", "dxList-ariaRoleDescription": "List", "dxList-listAriaLabel-itemContent": "List item content", "dxScrollView-pullingDownText": "Pull down to refresh...", "dxScrollView-pulledDownText": "Release to refresh...", "dxScrollView-refreshingText": "Refreshing...", "dxScrollView-reachBottomText": "Loading...", "dxDateBox-simulatedDataPickerTitleTime": "Select time", "dxDateBox-simulatedDataPickerTitleDate": "Select date", "dxDateBox-simulatedDataPickerTitleDateTime": "Select date and time", "dxDateBox-validation-datetime": "Value must be a date or time", "dxDateRangeBox-invalidStartDateMessage": "Start value must be a date", "dxDateRangeBox-invalidEndDateMessage": "End value must be a date", "dxDateRangeBox-startDateOutOfRangeMessage": "Start date is out of range", "dxDateRangeBox-endDateOutOfRangeMessage": "End date is out of range", "dxDateRangeBox-startDateLabel": "Start Date", "dxDateRangeBox-endDateLabel": "End Date", "dxFileUploader-selectFile": "Select a file", "dxFileUploader-dropFile": "or Drop a file here", "dxFileUploader-bytes": "bytes", "dxFileUploader-kb": "KB", "dxFileUploader-Mb": "MB", "dxFileUploader-Gb": "GB", "dxFileUploader-upload": "Upload", "dxFileUploader-uploaded": "Uploaded", "dxFileUploader-readyToUpload": "Ready to upload", "dxFileUploader-uploadAbortedMessage": "Upload cancelled", "dxFileUploader-uploadFailedMessage": "Upload failed", "dxFileUploader-invalidFileExtension": "File type is not allowed", "dxFileUploader-invalidMaxFileSize": "File is too large", "dxFileUploader-invalidMinFileSize": "File is too small", "dxRangeSlider-ariaFrom": "From", "dxRangeSlider-ariaTill": "Till", "dxSwitch-switchedOnText": "ON", "dxSwitch-switchedOffText": "OFF", "dxForm-optionalMark": "optional", "dxForm-requiredMessage": "{0} is required", "dxNumberBox-invalidValueMessage": "Value must be a number", "dxNumberBox-noDataText": "No data", "dxDataGrid-emptyHeaderWithColumnChooserText": "Use {0} to display columns", "dxDataGrid-emptyHeaderWithGroupPanelText": "Drag a column from the group panel here", "dxDataGrid-emptyHeaderWithColumnChooserAndGroupPanelText": "Use {0} or drag a column from the group panel", "dxDataGrid-emptyHeaderColumnChooserText": "column chooser", "dxDataGrid-columnChooserTitle": "Column Chooser", "dxDataGrid-columnChooserEmptyText": "Drag a column here to hide it", "dxDataGrid-groupContinuesMessage": "Continues on the next page", "dxDataGrid-groupContinuedMessage": "Continued from the previous page", "dxDataGrid-groupHeaderText": "Group by This Column", "dxDataGrid-ungroupHeaderText": "Ungroup", "dxDataGrid-ungroupAllText": "Ungroup All", "dxDataGrid-editingEditRow": "Edit", "dxDataGrid-editingSaveRowChanges": "Save", "dxDataGrid-editingCancelRowChanges": "Cancel", "dxDataGrid-editingDeleteRow": "Delete", "dxDataGrid-editingUndeleteRow": "Undelete", "dxDataGrid-editingConfirmDeleteMessage": "Are you sure you want to delete this record?", "dxDataGrid-validationCancelChanges": "Cancel changes", "dxDataGrid-groupPanelEmptyText": "Drag a column header here to group by that column", "dxDataGrid-noDataText": "No data", "dxDataGrid-searchPanelPlaceholder": "Search...", "dxDataGrid-filterRowShowAllText": "(All)", "dxDataGrid-filterRowResetOperationText": "Reset", "dxDataGrid-filterRowOperationEquals": "Equals", "dxDataGrid-filterRowOperationNotEquals": "Does not equal", "dxDataGrid-filterRowOperationLess": "Less than", "dxDataGrid-filterRowOperationLessOrEquals": "Less than or equal to", "dxDataGrid-filterRowOperationGreater": "Greater than", "dxDataGrid-filterRowOperationGreaterOrEquals": "Greater than or equal to", "dxDataGrid-filterRowOperationStartsWith": "Starts with", "dxDataGrid-filterRowOperationContains": "Contains", "dxDataGrid-filterRowOperationNotContains": "Does not contain", "dxDataGrid-filterRowOperationEndsWith": "Ends with", "dxDataGrid-filterRowOperationBetween": "Between", "dxDataGrid-filterRowOperationBetweenStartText": "Start", "dxDataGrid-filterRowOperationBetweenEndText": "End", "dxDataGrid-ariaSearchBox": "Search box", "dxDataGrid-applyFilterText": "Apply filter", "dxDataGrid-trueText": "true", "dxDataGrid-falseText": "false", "dxDataGrid-sortingAscendingText": "Sort Ascending", "dxDataGrid-sortingDescendingText": "Sort Descending", "dxDataGrid-sortingClearText": "Clear Sorting", "dxDataGrid-ariaNotSortedColumn": "Not sorted column", "dxDataGrid-ariaSortedAscendingColumn": "Column sorted in ascending order", "dxDataGrid-ariaSortedDescendingColumn": "Column sorted in descending order", "dxDataGrid-ariaSortIndex": "Sort index {0}", "dxDataGrid-editingSaveAllChanges": "Save changes", "dxDataGrid-editingCancelAllChanges": "Discard changes", "dxDataGrid-editingAddRow": "Add a row", "dxDataGrid-summaryMin": "Min: {0}", "dxDataGrid-summaryMinOtherColumn": "Min of {1} is {0}", "dxDataGrid-summaryMax": "Max: {0}", "dxDataGrid-summaryMaxOtherColumn": "Max of {1} is {0}", "dxDataGrid-summaryAvg": "Avg: {0}", "dxDataGrid-summaryAvgOtherColumn": "Avg of {1} is {0}", "dxDataGrid-summarySum": "Sum: {0}", "dxDataGrid-summarySumOtherColumn": "Sum of {1} is {0}", "dxDataGrid-summaryCount": "Count: {0}", "dxDataGrid-columnFixingFix": "Set Fixed Position", "dxDataGrid-columnFixingUnfix": "Unfix", "dxDataGrid-columnFixingLeftPosition": "Left", "dxDataGrid-columnFixingRightPosition": "Right", "dxDataGrid-columnFixingStickyPosition": "Sticky", "dxDataGrid-exportTo": "Export", "dxDataGrid-exportToExcel": "Export to Excel file", "dxDataGrid-exporting": "Exporting...", "dxDataGrid-excelFormat": "Excel file", "dxDataGrid-selectedRows": "Selected rows", "dxDataGrid-exportSelectedRows": "Export selected rows to {0}", "dxDataGrid-exportAll": "Export all data to {0}", "dxDataGrid-headerFilterLabel": "Filter options", "dxDataGrid-headerFilterIndicatorLabel": "Show filter options for column '{0}'", "dxDataGrid-headerFilterEmptyValue": "(Blanks)", "dxDataGrid-headerFilterOK": "OK", "dxDataGrid-headerFilterCancel": "Cancel", "dxDataGrid-ariaAdaptiveCollapse": "Hide additional data", "dxDataGrid-ariaAdaptiveExpand": "Display additional data", "dxDataGrid-ariaColumn": "Column", "dxDataGrid-ariaColumnHeader": "Column header", "dxDataGrid-ariaValue": "Value", "dxDataGrid-ariaError": "Error", "dxDataGrid-ariaRevertButton": "Press Escape to discard the changes", "dxDataGrid-ariaFilterCell": "Filter cell", "dxDataGrid-ariaCollapse": "Collapse", "dxDataGrid-ariaModifiedCell": "Modified", "dxDataGrid-ariaDeletedCell": "Deleted", "dxDataGrid-ariaEditableCell": "Editable", "dxDataGrid-ariaExpand": "Expand", "dxDataGrid-ariaCollapsedRow": "Collapsed row", "dxDataGrid-ariaExpandedRow": "Expanded row", "dxDataGrid-ariaDataGrid": "Data grid with {0} rows and {1} columns", "dxDataGrid-ariaSearchInGrid": "Search in the data grid", "dxDataGrid-ariaSelectAll": "Select all", "dxDataGrid-ariaSelectRow": "Select row", "dxDataGrid-ariaToolbar": "Data grid toolbar", "dxDataGrid-ariaEditForm": "Edit form", "dxDataGrid-filterBuilderPopupTitle": "Filter Builder", "dxDataGrid-filterPanelCreateFilter": "Create Filter", "dxDataGrid-filterPanelClearFilter": "Clear", "dxDataGrid-filterPanelFilterEnabledHint": "Enable the filter", "dxDataGrid-masterDetail": "Cell with details", "dxDataGrid-moveColumnToTheRight": "Move to the right", "dxDataGrid-moveColumnToTheLeft": "Move to the left", "dxTreeList-ariaTreeList": "Tree list with {0} rows and {1} columns", "dxTreeList-ariaExpandableInstruction": "Press Ctrl + right arrow to expand the focused node and Ctrl + left arrow to collapse it", "dxTreeList-ariaSearchInGrid": "Search in the tree list", "dxTreeList-ariaToolbar": "Tree list toolbar", "dxTreeList-editingAddRowToNode": "Add", "dxPager-infoText": "Page {0} of {1} ({2} items)", "dxPager-pagesCountText": "of", "dxPager-pageSize": "Items per page: {0}", "dxPager-pageSizesAllText": "All", "dxPager-page": "Page {0}", "dxPager-prevPage": "Previous page", "dxPager-nextPage": "Next page", "dxPager-ariaLabel": "Page navigation", "dxPager-ariaPageSize": "Page size", "dxPager-ariaPageNumber": "Page number", "dxPagination-infoText": "Page {0} of {1} ({2} items)", "dxPagination-pagesCountText": "of", "dxPagination-pageSize": "Items per page: {0}", "dxPagination-pageSizesAllText": "All", "dxPagination-page": "Page {0}", "dxPagination-prevPage": "Previous page", "dxPagination-nextPage": "Next page", "dxPagination-ariaLabel": "Page navigation", "dxPagination-ariaPageSize": "Page size", "dxPagination-ariaPageNumber": "Page number", "dxPivotGrid-grandTotal": "Grand Total", "dxPivotGrid-total": "{0} Total", "dxPivotGrid-fieldChooserTitle": "Field Chooser", "dxPivotGrid-showFieldChooser": "Show Field Chooser", "dxPivotGrid-expandAll": "Expand All", "dxPivotGrid-collapseAll": "Collapse All", "dxPivotGrid-sortColumnBySummary": 'Sort "{0}" by This Column', "dxPivotGrid-sortRowBySummary": 'Sort "{0}" by This Row', "dxPivotGrid-removeAllSorting": "Remove All Sorting", "dxPivotGrid-dataNotAvailable": "N/A", "dxPivotGrid-rowFields": "Row Fields", "dxPivotGrid-columnFields": "Column Fields", "dxPivotGrid-dataFields": "Data Fields", "dxPivotGrid-filterFields": "Filter Fields", "dxPivotGrid-allFields": "All Fields", "dxPivotGrid-columnFieldArea": "Drop Column Fields Here", "dxPivotGrid-dataFieldArea": "Drop Data Fields Here", "dxPivotGrid-rowFieldArea": "Drop Row Fields Here", "dxPivotGrid-filterFieldArea": "Drop Filter Fields Here", "dxScheduler-dateRange": "from {0} to {1}", "dxScheduler-ariaLabel": "Scheduler. {0} view: {1} with {2} appointments", "dxScheduler-ariaLabel-currentIndicator-present": "The current time indicator is visible in the view", "dxScheduler-ariaLabel-currentIndicator-not-present": "The current time indicator is not visible on the screen", "dxScheduler-appointmentAriaLabel-group": "Group: {0}", "dxScheduler-appointmentAriaLabel-recurring": "Recurring appointment", "dxScheduler-appointmentListAriaLabel": "Appointment list", "dxScheduler-editorLabelTitle": "Subject", "dxScheduler-editorLabelStartDate": "Start Date", "dxScheduler-editorLabelEndDate": "End Date", "dxScheduler-editorLabelDescription": "Description", "dxScheduler-editorLabelRecurrence": "Repeat", "dxScheduler-navigationToday": "Today", "dxScheduler-navigationPrevious": "Previous page", "dxScheduler-navigationNext": "Next page", "dxScheduler-openAppointment": "Open appointment", "dxScheduler-recurrenceNever": "Never", "dxScheduler-recurrenceMinutely": "Every minute", "dxScheduler-recurrenceHourly": "Hourly", "dxScheduler-recurrenceDaily": "Daily", "dxScheduler-recurrenceWeekly": "Weekly", "dxScheduler-recurrenceMonthly": "Monthly", "dxScheduler-recurrenceYearly": "Yearly", "dxScheduler-recurrenceRepeatEvery": "Repeat Every", "dxScheduler-recurrenceRepeatOn": "Repeat On", "dxScheduler-recurrenceEnd": "End repeat", "dxScheduler-recurrenceAfter": "After", "dxScheduler-recurrenceOn": "On", "dxScheduler-recurrenceUntilDateLabel": "Date when repeat ends", "dxScheduler-recurrenceOccurrenceLabel": "Number of occurrences", "dxScheduler-recurrenceRepeatMinutely": "minute(s)", "dxScheduler-recurrenceRepeatHourly": "hour(s)", "dxScheduler-recurrenceRepeatDaily": "day(s)", "dxScheduler-recurrenceRepeatWeekly": "week(s)", "dxScheduler-recurrenceRepeatMonthly": "month(s)", "dxScheduler-recurrenceRepeatYearly": "year(s)", "dxScheduler-switcherDay": "Day", "dxScheduler-switcherWeek": "Week", "dxScheduler-switcherWorkWeek": "Work Week", "dxScheduler-switcherMonth": "Month", "dxScheduler-switcherAgenda": "Agenda", "dxScheduler-switcherTimelineDay": "Timeline Day", "dxScheduler-switcherTimelineWeek": "Timeline Week", "dxScheduler-switcherTimelineWorkWeek": "Timeline Work Week", "dxScheduler-switcherTimelineMonth": "Timeline Month", "dxScheduler-recurrenceRepeatOnDate": "on date", "dxScheduler-recurrenceRepeatCount": "occurrence(s)", "dxScheduler-allDay": "All day", "dxScheduler-ariaEditForm": "Edit form", "dxScheduler-confirmRecurrenceEditTitle": "Edit Recurring Appointment", "dxScheduler-confirmRecurrenceDeleteTitle": "Delete Recurring Appointment", "dxScheduler-confirmRecurrenceEditMessage": "Do you want to edit only this appointment or the whole series?", "dxScheduler-confirmRecurrenceDeleteMessage": "Do you want to delete only this appointment or the whole series?", "dxScheduler-confirmRecurrenceEditSeries": "Edit series", "dxScheduler-confirmRecurrenceDeleteSeries": "Delete series", "dxScheduler-confirmRecurrenceEditOccurrence": "Edit appointment", "dxScheduler-confirmRecurrenceDeleteOccurrence": "Delete appointment", "dxScheduler-noTimezoneTitle": "No timezone", "dxScheduler-moreAppointments": "{0} more", "dxCalendar-currentDay": "Today", "dxCalendar-currentMonth": "Current month", "dxCalendar-currentYear": "Current year", "dxCalendar-currentYearRange": "Current year range", "dxCalendar-todayButtonText": "Today", "dxCalendar-ariaWidgetName": "Calendar", "dxCalendar-previousMonthButtonLabel": "Previous month", "dxCalendar-previousYearButtonLabel": "Previous year", "dxCalendar-previousDecadeButtonLabel": "Previous decade", "dxCalendar-previousCenturyButtonLabel": "Previous century", "dxCalendar-nextMonthButtonLabel": "Next month", "dxCalendar-nextYearButtonLabel": "Next year", "dxCalendar-nextDecadeButtonLabel": "Next decade", "dxCalendar-nextCenturyButtonLabel": "Next century", "dxCalendar-captionMonthLabel": "Month selection", "dxCalendar-captionYearLabel": "Year selection", "dxCalendar-captionDecadeLabel": "Decade selection", "dxCalendar-captionCenturyLabel": "Century selection", "dxCalendar-selectedDate": "The selected date is {0}", "dxCalendar-selectedDates": "The selected dates", "dxCalendar-selectedDateRange": "The selected date range is from {0} to {1}", "dxCalendar-selectedMultipleDateRange": "from {0} to {1}", "dxCalendar-selectedDateRangeCount": "There are {0} selected date ranges", "dxCalendar-readOnlyLabel": "Read-only calendar", "dxCardView-ariaSearchInGrid": "Search in the card view", "dxCardView-ariaHeaderItemLabel": "Field name {0}", "dxCardView-ariaHeaderItemSortingAscendingLabel": "Sorted in ascending order", "dxCardView-ariaHeaderItemSortingDescendingLabel": "Sorted in descending order", "dxCardView-ariaHeaderItemSortingIndexLabel": "Sort index {0}", "dxCardView-ariaHeaderHasHeaderFilterLabel": "Header filter applied", "dxCardView-ariaSelectCard": "Select card", "dxCardView-ariaCardView": "Card view with {0} cards. Each card has {1} fields", "dxCardView-ariaCard": "Card", "dxCardView-ariaEditableCard": "Editable card", "dxCardView-ariaCardPosition": "Row {0}, column {1}", "dxCardView-ariaSelectedCardState": "Selected", "dxCardView-ariaNotSelectedCardState": "Not selected", "dxCardView-selectAll": "Select all", "dxCardView-clearSelection": "Clear selection", "dxCardView-cardNoImageAriaLabel": "No image", "dxCardView-headerItemDropZoneText": "Drop the header item here", "dxCardView-emptyHeaderPanelText": "Use {0} to display columns", "dxCardView-emptyHeaderPanelColumnChooserText": "column chooser", "dxAvatar-defaultImageAlt": "Avatar", "dxChat-elementAriaLabel": "Chat", "dxChat-textareaPlaceholder": "Type a message", "dxChat-sendButtonAriaLabel": "Send", "dxChat-cancelEditingButtonAriaLabel": "Cancel", "dxChat-editingMessageCaption": "Edit Message", "dxChat-defaultUserName": "Unknown User", "dxChat-messageListAriaLabel": "Message list", "dxChat-alertListAriaLabel": "Error list", "dxChat-emptyListMessage": "There are no messages in this chat", "dxChat-emptyListPrompt": "Write your first message", "dxChat-typingMessageSingleUser": "{0} is typing...", "dxChat-typingMessageTwoUsers": "{0} and {1} are typing...", "dxChat-typingMessageThreeUsers": "{0}, {1} and {2} are typing...", "dxChat-typingMessageMultipleUsers": "{0} and others are typing...", "dxChat-editedMessageText": "Edited", "dxChat-editingEditMessage": "Edit", "dxChat-editingDeleteMessage": "Delete", "dxChat-editingDeleteConfirmText": "Are you sure you want to delete this message?", "dxChat-deletedMessageText": "This message was deleted", "dxChat-defaultImageAlt": "Image shared in chat", "dxColorView-ariaRed": "Red", "dxColorView-ariaGreen": "Green", "dxColorView-ariaBlue": "Blue", "dxColorView-ariaAlpha": "Transparency", "dxColorView-ariaHex": "Color code", "dxTagBox-selected": "{0} selected", "dxTagBox-allSelected": "All selected ({0})", "dxTagBox-moreSelected": "{0} more", "dxTagBox-tagRoleDescription": "Tag. Press the delete button to remove this tag", "dxTagBox-ariaRoleDescription": "Tag box", "vizExport-printingButtonText": "Print", "vizExport-titleMenuText": "Exporting/Printing", "vizExport-exportButtonText": "{0} file", "dxFilterBuilder-and": "And", "dxFilterBuilder-or": "Or", "dxFilterBuilder-notAnd": "Not And", "dxFilterBuilder-notOr": "Not Or", "dxFilterBuilder-addCondition": "Add Condition", "dxFilterBuilder-addGroup": "Add Group", "dxFilterBuilder-enterValueText": "<enter a value>", "dxFilterBuilder-filterOperationEquals": "Equals", "dxFilterBuilder-filterOperationNotEquals": "Does not equal", "dxFilterBuilder-filterOperationLess": "Is less than", "dxFilterBuilder-filterOperationLessOrEquals": "Is less than or equal to", "dxFilterBuilder-filterOperationGreater": "Is greater than", "dxFilterBuilder-filterOperationGreaterOrEquals": "Is greater than or equal to", "dxFilterBuilder-filterOperationStartsWith": "Starts with", "dxFilterBuilder-filterOperationContains": "Contains", "dxFilterBuilder-filterOperationNotContains": "Does not contain", "dxFilterBuilder-filterOperationEndsWith": "Ends with", "dxFilterBuilder-filterOperationIsBlank": "Is blank", "dxFilterBuilder-filterOperationIsNotBlank": "Is not blank", "dxFilterBuilder-filterOperationBetween": "Is between", "dxFilterBuilder-filterOperationAnyOf": "Is any of", "dxFilterBuilder-filterOperationNoneOf": "Is none of", "dxFilterBuilder-filterAriaRootElement": "Filter builder", "dxFilterBuilder-filterAriaGroupLevel": "Level {0}", "dxFilterBuilder-filterAriaGroupItem": "Group item", "dxFilterBuilder-filterAriaOperationButton": "Operation", "dxFilterBuilder-filterAriaAddButton": "Add", "dxFilterBuilder-filterAriaRemoveButton": "Remove {0}", "dxFilterBuilder-filterAriaItemField": "Item field", "dxFilterBuilder-filterAriaItemOperation": "Item operation", "dxFilterBuilder-filterAriaItemValue": "Item value", "dxHtmlEditor-dialogColorCaption": "Change Font Color", "dxHtmlEditor-dialogBackgroundCaption": "Change Background Color", "dxHtmlEditor-dialogLinkCaption": "Add Link", "dxHtmlEditor-dialogLinkUrlField": "URL", "dxHtmlEditor-dialogLinkTextField": "Text", "dxHtmlEditor-dialogLinkTargetField": "Open link in new window", "dxHtmlEditor-dialogImageCaption": "Add Image", "dxHtmlEditor-dialogImageUrlField": "URL", "dxHtmlEditor-dialogImageAltField": "Alternate text", "dxHtmlEditor-dialogImageWidthField": "Width (px)", "dxHtmlEditor-dialogImageHeightField": "Height (px)", "dxHtmlEditor-dialogInsertTableRowsField": "Rows", "dxHtmlEditor-dialogInsertTableColumnsField": "Columns", "dxHtmlEditor-dialogInsertTableCaption": "Insert Table", "dxHtmlEditor-dialogUpdateImageCaption": "Update Image", "dxHtmlEditor-dialogImageUpdateButton": "Update", "dxHtmlEditor-dialogImageAddButton": "Add", "dxHtmlEditor-dialogImageSpecifyUrl": "From the Web", "dxHtmlEditor-dialogImageSelectFile": "From This Device", "dxHtmlEditor-dialogImageKeepAspectRatio": "Keep Aspect Ratio", "dxHtmlEditor-dialogImageEncodeToBase64": "Encode to Base64", "dxHtmlEditor-heading": "Heading", "dxHtmlEditor-normalText": "Normal text", "dxHtmlEditor-background": "Background Color", "dxHtmlEditor-bold": "Bold", "dxHtmlEditor-color": "Font Color", "dxHtmlEditor-font": "Font", "dxHtmlEditor-italic": "Italic", "dxHtmlEditor-link": "Add Link", "dxHtmlEditor-image": "Add Image", "dxHtmlEditor-size": "Size", "dxHtmlEditor-strike": "Strikethrough", "dxHtmlEditor-subscript": "Subscript", "dxHtmlEditor-superscript": "Superscript", "dxHtmlEditor-underline": "Underline", "dxHtmlEditor-blockquote": "Blockquote", "dxHtmlEditor-header": "Header", "dxHtmlEditor-increaseIndent": "Increase Indent", "dxHtmlEditor-decreaseIndent": "Decrease Indent", "dxHtmlEditor-orderedList": "Ordered List", "dxHtmlEditor-bulletList": "Bullet List", "dxHtmlEditor-alignLeft": "Align Left", "dxHtmlEditor-alignCenter": "Align Center", "dxHtmlEditor-alignRight": "Align Right", "dxHtmlEditor-alignJustify": "Align Justify", "dxHtmlEditor-codeBlock": "Code Block", "dxHtmlEditor-variable": "Add Variable", "dxHtmlEditor-undo": "Undo", "dxHtmlEditor-redo": "Redo", "dxHtmlEditor-clear": "Clear Formatting", "dxHtmlEditor-insertTable": "Insert Table", "dxHtmlEditor-insertHeaderRow": "Insert Header Row", "dxHtmlEditor-insertRowAbove": "Insert Row Above", "dxHtmlEditor-insertRowBelow": "Insert Row Below", "dxHtmlEditor-insertColumnLeft": "Insert Column Left", "dxHtmlEditor-insertColumnRight": "Insert Column Right", "dxHtmlEditor-deleteColumn": "Delete Column", "dxHtmlEditor-deleteRow": "Delete Row", "dxHtmlEditor-deleteTable": "Delete Table", "dxHtmlEditor-cellProperties": "Cell Properties", "dxHtmlEditor-tableProperties": "Table Properties", "dxHtmlEditor-insert": "Insert", "dxHtmlEditor-delete": "Delete", "dxHtmlEditor-border": "Border", "dxHtmlEditor-style": "Style", "dxHtmlEditor-width": "Width", "dxHtmlEditor-height": "Height", "dxHtmlEditor-borderColor": "Color", "dxHtmlEditor-borderWidth": "Border Width", "dxHtmlEditor-tableBackground": "Background", "dxHtmlEditor-dimensions": "Dimensions", "dxHtmlEditor-alignment": "Alignment", "dxHtmlEditor-horizontal": "Horizontal", "dxHtmlEditor-vertical": "Vertical", "dxHtmlEditor-paddingVertical": "Vertical Padding", "dxHtmlEditor-paddingHorizontal": "Horizontal Padding", "dxHtmlEditor-pixels": "Pixels", "dxHtmlEditor-list": "List", "dxHtmlEditor-ordered": "Ordered", "dxHtmlEditor-bullet": "Bullet", "dxHtmlEditor-align": "Align", "dxHtmlEditor-center": "Center", "dxHtmlEditor-left": "Left", "dxHtmlEditor-right": "Right", "dxHtmlEditor-indent": "Indent", "dxHtmlEditor-justify": "Justify", "dxHtmlEditor-borderStyleNone": "none", "dxHtmlEditor-borderStyleHidden": "hidden", "dxHtmlEditor-borderStyleDotted": "dotted", "dxHtmlEditor-borderStyleDashed": "dashed", "dxHtmlEditor-borderStyleSolid": "solid", "dxHtmlEditor-borderStyleDouble": "double", "dxHtmlEditor-borderStyleGroove": "groove", "dxHtmlEditor-borderStyleRidge": "ridge", "dxHtmlEditor-borderStyleInset": "inset", "dxHtmlEditor-borderStyleOutset": "outset", "dxHtmlEditor-aiDialogTitle": "AI Assistant", "dxHtmlEditor-aiDialogError": "Something went wrong. Please try again.", "dxHtmlEditor-aiDialogCanceled": "Generation canceled", "dxHtmlEditor-aiReplace": "Replace", "dxHtmlEditor-aiInsertAbove": "Insert above", "dxHtmlEditor-aiInsertBelow": "Insert below", "dxHtmlEditor-aiCopy": "Copy", "dxHtmlEditor-aiRegenerate": "Regenerate", "dxHtmlEditor-aiGenerate": "Generate", "dxHtmlEditor-aiCancel": "Cancel", "dxHtmlEditor-aiToolbarItemAriaLabel": "AI Assistant toolbar item", "dxHtmlEditor-aiResultTextAreaAriaLabel": "AI Assistant result", "dxHtmlEditor-aiAskPlaceholder": "Ask AI to modify text", "dxFileManager-newDirectoryName": "Untitled directory", "dxFileManager-rootDirectoryName": "Files", "dxFileManager-errorNoAccess": "Access Denied. Operation could not be completed.", "dxFileManager-errorDirectoryExistsFormat": "Directory '{0}' already exists.", "dxFileManager-errorFileExistsFormat": "File '{0}' already exists.", "dxFileManager-errorFileNotFoundFormat": "File '{0}' not found.", "dxFileManager-errorDirectoryNotFoundFormat": "Directory '{0}' not found.", "dxFileManager-errorWrongFileExtension": "File extension is not allowed.", "dxFileManager-errorMaxFileSizeExceeded": "File size exceeds the maximum allowed size.", "dxFileManager-errorInvalidSymbols": "This name contains invalid characters.", "dxFileManager-errorDefault": "Unspecified error.", "dxFileManager-errorDirectoryOpenFailed": "The directory cannot be opened", "dxFileManager-commandCreate": "New directory", "dxFileManager-commandRename": "Rename", "dxFileManager-commandMove": "Move to", "dxFileManager-commandCopy": "Copy to", "dxFileManager-commandDelete": "Delete", "dxFileManager-commandDownload": "Download", "dxFileManager-commandUpload": "Upload files", "dxFileManager-commandRefresh": "Refresh", "dxFileManager-commandThumbnails": "Thumbnails View", "dxFileManager-commandDetails": "Details View", "dxFileManager-commandClearSelection": "Clear selection", "dxFileManager-commandShowNavPane": "Toggle navigation pane", "dxFileManager-dialogDirectoryChooserMoveTitle": "Move to", "dxFileManager-dialogDirectoryChooserMoveButtonText": "Move", "dxFileManager-dialogDirectoryChooserCopyTitle": "Copy to", "dxFileManager-dialogDirectoryChooserCopyButtonText": "Copy", "dxFileManager-dialogRenameItemTitle": "Rename", "dxFileManager-dialogRenameItemButtonText": "Save", "dxFileManager-dialogCreateDirectoryTitle": "New directory", "dxFileManager-dialogCreateDirectoryButtonText": "Create", "dxFileManager-dialogDeleteItemTitle": "Delete", "dxFileManager-dialogDeleteItemButtonText": "Delete", "dxFileManager-dialogDeleteItemSingleItemConfirmation": "Are you sure you want to delete {0}?", "dxFileManager-dialogDeleteItemMultipleItemsConfirmation": "Are you sure you want to delete {0} items?", "dxFileManager-dialogButtonCancel": "Cancel", "dxFileManager-editingCreateSingleItemProcessingMessage": "Creating a directory inside {0}", "dxFileManager-editingCreateSingleItemSuccessMessage": "Created a directory inside {0}", "dxFileManager-editingCreateSingleItemErrorMessage": "Directory was not created", "dxFileManager-editingCreateCommonErrorMessage": "Directory was not created", "dxFileManager-editingRenameSingleItemProcessingMessage": "Renaming an item inside {0}", "dxFileManager-editingRenameSingleItemSuccessMessage": "Renamed an item inside {0}", "dxFileManager-editingRenameSingleItemErrorMessage": "Item was not renamed", "dxFileManager-editingRenameCommonErrorMessage": "Item was not renamed", "dxFileManager-editingDeleteSingleItemProcessingMessage": "Deleting an item from {0}", "dxFileManager-editingDeleteMultipleItemsProcessingMessage": "Deleting {0} items from {1}", "dxFileManager-editingDeleteSingleItemSuccessMessage": "Deleted an item from {0}", "dxFileManager-editingDeleteMultipleItemsSuccessMessage": "Deleted {0} items from {1}", "dxFileManager-editingDeleteSingleItemErrorMessage": "Item was not deleted", "dxFileManager-editingDeleteMultipleItemsErrorMessage": "{0} items were not deleted", "dxFileManager-editingDeleteCommonErrorMessage": "Some items were not deleted", "dxFileManager-editingMoveSingleItemProcessingMessage": "Moving an item to {0}", "dxFileManager-editingMoveMultipleItemsProcessingMessage": "Moving {0} items to {1}", "dxFileManager-editingMoveSingleItemSuccessMessage": "Moved an item to {0}", "dxFileManager-editingMoveMultipleItemsSuccessMessage": "Moved {0} items to {1}", "dxFileManager-editingMoveSingleItemErrorMessage": "Item was not moved", "dxFileManager-editingMoveMultipleItemsErrorMessage": "{0} items were not moved", "dxFileManager-editingMoveCommonErrorMessage": "Some items were not moved", "dxFileManager-editingCopySingleItemProcessingMessage": "Copying an item to {0}", "dxFileManager-editingCopyMultipleItemsProcessingMessage": "Copying {0} items to {1}", "dxFileManager-editingCopySingleItemSuccessMessage": "Copied an item to {0}", "dxFileManager-editingCopyMultipleItemsSuccessMessage": "Copied {0} items to {1}", "dxFileManager-editingCopySingleItemErrorMessage": "Item was not copied", "dxFileManager-editingCopyMultipleItemsErrorMessage": "{0} items were not copied", "dxFileManager-editingCopyCommonErrorMessage": "Some items were not copied", "dxFileManager-editingUploadSingleItemProcessingMessage": "Uploading an item to {0}", "dxFileManager-editingUploadMultipleItemsProcessingMessage": "Uploading {0} items to {1}", "dxFileManager-editingUploadSingleItemSuccessMessage": "Uploaded an item to {0}", "dxFileManager-editingUploadMultipleItemsSuccessMessage": "Uploaded {0} items to {1}", "dxFileManager-editingUploadSingleItemErrorMessage": "Item was not uploaded", "dxFileManager-editingUploadMultipleItemsErrorMessage": "{0} items were not uploaded", "dxFileManager-editingUploadCanceledMessage": "Canceled", "dxFileManager-editingDownloadSingleItemErrorMessage": "Item was not downloaded", "dxFileManager-editingDownloadMultipleItemsErrorMessage": "{0} items were not downloaded", "dxFileManager-listDetailsColumnCaptionName": "Name", "dxFileManager-listDetailsColumnCaptionDateModified": "Date Modified", "dxFileManager-listDetailsColumnCaptionFileSize": "File Size", "dxFileManager-listThumbnailsTooltipTextSize": "Size", "dxFileManager-listThumbnailsTooltipTextDateModified": "Date Modified", "dxFileManager-notificationProgressPanelTitle": "Progress", "dxFileManager-notificationProgressPanelEmptyListText": "No operations", "dxFileManager-notificationProgressPanelOperationCanceled": "Canceled", "dxDiagram-categoryGeneral": "General", "dxDiagram-categoryFlowchart": "Flowchart", "dxDiagram-categoryOrgChart": "Org Chart", "dxDiagram-categoryContainers": "Containers", "dxDiagram-categoryCustom": "Custom", "dxDiagram-commandExportToSvg": "Export to SVG", "dxDiagram-commandExportToPng": "Export to PNG", "dxDiagram-commandExportToJpg": "Export to JPEG", "dxDiagram-commandUndo": "Undo", "dxDiagram-commandRedo": "Redo", "dxDiagram-commandFontName": "Font Name", "dxDiagram-commandFontSize": "Font Size", "dxDiagram-commandBold": "Bold", "dxDiagram-commandItalic": "Italic", "dxDiagram-commandUnderline": "Underline", "dxDiagram-commandTextColor": "Font Color", "dxDiagram-commandLineColor": "Line Color", "dxDiagram-commandLineWidth": "Line Width", "dxDiagram-commandLineStyle": "Line Style", "dxDiagram-commandLineStyleSolid": "Solid", "dxDiagram-commandLineStyleDotted": "Dotted", "dxDiagram-commandLineStyleDashed": "Dashed", "dxDiagram-commandFillColor": "Fill Color", "dxDiagram-commandAlignLeft": "Align Left", "dxDiagram-commandAlignCenter": "Align Center", "dxDiagram-commandAlignRight": "Align Right", "dxDiagram-commandConnectorLineType": "Connector Line Type", "dxDiagram-commandConnectorLineStraight": "Straight", "dxDiagram-commandConnectorLineOrthogonal": "Orthogonal", "dxDiagram-commandConnectorLineStart": "Connector Line Start", "dxDiagram-commandConnectorLineEnd": "Connector Line End", "dxDiagram-commandConnectorLineNone": "None", "dxDiagram-commandConnectorLineArrow": "Arrow", "dxDiagram-commandFullscreen": "Full Screen", "dxDiagram-commandUnits": "Units", "dxDiagram-commandPageSize": "Page Size", "dxDiagram-commandPageOrientation": "Page Orientation", "dxDiagram-commandPageOrientationLandscape": "Landscape", "dxDiagram-commandPageOrientationPortrait": "Portrait", "dxDiagram-commandPageColor": "Page Color", "dxDiagram-commandShowGrid": "Show Grid", "dxDiagram-commandSnapToGrid": "Snap to Grid", "dxDiagram-commandGridSize": "Grid Size", "dxDiagram-commandZoomLevel": "Zoom Level", "dxDiagram-commandAutoZoom": "Auto Zoom", "dxDiagram-commandFitToContent": "Fit to Content", "dxDiagram-commandFitToWidth": "Fit to Width", "dxDiagram-commandAutoZoomByContent": "Auto Zoom by Content", "dxDiagram-commandAutoZoomByWidth": "Auto Zoom by Width", "dxDiagram-commandSimpleView": "Simple View", "dxDiagram-commandCut": "Cut", "dxDiagram-commandCopy": "Copy", "dxDiagram-commandPaste": "Paste", "dxDiagram-commandSelectAll": "Select All", "dxDiagram-commandDelete": "Delete", "dxDiagram-commandBringToFront": "Bring to Front", "dxDiagram-commandSendToBack": "Send to Back", "dxDiagram-commandLock": "Lock", "dxDiagram-commandUnlock": "Unlock", "dxDiagram-commandInsertShapeImage": "Insert Image...", "dxDiagram-commandEditShapeImage": "Change Image...", "dxDiagram-commandDeleteShapeImage": "Delete Image", "dxDiagram-commandLayoutLeftToRight": "Left-to-right", "dxDiagram-commandLayoutRightToLeft": "Right-to-left", "dxDiagram-commandLayoutTopToBottom": "Top-to-bottom", "dxDiagram-commandLayoutBottomToTop": "Bottom-to-top", "dxDiagram-unitIn": "in", "dxDiagram-unitCm": "cm", "dxDiagram-unitPx": "px", "dxDiagram-dialogButtonOK": "OK", "dxDiagram-dialogButtonCancel": "Cancel", "dxDiagram-dialogInsertShapeImageTitle": "Insert Image", "dxDiagram-dialogEditShapeImageTitle": "Change Image", "dxDiagram-dialogEditShapeImageSelectButton": "Select image", "dxDiagram-dialogEditShapeImageLabelText": "or drop a file here", "dxDiagram-uiExport": "Export", "dxDiagram-uiProperties": "Properties", "dxDiagram-uiSettings": "Settings", "dxDiagram-uiShowToolbox": "Show Toolbox", "dxDiagram-uiSearch": "Search", "dxDiagram-uiStyle": "Style", "dxDiagram-uiLayout": "Layout", "dxDiagram-uiLayoutTree": "Tree", "dxDiagram-uiLayoutLayered": "Layered", "dxDiagram-uiDiagram": "Diagram", "dxDiagram-uiText": "Text", "dxDiagram-uiObject": "Object", "dxDiagram-uiConnector": "Connector", "dxDiagram-uiPage": "Page", "dxDiagram-shapeText": "Text", "dxDiagram-shapeRectangle": "Rectangle", "dxDiagram-shapeEllipse": "Ellipse", "dxDiagram-shapeCross": "Cross", "dxDiagram-shapeTriangle": "Triangle", "dxDiagram-shapeDiamond": "Diamond", "dxDiagram-shapeHeart": "Heart", "dxDiagram-shapePentagon": "Pentagon", "dxDiagram-shapeHexagon": "Hexagon", "dxDiagram-shapeOctagon": "Octagon", "dxDiagram-shapeStar": "Star", "dxDiagram-shapeArrowLeft": "Left Arrow", "dxDiagram-shapeArrowUp": "Up Arrow", "dxDiagram-shapeArrowRight": "Right Arrow", "dxDiagram-shapeArrowDown": "Down Arrow", "dxDiagram-shapeArrowUpDown": "Up Down Arrow", "dxDiagram-shapeArrowLeftRight": "Left Right Arrow", "dxDiagram-shapeProcess": "Process", "dxDiagram-shapeDecision": "Decision", "dxDiagram-shapeTerminator": "Terminator", "dxDiagram-shapePredefinedProcess": "Predefined Process", "dxDiagram-shapeDocument": "Document", "dxDiagram-shapeMultipleDocuments": "Multiple Documents", "dxDiagram-shapeManualInput": "Manual Input", "dxDiagram-shapePreparation": "Preparation", "dxDiagram-shapeData": "Data", "dxDiagram-shapeDatabase": "Database", "dxDiagram-shapeHardDisk": "Hard Disk", "dxDiagram-shapeInternalStorage": "Internal Storage", "dxDiagram-shapePaperTape": "Paper Tape", "dxDiagram-shapeManualOperation": "Manual Operation", "dxDiagram-shapeDelay": "Delay", "dxDiagram-shapeStoredData": "Stored Data", "dxDiagram-shapeDisplay": "Display", "dxDiagram-shapeMerge": "Merge", "dxDiagram-shapeConnector": "Connector", "dxDiagram-shapeOr": "Or", "dxDiagram-shapeSummingJunction": "Summing Junction", "dxDiagram-shapeContainerDefaultText": "Container", "dxDiagram-shapeVerticalContainer": "Vertical Container", "dxDiagram-shapeHorizontalContainer": "Horizontal Container", "dxDiagram-shapeCardDefaultText": "Person's Name", "dxDiagram-shapeCardWithImageOnLeft": "Card with Image on the Left", "dxDiagram-shapeCardWithImageOnTop": "Card with Image on the Top", "dxDiagram-shapeCardWithImageOnRight": "Card with Image on the Right", "dxGantt-dialogTitle": "Title", "dxGantt-dialogStartTitle": "Start", "dxGantt-dialogEndTitle": "End", "dxGantt-dialogProgressTitle": "Progress", "dxGantt-dialogResourcesTitle": "Resources", "dxGantt-dialogResourceManagerTitle": "Resource Manager", "dxGantt-dialogTaskDetailsTitle": "Task Details", "dxGantt-dialogEditResourceListHint": "Edit Resource List", "dxGantt-dialogEditNoResources": "No resources", "dxGantt-dialogButtonAdd": "Add", "dxGantt-contextMenuNewTask": "New Task", "dxGantt-contextMenuNewSubtask": "New Subtask", "dxGantt-contextMenuDeleteTask": "Delete Task", "dxGantt-contextMenuDeleteDependency": "Delete Dependency", "dxGantt-dialogTaskDeleteConfirmation": "Deleting a task also deletes all its dependencies and subtasks. Are you sure you want to delete this task?", "dxGantt-dialogDependencyDeleteConfirmation": "Are you sure you want to delete the dependency from the task?", "dxGantt-dialogResourcesDeleteConfirmation": "Deleting a resource also deletes it from tasks to which this resource is assigned. Are you sure you want to delete these resources? Resources: {0}", "dxGantt-dialogConstraintCriticalViolationMessage": "The task you are attempting to move is linked to a second task by a dependency relation. This change would conflict with dependency rules. How would you like to proceed?", "dxGantt-dialogConstraintViolationMessage": "The task you are attempting to move is linked to a second task by a dependency relation. How would you like to proceed?", "dxGantt-dialogCancelOperationMessage": "Cancel the operation", "dxGantt-dialogDeleteDependencyMessage": "Delete the dependency", "dxGantt-dialogMoveTaskAndKeepDependencyMessage": "Move the task and keep the dependency", "dxGantt-dialogConstraintCriticalViolationSeveralTasksMessage": "The task you are attempting to move is linked to another tasks by dependency relations. This change would conflict with dependency rules. How would you like to proceed?", "dxGantt-dialogConstraintViolationSeveralTasksMessage": "The task you are attempting to move is linked to another tasks by dependency relations. How would you like to proceed?", "dxGantt-dialogDeleteDependenciesMessage": "Delete the dependency relations", "dxGantt-dialogMoveTaskAndKeepDependenciesMessage": "Move the task and keep the dependencies", "dxGantt-undo": "Undo", "dxGantt-redo": "Redo", "dxGantt-expandAll": "Expand All", "dxGantt-collapseAll": "Collapse All", "dxGantt-addNewTask": "Add New Task", "dxGantt-deleteSelectedTask": "Delete Selected Task", "dxGantt-zoomIn": "Zoom In", "dxGantt-zoomOut": "Zoom Out", "dxGantt-fullScreen": "Full Screen", "dxGantt-quarter": "Q{0}", "dxGantt-sortingAscendingText": "Sort Ascending", "dxGantt-sortingDescendingText": "Sort Descending", "dxGantt-sortingClearText": "Clear Sorting", "dxGantt-showResources": "Show Resources", "dxGantt-showDependencies": "Show Dependencies", "dxGantt-dialogStartDateValidation": "Start date must be after {0}", "dxGantt-dialogEndDateValidation": "End date must be after {0}", "dxGallery-itemName": "Gallery item", "dxMultiView-elementAriaRoleDescription": "MultiView", "dxMultiView-elementAriaLabel": "Use the arrow keys or swipe to navigate between views", "dxMultiView-itemAriaRoleDescription": "View", "dxMultiView-itemAriaLabel": "{0} of {1}", "dxSplitter-resizeHandleAriaLabel": "Split bar", "dxSplitter-resizeHandleAriaRoleDescription": "Separator", "dxStepper-optionalMark": "(Optional)" } } }, 23805: /*!****************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/common/core/localization/globalize/core.js ***! \****************************************************************************************/ function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { var _globalize = _interopRequireDefault(__webpack_require__( /*! globalize */ 87626)); var _core = _interopRequireDefault(__webpack_require__( /*! ../core */ 84109)); var _en = __webpack_require__( /*! ../cldr-data/en */ 61316); var _supplemental = __webpack_require__( /*! ../cldr-data/supplemental */ 99645); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } if (_globalize.default && _globalize.default.load) { if (!_globalize.default.locale()) { _globalize.default.load(_en.enCldr, _supplemental.supplementalCldr); _globalize.default.locale("en") } _core.default.inject({ locale: function(locale) { if (!locale) { return _globalize.default.locale().locale } _globalize.default.locale(locale) } }) } }, 869: /*!********************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/common/core/localization/globalize/currency.js ***! \********************************************************************************************/ function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { var _open_xml_currency_format = _interopRequireDefault(__webpack_require__( /*! ../open_xml_currency_format */ 70832)); __webpack_require__( /*! ./core */ 23805); __webpack_require__( /*! ./number */ 13203); __webpack_require__( /*! ../currency */ 17333); __webpack_require__( /*! globalize/currency */ 87626); var _globalize = _interopRequireDefault(__webpack_require__( /*! globalize */ 87626)); var _common = __webpack_require__( /*! ../../../../common */ 83077); var _number2 = _interopRequireDefault(__webpack_require__( /*! ../number */ 52771)); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } const CURRENCY_STYLES = ["symbol", "accounting"]; if (_globalize.default && _globalize.default.formatCurrency) { if ("en" === _globalize.default.locale().locale) { _globalize.default.locale("en") } const formattersCache = {}; const getFormatter = (currency, format) => { let formatter; let formatCacheKey; if ("object" === typeof format) { formatCacheKey = _globalize.default.locale().locale + ":" + currency + ":" + JSON.stringify(format) } else { formatCacheKey = _globalize.default.locale().locale + ":" + currency + ":" + format } formatter = formattersCache[formatCacheKey]; if (!formatter) { formatter = formattersCache[formatCacheKey] = _globalize.default.currencyFormatter(currency, format) } return formatter }; const globalizeCurrencyLocalization = { _formatNumberCore: function(value, format, formatConfig) { if ("currency" === format) { const currency = formatConfig && formatConfig.currency || (0, _common.config)().defaultCurrency; return getFormatter(currency, this._normalizeFormatConfig(format, formatConfig, value))(value) } return this.callBase.apply(this, arguments) }, _normalizeFormatConfig: function(format, formatConfig, value) { const normalizedConfig = this.callBase(format, formatConfig, value); if ("currency" === format) { const useAccountingStyle = formatConfig.useCurrencyAccountingStyle ?? (0, _common.config)().defaultUseCurrencyAccountingStyle; normalizedConfig.style = CURRENCY_STYLES[+useAccountingStyle] } return normalizedConfig }, format: function(value, format) { if ("number" !== typeof value) { return value } format = this._normalizeFormat(format); if (format) { if ("default" === format.currency) { format.currency = (0, _common.config)().defaultCurrency } if ("currency" === format.type) { return this._formatNumber(value, this._parseNumberFormatString("currency"), format) } else if (!format.type && format.currency) { return getFormatter(format.currency, format)(value) } } return this.callBase.apply(this, arguments) }, getCurrencySymbol: function(currency) { if (!currency) { currency = (0, _common.config)().defaultCurrency } return _globalize.default.cldr.main("numbers/currencies/" + currency) }, getOpenXmlCurrencyFormat: function(currency) { const currencySymbol = this.getCurrencySymbol(currency).symbol; const accountingFormat = _globalize.default.cldr.main("numbers/currencyFormats-numberSystem-latn").accounting; return (0, _open_xml_currency_format.default)(currencySymbol, accountingFormat) } }; _number2.default.inject(globalizeCurrencyLocalization) } }, 99862: /*!****************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/common/core/localization/globalize/date.js ***! \****************************************************************************************/ function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { __webpack_require__( /*! ./core */ 23805); __webpack_require__( /*! ./number */ 13203); __webpack_require__( /*! globalize/date */ 87626); var _globalize = _interopRequireDefault(__webpack_require__( /*! globalize */ 87626)); var _date2 = _interopRequireDefault(__webpack_require__( /*! ../date */ 38662)); var _type = __webpack_require__( /*! ../../../../core/utils/type */ 11528); var iteratorUtils = function(e, r) { if (!r && e && e.__esModule) { return e } if (null === e || "object" != typeof e && "function" != typeof e) { return { default: e } } var t = _getRequireWildcardCache(r); if (t && t.has(e)) { return t.get(e) } var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) { if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u] } } return n.default = e, t && t.set(e, n), n }(__webpack_require__( /*! ../../../../core/utils/iterator */ 21274)); function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) { return null } var r = new WeakMap, t = new WeakMap; return (_getRequireWildcardCache = function(e) { return e ? t : r })(e) } function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } const ACCEPTABLE_JSON_FORMAT_PROPERTIES = ["skeleton", "date", "time", "datetime", "raw"]; const RTL_MARKS_REGEX = /[\u200E\u200F]/g; if (_globalize.default && _globalize.default.formatDate) { if ("en" === _globalize.default.locale().locale) { _globalize.default.locale("en") } const formattersCache = {}; const FORMATS_TO_GLOBALIZE_MAP = { shortdate: { path: "dateTimeFormats/availableFormats/yMd" }, shorttime: { path: "timeFormats/short" }, longdate: { path: "dateFormats/full" }, longtime: { path: "timeFormats/medium" }, monthandday: { path: "dateTimeFormats/availableFormats/MMMMd" }, monthandyear: { path: "dateTimeFormats/availableFormats/yMMMM" }, quarterandyear: { path: "dateTimeFormats/availableFormats/yQQQ" }, day: { path: "dateTimeFormats/availableFormats/d" }, year: { path: "dateTimeFormats/availableFormats/y" }, shortdateshorttime: { path: "dateTimeFormats/short", parts: ["shorttime", "shortdate"] }, longdatelongtime: { path: "dateTimeFormats/medium", parts: ["longtime", "longdate"] }, month: { pattern: "LLLL" }, shortyear: { pattern: "yy" }, dayofweek: { pattern: "EEEE" }, quarter: { pattern: "QQQ" }, millisecond: { pattern: "SSS" }, hour: { pattern: "HH" }, minute: { pattern: "mm" }, second: { pattern: "ss" } }; const globalizeDateLocalization = { engine: function() { return "globalize" }, _getPatternByFormat: function(format) { const that = this; const lowerFormat = format.toLowerCase(); const globalizeFormat = FORMATS_TO_GLOBALIZE_MAP[lowerFormat]; if ("datetime-local" === lowerFormat) { return "yyyy-MM-ddTHH':'mm':'ss" } if (!globalizeFormat) { return } let result = globalizeFormat.path && that._getFormatStringByPath(globalizeFormat.path) || globalizeFormat.pattern; if (globalizeFormat.parts) { iteratorUtils.each(globalizeFormat.parts, ((index, part) => { result = result.replace("{" + index + "}", that._getPatternByFormat(part)) })) } return result }, _getFormatStringByPath: function(path) { return _globalize.default.locale().main("dates/calendars/gregorian/" + path) }, getPeriodNames: function(format, type) { format = format || "wide"; type = "format" === type ? type : "stand-alone"; const json = _globalize.default.locale().main(`dates/calendars/gregorian/dayPeriods/${type}/${format}`); return [json.am, json.pm] }, getMonthNames: function(format, type) { const months = _globalize.default.locale().main("dates/calendars/gregorian/months/" + ("format" === type ? type : "stand-alone") + "/" + (format || "wide")); return iteratorUtils.map(months, (month => month)) }, getDayNames: function(format) { const days = _globalize.default.locale().main("dates/calendars/gregorian/days/stand-alone/" + (format || "wide")); return iteratorUtils.map(days, (day => day)) }, getTimeSeparator: function() { return _globalize.default.locale().main("numbers/symbols-numberSystem-latn/timeSeparator") }, removeRtlMarks: text => text.replace(RTL_MARKS_REGEX, ""), format: function(date, format) { if (!date) { return } if (!format) { return date } let formatter; let formatCacheKey; if ("function" === typeof format) { return format(date) } if (format.formatter) { return format.formatter(date) } format = format.type || format; if ("string" === typeof format) { formatCacheKey = _globalize.default.locale().locale + ":" + format; formatter = formattersCache[formatCacheKey]; if (!formatter) { format = { raw: this._getPatternByFormat(format) || format }; formatter = formattersCache[formatCacheKey] = _globalize.default.dateFormatter(format) } } else { if (!this._isAcceptableFormat(format)) { return } formatter = _globalize.default.dateFormatter(format) } return this.removeRtlMarks(formatter(date)) }, parse: function(text, format) { if (!text) { return } if (!format || "function" === typeof format || (0, _type.isObject)(format) && !this._isAcceptableFormat(format)) { if (format) { const parsedValue = this.callBase(text, format); if (parsedValue) { return parsedValue } } return _globalize.default.parseDate(text) } if (format.parser) { return format.parser(text) } if ("string" === typeof format) { format = { raw: this._getPatternByFormat(format) || format } } const parsedDate = _globalize.default.parseDate(text, format); return parsedDate ? parsedDate : this.callBase(text, format) }, _isAcceptableFormat: function(format) { if (format.parser) { return true } for (let i = 0; i < ACCEPTABLE_JSON_FORMAT_PROPERTIES.length; i++) { if (Object.prototype.hasOwnProperty.call(format, ACCEPTABLE_JSON_FORMAT_PROPERTIES[i])) { return true } } }, firstDayOfWeekIndex: function() { const firstDay = _globalize.default.locale().supplemental.weekData.firstDay(); return this._getDayKeys().indexOf(firstDay) }, _getDayKeys: function() { const days = _globalize.default.locale().main("dates/calendars/gregorian/days/format/short"); return iteratorUtils.map(days, ((day, key) => key)) } }; _date2.default.resetInjection(); _date2.default.inject(globalizeDateLocalization) } }, 84207: /*!*******************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/common/core/localization/globalize/message.js ***! \*******************************************************************************************/ function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { __webpack_require__( /*! ./core */ 23805); var _globalize = _interopRequireDefault(__webpack_require__( /*! globalize */ 87626)); var _message = _interopRequireDefault(__webpack_require__( /*! ../message */ 4671)); var _core2 = _interopRequireDefault(__webpack_require__( /*! ../core */ 84109)); __webpack_require__( /*! globalize/message */ 87626); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } if (_globalize.default && _globalize.default.formatMessage) { const DEFAULT_LOCALE = "en"; const originalLoadMessages = _globalize.default.loadMessages; _globalize.default.loadMessages = messages => { _message.default.load(messages) }; const globalizeMessageLocalization = { engine: function() { return "globalize" }, ctor: function() { this.load(this._dictionary) }, load: function(messages) { this.callBase(messages); originalLoadMessages(messages) }, getMessagesByLocales: function() { return _globalize.default.cldr.get("globalize-messages") }, getFormatter: function(key, locale) { const currentLocale = locale || _core2.default.locale(); let formatter = this._getFormatterBase(key, locale); if (!formatter) { formatter = this._formatterByGlobalize(key, locale) } if (!formatter && currentLocale !== DEFAULT_LOCALE) { formatter = this.getFormatter(key, DEFAULT_LOCALE) } return formatter }, _formatterByGlobalize: function(key, locale) { const currentGlobalize = !locale || locale === _core2.default.locale() ? _globalize.default : new _globalize.default(locale); let result; if (this._messageLoaded(key, locale)) { result = currentGlobalize.messageFormatter(key) } return result }, _messageLoaded: function(key, locale) { const currentCldr = locale ? new _globalize.default(locale).cldr : _globalize.default.locale(); const value = currentCldr.get(["globalize-messages/{bundle}", key]); return !!value }, _loadSingle: function(key, value, locale) { const data = {}; data[locale] = {}; data[locale][key] = value; this.load(data) } }; _message.default.inject(globalizeMessageLocalization) } }, 13203: /*!******************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/common/core/localization/globalize/number.js ***! \******************************************************************************************/ function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { __webpack_require__( /*! ./core */ 23805); var _globalize = _interopRequireDefault(__webpack_require__( /*! globalize */ 87626)); var _number = _interopRequireDefault(__webpack_require__( /*! ../number */ 52771)); var _errors = _interopRequireDefault(__webpack_require__( /*! ../../../../core/errors */ 87129)); __webpack_require__( /*! globalize/number */ 87626); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } if (_globalize.default && _globalize.default.formatNumber) { if ("en" === _globalize.default.locale().locale) { _globalize.default.locale("en") } const formattersCache = {}; const getFormatter = format => { let formatter; let formatCacheKey; if ("object" === typeof format) { formatCacheKey = _globalize.default.locale().locale + ":" + JSON.stringify(format) } else { formatCacheKey = _globalize.default.locale().locale + ":" + format } formatter = formattersCache[formatCacheKey]; if (!formatter) { formatter = formattersCache[formatCacheKey] = _globalize.default.numberFormatter(format) } return formatter }; const globalizeNumberLocalization = { engine: function() { return "globalize" }, _formatNumberCore: function(value, format, formatConfig) { if ("exponential" === format) { return this.callBase.apply(this, arguments) } return getFormatter(this._normalizeFormatConfig(format, formatConfig, value))(value) }, _normalizeFormatConfig: function(format, formatConfig, value) { let config; if ("decimal" === format) { config = { minimumIntegerDigits: formatConfig.precision || 1, useGrouping: false, minimumFractionDigits: 0, maximumFractionDigits: 20, round: value < 0 ? "ceil" : "floor" } } else { config = this._getPrecisionConfig(formatConfig.precision) } if ("percent" === format) { config.style = "percent" } return config }, _getPrecisionConfig: function(precision) { let config; if (null === precision) { config = { minimumFractionDigits: 0, maximumFractionDigits: 20 } } else { config = { minimumFractionDigits: precision || 0, maximumFractionDigits: precision || 0 } } return config }, format: function(value, format) { if ("number" !== typeof value) { return value } format = this._normalizeFormat(format); if (!format || "function" !== typeof format && !format.type && !format.formatter) { return getFormatter(format)(value) } return this.callBase.apply(this, arguments) }, parse: function(text, format) { if (!text) { return } if (format && (format.parser || "string" === typeof format)) { return this.callBase.apply(this, arguments) } if (format) { _errors.default.log("W0011") } let result = _globalize.default.parseNumber(text); if (isNaN(result)) { result = this.callBase.apply(this, arguments) } return result } }; _number.default.resetInjection(); _number.default.inject(globalizeNumberLocalization) } }, 21840: /*!***********************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/common/core/localization/intl/date.js ***! \***********************************************************************************/ function(module, exports, __webpack_require__) { exports.default = void 0; var _extend = __webpack_require__( /*! ../../../../core/utils/extend */ 52576); var _core = (e = __webpack_require__( /*! ../core */ 84109), e && e.__esModule ? e : { default: e }); var e; const SYMBOLS_TO_REMOVE_REGEX = /[\u200E\u200F]/g; const NARROW_NO_BREAK_SPACE_REGEX = /[\u202F]/g; const getIntlFormatter = format => date => { if (!format.timeZoneName) { const year = date.getFullYear(); const recognizableAsTwentyCentury = String(year).length < 3; const safeYearShift = 400; const temporaryYearValue = recognizableAsTwentyCentury ? year + safeYearShift : year; const utcDate = new Date(Date.UTC(temporaryYearValue, date.getMonth(), date.getDate(), date.getHours(), date.getMinutes(), date.getSeconds(), date.getMilliseconds())); if (recognizableAsTwentyCentury) { utcDate.setFullYear(year) } const utcFormat = (0, _extend.extend)({ timeZone: "UTC" }, format); return formatDateTime(utcDate, utcFormat) } return formatDateTime(date, format) }; const formattersCache = {}; const getFormatter = format => { const key = _core.default.locale() + "/" + JSON.stringify(format); if (!formattersCache[key]) { formattersCache[key] = new Intl.DateTimeFormat(_core.default.locale(), format).format } return formattersCache[key] }; function formatDateTime(date, format) { return getFormatter(format)(date).replace(SYMBOLS_TO_REMOVE_REGEX, "").replace(NARROW_NO_BREAK_SPACE_REGEX, " ") } const formatNumber = number => new Intl.NumberFormat(_core.default.locale()).format(number); const getAlternativeNumeralsMap = (() => { const numeralsMapCache = {}; return locale => { if (!(locale in numeralsMapCache)) { if ("0" === formatNumber(0)) { numeralsMapCache[locale] = false; return false } numeralsMapCache[locale] = {}; for (let i = 0; i < 10; ++i) { numeralsMapCache[locale][formatNumber(i)] = i } } return numeralsMapCache[locale] } })(); const normalizeNumerals = dateString => { const alternativeNumeralsMap = getAlternativeNumeralsMap(_core.default.locale()); if (!alternativeNumeralsMap) { return dateString } return dateString.split("").map((sign => sign in alternativeNumeralsMap ? String(alternativeNumeralsMap[sign]) : sign)).join("") }; const removeLeadingZeroes = str => str.replace(/(\D)0+(\d)/g, "$1$2"); const normalizeMonth = text => text.replace("d\u2019", "de "); const intlFormats = { day: { day: "numeric" }, date: { year: "numeric", month: "long", day: "numeric" }, dayofweek: { weekday: "long" }, longdate: { weekday: "long", year: "numeric", month: "long", day: "numeric" }, longdatelongtime: { weekday: "long", year: "numeric", month: "long", day: "numeric", hour: "numeric", minute: "numeric", second: "numeric" }, longtime: { hour: "numeric", minute: "numeric", second: "numeric" }, month: { month: "long" }, monthandday: { month: "long", day: "numeric" }, monthandyear: { year: "numeric", month: "long" }, shortdate: {}, shorttime: { hour: "numeric", minute: "numeric" }, shortyear: { year: "2-digit" }, year: { year: "numeric" } }; Object.defineProperty(intlFormats, "shortdateshorttime", { get: function() { const defaultOptions = Intl.DateTimeFormat(_core.default.locale()).resolvedOptions(); return { year: defaultOptions.year, month: defaultOptions.month, day: defaultOptions.day, hour: "numeric", minute: "numeric" } } }); const monthNameStrategies = { standalone: function(monthIndex, monthFormat) { const date = new Date(1999, monthIndex, 13, 1); const dateString = getIntlFormatter({ month: monthFormat })(date); return dateString }, format: function(monthIndex, monthFormat) { const date = new Date(0, monthIndex, 13, 1); const dateString = normalizeMonth(getIntlFormatter({ day: "numeric", month: monthFormat })(date)); const parts = dateString.split(" ").filter((part => part.indexOf("13") < 0)); if (1 === parts.length) { return parts[0] } else if (2 === parts.length) { return parts[0].length > parts[1].length ? parts[0] : parts[1] } return monthNameStrategies.standalone(monthIndex, monthFormat) } }; exports.default = { engine: function() { return "intl" }, getMonthNames: function(format, type) { const monthFormat = { wide: "long", abbreviated: "short", narrow: "narrow" } [format || "wide"]; type = "format" === type ? type : "standalone"; return Array.apply(null, new Array(12)).map(((_, monthIndex) => monthNameStrategies[type](monthIndex, monthFormat))) }, getDayNames: function(format) { const result = (format => Array.apply(null, new Array(7)).map(((_, dayIndex) => getIntlFormatter({ weekday: format })(new Date(0, 0, dayIndex)))))({ wide: "long", abbreviated: "short", short: "narrow", narrow: "narrow" } [format || "wide"]); return result }, getPeriodNames: function() { const hour12Formatter = getIntlFormatter({ hour: "numeric", hour12: true }); return [1, 13].map((hours => { const hourNumberText = formatNumber(1); const timeParts = hour12Formatter(new Date(0, 0, 1, hours)).split(hourNumberText); if (2 !== timeParts.length) { return "" } const biggerPart = timeParts[0].length > timeParts[1].length ? timeParts[0] : timeParts[1]; return biggerPart.trim() })) }, format: function(date, format) { if (!date) { return } if (!format) { return date } if ("function" !== typeof format && !format.formatter) { format = format.type || format } const intlFormat = (format => "string" === typeof format && intlFormats[format.toLowerCase()])(format); if (intlFormat) { return getIntlFormatter(intlFormat)(date) } const formatType = typeof format; if (format.formatter || "function" === formatType || "string" === formatType) { return this.callBase.apply(this, arguments) } return getIntlFormatter(format)(date) }, parse: function(dateString, format) { let formatter; if (format && !format.parser && "string" === typeof dateString) { dateString = normalizeMonth(dateString); formatter = date => normalizeMonth(this.format(date, format)) } return this.callBase(dateString, formatter || format) }, _parseDateBySimpleFormat: function(dateString, format) { dateString = normalizeNumerals(dateString); const formatParts = this.getFormatParts(format); const dateParts = dateString.split(/\D+/).filter((part => part.length > 0)); if (formatParts.length !== dateParts.length) { return } const dateArgs = this._generateDateArgs(formatParts, dateParts); const constructValidDate = ampmShift => { const parsedDate = ((dateArgs, ampmShift) => { const hoursShift = ampmShift ? 12 : 0; return new Date(dateArgs.year, dateArgs.month, dateArgs.day, (dateArgs.hours + hoursShift) % 24, dateArgs.minutes, dateArgs.seconds) })(dateArgs, ampmShift); if (actual = normalizeNumerals(this.format(parsedDate, format)), expected = dateString, removeLeadingZeroes(actual) === removeLeadingZeroes(expected)) { return parsedDate } var actual, expected }; return constructValidDate(false) || constructValidDate(true) }, _generateDateArgs: function(formatParts, dateParts) { const currentDate = new Date; const dateArgs = { year: currentDate.getFullYear(), month: currentDate.getMonth(), day: currentDate.getDate(), hours: 0, minutes: 0, seconds: 0 }; formatParts.forEach(((formatPart, index) => { const datePart = dateParts[index]; let parsed = parseInt(datePart, 10); if ("month" === formatPart) { parsed -= 1 } dateArgs[formatPart] = parsed })); return dateArgs }, formatUsesMonthName: function(format) { if ("object" === typeof format && !(format.type || format.format)) { return "long" === format.month } return this.callBase.apply(this, arguments) }, formatUsesDayName: function(format) { if ("object" === typeof format && !(format.type || format.format)) { return "long" === format.weekday } return this.callBase.apply(this, arguments) }, getTimeSeparator: function() { return normalizeNumerals(formatDateTime(new Date(2001, 1, 1, 11, 11), { hour: "numeric", minute: "numeric", hour12: false })).replace(/\d/g, "") }, getFormatParts: function(format) { if ("string" === typeof format) { return this.callBase(format) } const intlFormat = (0, _extend.extend)({}, intlFormats[format.toLowerCase()]); const date = new Date(2001, 2, 4, 5, 6, 7); let formattedDate = getIntlFormatter(intlFormat)(date); formattedDate = normalizeNumerals(formattedDate); return [{ name: "year", value: 1 }, { name: "month", value: 3 }, { name: "day", value: 4 }, { name: "hours", value: 5 }, { name: "minutes", value: 6 }, { name: "seconds", value: 7 }].map((part => ({ name: part.name, index: formattedDate.indexOf(part.value) }))).filter((part => part.index > -1)).sort(((a, b) => a.index - b.index)).map((part => part.name)) } }; module.exports = exports.default; module.exports.default = exports.default }, 63265: /*!*************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/common/core/localization/intl/number.js ***! \*************************************************************************************/ function(module, exports, __webpack_require__) { exports.default = void 0; var _common = __webpack_require__( /*! ../../../../common */ 83077); var _core = _interopRequireDefault(__webpack_require__( /*! ../core */ 84109)); var _open_xml_currency_format = _interopRequireDefault(__webpack_require__( /*! ../open_xml_currency_format */ 70832)); var _accounting_formats = _interopRequireDefault(__webpack_require__( /*! ../cldr-data/accounting_formats */ 55581)); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } const CURRENCY_STYLES = ["standard", "accounting"]; const detectCurrencySymbolRegex = /([^\s0]+)?(\s*)0*[.,]*0*(\s*)([^\s0]+)?/; const formattersCache = {}; const getFormatter = format => { const key = _core.default.locale() + "/" + JSON.stringify(format); if (!formattersCache[key]) { formattersCache[key] = new Intl.NumberFormat(_core.default.locale(), format).format } return formattersCache[key] }; exports.default = { engine: function() { return "intl" }, _formatNumberCore: function(value, format, formatConfig) { if ("exponential" === format) { return this.callBase.apply(this, arguments) } return getFormatter(this._normalizeFormatConfig(format, formatConfig, value))(value) }, _normalizeFormatConfig: function(format, formatConfig, value) { let config; if ("decimal" === format) { const fractionDigits = String(value).split(".")[1]; config = { minimumIntegerDigits: formatConfig.precision || void 0, useGrouping: false, maximumFractionDigits: fractionDigits && fractionDigits.length, round: value < 0 ? "ceil" : "floor" } } else { config = this._getPrecisionConfig(formatConfig.precision) } if ("percent" === format) { config.style = "percent" } else if ("currency" === format) { const useAccountingStyle = formatConfig.useCurrencyAccountingStyle ?? (0, _common.config)().defaultUseCurrencyAccountingStyle; config.style = "currency"; config.currency = formatConfig.currency || (0, _common.config)().defaultCurrency; config.currencySign = CURRENCY_STYLES[+useAccountingStyle] } return config }, _getPrecisionConfig: function(precision) { let config; if (null === precision) { config = { minimumFractionDigits: 0, maximumFractionDigits: 20 } } else { config = { minimumFractionDigits: precision || 0, maximumFractionDigits: precision || 0 } } return config }, format: function(value, format) { if ("number" !== typeof value) { return value } format = this._normalizeFormat(format); if ("default" === format.currency) { format.currency = (0, _common.config)().defaultCurrency } if (!format || "function" !== typeof format && !format.type && !format.formatter) { return getFormatter(format)(value) } const result = this.callBase.apply(this, arguments); return result }, _getCurrencySymbolInfo: function(currency) { const formatter = (currency => new Intl.NumberFormat(_core.default.locale(), { style: "currency", currency: currency }))(currency); return this._extractCurrencySymbolInfo(formatter.format(0)) }, _extractCurrencySymbolInfo: function(currencyValueString) { const match = detectCurrencySymbolRegex.exec(currencyValueString) || []; const position = match[1] ? "before" : "after"; const symbol = match[1] || match[4] || ""; const delimiter = match[2] || match[3] || ""; return { position: position, symbol: symbol, delimiter: delimiter } }, getCurrencySymbol: function(currency) { if (!currency) { currency = (0, _common.config)().defaultCurrency } const symbolInfo = this._getCurrencySymbolInfo(currency); return { symbol: symbolInfo.symbol } }, getOpenXmlCurrencyFormat: function(currency) { const targetCurrency = currency || (0, _common.config)().defaultCurrency; const currencySymbol = this._getCurrencySymbolInfo(targetCurrency).symbol; const closestAccountingFormat = _core.default.getValueByClosestLocale((locale => _accounting_formats.default[locale])); return (0, _open_xml_currency_format.default)(currencySymbol, closestAccountingFormat) } }; module.exports = exports.default; module.exports.default = exports.default }, 64333: /*!****************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/common/core/localization/language_codes.js ***! \****************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { exports.getLanguageId = function() { return LANGUAGE_CODES[_core.default.locale()] }; var _core = (e = __webpack_require__( /*! ./core */ 84109), e && e.__esModule ? e : { default: e }); var e; const LANGUAGE_CODES = { ar: 1, bg: 2, ca: 3, "zh-Hans": 4, cs: 5, da: 6, de: 7, el: 8, en: 9, es: 10, fi: 11, fr: 12, he: 13, hu: 14, is: 15, it: 16, ja: 17, ko: 18, nl: 19, no: 20, pl: 21, pt: 22, rm: 23, ro: 24, ru: 25, hr: 26, sk: 27, sq: 28, sv: 29, th: 30, tr: 31, ur: 32, id: 33, uk: 34, be: 35, sl: 36, et: 37, lv: 38, lt: 39, tg: 40, fa: 41, vi: 42, hy: 43, az: 44, eu: 45, hsb: 46, mk: 47, tn: 50, xh: 52, zu: 53, af: 54, ka: 55, fo: 56, hi: 57, mt: 58, se: 59, ga: 60, ms: 62, kk: 63, ky: 64, sw: 65, tk: 66, uz: 67, tt: 68, bn: 69, pa: 70, gu: 71, or: 72, ta: 73, te: 74, kn: 75, ml: 76, as: 77, mr: 78, sa: 79, mn: 80, bo: 81, cy: 82, km: 83, lo: 84, gl: 86, kok: 87, syr: 90, si: 91, iu: 93, am: 94, tzm: 95, ne: 97, fy: 98, ps: 99, fil: 100, dv: 101, ha: 104, yo: 106, quz: 107, nso: 108, ba: 109, lb: 110, kl: 111, ig: 112, ii: 120, arn: 122, moh: 124, br: 126, ug: 128, mi: 129, oc: 130, co: 131, gsw: 132, sah: 133, qut: 134, rw: 135, wo: 136, prs: 140, gd: 145, "ar-SA": 1025, "bg-BG": 1026, "ca-ES": 1027, "zh-TW": 1028, "cs-CZ": 1029, "da-DK": 1030, "de-DE": 1031, "el-GR": 1032, "en-US": 1033, "fi-FI": 1035, "fr-FR": 1036, "he-IL": 1037, "hu-HU": 1038, "is-IS": 1039, "it-IT": 1040, "ja-JP": 1041, "ko-KR": 1042, "nl-NL": 1043, "nb-NO": 1044, "pl-PL": 1045, "pt-BR": 1046, "rm-CH": 1047, "ro-RO": 1048, "ru-RU": 1049, "hr-HR": 1050, "sk-SK": 1051, "sq-AL": 1052, "sv-SE": 1053, "th-TH": 1054, "tr-TR": 1055, "ur-PK": 1056, "id-ID": 1057, "uk-UA": 1058, "be-BY": 1059, "sl-SI": 1060, "et-EE": 1061, "lv-LV": 1062, "lt-LT": 1063, "tg-Cyrl-TJ": 1064, "fa-IR": 1065, "vi-VN": 1066, "hy-AM": 1067, "az-Latn-AZ": 1068, "eu-ES": 1069, "hsb-DE": 1070, "mk-MK": 1071, "tn-ZA": 1074, "xh-ZA": 1076, "zu-ZA": 1077, "af-ZA": 1078, "ka-GE": 1079, "fo-FO": 1080, "hi-IN": 1081, "mt-MT": 1082, "se-NO": 1083, "ms-MY": 1086, "kk-KZ": 1087, "ky-KG": 1088, "sw-KE": 1089, "tk-TM": 1090, "uz-Latn-UZ": 1091, "tt-RU": 1092, "bn-IN": 1093, "pa-IN": 1094, "gu-IN": 1095, "or-IN": 1096, "ta-IN": 1097, "te-IN": 1098, "kn-IN": 1099, "ml-IN": 1100, "as-IN": 1101, "mr-IN": 1102, "sa-IN": 1103, "mn-MN": 1104, "bo-CN": 1105, "cy-GB": 1106, "km-KH": 1107, "lo-LA": 1108, "gl-ES": 1110, "kok-IN": 1111, "syr-SY": 1114, "si-LK": 1115, "iu-Cans-CA": 1117, "am-ET": 1118, "ne-NP": 1121, "fy-NL": 1122, "ps-AF": 1123, "fil-PH": 1124, "dv-MV": 1125, "ha-Latn-NG": 1128, "yo-NG": 1130, "quz-BO": 1131, "nso-ZA": 1132, "ba-RU": 1133, "lb-LU": 1134, "kl-GL": 1135, "ig-NG": 1136, "ii-CN": 1144, "arn-CL": 1146, "moh-CA": 1148, "br-FR": 1150, "ug-CN": 1152, "mi-NZ": 1153, "oc-FR": 1154, "co-FR": 1155, "gsw-FR": 1156, "sah-RU": 1157, "qut-GT": 1158, "rw-RW": 1159, "wo-SN": 1160, "prs-AF": 1164, "gd-GB": 1169, "ar-IQ": 2049, "zh-CN": 2052, "de-CH": 2055, "en-GB": 2057, "es-MX": 2058, "fr-BE": 2060, "it-CH": 2064, "nl-BE": 2067, "nn-NO": 2068, "pt-PT": 2070, "sr-Latn-CS": 2074, "sv-FI": 2077, "az-Cyrl-AZ": 2092, "dsb-DE": 2094, "se-SE": 2107, "ga-IE": 2108, "ms-BN": 2110, "uz-Cyrl-UZ": 2115, "bn-BD": 2117, "mn-Mong-CN": 2128, "iu-Latn-CA": 2141, "tzm-Latn-DZ": 2143, "quz-EC": 2155, "ar-EG": 3073, "zh-HK": 3076, "de-AT": 3079, "en-AU": 3081, "es-ES": 3082, "fr-CA": 3084, "sr-Cyrl-CS": 3098, "se-FI": 3131, "quz-PE": 3179, "ar-LY": 4097, "zh-SG": 4100, "de-LU": 4103, "en-CA": 4105, "es-GT": 4106, "fr-CH": 4108, "hr-BA": 4122, "smj-NO": 4155, "ar-DZ": 5121, "zh-MO": 5124, "de-LI": 5127, "en-NZ": 5129, "es-CR": 5130, "fr-LU": 5132, "bs-Latn-BA": 5146, "smj-SE": 5179, "ar-MA": 6145, "en-IE": 6153, "es-PA": 6154, "fr-MC": 6156, "sr-Latn-BA": 6170, "sma-NO": 6203, "ar-TN": 7169, "en-ZA": 7177, "es-DO": 7178, "sr-Cyrl-BA": 7194, "sma-SE": 7227, "ar-OM": 8193, "en-JM": 8201, "es-VE": 8202, "bs-Cyrl-BA": 8218, "sms-FI": 8251, "ar-YE": 9217, "en-029": 9225, "es-CO": 9226, "sr-Latn-RS": 9242, "smn-FI": 9275, "ar-SY": 10241, "en-BZ": 10249, "es-PE": 10250, "sr-Cyrl-RS": 10266, "ar-JO": 11265, "en-TT": 11273, "es-AR": 11274, "sr-Latn-ME": 11290, "ar-LB": 12289, "en-ZW": 12297, "es-EC": 12298, "sr-Cyrl-ME": 12314, "ar-KW": 13313, "en-PH": 13321, "es-CL": 13322, "ar-AE": 14337, "es-UY": 14346, "ar-BH": 15361, "es-PY": 15370, "ar-QA": 16385, "en-IN": 16393, "es-BO": 16394, "en-MY": 17417, "es-SV": 17418, "en-SG": 18441, "es-HN": 18442, "es-NI": 19466, "es-PR": 20490, "es-US": 21514, "bs-Cyrl": 25626, "bs-Latn": 26650, "sr-Cyrl": 27674, "sr-Latn": 28698, smn: 28731, "az-Cyrl": 29740, sms: 29755, zh: 30724, nn: 30740, bs: 30746, "az-Latn": 30764, sma: 30779, "uz-Cyrl": 30787, "mn-Cyrl": 30800, "iu-Cans": 30813, "zh-Hant": 31748, nb: 31764, sr: 31770, "tg-Cyrl": 31784, dsb: 31790, smj: 31803, "uz-Latn": 31811, "mn-Mong": 31824, "iu-Latn": 31837, "tzm-Latn": 31839, "ha-Latn": 31848 } }, 83445: /*!******************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/common/core/localization/ldml/date.format.js ***! \******************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { exports.getFormat = void 0; var _number = (e = __webpack_require__( /*! ../number */ 52771), e && e.__esModule ? e : { default: e }); var e; const FORMAT_SEPARATORS = " .,:;/\\<>()-[]\u060c"; const checkDigit = function(char) { const code = char && _number.default.convertDigits(char, false).charCodeAt(0); const zeroCode = _number.default.convertDigits("0", false).charCodeAt(0); return zeroCode <= code && code < zeroCode + 10 }; const checkPatternContinue = function(text, patterns, index, isDigit) { const char = text[index]; const nextChar = text[index + 1]; if (!isDigit) { if ("." === char || " " === char && ". m." === text.slice(index - 1, index + 3)) { return true } if ("-" === char && !checkDigit(nextChar)) { return true } } const isDigitChanged = isDigit && patterns.some((pattern => text[index] !== pattern[index])); return FORMAT_SEPARATORS.indexOf(char) < 0 && isDigit === checkDigit(char) && (!isDigit || isDigitChanged) }; const getPatternStartIndex = function(defaultPattern, index) { if (!checkDigit(defaultPattern[index])) { while (index > 0 && !checkDigit(defaultPattern[index - 1]) && ("." === defaultPattern[index - 1] || FORMAT_SEPARATORS.indexOf(defaultPattern[index - 1]) < 0)) { index-- } } return index }; const formatValue = function(value, formatter) { if (Array.isArray(value)) { return value.map((function(value) { return (formatter(value) || "").toString() })) } return (formatter(value) || "").toString() }; const ESCAPE_CHARS_REGEXP = /[a-zA-Z]/g; exports.getFormat = function(formatter) { const processedIndexes = []; const defaultPattern = formatValue(new Date(2009, 8, 8, 6, 5, 4), formatter); const patternPositions = defaultPattern.split("").map((function(_, index) { return index })); let result = defaultPattern; const replacedPatterns = {}; const datePatterns = [{ date: new Date(2009, 8, 8, 6, 5, 4, 111), pattern: "S" }, { date: new Date(2009, 8, 8, 6, 5, 2), pattern: "s" }, { date: new Date(2009, 8, 8, 6, 2, 4), pattern: "m" }, { date: new Date(2009, 8, 8, 18, 5, 4), pattern: "H", isDigit: true }, { date: new Date(2009, 8, 8, 2, 5, 4), pattern: "h", isDigit: true }, { date: new Date(2009, 8, 8, 18, 5, 4), pattern: "a", isDigit: false }, { date: new Date(2009, 8, 1, 6, 5, 4), pattern: "d" }, { date: [new Date(2009, 8, 2, 6, 5, 4), new Date(2009, 8, 3, 6, 5, 4), new Date(2009, 8, 4, 6, 5, 4)], pattern: "E" }, { date: new Date(2009, 9, 6, 6, 5, 4), pattern: "M" }, { date: new Date(1998, 8, 8, 6, 5, 4), pattern: "y" }]; if (!result) { return } datePatterns.forEach((function(test) { const diff = function(defaultPattern, patterns, processedIndexes, isDigit) { let i = 0; const result = []; const patternsFilter = function(pattern) { return defaultPattern[i] !== pattern[i] && (void 0 === isDigit || checkDigit(defaultPattern[i]) === isDigit) }; if (!Array.isArray(patterns)) { patterns = [patterns] } for (i = 0; i < defaultPattern.length; i++) { if (processedIndexes.indexOf(i) < 0 && patterns.filter(patternsFilter).length) { i = getPatternStartIndex(defaultPattern, i); do { isDigit = checkDigit(defaultPattern[i]); if (!result.length && !isDigit && checkDigit(patterns[0][i])) { break } result.push(i); processedIndexes.unshift(i); i++ } while (defaultPattern[i] && checkPatternContinue(defaultPattern, patterns, i, isDigit)); break } } if (1 === result.length && ("0" === defaultPattern[processedIndexes[0] - 1] || "\u0660" === defaultPattern[processedIndexes[0] - 1])) { processedIndexes.unshift(processedIndexes[0] - 1) } return result }(defaultPattern, formatValue(test.date, formatter), processedIndexes, test.isDigit); const pattern = "M" === test.pattern && !replacedPatterns.d ? "L" : test.pattern; result = function(pattern, indexes, char, patternPositions) { let i; let index; let patternIndex; if (!checkDigit(pattern[indexes[0]] || "0")) { const letterCount = Math.max(indexes.length <= 3 ? 3 : 4, char.length); while (indexes.length > letterCount) { index = indexes.pop(); patternIndex = patternPositions[index]; patternPositions[index] = -1; for (i = index + 1; i < patternPositions.length; i++) { patternPositions[i]-- } pattern = pattern.substr(0, patternIndex) + pattern.substr(patternIndex + 1) } index = indexes[indexes.length - 1] + 1, patternIndex = index < patternPositions.length ? patternPositions[index] : index; while (indexes.length < letterCount) { indexes.push(indexes[indexes.length - 1] + 1); for (i = index; i < patternPositions.length; i++) { patternPositions[i]++ } pattern = pattern.substr(0, patternIndex) + " " + pattern.substr(patternIndex) } } pattern = function(pattern, indexes, char, patternPositions) { const baseCharIndex = indexes[0]; const patternIndex = baseCharIndex < patternPositions.length ? patternPositions[baseCharIndex] : baseCharIndex; indexes.forEach((function(_, index) { pattern = pattern.substr(0, patternIndex + index) + (char.length > 1 ? char[index] : char) + pattern.substr(patternIndex + index + 1) })); if (1 === indexes.length) { pattern = pattern.replace("0" + char, char + char); pattern = pattern.replace("\u0660" + char, char + char) } return pattern }(pattern, indexes, char, patternPositions); return pattern }(result, diff, pattern, patternPositions); replacedPatterns[pattern] = diff.length })); result = function(pattern, defaultPattern, processedIndexes, patternPositions) { const escapeIndexes = defaultPattern.split("").map((function(char, index) { if (processedIndexes.indexOf(index) < 0 && (char.match(ESCAPE_CHARS_REGEXP) || "'" === char)) { return patternPositions[index] } return -1 })); pattern = pattern.split("").map((function(char, index) { let result = char; const isCurrentCharEscaped = escapeIndexes.indexOf(index) >= 0; const isPrevCharEscaped = index > 0 && escapeIndexes.indexOf(index - 1) >= 0; const isNextCharEscaped = escapeIndexes.indexOf(index + 1) >= 0; if (isCurrentCharEscaped) { if (!isPrevCharEscaped) { result = "'" + result } if (!isNextCharEscaped) { result += "'" } } return result })).join(""); return pattern }(result, defaultPattern, processedIndexes, patternPositions); if (processedIndexes.length) { return result } } }, 86670: /*!*********************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/common/core/localization/ldml/date.formatter.js ***! \*********************************************************************************************/ function(__unused_webpack_module, exports) { exports.getFormatter = void 0; function leftPad(text, length) { while (text.length < length) { text = "0" + text } return text } const FORMAT_TYPES = { 3: "abbreviated", 4: "wide", 5: "narrow" }; const LDML_FORMATTERS = { y: function(date, count, useUtc) { let year = date[useUtc ? "getUTCFullYear" : "getFullYear"](); if (2 === count) { year %= 100 } return leftPad(year.toString(), count) }, M: function(date, count, useUtc, dateParts) { const month = date[useUtc ? "getUTCMonth" : "getMonth"](); const formatType = FORMAT_TYPES[count]; if (formatType) { return dateParts.getMonthNames(formatType, "format")[month] } return leftPad((month + 1).toString(), Math.min(count, 2)) }, L: function(date, count, useUtc, dateParts) { const month = date[useUtc ? "getUTCMonth" : "getMonth"](); const formatType = FORMAT_TYPES[count]; if (formatType) { return dateParts.getMonthNames(formatType, "standalone")[month] } return leftPad((month + 1).toString(), Math.min(count, 2)) }, Q: function(date, count, useUtc, dateParts) { const month = date[useUtc ? "getUTCMonth" : "getMonth"](); const quarter = Math.floor(month / 3); const formatType = FORMAT_TYPES[count]; if (formatType) { return dateParts.getQuarterNames(formatType)[quarter] } return leftPad((quarter + 1).toString(), Math.min(count, 2)) }, E: function(date, count, useUtc, dateParts) { const day = date[useUtc ? "getUTCDay" : "getDay"](); const formatType = FORMAT_TYPES[count < 3 ? 3 : count]; return dateParts.getDayNames(formatType)[day] }, a: function(date, count, useUtc, dateParts) { const hours = date[useUtc ? "getUTCHours" : "getHours"](); const period = hours < 12 ? 0 : 1; const formatType = FORMAT_TYPES[count]; return dateParts.getPeriodNames(formatType)[period] }, d: function(date, count, useUtc) { return leftPad(date[useUtc ? "getUTCDate" : "getDate"]().toString(), Math.min(count, 2)) }, H: function(date, count, useUtc) { return leftPad(date[useUtc ? "getUTCHours" : "getHours"]().toString(), Math.min(count, 2)) }, h: function(date, count, useUtc) { const hours = date[useUtc ? "getUTCHours" : "getHours"](); return leftPad((hours % 12 || 12).toString(), Math.min(count, 2)) }, m: function(date, count, useUtc) { return leftPad(date[useUtc ? "getUTCMinutes" : "getMinutes"]().toString(), Math.min(count, 2)) }, s: function(date, count, useUtc) { return leftPad(date[useUtc ? "getUTCSeconds" : "getSeconds"]().toString(), Math.min(count, 2)) }, S: function(date, count, useUtc) { return leftPad(date[useUtc ? "getUTCMilliseconds" : "getMilliseconds"]().toString(), 3).substr(0, count) }, x: function(date, count, useUtc) { const timezoneOffset = useUtc ? 0 : date.getTimezoneOffset(); const signPart = timezoneOffset > 0 ? "-" : "+"; const timezoneOffsetAbs = Math.abs(timezoneOffset); const hours = Math.floor(timezoneOffsetAbs / 60); const minutes = timezoneOffsetAbs % 60; const hoursPart = leftPad(hours.toString(), 2); const minutesPart = leftPad(minutes.toString(), 2); return signPart + hoursPart + (count >= 3 ? ":" : "") + (count > 1 || minutes ? minutesPart : "") }, X: function(date, count, useUtc) { if (useUtc || !date.getTimezoneOffset()) { return "Z" } return LDML_FORMATTERS.x(date, count, useUtc) }, Z: function(date, count, useUtc) { return LDML_FORMATTERS.X(date, count >= 5 ? 3 : 2, useUtc) } }; exports.getFormatter = function(format, dateParts) { return function(date) { let charIndex; let formatter; let char; let charCount = 0; let isEscaping = false; let isCurrentCharEqualsNext; let result = ""; if (!date) { return null } if (!format) { return date } const useUtc = "Z" === format[format.length - 1] || "'Z'" === format.slice(-3); for (charIndex = 0; charIndex < format.length; charIndex++) { char = format[charIndex]; formatter = LDML_FORMATTERS[char]; isCurrentCharEqualsNext = char === format[charIndex + 1]; charCount++; if (!isCurrentCharEqualsNext) { if (formatter && !isEscaping) { result += formatter(date, charCount, useUtc, dateParts) } charCount = 0 } if ("'" === char && !isCurrentCharEqualsNext) { isEscaping = !isEscaping } else if (isEscaping || !formatter) { result += char } if ("'" === char && isCurrentCharEqualsNext) { charIndex++ } } return result } } }, 46981: /*!******************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/common/core/localization/ldml/date.parser.js ***! \******************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { exports.isPossibleForParsingFormat = exports.getRegExpInfo = exports.getPatternSetters = exports.getParser = void 0; var _common = __webpack_require__( /*! ../../../../core/utils/common */ 17781); var _console = __webpack_require__( /*! ../../../../core/utils/console */ 31951); const FORMAT_TYPES = { 3: "abbreviated", 4: "wide", 5: "narrow" }; const monthRegExpGenerator = function(count, dateParts) { if (count > 2) { return Object.keys(FORMAT_TYPES).map((function(count) { return ["format", "standalone"].map((function(type) { return dateParts.getMonthNames(FORMAT_TYPES[count], type).join("|") })).join("|") })).join("|") } return 2 === count ? "1[012]|0?[1-9]" : "0??[1-9]|1[012]" }; const PATTERN_REGEXPS = { ":": function(count, dateParts) { const countSuffix = count > 1 ? `{${count}}` : ""; let timeSeparator = (0, _common.escapeRegExp)(dateParts.getTimeSeparator()); ":" !== timeSeparator && (timeSeparator = `${timeSeparator}|:`); return `${timeSeparator}${countSuffix}` }, y: function(count) { return 2 === count ? `[0-9]{${count}}` : "[0-9]+?" }, M: monthRegExpGenerator, L: monthRegExpGenerator, Q: function(count, dateParts) { if (count > 2) { return dateParts.getQuarterNames(FORMAT_TYPES[count], "format").join("|") } return "0?[1-4]" }, E: function(count, dateParts) { return "\\D*" }, a: function(count, dateParts) { return dateParts.getPeriodNames(FORMAT_TYPES[count < 3 ? 3 : count], "format").join("|") }, d: function(count) { return 2 === count ? "3[01]|[12][0-9]|0?[1-9]" : "0??[1-9]|[12][0-9]|3[01]" }, H: function(count) { return 2 === count ? "2[0-3]|1[0-9]|0?[0-9]" : "0??[0-9]|1[0-9]|2[0-3]" }, h: function(count) { return 2 === count ? "1[012]|0?[1-9]" : "0??[1-9]|1[012]" }, m: function(count) { return 2 === count ? "[1-5][0-9]|0?[0-9]" : "0??[0-9]|[1-5][0-9]" }, s: function(count) { return 2 === count ? "[1-5][0-9]|0?[0-9]" : "0??[0-9]|[1-5][0-9]" }, S: function(count) { return `[0-9]{1,${count}}` }, w: function(count) { return 2 === count ? "[1-5][0-9]|0?[0-9]" : "0??[0-9]|[1-5][0-9]" }, x: function(count) { return 3 === count ? "[+-](?:2[0-3]|[01][0-9]):(?:[0-5][0-9])|Z" : "[+-](?:2[0-3]|[01][0-9])(?:[0-5][0-9])|Z" } }; const parseNumber = Number; const caseInsensitiveIndexOf = function(array, value) { return array.map((item => item.toLowerCase())).indexOf(value.toLowerCase()) }; const monthPatternParser = function(text, count, dateParts) { if (count > 2) { return ["format", "standalone"].map((function(type) { return Object.keys(FORMAT_TYPES).map((function(count) { const monthNames = dateParts.getMonthNames(FORMAT_TYPES[count], type); return caseInsensitiveIndexOf(monthNames, text) })) })).reduce((function(a, b) { return a.concat(b) })).filter((function(index) { return index >= 0 }))[0] } return parseNumber(text) - 1 }; const PATTERN_PARSERS = { y: function(text, count) { const year = parseNumber(text); if (2 === count) { return year < 30 ? 2e3 + year : 1900 + year } return year }, M: monthPatternParser, L: monthPatternParser, Q: function(text, count, dateParts) { if (count > 2) { return dateParts.getQuarterNames(FORMAT_TYPES[count], "format").indexOf(text) } return parseNumber(text) - 1 }, E: function(text, count, dateParts) { const dayNames = dateParts.getDayNames(FORMAT_TYPES[count < 3 ? 3 : count], "format"); return caseInsensitiveIndexOf(dayNames, text) }, a: function(text, count, dateParts) { const periodNames = dateParts.getPeriodNames(FORMAT_TYPES[count < 3 ? 3 : count], "format"); return caseInsensitiveIndexOf(periodNames, text) }, d: parseNumber, H: parseNumber, h: parseNumber, m: parseNumber, s: parseNumber, S: function(text, count) { count = Math.max(count, 3); text = text.slice(0, 3); while (count < 3) { text += "0"; count++ } return parseNumber(text) } }; const ORDERED_PATTERNS = ["y", "M", "d", "h", "m", "s", "S"]; const PATTERN_SETTERS = { y: "setFullYear", M: "setMonth", L: "setMonth", a: function(date, value, datePartValues) { let hours = date.getHours(); const hourPartValue = datePartValues.h; if (void 0 !== hourPartValue && hourPartValue !== hours) { hours-- } if (!value && 12 === hours) { hours = 0 } else if (value && 12 !== hours) { hours += 12 } date.setHours(hours) }, d: "setDate", H: "setHours", h: "setHours", m: "setMinutes", s: "setSeconds", S: "setMilliseconds" }; const getSameCharCount = function(text, index) { const char = text[index]; if (!char) { return 0 } let count = 0; do { index++; count++ } while (text[index] === char); return count }; const createPattern = function(char, count) { let result = ""; for (let i = 0; i < count; i++) { result += char } return result }; const getRegExpInfo = function(format, dateParts) { let regexpText = ""; let stubText = ""; let isEscaping; const patterns = []; const addPreviousStub = function() { if (stubText) { patterns.push(`'${stubText}'`); regexpText += `${(0,_common.escapeRegExp)(stubText)})`; stubText = "" } }; for (let i = 0; i < format.length; i++) { const char = format[i]; const isEscapeChar = "'" === char; const regexpPart = PATTERN_REGEXPS[char]; if (isEscapeChar) { isEscaping = !isEscaping; if ("'" !== format[i - 1]) { continue } } if (regexpPart && !isEscaping) { const count = getSameCharCount(format, i); const pattern = createPattern(char, count); addPreviousStub(); patterns.push(pattern); regexpText += `(${regexpPart(count,dateParts)})`; i += count - 1 } else { if (!stubText) { regexpText += "(" } stubText += char } } addPreviousStub(); if (!isPossibleForParsingFormat(patterns)) { _console.logger.warn(`The following format may be parsed incorrectly: ${format}.`) } return { patterns: patterns, regexp: new RegExp(`^${regexpText}$`, "i") } }; exports.getRegExpInfo = getRegExpInfo; const digitFieldSymbols = ["d", "H", "h", "m", "s", "w", "M", "L", "Q"]; const isPossibleForParsingFormat = function(patterns) { const isDigitPattern = pattern => { if (!pattern) { return false } const char = pattern[0]; return ["y", "S"].includes(char) || digitFieldSymbols.includes(char) && pattern.length < 3 }; let possibleForParsing = true; let ambiguousDigitPatternsCount = 0; return patterns.every(((pattern, index, patterns) => { if (isDigitPattern(pattern)) { if ((pattern => "S" !== pattern[0] && 2 !== pattern.length)(pattern)) { possibleForParsing = ++ambiguousDigitPatternsCount < 2 } if (!isDigitPattern(patterns[index + 1])) { ambiguousDigitPatternsCount = 0 } } return possibleForParsing })) }; exports.isPossibleForParsingFormat = isPossibleForParsingFormat; exports.getPatternSetters = function() { return PATTERN_SETTERS }; exports.getParser = function(format, dateParts) { const regExpInfo = getRegExpInfo(format, dateParts); return function(text) { const regExpResult = regExpInfo.regexp.exec(text); if (regExpResult) { const now = new Date; const date = new Date(now.getFullYear(), 0, 1); const formatPatterns = (fullPatterns = regExpInfo.patterns, fullPatterns.map((function(pattern) { if ("'" === pattern[0]) { return "" } else { return "H" === pattern[0] ? "h" : pattern[0] } }))); const maxPatternIndex = function(patterns) { const indexes = patterns.map((function(pattern) { return ORDERED_PATTERNS.indexOf(pattern) })); return Math.max.apply(Math, indexes) }(formatPatterns); const orderedFormatPatterns = function(formatPatterns) { const otherPatterns = formatPatterns.filter((function(pattern) { return ORDERED_PATTERNS.indexOf(pattern) < 0 })); return ORDERED_PATTERNS.concat(otherPatterns) }(formatPatterns); const datePartValues = {}; orderedFormatPatterns.forEach((function(pattern, index) { if (!pattern || index < ORDERED_PATTERNS.length && index > maxPatternIndex) { return } const patternIndex = formatPatterns.indexOf(pattern); if (patternIndex >= 0) { const regExpPattern = regExpInfo.patterns[patternIndex]; const regExpText = regExpResult[patternIndex + 1]; ! function(date, pattern, text, dateParts, datePartValues) { const patternChar = pattern[0]; const partSetter = PATTERN_SETTERS[patternChar]; const partParser = PATTERN_PARSERS[patternChar]; if (partSetter && partParser) { const value = partParser(text, pattern.length, dateParts); datePartValues[pattern] = value; if (date[partSetter]) { date[partSetter](value) } else { partSetter(date, value, datePartValues) } } }(date, regExpPattern, regExpText, dateParts, datePartValues) } else { ! function(date, pattern, now) { const setterName = PATTERN_SETTERS[pattern]; const getterName = "g" + setterName.substr(1); const value = now[getterName](); date[setterName](value) }(date, pattern, now) } })); return date } var fullPatterns; return null } } }, 33687: /*!*************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/common/core/localization/ldml/number.js ***! \*************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { exports.getFormat = function(formatter) { let valueText = "."; const isPercent = formatter(1).indexOf("100") >= 0; valueText = prepareValueText(valueText, formatter, isPercent, true); valueText = prepareValueText(valueText, formatter, isPercent, false); const positiveFormat = getFormatByValueText(valueText, formatter, isPercent, false); const negativeFormat = getFormatByValueText(valueText, formatter, isPercent, true); return negativeFormat === "-" + positiveFormat ? positiveFormat : positiveFormat + ";" + negativeFormat }; exports.getFormatter = function(format, config) { config = config || DEFAULT_CONFIG; return function(value) { if ("number" !== typeof value || isNaN(value)) { return "" } const signFormatParts = function(format) { const signParts = function(format) { let separatorChar = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : ";"; let escapingChar = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : ESCAPING_CHAR; const parts = []; let currentPart = ""; let state = "searchingSeparator"; for (let i = 0; i < format.length; i++) { const char = format[i]; if ("searchingSeparator" === state && char === escapingChar) { state = "skippingSeparationInsideEscaping" } else if ("skippingSeparationInsideEscaping" === state && char === escapingChar) { state = "searchingSeparator" } else if ("searchingSeparator" === state && char === separatorChar) { state = "separating"; parts.push(currentPart); currentPart = "" } if ("separating" !== state) { currentPart += char } else { state = "searchingSeparator" } } parts.push(currentPart); return parts }(format); if (1 === signParts.length) { signParts.push("-" + signParts[0]) } return signParts }(format); const isPositiveZero = 1 / value === 1 / 0; const isPositive = value > 0 || isPositiveZero; const numberFormat = signFormatParts[isPositive ? 0 : 1]; const floatPointIndex = function(format) { let isEscape = false; for (let index = 0; index < format.length; index++) { if ("'" === format[index]) { isEscape = !isEscape } if ("." === format[index] && !isEscape) { return index } } return format.length }(numberFormat); const floatFormatParts = [numberFormat.substr(0, floatPointIndex), numberFormat.substr(floatPointIndex + 1)]; const minFloatPrecision = getRequiredDigitCount(floatFormatParts[1]); const maxFloatPrecision = minFloatPrecision + getNonRequiredDigitCount(floatFormatParts[1]); if (function(format) { return -1 !== format.indexOf("%") && !format.match(/'[^']*%[^']*'/g) }(numberFormat)) { value = (0, _math.multiplyInExponentialForm)(value, PERCENT_EXPONENT_SHIFT) } if (!isPositive) { value = -value } const minIntegerPrecision = getRequiredDigitCount(floatFormatParts[0]); const maxIntegerPrecision = getNonRequiredDigitCount(floatFormatParts[0]) || config.unlimitedIntegerDigits ? void 0 : minIntegerPrecision; const integerLength = Math.floor(value).toString().length; const floatPrecision = (0, _math.fitIntoRange)(maxFloatPrecision, 0, MAXIMUM_NUMBER_LENGTH - integerLength); const groupSizes = (formatString = floatFormatParts[0], formatString.split(",").slice(1).map((function(str) { let singleQuotesLeft = 0; return str.split("").filter((function(char, index) { singleQuotesLeft += "'" === char; const isDigit = "#" === char || "0" === char; const isInStub = singleQuotesLeft % 2; return isDigit && !isInStub })).length }))).reverse(); var formatString; const valueParts = (0, _utils.toFixed)(value, floatPrecision < 0 ? 0 : floatPrecision).split("."); let valueIntegerPart = normalizeValueString(reverseString(valueParts[0]), minIntegerPrecision, maxIntegerPrecision); const valueFloatPart = normalizeValueString(valueParts[1], minFloatPrecision, maxFloatPrecision); valueIntegerPart = function(valueString, groupSizes, thousandsSeparator) { if (!groupSizes.length) { return valueString } const groups = []; let index = 0; while (valueString) { const groupSize = groupSizes[index]; if (!groupSize) { break } groups.push(valueString.slice(0, groupSize)); valueString = valueString.slice(groupSize); if (index < groupSizes.length - 1) { index++ } } return groups.join(thousandsSeparator) }(valueIntegerPart, groupSizes, config.thousandsSeparator); const integerString = reverseString(formatNumberPart(reverseString(floatFormatParts[0]), valueIntegerPart)); const floatString = maxFloatPrecision ? formatNumberPart(floatFormatParts[1], valueFloatPart) : ""; const result = integerString + (floatString.match(/\d/) ? config.decimalSeparator : "") + floatString; return result } }; var _math = __webpack_require__( /*! ../../../../core/utils/math */ 50254); var _utils = __webpack_require__( /*! ../utils */ 57181); const DEFAULT_CONFIG = { thousandsSeparator: ",", decimalSeparator: "." }; const ESCAPING_CHAR = "'"; const MAXIMUM_NUMBER_LENGTH = 15; const PERCENT_EXPONENT_SHIFT = 2; function reverseString(str) { return str.toString().split("").reverse().join("") } function removeStubs(str) { return str.replace(/'[^']*'/g, "") } function getNonRequiredDigitCount(floatFormat) { if (!floatFormat) { return 0 } const format = removeStubs(floatFormat); return format.length - format.replace(/[#]/g, "").length } function getRequiredDigitCount(floatFormat) { if (!floatFormat) { return 0 } const format = removeStubs(floatFormat); return format.length - format.replace(/[0]/g, "").length } function normalizeValueString(valuePart, minDigitCount, maxDigitCount) { if (!valuePart) { return "" } if (valuePart.length > maxDigitCount) { valuePart = valuePart.substr(0, maxDigitCount) } while (valuePart.length > minDigitCount && "0" === valuePart.slice(-1)) { valuePart = valuePart.substr(0, valuePart.length - 1) } while (valuePart.length < minDigitCount) { valuePart += "0" } return valuePart } function formatNumberPart(format, valueString) { return format.split(ESCAPING_CHAR).map((function(formatPart, escapeIndex) { const isEscape = escapeIndex % 2; if (!formatPart && isEscape) { return ESCAPING_CHAR } return isEscape ? formatPart : formatPart.replace(/[,#0]+/, valueString) })).join("") } function parseValue(text, isPercent, isNegative) { const value = (isPercent ? .01 : 1) * parseFloat(text) || 0; return isNegative ? -value : value } function prepareValueText(valueText, formatter, isPercent, isIntegerPart) { let nextValueText = valueText; let char; let text; let nextText; do { if (nextText) { char = text.length === nextText.length ? "0" : "1"; valueText = isIntegerPart ? char + valueText : valueText + char } text = nextText || formatter(parseValue(nextValueText, isPercent)); nextValueText = isIntegerPart ? "1" + nextValueText : nextValueText + "1"; nextText = formatter(parseValue(nextValueText, isPercent)) } while (text !== nextText && (isIntegerPart ? text.length === nextText.length : text.length <= nextText.length)); if (isIntegerPart && nextText.length > text.length) { const hasGroups = -1 === formatter(12345).indexOf("12345"); do { valueText = "1" + valueText } while (hasGroups && parseValue(valueText, isPercent) < 1e5) } return valueText } function getFormatByValueText(valueText, formatter, isPercent, isNegative) { let format = formatter(parseValue(valueText, isPercent, isNegative)); const valueTextParts = valueText.split("."); const valueTextWithModifiedFloat = valueTextParts[0] + ".3" + valueTextParts[1].slice(1); const valueWithModifiedFloat = parseValue(valueTextWithModifiedFloat, isPercent, isNegative); const decimalSeparatorIndex = formatter(valueWithModifiedFloat).indexOf("3") - 1; format = format.replace(/(\d)\D(\d)/g, "$1,$2"); if (decimalSeparatorIndex >= 0) { format = format.slice(0, decimalSeparatorIndex) + "." + format.slice(decimalSeparatorIndex + 1) } format = format.replace(/1+/, "1").replace(/1/g, "#"); if (!isPercent) { format = format.replace(/%/g, "'%'") } return format } }, 4671: /*!*********************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/common/core/localization/message.js ***! \*********************************************************************************/ function(module, exports, __webpack_require__) { exports.default = void 0; var _dependency_injector = _interopRequireDefault(__webpack_require__( /*! ../../../core/utils/dependency_injector */ 89656)); var _extend = __webpack_require__( /*! ../../../core/utils/extend */ 52576); var _string = __webpack_require__( /*! ../../../core/utils/string */ 54497); var _inflector = __webpack_require__( /*! ../../../core/utils/inflector */ 53124); var _core = _interopRequireDefault(__webpack_require__( /*! ./core */ 84109)); var _default_messages = __webpack_require__( /*! ./default_messages */ 62788); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } const baseDictionary = (0, _extend.extend)(true, {}, _default_messages.defaultMessages); const newMessages = {}; const messageLocalization = (0, _dependency_injector.default)({ engine: function() { return "base" }, _dictionary: baseDictionary, load: function(messages) { (0, _extend.extend)(true, this._dictionary, messages) }, _localizablePrefix: "@", setup: function(localizablePrefix) { this._localizablePrefix = localizablePrefix }, localizeString: function(text) { const that = this; const regex = new RegExp("(^|[^a-zA-Z_0-9" + that._localizablePrefix + "-]+)(" + that._localizablePrefix + "{1,2})([a-zA-Z_0-9-]+)", "g"); const escapeString = that._localizablePrefix + that._localizablePrefix; return text.replace(regex, ((str, prefix, escape, localizationKey) => { const defaultResult = that._localizablePrefix + localizationKey; let result; if (escape !== escapeString) { result = that.format(localizationKey) } if (!result) { newMessages[localizationKey] = (0, _inflector.humanize)(localizationKey) } return prefix + (result || defaultResult) })) }, getMessagesByLocales: function() { return this._dictionary }, getDictionary: function(onlyNew) { if (onlyNew) { return newMessages } return (0, _extend.extend)({}, newMessages, this.getMessagesByLocales()[_core.default.locale()]) }, getFormatter: function(key) { return this._getFormatterBase(key) || this._getFormatterBase(key, "en") }, _getFormatterBase: function(key, locale) { const message = _core.default.getValueByClosestLocale((locale => ((localeData, locale) => { var _Object$entries$find; return localeData[locale] || (null === locale || void 0 === locale ? void 0 : locale.toLowerCase) && (null === (_Object$entries$find = Object.entries(localeData).find((_ref => { let [key] = _ref; return key.toLowerCase() === locale.toLowerCase() }))) || void 0 === _Object$entries$find ? void 0 : _Object$entries$find[1]) || {} })(this._dictionary, locale)[key])); if (message) { return function() { const args = 1 === arguments.length && Array.isArray(arguments[0]) ? arguments[0].slice(0) : Array.prototype.slice.call(arguments, 0); args.unshift(message); return _string.format.apply(this, args) } } }, format: function(key) { const formatter = this.getFormatter(key); const values = Array.prototype.slice.call(arguments, 1); return formatter && formatter.apply(this, values) || "" } }); exports.default = messageLocalization; module.exports = exports.default; module.exports.default = exports.default }, 52771: /*!********************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/common/core/localization/number.js ***! \********************************************************************************/ function(module, exports, __webpack_require__) { exports.default = void 0; var _dependency_injector = _interopRequireDefault(__webpack_require__( /*! ../../../core/utils/dependency_injector */ 89656)); var _common = __webpack_require__( /*! ../../../core/utils/common */ 17781); var _iterator = __webpack_require__( /*! ../../../core/utils/iterator */ 21274); var _type = __webpack_require__( /*! ../../../core/utils/type */ 11528); var _number = __webpack_require__( /*! ./ldml/number */ 33687); var _config = _interopRequireDefault(__webpack_require__( /*! ../../../core/config */ 66636)); var _errors = _interopRequireDefault(__webpack_require__( /*! ../../../core/errors */ 87129)); var _utils = __webpack_require__( /*! ./utils */ 57181); var _currency = _interopRequireDefault(__webpack_require__( /*! ./currency */ 17333)); var _number2 = _interopRequireDefault(__webpack_require__( /*! ./intl/number */ 63265)); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } const hasIntl = "undefined" !== typeof Intl; const NUMERIC_FORMATS = ["currency", "fixedpoint", "exponential", "percent", "decimal"]; const LargeNumberFormatPostfixes = { 1: "K", 2: "M", 3: "B", 4: "T" }; const LargeNumberFormatPowers = { largenumber: "auto", thousands: 1, millions: 2, billions: 3, trillions: 4 }; const numberLocalization = (0, _dependency_injector.default)({ engine: function() { return "base" }, numericFormats: NUMERIC_FORMATS, defaultLargeNumberFormatPostfixes: LargeNumberFormatPostfixes, _parseNumberFormatString: function(formatType) { const formatObject = {}; if (!formatType || "string" !== typeof formatType) { return } const formatList = formatType.toLowerCase().split(" "); (0, _iterator.each)(formatList, ((index, value) => { if (NUMERIC_FORMATS.includes(value)) { formatObject.formatType = value } else if (value in LargeNumberFormatPowers) { formatObject.power = LargeNumberFormatPowers[value] } })); if (formatObject.power && !formatObject.formatType) { formatObject.formatType = "fixedpoint" } if (formatObject.formatType) { return formatObject } }, _calculateNumberPower: function(value, base, minPower, maxPower) { let number = Math.abs(value); let power = 0; if (number > 1) { while (number && number >= base && (void 0 === maxPower || power < maxPower)) { power++; number /= base } } else if (number > 0 && number < 1) { while (number < 1 && (void 0 === minPower || power > minPower)) { power--; number *= base } } return power }, _getNumberByPower: function(number, power, base) { let result = number; while (power > 0) { result /= base; power-- } while (power < 0) { result *= base; power++ } return result }, _formatNumber: function(value, formatObject, formatConfig) { if ("auto" === formatObject.power) { formatObject.power = this._calculateNumberPower(value, 1e3, 0, 4) } if (formatObject.power) { value = this._getNumberByPower(value, formatObject.power, 1e3) } const powerPostfix = this.defaultLargeNumberFormatPostfixes[formatObject.power] || ""; let result = this._formatNumberCore(value, formatObject.formatType, formatConfig); result = result.replace(/(\d|.$)(\D*)$/, "$1" + powerPostfix + "$2"); return result }, _formatNumberExponential: function(value, formatConfig) { let power = this._calculateNumberPower(value, 10); let number = this._getNumberByPower(value, power, 10); if (void 0 === formatConfig.precision) { formatConfig.precision = 1 } if (number.toFixed(formatConfig.precision || 0) >= 10) { power++; number /= 10 } const powString = (power >= 0 ? "+" : "") + power.toString(); return this._formatNumberCore(number, "fixedpoint", formatConfig) + "E" + powString }, _addZeroes: function(value, precision) { const multiplier = Math.pow(10, precision); const sign = value < 0 ? "-" : ""; value = (Math.abs(value) * multiplier >>> 0) / multiplier; let result = value.toString(); while (result.length < precision) { result = "0" + result } return sign + result }, _addGroupSeparators: function(value) { const parts = value.toString().split("."); return parts[0].replace(/\B(?=(\d{3})+(?!\d))/g, (0, _config.default)().thousandsSeparator) + (parts[1] ? (0, _config.default)().decimalSeparator + parts[1] : "") }, _formatNumberCore: function(value, format, formatConfig) { if ("exponential" === format) { return this._formatNumberExponential(value, formatConfig) } if ("decimal" !== format && null !== formatConfig.precision) { formatConfig.precision = formatConfig.precision || 0 } if ("percent" === format) { value *= 100 } if (void 0 !== formatConfig.precision) { if ("decimal" === format) { value = this._addZeroes(value, formatConfig.precision) } else { value = null === formatConfig.precision ? value.toPrecision() : (0, _utils.toFixed)(value, formatConfig.precision) } } if ("decimal" !== format) { value = this._addGroupSeparators(value) } else { value = value.toString().replace(".", (0, _config.default)().decimalSeparator) } if ("percent" === format) { value += "%" } return value }, _normalizeFormat: function(format) { if (!format) { return {} } if ("function" === typeof format) { return format } if (!(0, _type.isPlainObject)(format)) { format = { type: format } } return format }, _getSeparators: function() { return { decimalSeparator: this.getDecimalSeparator(), thousandsSeparator: this.getThousandsSeparator() } }, getThousandsSeparator: function() { return this.format(1e4, "fixedPoint")[2] }, getDecimalSeparator: function() { return this.format(1.2, { type: "fixedPoint", precision: 1 })[1] }, convertDigits: function(value, toStandard) { const digits = this.format(90, "decimal"); if ("string" !== typeof value || "0" === digits[1]) { return value } const fromFirstDigit = toStandard ? digits[1] : "0"; const toFirstDigit = toStandard ? "0" : digits[1]; const fromLastDigit = toStandard ? digits[0] : "9"; const regExp = new RegExp("[" + fromFirstDigit + "-" + fromLastDigit + "]", "g"); return value.replace(regExp, (char => String.fromCharCode(char.charCodeAt(0) + (toFirstDigit.charCodeAt(0) - fromFirstDigit.charCodeAt(0))))) }, getNegativeEtalonRegExp: function(format) { const separators = this._getSeparators(); const digitalRegExp = new RegExp("[0-9" + (0, _common.escapeRegExp)(separators.decimalSeparator + separators.thousandsSeparator) + "]+", "g"); let negativeEtalon = this.format(-1, format).replace(digitalRegExp, "1"); ["\\", "(", ")", "[", "]", "*", "+", "$", "^", "?", "|", "{", "}"].forEach((char => { negativeEtalon = negativeEtalon.replace(new RegExp(`\\${char}`, "g"), `\\${char}`) })); negativeEtalon = negativeEtalon.replace(/ /g, "\\s"); negativeEtalon = negativeEtalon.replace(/1/g, ".*"); return new RegExp(negativeEtalon, "g") }, getSign: function(text, format) { if (!format) { if ("-" === text.replace(/[^0-9-]/g, "").charAt(0)) { return -1 } return 1 } const negativeEtalon = this.getNegativeEtalonRegExp(format); return text.match(negativeEtalon) ? -1 : 1 }, format: function(value, format) { if ("number" !== typeof value) { return value } if ("number" === typeof format) { return value } format = format && format.formatter || format; if ("function" === typeof format) { return format(value) } format = this._normalizeFormat(format); if (!format.type) { format.type = "decimal" } const numberConfig = this._parseNumberFormatString(format.type); if (!numberConfig) { const formatterConfig = this._getSeparators(); formatterConfig.unlimitedIntegerDigits = format.unlimitedIntegerDigits; const formatter = (0, _number.getFormatter)(format.type, formatterConfig)(value); const result = this.convertDigits(formatter); return result } return this._formatNumber(value, numberConfig, format) }, parse: function(text, format) { if (!text) { return } if (format && format.parser) { return format.parser(text) } text = this.convertDigits(text, true); if (format && "string" !== typeof format) { _errors.default.log("W0011") } const decimalSeparator = this.getDecimalSeparator(); const regExp = new RegExp("[^0-9" + (0, _common.escapeRegExp)(decimalSeparator) + "]", "g"); const cleanedText = text.replace(regExp, "").replace(decimalSeparator, ".").replace(/\.$/g, ""); if ("." === cleanedText || "" === cleanedText) { return null } if (this._calcSignificantDigits(cleanedText) > 15) { return NaN } let parsed = +cleanedText * this.getSign(text, format); format = this._normalizeFormat(format); const formatConfig = this._parseNumberFormatString(format.type); let power = null === formatConfig || void 0 === formatConfig ? void 0 : formatConfig.power; if (power) { if ("auto" === power) { const match = text.match(/\d(K|M|B|T)/); if (match) { power = Object.keys(LargeNumberFormatPostfixes).find((power => LargeNumberFormatPostfixes[power] === match[1])) } } parsed *= Math.pow(10, 3 * power) } if ("percent" === (null === formatConfig || void 0 === formatConfig ? void 0 : formatConfig.formatType)) { parsed /= 100 } return parsed }, _calcSignificantDigits: function(text) { const [integer, fractional] = text.split("."); const calcDigitsAfterLeadingZeros = digits => { let index = -1; for (let i = 0; i < digits.length; i++) { if ("0" !== digits[i]) { index = i; break } } return index > -1 ? digits.length - index : 0 }; let result = 0; if (integer) { result += calcDigitsAfterLeadingZeros(integer.split("")) } if (fractional) { result += calcDigitsAfterLeadingZeros(fractional.split("").reverse()) } return result } }); numberLocalization.inject(_currency.default); if (hasIntl) { numberLocalization.inject(_number2.default) } exports.default = numberLocalization; module.exports = exports.default; module.exports.default = exports.default }, 70832: /*!**************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/common/core/localization/open_xml_currency_format.js ***! \**************************************************************************************************/ function(module, exports) { exports.default = void 0; exports.default = (currencySymbol, accountingFormat) => { if (!accountingFormat) { return } let encodedCurrencySymbol = currencySymbol; if ("string" === typeof currencySymbol) { encodedCurrencySymbol = ""; for (let i = 0; i < currencySymbol.length; i++) { if ("$" !== currencySymbol[i]) { encodedCurrencySymbol += "\\" } encodedCurrencySymbol += currencySymbol[i] } } const encodeSymbols = { ".00": "{0}", "'": "\\'", "\\(": "\\(", "\\)": "\\)", " ": "\\ ", '"': """, "\\\xa4": encodedCurrencySymbol }; const result = accountingFormat.split(";"); for (let i = 0; i < result.length; i++) { for (const symbol in encodeSymbols) { if (Object.prototype.hasOwnProperty.call(encodeSymbols, symbol)) { result[i] = result[i].replace(new RegExp(symbol, "g"), encodeSymbols[symbol]) } } } return 2 === result.length ? result[0] + "_);" + result[1] : result[0] }; module.exports = exports.default; module.exports.default = exports.default }, 55088: /*!**************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/common/core/localization/parentLocale.js ***! \**************************************************************************************/ function(module, exports) { exports.default = void 0; exports.default = (parentLocales, locale) => { const parentLocale = parentLocales[locale]; if (parentLocale) { return "root" !== parentLocale && parentLocale } return locale.substr(0, locale.lastIndexOf("-")) }; module.exports = exports.default; module.exports.default = exports.default }, 57181: /*!*******************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/common/core/localization/utils.js ***! \*******************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { exports.toFixed = function(value, precision) { const valuePrecision = precision || 0; const adjustedValue = valuePrecision > 0 ? function(value, precision) { const precisionMultiplier = Math.pow(DECIMAL_BASE, precision); const intermediateValue = (0, _math.multiplyInExponentialForm)(value, precision); return function(value) { const valueSign = (0, _math.sign)(value); return valueSign * Math.round(Math.abs(value)) }(intermediateValue) / precisionMultiplier }(...arguments) : value; return adjustedValue.toFixed(valuePrecision) }; var _math = __webpack_require__( /*! ../../../core/utils/math */ 50254); const DECIMAL_BASE = 10 }, 11036: /*!************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/common/data.js ***! \************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "ArrayStore", { enumerable: true, get: function() { return _array_store.default } }); Object.defineProperty(exports, "CustomStore", { enumerable: true, get: function() { return _custom_store.CustomStore } }); Object.defineProperty(exports, "DataHelperMixin", { enumerable: true, get: function() { return _m_data_helper.default } }); Object.defineProperty(exports, "DataSource", { enumerable: true, get: function() { return _data_source.default } }); Object.defineProperty(exports, "EdmLiteral", { enumerable: true, get: function() { return _utils2.EdmLiteral } }); Object.defineProperty(exports, "EndpointSelector", { enumerable: true, get: function() { return _endpoint_selector.default } }); Object.defineProperty(exports, "LocalStore", { enumerable: true, get: function() { return _local_store.default } }); Object.defineProperty(exports, "ODataContext", { enumerable: true, get: function() { return _context.default } }); Object.defineProperty(exports, "ODataStore", { enumerable: true, get: function() { return _store.default } }); Object.defineProperty(exports, "applyChanges", { enumerable: true, get: function() { return _apply_changes.default } }); Object.defineProperty(exports, "base64_encode", { enumerable: true, get: function() { return _utils.base64_encode } }); Object.defineProperty(exports, "compileGetter", { enumerable: true, get: function() { return _utils.compileGetter } }); Object.defineProperty(exports, "compileSetter", { enumerable: true, get: function() { return _utils.compileSetter } }); Object.defineProperty(exports, "errorHandler", { enumerable: true, get: function() { return _errors.errorHandler } }); Object.defineProperty(exports, "isGroupItemsArray", { enumerable: true, get: function() { return _custom_store.isGroupItemsArray } }); Object.defineProperty(exports, "isItemsArray", { enumerable: true, get: function() { return _custom_store.isItemsArray } }); Object.defineProperty(exports, "isLoadResultObject", { enumerable: true, get: function() { return _custom_store.isLoadResultObject } }); Object.defineProperty(exports, "keyConverters", { enumerable: true, get: function() { return _utils2.keyConverters } }); Object.defineProperty(exports, "query", { enumerable: true, get: function() { return _query.default } }); Object.defineProperty(exports, "setErrorHandler", { enumerable: true, get: function() { return _errors.setErrorHandler } }); var _apply_changes = _interopRequireDefault(__webpack_require__( /*! ./data/apply_changes */ 99745)); var _array_store = _interopRequireDefault(__webpack_require__( /*! ./data/array_store */ 80556)); var _custom_store = __webpack_require__( /*! ./data/custom_store */ 63326); var _data_source = _interopRequireDefault(__webpack_require__( /*! ./data/data_source */ 14479)); var _endpoint_selector = _interopRequireDefault(__webpack_require__( /*! ./data/endpoint_selector */ 44180)); var _errors = __webpack_require__( /*! ./data/errors */ 82812); var _local_store = _interopRequireDefault(__webpack_require__( /*! ./data/local_store */ 71790)); var _query = _interopRequireDefault(__webpack_require__( /*! ./data/query */ 30771)); var _utils = __webpack_require__( /*! ./data/utils */ 89358); var _m_data_helper = _interopRequireDefault(__webpack_require__( /*! ../__internal/data/m_data_helper */ 16780)); var _context = _interopRequireDefault(__webpack_require__( /*! ./data/odata/context */ 34170)); var _store = _interopRequireDefault(__webpack_require__( /*! ./data/odata/store */ 29284)); var _utils2 = __webpack_require__( /*! ./data/odata/utils */ 8056); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } }, 5995: /*!***************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/common/data/abstract_store.js ***! \***************************************************************************/ function(module, exports, __webpack_require__) { Object.defineProperty(exports, "default", { enumerable: true, get: function() { return _m_abstract_store.default } }); var _m_abstract_store = (e = __webpack_require__( /*! ../../__internal/data/m_abstract_store */ 1773), e && e.__esModule ? e : { default: e }); var e; module.exports = exports.default; module.exports.default = exports.default }, 99745: /*!**************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/common/data/apply_changes.js ***! \**************************************************************************/ function(module, exports, __webpack_require__) { exports.default = void 0; var _array_utils = __webpack_require__( /*! ./array_utils */ 43792); exports.default = _array_utils.applyChanges; module.exports = exports.default; module.exports.default = exports.default }, 65517: /*!************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/common/data/array_query.js ***! \************************************************************************/ function(module, exports, __webpack_require__) { Object.defineProperty(exports, "default", { enumerable: true, get: function() { return _m_array_query.default } }); var _m_array_query = (e = __webpack_require__( /*! ../../__internal/data/m_array_query */ 79587), e && e.__esModule ? e : { default: e }); var e; module.exports = exports.default; module.exports.default = exports.default }, 80556: /*!************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/common/data/array_store.js ***! \************************************************************************/ function(module, exports, __webpack_require__) { Object.defineProperty(exports, "default", { enumerable: true, get: function() { return _m_array_store.default } }); var _m_array_store = (e = __webpack_require__( /*! ../../__internal/data/m_array_store */ 11338), e && e.__esModule ? e : { default: e }); var e; module.exports = exports.default; module.exports.default = exports.default }, 43792: /*!************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/common/data/array_utils.js ***! \************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { var _m_array_utils = __webpack_require__( /*! ../../__internal/data/m_array_utils */ 3198); Object.keys(_m_array_utils).forEach((function(key) { if ("default" === key || "__esModule" === key) { return } if (key in exports && exports[key] === _m_array_utils[key]) { return } Object.defineProperty(exports, key, { enumerable: true, get: function() { return _m_array_utils[key] } }) })) }, 63326: /*!*************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/common/data/custom_store.js ***! \*************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "CustomStore", { enumerable: true, get: function() { return _m_custom_store.default } }); exports.isGroupItemsArray = function(res) { return Array.isArray(res) && !!res.length && isGroupItem(res[0]) }; exports.isItemsArray = function(res) { return Array.isArray(res) && !isGroupItem(res[0]) }; exports.isLoadResultObject = function(res) { return !Array.isArray(res) && "data" in res }; var _m_custom_store = (e = __webpack_require__( /*! ../../__internal/data/m_custom_store */ 12764), e && e.__esModule ? e : { default: e }); var e; function isGroupItem(item) { if (void 0 === item || null === item || "object" !== typeof item) { return false } return "key" in item && "items" in item } }, 14479: /*!************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/common/data/data_source.js ***! \************************************************************************/ function(module, exports, __webpack_require__) { exports.default = void 0; var _data_source = __webpack_require__( /*! ./data_source/data_source */ 68216); exports.default = _data_source.DataSource; module.exports = exports.default; module.exports.default = exports.default }, 68216: /*!************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/common/data/data_source/data_source.js ***! \************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { var _m_data_source = __webpack_require__( /*! ../../../__internal/data/data_source/m_data_source */ 79562); Object.keys(_m_data_source).forEach((function(key) { if ("default" === key || "__esModule" === key) { return } if (key in exports && exports[key] === _m_data_source[key]) { return } Object.defineProperty(exports, key, { enumerable: true, get: function() { return _m_data_source[key] } }) })) }, 95853: /*!******************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/common/data/data_source/operation_manager.js ***! \******************************************************************************************/ function(module, exports, __webpack_require__) { Object.defineProperty(exports, "default", { enumerable: true, get: function() { return _m_operation_manager.default } }); var _m_operation_manager = (e = __webpack_require__( /*! ../../../__internal/data/data_source/m_operation_manager */ 9427), e && e.__esModule ? e : { default: e }); var e; module.exports = exports.default; module.exports.default = exports.default }, 97169: /*!******************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/common/data/data_source/utils.js ***! \******************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { var _m_utils = __webpack_require__( /*! ../../../__internal/data/data_source/m_utils */ 23923); Object.keys(_m_utils).forEach((function(key) { if ("default" === key || "__esModule" === key) { return } if (key in exports && exports[key] === _m_utils[key]) { return } Object.defineProperty(exports, key, { enumerable: true, get: function() { return _m_utils[key] } }) })) }, 44180: /*!******************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/common/data/endpoint_selector.js ***! \******************************************************************************/ function(module, exports, __webpack_require__) { Object.defineProperty(exports, "default", { enumerable: true, get: function() { return _m_endpoint_selector.default } }); var _m_endpoint_selector = (e = __webpack_require__( /*! ../../__internal/data/m_endpoint_selector */ 17410), e && e.__esModule ? e : { default: e }); var e; module.exports = exports.default; module.exports.default = exports.default }, 82812: /*!*******************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/common/data/errors.js ***! \*******************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { var _m_errors = __webpack_require__( /*! ../../__internal/data/m_errors */ 5930); Object.keys(_m_errors).forEach((function(key) { if ("default" === key || "__esModule" === key) { return } if (key in exports && exports[key] === _m_errors[key]) { return } Object.defineProperty(exports, key, { enumerable: true, get: function() { return _m_errors[key] } }) })) }, 71790: /*!************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/common/data/local_store.js ***! \************************************************************************/ function(module, exports, __webpack_require__) { Object.defineProperty(exports, "default", { enumerable: true, get: function() { return _m_local_store.default } }); var _m_local_store = (e = __webpack_require__( /*! ../../__internal/data/m_local_store */ 33260), e && e.__esModule ? e : { default: e }); var e; module.exports = exports.default; module.exports.default = exports.default }, 34170: /*!**************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/common/data/odata/context.js ***! \**************************************************************************/ function(module, exports, __webpack_require__) { Object.defineProperty(exports, "default", { enumerable: true, get: function() { return _m_context.default } }); var _m_context = (e = __webpack_require__( /*! ../../../__internal/data/odata/m_context */ 58824), e && e.__esModule ? e : { default: e }); var e; module.exports = exports.default; module.exports.default = exports.default }, 65001: /*!********************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/common/data/odata/query_adapter.js ***! \********************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { var _m_query_adapter = __webpack_require__( /*! ../../../__internal/data/odata/m_query_adapter */ 61575); Object.keys(_m_query_adapter).forEach((function(key) { if ("default" === key || "__esModule" === key) { return } if (key in exports && exports[key] === _m_query_adapter[key]) { return } Object.defineProperty(exports, key, { enumerable: true, get: function() { return _m_query_adapter[key] } }) })) }, 26098: /*!*************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/common/data/odata/request_dispatcher.js ***! \*************************************************************************************/ function(module, exports, __webpack_require__) { Object.defineProperty(exports, "default", { enumerable: true, get: function() { return _m_request_dispatcher.default } }); var _m_request_dispatcher = (e = __webpack_require__( /*! ../../../__internal/data/odata/m_request_dispatcher */ 8920), e && e.__esModule ? e : { default: e }); var e; module.exports = exports.default; module.exports.default = exports.default }, 29284: /*!************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/common/data/odata/store.js ***! \************************************************************************/ function(module, exports, __webpack_require__) { Object.defineProperty(exports, "default", { enumerable: true, get: function() { return _m_store.default } }); var _m_store = (e = __webpack_require__( /*! ../../../__internal/data/odata/m_store */ 17594), e && e.__esModule ? e : { default: e }); var e; module.exports = exports.default; module.exports.default = exports.default }, 8056: /*!************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/common/data/odata/utils.js ***! \************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { var _m_utils = __webpack_require__( /*! ../../../__internal/data/odata/m_utils */ 14606); Object.keys(_m_utils).forEach((function(key) { if ("default" === key || "__esModule" === key) { return } if (key in exports && exports[key] === _m_utils[key]) { return } Object.defineProperty(exports, key, { enumerable: true, get: function() { return _m_utils[key] } }) })) }, 30771: /*!******************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/common/data/query.js ***! \******************************************************************/ function(module, exports, __webpack_require__) { Object.defineProperty(exports, "default", { enumerable: true, get: function() { return _m_query.default } }); var _m_query = (e = __webpack_require__( /*! ../../__internal/data/m_query */ 45149), e && e.__esModule ? e : { default: e }); var e; module.exports = exports.default; module.exports.default = exports.default }, 5842: /*!***************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/common/data/query_adapters.js ***! \***************************************************************************/ function(module, exports) { exports.default = void 0; exports.default = {}; module.exports = exports.default; module.exports.default = exports.default }, 84816: /*!*********************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/common/data/query_implementation.js ***! \*********************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { exports.queryImpl = void 0; var _array_query = _interopRequireDefault(__webpack_require__( /*! ./array_query */ 65517)); var _remote_query = _interopRequireDefault(__webpack_require__( /*! ./remote_query */ 80882)); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } exports.queryImpl = { array: _array_query.default, remote: _remote_query.default } }, 80882: /*!*************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/common/data/remote_query.js ***! \*************************************************************************/ function(module, exports, __webpack_require__) { Object.defineProperty(exports, "default", { enumerable: true, get: function() { return _m_remote_query.default } }); var _m_remote_query = (e = __webpack_require__( /*! ../../__internal/data/m_remote_query */ 51324), e && e.__esModule ? e : { default: e }); var e; module.exports = exports.default; module.exports.default = exports.default }, 66177: /*!*************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/common/data/store_helper.js ***! \*************************************************************************/ function(module, exports, __webpack_require__) { Object.defineProperty(exports, "default", { enumerable: true, get: function() { return _m_store_helper.default } }); var _m_store_helper = (e = __webpack_require__( /*! ../../__internal/data/m_store_helper */ 41943), e && e.__esModule ? e : { default: e }); var e; module.exports = exports.default; module.exports.default = exports.default }, 89358: /*!******************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/common/data/utils.js ***! \******************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { var _exportNames = { compileGetter: true, compileSetter: true }; Object.defineProperty(exports, "compileGetter", { enumerable: true, get: function() { return _data.compileGetter } }); Object.defineProperty(exports, "compileSetter", { enumerable: true, get: function() { return _data.compileSetter } }); var _data = __webpack_require__( /*! ../../core/utils/data */ 31e3); var _m_utils = __webpack_require__( /*! ../../__internal/data/m_utils */ 30912); Object.keys(_m_utils).forEach((function(key) { if ("default" === key || "__esModule" === key) { return } if (Object.prototype.hasOwnProperty.call(_exportNames, key)) { return } if (key in exports && exports[key] === _m_utils[key]) { return } Object.defineProperty(exports, key, { enumerable: true, get: function() { return _m_utils[key] } }) })) }, 54594: /*!********************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/common/export/excel.js ***! \********************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "exportDataGrid", { enumerable: true, get: function() { return _export_data_grid.exportDataGrid } }); Object.defineProperty(exports, "exportPivotGrid", { enumerable: true, get: function() { return _export_pivot_grid.exportPivotGrid } }); var _export_data_grid = __webpack_require__( /*! ../../exporter/exceljs/export_data_grid */ 55921); var _export_pivot_grid = __webpack_require__( /*! ../../exporter/exceljs/export_pivot_grid */ 44295) }, 92731: /*!******************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/common/export/pdf.js ***! \******************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "exportDataGrid", { enumerable: true, get: function() { return _export_data_grid.exportDataGrid } }); Object.defineProperty(exports, "exportDataGridWithAutoTable", { enumerable: true, get: function() { return _export_data_grid2.exportDataGrid } }); Object.defineProperty(exports, "exportGantt", { enumerable: true, get: function() { return _export_gantt.exportGantt } }); var _export_data_grid = __webpack_require__( /*! ../../exporter/jspdf/export_data_grid */ 93932); var _export_data_grid2 = __webpack_require__( /*! ../../exporter/jspdf/autotable/export_data_grid */ 89222); var _export_gantt = __webpack_require__( /*! ../../exporter/jspdf/export_gantt */ 81863) }, 71037: /*!************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/common/guid.js ***! \************************************************************/ function(module, exports, __webpack_require__) { exports.default = void 0; var _m_guid = __webpack_require__( /*! ../__internal/core/m_guid */ 7201); exports.default = _m_guid.Guid; module.exports = exports.default; module.exports.default = exports.default }, 32480: /*!***************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/common/set_template_engine.js ***! \***************************************************************************/ function(module, exports, __webpack_require__) { exports.default = void 0; var _m_set_template_engine = __webpack_require__( /*! ../__internal/core/m_set_template_engine */ 61644); exports.default = _m_set_template_engine.setTemplateEngine; module.exports = exports.default; module.exports.default = exports.default }, 88412: /*!************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/core/action.js ***! \************************************************************/ function(module, exports, __webpack_require__) { exports.default = void 0; var _m_action = __webpack_require__( /*! ../__internal/core/m_action */ 3226); exports.default = _m_action.Action; module.exports = exports.default; module.exports.default = exports.default }, 55620: /*!***********************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/core/class.js ***! \***********************************************************/ function(module, exports, __webpack_require__) { exports.default = void 0; var _m_class = (e = __webpack_require__( /*! ../__internal/core/m_class */ 40958), e && e.__esModule ? e : { default: e }); var e; exports.default = _m_class.default; module.exports = exports.default; module.exports.default = exports.default }, 17863: /*!***************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/core/component.js ***! \***************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { var _component = __webpack_require__( /*! ../__internal/core/widget/component */ 65020); Object.keys(_component).forEach((function(key) { if ("default" === key || "__esModule" === key) { return } if (key in exports && exports[key] === _component[key]) { return } Object.defineProperty(exports, key, { enumerable: true, get: function() { return _component[key] } }) })) }, 92848: /*!***************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/core/component_registrator.js ***! \***************************************************************************/ function(module, exports, __webpack_require__) { exports.default = void 0; var _m_component_registrator = __webpack_require__( /*! ../__internal/core/m_component_registrator */ 10718); exports.default = _m_component_registrator.registerComponent; module.exports = exports.default; module.exports.default = exports.default }, 55771: /*!*************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/core/component_registrator_callbacks.js ***! \*************************************************************************************/ function(module, exports, __webpack_require__) { exports.default = void 0; var _m_component_registrator_callbacks = __webpack_require__( /*! ../__internal/core/m_component_registrator_callbacks */ 21233); exports.default = _m_component_registrator_callbacks.componentRegistratorCallbacks; module.exports = exports.default; module.exports.default = exports.default }, 66636: /*!************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/core/config.js ***! \************************************************************/ function(module, exports, __webpack_require__) { exports.default = void 0; var _common = __webpack_require__( /*! ../common */ 83077); exports.default = _common.config; module.exports = exports.default; module.exports.default = exports.default }, 65951: /*!*************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/core/devices.js ***! \*************************************************************/ function(module, exports, __webpack_require__) { exports.default = void 0; var _environment = __webpack_require__( /*! ../common/core/environment */ 63705); exports.default = _environment.devices; module.exports = exports.default; module.exports.default = exports.default }, 64960: /*!*****************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/core/dom_adapter.js ***! \*****************************************************************/ function(module, exports, __webpack_require__) { exports.default = void 0; var _m_dom_adapter = __webpack_require__( /*! ../__internal/core/m_dom_adapter */ 62018); exports.default = _m_dom_adapter.domAdapter; module.exports = exports.default; module.exports.default = exports.default }, 97832: /*!*******************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/core/dom_component.js ***! \*******************************************************************/ function(module, exports, __webpack_require__) { exports.default = void 0; var _dom_component = (e = __webpack_require__( /*! ../__internal/core/widget/dom_component */ 22331), e && e.__esModule ? e : { default: e }); var e; exports.default = _dom_component.default; module.exports = exports.default; module.exports.default = exports.default }, 61404: /*!*************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/core/element.js ***! \*************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "getPublicElement", { enumerable: true, get: function() { return _m_element.getPublicElement } }); Object.defineProperty(exports, "getPublicElementNonJquery", { enumerable: true, get: function() { return _m_element.getPublicElementNonJquery } }); Object.defineProperty(exports, "setPublicElementWrapper", { enumerable: true, get: function() { return _m_element.setPublicElementWrapper } }); var _m_element = __webpack_require__( /*! ../__internal/core/m_element */ 93630) }, 74663: /*!******************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/core/element_data.js ***! \******************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "afterCleanData", { enumerable: true, get: function() { return _m_element_data.afterCleanData } }); Object.defineProperty(exports, "beforeCleanData", { enumerable: true, get: function() { return _m_element_data.beforeCleanData } }); Object.defineProperty(exports, "cleanData", { enumerable: true, get: function() { return _m_element_data.cleanData } }); Object.defineProperty(exports, "cleanDataRecursive", { enumerable: true, get: function() { return _m_element_data.cleanDataRecursive } }); Object.defineProperty(exports, "data", { enumerable: true, get: function() { return _m_element_data.data } }); Object.defineProperty(exports, "getDataStrategy", { enumerable: true, get: function() { return _m_element_data.getDataStrategy } }); Object.defineProperty(exports, "removeData", { enumerable: true, get: function() { return _m_element_data.removeData } }); Object.defineProperty(exports, "setDataStrategy", { enumerable: true, get: function() { return _m_element_data.setDataStrategy } }); Object.defineProperty(exports, "strategyChanging", { enumerable: true, get: function() { return _m_element_data.strategyChanging } }); var _m_element_data = __webpack_require__( /*! ../__internal/core/m_element_data */ 29489) }, 87129: /*!************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/core/errors.js ***! \************************************************************/ function(module, exports, __webpack_require__) { exports.default = void 0; var _m_errors = (e = __webpack_require__( /*! ../__internal/core/m_errors */ 5583), e && e.__esModule ? e : { default: e }); var e; exports.default = _m_errors.default; module.exports = exports.default; module.exports.default = exports.default }, 2607: /*!*********************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/core/events_strategy.js ***! \*********************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "EventsStrategy", { enumerable: true, get: function() { return _m_events_strategy.EventsStrategy } }); var _m_events_strategy = __webpack_require__( /*! ../__internal/core/m_events_strategy */ 14201) }, 19427: /*!**********************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/core/guid.js ***! \**********************************************************/ function(module, exports, __webpack_require__) { exports.default = void 0; var _common = __webpack_require__( /*! ../common */ 83077); exports.default = _common.Guid; module.exports = exports.default; module.exports.default = exports.default }, 35688: /*!******************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/core/http_request.js ***! \******************************************************************/ function(module, exports, __webpack_require__) { exports.default = void 0; var _m_http_request = __webpack_require__( /*! ../__internal/core/m_http_request */ 58670); exports.default = _m_http_request.httpRequest; module.exports = exports.default; module.exports.default = exports.default }, 16965: /*!**********************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/core/inferno_renderer.js ***! \**********************************************************************/ function(module, exports, __webpack_require__) { exports.default = void 0; var _m_inferno_renderer = __webpack_require__( /*! ../__internal/core/m_inferno_renderer */ 21327); exports.default = _m_inferno_renderer.infernoRenderer; module.exports = exports.default; module.exports.default = exports.default }, 35329: /*!*************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/core/memorized_callbacks.js ***! \*************************************************************************/ function(module, exports, __webpack_require__) { exports.default = void 0; var _m_memorized_callbacks = __webpack_require__( /*! ../__internal/core/m_memorized_callbacks */ 87107); exports.default = _m_memorized_callbacks.MemorizedCallbacks; module.exports = exports.default; module.exports.default = exports.default }, 74453: /*!*******************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/core/options/index.js ***! \*******************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "Options", { enumerable: true, get: function() { return _m_index.Options } }); var _m_index = __webpack_require__( /*! ../../__internal/core/options/m_index */ 43399) }, 1896: /*!****************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/core/options/option_manager.js ***! \****************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "OptionManager", { enumerable: true, get: function() { return _m_option_manager.OptionManager } }); var _m_option_manager = __webpack_require__( /*! ../../__internal/core/options/m_option_manager */ 59830) }, 53904: /*!*******************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/core/options/utils.js ***! \*******************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "convertRulesToOptions", { enumerable: true, get: function() { return _m_utils.convertRulesToOptions } }); Object.defineProperty(exports, "createDefaultOptionRules", { enumerable: true, get: function() { return _m_utils.createDefaultOptionRules } }); Object.defineProperty(exports, "deviceMatch", { enumerable: true, get: function() { return _m_utils.deviceMatch } }); Object.defineProperty(exports, "getFieldName", { enumerable: true, get: function() { return _m_utils.getFieldName } }); Object.defineProperty(exports, "getNestedOptionValue", { enumerable: true, get: function() { return _m_utils.getNestedOptionValue } }); Object.defineProperty(exports, "getParentName", { enumerable: true, get: function() { return _m_utils.getParentName } }); Object.defineProperty(exports, "normalizeOptions", { enumerable: true, get: function() { return _m_utils.normalizeOptions } }); var _m_utils = __webpack_require__( /*! ../../__internal/core/options/m_utils */ 33810) }, 21971: /*!**************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/core/postponed_operations.js ***! \**************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "PostponedOperations", { enumerable: true, get: function() { return _m_postponed_operations.PostponedOperations } }); var _m_postponed_operations = __webpack_require__( /*! ../__internal/core/m_postponed_operations */ 45693) }, 64553: /*!**************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/core/renderer.js ***! \**************************************************************/ function(module, exports, __webpack_require__) { exports.default = void 0; var _m_renderer = __webpack_require__( /*! ../__internal/core/m_renderer */ 95539); exports.default = _m_renderer.renderer; module.exports = exports.default; module.exports.default = exports.default }, 21681: /*!*******************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/core/renderer_base.js ***! \*******************************************************************/ function(module, exports, __webpack_require__) { Object.defineProperty(exports, "default", { enumerable: true, get: function() { return _m_renderer_base.default } }); var _m_renderer_base = (e = __webpack_require__( /*! ../__internal/core/m_renderer_base */ 1811), e && e.__esModule ? e : { default: e }); var e; module.exports = exports.default; module.exports.default = exports.default }, 11787: /*!*********************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/core/resize_observer.js ***! \*********************************************************************/ function(module, exports, __webpack_require__) { exports.default = void 0; var _m_resize_observer = __webpack_require__( /*! ../__internal/core/m_resize_observer */ 57785); exports.default = _m_resize_observer.resizeObserverSingleton; module.exports = exports.default; module.exports.default = exports.default }, 91366: /*!*************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/core/set_template_engine.js ***! \*************************************************************************/ function(module, exports, __webpack_require__) { Object.defineProperty(exports, "default", { enumerable: true, get: function() { return _common.setTemplateEngine } }); var _common = __webpack_require__( /*! ../common */ 83077); module.exports = exports.default; module.exports.default = exports.default }, 27286: /*!*********************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/core/templates/bindable_template.js ***! \*********************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "BindableTemplate", { enumerable: true, get: function() { return _m_bindable_template.BindableTemplate } }); var _m_bindable_template = __webpack_require__( /*! ../../__internal/core/templates/m_bindable_template */ 52820) }, 91585: /*!**************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/core/templates/child_default_template.js ***! \**************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "ChildDefaultTemplate", { enumerable: true, get: function() { return _m_child_default_template.ChildDefaultTemplate } }); var _m_child_default_template = __webpack_require__( /*! ../../__internal/core/templates/m_child_default_template */ 93971) }, 48650: /*!******************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/core/templates/empty_template.js ***! \******************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "EmptyTemplate", { enumerable: true, get: function() { return _m_empty_template.EmptyTemplate } }); var _m_empty_template = __webpack_require__( /*! ../../__internal/core/templates/m_empty_template */ 11768) }, 38699: /*!*********************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/core/templates/function_template.js ***! \*********************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "FunctionTemplate", { enumerable: true, get: function() { return _m_function_template.FunctionTemplate } }); var _m_function_template = __webpack_require__( /*! ../../__internal/core/templates/m_function_template */ 88969) }, 67872: /*!************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/core/templates/template.js ***! \************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "Template", { enumerable: true, get: function() { return _m_template.Template } }); var _m_template = __webpack_require__( /*! ../../__internal/core/templates/m_template */ 52538) }, 42186: /*!*****************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/core/templates/template_base.js ***! \*****************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "TemplateBase", { enumerable: true, get: function() { return _m_template_base.TemplateBase } }); Object.defineProperty(exports, "renderedCallbacks", { enumerable: true, get: function() { return _m_template_base.renderedCallbacks } }); var _m_template_base = __webpack_require__( /*! ../../__internal/core/templates/m_template_base */ 31292) }, 35155: /*!****************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/core/templates/template_engine_registry.js ***! \****************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "getCurrentTemplateEngine", { enumerable: true, get: function() { return _m_template_engine_registry.getCurrentTemplateEngine } }); Object.defineProperty(exports, "registerTemplateEngine", { enumerable: true, get: function() { return _m_template_engine_registry.registerTemplateEngine } }); Object.defineProperty(exports, "setTemplateEngine", { enumerable: true, get: function() { return _m_template_engine_registry.setTemplateEngine } }); var _m_template_engine_registry = __webpack_require__( /*! ../../__internal/core/templates/m_template_engine_registry */ 70785) }, 71669: /*!*****************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/core/trial_panel.js ***! \*****************************************************************/ function(module, exports, __webpack_require__) { exports.default = void 0; var _trial_panel = __webpack_require__( /*! ../__internal/core/license/trial_panel */ 99671); exports.default = { registerTrialPanelComponents: _trial_panel.registerTrialPanelComponents, showTrialPanel: _trial_panel.showTrialPanel }; module.exports = exports.default; module.exports.default = exports.default }, 78670: /*!****************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/core/utils/ajax.js ***! \****************************************************************/ function(module, exports, __webpack_require__) { exports.default = void 0; var _m_ajax = __webpack_require__( /*! ../../__internal/core/utils/m_ajax */ 14136); exports.default = _m_ajax.Ajax; module.exports = exports.default; module.exports.default = exports.default }, 28248: /*!**********************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/core/utils/ajax_utils.js ***! \**********************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "evalCrossDomainScript", { enumerable: true, get: function() { return _m_ajax_utils.evalCrossDomainScript } }); Object.defineProperty(exports, "evalScript", { enumerable: true, get: function() { return _m_ajax_utils.evalScript } }); Object.defineProperty(exports, "getAcceptHeader", { enumerable: true, get: function() { return _m_ajax_utils.getAcceptHeader } }); Object.defineProperty(exports, "getJsonpCallbackName", { enumerable: true, get: function() { return _m_ajax_utils.getJsonpCallbackName } }); Object.defineProperty(exports, "getMethod", { enumerable: true, get: function() { return _m_ajax_utils.getMethod } }); Object.defineProperty(exports, "getRequestHeaders", { enumerable: true, get: function() { return _m_ajax_utils.getRequestHeaders } }); Object.defineProperty(exports, "getRequestOptions", { enumerable: true, get: function() { return _m_ajax_utils.getRequestOptions } }); Object.defineProperty(exports, "isCrossDomain", { enumerable: true, get: function() { return _m_ajax_utils.isCrossDomain } }); var _m_ajax_utils = __webpack_require__( /*! ../../__internal/core/utils/m_ajax_utils */ 42202) }, 94487: /*!*****************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/core/utils/array.js ***! \*****************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "getIntersection", { enumerable: true, get: function() { return _m_array.getIntersection } }); Object.defineProperty(exports, "getUniqueValues", { enumerable: true, get: function() { return _m_array.getUniqueValues } }); Object.defineProperty(exports, "groupBy", { enumerable: true, get: function() { return _m_array.groupBy } }); Object.defineProperty(exports, "normalizeIndexes", { enumerable: true, get: function() { return _m_array.normalizeIndexes } }); Object.defineProperty(exports, "removeDuplicates", { enumerable: true, get: function() { return _m_array.removeDuplicates } }); Object.defineProperty(exports, "wrapToArray", { enumerable: true, get: function() { return _m_array.wrapToArray } }); var _m_array = __webpack_require__( /*! ../../__internal/core/utils/m_array */ 28601) }, 13387: /*!*************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/core/utils/array_compare.js ***! \*************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "findChanges", { enumerable: true, get: function() { return _m_array_compare.findChanges } }); Object.defineProperty(exports, "isKeysEqual", { enumerable: true, get: function() { return _m_array_compare.isKeysEqual } }); var _m_array_compare = __webpack_require__( /*! ../../__internal/core/utils/m_array_compare */ 87525) }, 48314: /*!*******************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/core/utils/browser.js ***! \*******************************************************************/ function(module, exports, __webpack_require__) { exports.default = void 0; var _m_browser = __webpack_require__( /*! ../../__internal/core/utils/m_browser */ 33436); exports.default = _m_browser.browser; module.exports = exports.default; module.exports.default = exports.default }, 13630: /*!*********************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/core/utils/call_once.js ***! \*********************************************************************/ function(module, exports, __webpack_require__) { exports.default = void 0; var _m_call_once = __webpack_require__( /*! ../../__internal/core/utils/m_call_once */ 58060); exports.default = _m_call_once.callOnce; module.exports = exports.default; module.exports.default = exports.default }, 84718: /*!*********************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/core/utils/callbacks.js ***! \*********************************************************************/ function(module, exports, __webpack_require__) { exports.default = void 0; var _m_callbacks = __webpack_require__( /*! ../../__internal/core/utils/m_callbacks */ 63172); exports.default = _m_callbacks.Callbacks; module.exports = exports.default; module.exports.default = exports.default }, 17781: /*!******************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/core/utils/common.js ***! \******************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "applyServerDecimalSeparator", { enumerable: true, get: function() { return _m_common.applyServerDecimalSeparator } }); Object.defineProperty(exports, "asyncNoop", { enumerable: true, get: function() { return _m_common.asyncNoop } }); Object.defineProperty(exports, "deferRender", { enumerable: true, get: function() { return _m_common.deferRender } }); Object.defineProperty(exports, "deferRenderer", { enumerable: true, get: function() { return _m_common.deferRenderer } }); Object.defineProperty(exports, "deferUpdate", { enumerable: true, get: function() { return _m_common.deferUpdate } }); Object.defineProperty(exports, "deferUpdater", { enumerable: true, get: function() { return _m_common.deferUpdater } }); Object.defineProperty(exports, "denormalizeKey", { enumerable: true, get: function() { return _m_common.denormalizeKey } }); Object.defineProperty(exports, "ensureDefined", { enumerable: true, get: function() { return _m_common.ensureDefined } }); Object.defineProperty(exports, "equalByValue", { enumerable: true, get: function() { return _m_common.equalByValue } }); Object.defineProperty(exports, "escapeRegExp", { enumerable: true, get: function() { return _m_common.escapeRegExp } }); Object.defineProperty(exports, "executeAsync", { enumerable: true, get: function() { return _m_common.executeAsync } }); Object.defineProperty(exports, "findBestMatches", { enumerable: true, get: function() { return _m_common.findBestMatches } }); Object.defineProperty(exports, "getKeyHash", { enumerable: true, get: function() { return _m_common.getKeyHash } }); Object.defineProperty(exports, "grep", { enumerable: true, get: function() { return _m_common.grep } }); Object.defineProperty(exports, "noop", { enumerable: true, get: function() { return _m_common.noop } }); Object.defineProperty(exports, "normalizeKey", { enumerable: true, get: function() { return _m_common.normalizeKey } }); Object.defineProperty(exports, "pairToObject", { enumerable: true, get: function() { return _m_common.pairToObject } }); Object.defineProperty(exports, "splitPair", { enumerable: true, get: function() { return _m_common.splitPair } }); var _m_common = __webpack_require__( /*! ../../__internal/core/utils/m_common */ 39315) }, 60648: /*!**********************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/core/utils/comparator.js ***! \**********************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "equals", { enumerable: true, get: function() { return _m_comparator.equals } }); var _m_comparator = __webpack_require__( /*! ../../__internal/core/utils/m_comparator */ 90834) }, 31951: /*!*******************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/core/utils/console.js ***! \*******************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "debug", { enumerable: true, get: function() { return _m_console.debug } }); Object.defineProperty(exports, "logger", { enumerable: true, get: function() { return _m_console.logger } }); var _m_console = __webpack_require__( /*! ../../__internal/core/utils/m_console */ 35005) }, 31e3: /*!****************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/core/utils/data.js ***! \****************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "compileGetter", { enumerable: true, get: function() { return _m_data.compileGetter } }); Object.defineProperty(exports, "compileSetter", { enumerable: true, get: function() { return _m_data.compileSetter } }); Object.defineProperty(exports, "getPathParts", { enumerable: true, get: function() { return _m_data.getPathParts } }); Object.defineProperty(exports, "toComparable", { enumerable: true, get: function() { return _m_data.toComparable } }); var _m_data = __webpack_require__( /*! ../../__internal/core/utils/m_data */ 93142) }, 41380: /*!****************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/core/utils/date.js ***! \****************************************************************/ function(module, exports, __webpack_require__) { exports.default = void 0; var _m_date = __webpack_require__( /*! ../../__internal/core/utils/m_date */ 66570); exports.default = _m_date.dateUtils; module.exports = exports.default; module.exports.default = exports.default }, 71051: /*!******************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/core/utils/date_serialization.js ***! \******************************************************************************/ function(module, exports, __webpack_require__) { exports.default = void 0; var _m_date_serialization = __webpack_require__( /*! ../../__internal/core/utils/m_date_serialization */ 62897); exports.default = _m_date_serialization.dateSerialization; module.exports = exports.default; module.exports.default = exports.default }, 87739: /*!********************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/core/utils/deferred.js ***! \********************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "Deferred", { enumerable: true, get: function() { return _m_deferred.Deferred } }); Object.defineProperty(exports, "fromPromise", { enumerable: true, get: function() { return _m_deferred.fromPromise } }); Object.defineProperty(exports, "setStrategy", { enumerable: true, get: function() { return _m_deferred.setStrategy } }); Object.defineProperty(exports, "when", { enumerable: true, get: function() { return _m_deferred.when } }); var _m_deferred = __webpack_require__( /*! ../../__internal/core/utils/m_deferred */ 77117) }, 89656: /*!*******************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/core/utils/dependency_injector.js ***! \*******************************************************************************/ function(module, exports, __webpack_require__) { exports.default = void 0; var _m_dependency_injector = __webpack_require__( /*! ../../__internal/core/utils/m_dependency_injector */ 62142); exports.default = _m_dependency_injector.injector; module.exports = exports.default; module.exports.default = exports.default }, 86858: /*!***************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/core/utils/dom.js ***! \***************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "clearSelection", { enumerable: true, get: function() { return _m_dom.clearSelection } }); Object.defineProperty(exports, "clipboardText", { enumerable: true, get: function() { return _m_dom.clipboardText } }); Object.defineProperty(exports, "closestCommonParent", { enumerable: true, get: function() { return _m_dom.closestCommonParent } }); Object.defineProperty(exports, "contains", { enumerable: true, get: function() { return _m_dom.contains } }); Object.defineProperty(exports, "createTextElementHiddenCopy", { enumerable: true, get: function() { return _m_dom.createTextElementHiddenCopy } }); Object.defineProperty(exports, "extractTemplateMarkup", { enumerable: true, get: function() { return _m_dom.extractTemplateMarkup } }); Object.defineProperty(exports, "insertBefore", { enumerable: true, get: function() { return _m_dom.insertBefore } }); Object.defineProperty(exports, "isElementInDom", { enumerable: true, get: function() { return _m_dom.isElementInDom } }); Object.defineProperty(exports, "normalizeTemplateElement", { enumerable: true, get: function() { return _m_dom.normalizeTemplateElement } }); Object.defineProperty(exports, "replaceWith", { enumerable: true, get: function() { return _m_dom.replaceWith } }); Object.defineProperty(exports, "resetActiveElement", { enumerable: true, get: function() { return _m_dom.resetActiveElement } }); var _m_dom = __webpack_require__( /*! ../../__internal/core/utils/m_dom */ 76400) }, 67264: /*!*****************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/core/utils/error.js ***! \*****************************************************************/ function(module, exports, __webpack_require__) { exports.default = void 0; var _m_error = __webpack_require__( /*! ../../__internal/core/utils/m_error */ 40818); exports.default = _m_error.error; module.exports = exports.default; module.exports.default = exports.default }, 52576: /*!******************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/core/utils/extend.js ***! \******************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "extend", { enumerable: true, get: function() { return _m_extend.extend } }); Object.defineProperty(exports, "extendFromObject", { enumerable: true, get: function() { return _m_extend.extendFromObject } }); var _m_extend = __webpack_require__( /*! ../../__internal/core/utils/m_extend */ 96298) }, 23563: /*!***********************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/core/utils/html_parser.js ***! \***********************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "isTablePart", { enumerable: true, get: function() { return _m_html_parser.isTablePart } }); Object.defineProperty(exports, "parseHTML", { enumerable: true, get: function() { return _m_html_parser.parseHTML } }); var _m_html_parser = __webpack_require__( /*! ../../__internal/core/utils/m_html_parser */ 25317) }, 69629: /*!****************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/core/utils/icon.js ***! \****************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "getImageContainer", { enumerable: true, get: function() { return _m_icon.getImageContainer } }); Object.defineProperty(exports, "getImageSourceType", { enumerable: true, get: function() { return _m_icon.getImageSourceType } }); var _m_icon = __webpack_require__( /*! ../../__internal/core/utils/m_icon */ 42463) }, 53124: /*!*********************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/core/utils/inflector.js ***! \*********************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "camelize", { enumerable: true, get: function() { return _m_inflector.camelize } }); Object.defineProperty(exports, "captionize", { enumerable: true, get: function() { return _m_inflector.captionize } }); Object.defineProperty(exports, "dasherize", { enumerable: true, get: function() { return _m_inflector.dasherize } }); Object.defineProperty(exports, "humanize", { enumerable: true, get: function() { return _m_inflector.humanize } }); Object.defineProperty(exports, "titleize", { enumerable: true, get: function() { return _m_inflector.titleize } }); Object.defineProperty(exports, "underscore", { enumerable: true, get: function() { return _m_inflector.underscore } }); var _m_inflector = __webpack_require__( /*! ../../__internal/core/utils/m_inflector */ 66122) }, 21274: /*!********************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/core/utils/iterator.js ***! \********************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "each", { enumerable: true, get: function() { return _m_iterator.each } }); Object.defineProperty(exports, "map", { enumerable: true, get: function() { return _m_iterator.map } }); Object.defineProperty(exports, "reverseEach", { enumerable: true, get: function() { return _m_iterator.reverseEach } }); var _m_iterator = __webpack_require__( /*! ../../__internal/core/utils/m_iterator */ 26044) }, 50512: /*!******************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/core/utils/locker.js ***! \******************************************************************/ function(module, exports, __webpack_require__) { exports.default = void 0; var _m_locker = __webpack_require__( /*! ../../__internal/core/utils/m_locker */ 24574); exports.default = _m_locker.Locker; module.exports = exports.default; module.exports.default = exports.default }, 50254: /*!****************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/core/utils/math.js ***! \****************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "adjust", { enumerable: true, get: function() { return _m_math.adjust } }); Object.defineProperty(exports, "fitIntoRange", { enumerable: true, get: function() { return _m_math.fitIntoRange } }); Object.defineProperty(exports, "getExponent", { enumerable: true, get: function() { return _m_math.getExponent } }); Object.defineProperty(exports, "getExponentLength", { enumerable: true, get: function() { return _m_math.getExponentLength } }); Object.defineProperty(exports, "getPrecision", { enumerable: true, get: function() { return _m_math.getPrecision } }); Object.defineProperty(exports, "getRemainderByDivision", { enumerable: true, get: function() { return _m_math.getRemainderByDivision } }); Object.defineProperty(exports, "getRoot", { enumerable: true, get: function() { return _m_math.getRoot } }); Object.defineProperty(exports, "inRange", { enumerable: true, get: function() { return _m_math.inRange } }); Object.defineProperty(exports, "multiplyInExponentialForm", { enumerable: true, get: function() { return _m_math.multiplyInExponentialForm } }); Object.defineProperty(exports, "roundFloatPart", { enumerable: true, get: function() { return _m_math.roundFloatPart } }); Object.defineProperty(exports, "sign", { enumerable: true, get: function() { return _m_math.sign } }); Object.defineProperty(exports, "solveCubicEquation", { enumerable: true, get: function() { return _m_math.solveCubicEquation } }); Object.defineProperty(exports, "trunc", { enumerable: true, get: function() { return _m_math.trunc } }); var _m_math = __webpack_require__( /*! ../../__internal/core/utils/m_math */ 80764) }, 22263: /*!******************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/core/utils/object.js ***! \******************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "clone", { enumerable: true, get: function() { return _m_object.clone } }); Object.defineProperty(exports, "deepExtendArraySafe", { enumerable: true, get: function() { return _m_object.deepExtendArraySafe } }); Object.defineProperty(exports, "legacyAssign", { enumerable: true, get: function() { return _m_object.legacyAssign } }); Object.defineProperty(exports, "newAssign", { enumerable: true, get: function() { return _m_object.newAssign } }); Object.defineProperty(exports, "orderEach", { enumerable: true, get: function() { return _m_object.orderEach } }); var _m_object = __webpack_require__( /*! ../../__internal/core/utils/m_object */ 86005) }, 41639: /*!********************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/core/utils/position.js ***! \********************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "getBoundingRect", { enumerable: true, get: function() { return _m_position.getBoundingRect } }); Object.defineProperty(exports, "getDefaultAlignment", { enumerable: true, get: function() { return _m_position.getDefaultAlignment } }); var _m_position = __webpack_require__( /*! ../../__internal/core/utils/m_position */ 80125) }, 85521: /*!****************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/core/utils/public_component.js ***! \****************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "attachInstanceToElement", { enumerable: true, get: function() { return _m_public_component.attachInstanceToElement } }); Object.defineProperty(exports, "getInstanceByElement", { enumerable: true, get: function() { return _m_public_component.getInstanceByElement } }); Object.defineProperty(exports, "name", { enumerable: true, get: function() { return _m_public_component.name } }); var _m_public_component = __webpack_require__( /*! ../../__internal/core/utils/m_public_component */ 871) }, 65221: /*!*****************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/core/utils/queue.js ***! \*****************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "create", { enumerable: true, get: function() { return _m_queue.create } }); Object.defineProperty(exports, "enqueue", { enumerable: true, get: function() { return _m_queue.enqueue } }); var _m_queue = __webpack_require__( /*! ../../__internal/core/utils/m_queue */ 52799) }, 3122: /*!***************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/core/utils/ready_callbacks.js ***! \***************************************************************************/ function(module, exports, __webpack_require__) { exports.default = void 0; var _m_ready_callbacks = __webpack_require__( /*! ../../__internal/core/utils/m_ready_callbacks */ 18344); exports.default = _m_ready_callbacks.readyCallbacksModule; module.exports = exports.default; module.exports.default = exports.default }, 63283: /*!****************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/core/utils/resize_callbacks.js ***! \****************************************************************************/ function(module, exports, __webpack_require__) { exports.default = void 0; var _m_resize_callbacks = __webpack_require__( /*! ../../__internal/core/utils/m_resize_callbacks */ 33717); exports.default = _m_resize_callbacks.resizeCallbacks; module.exports = exports.default; module.exports.default = exports.default }, 52877: /*!****************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/core/utils/selection_filter.js ***! \****************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "SelectionFilterCreator", { enumerable: true, get: function() { return _m_selection_filter.SelectionFilterCreator } }); var _m_selection_filter = __webpack_require__( /*! ../../__internal/core/utils/m_selection_filter */ 67135) }, 93631: /*!**********************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/core/utils/shadow_dom.js ***! \**********************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "addShadowDomStyles", { enumerable: true, get: function() { return _m_shadow_dom.addShadowDomStyles } }); Object.defineProperty(exports, "getShadowElementsFromPoint", { enumerable: true, get: function() { return _m_shadow_dom.getShadowElementsFromPoint } }); var _m_shadow_dom = __webpack_require__( /*! ../../__internal/core/utils/m_shadow_dom */ 17113) }, 57653: /*!****************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/core/utils/size.js ***! \****************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "addOffsetToMaxHeight", { enumerable: true, get: function() { return _m_size.addOffsetToMaxHeight } }); Object.defineProperty(exports, "addOffsetToMinHeight", { enumerable: true, get: function() { return _m_size.addOffsetToMinHeight } }); Object.defineProperty(exports, "getElementBoxParams", { enumerable: true, get: function() { return _m_size.getElementBoxParams } }); Object.defineProperty(exports, "getHeight", { enumerable: true, get: function() { return _m_size.getHeight } }); Object.defineProperty(exports, "getInnerHeight", { enumerable: true, get: function() { return _m_size.getInnerHeight } }); Object.defineProperty(exports, "getInnerWidth", { enumerable: true, get: function() { return _m_size.getInnerWidth } }); Object.defineProperty(exports, "getOffset", { enumerable: true, get: function() { return _m_size.getOffset } }); Object.defineProperty(exports, "getOuterHeight", { enumerable: true, get: function() { return _m_size.getOuterHeight } }); Object.defineProperty(exports, "getOuterWidth", { enumerable: true, get: function() { return _m_size.getOuterWidth } }); Object.defineProperty(exports, "getSize", { enumerable: true, get: function() { return _m_size.getSize } }); Object.defineProperty(exports, "getVerticalOffsets", { enumerable: true, get: function() { return _m_size.getVerticalOffsets } }); Object.defineProperty(exports, "getVisibleHeight", { enumerable: true, get: function() { return _m_size.getVisibleHeight } }); Object.defineProperty(exports, "getWidth", { enumerable: true, get: function() { return _m_size.getWidth } }); Object.defineProperty(exports, "getWindowByElement", { enumerable: true, get: function() { return _m_size.getWindowByElement } }); Object.defineProperty(exports, "implementationsMap", { enumerable: true, get: function() { return _m_size.implementationsMap } }); Object.defineProperty(exports, "parseHeight", { enumerable: true, get: function() { return _m_size.parseHeight } }); Object.defineProperty(exports, "setHeight", { enumerable: true, get: function() { return _m_size.setHeight } }); Object.defineProperty(exports, "setInnerHeight", { enumerable: true, get: function() { return _m_size.setInnerHeight } }); Object.defineProperty(exports, "setInnerWidth", { enumerable: true, get: function() { return _m_size.setInnerWidth } }); Object.defineProperty(exports, "setOuterHeight", { enumerable: true, get: function() { return _m_size.setOuterHeight } }); Object.defineProperty(exports, "setOuterWidth", { enumerable: true, get: function() { return _m_size.setOuterWidth } }); Object.defineProperty(exports, "setWidth", { enumerable: true, get: function() { return _m_size.setWidth } }); var _m_size = __webpack_require__( /*! ../../__internal/core/utils/m_size */ 64587) }, 98479: /*!*******************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/core/utils/storage.js ***! \*******************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "sessionStorage", { enumerable: true, get: function() { return _m_storage.sessionStorage } }); var _m_storage = __webpack_require__( /*! ../../__internal/core/utils/m_storage */ 47865) }, 54497: /*!******************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/core/utils/string.js ***! \******************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "encodeHtml", { enumerable: true, get: function() { return _m_string.encodeHtml } }); Object.defineProperty(exports, "format", { enumerable: true, get: function() { return _m_string.format } }); Object.defineProperty(exports, "isEmpty", { enumerable: true, get: function() { return _m_string.isEmpty } }); Object.defineProperty(exports, "quadToObject", { enumerable: true, get: function() { return _m_string.quadToObject } }); var _m_string = __webpack_require__( /*! ../../__internal/core/utils/m_string */ 32527) }, 45479: /*!*****************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/core/utils/stubs.js ***! \*****************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "stubComponent", { enumerable: true, get: function() { return _m_stubs.stubComponent } }); var _m_stubs = __webpack_require__( /*! ../../__internal/core/utils/m_stubs */ 47453) }, 58515: /*!*****************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/core/utils/style.js ***! \*****************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "normalizeStyleProp", { enumerable: true, get: function() { return _m_style.normalizeStyleProp } }); Object.defineProperty(exports, "parsePixelValue", { enumerable: true, get: function() { return _m_style.parsePixelValue } }); Object.defineProperty(exports, "setHeight", { enumerable: true, get: function() { return _m_style.setHeight } }); Object.defineProperty(exports, "setStyle", { enumerable: true, get: function() { return _m_style.setStyle } }); Object.defineProperty(exports, "setWidth", { enumerable: true, get: function() { return _m_style.setWidth } }); Object.defineProperty(exports, "styleProp", { enumerable: true, get: function() { return _m_style.styleProp } }); Object.defineProperty(exports, "stylePropPrefix", { enumerable: true, get: function() { return _m_style.stylePropPrefix } }); var _m_style = __webpack_require__( /*! ../../__internal/core/utils/m_style */ 11953) }, 4785: /*!*******************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/core/utils/support.js ***! \*******************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "animation", { enumerable: true, get: function() { return _m_support.animation } }); Object.defineProperty(exports, "inputType", { enumerable: true, get: function() { return _m_support.inputType } }); Object.defineProperty(exports, "nativeScrolling", { enumerable: true, get: function() { return _m_support.nativeScrolling } }); Object.defineProperty(exports, "pointerEvents", { enumerable: true, get: function() { return _m_support.pointerEvents } }); Object.defineProperty(exports, "styleProp", { enumerable: true, get: function() { return _m_support.styleProp } }); Object.defineProperty(exports, "stylePropPrefix", { enumerable: true, get: function() { return _m_support.stylePropPrefix } }); Object.defineProperty(exports, "supportProp", { enumerable: true, get: function() { return _m_support.supportProp } }); Object.defineProperty(exports, "touch", { enumerable: true, get: function() { return _m_support.touch } }); Object.defineProperty(exports, "touchEvents", { enumerable: true, get: function() { return _m_support.touchEvents } }); Object.defineProperty(exports, "transition", { enumerable: true, get: function() { return _m_support.transition } }); Object.defineProperty(exports, "transitionEndEventName", { enumerable: true, get: function() { return _m_support.transitionEndEventName } }); var _m_support = __webpack_require__( /*! ../../__internal/core/utils/m_support */ 85991) }, 47420: /*!***************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/core/utils/svg.js ***! \***************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "HIDDEN_FOR_EXPORT", { enumerable: true, get: function() { return _m_svg.HIDDEN_FOR_EXPORT } }); Object.defineProperty(exports, "getSvgElement", { enumerable: true, get: function() { return _m_svg.getSvgElement } }); Object.defineProperty(exports, "getSvgMarkup", { enumerable: true, get: function() { return _m_svg.getSvgMarkup } }); var _m_svg = __webpack_require__( /*! ../../__internal/core/utils/m_svg */ 89650) }, 49194: /*!****************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/core/utils/template_manager.js ***! \****************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "acquireIntegrationTemplate", { enumerable: true, get: function() { return _m_template_manager.acquireIntegrationTemplate } }); Object.defineProperty(exports, "acquireTemplate", { enumerable: true, get: function() { return _m_template_manager.acquireTemplate } }); Object.defineProperty(exports, "addOneRenderedCall", { enumerable: true, get: function() { return _m_template_manager.addOneRenderedCall } }); Object.defineProperty(exports, "addPublicElementNormalization", { enumerable: true, get: function() { return _m_template_manager.addPublicElementNormalization } }); Object.defineProperty(exports, "defaultCreateElement", { enumerable: true, get: function() { return _m_template_manager.defaultCreateElement } }); Object.defineProperty(exports, "findTemplates", { enumerable: true, get: function() { return _m_template_manager.findTemplates } }); Object.defineProperty(exports, "getNormalizedTemplateArgs", { enumerable: true, get: function() { return _m_template_manager.getNormalizedTemplateArgs } }); Object.defineProperty(exports, "suitableTemplatesByName", { enumerable: true, get: function() { return _m_template_manager.suitableTemplatesByName } }); Object.defineProperty(exports, "templateKey", { enumerable: true, get: function() { return _m_template_manager.templateKey } }); Object.defineProperty(exports, "validateTemplateSource", { enumerable: true, get: function() { return _m_template_manager.validateTemplateSource } }); var _m_template_manager = __webpack_require__( /*! ../../__internal/core/utils/m_template_manager */ 91008) }, 11528: /*!****************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/core/utils/type.js ***! \****************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "isBoolean", { enumerable: true, get: function() { return _m_type.isBoolean } }); Object.defineProperty(exports, "isDate", { enumerable: true, get: function() { return _m_type.isDate } }); Object.defineProperty(exports, "isDeferred", { enumerable: true, get: function() { return _m_type.isDeferred } }); Object.defineProperty(exports, "isDefined", { enumerable: true, get: function() { return _m_type.isDefined } }); Object.defineProperty(exports, "isEmptyObject", { enumerable: true, get: function() { return _m_type.isEmptyObject } }); Object.defineProperty(exports, "isEvent", { enumerable: true, get: function() { return _m_type.isEvent } }); Object.defineProperty(exports, "isExponential", { enumerable: true, get: function() { return _m_type.isExponential } }); Object.defineProperty(exports, "isFunction", { enumerable: true, get: function() { return _m_type.isFunction } }); Object.defineProperty(exports, "isNumeric", { enumerable: true, get: function() { return _m_type.isNumeric } }); Object.defineProperty(exports, "isObject", { enumerable: true, get: function() { return _m_type.isObject } }); Object.defineProperty(exports, "isPlainObject", { enumerable: true, get: function() { return _m_type.isPlainObject } }); Object.defineProperty(exports, "isPrimitive", { enumerable: true, get: function() { return _m_type.isPrimitive } }); Object.defineProperty(exports, "isPromise", { enumerable: true, get: function() { return _m_type.isPromise } }); Object.defineProperty(exports, "isRenderer", { enumerable: true, get: function() { return _m_type.isRenderer } }); Object.defineProperty(exports, "isString", { enumerable: true, get: function() { return _m_type.isString } }); Object.defineProperty(exports, "isWindow", { enumerable: true, get: function() { return _m_type.isWindow } }); Object.defineProperty(exports, "type", { enumerable: true, get: function() { return _m_type.type } }); var _m_type = __webpack_require__( /*! ../../__internal/core/utils/m_type */ 39918) }, 40216: /*!****************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/core/utils/variable_wrapper.js ***! \****************************************************************************/ function(module, exports, __webpack_require__) { exports.default = void 0; var _m_variable_wrapper = __webpack_require__( /*! ../../__internal/core/utils/m_variable_wrapper */ 66082); exports.default = _m_variable_wrapper.variableWrapper; module.exports = exports.default; module.exports.default = exports.default }, 20142: /*!*******************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/core/utils/version.js ***! \*******************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "compare", { enumerable: true, get: function() { return _m_version.compare } }); var _m_version = __webpack_require__( /*! ../../__internal/core/utils/m_version */ 5388) }, 55355: /*!*********************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/core/utils/view_port.js ***! \*********************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "changeCallback", { enumerable: true, get: function() { return _m_view_port.changeCallback } }); Object.defineProperty(exports, "originalViewPort", { enumerable: true, get: function() { return _m_view_port.originalViewPort } }); Object.defineProperty(exports, "value", { enumerable: true, get: function() { return _m_view_port.value } }); var _m_view_port = __webpack_require__( /*! ../../__internal/core/utils/m_view_port */ 65913) }, 3104: /*!******************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/core/utils/window.js ***! \******************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "defaultScreenFactorFunc", { enumerable: true, get: function() { return _m_window.defaultScreenFactorFunc } }); Object.defineProperty(exports, "getCurrentScreenFactor", { enumerable: true, get: function() { return _m_window.getCurrentScreenFactor } }); Object.defineProperty(exports, "getNavigator", { enumerable: true, get: function() { return _m_window.getNavigator } }); Object.defineProperty(exports, "getWindow", { enumerable: true, get: function() { return _m_window.getWindow } }); Object.defineProperty(exports, "hasProperty", { enumerable: true, get: function() { return _m_window.hasProperty } }); Object.defineProperty(exports, "hasWindow", { enumerable: true, get: function() { return _m_window.hasWindow } }); Object.defineProperty(exports, "setWindow", { enumerable: true, get: function() { return _m_window.setWindow } }); var _m_window = __webpack_require__( /*! ../../__internal/core/utils/m_window */ 14470) }, 1956: /*!*************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/core/version.js ***! \*************************************************************/ function(__unused_webpack_module, exports) { exports.version = exports.fullVersion = void 0; exports.version = "25.1.3"; exports.fullVersion = "25.1.3" }, 48367: /*!*******************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/core/version_check.js ***! \*******************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "c", { enumerable: true, get: function() { return _version.assertDevExtremeVersion } }); var _version = __webpack_require__( /*! ../__internal/utils/version */ 20258) }, 77735: /*!********************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/data/abstract_store.js ***! \********************************************************************/ function(module, exports, __webpack_require__) { Object.defineProperty(exports, "default", { enumerable: true, get: function() { return _abstract_store.default } }); var _abstract_store = (e = __webpack_require__( /*! ../common/data/abstract_store */ 5995), e && e.__esModule ? e : { default: e }); var e; module.exports = exports.default; module.exports.default = exports.default }, 50797: /*!*******************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/data/apply_changes.js ***! \*******************************************************************/ function(module, exports, __webpack_require__) { exports.default = void 0; var _data = __webpack_require__( /*! ../common/data */ 11036); exports.default = _data.applyChanges; module.exports = exports.default; module.exports.default = exports.default }, 67664: /*!*****************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/data/array_store.js ***! \*****************************************************************/ function(module, exports, __webpack_require__) { exports.default = void 0; var _array_store = (e = __webpack_require__( /*! ../common/data/array_store */ 80556), e && e.__esModule ? e : { default: e }); var e; exports.default = _array_store.default; module.exports = exports.default; module.exports.default = exports.default }, 37754: /*!******************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/data/custom_store.js ***! \******************************************************************/ function(module, exports, __webpack_require__) { exports.default = void 0; var _custom_store = __webpack_require__( /*! ../common/data/custom_store */ 63326); exports.default = _custom_store.CustomStore; module.exports = exports.default; module.exports.default = exports.default }, 47283: /*!*****************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/data/data_source.js ***! \*****************************************************************/ function(module, exports, __webpack_require__) { exports.default = void 0; var _data_source = (e = __webpack_require__( /*! ../common/data/data_source */ 14479), e && e.__esModule ? e : { default: e }); var e; exports.default = _data_source.default; module.exports = exports.default; module.exports.default = exports.default }, 15125: /*!***********************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/data/data_source/utils.js ***! \***********************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { var _utils = __webpack_require__( /*! ../../common/data/data_source/utils */ 97169); Object.keys(_utils).forEach((function(key) { if ("default" === key || "__esModule" === key) { return } if (key in exports && exports[key] === _utils[key]) { return } Object.defineProperty(exports, key, { enumerable: true, get: function() { return _utils[key] } }) })) }, 73192: /*!***********************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/data/endpoint_selector.js ***! \***********************************************************************/ function(module, exports, __webpack_require__) { exports.default = void 0; var _endpoint_selector = (e = __webpack_require__( /*! ../common/data/endpoint_selector */ 44180), e && e.__esModule ? e : { default: e }); var e; exports.default = _endpoint_selector.default; module.exports = exports.default; module.exports.default = exports.default }, 74760: /*!************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/data/errors.js ***! \************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "errorHandler", { enumerable: true, get: function() { return _errors.errorHandler } }); Object.defineProperty(exports, "setErrorHandler", { enumerable: true, get: function() { return _data.setErrorHandler } }); var _data = __webpack_require__( /*! ../common/data */ 11036); var _errors = __webpack_require__( /*! ../common/data/errors */ 82812) }, 1242: /*!*****************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/data/local_store.js ***! \*****************************************************************/ function(module, exports, __webpack_require__) { exports.default = void 0; var _local_store = (e = __webpack_require__( /*! ../common/data/local_store */ 71790), e && e.__esModule ? e : { default: e }); var e; exports.default = _local_store.default; module.exports = exports.default; module.exports.default = exports.default }, 87062: /*!*******************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/data/odata/context.js ***! \*******************************************************************/ function(module, exports, __webpack_require__) { exports.default = void 0; var _context = (e = __webpack_require__( /*! ../../common/data/odata/context */ 34170), e && e.__esModule ? e : { default: e }); var e; exports.default = _context.default; module.exports = exports.default; module.exports.default = exports.default }, 25184: /*!*****************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/data/odata/store.js ***! \*****************************************************************/ function(module, exports, __webpack_require__) { exports.default = void 0; var _store = (e = __webpack_require__( /*! ../../common/data/odata/store */ 29284), e && e.__esModule ? e : { default: e }); var e; exports.default = _store.default; module.exports = exports.default; module.exports.default = exports.default }, 57076: /*!*****************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/data/odata/utils.js ***! \*****************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { var _utils = __webpack_require__( /*! ../../common/data/odata/utils */ 8056); Object.keys(_utils).forEach((function(key) { if ("default" === key || "__esModule" === key) { return } if (key in exports && exports[key] === _utils[key]) { return } Object.defineProperty(exports, key, { enumerable: true, get: function() { return _utils[key] } }) })) }, 22567: /*!***********************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/data/query.js ***! \***********************************************************/ function(module, exports, __webpack_require__) { exports.default = void 0; var _data = __webpack_require__( /*! ../common/data */ 11036); exports.default = _data.query; module.exports = exports.default; module.exports.default = exports.default }, 99354: /*!***********************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/data/utils.js ***! \***********************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { var _utils = __webpack_require__( /*! ../common/data/utils */ 89358); Object.keys(_utils).forEach((function(key) { if ("default" === key || "__esModule" === key) { return } if (key in exports && exports[key] === _utils[key]) { return } Object.defineProperty(exports, key, { enumerable: true, get: function() { return _utils[key] } }) })) }, 14531: /*!****************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/data_controller.js ***! \****************************************************************/ function(module, exports, __webpack_require__) { exports.default = void 0; var _data_controller = (e = __webpack_require__( /*! ./__internal/data/data_controller/data_controller */ 11774), e && e.__esModule ? e : { default: e }); var e; exports.default = _data_controller.default; module.exports = exports.default; module.exports.default = exports.default }, 87755: /*!************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/data_helper.js ***! \************************************************************/ function(module, exports, __webpack_require__) { exports.default = void 0; var _m_data_helper = __webpack_require__( /*! ./__internal/data/m_data_helper */ 16780); exports.default = _m_data_helper.DataHelperMixin; module.exports = exports.default; module.exports.default = exports.default }, 10714: /*!********************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/events/events.types.js ***! \********************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { exports.triggerHandler = void 0; var _events_engine = (e = __webpack_require__( /*! ../common/core/events/core/events_engine */ 92774), e && e.__esModule ? e : { default: e }); var e; exports.triggerHandler = _events_engine.default.triggerHandler }, 69786: /*!*************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/events/index.js ***! \*************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "off", { enumerable: true, get: function() { return _events.off } }); Object.defineProperty(exports, "on", { enumerable: true, get: function() { return _events.on } }); Object.defineProperty(exports, "one", { enumerable: true, get: function() { return _events.one } }); Object.defineProperty(exports, "trigger", { enumerable: true, get: function() { return _events.trigger } }); Object.defineProperty(exports, "triggerHandler", { enumerable: true, get: function() { return _events2.triggerHandler } }); var _events = __webpack_require__( /*! ../common/core/events */ 52391); var _events2 = __webpack_require__( /*! ./events.types */ 10714) }, 6285: /*!***************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/excel_exporter.js ***! \***************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "exportDataGrid", { enumerable: true, get: function() { return _excel.exportDataGrid } }); Object.defineProperty(exports, "exportPivotGrid", { enumerable: true, get: function() { return _excel.exportPivotGrid } }); var _excel = __webpack_require__( /*! ./common/export/excel */ 54594) }, 73549: /*!*********************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/exporter.js ***! \*********************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { exports.export = function(data, options, getData) { if (!data) { return (new _deferred.Deferred).resolve() } const exportingAction = options.exportingAction; const exportedAction = options.exportedAction; const fileSavingAction = options.fileSavingAction; const eventArgs = { fileName: options.fileName, format: options.format, cancel: false }; if ((0, _type.isBoolean)(options.selectedRowsOnly)) { eventArgs.selectedRowsOnly = options.selectedRowsOnly }(0, _type.isFunction)(exportingAction) && exportingAction(eventArgs); if (!eventArgs.cancel) { return getData(data, options).then((blob => { (0, _type.isFunction)(exportedAction) && exportedAction(); if ((0, _type.isFunction)(fileSavingAction)) { eventArgs.data = blob; fileSavingAction(eventArgs) } if (!eventArgs.cancel) { const format = "xlsx" === options.format ? "EXCEL" : options.format; _file_saver.fileSaver.saveAs(eventArgs.fileName, format, blob) } })) } return (new _deferred.Deferred).resolve() }; Object.defineProperty(exports, "fileSaver", { enumerable: true, get: function() { return _file_saver.fileSaver } }); exports.svg = exports.pdf = exports.image = void 0; var _file_saver = __webpack_require__( /*! ./exporter/file_saver */ 34924); var _image_creator = __webpack_require__( /*! ./exporter/image_creator */ 28456); var _svg_creator = __webpack_require__( /*! ./exporter/svg_creator */ 86195); var _type = __webpack_require__( /*! ./core/utils/type */ 11528); var _deferred = __webpack_require__( /*! ./core/utils/deferred */ 87739); var _pdf_creator = __webpack_require__( /*! ./exporter/pdf_creator */ 49343); exports.image = { creator: _image_creator.imageCreator, getData: _image_creator.getData, testFormats: _image_creator.testFormats }; exports.pdf = { getData: _pdf_creator.getData }; exports.svg = { creator: _svg_creator.svgCreator, getData: _svg_creator.getData } }, 55972: /*!**********************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/exporter/common/export_load_panel.js ***! \**********************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { exports.ExportLoadPanel = void 0; var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../core/renderer */ 64553)); var _extend = __webpack_require__( /*! ../../core/utils/extend */ 52576); var _message = _interopRequireDefault(__webpack_require__( /*! ../../common/core/localization/message */ 4671)); var _type = __webpack_require__( /*! ../../core/utils/type */ 11528); var _load_panel = _interopRequireDefault(__webpack_require__( /*! ../../ui/load_panel */ 31876)); var _m_utils = _interopRequireDefault(__webpack_require__( /*! ../../__internal/grids/grid_core/m_utils */ 53226)); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } exports.ExportLoadPanel = class { constructor(component, $targetElement, $container, options) { this._$targetElement = $targetElement; this._$container = $container; this._loadPanel = component._createComponent((0, _renderer.default)("<div>").addClass("dx-export-loadpanel").appendTo(this._$container), _load_panel.default, this.getOptions(options)) } getDefaultOptions() { return { animation: null, shading: false, height: 90, width: 200, container: this._$container } } getOptions(options) { if ((0, _type.isDefined)(options.text)) { options.message = options.text } else { options.message = _message.default.format("dxDataGrid-exporting") } return (0, _extend.extend)(this.getDefaultOptions(), options) } show() { this._loadPanel.option("position", _m_utils.default.calculateLoadPanelPosition(this._$targetElement)); this._loadPanel.show() } dispose() { (0, _renderer.default)(this._loadPanel.element()).remove(); delete this._loadPanel } } }, 60199: /*!************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/exporter/exceljs/export.js ***! \************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { exports.Export = void 0; var _type = __webpack_require__( /*! ../../core/utils/type */ 11528); var _export_format = __webpack_require__( /*! ./export_format */ 18053); var _extend = __webpack_require__( /*! ../../core/utils/extend */ 52576); var _export_load_panel = __webpack_require__( /*! ../common/export_load_panel */ 55972); var _window = __webpack_require__( /*! ../../core/utils/window */ 3104); exports.Export = { getFullOptions(options) { const fullOptions = (0, _extend.extend)({}, options); if (!((0, _type.isDefined)(fullOptions.worksheet) && (0, _type.isObject)(fullOptions.worksheet))) { throw Error('The "worksheet" field must contain an object.') } if (!(0, _type.isDefined)(fullOptions.topLeftCell)) { fullOptions.topLeftCell = { row: 1, column: 1 } } else if ((0, _type.isString)(fullOptions.topLeftCell)) { const { row: row, col: col } = fullOptions.worksheet.getCell(fullOptions.topLeftCell); fullOptions.topLeftCell = { row: row, column: col } } if (!(0, _type.isDefined)(fullOptions.keepColumnWidths)) { fullOptions.keepColumnWidths = true } if (!(0, _type.isDefined)(fullOptions.loadPanel)) { fullOptions.loadPanel = {} } if (!(0, _type.isDefined)(fullOptions.loadPanel.enabled)) { fullOptions.loadPanel.enabled = true } if (!(0, _type.isDefined)(fullOptions.encodeExecutableContent)) { fullOptions.encodeExecutableContent = false } return fullOptions }, convertDateForExcelJS: date => new Date(Date.UTC(date.getFullYear(), date.getMonth(), date.getDate(), date.getHours(), date.getMinutes(), date.getSeconds(), date.getMilliseconds())), setNumberFormat(excelCell, numberFormat) { excelCell.numFmt = numberFormat }, getCellStyles(dataProvider) { const styles = dataProvider.getStyles(); styles.forEach((style => { let numberFormat = this.tryConvertToExcelNumberFormat(style.format, style.dataType); if ((0, _type.isDefined)(numberFormat)) { numberFormat = numberFormat.replace(/"/g, '"') } style.numberFormat = numberFormat })); return styles }, tryConvertToExcelNumberFormat(format, dataType) { const newFormat = _export_format.ExportFormat.formatObjectConverter(format, dataType); const currency = newFormat.currency; format = newFormat.format; dataType = newFormat.dataType; return _export_format.ExportFormat.convertFormat(format, newFormat.precision, dataType, currency) }, setAlignment(excelCell, wrapText, horizontalAlignment) { excelCell.alignment = excelCell.alignment ?? {}; if ((0, _type.isDefined)(wrapText)) { excelCell.alignment.wrapText = wrapText } if ((0, _type.isDefined)(horizontalAlignment)) { excelCell.alignment.horizontal = horizontalAlignment } excelCell.alignment.vertical = "top" }, setColumnsWidth(worksheet, widths, startColumnIndex) { if (!(0, _type.isDefined)(widths)) { return } for (let i = 0; i < widths.length; i++) { const columnWidth = widths[i]; if ("number" === typeof columnWidth && isFinite(columnWidth)) { worksheet.getColumn(startColumnIndex + i).width = Math.min(255, Math.floor(columnWidth / 7 * 100) / 100) } } }, export (options, Helpers, getLoadPanelTargetElement, getLoadPanelContainer) { var _component$_getIntern; const { component: component, worksheet: worksheet, topLeftCell: topLeftCell, keepColumnWidths: keepColumnWidths, selectedRowsOnly: selectedRowsOnly, loadPanel: loadPanel, encodeExecutableContent: encodeExecutableContent } = options; const dataProvider = component.getDataProvider(selectedRowsOnly); const internalComponent = (null === (_component$_getIntern = component._getInternalInstance) || void 0 === _component$_getIntern ? void 0 : _component$_getIntern.call(component)) || component; const initialLoadPanelEnabledOption = internalComponent.option("loadPanel") && internalComponent.option("loadPanel").enabled; if (initialLoadPanelEnabledOption) { component.option("loadPanel.enabled", false) } let exportLoadPanel; if (loadPanel.enabled && (0, _window.hasWindow)()) { const $targetElement = getLoadPanelTargetElement(component); const $container = getLoadPanelContainer(component); exportLoadPanel = new _export_load_panel.ExportLoadPanel(component, $targetElement, $container, loadPanel); exportLoadPanel.show() } const wrapText = !!component.option("wordWrapEnabled"); worksheet.properties.outlineProperties = { summaryBelow: false, summaryRight: false }; const cellRange = { from: { row: topLeftCell.row, column: topLeftCell.column }, to: { row: topLeftCell.row, column: topLeftCell.column } }; return new Promise((resolve => { dataProvider.ready().done((() => { const columns = dataProvider.getColumns(); const dataRowsCount = dataProvider.getRowsCount(); const helpers = new Helpers(component, dataProvider, worksheet, options); if (keepColumnWidths) { this.setColumnsWidth(worksheet, dataProvider.getColumnsWidths(), cellRange.from.column) } helpers._exportAllFieldHeaders(columns, this.setAlignment); const fieldHeaderRowsCount = helpers._getFieldHeaderRowsCount(); cellRange.to.row = cellRange.from.row + fieldHeaderRowsCount; const styles = this.getCellStyles(dataProvider); for (let rowIndex = 0; rowIndex < dataRowsCount; rowIndex++) { const currentRowIndex = cellRange.from.row + fieldHeaderRowsCount + rowIndex; const row = worksheet.getRow(currentRowIndex); let startColumnIndex = 0; if (helpers._isRowFieldHeadersRow(rowIndex)) { startColumnIndex = dataProvider.getRowAreaColCount(); helpers._exportFieldHeaders("row", currentRowIndex, 0, startColumnIndex, this.setAlignment) } helpers._trySetOutlineLevel(row, rowIndex); this.exportRow(dataProvider, helpers, row, rowIndex, startColumnIndex, columns.length, wrapText, styles, encodeExecutableContent); cellRange.to.row = currentRowIndex } helpers.mergedRangesManager.applyMergedRages(); cellRange.to.column += columns.length > 0 ? columns.length - 1 : 0; const worksheetViewSettings = worksheet.views[0] || {}; if (component.option("rtlEnabled")) { worksheetViewSettings.rightToLeft = true } if (helpers._isFrozenZone(dataProvider)) { if (-1 === Object.keys(worksheetViewSettings).indexOf("state")) { (0, _extend.extend)(worksheetViewSettings, helpers._getWorksheetFrozenState(cellRange)) } helpers._trySetAutoFilter(cellRange) } if (Object.keys(worksheetViewSettings).length > 0) { worksheet.views = [worksheetViewSettings] } resolve(cellRange) })).always((() => { if (initialLoadPanelEnabledOption) { component.option("loadPanel.enabled", initialLoadPanelEnabledOption) } if (loadPanel.enabled && (0, _window.hasWindow)()) { exportLoadPanel.dispose() } })) })) }, exportRow(dataProvider, helpers, row, rowIndex, startColumnIndex, columnsCount, wrapText, styles, encodeExecutableContent) { for (let cellIndex = startColumnIndex; cellIndex < columnsCount; cellIndex++) { const cellData = dataProvider.getCellData(rowIndex, cellIndex, true); const excelCell = row.getCell(helpers._getFirstColumnIndex() + cellIndex); helpers.mergedRangesManager.updateMergedRanges(excelCell, rowIndex, cellIndex, helpers); const cellInfo = helpers.mergedRangesManager.findMergedCellInfo(rowIndex, cellIndex, helpers._isHeaderCell(rowIndex, cellIndex)); if ((0, _type.isDefined)(cellInfo) && excelCell !== cellInfo.masterCell) { excelCell.style = cellInfo.masterCell.style; excelCell.value = cellInfo.masterCell.value } else { if ((0, _type.isDate)(cellData.value)) { excelCell.value = this.convertDateForExcelJS(cellData.value) } else { excelCell.value = cellData.value } if ((0, _type.isDefined)(excelCell.value)) { const { bold: bold, alignment: horizontalAlignment, numberFormat: numberFormat } = styles[dataProvider.getStyleId(rowIndex, cellIndex)]; if ((0, _type.isDefined)(numberFormat)) { this.setNumberFormat(excelCell, numberFormat) } else if ((0, _type.isString)(excelCell.value) && /^[@=+-]/.test(excelCell.value)) { this.setNumberFormat(excelCell, "@") } helpers._trySetFont(excelCell, bold); this.setAlignment(excelCell, wrapText, horizontalAlignment) } } helpers._customizeCell(excelCell, cellData.cellSourceData); if (encodeExecutableContent) { excelCell.value = _export_format.ExportFormat.encode(excelCell.value) } } } } }, 55921: /*!**********************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/exporter/exceljs/export_data_grid.js ***! \**********************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { exports.exportDataGrid = function(options) { return _export.Export.export(function(options) { if (!((0, _type.isDefined)(options) && (0, _type.isObject)(options))) { throw Error('The "exportDataGrid" method requires a configuration object.') } if (!((0, _type.isDefined)(options.component) && (0, _type.isObject)(options.component) && "dxDataGrid" === options.component.NAME)) { throw Error('The "component" field must contain a DataGrid instance.') } if (!(0, _type.isDefined)(options.selectedRowsOnly)) { options.selectedRowsOnly = false } if (!(0, _type.isDefined)(options.autoFilterEnabled)) { options.autoFilterEnabled = false } return _export.Export.getFullOptions(options) }(options), DataGridHelpers, _getLoadPanelTargetElement, _getLoadPanelContainer) }; var _type = __webpack_require__( /*! ../../core/utils/type */ 11528); var _export = __webpack_require__( /*! ./export */ 60199); var _export_merged_ranges_manager = __webpack_require__( /*! ./export_merged_ranges_manager */ 6103); class DataGridHelpers { constructor(component, dataProvider, worksheet, options) { this.component = component; this.dataProvider = dataProvider; this.worksheet = worksheet; this.mergedRangesManager = new _export_merged_ranges_manager.MergedRangesManager(dataProvider, worksheet); this.topLeftCell = options.topLeftCell; this.customizeCell = options.customizeCell; this.autoFilterEnabled = options.autoFilterEnabled } _getFirstColumnIndex() { return this.topLeftCell.column } _getFieldHeaderRowsCount() { return 0 } _trySetAutoFilter(cellRange) { if (this.autoFilterEnabled) { if (!(0, _type.isDefined)(this.worksheet.autoFilter) && this.dataProvider.getRowsCount() > 0) { const dataRange = { from: { row: cellRange.from.row + this.dataProvider.getHeaderRowCount() - 1, column: cellRange.from.column }, to: cellRange.to }; this.worksheet.autoFilter = dataRange } } } _trySetFont(excelCell, bold) { if ((0, _type.isDefined)(bold)) { excelCell.font = excelCell.font || {}; excelCell.font.bold = bold } } _getWorksheetFrozenState(cellRange) { return { state: "frozen", ySplit: cellRange.from.row + this.dataProvider.getFrozenArea().y - 1 } } _trySetOutlineLevel(row, rowIndex) { if (rowIndex >= this.dataProvider.getHeaderRowCount()) { row.outlineLevel = this.dataProvider.getGroupLevel(rowIndex) } } _isFrozenZone(dataProvider) { return dataProvider.getHeaderRowCount() > 0 } _isHeaderCell(rowIndex) { return rowIndex < this.dataProvider.getHeaderRowCount() } _isInfoCell() { return false } _allowToMergeRange() { return true } _getAllFieldHeaders() { return [] } _customizeCell(excelCell, gridCell) { if ((0, _type.isFunction)(this.customizeCell)) { this.customizeCell({ excelCell: excelCell, gridCell: gridCell }) } } _exportFieldHeaders() {} _exportAllFieldHeaders() {} _isRowFieldHeadersRow() {} } function _getLoadPanelTargetElement(component) { return component.getView("rowsView").element() } function _getLoadPanelContainer(component) { return component.getView("rowsView").element().parent() } }, 18053: /*!*******************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/exporter/exceljs/export_format.js ***! \*******************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { exports.ExportFormat = void 0; var _string = __webpack_require__( /*! ../../core/utils/string */ 54497); var _number = _interopRequireDefault(__webpack_require__( /*! ../../common/core/localization/number */ 52771)); var _date = _interopRequireDefault(__webpack_require__( /*! ../../common/core/localization/date */ 38662)); var _type = __webpack_require__( /*! ../../core/utils/type */ 11528); var _date2 = __webpack_require__( /*! ../../common/core/localization/ldml/date.format */ 83445); var _language_codes = __webpack_require__( /*! ../../common/core/localization/language_codes */ 64333); var _extend = __webpack_require__( /*! ../../core/utils/extend */ 52576); __webpack_require__( /*! ../../common/core/localization/currency */ 17333); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } const DEFINED_NUMBER_FORMTATS = { thousands: "#,##0{0},"K"", millions: "#,##0{0},,"M"", billions: "#,##0{0},,,"B"", trillions: "#,##0{0},,,,"T"", percent: "0{0}%", decimal: "#{0}", fixedpoint: "#,##0{0}", exponential: "0{0}E+00", currency: " " }; const PERIOD_REGEXP = /a+/g; const DAY_REGEXP = /E/g; const DO_REGEXP = /dE+/g; const STANDALONE_MONTH_REGEXP = /L/g; const HOUR_REGEXP = /h/g; const ANY_REGEXP = /./g; function _convertDateFormat(format) { const formattedValue = (_date.default.format(new Date(2009, 8, 8, 6, 5, 4), format) || "").toString(); let result = (0, _date2.getFormat)((value => _date.default.format(value, format))); if (result) { result = function(format) { return format.split("/").join("\\/").split("'").map((function(datePart, index) { if (index % 2 === 0) { return datePart.replace(PERIOD_REGEXP, "AM/PM").replace(DO_REGEXP, "d").replace(DAY_REGEXP, "d").replace(STANDALONE_MONTH_REGEXP, "M").replace(HOUR_REGEXP, "H").split("[").join("\\[").split("]").join("\\]") } if (datePart) { return datePart.replace(ANY_REGEXP, "\\$&") } return "'" })).join("") }(result); result = function(defaultPattern) { const languageID = (0, _language_codes.getLanguageId)(); let languageIDStr = languageID ? languageID.toString(16) : ""; let languageInfo = ""; if (function(text) { let code; for (let i = 0; i < text.length; i++) { code = text.charCodeAt(i); if (code >= 1632 && code < 1642) { return true } } return false }(defaultPattern)) { while (languageIDStr.length < 3) { languageIDStr = "0" + languageIDStr } languageInfo = "[$-2010" + languageIDStr + "]" } else if (languageIDStr) { languageInfo = "[$-" + languageIDStr + "]" } return languageInfo }(formattedValue) + result } return result } function _includesCSVExpression(value) { if (!value) { return false } if (/^[@=\t\r]/.test(value)) { return true } if (!/^[+-]/.test(value)) { return false } return !(0, _type.isNumeric)(value) } exports.ExportFormat = { formatObjectConverter(format, dataType) { const result = { format: format, precision: format && format.precision, dataType: dataType }; if ((0, _type.isObject)(format)) { return (0, _extend.extend)(result, format, { format: format.formatter || format.type, currency: format.currency }) } return result }, convertFormat(format, precision, type, currency) { if ((0, _type.isDefined)(format)) { if ("date" === type) { return _convertDateFormat(format) } else if ((0, _type.isString)(format) && DEFINED_NUMBER_FORMTATS[format.toLowerCase()]) { return function(format, precision, currency) { let result; let excelFormat; if ("currency" === format) { excelFormat = _number.default.getOpenXmlCurrencyFormat(currency) } else { excelFormat = DEFINED_NUMBER_FORMTATS[format.toLowerCase()] } if (excelFormat) { result = (0, _string.format)(excelFormat, function(format, precision) { let result; let i; if (precision > 0) { result = "decimal" !== format ? "." : ""; for (i = 0; i < precision; i++) { result += "0" } return result } return "" }(format, precision)) } return result }(format, precision, currency) } } }, encode(value) { let escaped = false; if (function(value) { if (!value || value.length < 2) { return false } return _includesCSVExpression(value) }(value)) { escaped = true } else if (function(value, textQualifier) { if (!value || value.length < 4 || value[0] !== textQualifier) { return false } return _includesCSVExpression(value.substring(1, value.length - 1)) }(value, '"')) { value = value.substring(1, value.length - 1); escaped = true } if (escaped) { const singleTextQualifier = '"'; const escapedTextQualifier = '""'; return "\"'" + value.replaceAll(singleTextQualifier, escapedTextQualifier) + '"' } return value } } }, 6103: /*!**********************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/exporter/exceljs/export_merged_ranges_manager.js ***! \**********************************************************************************************/ function(__unused_webpack_module, exports) { exports.MergedRangesManager = void 0; exports.MergedRangesManager = class { constructor(dataProvider, worksheet) { this.dataProvider = dataProvider; this.worksheet = worksheet; this.mergedCells = []; this.mergedRanges = [] } updateMergedRanges(excelCell, rowIndex, cellIndex, helpers) { if (helpers._isHeaderCell(rowIndex, cellIndex) && !this.isCellInMergedRanges(rowIndex, cellIndex)) { const { rowspan: rowspan, colspan: colspan } = this.dataProvider.getCellMerging(rowIndex, cellIndex); const isMasterCellOfMergedRange = colspan || rowspan; if (isMasterCellOfMergedRange) { const allowToMergeRange = helpers._allowToMergeRange(rowIndex, cellIndex, rowspan, colspan); this.updateMergedCells(excelCell, rowIndex, cellIndex, rowspan, colspan); if (allowToMergeRange) { const shouldReduceInfoRange = helpers._isInfoCell(rowIndex, cellIndex) && helpers._allowExportRowFieldHeaders(); this.mergedRanges.push({ masterCell: excelCell, rowspan: rowspan - (shouldReduceInfoRange && rowspan > 0), colspan: colspan }) } } } } isCellInMergedRanges(rowIndex, cellIndex) { return this.mergedCells[rowIndex] && this.mergedCells[rowIndex][cellIndex] } findMergedCellInfo(rowIndex, cellIndex, isHeaderCell) { if (isHeaderCell && this.isCellInMergedRanges(rowIndex, cellIndex)) { return this.mergedCells[rowIndex][cellIndex] } } updateMergedCells(excelCell, rowIndex, cellIndex, rowspan, colspan) { for (let i = rowIndex; i <= rowIndex + rowspan; i++) { for (let j = cellIndex; j <= cellIndex + colspan; j++) { if (!this.mergedCells[i]) { this.mergedCells[i] = [] } this.mergedCells[i][j] = { masterCell: excelCell } } } } addMergedRange(masterCell, rowspan, colspan) { this.mergedRanges.push({ masterCell: masterCell, rowspan: rowspan, colspan: colspan }) } applyMergedRages() { this.mergedRanges.forEach((range => { const startRowIndex = range.masterCell.fullAddress.row; const startColumnIndex = range.masterCell.fullAddress.col; const endRowIndex = startRowIndex + range.rowspan; const endColumnIndex = startColumnIndex + range.colspan; this.worksheet.mergeCells(startRowIndex, startColumnIndex, endRowIndex, endColumnIndex) })) } } }, 44295: /*!***********************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/exporter/exceljs/export_pivot_grid.js ***! \***********************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { exports.exportPivotGrid = function(options) { return _export.Export.export(function(options) { if (!((0, _type.isDefined)(options) && (0, _type.isObject)(options))) { throw Error('The "exportPivotGrid" method requires a configuration object.') } if (!((0, _type.isDefined)(options.component) && (0, _type.isObject)(options.component) && "dxPivotGrid" === options.component.NAME)) { throw Error('The "component" field must contain a PivotGrid instance.') } if (!(0, _type.isDefined)(options.mergeRowFieldValues)) { options.mergeRowFieldValues = true } if (!(0, _type.isDefined)(options.mergeColumnFieldValues)) { options.mergeColumnFieldValues = true } if (!(0, _type.isDefined)(options.exportDataFieldHeaders)) { options.exportDataFieldHeaders = false } if (!(0, _type.isDefined)(options.exportRowFieldHeaders)) { options.exportRowFieldHeaders = false } if (!(0, _type.isDefined)(options.exportColumnFieldHeaders)) { options.exportColumnFieldHeaders = false } if (!(0, _type.isDefined)(options.exportFilterFieldHeaders)) { options.exportFilterFieldHeaders = false } return _export.Export.getFullOptions(options) }(options), PivotGridHelpers, _getLoadPanelTargetElement, _getLoadPanelContainer) }; var _type = __webpack_require__( /*! ../../core/utils/type */ 11528); var _export = __webpack_require__( /*! ./export */ 60199); var _position = __webpack_require__( /*! ../../core/utils/position */ 41639); var _inflector = __webpack_require__( /*! ../../core/utils/inflector */ 53124); var _export_merged_ranges_manager = __webpack_require__( /*! ./export_merged_ranges_manager */ 6103); function _extends() { return _extends = Object.assign ? Object.assign.bind() : function(n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) { ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]) } } return n }, _extends.apply(null, arguments) } class PivotGridHelpers { constructor(component, dataProvider, worksheet, options) { this.component = component; this.dataProvider = dataProvider; this.worksheet = worksheet; this.mergedRangesManager = new _export_merged_ranges_manager.MergedRangesManager(dataProvider, worksheet); this.topLeftCell = options.topLeftCell; this.customizeCell = options.customizeCell; this.mergeColumnFieldValues = options.mergeColumnFieldValues; this.mergeRowFieldValues = options.mergeRowFieldValues; this.exportFilterFieldHeaders = options.exportFilterFieldHeaders; this.exportDataFieldHeaders = options.exportDataFieldHeaders; this.exportColumnFieldHeaders = options.exportColumnFieldHeaders; this.exportRowFieldHeaders = options.exportRowFieldHeaders; this.rtlEnabled = component.option("rtlEnabled"); this.rowHeaderLayout = component.option("rowHeaderLayout"); this.wrapText = !!component.option("wordWrapEnabled"); this.filterFieldHeaders = this._tryGetFieldHeaders("filter"); this.dataFieldHeaders = this._tryGetFieldHeaders("data"); this.columnFieldHeaders = this._tryGetFieldHeaders("column"); this.rowFieldHeaders = this._tryGetFieldHeaders("row") } _getFirstColumnIndex() { return this.topLeftCell.column } _getWorksheetFrozenState(cellRange) { const { x: x, y: y } = this.dataProvider.getFrozenArea(); return { state: "frozen", xSplit: cellRange.from.column + x - 1, ySplit: cellRange.from.row + y + this._getFieldHeaderRowsCount() - 1 } } _getFieldHeaderRowsCount() { return 0 + this._allowExportFilterFieldHeaders() + (this._allowExportDataFieldHeaders() || this._allowExportColumnFieldHeaders()) } _isFrozenZone() { return true } _isHeaderCell(rowIndex, cellIndex) { return rowIndex < this.dataProvider.getColumnAreaRowCount() || cellIndex < this.dataProvider.getRowAreaColCount() } _getDefaultFieldHeaderCellsData(value) { return { text: value, value: value } } _isInfoCell(rowIndex, cellIndex) { return rowIndex < this.dataProvider.getColumnAreaRowCount() && cellIndex < this.dataProvider.getRowAreaColCount() } _allowToMergeRange(rowIndex, cellIndex, rowspan, colspan) { return !(this.dataProvider.isColumnAreaCell(rowIndex, cellIndex) && !this.mergeColumnFieldValues && !!colspan || this.dataProvider.isRowAreaCell(rowIndex, cellIndex) && !this.mergeRowFieldValues && !!rowspan) } _trySetAutoFilter() {} _trySetFont(excelCell, bold) { if ((0, _type.isDefined)(bold)) { excelCell.font = excelCell.font || {}; excelCell.font.bold = bold } } _getFieldHeaderStyles() { const borderStyle = { style: "thin", color: { argb: "FF7E7E7E" } }; return { alignment: (0, _position.getDefaultAlignment)(this.rtlEnabled), bold: true, border: { bottom: borderStyle, left: borderStyle, right: borderStyle, top: borderStyle } } } _trySetOutlineLevel() {} _getAllFieldHeaders() { return this.dataProvider._exportController.getDataSource()._descriptions } _tryGetFieldHeaders(area) { if (!this[`export${(0,_inflector.camelize)(area,true)}FieldHeaders`]) { return [] } const fields = this._getAllFieldHeaders()["data" === area ? "values" : `${area}s`].filter((fieldHeader => fieldHeader.area === area)); if ("right" === (0, _position.getDefaultAlignment)(this.rtlEnabled)) { fields.sort(((a, b) => b.areaIndex - a.areaIndex)) } return fields.map((field => field.caption)) } _customizeCell(excelCell, pivotCell, shouldPreventCall) { if ((0, _type.isFunction)(this.customizeCell) && !shouldPreventCall) { this.customizeCell({ excelCell: excelCell, pivotCell: pivotCell }) } } _isRowFieldHeadersRow(rowIndex) { const isLastInfoRangeCell = this._isInfoCell(rowIndex, 0) && "row" === this.dataProvider.getCellData(rowIndex + 1, 0, true).cellSourceData.area; return this._allowExportRowFieldHeaders() && isLastInfoRangeCell } _exportAllFieldHeaders(columns, setAlignment) { const totalCellsCount = columns.length; const rowAreaColCount = this.dataProvider.getRowAreaColCount(); let rowIndex = this.topLeftCell.row; if (this._allowExportFilterFieldHeaders()) { this._exportFieldHeaders("filter", rowIndex, 0, totalCellsCount, setAlignment); rowIndex++ } if (this._allowExportDataFieldHeaders()) { this._exportFieldHeaders("data", rowIndex, 0, rowAreaColCount, setAlignment); if (!this._allowExportColumnFieldHeaders()) { this._exportFieldHeaders("column", rowIndex, rowAreaColCount, totalCellsCount - rowAreaColCount, setAlignment) } } if (this._allowExportColumnFieldHeaders()) { if (!this._allowExportDataFieldHeaders()) { this._exportFieldHeaders("data", rowIndex, 0, rowAreaColCount, setAlignment) } this._exportFieldHeaders("column", rowIndex, rowAreaColCount, totalCellsCount - rowAreaColCount, setAlignment) } } _exportFieldHeaders(area, rowIndex, startColumnIndex, totalColumnsCount, setAlignment) { const fieldHeaders = this[`${area}FieldHeaders`]; const row = this.worksheet.getRow(rowIndex); const shouldMergeHeaderField = "row" !== area || "row" === area && "tree" === this.rowHeaderLayout; if (shouldMergeHeaderField) { this.mergedRangesManager.addMergedRange(row.getCell(this.topLeftCell.column + startColumnIndex), 0, totalColumnsCount - 1) } for (let cellIndex = 0; cellIndex < totalColumnsCount; cellIndex++) { const excelCell = row.getCell(this.topLeftCell.column + startColumnIndex + cellIndex); const values = fieldHeaders; let cellData = []; const value = values.length > totalColumnsCount || shouldMergeHeaderField ? values.join(", ") : values[cellIndex]; cellData = _extends({}, this._getDefaultFieldHeaderCellsData(value), { headerType: area }); excelCell.value = value; this._applyHeaderStyles(excelCell, setAlignment); this._customizeCell(excelCell, cellData) } } _applyHeaderStyles(excelCell, setAlignment) { const { bold: bold, alignment: alignment, border: border } = this._getFieldHeaderStyles(); this._trySetFont(excelCell, bold); setAlignment(excelCell, this.wrapText, alignment); excelCell.border = border } _allowExportRowFieldHeaders() { return this.rowFieldHeaders.length > 0 } _allowExportFilterFieldHeaders() { return this.filterFieldHeaders.length > 0 } _allowExportDataFieldHeaders() { return this.dataFieldHeaders.length > 0 } _allowExportColumnFieldHeaders() { return this.columnFieldHeaders.length > 0 } } function _getLoadPanelTargetElement(component) { return component._dataArea.groupElement() } function _getLoadPanelContainer(component) { return component.$element() } }, 34924: /*!********************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/exporter/file_saver.js ***! \********************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { exports.fileSaver = exports.MIME_TYPES = void 0; var _dom_adapter = _interopRequireDefault(__webpack_require__( /*! ../core/dom_adapter */ 64960)); var _window = __webpack_require__( /*! ../core/utils/window */ 3104); var _ui = _interopRequireDefault(__webpack_require__( /*! ../ui/widget/ui.errors */ 35185)); var _type = __webpack_require__( /*! ../core/utils/type */ 11528); var _console = __webpack_require__( /*! ../core/utils/console */ 31951); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } const window = (0, _window.getWindow)(); const navigator = (0, _window.getNavigator)(); const FILE_EXTESIONS = { EXCEL: "xlsx", CSS: "css", PNG: "png", JPEG: "jpeg", GIF: "gif", SVG: "svg", PDF: "pdf" }; const MIME_TYPES = exports.MIME_TYPES = { CSS: "text/css", EXCEL: "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", PNG: "image/png", JPEG: "image/jpeg", GIF: "image/gif", SVG: "image/svg+xml", PDF: "application/pdf" }; exports.fileSaver = { _revokeObjectURLTimeout: 3e4, _getDataUri: function(format, data) { const mimeType = this._getMimeType(format); return `data:${mimeType};base64,${data}` }, _getMimeType: function(format) { return MIME_TYPES[format] || "application/octet-stream" }, _linkDownloader: function(fileName, href) { const exportLinkElement = _dom_adapter.default.createElement("a"); exportLinkElement.download = fileName; exportLinkElement.href = href; exportLinkElement.target = "_blank"; return exportLinkElement }, _winJSBlobSave: function(blob, fileName, format) { const savePicker = new Windows.Storage.Pickers.FileSavePicker; savePicker.suggestedStartLocation = Windows.Storage.Pickers.PickerLocationId.documentsLibrary; const fileExtension = FILE_EXTESIONS[format]; if (fileExtension) { const mimeType = this._getMimeType(format); savePicker.fileTypeChoices.insert(mimeType, ["." + fileExtension]) } savePicker.suggestedFileName = fileName; savePicker.pickSaveFileAsync().then((function(file) { if (file) { file.openAsync(Windows.Storage.FileAccessMode.readWrite).then((function(outputStream) { const inputStream = blob.msDetachStream(); Windows.Storage.Streams.RandomAccessStream.copyAsync(inputStream, outputStream).then((function() { outputStream.flushAsync().done((function() { inputStream.close(); outputStream.close() })) })) })) } })) }, _click: function(link) { try { link.dispatchEvent(new MouseEvent("click", { cancelable: true })) } catch (e) { const event = _dom_adapter.default.getDocument().createEvent("MouseEvents"); event.initMouseEvent("click", true, true, window, 0, 0, 0, 80, 20, false, false, false, false, 0, null); link.dispatchEvent(event) } }, _saveBlobAs: function(fileName, format, data) { this._blobSaved = false; if ((0, _type.isDefined)(navigator.msSaveOrOpenBlob)) { navigator.msSaveOrOpenBlob(data, fileName); this._blobSaved = true } else if ((0, _type.isDefined)(window.WinJS)) { this._winJSBlobSave(data, fileName, format); this._blobSaved = true } else { const URL = window.URL || window.webkitURL || window.mozURL || window.msURL || window.oURL; if ((0, _type.isDefined)(URL)) { const objectURL = URL.createObjectURL(data); const downloadLink = this._linkDownloader(fileName, objectURL); setTimeout((() => { URL.revokeObjectURL(objectURL); this._objectUrlRevoked = true }), this._revokeObjectURLTimeout); this._click(downloadLink) } else { _console.logger.warn("window.URL || window.webkitURL || window.mozURL || window.msURL || window.oURL is not defined") } } }, saveAs: function(fileName, format, data) { const fileExtension = FILE_EXTESIONS[format]; if (fileExtension) { fileName += "." + fileExtension } if ((0, _type.isFunction)(window.Blob)) { this._saveBlobAs(fileName, format, data) } else { if (!(0, _type.isDefined)(navigator.userAgent.match(/iPad/i))) { _ui.default.log("E1034") } const downloadLink = this._linkDownloader(fileName, this._getDataUri(format, data)); this._click(downloadLink) } } } }, 28456: /*!***********************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/exporter/image_creator.js ***! \***********************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { exports.calcScaledInfo = calcScaledInfo; exports.getData = function(data, options) { return imageCreator.getData(data, options) }; exports.imageCreator = void 0; exports.testFormats = function(formats) { const canvas = imageCreator._createCanvas(100, 100, 0); return formats.reduce((function(r, f) { const mimeType = ("image/" + f).toLowerCase(); if (-1 !== canvas.toDataURL(mimeType).indexOf(mimeType)) { r.supported.push(f) } else { r.unsupported.push(f) } return r }), { supported: [], unsupported: [] }) }; var _renderer = _interopRequireDefault(__webpack_require__( /*! ../core/renderer */ 64553)); var _color = _interopRequireDefault(__webpack_require__( /*! ../color */ 43101)); var _type = __webpack_require__( /*! ../core/utils/type */ 11528); var _m_svg = _interopRequireDefault(__webpack_require__( /*! ../__internal/core/utils/m_svg */ 89650)); var _iterator = __webpack_require__( /*! ../core/utils/iterator */ 21274); var _extend = __webpack_require__( /*! ../core/utils/extend */ 52576); var _dom_adapter = _interopRequireDefault(__webpack_require__( /*! ../core/dom_adapter */ 64960)); var _dom = __webpack_require__( /*! ../core/utils/dom */ 86858); var _window = __webpack_require__( /*! ../core/utils/window */ 3104); var _inflector = __webpack_require__( /*! ../core/utils/inflector */ 53124); var _deferred = __webpack_require__( /*! ../core/utils/deferred */ 87739); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } const window = (0, _window.getWindow)(); const _math = Math; const PI = _math.PI; const _min = _math.min; const _abs = _math.abs; const _sqrt = _math.sqrt; const _pow = _math.pow; const _atan2 = _math.atan2; const _cos = _math.cos; const _sin = _math.sin; const _number = Number; let parseAttributes; function arcTo(x1, y1, x2, y2, radius, largeArcFlag, clockwise, context) { const cBx = (x1 + x2) / 2; const cBy = (y1 + y2) / 2; let aB = _atan2(y1 - y2, x1 - x2); const k = largeArcFlag ? 1 : -1; aB += PI / 180 * 90 * (clockwise ? 1 : -1); const opSide = _sqrt(_pow(x2 - x1, 2) + _pow(y2 - y1, 2)) / 2; const adjSide = _sqrt(_abs(_pow(radius, 2) - _pow(opSide, 2))); const centerX = cBx + k * (adjSide * _cos(aB)); const centerY = cBy + k * (adjSide * _sin(aB)); const startAngle = _atan2(y1 - centerY, x1 - centerX); const endAngle = _atan2(y2 - centerY, x2 - centerX); context.arc(centerX, centerY, radius, startAngle, endAngle, !clockwise) } function getElementOptions(element, rootAppended) { const attr = parseAttributes(element.attributes || {}); const options = (0, _extend.extend)({}, attr, { text: element.textContent.replace(/\s+/g, " "), textAlign: "middle" === attr["text-anchor"] ? "center" : attr["text-anchor"] }); const transform = attr.transform; let coords; if (transform) { coords = transform.match(/translate\(-*\d+([.]\d+)*(,*\s*-*\d+([.]\d+)*)*/); if (coords) { coords = coords[0].match(/-*\d+([.]\d+)*/g); options.translateX = _number(coords[0]); options.translateY = coords[1] ? _number(coords[1]) : 0 } coords = transform.match(/rotate\(-*\d+([.]\d+)*(,*\s*-*\d+([.]\d+)*,*\s*-*\d+([.]\d+)*)*/); if (coords) { coords = coords[0].match(/-*\d+([.]\d+)*/g); options.rotationAngle = _number(coords[0]); options.rotationX = coords[1] && _number(coords[1]); options.rotationY = coords[2] && _number(coords[2]) } coords = transform.match(/scale\(-*\d+([.]\d+)*(,*\s*-*\d+([.]\d+)*)*/); if (coords) { coords = coords[0].match(/-*\d+([.]\d+)*/g); options.scaleX = _number(coords[0]); if (coords.length > 1) { options.scaleY = _number(coords[1]) } else { options.scaleY = options.scaleX } } }! function(element, options, rootAppended) { let style = element.style || {}; let field; for (field in style) { if ("" !== style[field]) { options[(0, _inflector.camelize)(field)] = style[field] } } if (rootAppended && _dom_adapter.default.isElementNode(element)) { style = window.getComputedStyle(element); ["fill", "stroke", "stroke-width", "font-family", "font-size", "font-style", "font-weight"].forEach((function(prop) { if (prop in style && "" !== style[prop]) { options[(0, _inflector.camelize)(prop)] = style[prop] } })); ["opacity", "fill-opacity", "stroke-opacity"].forEach((function(prop) { if (prop in style && "" !== style[prop] && "1" !== style[prop]) { options[prop] = _number(style[prop]) } })) } options.textDecoration = options.textDecoration || options.textDecorationLine; options.globalAlpha = (0, _type.isDefined)(options.opacity) ? options.opacity : options.globalAlpha }(element, options, rootAppended); return options } function parseUrl(urlString) { const matches = urlString && urlString.match(/url\(.*#(.*?)["']?\)/i); return matches && matches[1] } function setFontStyle(context, options) { const fontParams = []; options.fontSize = options.fontSize || "10px"; options.fontFamily = options.fontFamily || "sans-serif"; options.fill = options.fill || "#000"; options.fontStyle && fontParams.push(options.fontStyle); options.fontWeight && fontParams.push(options.fontWeight); fontParams.push(options.fontSize); fontParams.push(options.fontFamily); context.font = fontParams.join(" "); context.textAlign = options.textAlign; context.fillStyle = options.fill; context.globalAlpha = options.globalAlpha } function drawText(context, options, shared) { setFontStyle(context, options); applyFilter(context, options, shared); options.text && context.fillText(options.text, options.x || 0, options.y || 0); strokeElement(context, options, true); ! function(context, options, shared) { if (!options.textDecoration || "none" === options.textDecoration) { return } const x = options.x; const textWidth = context.measureText(options.text).width; const textHeight = parseInt(options.fontSize, 10); const lineHeight = .05 * textHeight < 1 ? 1 : .05 * textHeight; let y = options.y; switch (options.textDecoration) { case "line-through": y -= textHeight / 3 + lineHeight / 2; break; case "overline": y -= textHeight - lineHeight; break; case "underline": y += lineHeight } context.rect(x, y, textWidth, lineHeight); fillElement(context, options, shared); strokeElement(context, options) }(context, options, shared) } function hasTspan(element) { const nodes = element.childNodes; for (let i = 0; i < nodes.length; i++) { if ("tspan" === nodes[i].tagName) { return true } } return false } function drawTextElement(childNodes, context, options, shared) { const lines = []; let line; let offset = 0; for (let i = 0; i < childNodes.length; i++) { const element = childNodes[i]; if (void 0 === element.tagName) { drawElement(element, context, options, shared) } else if ("tspan" === element.tagName || "text" === element.tagName) { const elementOptions = getElementOptions(element, shared.rootAppended); const mergedOptions = (0, _extend.extend)({}, options, elementOptions); if ("tspan" === element.tagName && hasTspan(element)) { drawTextElement(element.childNodes, context, mergedOptions, shared); continue } mergedOptions.textAlign = "start"; if (!line || void 0 !== elementOptions.x) { line = { elements: [], options: [], widths: [], offsets: [] }; lines.push(line) } if (void 0 !== elementOptions.y) { offset = 0 } if (void 0 !== elementOptions.dy) { offset += parseFloat(elementOptions.dy) } line.elements.push(element); line.options.push(mergedOptions); line.offsets.push(offset); setFontStyle(context, mergedOptions); line.widths.push(context.measureText(mergedOptions.text).width) } } lines.forEach((function(line) { const commonWidth = line.widths.reduce((function(commonWidth, width) { return commonWidth + width }), 0); let xDiff = 0; let currentOffset = 0; if ("center" === options.textAlign) { xDiff = commonWidth / 2 } if ("end" === options.textAlign) { xDiff = commonWidth } line.options.forEach((function(o, index) { const width = line.widths[index]; o.x = o.x - xDiff + currentOffset; o.y += line.offsets[index]; currentOffset += width })); line.elements.forEach((function(element, index) { drawTextElement(element.childNodes, context, line.options[index], shared) })) })) } function drawElement(element, context, parentOptions, shared) { const tagName = element.tagName; const isText = "text" === tagName || "tspan" === tagName || void 0 === tagName; const isImage = "image" === tagName; const isComment = 8 === element.nodeType; const options = (0, _extend.extend)({}, parentOptions, getElementOptions(element, shared.rootAppended)); if ("hidden" === options.visibility || options[_m_svg.default.HIDDEN_FOR_EXPORT] || isComment) { return } context.save(); !isImage && transformElement(context, options); clipElement(context, options, shared); ! function(options) { options.strokeOpacity = void 0 !== options["stroke-opacity"] ? options["stroke-opacity"] : 1; options.fillOpacity = void 0 !== options["fill-opacity"] ? options["fill-opacity"] : 1; if (void 0 !== options.opacity) { options.strokeOpacity *= options.opacity; options.fillOpacity *= options.opacity } }(options); let promise; context.beginPath(); switch (element.tagName) { case void 0: drawText(context, options, shared); break; case "text": case "tspan": drawTextElement(element.childNodes, context, options, shared); break; case "image": promise = function(context, options, shared) { const d = new _deferred.Deferred; const image = new window.Image; image.onload = function() { context.save(); context.globalAlpha = options.globalAlpha; transformElement(context, options); clipElement(context, options, shared); context.drawImage(image, options.x || 0, options.y || 0, options.width, options.height); context.restore(); d.resolve() }; image.onerror = function() { d.resolve() }; image.setAttribute("crossOrigin", "anonymous"); image.src = options.href || options["xlink:href"]; return d }(context, options, shared); break; case "path": ! function(context, dAttr) { const dArray = dAttr.replace(/,/g, " ").split(/([A-Z])/i).filter((item => "" !== item.trim())); let i = 0; let params; let prevParams; let prevParamsLen; do { params = (dArray[i + 1] || "").trim().split(" "); switch (dArray[i]) { case "M": context.moveTo(_number(params[0]), _number(params[1])); i += 2; break; case "L": for (let j = 0; j < params.length / 2; j++) { context.lineTo(_number(params[2 * j]), _number(params[2 * j + 1])) } i += 2; break; case "C": context.bezierCurveTo(_number(params[0]), _number(params[1]), _number(params[2]), _number(params[3]), _number(params[4]), _number(params[5])); i += 2; break; case "a": prevParams = dArray[i - 1].trim().split(" "); prevParamsLen = prevParams.length - 1; arcTo(_number(prevParams[prevParamsLen - 1]), _number(prevParams[prevParamsLen]), _number(prevParams[prevParamsLen - 1]) + _number(params[5]), _number(prevParams[prevParamsLen]) + _number(params[6]), _number(params[0]), _number(params[3]), _number(params[4]), context); i += 2; break; case "A": prevParams = dArray[i - 1].trim().split(" "); prevParamsLen = prevParams.length - 1; arcTo(_number(prevParams[prevParamsLen - 1]), _number(prevParams[prevParamsLen]), _number(params[5]), _number(params[6]), _number(params[0]), _number(params[3]), _number(params[4]), context); i += 2; break; case "Z": context.closePath(); i += 1; break; default: i++ } } while (i < dArray.length) }(context, options.d); break; case "rect": ! function(context, options) { const x = options.x; const y = options.y; const width = options.width; const height = options.height; let cornerRadius = options.rx; if (!cornerRadius) { context.rect(x, y, width, height) } else { cornerRadius = _min(cornerRadius, width / 2, height / 2); context.save(); context.translate(x, y); context.moveTo(width / 2, 0); context.arcTo(width, 0, width, height, cornerRadius); context.arcTo(width, height, 0, height, cornerRadius); context.arcTo(0, height, 0, 0, cornerRadius); context.arcTo(0, 0, cornerRadius, 0, cornerRadius); context.lineTo(width / 2, 0); context.restore() } }(context, options); context.closePath(); break; case "circle": context.arc(options.cx, options.cy, options.r, 0, 2 * PI, 1) } if (!isText) { applyFilter(context, options, shared); if (!isImage) { promise = fillElement(context, options, shared) } strokeElement(context, options) } applyGradient(context, options, shared, element, "linear"); applyGradient(context, options, shared, element, "radial"); context.restore(); return promise } function applyGradient(context, options, _ref, element, type) { let { linearGradients: linearGradients, radialGradients: radialGradients } = _ref; const gradients = "linear" === type ? linearGradients : radialGradients; if (0 === Object.keys(gradients).length) { return } const id = parseUrl(options.fill); if (id && gradients[id]) { const box = element.getBBox(); const horizontalCenter = box.x + box.width / 2; const verticalCenter = box.y + box.height / 2; const maxRadius = Math.max(box.height / 2, box.width / 2); const gradient = "linear" === type ? context.createLinearGradient(box.x, 0, box.x + box.width, 0) : context.createRadialGradient(horizontalCenter, verticalCenter, 0, horizontalCenter, verticalCenter, maxRadius); gradients[id].colors.forEach((opt => { const offset = parseInt(opt.offset.replace(/%/, "")); gradient.addColorStop(offset / 100, opt.stopColor) })); if ("linear" === type) { var _gradients$id$transfo; const angle = ((null === (_gradients$id$transfo = gradients[id].transform) || void 0 === _gradients$id$transfo ? void 0 : _gradients$id$transfo.replace(/\D/g, "")) || 0) * Math.PI / 180; context.translate(horizontalCenter, verticalCenter); context.rotate(angle); context.translate(-horizontalCenter, -verticalCenter) } context.globalAlpha = options.opacity; context.fillStyle = gradient; context.fill() } } function applyFilter(context, options, shared) { let filterOptions; const id = parseUrl(options.filter); if (id) { filterOptions = shared.filters[id]; if (!filterOptions) { filterOptions = { offsetX: 0, offsetY: 0, blur: 0, color: "#000" } } context.shadowOffsetX = filterOptions.offsetX; context.shadowOffsetY = filterOptions.offsetY; context.shadowColor = filterOptions.color; context.shadowBlur = filterOptions.blur } } function transformElement(context, options) { context.translate(options.translateX || 0, options.translateY || 0); options.translateX = void 0; options.translateY = void 0; if (options.rotationAngle) { context.translate(options.rotationX || 0, options.rotationY || 0); context.rotate(options.rotationAngle * PI / 180); context.translate(-(options.rotationX || 0), -(options.rotationY || 0)); options.rotationAngle = void 0; options.rotationX = void 0; options.rotationY = void 0 } if (isFinite(options.scaleX)) { context.scale(options.scaleX, options.scaleY); options.scaleX = void 0; options.scaleY = void 0 } } function clipElement(context, options, shared) { if (options["clip-path"]) { drawElement(shared.clipPaths[parseUrl(options["clip-path"])], context, {}, shared); context.clip(); options["clip-path"] = void 0 } } function createGradient(element) { var _element$attributes$g; const options = { colors: [], transform: null === (_element$attributes$g = element.attributes.gradientTransform) || void 0 === _element$attributes$g ? void 0 : _element$attributes$g.textContent }; (0, _iterator.each)(element.childNodes, ((_, _ref2) => { let { attributes: attributes } = _ref2; options.colors.push({ offset: attributes.offset.value, stopColor: attributes["stop-color"].value }) })); return options } function createFilter(element) { let color; let opacity; const filterOptions = {}; (0, _iterator.each)(element.childNodes, (function(_, node) { const attr = node.attributes; if (!attr.result) { return } switch (attr.result.value) { case "gaussianBlurResult": filterOptions.blur = _number(attr.stdDeviation.value); break; case "offsetResult": filterOptions.offsetX = _number(attr.dx.value); filterOptions.offsetY = _number(attr.dy.value); break; case "floodResult": color = attr["flood-color"] ? attr["flood-color"].value : "#000"; opacity = attr["flood-opacity"] ? attr["flood-opacity"].value : 1; filterOptions.color = function(hexColor, alpha) { const color = new _color.default(hexColor); return "rgba(" + color.r + "," + color.g + "," + color.b + "," + alpha + ")" }(color, opacity) } })); return filterOptions } function asyncEach(array, callback) { let d = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : new _deferred.Deferred; let i = 0; for (; i < array.length; i++) { const result = callback(array[i]); if ((0, _type.isPromise)(result)) { result.then((() => { asyncEach(Array.prototype.slice.call(array, i + 1), callback, d) })); break } } if (i === array.length) { d.resolve() } return d } function drawCanvasElements(elements, context, parentOptions, shared) { return asyncEach(elements, (function(element) { switch (element.tagName && element.tagName.toLowerCase()) { case "g": case "svg": { const options = (0, _extend.extend)({}, parentOptions, getElementOptions(element, shared.rootAppended)); context.save(); transformElement(context, options); clipElement(context, options, shared); const onDone = () => { context.restore() }; const promise = drawCanvasElements(element.childNodes, context, options, shared); if ((0, _type.isPromise)(promise)) { promise.then(onDone) } else { onDone() } return promise } case "defs": return drawCanvasElements(element.childNodes, context, {}, shared); case "clippath": shared.clipPaths[element.attributes.id.textContent] = element.childNodes[0]; break; case "pattern": shared.patterns[element.attributes.id.textContent] = element; break; case "filter": shared.filters[element.id] = createFilter(element); break; case "lineargradient": shared.linearGradients[element.attributes.id.textContent] = createGradient(element); break; case "radialgradient": shared.radialGradients[element.attributes.id.textContent] = createGradient(element); break; default: return drawElement(element, context, parentOptions, shared) } })) } function strokeElement(context, options, isText) { const stroke = options.stroke; if (stroke && "none" !== stroke && 0 !== options["stroke-width"]) { ! function(context, options) { let matches = options["stroke-dasharray"] && options["stroke-dasharray"].match(/(\d+)/g); if (matches && matches.length) { matches = (0, _iterator.map)(matches, (function(item) { return _number(item) })); context.setLineDash(matches) } }(context, options); context.lineJoin = options["stroke-linejoin"]; context.lineWidth = options["stroke-width"]; context.globalAlpha = options.strokeOpacity; context.strokeStyle = stroke; isText ? context.strokeText(options.text, options.x, options.y) : context.stroke(); context.globalAlpha = 1 } } function fillElement(context, options, shared) { const fill = options.fill; let promise; if (fill && "none" !== fill) { if (-1 === fill.search(/url/)) { context.fillStyle = fill; context.globalAlpha = options.fillOpacity; context.fill(); context.globalAlpha = 1 } else { const pattern = shared.patterns[parseUrl(fill)]; if (!pattern) { return } promise = function(context, pattern, shared, parentOptions) { const options = getElementOptions(pattern, shared.rootAppended); const patternCanvas = imageCreator._createCanvas(options.width, options.height, 0); const patternContext = patternCanvas.getContext("2d"); const promise = drawCanvasElements(pattern.childNodes, patternContext, options, shared); const onDone = () => { context.fillStyle = context.createPattern(patternCanvas, "repeat"); context.globalAlpha = parentOptions.fillOpacity; context.fill(); context.globalAlpha = 1 }; if ((0, _type.isPromise)(promise)) { promise.then(onDone) } else { onDone() } return promise }(context, pattern, shared, options) } } return promise } parseAttributes = function(attributes) { const newAttributes = {}; let attr; (0, _iterator.each)(attributes, (function(index, item) { attr = item.textContent; if (isFinite(attr)) { attr = _number(attr) } newAttributes[item.name.toLowerCase()] = attr })); return newAttributes }; function convertSvgToCanvas(svg, canvas, rootAppended) { return drawCanvasElements(svg.childNodes, canvas.getContext("2d"), {}, { clipPaths: {}, patterns: {}, filters: {}, linearGradients: {}, radialGradients: {}, rootAppended: rootAppended }) } function getCanvasFromSvg(markup, _ref3) { let { width: width, height: height, backgroundColor: backgroundColor, margin: margin, svgToCanvas: svgToCanvas = convertSvgToCanvas } = _ref3; const scaledScreenInfo = calcScaledInfo(width, height); const canvas = imageCreator._createCanvas(scaledScreenInfo.width, scaledScreenInfo.height, margin); const context = canvas.getContext("2d"); context.setTransform(scaledScreenInfo.pixelRatio, 0, 0, scaledScreenInfo.pixelRatio, 0, 0); const svgElem = _m_svg.default.getSvgElement(markup); let invisibleDiv; const markupIsDomElement = _dom_adapter.default.isElementNode(markup) || (0, _type.isRenderer)(markup); context.translate(margin, margin); _dom_adapter.default.getBody().appendChild(canvas); if (!markupIsDomElement) { invisibleDiv = function() { const invisibleDiv = _dom_adapter.default.createElement("div"); invisibleDiv.style.left = "-9999px"; invisibleDiv.style.position = "absolute"; return invisibleDiv }(); invisibleDiv.appendChild(svgElem); _dom_adapter.default.getBody().appendChild(invisibleDiv) } if (svgElem.attributes.direction) { canvas.dir = svgElem.attributes.direction.textContent }! function(context, width, height, backgroundColor, margin) { context.fillStyle = backgroundColor || "#ffffff"; context.fillRect(-margin, -margin, width + 2 * margin, height + 2 * margin) }(context, width, height, backgroundColor, margin); return (0, _deferred.fromPromise)(svgToCanvas(svgElem, canvas, markupIsDomElement && (0, _dom.contains)(_dom_adapter.default.getBody(), (0, _renderer.default)(markup).get(0)))).then((() => canvas)).always((() => { invisibleDiv && _dom_adapter.default.getBody().removeChild(invisibleDiv); _dom_adapter.default.getBody().removeChild(canvas) })) } const imageCreator = exports.imageCreator = { getImageData: function(markup, options) { const mimeType = "image/" + options.format; if ((0, _type.isFunction)(options.__parseAttributesFn)) { parseAttributes = options.__parseAttributesFn } return getCanvasFromSvg(markup, options).then((canvas => function(canvas, mimeType) { const dataURL = canvas.toDataURL(mimeType, 1); const imageData = window.atob(dataURL.substring(("data:" + mimeType + ";base64,").length)); return imageData }(canvas, mimeType))) }, getData: function(markup, options) { const that = this; return imageCreator.getImageData(markup, options).then((binaryData => { const mimeType = "image/" + options.format; const data = (0, _type.isFunction)(window.Blob) && !options.useBase64 ? that._getBlob(binaryData, mimeType) : that._getBase64(binaryData); return data })) }, _getBlob: function(binaryData, mimeType) { let i; const dataArray = new Uint8Array(binaryData.length); for (i = 0; i < binaryData.length; i++) { dataArray[i] = binaryData.charCodeAt(i) } return new window.Blob([dataArray.buffer], { type: mimeType }) }, _getBase64: function(binaryData) { return window.btoa(binaryData) }, _createCanvas(width, height, margin) { const canvas = (0, _renderer.default)("<canvas>")[0]; canvas.width = width + 2 * margin; canvas.height = height + 2 * margin; canvas.hidden = true; return canvas } }; function calcScaledInfo(width, height) { const pixelRatio = window.devicePixelRatio || 1; return { pixelRatio: pixelRatio, width: width * pixelRatio, height: height * pixelRatio } } }, 39368: /*!********************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/exporter/jspdf/autotable/export.js ***! \********************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { exports.Export = void 0; var _type = __webpack_require__( /*! ../../../core/utils/type */ 11528); var _extend = __webpack_require__( /*! ../../../core/utils/extend */ 52576); var _date = _interopRequireDefault(__webpack_require__( /*! ../../../common/core/localization/date */ 38662)); var _number = _interopRequireDefault(__webpack_require__( /*! ../../../common/core/localization/number */ 52771)); var _message = _interopRequireDefault(__webpack_require__( /*! ../../../common/core/localization/message */ 4671)); var _export_load_panel = __webpack_require__( /*! ../../common/export_load_panel */ 55972); var _window = __webpack_require__( /*! ../../../core/utils/window */ 3104); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } exports.Export = { getFullOptions: function(options) { const fullOptions = (0, _extend.extend)({}, options); if (!((0, _type.isDefined)(fullOptions.jsPDFDocument) && (0, _type.isObject)(fullOptions.jsPDFDocument))) { throw Error('The "jsPDFDocument" field must contain a jsPDF instance.') } if (!((0, _type.isDefined)(fullOptions.jsPDFDocument.autoTable) && (0, _type.isFunction)(fullOptions.jsPDFDocument.autoTable))) { throw Error('The "exportDataGrid" method requires a autoTable plugin for jsPDF object.') } if (!(0, _type.isDefined)(fullOptions.keepColumnWidths)) { fullOptions.keepColumnWidths = true } if (!(0, _type.isDefined)(fullOptions.autoTableOptions)) { fullOptions.autoTableOptions = this._getDefaultAutoTableOptions() } else { if (!(0, _type.isObject)(fullOptions.autoTableOptions)) { throw Error('The "autoTableOptions" option must be of object type.') } fullOptions.autoTableOptions = (0, _extend.extend)(true, {}, this._getDefaultAutoTableOptions(), fullOptions.autoTableOptions) } if (!(0, _type.isDefined)(fullOptions.loadPanel)) { fullOptions.loadPanel = {} } if (!(0, _type.isDefined)(fullOptions.loadPanel.enabled)) { fullOptions.loadPanel.enabled = true } if (!(0, _type.isDefined)(fullOptions.loadPanel.text)) { fullOptions.loadPanel.text = _message.default.format("dxDataGrid-exporting") } return fullOptions }, _getDefaultAutoTableOptions: function() { return { theme: "plain", tableLineColor: 149, tableLineWidth: .1, styles: { textColor: 51, lineColor: 149, lineWidth: 0 }, columnStyles: {}, headStyles: { fontStyle: "normal", textColor: 149, lineWidth: .1 }, bodyStyles: { lineWidth: .1 }, head: [], body: [] } }, export: function(options) { var _component$_getIntern; const { jsPDFDocument: jsPDFDocument, autoTableOptions: autoTableOptions, component: component, customizeCell: customizeCell, keepColumnWidths: keepColumnWidths, selectedRowsOnly: selectedRowsOnly, loadPanel: loadPanel } = options; const internalComponent = (null === (_component$_getIntern = component._getInternalInstance) || void 0 === _component$_getIntern ? void 0 : _component$_getIntern.call(component)) || component; const initialLoadPanelEnabledOption = internalComponent.option("loadPanel") && internalComponent.option("loadPanel").enabled; if (initialLoadPanelEnabledOption) { component.option("loadPanel.enabled", false) } let exportLoadPanel; if (loadPanel.enabled && (0, _window.hasWindow)()) { const rowsView = component.getView("rowsView"); exportLoadPanel = new _export_load_panel.ExportLoadPanel(component, rowsView.element(), rowsView.element().parent(), loadPanel); exportLoadPanel.show() } const dataProvider = component.getDataProvider(selectedRowsOnly); const wrapText = !!component.option("wordWrapEnabled"); return new Promise((resolve => { dataProvider.ready().done((() => { const columns = dataProvider.getColumns(); const styles = dataProvider.getStyles(); const dataRowsCount = dataProvider.getRowsCount(); const headerRowCount = dataProvider.getHeaderRowCount(); const mergedCells = []; if (keepColumnWidths) { const pdfColumnWidths = this._tryGetPdfColumnWidths(autoTableOptions.tableWidth, dataProvider.getColumnsWidths()); if ((0, _type.isDefined)(pdfColumnWidths) && (0, _type.isDefined)(autoTableOptions.columnStyles)) { this._setColumnWidths(autoTableOptions.columnStyles, pdfColumnWidths) } } for (let rowIndex = 0; rowIndex < dataRowsCount; rowIndex++) { const row = []; for (let cellIndex = 0; cellIndex < columns.length; cellIndex++) { const { value: value, cellSourceData: gridCell } = dataProvider.getCellData(rowIndex, cellIndex, true); const cellStyle = styles[dataProvider.getStyleId(rowIndex, cellIndex)]; const pdfCell = { content: this._getFormattedValue(value, cellStyle.format), styles: this._getPDFCellStyles(gridCell.rowType, columns[cellIndex].alignment, cellStyle, wrapText) }; if ("header" === gridCell.rowType) { const mergedRange = this._tryGetMergeRange(rowIndex, cellIndex, mergedCells, dataProvider); if (mergedRange && mergedRange.rowSpan > 0) { pdfCell.rowSpan = mergedRange.rowSpan + 1 } if (mergedRange && mergedRange.colSpan > 0) { pdfCell.colSpan = mergedRange.colSpan + 1 } const isMergedCell = mergedCells[rowIndex] && mergedCells[rowIndex][cellIndex]; if (!isMergedCell || pdfCell.rowSpan > 1 || pdfCell.colSpan > 1) { if ((0, _type.isFunction)(customizeCell)) { customizeCell({ gridCell: gridCell, pdfCell: pdfCell }) } row.push(pdfCell) } } else if ("group" === gridCell.rowType && !(0, _type.isDefined)(pdfCell.content) && 1 === row.length) { row[0].colSpan = row[0].colSpan ?? 1; row[0].colSpan++ } else { pdfCell.content = pdfCell.content ?? ""; if ((0, _type.isFunction)(customizeCell)) { customizeCell({ gridCell: gridCell, pdfCell: pdfCell }) } row.push(pdfCell) } } if (rowIndex < headerRowCount) { autoTableOptions.head.push(row) } else { autoTableOptions.body.push(row) } } jsPDFDocument.autoTable(autoTableOptions); resolve() })).always((() => { if (initialLoadPanelEnabledOption) { component.option("loadPanel.enabled", initialLoadPanelEnabledOption) } if (loadPanel.enabled && (0, _window.hasWindow)()) { exportLoadPanel.dispose() } })) })) }, _getFormattedValue: function(value, format) { if ((0, _type.isDefined)(format)) { if ((0, _type.isDate)(value)) { return _date.default.format(value, format) } if ((0, _type.isNumeric)(value)) { return _number.default.format(value, format) } } return value }, _getPDFCellStyles: function(rowType, columnAlignment, cellStyle, wrapText) { const { alignment: cellAlignment, bold: bold } = cellStyle; const align = "header" === rowType ? columnAlignment : cellAlignment; const pdfCellStyle = {}; if (align) { pdfCellStyle.halign = align } if (bold && "header" !== rowType) { pdfCellStyle.fontStyle = "bold" } if (wrapText) { pdfCellStyle.cellWidth = "wrap" } return pdfCellStyle }, _tryGetMergeRange: function(rowIndex, cellIndex, mergedCells, dataProvider) { if (!mergedCells[rowIndex] || !mergedCells[rowIndex][cellIndex]) { const { colspan: colspan, rowspan: rowspan } = dataProvider.getCellMerging(rowIndex, cellIndex); if (colspan || rowspan) { for (let i = rowIndex; i <= rowIndex + rowspan || 0; i++) { for (let j = cellIndex; j <= cellIndex + colspan || 0; j++) { if (!mergedCells[i]) { mergedCells[i] = [] } mergedCells[i][j] = true } } return { rowSpan: rowspan, colSpan: colspan } } } }, _tryGetPdfColumnWidths(autoTableWidth, columnWidths) { if ((0, _type.isNumeric)(autoTableWidth) && (0, _type.isDefined)(columnWidths)) { const tableWidth = columnWidths.reduce(((a, b) => a + b), 0); return columnWidths.map((columnWidth => autoTableWidth * columnWidth / tableWidth)) } }, _setColumnWidths: function(autoTableColumnStyles, pdfColumnWidths) { pdfColumnWidths.forEach(((width, index) => { autoTableColumnStyles[index] = autoTableColumnStyles[index] || {}; autoTableColumnStyles[index].cellWidth = width })) } } }, 89222: /*!******************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/exporter/jspdf/autotable/export_data_grid.js ***! \******************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { exports.exportDataGrid = function(options) { return _export.Export.export(function(options) { if (!((0, _type.isDefined)(options) && (0, _type.isObject)(options))) { throw Error('The "exportDataGrid" method requires a configuration object.') } if (!((0, _type.isDefined)(options.component) && (0, _type.isObject)(options.component) && "dxDataGrid" === options.component.NAME)) { throw Error('The "component" field must contain a DataGrid instance.') } if (!(0, _type.isDefined)(options.selectedRowsOnly)) { options.selectedRowsOnly = false } return _export.Export.getFullOptions(options) }(options)) }; var _type = __webpack_require__( /*! ../../../core/utils/type */ 11528); var _export = __webpack_require__( /*! ./export */ 39368) }, 9916: /*!*********************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/exporter/jspdf/common/draw_utils.js ***! \*********************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { exports.addNewPage = function(doc) { doc.addPage(); ! function(doc) { if (!(0, _type.isDefined)(doc.getLineWidth)) { doc.__borderWidth = null } }(doc) }; exports.drawCellsContent = function(doc, customDrawCell, cellsArray, docStyles) { cellsArray.forEach((cell => { const { _rect: _rect, gridCell: gridCell } = cell, pdfCell = function(r, e) { if (null == r) { return {} } var t = {}; for (var n in r) { if ({}.hasOwnProperty.call(r, n)) { if (e.includes(n)) { continue } t[n] = r[n] } } return t }(cell, _excluded); const { x: x, y: y, w: w, h: h } = _rect; const rect = { x: x, y: y, w: w, h: h }; const eventArg = { doc: doc, rect: rect, pdfCell: pdfCell, gridCell: gridCell, cancel: false }; null === customDrawCell || void 0 === customDrawCell || customDrawCell(eventArg); if (!eventArg.cancel) { ! function(doc, cell) { if ((0, _type.isDefined)(cell.backgroundColor)) { trySetColor(doc, "fill", cell.backgroundColor); drawRect(doc, cell._rect.x, cell._rect.y, cell._rect.w, cell._rect.h, "F") } }(doc, cell); ! function(doc, cell, docStyles) { if ((0, _type.isDefined)(cell.text) && "" !== cell.text) { const { textColor: textColor, font: font, _rect: _rect, padding: padding } = cell; ! function(doc, _ref2, docStyles) { let { textColor: textColor, font: font } = _ref2; trySetColor(doc, "text", (0, _type.isDefined)(textColor) ? textColor : docStyles.textColor); const currentFont = (0, _type.isDefined)(font) ? (0, _extend.extend)({}, docStyles.font, font) : docStyles.font; const docFont = doc.getFont(); if (currentFont.name !== docFont.fontName || currentFont.style !== docFont.fontStyle || (0, _type.isDefined)(currentFont.weight)) { doc.setFont(currentFont.name, currentFont.style, currentFont.weight) } if (currentFont.size !== doc.getFontSize()) { doc.setFontSize(currentFont.size) } }(doc, { textColor: textColor, font: font }, docStyles); const textRect = { x: _rect.x + padding.left, y: _rect.y + padding.top, w: _rect.w - (padding.left + padding.right), h: _rect.h - (padding.top + padding.bottom) }; if ((0, _type.isDefined)(cell._textLeftOffset) || (0, _type.isDefined)(cell._textTopOffset)) { textRect.x = textRect.x + (cell._textLeftOffset ?? 0); textRect.y = textRect.y + (cell._textTopOffset ?? 0); doc.saveGraphicsState(); ! function(doc, x, y, w, h) { doc.moveTo(roundToThreeDecimals(x), roundToThreeDecimals(y)); doc.lineTo(roundToThreeDecimals(x + w), roundToThreeDecimals(y)); doc.lineTo(roundToThreeDecimals(x + w), roundToThreeDecimals(y + h)); doc.lineTo(roundToThreeDecimals(x), roundToThreeDecimals(y + h)); doc.clip(); doc.discardPath() }(doc, cell._rect.x, cell._rect.y, cell._rect.w, cell._rect.h) } drawTextInRect(doc, cell.text, textRect, cell.verticalAlign, cell.horizontalAlign, cell._internalTextOptions); if ((0, _type.isDefined)(cell._textLeftOffset) || (0, _type.isDefined)(cell._textTopOffset)) { doc.restoreGraphicsState() } } }(doc, cell, docStyles) } })) }; exports.drawCellsLines = function(doc, cellsArray, docStyles) { cellsArray.filter((cell => !(0, _type.isDefined)(cell.borderColor))).forEach((cell => { drawBorders(doc, cell._rect, cell, docStyles) })); cellsArray.filter((cell => (0, _type.isDefined)(cell.borderColor))).forEach((cell => { drawBorders(doc, cell._rect, cell, docStyles) })) }; exports.drawGridLines = function(doc, rect, options, docStyles) { drawBorders(doc, rect, options, docStyles) }; exports.drawLine = drawLine; exports.drawRect = drawRect; exports.drawTextInRect = drawTextInRect; exports.getDocumentStyles = function(doc) { const docFont = doc.getFont(); return { borderWidth: getDocBorderWidth(doc), borderColor: doc.getDrawColor(), font: { name: docFont.fontName, style: docFont.fontStyle, size: doc.getFontSize() }, textColor: doc.getTextColor() } }; exports.roundToThreeDecimals = roundToThreeDecimals; exports.setDocumentStyles = function(doc, styles) { const { borderWidth: borderWidth, borderColor: borderColor, font: font, textColor: textColor } = styles; const docFont = doc.getFont(); if (docFont.fontName !== font.name || docFont.fontStyle !== font.style) { doc.setFont(font.name, font.style, void 0) } const docFontSize = doc.getFontSize(); if (docFontSize !== font.size) { doc.setFontSize(font.size) } if (getDocBorderWidth(doc) !== borderWidth) { setDocBorderWidth(doc, borderWidth) } if (doc.getDrawColor() !== borderColor) { doc.setDrawColor(borderColor) } if (doc.getTextColor() !== textColor) { doc.setTextColor(textColor) } }; var _type = __webpack_require__( /*! ../../../core/utils/type */ 11528); var _extend = __webpack_require__( /*! ../../../core/utils/extend */ 52576); var _pdf_utils = __webpack_require__( /*! ./pdf_utils */ 31162); const _excluded = ["_rect", "gridCell"]; function capitalizeFirstLetter(string) { return string.charAt(0).toUpperCase() + string.slice(1) } function roundToThreeDecimals(value) { return Math.round(1e3 * value) / 1e3 } function drawLine(doc, startX, startY, endX, endY) { doc.line(roundToThreeDecimals(startX), roundToThreeDecimals(startY), roundToThreeDecimals(endX), roundToThreeDecimals(endY)) } function drawRect(doc, x, y, width, height, style) { if ((0, _type.isDefined)(style)) { doc.rect(roundToThreeDecimals(x), roundToThreeDecimals(y), roundToThreeDecimals(width), roundToThreeDecimals(height), style) } else { doc.rect(roundToThreeDecimals(x), roundToThreeDecimals(y), roundToThreeDecimals(width), roundToThreeDecimals(height)) } } function drawTextInRect(doc, text, rect, verticalAlign, horizontalAlign, jsPDFTextOptions) { const textArray = text.split("\n"); const linesCount = textArray.length; const heightOfOneLine = (0, _pdf_utils.calculateTextHeight)(doc, textArray[0], doc.getFont(), { wordWrapEnabled: false, targetRectWidth: 1e9 }); const vAlign = verticalAlign ?? "middle"; const hAlign = horizontalAlign ?? "left"; const verticalAlignCoefficientsMap = { top: 0, middle: .5, bottom: 1 }; const y = rect.y + rect.h * verticalAlignCoefficientsMap[vAlign] - heightOfOneLine * (linesCount - 1) * verticalAlignCoefficientsMap[vAlign] + function(doc) { return (doc.getLineHeightFactor() - 1.15) * doc.getFontSize() }(doc); const x = rect.x + rect.w * { left: 0, center: .5, right: 1 } [hAlign]; const textOptions = (0, _extend.extend)({ baseline: vAlign, align: hAlign }, jsPDFTextOptions); doc.text(textArray.join("\n"), roundToThreeDecimals(x), roundToThreeDecimals(y), textOptions) } function drawBorders(doc, rect, _ref, docStyles) { let { borderWidth: borderWidth, borderColor: borderColor, drawLeftBorder: drawLeftBorder = true, drawRightBorder: drawRightBorder = true, drawTopBorder: drawTopBorder = true, drawBottomBorder: drawBottomBorder = true } = _ref; if (!(0, _type.isDefined)(rect)) { throw "rect is required" } if (!drawLeftBorder && !drawRightBorder && !drawTopBorder && !drawBottomBorder) { return } else if (drawLeftBorder && drawRightBorder && drawTopBorder && drawBottomBorder) { setLinesStyles(doc, { borderWidth: borderWidth, borderColor: borderColor }, docStyles); drawRect(doc, rect.x, rect.y, rect.w, rect.h) } else { setLinesStyles(doc, { borderWidth: borderWidth, borderColor: borderColor }, docStyles); if (drawTopBorder) { drawLine(doc, rect.x, rect.y, rect.x + rect.w, rect.y) } if (drawLeftBorder) { drawLine(doc, rect.x, rect.y, rect.x, rect.y + rect.h) } if (drawRightBorder) { drawLine(doc, rect.x + rect.w, rect.y, rect.x + rect.w, rect.y + rect.h) } if (drawBottomBorder) { drawLine(doc, rect.x, rect.y + rect.h, rect.x + rect.w, rect.y + rect.h) } } } function setLinesStyles(doc, _ref3, docStyles) { let { borderWidth: borderWidth, borderColor: borderColor } = _ref3; const currentBorderWidth = (0, _type.isDefined)(borderWidth) ? borderWidth : docStyles.borderWidth; if (currentBorderWidth !== getDocBorderWidth(doc)) { setDocBorderWidth(doc, (0, _pdf_utils.toPdfUnit)(doc, currentBorderWidth)) } trySetColor(doc, "draw", (0, _type.isDefined)(borderColor) ? borderColor : docStyles.borderColor) } function trySetColor(doc, target, color) { const getterName = `get${capitalizeFirstLetter(target)}Color`; const setterName = `set${capitalizeFirstLetter(target)}Color`; const { ch1: ch1 = color, ch2: ch2, ch3: ch3, ch4: ch4 } = color; const normalizedColor = doc.__private__.decodeColorString(doc.__private__.encodeColorString({ ch1: ch1, ch2: ch2, ch3: ch3, ch4: ch4, precision: "text" === target ? 3 : 2 })); if (normalizedColor !== doc[getterName]() || "fill" === target) { doc[setterName].apply(doc, [ch1, ch2, ch3, ch4].filter((item => void 0 !== item))) } } function getDocBorderWidth(doc) { if ((0, _type.isDefined)(doc.getLineWidth)) { return doc.getLineWidth() } return doc.__borderWidth ?? .200025 } function setDocBorderWidth(doc, width) { doc.setLineWidth(width); if (!(0, _type.isDefined)(doc.getLineWidth)) { doc.__borderWidth = width } } }, 5650: /*!*****************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/exporter/jspdf/common/export.js ***! \*****************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { exports.Export = void 0; var _type = __webpack_require__( /*! ../../../core/utils/type */ 11528); var _extend = __webpack_require__( /*! ../../../core/utils/extend */ 52576); var _normalizeOptions = __webpack_require__( /*! ./normalizeOptions */ 33487); var _row_utils = __webpack_require__( /*! ./row_utils */ 20652); var _height_updater = __webpack_require__( /*! ./height_updater */ 99153); var _rows_generator = __webpack_require__( /*! ./rows_generator */ 44151); var _rows_splitting = __webpack_require__( /*! ./rows_splitting */ 26002); var _draw_utils = __webpack_require__( /*! ./draw_utils */ 9916); var _pdf_utils = __webpack_require__( /*! ./pdf_utils */ 31162); var _message = (e = __webpack_require__( /*! ../../../common/core/localization/message */ 4671), e && e.__esModule ? e : { default: e }); var e; var _export_load_panel = __webpack_require__( /*! ../../common/export_load_panel */ 55972); var _window = __webpack_require__( /*! ../../../core/utils/window */ 3104); exports.Export = { getFullOptions: function(options) { const { jsPDFDocument: jsPDFDocument } = options; const fullOptions = (0, _extend.extend)({}, options); if (!(0, _type.isDefined)(fullOptions.topLeft)) { fullOptions.topLeft = { x: 0, y: 0 } } if (!(0, _type.isDefined)(fullOptions.indent)) { fullOptions.indent = 0 } if (!(0, _type.isDefined)(fullOptions.repeatHeaders)) { fullOptions.repeatHeaders = true } if (!(0, _type.isDefined)(fullOptions.margin)) { fullOptions.margin = (0, _pdf_utils.toPdfUnit)(jsPDFDocument, 40) } fullOptions.margin = (0, _normalizeOptions.normalizeBoundaryValue)(fullOptions.margin); if (!Array.isArray(fullOptions.columnWidths)) { fullOptions.columnWidths = [] } if (!(0, _type.isDefined)(fullOptions.loadPanel)) { fullOptions.loadPanel = {} } if (!(0, _type.isDefined)(fullOptions.loadPanel.enabled)) { fullOptions.loadPanel.enabled = true } if (!(0, _type.isDefined)(fullOptions.loadPanel.text)) { fullOptions.loadPanel.text = _message.default.format("dxDataGrid-exporting") } return fullOptions }, export: function(options) { var _component$_getIntern; const { jsPDFDocument: jsPDFDocument, component: component, selectedRowsOnly: selectedRowsOnly, loadPanel: loadPanel } = options; const internalComponent = (null === (_component$_getIntern = component._getInternalInstance) || void 0 === _component$_getIntern ? void 0 : _component$_getIntern.call(component)) || component; const initialLoadPanelEnabledOption = internalComponent.option("loadPanel") && internalComponent.option("loadPanel").enabled; if (initialLoadPanelEnabledOption) { component.option("loadPanel.enabled", false) } let exportLoadPanel; if (loadPanel.enabled && (0, _window.hasWindow)()) { const rowsView = component.getView("rowsView"); exportLoadPanel = new _export_load_panel.ExportLoadPanel(component, rowsView.element(), rowsView.element().parent(), loadPanel); exportLoadPanel.show() } const dataProvider = component.getDataProvider(selectedRowsOnly); return new Promise((resolve => { dataProvider.ready().done((() => { var _options$rowOptions; const rowsInfo = (0, _rows_generator.generateRowsInfo)(jsPDFDocument, dataProvider, component, null === (_options$rowOptions = options.rowOptions) || void 0 === _options$rowOptions || null === (_options$rowOptions = _options$rowOptions.headerStyles) || void 0 === _options$rowOptions ? void 0 : _options$rowOptions.backgroundColor); if (options.customizeCell) { rowsInfo.forEach((rowInfo => rowInfo.cells.forEach((cellInfo => options.customizeCell(cellInfo))))) }(0, _normalizeOptions.normalizeRowsInfo)(rowsInfo); (0, _row_utils.initializeCellsWidth)(jsPDFDocument, dataProvider, rowsInfo, options); (0, _row_utils.resizeFirstColumnByIndentLevel)(rowsInfo, options); (0, _row_utils.applyColSpans)(rowsInfo); (0, _row_utils.calculateHeights)(jsPDFDocument, rowsInfo, options); (0, _row_utils.applyRowSpans)(rowsInfo); (0, _height_updater.updateRowsAndCellsHeights)(jsPDFDocument, rowsInfo); (0, _row_utils.calculateCoordinates)(jsPDFDocument, rowsInfo, options); (0, _row_utils.applyBordersConfig)(rowsInfo); (0, _pdf_utils.applyWordWrap)(jsPDFDocument, rowsInfo); const docStyles = (0, _draw_utils.getDocumentStyles)(jsPDFDocument); const rtlEnabled = !!component.option("rtlEnabled"); const rectsByPages = (0, _rows_splitting.splitByPages)(jsPDFDocument, rowsInfo, options, (_ref => { var _sourceRect$sourceCel; let { sourceRect: sourceRect, leftRect: leftRect, rightRect: rightRect } = _ref; let leftRectTextOptions = {}; let rightRectTextOptions = {}; const isTextNotEmpty = (null === (_sourceRect$sourceCel = sourceRect.sourceCellInfo.text) || void 0 === _sourceRect$sourceCel ? void 0 : _sourceRect$sourceCel.length) > 0; if (isTextNotEmpty) { if (rtlEnabled) { const isTextWidthGreaterThanRect = jsPDFDocument.getTextWidth(sourceRect.sourceCellInfo.text) > leftRect.w; const isTextRightAlignment = !(0, _type.isDefined)(sourceRect.sourceCellInfo.horizontalAlign) || "right" === sourceRect.sourceCellInfo.horizontalAlign; if (isTextWidthGreaterThanRect || !isTextRightAlignment) { var _sourceRect$sourceCel2, _sourceRect$sourceCel3, _sourceRect$sourceCel4; let rightRectTextOffset; let leftRectTextOffset; if ("right" === (null === (_sourceRect$sourceCel2 = sourceRect.sourceCellInfo) || void 0 === _sourceRect$sourceCel2 ? void 0 : _sourceRect$sourceCel2.horizontalAlign)) { rightRectTextOffset = sourceRect.sourceCellInfo._textLeftOffset ?? 0; leftRectTextOffset = rightRectTextOffset + leftRect.w } else if ("center" === (null === (_sourceRect$sourceCel3 = sourceRect.sourceCellInfo) || void 0 === _sourceRect$sourceCel3 ? void 0 : _sourceRect$sourceCel3.horizontalAlign)) { leftRectTextOffset = sourceRect.x + sourceRect.w - (rightRect.x + rightRect.w) + sourceRect.sourceCellInfo._rect.w / 2 - leftRect.w / 2; rightRectTextOffset = leftRectTextOffset - rightRect.w } else if ("left" === (null === (_sourceRect$sourceCel4 = sourceRect.sourceCellInfo) || void 0 === _sourceRect$sourceCel4 ? void 0 : _sourceRect$sourceCel4.horizontalAlign)) { leftRectTextOffset = sourceRect.x + sourceRect.w - (rightRect.x + rightRect.w); rightRectTextOffset = leftRectTextOffset - rightRect.w } leftRectTextOptions = Object.assign({}, { _textLeftOffset: rightRectTextOffset }); rightRectTextOptions = Object.assign({}, { _textLeftOffset: leftRectTextOffset }) } else { rightRectTextOptions = Object.assign({}, { text: "" }) } } else { const isTextWidthGreaterThanRect = jsPDFDocument.getTextWidth(sourceRect.sourceCellInfo.text) > leftRect.w; const isTextLeftAlignment = !(0, _type.isDefined)(sourceRect.sourceCellInfo.horizontalAlign) || "left" === sourceRect.sourceCellInfo.horizontalAlign; if (isTextWidthGreaterThanRect || !isTextLeftAlignment) { var _sourceRect$sourceCel5, _sourceRect$sourceCel6, _sourceRect$sourceCel7; let leftTextLeftOffset; let rightTextLeftOffset; if ("left" === (null === (_sourceRect$sourceCel5 = sourceRect.sourceCellInfo) || void 0 === _sourceRect$sourceCel5 ? void 0 : _sourceRect$sourceCel5.horizontalAlign)) { leftTextLeftOffset = sourceRect.sourceCellInfo._textLeftOffset ?? 0; rightTextLeftOffset = leftTextLeftOffset - leftRect.w } else if ("center" === (null === (_sourceRect$sourceCel6 = sourceRect.sourceCellInfo) || void 0 === _sourceRect$sourceCel6 ? void 0 : _sourceRect$sourceCel6.horizontalAlign)) { const offset = sourceRect.sourceCellInfo._textLeftOffset ?? 0; leftTextLeftOffset = offset + (sourceRect.x + sourceRect.w / 2) - (leftRect.x + leftRect.w / 2); rightTextLeftOffset = offset + (sourceRect.x + sourceRect.w / 2) - (rightRect.x + rightRect.w / 2) } else if ("right" === (null === (_sourceRect$sourceCel7 = sourceRect.sourceCellInfo) || void 0 === _sourceRect$sourceCel7 ? void 0 : _sourceRect$sourceCel7.horizontalAlign)) { leftTextLeftOffset = sourceRect.x + sourceRect.w - (leftRect.x + leftRect.w); rightTextLeftOffset = sourceRect.x + sourceRect.w - (rightRect.x + rightRect.w) } leftRectTextOptions = Object.assign({}, { _textLeftOffset: leftTextLeftOffset }); rightRectTextOptions = Object.assign({}, { _textLeftOffset: rightTextLeftOffset }) } else { rightRectTextOptions = Object.assign({}, { text: "" }) } } } leftRect.sourceCellInfo = Object.assign({}, sourceRect.sourceCellInfo, { debugSourceCellInfo: sourceRect.sourceCellInfo }, leftRectTextOptions); rightRect.sourceCellInfo = Object.assign({}, sourceRect.sourceCellInfo, { debugSourceCellInfo: sourceRect.sourceCellInfo }, rightRectTextOptions) }), (_ref2 => { var _sourceRect$sourceCel8; let { sourceRect: sourceRect, topRect: topRect, bottomRect: bottomRect } = _ref2; let topRectTextOptions = {}; let bottomRectTextOptions = {}; const isTextNotEmpty = (null === (_sourceRect$sourceCel8 = sourceRect.sourceCellInfo.text) || void 0 === _sourceRect$sourceCel8 ? void 0 : _sourceRect$sourceCel8.length) > 0; if (isTextNotEmpty) { var _sourceRect$sourceCel9; const isTextHeightGreaterThanRect = jsPDFDocument.getTextDimensions(sourceRect.sourceCellInfo.text).h > topRect.h; const isTextTopAlignment = "top" === (null === (_sourceRect$sourceCel9 = sourceRect.sourceCellInfo) || void 0 === _sourceRect$sourceCel9 ? void 0 : _sourceRect$sourceCel9.verticalAlign); if (isTextHeightGreaterThanRect || !isTextTopAlignment) { var _sourceRect$sourceCel10, _sourceRect$sourceCel11, _sourceRect$sourceCel12; let topTextTopOffset; let bottomTextTopOffset; if ("top" === (null === (_sourceRect$sourceCel10 = sourceRect.sourceCellInfo) || void 0 === _sourceRect$sourceCel10 ? void 0 : _sourceRect$sourceCel10.verticalAlign)) { topTextTopOffset = sourceRect.sourceCellInfo._textTopOffset ?? 0; bottomTextTopOffset = topTextTopOffset - topRect.h } else if ("middle" === (null === (_sourceRect$sourceCel11 = sourceRect.sourceCellInfo) || void 0 === _sourceRect$sourceCel11 ? void 0 : _sourceRect$sourceCel11.verticalAlign)) { const offset = sourceRect.sourceCellInfo._textTopOffset ?? 0; topTextTopOffset = offset + (sourceRect.y + sourceRect.h / 2) - (topRect.y + topRect.h / 2); bottomTextTopOffset = offset + (sourceRect.y + sourceRect.h / 2) - (bottomRect.y + bottomRect.h / 2) } else if ("bottom" === (null === (_sourceRect$sourceCel12 = sourceRect.sourceCellInfo) || void 0 === _sourceRect$sourceCel12 ? void 0 : _sourceRect$sourceCel12.verticalAlign)) { topTextTopOffset = sourceRect.y + sourceRect.h - (topRect.y + topRect.h); bottomTextTopOffset = sourceRect.y + sourceRect.h - (bottomRect.y + bottomRect.h) } topRectTextOptions = Object.assign({}, { _textTopOffset: topTextTopOffset }); bottomRectTextOptions = Object.assign({}, { _textTopOffset: bottomTextTopOffset }) } else { bottomRectTextOptions = Object.assign({}, { text: "" }) } } topRect.sourceCellInfo = Object.assign({}, sourceRect.sourceCellInfo, { debugSourceCellInfo: sourceRect.sourceCellInfo }, topRectTextOptions); bottomRect.sourceCellInfo = Object.assign({}, sourceRect.sourceCellInfo, { debugSourceCellInfo: sourceRect.sourceCellInfo }, bottomRectTextOptions) })); if (rtlEnabled) { (0, _pdf_utils.applyRtl)(jsPDFDocument, rectsByPages, options) } rectsByPages.forEach(((pdfCellsInfo, index) => { if (index > 0) { (0, _draw_utils.addNewPage)(jsPDFDocument) }(0, _draw_utils.drawCellsContent)(jsPDFDocument, options.customDrawCell, pdfCellsInfo, docStyles); (0, _draw_utils.drawCellsLines)(jsPDFDocument, pdfCellsInfo, docStyles); const isEmptyPdfCellsInfoSpecified = (0, _type.isDefined)(pdfCellsInfo) && 0 === pdfCellsInfo.length; if (isEmptyPdfCellsInfoSpecified) { const tableRect = (0, _row_utils.calculateTableSize)(jsPDFDocument, pdfCellsInfo, options); const baseStyle = (0, _rows_generator.getBaseTableStyle)(); (0, _draw_utils.drawGridLines)(jsPDFDocument, tableRect, baseStyle, docStyles) } })); (0, _draw_utils.setDocumentStyles)(jsPDFDocument, docStyles); resolve() })).always((() => { if (initialLoadPanelEnabledOption) { component.option("loadPanel.enabled", initialLoadPanelEnabledOption) } if (loadPanel.enabled && (0, _window.hasWindow)()) { exportLoadPanel.dispose() } })) })) } } }, 99153: /*!*************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/exporter/jspdf/common/height_updater.js ***! \*************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { exports.updateRowsAndCellsHeights = function(doc, rows) { const rowsAdditionalHeights = function(doc, rows) { const rowsAdditionalHeights = Array.from({ length: rows.length }, (() => 0)); const sortedRows = function(rows) { const getMaxRowSpan = row => { const spansArray = row.cells.map((cell => cell.rowSpan ?? 0)); return Math.max(...spansArray) }; const sortByMaxRowSpan = (row1, row2) => { const row1RowSpan = getMaxRowSpan(row1); const row2RowSpan = getMaxRowSpan(row2); if (row1RowSpan > row2RowSpan) { return 1 } if (row2RowSpan > row1RowSpan) { return -1 } return 0 }; return [...rows].sort(sortByMaxRowSpan) }(rows); sortedRows.forEach((row => { const cellsWithRowSpan = row.cells.filter((cell => (0, _type.isDefined)(cell.rowSpan))); cellsWithRowSpan.forEach((cell => { const targetRectWidth = (0, _pdf_utils.calculateTargetRectWidth)(cell.pdfCell._rect.w, cell.pdfCell.padding); const textHeight = (0, _pdf_utils.calculateTextHeight)(doc, cell.pdfCell.text, cell.pdfCell.font, { wordWrapEnabled: cell.pdfCell.wordWrapEnabled, targetRectWidth: targetRectWidth }); const cellHeight = textHeight + cell.pdfCell.padding.top + cell.pdfCell.padding.bottom; const rowsCount = cell.rowSpan + 1; const currentRowSpanRowsHeight = rows.slice(row.rowIndex, row.rowIndex + rowsCount).reduce(((accumulator, rowInfo) => accumulator + rowInfo.height + rowsAdditionalHeights[rowInfo.rowIndex]), 0); if (cellHeight > currentRowSpanRowsHeight) { const delta = (cellHeight - currentRowSpanRowsHeight) / rowsCount; for (let spanIndex = row.rowIndex; spanIndex < row.rowIndex + rowsCount; spanIndex++) { rowsAdditionalHeights[spanIndex] += delta } } })) })); return rowsAdditionalHeights }(doc, rows); rows.forEach((row => { row.height += rowsAdditionalHeights[row.rowIndex] })); rows.forEach((row => { row.cells.forEach((cell => { const rowsCount = (cell.rowSpan ?? 0) + 1; cell.pdfCell._rect.h = rows.slice(row.rowIndex, row.rowIndex + rowsCount).reduce(((accumulator, rowInfo) => accumulator + rowInfo.height), 0) })) })) }; var _type = __webpack_require__( /*! ../../../core/utils/type */ 11528); var _pdf_utils = __webpack_require__( /*! ./pdf_utils */ 31162) }, 33487: /*!***************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/exporter/jspdf/common/normalizeOptions.js ***! \***************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { exports.normalizeBoundaryValue = normalizeBoundaryValue; exports.normalizeRowsInfo = function(rowsInfo) { rowsInfo.forEach((row => { row.cells.forEach((_ref => { let { pdfCell: pdfCell } = _ref; pdfCell.padding = normalizeBoundaryValue(pdfCell.padding) })) })) }; var _type = __webpack_require__( /*! ../../../core/utils/type */ 11528); function normalizeBoundaryValue(value) { if ((0, _type.isNumeric)(value)) { return { top: value, right: value, bottom: value, left: value } } return { top: (null === value || void 0 === value ? void 0 : value.top) ?? 0, right: (null === value || void 0 === value ? void 0 : value.right) ?? 0, bottom: (null === value || void 0 === value ? void 0 : value.bottom) ?? 0, left: (null === value || void 0 === value ? void 0 : value.left) ?? 0 } } }, 31162: /*!********************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/exporter/jspdf/common/pdf_utils.js ***! \********************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { exports.applyRtl = function(doc, rectsByPages, options) { rectsByPages.forEach((pageRects => { pageRects.forEach((pdfCell => { const mirroredX = getPageWidth(doc) - (pdfCell._rect.x + pdfCell._rect.w); const marginDiff = options.margin.left - options.margin.right; pdfCell._rect.x = mirroredX + marginDiff })) })) }; exports.applyWordWrap = function(doc, rowsInfo) { rowsInfo.forEach((row => { row.cells.forEach((_ref3 => { let { pdfCell: pdfCell } = _ref3; if ((0, _type.isDefined)(pdfCell.text)) { const lines = getTextLines(doc, pdfCell.text, pdfCell.font, { wordWrapEnabled: pdfCell.wordWrapEnabled, targetRectWidth: calculateTargetRectWidth(pdfCell._rect.w, pdfCell.padding) }); pdfCell.text = lines.join("\n") } })) })) }; exports.calculateRowHeight = function(doc, cells, columnWidths) { if (cells.length !== columnWidths.length) { throw "the cells count must be equal to the count of the columns" } let rowHeight = 0; for (let cellIndex = 0; cellIndex < cells.length; cellIndex++) { if ((0, _type.isDefined)(cells[cellIndex].rowSpan)) { continue } const cellText = cells[cellIndex].pdfCell.text; const cellPadding = cells[cellIndex].pdfCell.padding; const font = cells[cellIndex].pdfCell.font; const wordWrapEnabled = cells[cellIndex].pdfCell.wordWrapEnabled; const columnWidth = columnWidths[cellIndex]; const targetRectWidth = calculateTargetRectWidth(columnWidth, cellPadding); if ((0, _type.isDefined)(cellText)) { const textHeight = "" !== cellText ? calculateTextHeight(doc, cellText, font, { wordWrapEnabled: wordWrapEnabled, targetRectWidth: targetRectWidth }) : 0; const cellHeight = textHeight + cellPadding.top + cellPadding.bottom; if (rowHeight < cellHeight) { rowHeight = cellHeight } } } return rowHeight }; exports.calculateTargetRectWidth = calculateTargetRectWidth; exports.calculateTextHeight = calculateTextHeight; exports.getPageHeight = function(doc) { return doc.internal.pageSize.getHeight() }; exports.getPageWidth = getPageWidth; exports.getTextDimensions = getTextDimensions; exports.getTextLines = getTextLines; exports.toPdfUnit = function(doc, value) { const coefficient = 1 / doc.internal.scaleFactor; return value * coefficient }; var _type = __webpack_require__( /*! ../../../core/utils/type */ 11528); const DOTS_TEXT = "..."; function getPageWidth(doc) { return doc.internal.pageSize.getWidth() } function getTextLines(doc, text, font, _ref) { let { wordWrapEnabled: wordWrapEnabled, targetRectWidth: targetRectWidth } = _ref; if (wordWrapEnabled) { const usedFont = doc.getFont(null === font || void 0 === font ? void 0 : font.name, null === font || void 0 === font ? void 0 : font.style); return doc.splitTextToSize(text, targetRectWidth, { fontSize: (null === font || void 0 === font ? void 0 : font.size) || doc.getFontSize(), fontName: usedFont.fontName, fontStyle: usedFont.fontStyle }) } let textWithoutLineBreak = text.split("\n").filter((ch => "" !== ch)).join(" "); if (getTextDimensions(doc, textWithoutLineBreak, font).w <= targetRectWidth) { return [textWithoutLineBreak] } let textWidth = getTextDimensions(doc, textWithoutLineBreak + DOTS_TEXT, font).w; while (textWithoutLineBreak.length > 0 && textWidth > targetRectWidth) { let symbolsCountToRemove = 0; if (textWidth >= 2 * targetRectWidth) { symbolsCountToRemove = textWithoutLineBreak.length / 2 } if (symbolsCountToRemove < 1) { symbolsCountToRemove = 1 } textWithoutLineBreak = textWithoutLineBreak.substring(0, textWithoutLineBreak.length - symbolsCountToRemove); textWidth = getTextDimensions(doc, textWithoutLineBreak + DOTS_TEXT, font).w } return [textWithoutLineBreak + DOTS_TEXT] } function calculateTargetRectWidth(columnWidth, padding) { const width = columnWidth - (padding.left + padding.right); return width >= 0 ? width : 0 } function getTextDimensions(doc, text, font) { return doc.getTextDimensions(text, { font: doc.getFont(null === font || void 0 === font ? void 0 : font.name, null === font || void 0 === font ? void 0 : font.style), fontSize: (null === font || void 0 === font ? void 0 : font.size) || doc.getFontSize() }) } function calculateTextHeight(doc, text, font, _ref2) { let { wordWrapEnabled: wordWrapEnabled, targetRectWidth: targetRectWidth } = _ref2; const heightOfOneLine = getTextDimensions(doc, text, font).h; const linesCount = getTextLines(doc, text, font, { wordWrapEnabled: wordWrapEnabled, targetRectWidth: targetRectWidth }).length; return heightOfOneLine * linesCount * doc.getLineHeightFactor() } }, 20652: /*!********************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/exporter/jspdf/common/row_utils.js ***! \********************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { exports.applyBordersConfig = function(rows) { for (let rowIndex = 0; rowIndex < rows.length; rowIndex++) { const cells = rows[rowIndex].cells; for (let columnIndex = 0; columnIndex < cells.length; columnIndex++) { const pdfCell = cells[columnIndex].pdfCell; const leftPdfCell = columnIndex >= 1 ? cells[columnIndex - 1].pdfCell : null; const topPdfCell = rowIndex >= 1 ? rows[rowIndex - 1].cells[columnIndex].pdfCell : null; if (false === pdfCell.drawLeftBorder && !(0, _type.isDefined)(cells[columnIndex].colSpan)) { if ((0, _type.isDefined)(leftPdfCell)) { leftPdfCell.drawRightBorder = false } } else if (!(0, _type.isDefined)(pdfCell.drawLeftBorder)) { if ((0, _type.isDefined)(leftPdfCell) && false === leftPdfCell.drawRightBorder) { pdfCell.drawLeftBorder = false } } if (false === pdfCell.drawTopBorder) { if ((0, _type.isDefined)(topPdfCell)) { topPdfCell.drawBottomBorder = false } } else if (!(0, _type.isDefined)(pdfCell.drawTopBorder)) { if ((0, _type.isDefined)(topPdfCell) && false === topPdfCell.drawBottomBorder) { pdfCell.drawTopBorder = false } } } } }; exports.applyColSpans = function(rows) { for (let rowIndex = 0; rowIndex < rows.length; rowIndex++) { const row = rows[rowIndex]; for (let cellIndex = 0; cellIndex < row.cells.length; cellIndex++) { const cell = row.cells[cellIndex]; if ((0, _type.isDefined)(cell.colSpan) && !(0, _type.isDefined)(cell.pdfCell.isMerged)) { for (let spanIndex = 1; spanIndex <= cell.colSpan; spanIndex++) { const mergedCell = rows[rowIndex].cells[cellIndex + spanIndex]; cell.pdfCell._rect.w += mergedCell.pdfCell._rect.w; mergedCell.pdfCell._rect.w = 0; mergedCell.pdfCell.isMerged = true } } } } }; exports.applyRowSpans = function(rows) { for (let rowIndex = 0; rowIndex < rows.length; rowIndex++) { const row = rows[rowIndex]; for (let cellIndex = 0; cellIndex < row.cells.length; cellIndex++) { const cell = row.cells[cellIndex]; if ((0, _type.isDefined)(cell.rowSpan) && !(0, _type.isDefined)(cell.pdfCell.isMerged)) { for (let spanIndex = 1; spanIndex <= cell.rowSpan; spanIndex++) { const mergedCell = rows[rowIndex + spanIndex].cells[cellIndex]; cell.pdfCell._rect.h += mergedCell.pdfCell._rect.h; mergedCell.pdfCell._rect.h = 0; mergedCell.pdfCell.isMerged = true } } } } }; exports.calculateCoordinates = function(doc, rows, options) { const topLeft = null === options || void 0 === options ? void 0 : options.topLeft; const margin = null === options || void 0 === options ? void 0 : options.margin; let y = ((null === topLeft || void 0 === topLeft ? void 0 : topLeft.y) ?? 0) + margin.top; rows.forEach((row => { let x = ((null === topLeft || void 0 === topLeft ? void 0 : topLeft.x) ?? 0) + margin.left; const intend = row.indentLevel * options.indent; row.cells.forEach((cell => { cell.pdfCell._rect.x = x + intend; cell.pdfCell._rect.y = y; x += cell.pdfCell._rect.w })); y += row.height })) }; exports.calculateHeights = function(doc, rows, options) { rows.forEach((row => { const pdfCells = row.cells.map((c => c.pdfCell)); let customerHeight; if (options.onRowExporting) { const args = { rowCells: pdfCells }; options.onRowExporting(args); if ((0, _type.isDefined)(args.rowHeight)) { customerHeight = args.rowHeight } } row.height = (0, _type.isDefined)(customerHeight) ? customerHeight : (0, _pdf_utils.calculateRowHeight)(doc, row.cells, pdfCells.map((c => c._rect.w))); pdfCells.forEach((cell => { cell._rect.h = row.height })) })) }; exports.calculateTableSize = function(doc, cells, options) { var _options$topLeft, _options$topLeft2; let leftPos; let topPos; let rightPos; let bottomPos; cells.forEach((cell => { if (!(0, _type.isDefined)(leftPos) || leftPos > cell._rect.x) { leftPos = cell._rect.x } if (!(0, _type.isDefined)(topPos) || topPos > cell._rect.y) { topPos = cell._rect.y } if (!(0, _type.isDefined)(rightPos) || rightPos < cell._rect.x + cell._rect.w) { rightPos = cell._rect.x + cell._rect.w } if (!(0, _type.isDefined)(bottomPos) || bottomPos < cell._rect.y + cell._rect.h) { bottomPos = cell._rect.y + cell._rect.h } })); const x = leftPos ?? (null === options || void 0 === options || null === (_options$topLeft = options.topLeft) || void 0 === _options$topLeft ? void 0 : _options$topLeft.x) ?? 0; const y = topPos ?? (null === options || void 0 === options || null === (_options$topLeft2 = options.topLeft) || void 0 === _options$topLeft2 ? void 0 : _options$topLeft2.y) ?? 0; const w = (0, _type.isDefined)(rightPos) ? rightPos - x : 0; const h = (0, _type.isDefined)(bottomPos) ? bottomPos - y : 0; return { x: x, y: y, w: w, h: h } }; exports.initializeCellsWidth = function(doc, dataProvider, rows, options) { const columnWidths = function(doc, dataProvider, topLeftX, margin, customerColumnWidths) { const DEFAULT_WIDTH = 150; const resultWidths = dataProvider.getColumnsWidths().map((width => (0, _pdf_utils.toPdfUnit)(doc, width ?? DEFAULT_WIDTH))); const totalAutoColumnsWidth = resultWidths.filter(((width, index) => !(0, _type.isDefined)(customerColumnWidths[index]))).reduce(getSum, 0); const totalCustomerColumnsWidth = customerColumnWidths.filter((width => (0, _type.isNumeric)(width))).reduce(getSum, 0); const availablePageWidth = function(doc, topLeftX, margin) { return (0, _pdf_utils.getPageWidth)(doc) - topLeftX - margin.left - margin.right }(doc, topLeftX, margin); const ratio = totalCustomerColumnsWidth < availablePageWidth ? (availablePageWidth - totalCustomerColumnsWidth) / totalAutoColumnsWidth : 1; return resultWidths.map(((width, index) => customerColumnWidths[index] ?? width * ratio)) }(doc, dataProvider, options.topLeft.x, options.margin, options.columnWidths); rows.forEach((row => { row.cells.forEach(((_ref, index) => { let { gridCell: gridCell, pdfCell: pdfCell } = _ref; pdfCell._rect.w = columnWidths[index] })) })) }; exports.resizeFirstColumnByIndentLevel = function(rows, options) { rows.forEach((row => { row.cells[0].pdfCell._rect.w -= row.indentLevel * options.indent })) }; var _type = __webpack_require__( /*! ../../../core/utils/type */ 11528); var _pdf_utils = __webpack_require__( /*! ./pdf_utils */ 31162); const getSum = (a, b) => a + b }, 44151: /*!*************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/exporter/jspdf/common/rows_generator.js ***! \*************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { exports.generateRowsInfo = function(doc, dataProvider, dataGrid, headerBackgroundColor) { const result = []; const rowsCount = dataProvider.getRowsCount(); const wordWrapEnabled = !!dataGrid.option("wordWrapEnabled"); const rtlEnabled = !!dataGrid.option("rtlEnabled"); const columns = dataProvider.getColumns(); const styles = dataProvider.getStyles(); for (let rowIndex = 0; rowIndex < rowsCount; rowIndex++) { const rowType = dataProvider.getCellData(rowIndex, 0, true).cellSourceData.rowType; let indentLevel = "header" !== rowType ? dataProvider.getGroupLevel(rowIndex) : 0; const previousRow = result[rowIndex - 1]; if ("groupFooter" === rowType && "groupFooter" === (null === previousRow || void 0 === previousRow ? void 0 : previousRow.rowType)) { indentLevel = previousRow.indentLevel - 1 } result.push({ rowType: rowType, indentLevel: indentLevel, cells: generateRowCells({ doc: doc, dataProvider: dataProvider, rowIndex: rowIndex, wordWrapEnabled: wordWrapEnabled, columns: columns, styles: styles, rowType: rowType, backgroundColor: "header" === rowType ? headerBackgroundColor : void 0, rtlEnabled: rtlEnabled }), rowIndex: rowIndex }) } return result }; exports.getBaseTableStyle = function() { return defaultStyles.base }; var _type = __webpack_require__( /*! ../../../core/utils/type */ 11528); var _date = _interopRequireDefault(__webpack_require__( /*! ../../../common/core/localization/date */ 38662)); var _number = _interopRequireDefault(__webpack_require__( /*! ../../../common/core/localization/number */ 52771)); var _pdf_utils = __webpack_require__( /*! ./pdf_utils */ 31162); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } const defaultStyles = { base: { font: { size: 10 }, borderWidth: .5, borderColor: "#979797" }, header: { textColor: "#979797" }, group: {}, data: {}, groupFooter: {}, totalFooter: {} }; function generateRowCells(_ref) { let { doc: doc, dataProvider: dataProvider, rowIndex: rowIndex, wordWrapEnabled: wordWrapEnabled, columns: columns, styles: styles, rowType: rowType, backgroundColor: backgroundColor, rtlEnabled: rtlEnabled } = _ref; const result = []; for (let cellIndex = 0; cellIndex < columns.length; cellIndex++) { const cellData = dataProvider.getCellData(rowIndex, cellIndex, true); const cellStyle = styles[dataProvider.getStyleId(rowIndex, cellIndex)]; const style = getPdfCellStyle(columns[cellIndex], rowType, cellStyle); const defaultAlignment = rtlEnabled ? "right" : "left"; const paddingValue = (0, _pdf_utils.toPdfUnit)(doc, 5); const pdfCell = { text: getFormattedValue(cellData.value, cellStyle.format), verticalAlign: "middle", horizontalAlign: style.alignment ?? defaultAlignment, wordWrapEnabled: wordWrapEnabled, backgroundColor: backgroundColor, padding: { top: paddingValue, right: paddingValue, bottom: paddingValue, left: paddingValue }, _rect: {}, _internalTextOptions: {} }; if (rtlEnabled) { pdfCell._internalTextOptions.isInputVisual = false; pdfCell._internalTextOptions.isOutputVisual = true; pdfCell._internalTextOptions.isInputRtl = true; pdfCell._internalTextOptions.isOutputRtl = false } const cellInfo = { gridCell: cellData.cellSourceData, pdfCell: Object.assign({}, pdfCell, style) }; if ("header" === rowType) { const cellMerging = dataProvider.getCellMerging(rowIndex, cellIndex); if (cellMerging && cellMerging.rowspan > 0) { cellInfo.rowSpan = cellMerging.rowspan } if (cellMerging && cellMerging.colspan > 0) { cellInfo.colSpan = cellMerging.colspan } } else if ("group" === rowType) { const drawLeftBorderField = rtlEnabled ? "drawRightBorder" : "drawLeftBorder"; const drawRightBorderField = rtlEnabled ? "drawLeftBorder" : "drawRightBorder"; cellInfo.pdfCell[drawLeftBorderField] = 0 === cellIndex; cellInfo.pdfCell[drawRightBorderField] = cellIndex === columns.length - 1; if (cellIndex > 0) { const isEmptyCellsExceptFirst = result.slice(1).reduce(((accumulate, cellInfo) => accumulate && !(0, _type.isDefined)(cellInfo.pdfCell.text)), true); if (!(0, _type.isDefined)(cellInfo.pdfCell.text) && isEmptyCellsExceptFirst) { result[0].pdfCell[drawRightBorderField] = true; for (let i = 0; i < result.length; i++) { result[i].colSpan = result.length } cellInfo.colSpan = result.length } } } result.push(cellInfo) } return result } function getPdfCellStyle(column, rowType, cellStyle) { const styles = Object.assign({}, defaultStyles.base, defaultStyles[rowType]); const alignment = "header" === rowType ? column.alignment : cellStyle.alignment; if (alignment) { styles.alignment = alignment } if (cellStyle.bold && "header" !== rowType) { styles.font = Object.assign({}, styles.font, { style: "bold" }) } return styles } function getFormattedValue(value, format) { if ((0, _type.isDefined)(format)) { if ((0, _type.isDate)(value)) { return _date.default.format(value, format) } if ((0, _type.isNumeric)(value)) { return _number.default.format(value, format) } } return null === value || void 0 === value ? void 0 : value.toString() } }, 13252: /*!************************************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/exporter/jspdf/common/rows_spliting_utils/create_on_split_multipage_row.js ***! \************************************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { exports.createOnSplitMultiPageRow = void 0; var _pdf_utils = __webpack_require__( /*! ../pdf_utils */ 31162); function _extends() { return _extends = Object.assign ? Object.assign.bind() : function(n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) { ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]) } } return n }, _extends.apply(null, arguments) } function createMultiCellRect(rect, text, marginTop) { return _extends({}, rect, { sourceCellInfo: _extends({}, rect.sourceCellInfo, { text: text }), y: marginTop }) } exports.createOnSplitMultiPageRow = (doc, options, headerHeight, maxBottomRight) => (isFirstPage, pageRects) => { const currentPageRects = []; const nextPageRects = []; let maxCurrentPageHeight = 0; let maxNextPageHeight = 0; pageRects.forEach((rect => { const { w: w, sourceCellInfo: sourceCellInfo } = rect; const additionalHeight = !isFirstPage && options.repeatHeaders ? headerHeight : headerHeight + options.topLeft.y; const heightOfOneLine = (0, _pdf_utils.getTextDimensions)(doc, sourceCellInfo.text, sourceCellInfo.font).h; const paddingHeight = sourceCellInfo.padding.top + sourceCellInfo.padding.bottom; const fullPageHeight = maxBottomRight.y - additionalHeight - paddingHeight - options.margin.top; const possibleLinesCount = Math.floor(fullPageHeight / (heightOfOneLine * doc.getLineHeightFactor())); const allLines = (0, _pdf_utils.getTextLines)(doc, sourceCellInfo.text, sourceCellInfo.font, { wordWrapEnabled: sourceCellInfo.wordWrapEnabled, targetRectWidth: w }); if (possibleLinesCount < allLines.length) { const currentPageText = allLines.slice(0, possibleLinesCount).join("\n"); const currentPageHeight = (0, _pdf_utils.calculateTextHeight)(doc, currentPageText, sourceCellInfo.font, { wordWrapEnabled: sourceCellInfo.wordWrapEnabled, targetRectWidth: w }); maxCurrentPageHeight = Math.max(maxCurrentPageHeight, currentPageHeight + paddingHeight); maxNextPageHeight = rect.h - currentPageHeight; currentPageRects.push(createMultiCellRect(rect, currentPageText, options.margin.top)); nextPageRects.push(createMultiCellRect(rect, allLines.slice(possibleLinesCount).join("\n"), options.margin.top)) } else { const currentPageHeight = (0, _pdf_utils.calculateTextHeight)(doc, sourceCellInfo.text, sourceCellInfo.font, { wordWrapEnabled: sourceCellInfo.wordWrapEnabled, targetRectWidth: w }); maxCurrentPageHeight = Math.max(maxCurrentPageHeight, currentPageHeight + paddingHeight); maxNextPageHeight = Math.max(maxNextPageHeight, currentPageHeight + paddingHeight); currentPageRects.push(createMultiCellRect(rect, sourceCellInfo.text, options.margin.top)); nextPageRects.push(createMultiCellRect(rect, "", options.margin.top)) } })); currentPageRects.forEach((rect => rect.h = maxCurrentPageHeight)); nextPageRects.forEach((rect => rect.h = maxNextPageHeight)); return [currentPageRects, nextPageRects] } }, 83860: /*!******************************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/exporter/jspdf/common/rows_spliting_utils/get_multipage_row_pages.js ***! \******************************************************************************************************************/ function(__unused_webpack_module, exports) { exports.getMultiPageRowPages = exports.checkPageContainsOnlyHeader = void 0; function _extends() { return _extends = Object.assign ? Object.assign.bind() : function(n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) { ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]) } } return n }, _extends.apply(null, arguments) } const isHeader = rect => "header" === (null === rect || void 0 === rect ? void 0 : rect.sourceCellInfo.gridCell.rowType); exports.checkPageContainsOnlyHeader = (pageRects, isFirstPage) => isFirstPage && isHeader(pageRects[pageRects.length - 1]); exports.getMultiPageRowPages = (currentPageRects, rectsToSplit, isCurrentPageContainsOnlyHeader, splitMultiPageRowFunc, checkIsFitToPageFunc) => { if (!splitMultiPageRowFunc) { return [] } const currentPageLastRect = currentPageRects[currentPageRects.length - 1]; const nextPageFirstRect = rectsToSplit[currentPageRects.length]; if (!nextPageFirstRect || isHeader(nextPageFirstRect)) { return [] } const isRectsFitsToPage = checkIsFitToPageFunc(isCurrentPageContainsOnlyHeader, nextPageFirstRect.h); if (isRectsFitsToPage && !isCurrentPageContainsOnlyHeader) { return [] } const rectsToPatch = rectsToSplit.filter((_ref => { let { y: y } = _ref; return y === nextPageFirstRect.y })); const firstRectYAdjustment = currentPageLastRect.y + currentPageLastRect.h; const [multiPageRowPages, remainPageRects] = ((rectsToPatch, isCurrentPageContainsOnlyHeader, firstRectYAdjustment, splitMultiPageRowFunc, checkIsFitToPageFunc) => { let [newPageRects, remainPageRects] = splitMultiPageRowFunc(isCurrentPageContainsOnlyHeader, rectsToPatch); const newPageRectsArray = [isCurrentPageContainsOnlyHeader ? newPageRects.map((rect => _extends({}, rect, { y: firstRectYAdjustment }))) : newPageRects]; while (!checkIsFitToPageFunc(false, remainPageRects[0].h)) { [newPageRects, remainPageRects] = splitMultiPageRowFunc(false, remainPageRects); newPageRectsArray.push(newPageRects) } return [newPageRectsArray, remainPageRects] })(rectsToPatch, isCurrentPageContainsOnlyHeader, firstRectYAdjustment, splitMultiPageRowFunc, checkIsFitToPageFunc); ((rectsToSplit, rectsToPatch, remainPageRects) => { rectsToPatch.forEach(((rect, rectIndex) => { rect.sourceCellInfo.text = remainPageRects[rectIndex].sourceCellInfo.text; rect.h = remainPageRects[rectIndex].h })); const untouchedRowIdx = rectsToSplit.indexOf(rectsToPatch[rectsToPatch.length - 1]) + 1; if (untouchedRowIdx >= rectsToSplit.length) { return } const delta = rectsToSplit[untouchedRowIdx].y - (rectsToPatch[0].y + remainPageRects[0].h); for (let idx = untouchedRowIdx; idx < rectsToSplit.length; idx++) { rectsToSplit[idx].y = rectsToSplit[idx].y - delta } })(rectsToSplit, rectsToPatch, remainPageRects); return multiPageRowPages } }, 26002: /*!*************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/exporter/jspdf/common/rows_splitting.js ***! \*************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { exports.splitByPages = function(doc, rowsInfo, options, onSeparateRectHorizontally, onSeparateRectVertically) { if (0 === rowsInfo.length) { return [ [] ] } const maxBottomRight = { x: (0, _pdf_utils.getPageWidth)(doc) - options.margin.right, y: (0, _pdf_utils.getPageHeight)(doc) - options.margin.bottom }; const headerRows = rowsInfo.filter((r => "header" === r.rowType)); const headerHeight = headerRows.reduce(((accumulator, row) => accumulator + row.height), 0); const verticallyPages = splitRectsByPages(convertToCellsArray(rowsInfo), options.margin.top, "y", "h", ((isFirstPage, currentCoordinate) => { const additionalHeight = !isFirstPage && options.repeatHeaders ? headerHeight : 0; return (0, _draw_utils.roundToThreeDecimals)(currentCoordinate + additionalHeight) <= (0, _draw_utils.roundToThreeDecimals)(maxBottomRight.y) }), ((rect, currentPageMaxRectCoordinate, currentPageRects, rectsToSplit) => { const args = { sourceRect: rect, topRect: { x: rect.x, y: rect.y, w: rect.w, h: currentPageMaxRectCoordinate - rect.y }, bottomRect: { x: rect.x, y: currentPageMaxRectCoordinate, w: rect.w, h: rect.h - (currentPageMaxRectCoordinate - rect.y) } }; onSeparateRectVertically(args); currentPageRects.push(args.topRect); rectsToSplit.push(args.bottomRect) }), (0, _create_on_split_multipage_row.createOnSplitMultiPageRow)(doc, options, headerHeight, maxBottomRight)); if (options.repeatHeaders) { for (let i = 1; i < verticallyPages.length; i++) { verticallyPages[i].forEach((rect => rect.y += headerHeight)); const headerCells = convertToCellsArray(headerRows); headerCells.forEach((cell => { cell.y -= options.topLeft.y })); verticallyPages[i] = [...headerCells, ...verticallyPages[i]] } } let pageIndex = 0; while (pageIndex < verticallyPages.length) { const horizontallyPages = splitRectsByPages(verticallyPages[pageIndex], options.margin.left, "x", "w", ((pagesLength, currentCoordinate) => (0, _draw_utils.roundToThreeDecimals)(currentCoordinate) <= (0, _draw_utils.roundToThreeDecimals)(maxBottomRight.x)), ((rect, currentPageMaxRectCoordinate, currentPageRects, rectsToSplit) => { const args = { sourceRect: rect, leftRect: { x: rect.x, y: rect.y, w: currentPageMaxRectCoordinate - rect.x, h: rect.h }, rightRect: { x: currentPageMaxRectCoordinate, y: rect.y, w: rect.w - (currentPageMaxRectCoordinate - rect.x), h: rect.h } }; onSeparateRectHorizontally(args); currentPageRects.push(args.leftRect); rectsToSplit.push(args.rightRect) })); if (horizontallyPages.length > 1) { verticallyPages.splice(pageIndex, 1, ...horizontallyPages); pageIndex += horizontallyPages.length } else { pageIndex += 1 } } return verticallyPages.map((rects => rects.map((rect => Object.assign({}, rect.sourceCellInfo, { _rect: rect }))))) }; var _type = __webpack_require__( /*! ../../../core/utils/type */ 11528); var _pdf_utils = __webpack_require__( /*! ./pdf_utils */ 31162); var _draw_utils = __webpack_require__( /*! ./draw_utils */ 9916); var _get_multipage_row_pages = __webpack_require__( /*! ./rows_spliting_utils/get_multipage_row_pages */ 83860); var _create_on_split_multipage_row = __webpack_require__( /*! ./rows_spliting_utils/create_on_split_multipage_row */ 13252); function _extends() { return _extends = Object.assign ? Object.assign.bind() : function(n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) { ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]) } } return n }, _extends.apply(null, arguments) } const COORDINATE_EPSILON = .001; function convertToCellsArray(rows) { return [].concat.apply([], rows.map((rowInfo => rowInfo.cells.filter((cell => !(0, _type.isDefined)(cell.pdfCell.isMerged))).map((cellInfo => Object.assign({}, cellInfo.pdfCell._rect, { sourceCellInfo: _extends({}, cellInfo.pdfCell, { gridCell: cellInfo.gridCell }) })))))) } function splitRectsByPages(rects, marginValue, coordinate, dimension, isFitToPage, onSeparateCallback, onSplitMultiPageRow) { const pages = []; const rectsToSplit = [...rects]; const isFitToPageForMultiPageRow = (isFirstPage, rectHeight) => isFitToPage(isFirstPage, rectHeight + marginValue); while (rectsToSplit.length > 0) { let currentPageMaxRectCoordinate = 0; const currentPageRects = rectsToSplit.filter((rect => { const currentRectCoordinate = rect[coordinate] + rect[dimension]; if (isFitToPage(0 === pages.length, currentRectCoordinate)) { if (currentPageMaxRectCoordinate <= currentRectCoordinate) { currentPageMaxRectCoordinate = currentRectCoordinate } return true } else { return false } })); const isCurrentPageContainsOnlyHeader = (0, _get_multipage_row_pages.checkPageContainsOnlyHeader)(currentPageRects, 0 === pages.length); const multiPageRowPages = (0, _get_multipage_row_pages.getMultiPageRowPages)(currentPageRects, rectsToSplit, isCurrentPageContainsOnlyHeader, onSplitMultiPageRow, isFitToPageForMultiPageRow); const rectsToSeparate = rectsToSplit.filter((rect => { const currentRectLeft = rect[coordinate]; const currentRectRight = rect[coordinate] + rect[dimension]; return currentPageMaxRectCoordinate - currentRectLeft > COORDINATE_EPSILON && currentRectRight - currentPageMaxRectCoordinate > COORDINATE_EPSILON })); rectsToSeparate.forEach((rect => { onSeparateCallback(rect, currentPageMaxRectCoordinate, currentPageRects, rectsToSplit); const index = rectsToSplit.indexOf(rect); if (-1 !== index) { rectsToSplit.splice(index, 1) } })); currentPageRects.forEach((rect => { const index = rectsToSplit.indexOf(rect); if (-1 !== index) { rectsToSplit.splice(index, 1) } })); rectsToSplit.forEach((rect => { rect[coordinate] = (0, _type.isDefined)(currentPageMaxRectCoordinate) ? rect[coordinate] - currentPageMaxRectCoordinate + marginValue : rect[coordinate] })); const firstPageContainsHeaderAndMultiPageRow = isCurrentPageContainsOnlyHeader && multiPageRowPages.length > 0; if (firstPageContainsHeaderAndMultiPageRow) { const [firstPage, ...restOfPages] = multiPageRowPages; pages.push([...currentPageRects, ...firstPage]); pages.push(...restOfPages) } else if (currentPageRects.length > 0) { pages.push(currentPageRects); pages.push(...multiPageRowPages) } else if (multiPageRowPages.length > 0) { pages.push(...multiPageRowPages); pages.push(rectsToSplit) } else { pages.push(rectsToSplit); break } } return pages } }, 93932: /*!********************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/exporter/jspdf/export_data_grid.js ***! \********************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { exports.exportDataGrid = function(options) { return _export.Export.export(function(options) { if (!((0, _type.isDefined)(options) && (0, _type.isObject)(options))) { throw Error('The "exportDataGrid" method requires a configuration object.') } if (!((0, _type.isDefined)(options.component) && (0, _type.isObject)(options.component) && "dxDataGrid" === options.component.NAME)) { throw Error('The "component" field must contain a DataGrid instance.') } if (!((0, _type.isDefined)(options.jsPDFDocument) && (0, _type.isObject)(options.jsPDFDocument))) { throw Error('The "jsPDFDocument" field must contain a jsPDF instance.') } if ((0, _type.isDefined)(options.autoTableOptions)) { _errors.default.log("W0001", "Export", "autoTableOptions", "22.1", `You can migrate from exporting to PDF with the AutoTable plugin to a new export system. See the following topic for more information: ${HOW_TO_MIGRATE_ARTICLE}`) } return _export.Export.getFullOptions(options) }(options)) }; var _type = __webpack_require__( /*! ../../core/utils/type */ 11528); var _errors = (e = __webpack_require__( /*! ../../core/errors */ 87129), e && e.__esModule ? e : { default: e }); var e; var _export = __webpack_require__( /*! ./common/export */ 5650); const HOW_TO_MIGRATE_ARTICLE = "https://supportcenter.devexpress.com/ticket/details/t1077554" }, 81863: /*!****************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/exporter/jspdf/export_gantt.js ***! \****************************************************************************/ function(__unused_webpack_module, exports) { exports.exportGantt = function(options) { const component = options.component; return null === component || void 0 === component ? void 0 : component.exportToPdf(options) } }, 49343: /*!*********************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/exporter/pdf_creator.js ***! \*********************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { exports.getData = function(data, options) { return _image_creator.imageCreator.getImageData(data, (0, _extend.extend)({}, options, { format: "JPEG" })).then((imageString => { const binaryData = composePdfString(imageString, options, function(date) { const dateUnits = [date.getUTCFullYear(), getTwoDigitValue(date.getUTCMonth()), getTwoDigitValue(date.getUTCDate()), getTwoDigitValue(date.getUTCHours()), getTwoDigitValue(date.getUTCMinutes()), getTwoDigitValue(date.getUTCSeconds())]; return `(D:${dateUnits.join("")}Z00'00')` }(getCurDate())); const pdfData = (0, _type.isFunction)(window.Blob) ? getBlob(binaryData) : getBase64(binaryData); return pdfData })) }; var _version = __webpack_require__( /*! ../core/version */ 1956); var _window = __webpack_require__( /*! ../core/utils/window */ 3104); var _image_creator = __webpack_require__( /*! ./image_creator */ 28456); var _type = __webpack_require__( /*! ../core/utils/type */ 11528); var _extend = __webpack_require__( /*! ../core/utils/extend */ 52576); const window = (0, _window.getWindow)(); const xrefTemplate = "xref\r\n0 8\r\n0000000000 65535 f\r\n0000000241 00000 n\r\n0000000010 00000 n\r\n_main_ 00000 n\r\n0000000089 00000 n\r\n_image_ 00000 n\r\n_info_ 00000 n\r\n0000000143 00000 n\r\n"; const pad = function(str, len) { return str.length < len ? pad("0" + str, len) : str }; let composePdfString = function(imageString, options, curDate) { const margin = 2 * (options.margin || 0); let { width: width, height: height } = (0, _image_creator.calcScaledInfo)(options.width, options.height); width += margin; height += margin; const widthPt = (.75 * width).toFixed(2); const heightPt = (.75 * height).toFixed(2); const flooredWidth = Math.floor(width); const flooredHeight = Math.floor(height); const mainPage = "%PDF-1.3\r\n2 0 obj\r\n<</ProcSet[/PDF/ImageB/ImageC/ImageI]/XObject<</I0 5 0 R>>>>\r\nendobj\r\n4 0 obj\r\n<</Type/Pages/Kids[1 0 R]/Count 1>>\r\nendobj\r\n7 0 obj\r\n<</OpenAction[1 0 R /FitH null]/Type/Catalog/Pages 4 0 R/PageLayout/OneColumn>>\r\nendobj\r\n1 0 obj\r\n<</Type/Page/Resources 2 0 R/MediaBox[0 0 _width_ _height_]/Contents 3 0 R/Parent 4 0 R>>\r\nendobj\r\n".replace("_width_", widthPt).replace("_height_", heightPt); const content = "3 0 obj\r\n<</Length 52>>stream\r\n0.20 w\n0 G\nq _width_ 0 0 _height_ 0.00 0.00 cm /I0 Do Q\r\nendstream\r\nendobj\r\n".replace("_width_", widthPt).replace("_height_", heightPt); const info = "6 0 obj\r\n<</CreationDate _date_/Producer(DevExtreme _version_)>>\r\nendobj\r\n".replace("_date_", curDate).replace("_version_", _version.version); const image = "5 0 obj\r\n<</Type/XObject/Subtype/Image/Width _width_/Height _height_/ColorSpace/DeviceRGB/BitsPerComponent 8/Filter/DCTDecode/Length _length_>>stream\r\n".replace("_width_", flooredWidth).replace("_height_", flooredHeight).replace("_length_", imageString.length) + imageString + "\r\nendstream\r\nendobj\r\n"; const xref = (mainPageLength = mainPage.length, contentLength = content.length, infoLength = info.length, xrefTemplate.replace("_main_", pad(mainPageLength + "", 10)).replace("_info_", pad(mainPageLength + contentLength + "", 10)).replace("_image_", pad(mainPageLength + contentLength + infoLength + "", 10))); var mainPageLength, contentLength, infoLength; const mainContent = mainPage + content + info + image; const trailer = "trailer\r\n<<\r\n/Size 8\r\n/Root 7 0 R\r\n/Info 6 0 R\r\n>>\r\nstartxref\r\n_length_\r\n%%EOF".replace("_length_", mainContent.length); return mainContent + xref + trailer }; let getCurDate = function() { return new Date }; let getBlob = function(binaryData) { let i = 0; const dataArray = new Uint8Array(binaryData.length); for (; i < binaryData.length; i++) { dataArray[i] = binaryData.charCodeAt(i) } return new window.Blob([dataArray.buffer], { type: "application/pdf" }) }; let getBase64 = function(binaryData) { return window.btoa(binaryData) }; function getTwoDigitValue(value) { const stringValue = value.toString(); if (1 === stringValue.length) { return `0${value}` } return value } }, 86195: /*!*********************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/exporter/svg_creator.js ***! \*********************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { exports.getData = function(data, options) { return svgCreator.getData(data, options) }; exports.svgCreator = void 0; var _renderer = _interopRequireDefault(__webpack_require__( /*! ../core/renderer */ 64553)); var _ajax = _interopRequireDefault(__webpack_require__( /*! ../core/utils/ajax */ 78670)); var _window = __webpack_require__( /*! ../core/utils/window */ 3104); var _type = __webpack_require__( /*! ../core/utils/type */ 11528); var _iterator = __webpack_require__( /*! ../core/utils/iterator */ 21274); var _m_svg = _interopRequireDefault(__webpack_require__( /*! ../__internal/core/utils/m_svg */ 89650)); var _deferred = __webpack_require__( /*! ../core/utils/deferred */ 87739); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } const window = (0, _window.getWindow)(); const svgCreator = exports.svgCreator = { _markup: "", _imageArray: {}, _imageDeferreds: [], _getBinaryFile: function(src, callback) { _ajax.default.sendRequest({ url: src, method: "GET", responseType: "arraybuffer" }).done(callback).fail((function() { callback(false) })) }, _loadImages: function() { const that = this; (0, _iterator.each)(that._imageArray, (function(src) { const deferred = new _deferred.Deferred; that._imageDeferreds.push(deferred); that._getBinaryFile(src, (function(response) { if (!response) { delete that._imageArray[src]; deferred.resolve(); return } let i; let binary = ""; const bytes = new Uint8Array(response); const length = bytes.byteLength; for (i = 0; i < length; i++) { binary += String.fromCharCode(bytes[i]) } that._imageArray[src] = "data:image/png;base64," + window.btoa(binary); deferred.resolve() })) })) }, _parseImages: function(element) { let href; const that = this; if ("image" === element.tagName) { href = (0, _renderer.default)(element).attr("href") || (0, _renderer.default)(element).attr("xlink:href"); if (!that._imageArray[href]) { that._imageArray[href] = "" } }(0, _iterator.each)(element.childNodes, (function(_, element) { that._parseImages(element) })) }, _prepareImages: function(svgElem) { this._parseImages(svgElem); this._loadImages(); return _deferred.when.apply(_renderer.default, this._imageDeferreds) }, getData: function(data, options) { let markup; const that = this; const svgElem = _m_svg.default.getSvgElement(data); const $svgObject = (0, _renderer.default)(svgElem); $svgObject.find(`[${_m_svg.default.HIDDEN_FOR_EXPORT}]`).remove(); markup = '<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>' + _m_svg.default.getSvgMarkup($svgObject.get(0), options.backgroundColor); return that._prepareImages(svgElem).then((() => { (0, _iterator.each)(that._imageArray, (function(href, dataURI) { const regexpString = `href=['|"]${href}['|"]`; markup = markup.replace(new RegExp(regexpString, "gi"), `href="${dataURI}"`) })); return (0, _type.isFunction)(window.Blob) ? that._getBlob(markup) : that._getBase64(markup) })) }, _getBlob: function(markup) { return new window.Blob([markup], { type: "image/svg+xml" }) }, _getBase64: function(markup) { return window.btoa(markup) } } }, 85096: /*!********************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/file_management/custom_provider.js ***! \********************************************************************************/ function(module, exports, __webpack_require__) { exports.default = void 0; var _common = __webpack_require__( /*! ../core/utils/common */ 17781); var _type = __webpack_require__( /*! ../core/utils/type */ 11528); var _data = __webpack_require__( /*! ../core/utils/data */ 31e3); var _provider_base = (e = __webpack_require__( /*! ./provider_base */ 65266), e && e.__esModule ? e : { default: e }); var e; class CustomFileSystemProvider extends _provider_base.default { constructor(options) { options = (0, _common.ensureDefined)(options, {}); super(options); this._hasSubDirsGetter = (0, _data.compileGetter)(options.hasSubDirectoriesExpr || "hasSubDirectories"); this._getItemsFunction = this._ensureFunction(options.getItems, (() => [])); this._renameItemFunction = this._ensureFunction(options.renameItem); this._createDirectoryFunction = this._ensureFunction(options.createDirectory); this._deleteItemFunction = this._ensureFunction(options.deleteItem); this._moveItemFunction = this._ensureFunction(options.moveItem); this._copyItemFunction = this._ensureFunction(options.copyItem); this._uploadFileChunkFunction = this._ensureFunction(options.uploadFileChunk); this._abortFileUploadFunction = this._ensureFunction(options.abortFileUpload); this._downloadItemsFunction = this._ensureFunction(options.downloadItems); this._getItemsContentFunction = this._ensureFunction(options.getItemsContent) } getItems(parentDir) { const pathInfo = parentDir.getFullPathInfo(); return this._executeActionAsDeferred((() => this._getItemsFunction(parentDir)), true).then((dataItems => this._convertDataObjectsToFileItems(dataItems, pathInfo))) } renameItem(item, name) { return this._executeActionAsDeferred((() => this._renameItemFunction(item, name))) } createDirectory(parentDir, name) { return this._executeActionAsDeferred((() => this._createDirectoryFunction(parentDir, name))) } deleteItems(items) { return items.map((item => this._executeActionAsDeferred((() => this._deleteItemFunction(item))))) } moveItems(items, destinationDirectory) { return items.map((item => this._executeActionAsDeferred((() => this._moveItemFunction(item, destinationDirectory))))) } copyItems(items, destinationFolder) { return items.map((item => this._executeActionAsDeferred((() => this._copyItemFunction(item, destinationFolder))))) } uploadFileChunk(fileData, chunksInfo, destinationDirectory) { return this._executeActionAsDeferred((() => this._uploadFileChunkFunction(fileData, chunksInfo, destinationDirectory))) } abortFileUpload(fileData, chunksInfo, destinationDirectory) { return this._executeActionAsDeferred((() => this._abortFileUploadFunction(fileData, chunksInfo, destinationDirectory))) } downloadItems(items) { return this._executeActionAsDeferred((() => this._downloadItemsFunction(items))) } getItemsContent(items) { return this._executeActionAsDeferred((() => this._getItemsContentFunction(items))) } _hasSubDirs(dataObj) { const hasSubDirs = this._hasSubDirsGetter(dataObj); return "boolean" === typeof hasSubDirs ? hasSubDirs : true } _getKeyExpr(options) { return options.keyExpr || "key" } _ensureFunction(functionObject, defaultFunction) { defaultFunction = defaultFunction || _common.noop; return (0, _type.isFunction)(functionObject) ? functionObject : defaultFunction } } exports.default = CustomFileSystemProvider; module.exports = exports.default; module.exports.default = exports.default }, 46327: /*!**********************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/file_management/error.js ***! \**********************************************************************/ function(module, exports) { exports.default = void 0; exports.default = class { constructor(errorCode, fileSystemItem, errorText) { this.errorCode = errorCode; this.fileSystemItem = fileSystemItem; this.errorText = errorText } }; module.exports = exports.default; module.exports.default = exports.default }, 54950: /*!****************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/file_management/error_codes.js ***! \****************************************************************************/ function(module, exports) { exports.default = void 0; exports.default = { NoAccess: 0, FileExists: 1, FileNotFound: 2, DirectoryExists: 3, DirectoryNotFound: 4, WrongFileExtension: 5, MaxFileSizeExceeded: 6, InvalidSymbols: 7, Other: 32767 }; module.exports = exports.default; module.exports.default = exports.default }, 53093: /*!*********************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/file_management/file_system_item.js ***! \*********************************************************************************/ function(module, exports, __webpack_require__) { exports.default = void 0; var _type = __webpack_require__( /*! ../core/utils/type */ 11528); var _utils = __webpack_require__( /*! ./utils */ 56536); class FileSystemItem { constructor() { const ctor = (0, _type.isString)(arguments[0]) ? this._publicCtor : this._internalCtor; ctor.apply(this, arguments) } _internalCtor(pathInfo, name, isDirectory, key) { this.name = name || ""; this.pathInfo = pathInfo && [...pathInfo] || []; this.parentPath = this._getPathByPathInfo(this.pathInfo); this.relativeName = (0, _utils.pathCombine)(this.parentPath, name); this.key = key || this._getPathByPathInfo(this.getFullPathInfo(), true); this.path = (0, _utils.pathCombine)(this.parentPath, name); this.pathKeys = this.pathInfo.map((_ref => { let { key: key } = _ref; return key })); if (!this.isRoot()) { this.pathKeys.push(this.key) } this._initialize(isDirectory) } _publicCtor(path, isDirectory, pathKeys) { this.path = path || ""; this.pathKeys = pathKeys || []; const pathInfo = []; const parts = (0, _utils.getPathParts)(path, true); for (let i = 0; i < parts.length - 1; i++) { const part = parts[i]; const pathInfoPart = { key: this.pathKeys[i] || part, name: (0, _utils.getName)(part) }; pathInfo.push(pathInfoPart) } this.pathInfo = pathInfo; this.relativeName = path; this.name = (0, _utils.getName)(path); this.key = this.pathKeys.length ? this.pathKeys[this.pathKeys.length - 1] : path; this.parentPath = parts.length > 1 ? parts[parts.length - 2] : ""; this._initialize(isDirectory) } _initialize(isDirectory) { this.isDirectory = !!isDirectory; this.size = 0; this.dateModified = new Date; this.thumbnail = ""; this.tooltipText = "" } getFullPathInfo() { const pathInfo = [...this.pathInfo]; if (!this.isRoot()) { pathInfo.push({ key: this.key, name: this.name }) } return pathInfo } isRoot() { return "" === this.path } getFileExtension() { return this.isDirectory ? "" : (0, _utils.getFileExtension)(this.name) } equals(item) { return item && this.key === item.key } createClone() { const result = new FileSystemItem(this.pathInfo, this.name, this.isDirectory, this.key); result.key = this.key; result.size = this.size; result.dateModified = this.dateModified; result.thumbnail = this.thumbnail; result.tooltipText = this.tooltipText; result.hasSubDirectories = this.hasSubDirectories; result.dataItem = this.dataItem; return result } _getPathByPathInfo(pathInfo, escape) { return pathInfo.map((info => escape ? (0, _utils.getEscapedFileName)(info.name) : info.name)).join(_utils.PATH_SEPARATOR) } } exports.default = FileSystemItem; module.exports = exports.default; module.exports.default = exports.default }, 76856: /*!********************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/file_management/object_provider.js ***! \********************************************************************************/ function(module, exports, __webpack_require__) { exports.default = void 0; var _common = __webpack_require__( /*! ../core/utils/common */ 17781); var _data = __webpack_require__( /*! ../core/utils/data */ 31e3); var _common2 = __webpack_require__( /*! ../common */ 83077); var _type = __webpack_require__( /*! ../core/utils/type */ 11528); var _errors = __webpack_require__( /*! ../common/data/errors */ 82812); var _deferred = __webpack_require__( /*! ../core/utils/deferred */ 87739); var _window = __webpack_require__( /*! ../core/utils/window */ 3104); var _file_saver = __webpack_require__( /*! ../exporter/file_saver */ 34924); var _ui = _interopRequireDefault(__webpack_require__( /*! ../ui/widget/ui.errors */ 35185)); var _jszip = _interopRequireDefault(__webpack_require__( /*! jszip */ 87531)); var _provider_base = _interopRequireDefault(__webpack_require__( /*! ./provider_base */ 65266)); var _error = _interopRequireDefault(__webpack_require__( /*! ./error */ 46327)); var _error_codes = _interopRequireDefault(__webpack_require__( /*! ./error_codes */ 54950)); var _utils = __webpack_require__( /*! ./utils */ 56536); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } const window = (0, _window.getWindow)(); class ObjectFileSystemProvider extends _provider_base.default { constructor(options) { options = (0, _common.ensureDefined)(options, {}); super(options); const initialArray = options.data; if (initialArray && !Array.isArray(initialArray)) { throw _errors.errors.Error("E4006") } const itemsExpr = options.itemsExpr || "items"; this._subFileItemsGetter = (0, _data.compileGetter)(itemsExpr); this._subFileItemsSetter = this._getSetter(itemsExpr); const contentExpr = options.contentExpr || "content"; this._contentGetter = (0, _data.compileGetter)(contentExpr); this._contentSetter = this._getSetter(contentExpr); const nameExpr = this._getNameExpr(options); this._nameSetter = this._getSetter(nameExpr); const isDirExpr = this._getIsDirExpr(options); this._getIsDirSetter = this._getSetter(isDirExpr); const keyExpr = this._getKeyExpr(options); this._keySetter = this._getSetter(keyExpr); const sizeExpr = this._getSizeExpr(options); this._sizeSetter = this._getSetter(sizeExpr); const dateModifiedExpr = this._getDateModifiedExpr(options); this._dateModifiedSetter = this._getSetter(dateModifiedExpr); this._data = initialArray || [] } getItems(parentDir) { return this._executeActionAsDeferred((() => this._getItems(parentDir)), true) } renameItem(item, name) { return this._executeActionAsDeferred((() => this._renameItemCore(item, name))) } _renameItemCore(item, name) { if (!item) { return } const dataItem = this._findDataObject(item); this._nameSetter(dataItem, name); item.name = name; item.key = this._ensureDataObjectKey(dataItem) } createDirectory(parentDir, name) { return this._executeActionAsDeferred((() => { this._validateDirectoryExists(parentDir); this._createDataObject(parentDir, name, true) })) } deleteItems(items) { return items.map((item => this._executeActionAsDeferred((() => this._deleteItem(item))))) } moveItems(items, destinationDir) { const destinationDataItem = this._findDataObject(destinationDir); const array = this._getDirectoryDataItems(destinationDataItem); const deferreds = items.map((item => this._executeActionAsDeferred((() => { this._checkAbilityToMoveOrCopyItem(item, destinationDir); const dataItem = this._findDataObject(item); this._deleteItem(item); array.push(dataItem) })))); return deferreds } copyItems(items, destinationDir) { const destinationDataItem = this._findDataObject(destinationDir); const array = this._getDirectoryDataItems(destinationDataItem); const deferreds = items.map((item => this._executeActionAsDeferred((() => { this._checkAbilityToMoveOrCopyItem(item, destinationDir); const dataItem = this._findDataObject(item); const copiedItem = this._createCopy(dataItem); array.push(copiedItem) })))); return deferreds } uploadFileChunk(fileData, chunksInfo, destinationDirectory) { if (chunksInfo.chunkIndex > 0) { return chunksInfo.customData.deferred } this._validateDirectoryExists(destinationDirectory); const deferred = chunksInfo.customData.deferred = new _deferred.Deferred; const reader = this._createFileReader(); reader.readAsDataURL(fileData); reader.onload = () => { const content = reader.result.split(",")[1]; const dataObj = this._createDataObject(destinationDirectory, fileData.name, false); this._sizeSetter(dataObj, fileData.size); this._dateModifiedSetter(dataObj, fileData.lastModifiedDate); this._contentSetter(dataObj, content); deferred.resolve() }; reader.onerror = error => deferred.reject(error); return deferred } downloadItems(items) { if (1 === items.length) { this._downloadSingleFile(items[0]) } else { this._downloadMultipleFiles(items) } } _downloadSingleFile(file) { const content = this._getFileContent(file); const byteString = window.atob(content); const arrayBuffer = new ArrayBuffer(byteString.length); const array = new Uint8Array(arrayBuffer); for (let i = 0; i < byteString.length; i++) { array[i] = byteString.charCodeAt(i) } const blob = new window.Blob([arrayBuffer], { type: "application/octet-stream" }); _file_saver.fileSaver.saveAs(file.name, null, blob) } _downloadMultipleFiles(files) { const jsZip = function() { if (!_jszip.default) { throw _ui.default.Error("E1041", "JSZip") } return _jszip.default }(); const zip = new jsZip; files.forEach((file => zip.file(file.name, this._getFileContent(file), { base64: true }))); const options = { type: "blob", compression: "DEFLATE", mimeType: "application/zip" }; const deferred = new _deferred.Deferred; if (zip.generateAsync) { zip.generateAsync(options).then(deferred.resolve) } else { deferred.resolve(zip.generate(options)) } deferred.done((blob => _file_saver.fileSaver.saveAs("files.zip", null, blob))) } _getFileContent(file) { const dataItem = this._findDataObject(file); return this._contentGetter(dataItem) || "" } _validateDirectoryExists(directoryInfo) { if (!this._isFileItemExists(directoryInfo) || this._isDirGetter(directoryInfo.fileItem)) { throw new _error.default(_error_codes.default.DirectoryNotFound, directoryInfo) } } _checkAbilityToMoveOrCopyItem(item, destinationDir) { const dataItem = this._findDataObject(item); const itemKey = this._getKeyFromDataObject(dataItem, item.parentPath); const pathInfo = destinationDir.getFullPathInfo(); let currentPath = ""; pathInfo.forEach((info => { currentPath = (0, _utils.pathCombine)(currentPath, info.name); const pathKey = this._getDataObjectKey(info.key, currentPath); if (pathKey === itemKey) { throw new _error.default(_error_codes.default.Other, item) } })) } _createDataObject(parentDir, name, isDirectory) { const dataObj = {}; this._nameSetter(dataObj, name); this._getIsDirSetter(dataObj, isDirectory); this._keySetter(dataObj, String(new _common2.Guid)); const parentDataItem = this._findDataObject(parentDir); const array = this._getDirectoryDataItems(parentDataItem); array.push(dataObj); return dataObj } _createCopy(dataObj) { const copyObj = {}; this._nameSetter(copyObj, this._nameGetter(dataObj)); this._getIsDirSetter(copyObj, this._isDirGetter(dataObj)); const items = this._subFileItemsGetter(dataObj); if (Array.isArray(items)) { const itemsCopy = []; items.forEach((childItem => { const childCopy = this._createCopy(childItem); itemsCopy.push(childCopy) })); this._subFileItemsSetter(copyObj, itemsCopy) } return copyObj } _deleteItem(fileItem) { const dataItem = this._findDataObject(fileItem); const parentDirDataObj = this._findFileItemObj(fileItem.pathInfo); const array = this._getDirectoryDataItems(parentDirDataObj); const index = array.indexOf(dataItem); array.splice(index, 1) } _getDirectoryDataItems(directoryDataObj) { if (!directoryDataObj) { return this._data } let dataItems = this._subFileItemsGetter(directoryDataObj); if (!Array.isArray(dataItems)) { dataItems = []; this._subFileItemsSetter(directoryDataObj, dataItems) } return dataItems } _getItems(parentDir) { this._validateDirectoryExists(parentDir); const pathInfo = parentDir.getFullPathInfo(); const parentDirKey = pathInfo && pathInfo.length > 0 ? pathInfo[pathInfo.length - 1].key : null; let dirFileObjects = this._data; if (parentDirKey) { const directoryEntry = this._findFileItemObj(pathInfo); dirFileObjects = directoryEntry && this._subFileItemsGetter(directoryEntry) || [] } this._ensureKeysForDuplicateNameItems(dirFileObjects); return this._convertDataObjectsToFileItems(dirFileObjects, pathInfo) } _ensureKeysForDuplicateNameItems(dataObjects) { const names = {}; dataObjects.forEach((obj => { const name = this._nameGetter(obj); if (names[name]) { this._ensureDataObjectKey(obj) } else { names[name] = true } })) } _findDataObject(item) { if (item.isRoot()) { return null } const result = this._findFileItemObj(item.getFullPathInfo()); if (!result) { const errorCode = item.isDirectory ? _error_codes.default.DirectoryNotFound : _error_codes.default.FileNotFound; throw new _error.default(errorCode, item) } return result } _findFileItemObj(pathInfo) { if (!Array.isArray(pathInfo)) { pathInfo = [] } let currentPath = ""; let fileItemObj = null; let fileItemObjects = this._data; for (let i = 0; i < pathInfo.length && (0 === i || fileItemObj); i++) { fileItemObj = fileItemObjects.find((item => { const hasCorrectFileItemType = this._isDirGetter(item) || i === pathInfo.length - 1; return this._getKeyFromDataObject(item, currentPath) === pathInfo[i].key && this._nameGetter(item) === pathInfo[i].name && hasCorrectFileItemType })); if (fileItemObj) { currentPath = (0, _utils.pathCombine)(currentPath, this._nameGetter(fileItemObj)); fileItemObjects = this._subFileItemsGetter(fileItemObj) } } return fileItemObj } _getKeyFromDataObject(dataObj, defaultKeyPrefix) { const key = this._keyGetter(dataObj); const relativeName = (0, _utils.pathCombine)(defaultKeyPrefix, this._nameGetter(dataObj)); return this._getDataObjectKey(key, relativeName) } _getDataObjectKey(key, relativeName) { return key ? key : relativeName } _ensureDataObjectKey(dataObj) { let key = this._keyGetter(dataObj); if (!key) { key = String(new _common2.Guid); this._keySetter(dataObj, key) } return key } _hasSubDirs(dataObj) { const subItems = (0, _common.ensureDefined)(this._subFileItemsGetter(dataObj), []); if (!Array.isArray(subItems)) { return true } for (let i = 0; i < subItems.length; i++) { if (true === this._isDirGetter(subItems[i])) { return true } } return false } _getSetter(expr) { return (0, _type.isFunction)(expr) ? expr : (0, _data.compileSetter)(expr) } _isFileItemExists(fileItem) { return fileItem.isDirectory && fileItem.isRoot() || !!this._findFileItemObj(fileItem.getFullPathInfo()) } _createFileReader() { return new window.FileReader } } exports.default = ObjectFileSystemProvider; module.exports = exports.default; module.exports.default = exports.default }, 65266: /*!******************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/file_management/provider_base.js ***! \******************************************************************************/ function(module, exports, __webpack_require__) { exports.default = void 0; var _data = __webpack_require__( /*! ../core/utils/data */ 31e3); var _common = __webpack_require__( /*! ../core/utils/common */ 17781); var _date_serialization = _interopRequireDefault(__webpack_require__( /*! ../core/utils/date_serialization */ 71051)); var _iterator = __webpack_require__( /*! ../core/utils/iterator */ 21274); var _type = __webpack_require__( /*! ../core/utils/type */ 11528); var _deferred = __webpack_require__( /*! ../core/utils/deferred */ 87739); var _file_system_item = _interopRequireDefault(__webpack_require__( /*! ./file_system_item */ 53093)); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } exports.default = class { constructor(options) { options = (0, _common.ensureDefined)(options, {}); this._keyGetter = (0, _data.compileGetter)(this._getKeyExpr(options)); this._nameGetter = (0, _data.compileGetter)(this._getNameExpr(options)); this._isDirGetter = (0, _data.compileGetter)(this._getIsDirExpr(options)); this._sizeGetter = (0, _data.compileGetter)(this._getSizeExpr(options)); this._dateModifiedGetter = (0, _data.compileGetter)(this._getDateModifiedExpr(options)); this._thumbnailGetter = (0, _data.compileGetter)(options.thumbnailExpr || "thumbnail") } getItems(parentDirectory) { return [] } renameItem(item, name) {} createDirectory(parentDirectory, name) {} deleteItems(items) {} moveItems(items, destinationDirectory) {} copyItems(items, destinationDirectory) {} uploadFileChunk(fileData, chunksInfo, destinationDirectory) {} abortFileUpload(fileData, chunksInfo, destinationDirectory) {} downloadItems(items) {} getItemsContent(items) {} getFileUploadChunkSize() { return 2e5 } _convertDataObjectsToFileItems(entries, pathInfo) { const result = []; (0, _iterator.each)(entries, ((_, entry) => { const fileItem = this._createFileItem(entry, pathInfo); result.push(fileItem) })); return result } _createFileItem(dataObj, pathInfo) { const key = this._keyGetter(dataObj); const fileItem = new _file_system_item.default(pathInfo, this._nameGetter(dataObj), !!this._isDirGetter(dataObj), key); fileItem.size = this._sizeGetter(dataObj); if (void 0 === fileItem.size) { fileItem.size = 0 } fileItem.dateModified = _date_serialization.default.deserializeDate(this._dateModifiedGetter(dataObj)); if (void 0 === fileItem.dateModified) { fileItem.dateModified = new Date } if (fileItem.isDirectory) { fileItem.hasSubDirectories = this._hasSubDirs(dataObj) } if (!key) { fileItem.key = fileItem.relativeName } fileItem.thumbnail = this._thumbnailGetter(dataObj) || ""; fileItem.dataItem = dataObj; return fileItem } _hasSubDirs(dataObj) { return true } _getKeyExpr(options) { return options.keyExpr || this._defaultKeyExpr } _defaultKeyExpr(fileItem) { if (2 === arguments.length) { fileItem.__KEY__ = arguments[1]; return } return Object.prototype.hasOwnProperty.call(fileItem, "__KEY__") ? fileItem.__KEY__ : null } _getNameExpr(options) { return options.nameExpr || "name" } _getIsDirExpr(options) { return options.isDirectoryExpr || "isDirectory" } _getSizeExpr(options) { return options.sizeExpr || "size" } _getDateModifiedExpr(options) { return options.dateModifiedExpr || "dateModified" } _executeActionAsDeferred(action, keepResult) { const deferred = new _deferred.Deferred; try { const result = action(); if ((0, _type.isPromise)(result)) { (0, _deferred.fromPromise)(result).done((userResult => deferred.resolve(keepResult && userResult || void 0))).fail((error => deferred.reject(error))) } else { deferred.resolve(keepResult && result || void 0) } } catch (error) { return deferred.reject(error) } return deferred.promise() } }; module.exports = exports.default; module.exports.default = exports.default }, 80175: /*!********************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/file_management/remote_provider.js ***! \********************************************************************************/ function(module, exports, __webpack_require__) { exports.default = void 0; var _renderer = _interopRequireDefault(__webpack_require__( /*! ../core/renderer */ 64553)); var _ajax = _interopRequireDefault(__webpack_require__( /*! ../core/utils/ajax */ 78670)); var _common = __webpack_require__( /*! ../core/utils/common */ 17781); var _common2 = __webpack_require__( /*! ../common */ 83077); var _window = __webpack_require__( /*! ../core/utils/window */ 3104); var _iterator = __webpack_require__( /*! ../core/utils/iterator */ 21274); var _deferred = __webpack_require__( /*! ../core/utils/deferred */ 87739); var _events_engine = _interopRequireDefault(__webpack_require__( /*! ../common/core/events/core/events_engine */ 92774)); var _provider_base = _interopRequireDefault(__webpack_require__( /*! ./provider_base */ 65266)); var _data = __webpack_require__( /*! ../core/utils/data */ 31e3); var _type = __webpack_require__( /*! ../core/utils/type */ 11528); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } const window = (0, _window.getWindow)(); const FILE_CHUNK_BLOB_NAME = "chunk"; const FILE_SYSTEM_COMMNAD_GET_DIR_CONTENTS = "GetDirContents", FILE_SYSTEM_COMMNAD_CREATE_DIR = "CreateDir", FILE_SYSTEM_COMMNAD_RENAME = "Rename", FILE_SYSTEM_COMMNAD_MOVE = "Move", FILE_SYSTEM_COMMNAD_COPY = "Copy", FILE_SYSTEM_COMMNAD_REMOVE = "Remove", FILE_SYSTEM_COMMNAD_UPLOAD_CHUNK = "UploadChunk", FILE_SYSTEM_COMMNAD_ABORT_UPLOAD = "AbortUpload", FILE_SYSTEM_COMMNAD_DOWLOAD = "Download"; const REQUEST_METHOD_GET = "GET", REQUEST_METHOD_POST = "POST"; class RemoteFileSystemProvider extends _provider_base.default { constructor(options) { options = (0, _common.ensureDefined)(options, {}); super(options); this._endpointUrl = options.endpointUrl; this._beforeAjaxSend = options.beforeAjaxSend; this._beforeSubmit = options.beforeSubmit; this._requestHeaders = options.requestHeaders; this._hasSubDirsGetter = (0, _data.compileGetter)(options.hasSubDirectoriesExpr || "hasSubDirectories") } getItems(parentDir) { const pathInfo = parentDir.getFullPathInfo(); return this._executeRequest(FILE_SYSTEM_COMMNAD_GET_DIR_CONTENTS, { pathInfo: pathInfo }).then((result => this._convertDataObjectsToFileItems(result.result, pathInfo))) } renameItem(item, name) { return this._executeRequest(FILE_SYSTEM_COMMNAD_RENAME, { pathInfo: item.getFullPathInfo(), isDirectory: item.isDirectory, name: name }) } createDirectory(parentDir, name) { return this._executeRequest(FILE_SYSTEM_COMMNAD_CREATE_DIR, { pathInfo: parentDir.getFullPathInfo(), name: name }) } deleteItems(items) { return items.map((item => this._executeRequest(FILE_SYSTEM_COMMNAD_REMOVE, { pathInfo: item.getFullPathInfo(), isDirectory: item.isDirectory }))) } moveItems(items, destinationDirectory) { return items.map((item => this._executeRequest(FILE_SYSTEM_COMMNAD_MOVE, { sourcePathInfo: item.getFullPathInfo(), sourceIsDirectory: item.isDirectory, destinationPathInfo: destinationDirectory.getFullPathInfo() }))) } copyItems(items, destinationFolder) { return items.map((item => this._executeRequest(FILE_SYSTEM_COMMNAD_COPY, { sourcePathInfo: item.getFullPathInfo(), sourceIsDirectory: item.isDirectory, destinationPathInfo: destinationFolder.getFullPathInfo() }))) } uploadFileChunk(fileData, chunksInfo, destinationDirectory) { if (0 === chunksInfo.chunkIndex) { chunksInfo.customData.uploadId = new _common2.Guid } const args = { destinationPathInfo: destinationDirectory.getFullPathInfo(), chunkMetadata: JSON.stringify({ UploadId: chunksInfo.customData.uploadId, FileName: fileData.name, Index: chunksInfo.chunkIndex, TotalCount: chunksInfo.chunkCount, FileSize: fileData.size }) }; const ajaxSettings = { url: this._endpointUrl, headers: this._requestHeaders || {}, method: REQUEST_METHOD_POST, dataType: "json", data: { [FILE_CHUNK_BLOB_NAME]: chunksInfo.chunkBlob, arguments: JSON.stringify(args), command: FILE_SYSTEM_COMMNAD_UPLOAD_CHUNK }, upload: { onprogress: _common.noop, onloadstart: _common.noop, onabort: _common.noop }, xhrFields: {}, cache: false }; const deferred = new _deferred.Deferred; this._beforeSendInternal(ajaxSettings); _ajax.default.sendRequest(ajaxSettings).done((result => { !result.success && deferred.reject(result) || deferred.resolve() })).fail(deferred.reject); return deferred.promise() } abortFileUpload(fileData, chunksInfo, destinationDirectory) { return this._executeRequest(FILE_SYSTEM_COMMNAD_ABORT_UPLOAD, { uploadId: chunksInfo.customData.uploadId }) } downloadItems(items) { const args = this._getDownloadArgs(items); const $form = (0, _renderer.default)("<form>").css({ display: "none" }).attr({ method: REQUEST_METHOD_POST, action: args.url }); const formDataEntries = { command: args.command, arguments: args.arguments }; this._beforeSubmitInternal(formDataEntries); this._appendFormDataInputsToForm(formDataEntries, $form); $form.appendTo("body"); _events_engine.default.trigger($form, "submit"); setTimeout((() => $form.remove())) } getItemsContent(items) { const args = this._getDownloadArgs(items); const ajaxSettings = { url: args.url, headers: this._requestHeaders || {}, method: REQUEST_METHOD_POST, responseType: "arraybuffer", data: { command: args.command, arguments: args.arguments }, upload: { onprogress: _common.noop, onloadstart: _common.noop, onabort: _common.noop }, xhrFields: {}, cache: false }; this._beforeSendInternal(ajaxSettings); return _ajax.default.sendRequest(ajaxSettings) } _getDownloadArgs(items) { const pathInfoList = items.map((item => item.getFullPathInfo())); const args = { pathInfoList: pathInfoList }; const argsStr = JSON.stringify(args); return { url: this._endpointUrl, arguments: argsStr, command: FILE_SYSTEM_COMMNAD_DOWLOAD } } _getItemsIds(items) { return items.map((it => it.relativeName)) } _executeRequest(command, args) { const method = command === FILE_SYSTEM_COMMNAD_GET_DIR_CONTENTS ? REQUEST_METHOD_GET : REQUEST_METHOD_POST; const deferred = new _deferred.Deferred; const ajaxSettings = { url: this._getEndpointUrl(command, args), headers: this._requestHeaders || {}, method: method, dataType: "json", data: {}, xhrFields: {}, cache: false }; this._beforeSendInternal(ajaxSettings); _ajax.default.sendRequest(ajaxSettings).then((result => { !result.success && deferred.reject(result) || deferred.resolve(result) }), (e => deferred.reject(e))); return deferred.promise() } _beforeSubmitInternal(formDataEntries) { if ((0, _type.isFunction)(this._beforeSubmit)) { this._beforeSubmit({ formData: formDataEntries }) } } _beforeSendInternal(ajaxSettings) { if ((0, _type.isFunction)(this._beforeAjaxSend)) { const ajaxArguments = { headers: ajaxSettings.headers, formData: ajaxSettings.data, xhrFields: ajaxSettings.xhrFields }; this._beforeAjaxSend(ajaxArguments); ajaxSettings.headers = ajaxArguments.headers; ajaxSettings.data = ajaxArguments.formData; ajaxSettings.xhrFields = ajaxArguments.xhrFields } if ((0, _type.isEmptyObject)(ajaxSettings.data)) { delete ajaxSettings.data } else if (ajaxSettings.responseType || ajaxSettings.upload) { ajaxSettings.data = this._createFormData(ajaxSettings.data) } } _createFormData(formDataEntries) { const formData = new window.FormData; for (const entryName in formDataEntries) { if (Object.prototype.hasOwnProperty.call(formDataEntries, entryName) && (0, _type.isDefined)(formDataEntries[entryName])) { formData.append(entryName, formDataEntries[entryName]) } } return formData } _appendFormDataInputsToForm(formDataEntries, formElement) { for (const entryName in formDataEntries) { if (Object.prototype.hasOwnProperty.call(formDataEntries, entryName) && (0, _type.isDefined)(formDataEntries[entryName])) { (0, _renderer.default)("<input>").attr({ type: "hidden", name: entryName, value: formDataEntries[entryName] }).appendTo(formElement) } } } _getEndpointUrl(command, args) { const queryString = this._getQueryString({ command: command, arguments: JSON.stringify(args) }); const separator = this._endpointUrl && this._endpointUrl.indexOf("?") > 0 ? "&" : "?"; return this._endpointUrl + separator + queryString } _getQueryString(params) { const pairs = []; const keys = Object.keys(params); for (let i = 0; i < keys.length; i++) { const key = keys[i]; let value = params[key]; if (void 0 === value) { continue } if (null === value) { value = "" } if (Array.isArray(value)) { this._processQueryStringArrayParam(key, value, pairs) } else { const pair = this._getQueryStringPair(key, value); pairs.push(pair) } } return pairs.join("&") } _processQueryStringArrayParam(key, array, pairs) { (0, _iterator.each)(array, ((_, item) => { const pair = this._getQueryStringPair(key, item); pairs.push(pair) })) } _getQueryStringPair(key, value) { return encodeURIComponent(key) + "=" + encodeURIComponent(value) } _hasSubDirs(dataObj) { const hasSubDirs = this._hasSubDirsGetter(dataObj); return "boolean" === typeof hasSubDirs ? hasSubDirs : true } _getKeyExpr(options) { return options.keyExpr || "key" } } exports.default = RemoteFileSystemProvider; module.exports = exports.default; module.exports.default = exports.default }, 56536: /*!**********************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/file_management/utils.js ***! \**********************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { exports.pathCombine = exports.getPathParts = exports.getParentPath = exports.getName = exports.getFileExtension = exports.getEscapedFileName = exports.PATH_SEPARATOR = void 0; var _iterator = __webpack_require__( /*! ../core/utils/iterator */ 21274); const PATH_SEPARATOR = exports.PATH_SEPARATOR = "/"; exports.getFileExtension = path => { const index = path.lastIndexOf("."); return -1 !== index ? path.substr(index) : "" }; exports.getName = path => { const index = path.lastIndexOf(PATH_SEPARATOR); return -1 !== index ? path.substr(index + PATH_SEPARATOR.length) : path }; exports.getParentPath = path => { const index = path.lastIndexOf(PATH_SEPARATOR); return -1 !== index ? path.substr(0, index) : "" }; exports.getPathParts = (path, includeFullPath) => { if (!path || "/" === path) { return [] } const result = []; let pathPart = ""; for (let i = 0; i < path.length; i++) { let char = path.charAt(i); if (char === PATH_SEPARATOR) { const nextChar = path.charAt(i + 1); if (nextChar !== PATH_SEPARATOR) { if (pathPart) { result.push(pathPart); pathPart = "" } char = nextChar } i++ } pathPart += char } if (pathPart) { result.push(pathPart) } if (includeFullPath) { for (let i = 0; i < result.length; i++) { result[i] = pathCombine(0 === i ? "" : result[i - 1], getEscapedFileName(result[i])) } } return result }; const getEscapedFileName = function(fileName) { return fileName.replace(/\/{1,1}/g, "//") }; exports.getEscapedFileName = getEscapedFileName; const pathCombine = function() { let result = ""; (0, _iterator.each)(arguments, ((_, arg) => { if (arg) { if (result) { result += PATH_SEPARATOR } result += arg } })); return result }; exports.pathCombine = pathCombine }, 2082: /*!**************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/format_helper.js ***! \**************************************************************/ function(module, exports, __webpack_require__) { exports.default = void 0; var _type = __webpack_require__( /*! ./core/utils/type */ 11528); var _date = _interopRequireDefault(__webpack_require__( /*! ./core/utils/date */ 41380)); var _number = _interopRequireDefault(__webpack_require__( /*! ./common/core/localization/number */ 52771)); var _date2 = _interopRequireDefault(__webpack_require__( /*! ./common/core/localization/date */ 38662)); var _dependency_injector = _interopRequireDefault(__webpack_require__( /*! ./core/utils/dependency_injector */ 89656)); __webpack_require__( /*! ./common/core/localization/currency */ 17333); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } exports.default = (0, _dependency_injector.default)({ format: function(value, format) { const formatIsValid = (0, _type.isString)(format) && "" !== format || (0, _type.isPlainObject)(format) || (0, _type.isFunction)(format); const valueIsValid = (0, _type.isNumeric)(value) || (0, _type.isDate)(value); if (!formatIsValid || !valueIsValid) { return (0, _type.isDefined)(value) ? value.toString() : "" } if ((0, _type.isFunction)(format)) { return format(value) } if ((0, _type.isString)(format)) { format = { type: format } } if ((0, _type.isNumeric)(value)) { return _number.default.format(value, format) } if ((0, _type.isDate)(value)) { return _date2.default.format(value, format) } }, getTimeFormat: function(showSecond) { return showSecond ? "longtime" : "shorttime" }, _normalizeFormat: function(format) { if (!Array.isArray(format)) { return format } if (1 === format.length) { return format[0] } return function(date) { return format.map((function(formatPart) { return _date2.default.format(date, formatPart) })).join(" ") } }, getDateFormatByDifferences: function(dateDifferences, intervalFormat) { const resultFormat = []; const needSpecialSecondFormatter = intervalFormat && dateDifferences.millisecond && !(dateDifferences.year || dateDifferences.month || dateDifferences.day); if (needSpecialSecondFormatter) { const secondFormatter = function(date) { return date.getSeconds() + date.getMilliseconds() / 1e3 + "s" }; resultFormat.push(secondFormatter) } else if (dateDifferences.millisecond) { resultFormat.push("millisecond") } if (dateDifferences.hour || dateDifferences.minute || !needSpecialSecondFormatter && dateDifferences.second) { resultFormat.unshift(this.getTimeFormat(dateDifferences.second)) } if (dateDifferences.year && dateDifferences.month && dateDifferences.day) { if (intervalFormat && "month" === intervalFormat) { return "monthandyear" } else { resultFormat.unshift("shortdate"); return this._normalizeFormat(resultFormat) } } if (dateDifferences.year && dateDifferences.month) { return "monthandyear" } if (dateDifferences.year && dateDifferences.quarter) { return "quarterandyear" } if (dateDifferences.year) { return "year" } if (dateDifferences.quarter) { return "quarter" } if (dateDifferences.month && dateDifferences.day) { if (intervalFormat) { const monthDayFormatter = function(date) { return _date2.default.getMonthNames("abbreviated")[date.getMonth()] + " " + _date2.default.format(date, "day") }; resultFormat.unshift(monthDayFormatter) } else { resultFormat.unshift("monthandday") } return this._normalizeFormat(resultFormat) } if (dateDifferences.month) { return "month" } if (dateDifferences.day) { if (intervalFormat) { resultFormat.unshift("day") } else { const dayFormatter = function(date) { return _date2.default.format(date, "dayofweek") + ", " + _date2.default.format(date, "day") }; resultFormat.unshift(dayFormatter) } return this._normalizeFormat(resultFormat) } return this._normalizeFormat(resultFormat) }, getDateFormatByTicks: function(ticks) { let maxDiff; let currentDiff; let i; if (ticks.length > 1) { maxDiff = _date.default.getDatesDifferences(ticks[0], ticks[1]); for (i = 1; i < ticks.length - 1; i++) { currentDiff = _date.default.getDatesDifferences(ticks[i], ticks[i + 1]); if (maxDiff.count < currentDiff.count) { maxDiff = currentDiff } } } else { maxDiff = { year: true, month: true, day: true, hour: ticks[0].getHours() > 0, minute: ticks[0].getMinutes() > 0, second: ticks[0].getSeconds() > 0, millisecond: ticks[0].getMilliseconds() > 0 } } const resultFormat = this.getDateFormatByDifferences(maxDiff); return resultFormat }, getDateFormatByTickInterval: function(startValue, endValue, tickInterval) { let dateUnitInterval; const correctDateDifferences = function(dateDifferences, tickInterval, value) { switch (tickInterval) { case "year": case "quarter": dateDifferences.month = value; case "month": dateDifferences.day = value; case "week": case "day": dateDifferences.hour = value; case "hour": dateDifferences.minute = value; case "minute": dateDifferences.second = value; case "second": dateDifferences.millisecond = value } }; tickInterval = (0, _type.isString)(tickInterval) ? tickInterval.toLowerCase() : tickInterval; const dateDifferences = _date.default.getDatesDifferences(startValue, endValue); if (startValue !== endValue) { ! function(differences, minDate, maxDate) { if (!maxDate.getMilliseconds() && maxDate.getSeconds()) { if (maxDate.getSeconds() - minDate.getSeconds() === 1) { differences.millisecond = true; differences.second = false } } else if (!maxDate.getSeconds() && maxDate.getMinutes()) { if (maxDate.getMinutes() - minDate.getMinutes() === 1) { differences.second = true; differences.minute = false } } else if (!maxDate.getMinutes() && maxDate.getHours()) { if (maxDate.getHours() - minDate.getHours() === 1) { differences.minute = true; differences.hour = false } } else if (!maxDate.getHours() && maxDate.getDate() > 1) { if (maxDate.getDate() - minDate.getDate() === 1) { differences.hour = true; differences.day = false } } else if (1 === maxDate.getDate() && maxDate.getMonth()) { if (maxDate.getMonth() - minDate.getMonth() === 1) { differences.day = true; differences.month = false } } else if (!maxDate.getMonth() && maxDate.getFullYear()) { if (maxDate.getFullYear() - minDate.getFullYear() === 1) { differences.month = true; differences.year = false } } }(dateDifferences, startValue > endValue ? endValue : startValue, startValue > endValue ? startValue : endValue) } dateUnitInterval = _date.default.getDateUnitInterval(dateDifferences); correctDateDifferences(dateDifferences, dateUnitInterval, true); dateUnitInterval = _date.default.getDateUnitInterval(tickInterval || "second"); correctDateDifferences(dateDifferences, dateUnitInterval, false); dateDifferences[{ week: "day" } [dateUnitInterval] || dateUnitInterval] = true; const resultFormat = this.getDateFormatByDifferences(dateDifferences); return resultFormat } }); module.exports = exports.default; module.exports.default = exports.default }, 21001: /*!*******************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/integration/jquery.js ***! \*******************************************************************/ function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { var _jquery = _interopRequireDefault(__webpack_require__( /*! jquery */ 10561)); var _version = __webpack_require__( /*! ../core/utils/version */ 20142); var _error = _interopRequireDefault(__webpack_require__( /*! ../core/utils/error */ 67264)); var _use_jquery = _interopRequireDefault(__webpack_require__( /*! ./jquery/use_jquery */ 97718)); __webpack_require__( /*! ./jquery/renderer */ 44603); __webpack_require__( /*! ./jquery/hooks */ 76054); __webpack_require__( /*! ./jquery/deferred */ 5667); __webpack_require__( /*! ./jquery/hold_ready */ 29953); __webpack_require__( /*! ./jquery/events */ 27465); __webpack_require__( /*! ./jquery/easing */ 24317); __webpack_require__( /*! ./jquery/element_data */ 52425); __webpack_require__( /*! ./jquery/element */ 79382); __webpack_require__( /*! ./jquery/component_registrator */ 52134); __webpack_require__( /*! ./jquery/ajax */ 2646); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } const useJQuery = (0, _use_jquery.default)(); if (useJQuery && (0, _version.compare)(_jquery.default.fn.jquery, [1, 10]) < 0) { throw _error.default.Error("E0012") } }, 2646: /*!************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/integration/jquery/ajax.js ***! \************************************************************************/ function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { var _jquery = _interopRequireDefault(__webpack_require__( /*! jquery */ 10561)); var _ajax = _interopRequireDefault(__webpack_require__( /*! ../../core/utils/ajax */ 78670)); var _use_jquery = _interopRequireDefault(__webpack_require__( /*! ./use_jquery */ 97718)); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } const useJQuery = (0, _use_jquery.default)(); if (useJQuery) { _ajax.default.inject({ sendRequest: function(options) { if (!options.responseType && !options.upload) { return _jquery.default.ajax(options) } return this.callBase.apply(this, [options]) } }) } }, 52134: /*!*****************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/integration/jquery/component_registrator.js ***! \*****************************************************************************************/ function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { var _jquery = _interopRequireDefault(__webpack_require__( /*! jquery */ 10561)); var _component_registrator_callbacks = _interopRequireDefault(__webpack_require__( /*! ../../core/component_registrator_callbacks */ 55771)); var _errors = _interopRequireDefault(__webpack_require__( /*! ../../core/errors */ 87129)); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } if (_jquery.default) { const registerJQueryComponent = function(name, componentClass) { _jquery.default.fn[name] = function(options) { const isMemberInvoke = "string" === typeof options; let result; if (isMemberInvoke) { const memberName = options; const memberArgs = [].slice.call(arguments).slice(1); this.each((function() { const instance = componentClass.getInstance(this); if (!instance) { throw _errors.default.Error("E0009", name) } const member = instance[memberName]; const memberValue = member.apply(instance, memberArgs); if (void 0 === result) { result = memberValue } })) } else { this.each((function() { const instance = componentClass.getInstance(this); if (instance) { instance.option(options) } else { new componentClass(this, options) } })); result = this } return result } }; _component_registrator_callbacks.default.add(registerJQueryComponent) } }, 5667: /*!****************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/integration/jquery/deferred.js ***! \****************************************************************************/ function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { var _jquery = _interopRequireDefault(__webpack_require__( /*! jquery */ 10561)); var _deferred = __webpack_require__( /*! ../../core/utils/deferred */ 87739); var _version = __webpack_require__( /*! ../../core/utils/version */ 20142); var _use_jquery = _interopRequireDefault(__webpack_require__( /*! ./use_jquery */ 97718)); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } const useJQuery = (0, _use_jquery.default)(); if (useJQuery) { const Deferred = _jquery.default.Deferred; const strategy = { Deferred: Deferred }; strategy.when = (0, _version.compare)(_jquery.default.fn.jquery, [3]) < 0 ? _jquery.default.when : function(singleArg) { if (0 === arguments.length) { return (new Deferred).resolve() } else if (1 === arguments.length) { return singleArg && singleArg.then ? singleArg : (new Deferred).resolve(singleArg) } else { return _jquery.default.when.apply(_jquery.default, arguments) } }; (0, _deferred.setStrategy)(strategy) } }, 24317: /*!**************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/integration/jquery/easing.js ***! \**************************************************************************/ function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { var _jquery = (e = __webpack_require__( /*! jquery */ 10561), e && e.__esModule ? e : { default: e }); var e; var _easing = __webpack_require__( /*! ../../common/core/animation/easing */ 88424); if (_jquery.default) { (0, _easing.setEasing)(_jquery.default.easing) } }, 79382: /*!***************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/integration/jquery/element.js ***! \***************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { exports.getPublicElementJQuery = getPublicElementJQuery; var _element = __webpack_require__( /*! ../../core/element */ 61404); var _use_jquery = (e = __webpack_require__( /*! ./use_jquery */ 97718), e && e.__esModule ? e : { default: e }); var e; const useJQuery = (0, _use_jquery.default)(); function getPublicElementJQuery($element) { return $element } if (useJQuery) { (0, _element.setPublicElementWrapper)(getPublicElementJQuery) } }, 52425: /*!********************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/integration/jquery/element_data.js ***! \********************************************************************************/ function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { var _jquery = _interopRequireDefault(__webpack_require__( /*! jquery */ 10561)); var _element_data = __webpack_require__( /*! ../../core/element_data */ 74663); var _use_jquery = _interopRequireDefault(__webpack_require__( /*! ./use_jquery */ 97718)); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } const useJQuery = (0, _use_jquery.default)(); if (useJQuery) { (0, _element_data.setDataStrategy)(_jquery.default) } }, 27465: /*!**************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/integration/jquery/events.js ***! \**************************************************************************/ function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { var _jquery = _interopRequireDefault(__webpack_require__( /*! jquery */ 10561)); var _events_engine = _interopRequireDefault(__webpack_require__( /*! ../../common/core/events/core/events_engine */ 92774)); var _use_jquery = _interopRequireDefault(__webpack_require__( /*! ./use_jquery */ 97718)); var _event_registrator_callbacks = _interopRequireDefault(__webpack_require__( /*! ../../common/core/events/core/event_registrator_callbacks */ 85030)); var _dom_adapter = _interopRequireDefault(__webpack_require__( /*! ../../core/dom_adapter */ 64960)); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } const useJQuery = (0, _use_jquery.default)(); if (useJQuery) { _event_registrator_callbacks.default.add((function(name, eventObject) { _jquery.default.event.special[name] = eventObject })); if (_events_engine.default.passiveEventHandlersSupported()) { _events_engine.default.forcePassiveFalseEventNames.forEach((function(eventName) { _jquery.default.event.special[eventName] = { setup: function(data, namespaces, handler) { _dom_adapter.default.listen(this, eventName, handler, { passive: false }) } } })) } _events_engine.default.set({ on: function(element) { (0, _jquery.default)(element).on.apply((0, _jquery.default)(element), Array.prototype.slice.call(arguments, 1)) }, one: function(element) { (0, _jquery.default)(element).one.apply((0, _jquery.default)(element), Array.prototype.slice.call(arguments, 1)) }, off: function(element) { (0, _jquery.default)(element).off.apply((0, _jquery.default)(element), Array.prototype.slice.call(arguments, 1)) }, trigger: function(element) { (0, _jquery.default)(element).trigger.apply((0, _jquery.default)(element), Array.prototype.slice.call(arguments, 1)) }, triggerHandler: function(element) { (0, _jquery.default)(element).triggerHandler.apply((0, _jquery.default)(element), Array.prototype.slice.call(arguments, 1)) }, Event: _jquery.default.Event }) } }, 29953: /*!******************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/integration/jquery/hold_ready.js ***! \******************************************************************************/ function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { var _jquery = _interopRequireDefault(__webpack_require__( /*! jquery */ 10561)); var _themes_callback = __webpack_require__( /*! ../../ui/themes_callback */ 88737); var _ready_callbacks = _interopRequireDefault(__webpack_require__( /*! ../../core/utils/ready_callbacks */ 3122)); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } if (_jquery.default && !_themes_callback.themeReadyCallback.fired()) { const holdReady = _jquery.default.holdReady || _jquery.default.fn.holdReady; holdReady(true); _themes_callback.themeReadyCallback.add((function() { _ready_callbacks.default.add((function() { holdReady(false) })) })) } }, 76054: /*!*************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/integration/jquery/hooks.js ***! \*************************************************************************/ function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { var _jquery = _interopRequireDefault(__webpack_require__( /*! jquery */ 10561)); var _use_jquery = _interopRequireDefault(__webpack_require__( /*! ./use_jquery */ 97718)); var _version = __webpack_require__( /*! ../../core/utils/version */ 20142); var _iterator = __webpack_require__( /*! ../../core/utils/iterator */ 21274); var _type = __webpack_require__( /*! ../../core/utils/type */ 11528); var _index = __webpack_require__( /*! ../../common/core/events/utils/index */ 98834); var _event_registrator = _interopRequireDefault(__webpack_require__( /*! ../../common/core/events/core/event_registrator */ 15273)); var _hook_touch_props = _interopRequireDefault(__webpack_require__( /*! ../../common/core/events/core/hook_touch_props */ 65462)); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } const useJQuery = (0, _use_jquery.default)(); if (useJQuery) { if ((0, _version.compare)(_jquery.default.fn.jquery, [3]) < 0) { const POINTER_TYPE_MAP = { 2: "touch", 3: "pen", 4: "mouse" }; (0, _iterator.each)(["MSPointerDown", "MSPointerMove", "MSPointerUp", "MSPointerCancel", "MSPointerOver", "MSPointerOut", "mouseenter", "mouseleave", "pointerdown", "pointermove", "pointerup", "pointercancel", "pointerover", "pointerout", "pointerenter", "pointerleave"], (function() { _jquery.default.event.fixHooks[this] = { filter: function(event, originalEvent) { const pointerType = originalEvent.pointerType; if ((0, _type.isNumeric)(pointerType)) { event.pointerType = POINTER_TYPE_MAP[pointerType] } return event }, props: _jquery.default.event.mouseHooks.props.concat(["pointerId", "pointerType", "originalTarget", "width", "height", "pressure", "result", "tiltX", "charCode", "tiltY", "detail", "isPrimary", "prevValue"]) } })); (0, _iterator.each)(["touchstart", "touchmove", "touchend", "touchcancel"], (function() { _jquery.default.event.fixHooks[this] = { filter: function(event, originalEvent) { (0, _hook_touch_props.default)((function(name, hook) { event[name] = hook(originalEvent) })); return event }, props: _jquery.default.event.mouseHooks.props.concat(["touches", "changedTouches", "targetTouches", "detail", "result", "originalTarget", "charCode", "prevValue"]) } })); _jquery.default.event.fixHooks.wheel = _jquery.default.event.mouseHooks; const DX_EVENT_HOOKS = { props: _jquery.default.event.mouseHooks.props.concat(["pointerType", "pointerId", "pointers"]) }; _event_registrator.default.callbacks.add((function(name) { _jquery.default.event.fixHooks[name] = DX_EVENT_HOOKS })); const fix = function(event, originalEvent) { const fixHook = _jquery.default.event.fixHooks[originalEvent.type] || _jquery.default.event.mouseHooks; const props = fixHook.props ? _jquery.default.event.props.concat(fixHook.props) : _jquery.default.event.props; let propIndex = props.length; while (propIndex--) { const prop = props[propIndex]; event[prop] = originalEvent[prop] } return fixHook.filter ? fixHook.filter(event, originalEvent) : event }; (0, _index.setEventFixMethod)(fix) } else { (0, _hook_touch_props.default)((function(name, hook) { _jquery.default.event.addProp(name, hook) })) } } }, 44603: /*!****************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/integration/jquery/renderer.js ***! \****************************************************************************/ function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { var _jquery = _interopRequireDefault(__webpack_require__( /*! jquery */ 10561)); var _renderer_base = _interopRequireDefault(__webpack_require__( /*! ../../core/renderer_base */ 21681)); var _use_jquery = _interopRequireDefault(__webpack_require__( /*! ./use_jquery */ 97718)); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } const useJQuery = (0, _use_jquery.default)(); if (useJQuery) { _renderer_base.default.set(_jquery.default) } }, 97718: /*!******************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/integration/jquery/use_jquery.js ***! \******************************************************************************/ function(module, exports, __webpack_require__) { exports.default = function() { return _jquery.default && (0, _config.default)().useJQuery }; var _jquery = _interopRequireDefault(__webpack_require__( /*! jquery */ 10561)); var _config = _interopRequireDefault(__webpack_require__( /*! ../../core/config */ 66636)); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } const useJQuery = (0, _config.default)().useJQuery; if (_jquery.default && false !== useJQuery) { (0, _config.default)({ useJQuery: true }) } module.exports = exports.default; module.exports.default = exports.default }, 34563: /*!*********************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/integration/knockout.js ***! \*********************************************************************/ function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { var _knockout = _interopRequireDefault(__webpack_require__( /*! knockout */ 78117)); var _errors = _interopRequireDefault(__webpack_require__( /*! ../core/errors */ 87129)); var _version = __webpack_require__( /*! ../core/utils/version */ 20142); __webpack_require__( /*! ./knockout/component_registrator */ 90340); __webpack_require__( /*! ./knockout/event_registrator */ 74899); __webpack_require__( /*! ./knockout/components */ 38382); __webpack_require__( /*! ./knockout/validation */ 86281); __webpack_require__( /*! ./knockout/variable_wrapper_utils */ 71592); __webpack_require__( /*! ./knockout/clean_node */ 12420); __webpack_require__( /*! ./knockout/clean_node_old */ 41262); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } if (_knockout.default) { if ((0, _version.compare)(_knockout.default.version, [2, 3]) < 0) { throw _errors.default.Error("E0013") } } }, 12420: /*!********************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/integration/knockout/clean_node.js ***! \********************************************************************************/ function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { var _element_data = __webpack_require__( /*! ../../core/element_data */ 74663); var _knockout = (e = __webpack_require__( /*! knockout */ 78117), e && e.__esModule ? e : { default: e }); var e; var _version = __webpack_require__( /*! ../../core/utils/version */ 20142); var _utils = __webpack_require__( /*! ./utils */ 43941); if (_knockout.default) { const originalKOCleanExternalData = _knockout.default.utils.domNodeDisposal.cleanExternalData; const patchCleanData = function() { (0, _element_data.afterCleanData)((function(nodes) { let i; for (i = 0; i < nodes.length; i++) { nodes[i].cleanedByJquery = true } for (i = 0; i < nodes.length; i++) { if (!nodes[i].cleanedByKo) { _knockout.default.cleanNode(nodes[i]) } delete nodes[i].cleanedByKo } for (i = 0; i < nodes.length; i++) { delete nodes[i].cleanedByJquery } })); _knockout.default.utils.domNodeDisposal.cleanExternalData = function(node) { node.cleanedByKo = true; if ((0, _utils.getClosestNodeWithKoCreation)(node)) { if (!node.cleanedByJquery) { (0, _element_data.cleanData)([node]) } } } }; const restoreOriginCleanData = function() { (0, _element_data.afterCleanData)((function() {})); _knockout.default.utils.domNodeDisposal.cleanExternalData = originalKOCleanExternalData }; patchCleanData(); _element_data.strategyChanging.add((function(strategy) { const isJQuery = !!strategy.fn; if (isJQuery && (0, _version.compare)(strategy.fn.jquery, [2, 0]) < 0) { restoreOriginCleanData() } })) } }, 41262: /*!************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/integration/knockout/clean_node_old.js ***! \************************************************************************************/ function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { var _knockout = (e = __webpack_require__( /*! knockout */ 78117), e && e.__esModule ? e : { default: e }); var e; var _version = __webpack_require__( /*! ../../core/utils/version */ 20142); var _element_data = __webpack_require__( /*! ../../core/element_data */ 74663); if (_knockout.default) { const patchCleanData = function(jQuery) { const cleanKoData = function(element, andSelf) { const cleanNode = function() { _knockout.default.cleanNode(this) }; if (andSelf) { element.each(cleanNode) } else { element.find("*").each(cleanNode) } }; const originalEmpty = jQuery.fn.empty; jQuery.fn.empty = function() { cleanKoData(this, false); return originalEmpty.apply(this, arguments) }; const originalRemove = jQuery.fn.remove; jQuery.fn.remove = function(selector, keepData) { if (!keepData) { let subject = this; if (selector) { subject = subject.filter(selector) } cleanKoData(subject, true) } return originalRemove.call(this, selector, keepData) }; const originalHtml = jQuery.fn.html; jQuery.fn.html = function(value) { if ("string" === typeof value) { cleanKoData(this, false) } return originalHtml.apply(this, arguments) }; const originalReplaceWith = jQuery.fn.replaceWith; jQuery.fn.replaceWith = function() { const result = originalReplaceWith.apply(this, arguments); if (!this.parent().length) { cleanKoData(this, true) } return result } }; _element_data.strategyChanging.add((function(strategy) { const isJQuery = !!strategy.fn; if (isJQuery && (0, _version.compare)(strategy.fn.jquery, [2, 0]) < 0) { patchCleanData(strategy) } })) } }, 90340: /*!*******************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/integration/knockout/component_registrator.js ***! \*******************************************************************************************/ function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../core/renderer */ 64553)); var _knockout = _interopRequireDefault(__webpack_require__( /*! knockout */ 78117)); var _callbacks = _interopRequireDefault(__webpack_require__( /*! ../../core/utils/callbacks */ 84718)); var _type = __webpack_require__( /*! ../../core/utils/type */ 11528); var _component_registrator_callbacks = _interopRequireDefault(__webpack_require__( /*! ../../core/component_registrator_callbacks */ 55771)); var _ui = _interopRequireDefault(__webpack_require__( /*! ../../ui/widget/ui.widget */ 11118)); var _m_base_widget = _interopRequireDefault(__webpack_require__( /*! ../../__internal/viz/core/m_base_widget */ 34506)); var _component_wrapper = __webpack_require__( /*! ../../__internal/core/r1/component_wrapper */ 34993); var _draggable = _interopRequireDefault(__webpack_require__( /*! ../../ui/draggable */ 5298)); var _scroll_view = _interopRequireDefault(__webpack_require__( /*! ../../ui/scroll_view */ 91374)); var _template = __webpack_require__( /*! ./template */ 36332); var _editor = _interopRequireDefault(__webpack_require__( /*! ../../ui/editor/editor */ 78694)); var _locker = _interopRequireDefault(__webpack_require__( /*! ../../core/utils/locker */ 50512)); var _utils = __webpack_require__( /*! ./utils */ 43941); var _config = _interopRequireDefault(__webpack_require__( /*! ../../core/config */ 66636)); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } if (_knockout.default) { const LOCKS_DATA_KEY = "dxKoLocks"; const CREATED_WITH_KO_DATA_KEY = "dxKoCreation"; const editorsBindingHandlers = []; const registerComponentKoBinding = function(componentName, componentClass) { if (_editor.default.isEditor(componentClass.prototype)) { editorsBindingHandlers.push(componentName) } _knockout.default.bindingHandlers[componentName] = { init: function(domNode, valueAccessor) { const $element = (0, _renderer.default)(domNode); const optionChangedCallbacks = (0, _callbacks.default)(); let optionsByReference = {}; let component; const knockoutConfig = (0, _config.default)().knockout; const isBindingPropertyPredicateName = knockoutConfig && knockoutConfig.isBindingPropertyPredicateName; let isBindingPropertyPredicate; let ctorOptions = { onInitializing: function(options) { optionsByReference = this._getOptionsByReference(); _knockout.default.computed((() => { const model = _knockout.default.unwrap(valueAccessor()); if (component) { component.beginUpdate() } isBindingPropertyPredicate = isBindingPropertyPredicateName && model && model[isBindingPropertyPredicateName]; unwrapModel(model); if (component) { component.endUpdate() } else { var _model$onInitializing; null === model || void 0 === model || null === (_model$onInitializing = model.onInitializing) || void 0 === _model$onInitializing || _model$onInitializing.call(this, options) } }), null, { disposeWhenNodeIsRemoved: domNode }); component = this }, modelByElement: function($element) { if ($element.length) { const node = (0, _utils.getClosestNodeWithContext)($element.get(0)); return _knockout.default.dataFor(node) } }, nestedComponentOptions: function(component) { return { modelByElement: component.option("modelByElement"), nestedComponentOptions: component.option("nestedComponentOptions") } }, _optionChangedCallbacks: optionChangedCallbacks, integrationOptions: { watchMethod: function(fn, callback, options) { options = options || {}; let skipCallback = options.skipImmediate; const watcher = _knockout.default.computed((function() { const newValue = _knockout.default.unwrap(fn()); if (!skipCallback) { callback(newValue) } skipCallback = false })); return function() { watcher.dispose() } }, templates: { "dx-polymorph-widget": { render: function(options) { const widgetName = _knockout.default.utils.unwrapObservable(options.model.widget); if (!widgetName) { return } const markup = (0, _renderer.default)("<div>").attr("data-bind", widgetName + ": options").get(0); (0, _renderer.default)(options.container).append(markup); _knockout.default.applyBindings(options.model, markup) } } }, createTemplate: function(element) { return new _template.KoTemplate(element) } } }; const optionNameToModelMap = {}; const applyModelValueToOption = function(optionName, modelValue, unwrap) { const locks = $element.data(LOCKS_DATA_KEY); const optionValue = unwrap ? _knockout.default.unwrap(modelValue) : modelValue; if (_knockout.default.isWriteableObservable(modelValue)) { optionNameToModelMap[optionName] = modelValue } if (component) { if (locks.locked(optionName)) { return } locks.obtain(optionName); try { if (_knockout.default.ignoreDependencies) { _knockout.default.ignoreDependencies(component.option, component, [optionName, optionValue]) } else { component.option(optionName, optionValue) } } finally { locks.release(optionName) } } else { ctorOptions[optionName] = optionValue } }; const handleOptionChanged = function(args) { const optionName = args.fullName; const optionValue = args.value; if (!(optionName in optionNameToModelMap)) { return } const $element = this._$element; const locks = $element.data(LOCKS_DATA_KEY); if (locks.locked(optionName)) { return } locks.obtain(optionName); try { optionNameToModelMap[optionName](optionValue) } finally { locks.release(optionName) } }; const unwrapModelValue = function(currentModel, propertyName, propertyPath) { if (propertyPath === isBindingPropertyPredicateName) { return } if (!isBindingPropertyPredicate || isBindingPropertyPredicate(propertyPath, propertyName, currentModel)) { let unwrappedPropertyValue; _knockout.default.computed((function() { const propertyValue = currentModel[propertyName]; applyModelValueToOption(propertyPath, propertyValue, true); unwrappedPropertyValue = _knockout.default.unwrap(propertyValue) }), null, { disposeWhenNodeIsRemoved: domNode }); if ((0, _type.isPlainObject)(unwrappedPropertyValue)) { if (!optionsByReference[propertyPath]) { unwrapModel(unwrappedPropertyValue, propertyPath) } } } else { applyModelValueToOption(propertyPath, currentModel[propertyName], false) } }; function unwrapModel(model, propertyPath) { for (const propertyName in model) { if (Object.prototype.hasOwnProperty.call(model, propertyName)) { unwrapModelValue(model, propertyName, propertyPath ? [propertyPath, propertyName].join(".") : propertyName) } } }! function() { optionChangedCallbacks.add(handleOptionChanged); $element.data(CREATED_WITH_KO_DATA_KEY, true).data(LOCKS_DATA_KEY, new _locker.default); new componentClass($element, ctorOptions); ctorOptions = null }(); return { controlsDescendantBindings: componentClass.subclassOf(_ui.default) || componentClass.subclassOf(_m_base_widget.default) || componentClass.subclassOf(_component_wrapper.ComponentWrapper) && !(component instanceof _scroll_view.default) || component instanceof _draggable.default } } }; if ("dxValidator" === componentName) { _knockout.default.bindingHandlers.dxValidator.after = editorsBindingHandlers } }; _component_registrator_callbacks.default.add((function(name, componentClass) { registerComponentKoBinding(name, componentClass) })) } }, 38382: /*!********************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/integration/knockout/components.js ***! \********************************************************************************/ function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { var _knockout = (e = __webpack_require__( /*! knockout */ 78117), e && e.__esModule ? e : { default: e }); var e; var _icon = __webpack_require__( /*! ../../core/utils/icon */ 69629); if (_knockout.default) { _knockout.default.bindingHandlers.dxControlsDescendantBindings = { init: function(_, valueAccessor) { return { controlsDescendantBindings: _knockout.default.unwrap(valueAccessor()) } } }; _knockout.default.bindingHandlers.dxIcon = { init: function(element, valueAccessor) { const options = _knockout.default.utils.unwrapObservable(valueAccessor()) || {}; const iconElement = (0, _icon.getImageContainer)(options); _knockout.default.virtualElements.emptyNode(element); if (iconElement) { _knockout.default.virtualElements.prepend(element, iconElement.get(0)) } }, update: function(element, valueAccessor) { const options = _knockout.default.utils.unwrapObservable(valueAccessor()) || {}; const iconElement = (0, _icon.getImageContainer)(options); _knockout.default.virtualElements.emptyNode(element); if (iconElement) { _knockout.default.virtualElements.prepend(element, iconElement.get(0)) } } }; _knockout.default.virtualElements.allowedBindings.dxIcon = true } }, 74899: /*!***************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/integration/knockout/event_registrator.js ***! \***************************************************************************************/ function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../core/renderer */ 64553)); var _events_engine = _interopRequireDefault(__webpack_require__( /*! ../../common/core/events/core/events_engine */ 92774)); var _knockout = _interopRequireDefault(__webpack_require__( /*! knockout */ 78117)); var _type = __webpack_require__( /*! ../../core/utils/type */ 11528); var _event_registrator_callbacks = _interopRequireDefault(__webpack_require__( /*! ../../common/core/events/core/event_registrator_callbacks */ 85030)); var _index = __webpack_require__( /*! ../../common/core/events/utils/index */ 98834); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } if (_knockout.default) { _event_registrator_callbacks.default.add((function(name) { const koBindingEventName = (0, _index.addNamespace)(name, name + "Binding"); _knockout.default.bindingHandlers[name] = { update: function(element, valueAccessor, allBindingsAccessor, viewModel) { const $element = (0, _renderer.default)(element); const unwrappedValue = _knockout.default.utils.unwrapObservable(valueAccessor()); const eventSource = unwrappedValue.execute ? unwrappedValue.execute : unwrappedValue; _events_engine.default.off($element, koBindingEventName); _events_engine.default.on($element, koBindingEventName, (0, _type.isPlainObject)(unwrappedValue) ? unwrappedValue : {}, (function(e) { eventSource.call(viewModel, viewModel, e) })) } } })) } }, 36332: /*!******************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/integration/knockout/template.js ***! \******************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { exports.KoTemplate = void 0; var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../core/renderer */ 64553)); var _dom_adapter = _interopRequireDefault(__webpack_require__( /*! ../../core/dom_adapter */ 64960)); var _knockout = _interopRequireDefault(__webpack_require__( /*! knockout */ 78117)); var _type = __webpack_require__( /*! ../../core/utils/type */ 11528); var _template_base = __webpack_require__( /*! ../../core/templates/template_base */ 42186); var _dom = __webpack_require__( /*! ../../core/utils/dom */ 86858); var _utils = __webpack_require__( /*! ./utils */ 43941); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } const KoTemplate = class extends _template_base.TemplateBase { constructor(element) { super(); this._element = element; this._template = (0, _renderer.default)("<div>").append((0, _dom.normalizeTemplateElement)(element)); this._registerKoTemplate() } _registerKoTemplate() { const template = this._template.get(0); new _knockout.default.templateSources.anonymousTemplate(template).nodes(template) } _prepareDataForContainer(data, container) { if (container && container.length) { const node = (0, _utils.getClosestNodeWithContext)(container.get(0)); const containerContext = _knockout.default.contextFor(node); data = void 0 !== data ? data : _knockout.default.dataFor(node) || {}; if (containerContext) { return data === containerContext.$data ? containerContext : containerContext.createChildContext(data) } } return function(data) { const parentNode = _dom_adapter.default.createElement("div"); _knockout.default.applyBindingsToNode(parentNode, null, data); const parentContext = _knockout.default.contextFor(parentNode); _knockout.default.cleanNode(parentNode); return parentContext }(data).createChildContext(data) } _renderCore(options) { const model = this._prepareDataForContainer(options.model, (0, _renderer.default)(options.container)); if ((0, _type.isDefined)(options.index)) { model.$index = options.index } const $placeholder = (0, _renderer.default)("<div>").appendTo(options.container); let $result; _knockout.default.renderTemplate(this._template.get(0), model, { afterRender: function(nodes) { $result = (0, _renderer.default)(nodes) } }, $placeholder.get(0), "replaceNode"); return $result } source() { return (0, _renderer.default)(this._element).clone() } dispose() { this._template.remove() } }; exports.KoTemplate = KoTemplate }, 43941: /*!***************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/integration/knockout/utils.js ***! \***************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { exports.getClosestNodeWithKoCreation = exports.getClosestNodeWithContext = void 0; var _knockout = _interopRequireDefault(__webpack_require__( /*! knockout */ 78117)); var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../core/renderer */ 64553)); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } const getClosestNodeWithContext = node => { const context = _knockout.default.contextFor(node); if (!context && node.parentNode) { return getClosestNodeWithContext(node.parentNode) } return node }; exports.getClosestNodeWithContext = getClosestNodeWithContext; const getClosestNodeWithKoCreation = node => { const $el = (0, _renderer.default)(node); const data = $el.data(); const hasFlag = data && data.dxKoCreation; if (hasFlag) { return node } if (node.parentNode) { return getClosestNodeWithKoCreation(node.parentNode) } return null }; exports.getClosestNodeWithKoCreation = getClosestNodeWithKoCreation }, 86281: /*!********************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/integration/knockout/validation.js ***! \********************************************************************************/ function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { var _iterator = __webpack_require__( /*! ../../core/utils/iterator */ 21274); var _extend = __webpack_require__( /*! ../../core/utils/extend */ 52576); var _class = _interopRequireDefault(__webpack_require__( /*! ../../core/class */ 55620)); var _events_strategy = __webpack_require__( /*! ../../core/events_strategy */ 2607); var _validation_engine = _interopRequireDefault(__webpack_require__( /*! ../../ui/validation_engine */ 19391)); var _deferred = __webpack_require__( /*! ../../core/utils/deferred */ 87739); var _guid = _interopRequireDefault(__webpack_require__( /*! ../../core/guid */ 19427)); var _knockout = _interopRequireDefault(__webpack_require__( /*! knockout */ 78117)); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } if (_knockout.default) { const VALIDATION_STATUS_VALID = "valid"; const VALIDATION_STATUS_PENDING = "pending"; const koDxValidator = _class.default.inherit({ ctor(target, _ref) { let { name: name, validationRules: validationRules } = _ref; this.target = target; this.name = name; this.isValid = _knockout.default.observable(true); this.validationError = _knockout.default.observable(); this.validationErrors = _knockout.default.observable(); this.validationStatus = _knockout.default.observable(VALIDATION_STATUS_VALID); this._eventsStrategy = new _events_strategy.EventsStrategy(this); this.validationRules = (0, _iterator.map)(validationRules, ((rule, index) => (0, _extend.extend)({}, rule, { validator: this, index: index }))); this._validationInfo = { result: null, deferred: null } }, _updateValidationResult(result) { if (!this._validationInfo.result || this._validationInfo.result.id !== result.id) { const complete = this._validationInfo.deferred && this._validationInfo.result.complete; this._validationInfo.result = (0, _extend.extend)({}, result, { complete: complete }) } else { for (const prop in result) { if ("id" !== prop && "complete" !== prop) { this._validationInfo.result[prop] = result[prop] } } } }, validate() { const currentResult = this._validationInfo && this._validationInfo.result; const value = this.target(); if (currentResult && currentResult.status === VALIDATION_STATUS_PENDING && currentResult.value === value) { return (0, _extend.extend)({}, currentResult) } const result = _validation_engine.default.validate(value, this.validationRules, this.name); result.id = (new _guid.default).toString(); this._applyValidationResult(result); result.complete && result.complete.then((res => { if (res.id === this._validationInfo.result.id) { this._applyValidationResult(res) } })); return (0, _extend.extend)({}, this._validationInfo.result) }, reset() { this.target(null); const result = { id: null, isValid: true, brokenRule: null, pendingRules: null, status: VALIDATION_STATUS_VALID, complete: null }; this._applyValidationResult(result); return result }, _applyValidationResult(result) { result.validator = this; this._updateValidationResult(result); this.target.dxValidator.isValid(this._validationInfo.result.isValid); this.target.dxValidator.validationError(this._validationInfo.result.brokenRule); this.target.dxValidator.validationErrors(this._validationInfo.result.brokenRules); this.target.dxValidator.validationStatus(this._validationInfo.result.status); if (result.status === VALIDATION_STATUS_PENDING) { if (!this._validationInfo.deferred) { this._validationInfo.deferred = new _deferred.Deferred; this._validationInfo.result.complete = this._validationInfo.deferred.promise() } this._eventsStrategy.fireEvent("validating", [this._validationInfo.result]); return } if (result.status !== VALIDATION_STATUS_PENDING) { this._eventsStrategy.fireEvent("validated", [result]); if (this._validationInfo.deferred) { this._validationInfo.deferred.resolve(result); this._validationInfo.deferred = null } } }, on(eventName, eventHandler) { this._eventsStrategy.on(eventName, eventHandler); return this }, off(eventName, eventHandler) { this._eventsStrategy.off(eventName, eventHandler); return this } }); _knockout.default.extenders.dxValidator = function(target, option) { target.dxValidator = new koDxValidator(target, option); target.subscribe(target.dxValidator.validate.bind(target.dxValidator)); return target }; _validation_engine.default.registerModelForValidation = function(model) { (0, _iterator.each)(model, (function(name, member) { if (_knockout.default.isObservable(member) && member.dxValidator) { _validation_engine.default.registerValidatorInGroup(model, member.dxValidator) } })) }; _validation_engine.default.unregisterModelForValidation = function(model) { (0, _iterator.each)(model, (function(name, member) { if (_knockout.default.isObservable(member) && member.dxValidator) { _validation_engine.default.removeRegisteredValidator(model, member.dxValidator) } })) }; _validation_engine.default.validateModel = _validation_engine.default.validateGroup } }, 71592: /*!********************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/integration/knockout/variable_wrapper_utils.js ***! \********************************************************************************************/ function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { var _knockout = _interopRequireDefault(__webpack_require__( /*! knockout */ 78117)); var _variable_wrapper = _interopRequireDefault(__webpack_require__( /*! ../../core/utils/variable_wrapper */ 40216)); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } if (_knockout.default) { _variable_wrapper.default.inject({ isWrapped: _knockout.default.isObservable, isWritableWrapped: _knockout.default.isWritableObservable, wrap: _knockout.default.observable, unwrap: function(value) { if (_knockout.default.isObservable(value)) { return _knockout.default.utils.unwrapObservable(value) } return this.callBase(value) }, assign: function(variable, value) { if (_knockout.default.isObservable(variable)) { variable(value) } else { this.callBase(variable, value) } } }) } }, 16615: /*!****************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/localization/globalize/core.js ***! \****************************************************************************/ function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { __webpack_require__( /*! ../../common/core/localization/globalize/core */ 23805) }, 89207: /*!********************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/localization/globalize/currency.js ***! \********************************************************************************/ function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { __webpack_require__( /*! ../../common/core/localization/globalize/currency */ 869) }, 94348: /*!****************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/localization/globalize/date.js ***! \****************************************************************************/ function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { __webpack_require__( /*! ../../common/core/localization/globalize/date */ 99862) }, 30725: /*!*******************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/localization/globalize/message.js ***! \*******************************************************************************/ function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { __webpack_require__( /*! ../../common/core/localization/globalize/message */ 84207) }, 36069: /*!******************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/localization/globalize/number.js ***! \******************************************************************************/ function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { __webpack_require__( /*! ../../common/core/localization/globalize/number */ 13203) }, 33881: /*!*********************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/localization/message.js ***! \*********************************************************************/ function(module, exports, __webpack_require__) { Object.defineProperty(exports, "default", { enumerable: true, get: function() { return _message.default } }); var _message = (e = __webpack_require__( /*! ../common/core/localization/message */ 4671), e && e.__esModule ? e : { default: e }); var e; module.exports = exports.default; module.exports.default = exports.default }, 90270: /*!************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/mobile/hide_top_overlay.js ***! \************************************************************************/ function(module, exports, __webpack_require__) { exports.default = void 0; var _environment = __webpack_require__( /*! ../common/core/environment */ 63705); exports.default = _environment.hideTopOverlay; module.exports = exports.default; module.exports.default = exports.default }, 21113: /*!****************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/mobile/init_mobile_viewport.js ***! \****************************************************************************/ function(module, exports, __webpack_require__) { exports.default = void 0; var _environment = __webpack_require__( /*! ../common/core/environment */ 63705); exports.default = _environment.initMobileViewport; module.exports = exports.default; module.exports.default = exports.default }, 72134: /*!*************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/pdf_exporter.js ***! \*************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "exportDataGrid", { enumerable: true, get: function() { return _pdf.exportDataGrid } }); Object.defineProperty(exports, "exportDataGridWithAutoTable", { enumerable: true, get: function() { return _export_data_grid.exportDataGrid } }); Object.defineProperty(exports, "exportGantt", { enumerable: true, get: function() { return _pdf.exportGantt } }); var _pdf = __webpack_require__( /*! ./common/export/pdf */ 92731); var _export_data_grid = __webpack_require__( /*! ./exporter/jspdf/autotable/export_data_grid */ 89222) }, 53200: /*!****************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/time_zone_utils.js ***! \****************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "getTimeZones", { enumerable: true, get: function() { return _environment.getTimeZones } }); var _environment = __webpack_require__( /*! ./common/core/environment */ 63705) }, 30543: /*!*************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/ui/accordion.js ***! \*************************************************************/ function(module, exports, __webpack_require__) { exports.default = void 0; var _m_accordion = (e = __webpack_require__( /*! ../__internal/ui/m_accordion */ 55797), e && e.__esModule ? e : { default: e }); var e; exports.default = _m_accordion.default; module.exports = exports.default; module.exports.default = exports.default }, 45263: /*!****************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/ui/action_sheet.js ***! \****************************************************************/ function(module, exports, __webpack_require__) { exports.default = void 0; var _m_action_sheet = (e = __webpack_require__( /*! ../__internal/ui/m_action_sheet */ 70557), e && e.__esModule ? e : { default: e }); var e; exports.default = _m_action_sheet.default; module.exports = exports.default; module.exports.default = exports.default }, 93485: /*!****************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/ui/autocomplete.js ***! \****************************************************************/ function(module, exports, __webpack_require__) { exports.default = void 0; var _m_autocomplete = (e = __webpack_require__( /*! ../__internal/ui/m_autocomplete */ 71795), e && e.__esModule ? e : { default: e }); var e; exports.default = _m_autocomplete.default; module.exports = exports.default; module.exports.default = exports.default }, 91204: /*!*******************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/ui/box.js ***! \*******************************************************/ function(module, exports, __webpack_require__) { exports.default = void 0; var _m_box = (e = __webpack_require__( /*! ../__internal/ui/m_box */ 30434), e && e.__esModule ? e : { default: e }); var e; exports.default = _m_box.default; module.exports = exports.default; module.exports.default = exports.default }, 64973: /*!**********************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/ui/button.js ***! \**********************************************************/ function(module, exports, __webpack_require__) { exports.default = void 0; var _index = (e = __webpack_require__( /*! ../__internal/ui/button/index */ 74660), e && e.__esModule ? e : { default: e }); var e; exports.default = _index.default; module.exports = exports.default; module.exports.default = exports.default }, 17809: /*!****************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/ui/button_group.js ***! \****************************************************************/ function(module, exports, __webpack_require__) { exports.default = void 0; var _m_button_group = (e = __webpack_require__( /*! ../__internal/ui/m_button_group */ 14111), e && e.__esModule ? e : { default: e }); var e; exports.default = _m_button_group.default; module.exports = exports.default; module.exports.default = exports.default }, 22195: /*!************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/ui/calendar.js ***! \************************************************************/ function(module, exports, __webpack_require__) { exports.default = void 0; var _m_calendar = (e = __webpack_require__( /*! ../__internal/ui/calendar/m_calendar */ 82110), e && e.__esModule ? e : { default: e }); var e; exports.default = _m_calendar.default; module.exports = exports.default; module.exports.default = exports.default }, 44655: /*!*************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/ui/card_view.js ***! \*************************************************************/ function(module, exports, __webpack_require__) { exports.default = void 0; var _widget = (e = __webpack_require__( /*! ../__internal/grids/new/card_view/widget */ 67184), e && e.__esModule ? e : { default: e }); var e; exports.default = _widget.default; module.exports = exports.default; module.exports.default = exports.default }, 73571: /*!********************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/ui/chat.js ***! \********************************************************/ function(module, exports, __webpack_require__) { exports.default = void 0; var _chat = (e = __webpack_require__( /*! ../__internal/ui/chat/chat */ 61454), e && e.__esModule ? e : { default: e }); var e; exports.default = _chat.default; module.exports = exports.default; module.exports.default = exports.default }, 94319: /*!*************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/ui/check_box.js ***! \*************************************************************/ function(module, exports, __webpack_require__) { exports.default = void 0; var _index = (e = __webpack_require__( /*! ../__internal/ui/check_box/index */ 50758), e && e.__esModule ? e : { default: e }); var e; exports.default = _index.default; module.exports = exports.default; module.exports.default = exports.default }, 33975: /*!*****************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/ui/collection/ui.collection_widget.async.js ***! \*****************************************************************************************/ function(module, exports, __webpack_require__) { exports.default = void 0; var _m_collection_widget = (e = __webpack_require__( /*! ../../__internal/ui/collection/m_collection_widget.async */ 88575), e && e.__esModule ? e : { default: e }); var e; exports.default = _m_collection_widget.default; module.exports = exports.default; module.exports.default = exports.default }, 7607: /*!****************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/ui/collection/ui.collection_widget.edit.js ***! \****************************************************************************************/ function(module, exports, __webpack_require__) { exports.default = void 0; var _m_collection_widget = (e = __webpack_require__( /*! ../../__internal/ui/collection/m_collection_widget.edit */ 3391), e && e.__esModule ? e : { default: e }); var e; exports.default = _m_collection_widget.default; module.exports = exports.default; module.exports.default = exports.default }, 55213: /*!***********************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/ui/collection/ui.collection_widget.live_update.js ***! \***********************************************************************************************/ function(module, exports, __webpack_require__) { exports.default = void 0; var _m_collection_widget = (e = __webpack_require__( /*! ../../__internal/ui/collection/m_collection_widget.live_update */ 68005), e && e.__esModule ? e : { default: e }); var e; exports.default = _m_collection_widget.default; module.exports = exports.default; module.exports.default = exports.default }, 87928: /*!*************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/ui/color_box.js ***! \*************************************************************/ function(module, exports, __webpack_require__) { exports.default = void 0; var _m_color_box = (e = __webpack_require__( /*! ../__internal/ui/color_box/m_color_box */ 26988), e && e.__esModule ? e : { default: e }); var e; exports.default = _m_color_box.default; module.exports = exports.default; module.exports.default = exports.default }, 34378: /*!****************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/ui/context_menu.js ***! \****************************************************************/ function(module, exports, __webpack_require__) { exports.default = void 0; var _m_context_menu = (e = __webpack_require__( /*! ../__internal/ui/context_menu/m_context_menu */ 66900), e && e.__esModule ? e : { default: e }); var e; exports.default = _m_context_menu.default; module.exports = exports.default; module.exports.default = exports.default }, 4920: /*!*************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/ui/data_grid.js ***! \*************************************************************/ function(module, exports, __webpack_require__) { exports.default = void 0; var _m_widget = _interopRequireDefault(__webpack_require__( /*! ../__internal/grids/data_grid/m_widget */ 89398)); _interopRequireDefault(__webpack_require__( /*! ./filter_builder */ 35299)); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } exports.default = _m_widget.default; module.exports = exports.default; module.exports.default = exports.default }, 2739: /*!************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/ui/date_box.js ***! \************************************************************/ function(module, exports, __webpack_require__) { exports.default = void 0; var _m_date_box = (e = __webpack_require__( /*! ../__internal/ui/date_box/m_date_box */ 92782), e && e.__esModule ? e : { default: e }); var e; exports.default = _m_date_box.default; module.exports = exports.default; module.exports.default = exports.default }, 45453: /*!******************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/ui/date_range_box.js ***! \******************************************************************/ function(module, exports, __webpack_require__) { exports.default = void 0; var _m_date_range_box = (e = __webpack_require__( /*! ../__internal/ui/date_range_box/m_date_range_box */ 61238), e && e.__esModule ? e : { default: e }); var e; exports.default = _m_date_range_box.default; module.exports = exports.default; module.exports.default = exports.default }, 41302: /*!*******************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/ui/defer_rendering.js ***! \*******************************************************************/ function(module, exports, __webpack_require__) { exports.default = void 0; var _m_defer_rendering = (e = __webpack_require__( /*! ../__internal/ui/m_defer_rendering */ 27932), e && e.__esModule ? e : { default: e }); var e; exports.default = _m_defer_rendering.default; module.exports = exports.default; module.exports.default = exports.default }, 87632: /*!***********************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/ui/diagram.js ***! \***********************************************************/ function(module, exports, __webpack_require__) { exports.default = void 0; var _ui = (e = __webpack_require__( /*! ./diagram/ui.diagram */ 14006), e && e.__esModule ? e : { default: e }); var e; exports.default = _ui.default; module.exports = exports.default; module.exports.default = exports.default }, 35629: /*!***********************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/ui/diagram/diagram.bar.js ***! \***********************************************************************/ function(module, exports, __webpack_require__) { exports.default = void 0; var _diagram = __webpack_require__( /*! ./diagram.importer */ 11744); exports.default = class { constructor(owner) { const { EventDispatcher: EventDispatcher } = (0, _diagram.getDiagram)(); this.onChanged = new EventDispatcher; this._owner = owner } raiseBarCommandExecuted(key, parameter) { this.onChanged.raise("notifyBarCommandExecuted", parseInt(key), parameter) } getCommandKeys() { throw "Not Implemented" } setItemValue(key, value) {} setItemEnabled(key, enabled) {} setItemVisible(key, enabled) {} setEnabled(enabled) {} setItemSubItems(key, items) {} isVisible() { return true } _getKeys(items) { const keys = items.reduce(((commands, item) => { if (void 0 !== item.command) { commands.push(item.command) } if (item.items) { commands = commands.concat(this._getKeys(item.items)) } return commands }), []); return keys } }; module.exports = exports.default; module.exports.default = exports.default }, 43304: /*!************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/ui/diagram/diagram.commands_manager.js ***! \************************************************************************************/ function(module, exports, __webpack_require__) { exports.default = void 0; var _diagram = __webpack_require__( /*! ./diagram.importer */ 11744); var _file_saver = __webpack_require__( /*! ../../exporter/file_saver */ 34924); var _type = __webpack_require__( /*! ../../core/utils/type */ 11528); var _window = __webpack_require__( /*! ../../core/utils/window */ 3104); var _extend = __webpack_require__( /*! ../../core/utils/extend */ 52576); var _message = (e = __webpack_require__( /*! ../../common/core/localization/message */ 4671), e && e.__esModule ? e : { default: e }); var e; const SEPARATOR_COMMAND = { widget: "separator" }; const CSS_CLASSES_SMALL_EDITOR_ITEM = "dx-diagram-sm-edit-item", CSS_CLASSES_MEDIUM_EDITOR_ITEM = "dx-diagram-md-edit-item", CSS_CLASSES_LARGE_EDITOR_ITEM = "dx-diagram-lg-edit-item", CSS_CLASSES_IMAGE_DROPDOWN_ITEM = "dx-diagram-image-dropdown-item", CSS_CLASSES_COLOR_EDITOR_ITEM = "dx-diagram-color-edit-item", CSS_CLASSES_LARGE_ICON_ITEM = "dx-diagram-lg-icon-item"; const DiagramCommandsManager = { SHOW_TOOLBOX_COMMAND_NAME: "toolbox", SHOW_PROPERTIES_PANEL_COMMAND_NAME: "propertiesPanel", getAllCommands: function() { const { DiagramCommand: DiagramCommand } = (0, _diagram.getDiagram)(); return this._allCommands || (this._allCommands = { separator: SEPARATOR_COMMAND, exportSvg: { command: DiagramCommand.ExportSvg, text: _message.default.format("dxDiagram-commandExportToSvg"), getParameter: widget => dataURI => this._exportTo(widget, dataURI, "SVG", "image/svg+xml") }, exportPng: { command: DiagramCommand.ExportPng, text: _message.default.format("dxDiagram-commandExportToPng"), getParameter: widget => dataURI => this._exportTo(widget, dataURI, "PNG", "image/png") }, exportJpg: { command: DiagramCommand.ExportJpg, text: _message.default.format("dxDiagram-commandExportToJpg"), getParameter: widget => dataURI => this._exportTo(widget, dataURI, "JPEG", "image/jpeg") }, undo: { command: DiagramCommand.Undo, hint: _message.default.format("dxDiagram-commandUndo"), text: _message.default.format("dxDiagram-commandUndo"), icon: "undo", menuIcon: "undo" }, redo: { command: DiagramCommand.Redo, hint: _message.default.format("dxDiagram-commandRedo"), text: _message.default.format("dxDiagram-commandRedo"), icon: "redo", menuIcon: "redo" }, cut: { command: DiagramCommand.Cut, hint: _message.default.format("dxDiagram-commandCut"), text: _message.default.format("dxDiagram-commandCut"), icon: "cut", menuIcon: "cut" }, copy: { command: DiagramCommand.Copy, hint: _message.default.format("dxDiagram-commandCopy"), text: _message.default.format("dxDiagram-commandCopy"), icon: "copy", menuIcon: "copy" }, paste: { command: DiagramCommand.PasteInPosition, hint: _message.default.format("dxDiagram-commandPaste"), text: _message.default.format("dxDiagram-commandPaste"), icon: "paste", menuIcon: "paste" }, selectAll: { command: DiagramCommand.SelectAll, hint: _message.default.format("dxDiagram-commandSelectAll"), text: _message.default.format("dxDiagram-commandSelectAll"), icon: "dx-diagram-i-button-select-all dx-diagram-i", menuIcon: "dx-diagram-i-menu-select-all dx-diagram-i" }, delete: { command: DiagramCommand.Delete, hint: _message.default.format("dxDiagram-commandDelete"), text: _message.default.format("dxDiagram-commandDelete"), icon: "remove", menuIcon: "remove" }, fontName: { command: DiagramCommand.FontName, hint: _message.default.format("dxDiagram-commandFontName"), text: _message.default.format("dxDiagram-commandFontName"), widget: "dxSelectBox", items: ["Arial", "Arial Black", "Helvetica", "Times New Roman", "Courier New", "Courier", "Verdana", "Georgia", "Comic Sans MS", "Trebuchet MS"].map((item => ({ text: item, value: item }))), cssClass: CSS_CLASSES_MEDIUM_EDITOR_ITEM }, fontSize: { command: DiagramCommand.FontSize, hint: _message.default.format("dxDiagram-commandFontSize"), text: _message.default.format("dxDiagram-commandFontSize"), widget: "dxSelectBox", items: [8, 9, 10, 11, 12, 14, 16, 18, 20, 22, 24, 26, 28, 36, 48, 72].map((item => ({ text: item + "pt", value: item + "pt" }))), cssClass: CSS_CLASSES_SMALL_EDITOR_ITEM }, bold: { command: DiagramCommand.Bold, hint: _message.default.format("dxDiagram-commandBold"), text: _message.default.format("dxDiagram-commandBold"), icon: "bold", menuIcon: "bold" }, italic: { command: DiagramCommand.Italic, hint: _message.default.format("dxDiagram-commandItalic"), text: _message.default.format("dxDiagram-commandItalic"), icon: "italic", menuIcon: "italic" }, underline: { command: DiagramCommand.Underline, hint: _message.default.format("dxDiagram-commandUnderline"), text: _message.default.format("dxDiagram-commandUnderline"), icon: "underline", menuIcon: "underline" }, fontColor: { command: DiagramCommand.FontColor, text: _message.default.format("dxDiagram-commandTextColor"), hint: _message.default.format("dxDiagram-commandTextColor"), widget: "dxColorBox", icon: "dx-icon dx-icon-color", menuIcon: "dx-icon dx-icon-color", cssClass: CSS_CLASSES_COLOR_EDITOR_ITEM }, lineColor: { command: DiagramCommand.StrokeColor, text: _message.default.format("dxDiagram-commandLineColor"), hint: _message.default.format("dxDiagram-commandLineColor"), widget: "dxColorBox", icon: "dx-icon dx-icon-background", menuIcon: "dx-icon dx-icon-background", cssClass: CSS_CLASSES_COLOR_EDITOR_ITEM }, lineWidth: { command: DiagramCommand.StrokeWidth, text: _message.default.format("dxDiagram-commandLineWidth"), hint: _message.default.format("dxDiagram-commandLineWidth"), widget: "dxSelectBox", items: [1, 2, 3, 4, 5, 6, 7, 8].map((item => ({ text: item + "px", value: item.toString() }))), cssClass: CSS_CLASSES_SMALL_EDITOR_ITEM }, lineStyle: { command: DiagramCommand.StrokeStyle, text: _message.default.format("dxDiagram-commandLineStyle"), hint: _message.default.format("dxDiagram-commandLineStyle"), widget: "dxSelectBox", items: [{ value: "", menuIcon: "dx-diagram-i-line-solid dx-diagram-i", hint: _message.default.format("dxDiagram-commandLineStyleSolid") }, { value: "2,2", menuIcon: "dx-diagram-i-line-dotted dx-diagram-i", hint: _message.default.format("dxDiagram-commandLineStyleDotted") }, { value: "6,2", menuIcon: "dx-diagram-i-line-dashed dx-diagram-i", hint: _message.default.format("dxDiagram-commandLineStyleDashed") }], cssClass: CSS_CLASSES_IMAGE_DROPDOWN_ITEM }, fillColor: { command: DiagramCommand.FillColor, text: _message.default.format("dxDiagram-commandFillColor"), hint: _message.default.format("dxDiagram-commandFillColor"), widget: "dxColorBox", icon: "dx-diagram-i dx-diagram-i-button-fill", menuIcon: "dx-diagram-i dx-diagram-i-menu-fill", cssClass: CSS_CLASSES_COLOR_EDITOR_ITEM }, textAlignLeft: { command: DiagramCommand.TextLeftAlign, hint: _message.default.format("dxDiagram-commandAlignLeft"), text: _message.default.format("dxDiagram-commandAlignLeft"), icon: "alignleft", menuIcon: "alignleft" }, textAlignCenter: { command: DiagramCommand.TextCenterAlign, hint: _message.default.format("dxDiagram-commandAlignCenter"), text: _message.default.format("dxDiagram-commandAlignCenter"), icon: "aligncenter", menuIcon: "aligncenter" }, textAlignRight: { command: DiagramCommand.TextRightAlign, hint: _message.default.format("dxDiagram-commandAlignRight"), text: _message.default.format("dxDiagram-commandAlignRight"), icon: "alignright", menuIcon: "alignright" }, lock: { command: DiagramCommand.Lock, hint: _message.default.format("dxDiagram-commandLock"), text: _message.default.format("dxDiagram-commandLock"), icon: "dx-diagram-i-button-lock dx-diagram-i", menuIcon: "dx-diagram-i-menu-lock dx-diagram-i" }, unlock: { command: DiagramCommand.Unlock, hint: _message.default.format("dxDiagram-commandUnlock"), text: _message.default.format("dxDiagram-commandUnlock"), icon: "dx-diagram-i-button-unlock dx-diagram-i", menuIcon: "dx-diagram-i-menu-unlock dx-diagram-i" }, bringToFront: { command: DiagramCommand.BringToFront, hint: _message.default.format("dxDiagram-commandBringToFront"), text: _message.default.format("dxDiagram-commandBringToFront"), icon: "dx-diagram-i-button-bring-to-front dx-diagram-i", menuIcon: "dx-diagram-i-menu-bring-to-front dx-diagram-i" }, sendToBack: { command: DiagramCommand.SendToBack, hint: _message.default.format("dxDiagram-commandSendToBack"), text: _message.default.format("dxDiagram-commandSendToBack"), icon: "dx-diagram-i-button-send-to-back dx-diagram-i", menuIcon: "dx-diagram-i-menu-send-to-back dx-diagram-i" }, insertShapeImage: { command: DiagramCommand.InsertShapeImage, text: _message.default.format("dxDiagram-commandInsertShapeImage"), icon: "dx-diagram-i-button-image-insert dx-diagram-i", menuIcon: "dx-diagram-i-menu-image-insert dx-diagram-i" }, editShapeImage: { command: DiagramCommand.EditShapeImage, text: _message.default.format("dxDiagram-commandEditShapeImage"), icon: "dx-diagram-i-button-image-edit dx-diagram-i", menuIcon: "dx-diagram-i-menu-image-edit dx-diagram-i" }, deleteShapeImage: { command: DiagramCommand.DeleteShapeImage, text: _message.default.format("dxDiagram-commandDeleteShapeImage"), icon: "dx-diagram-i-button-image-delete dx-diagram-i", menuIcon: "dx-diagram-i-menu-image-delete dx-diagram-i" }, connectorLineType: { command: DiagramCommand.ConnectorLineOption, widget: "dxSelectBox", hint: _message.default.format("dxDiagram-commandConnectorLineType"), text: _message.default.format("dxDiagram-commandConnectorLineType"), items: [{ value: 0, menuIcon: "dx-diagram-i-connector-straight dx-diagram-i", hint: _message.default.format("dxDiagram-commandConnectorLineStraight"), text: _message.default.format("dxDiagram-commandConnectorLineStraight") }, { value: 1, menuIcon: "dx-diagram-i-connector-orthogonal dx-diagram-i", hint: _message.default.format("dxDiagram-commandConnectorLineOrthogonal"), text: _message.default.format("dxDiagram-commandConnectorLineOrthogonal") }], cssClass: CSS_CLASSES_IMAGE_DROPDOWN_ITEM }, connectorLineStart: { command: DiagramCommand.ConnectorStartLineEnding, widget: "dxSelectBox", items: [{ value: 0, menuIcon: "dx-diagram-i-connector-begin-none dx-diagram-i", hint: _message.default.format("dxDiagram-commandConnectorLineNone"), text: _message.default.format("dxDiagram-commandConnectorLineNone") }, { value: 1, menuIcon: "dx-diagram-i-connector-begin-arrow dx-diagram-i", hint: _message.default.format("dxDiagram-commandConnectorLineArrow"), text: _message.default.format("dxDiagram-commandConnectorLineArrow") }, { value: 2, menuIcon: "dx-diagram-i-connector-begin-outlined-triangle dx-diagram-i", hint: _message.default.format("dxDiagram-commandConnectorLineArrow"), text: _message.default.format("dxDiagram-commandConnectorLineArrow") }, { value: 3, menuIcon: "dx-diagram-i-connector-begin-filled-triangle dx-diagram-i", hint: _message.default.format("dxDiagram-commandConnectorLineArrow"), text: _message.default.format("dxDiagram-commandConnectorLineArrow") }], hint: _message.default.format("dxDiagram-commandConnectorLineStart"), text: _message.default.format("dxDiagram-commandConnectorLineStart"), cssClass: CSS_CLASSES_IMAGE_DROPDOWN_ITEM }, connectorLineEnd: { command: DiagramCommand.ConnectorEndLineEnding, widget: "dxSelectBox", items: [{ value: 0, menuIcon: "dx-diagram-i-connector-end-none dx-diagram-i", hint: _message.default.format("dxDiagram-commandConnectorLineNone"), text: _message.default.format("dxDiagram-commandConnectorLineNone") }, { value: 1, menuIcon: "dx-diagram-i-connector-end-arrow dx-diagram-i", hint: _message.default.format("dxDiagram-commandConnectorLineArrow"), text: _message.default.format("dxDiagram-commandConnectorLineArrow") }, { value: 2, menuIcon: "dx-diagram-i-connector-end-outlined-triangle dx-diagram-i", hint: _message.default.format("dxDiagram-commandConnectorLineArrow"), text: _message.default.format("dxDiagram-commandConnectorLineArrow") }, { value: 3, menuIcon: "dx-diagram-i-connector-end-filled-triangle dx-diagram-i", hint: _message.default.format("dxDiagram-commandConnectorLineArrow"), text: _message.default.format("dxDiagram-commandConnectorLineArrow") }], hint: _message.default.format("dxDiagram-commandConnectorLineEnd"), text: _message.default.format("dxDiagram-commandConnectorLineEnd"), cssClass: CSS_CLASSES_IMAGE_DROPDOWN_ITEM }, layoutTreeTopToBottom: { command: DiagramCommand.AutoLayoutTreeVertical, text: _message.default.format("dxDiagram-commandLayoutTopToBottom"), hint: _message.default.format("dxDiagram-commandLayoutTopToBottom"), icon: "dx-diagram-i-button-layout-tree-tb dx-diagram-i", cssClass: CSS_CLASSES_LARGE_ICON_ITEM }, layoutTreeBottomToTop: { command: DiagramCommand.AutoLayoutTreeVerticalBottomToTop, text: _message.default.format("dxDiagram-commandLayoutBottomToTop"), hint: _message.default.format("dxDiagram-commandLayoutBottomToTop"), icon: "dx-diagram-i-button-layout-tree-bt dx-diagram-i", cssClass: CSS_CLASSES_LARGE_ICON_ITEM }, layoutTreeLeftToRight: { command: DiagramCommand.AutoLayoutTreeHorizontal, text: _message.default.format("dxDiagram-commandLayoutLeftToRight"), hint: _message.default.format("dxDiagram-commandLayoutLeftToRight"), icon: "dx-diagram-i-button-layout-tree-lr dx-diagram-i", cssClass: CSS_CLASSES_LARGE_ICON_ITEM }, layoutTreeRightToLeft: { command: DiagramCommand.AutoLayoutTreeHorizontalRightToLeft, text: _message.default.format("dxDiagram-commandLayoutRightToLeft"), hint: _message.default.format("dxDiagram-commandLayoutRightToLeft"), icon: "dx-diagram-i-button-layout-tree-rl dx-diagram-i", cssClass: CSS_CLASSES_LARGE_ICON_ITEM }, layoutLayeredTopToBottom: { command: DiagramCommand.AutoLayoutLayeredVertical, text: _message.default.format("dxDiagram-commandLayoutTopToBottom"), hint: _message.default.format("dxDiagram-commandLayoutTopToBottom"), icon: "dx-diagram-i-button-layout-layered-tb dx-diagram-i", cssClass: CSS_CLASSES_LARGE_ICON_ITEM }, layoutLayeredBottomToTop: { command: DiagramCommand.AutoLayoutLayeredVerticalBottomToTop, text: _message.default.format("dxDiagram-commandLayoutBottomToTop"), hint: _message.default.format("dxDiagram-commandLayoutBottomToTop"), icon: "dx-diagram-i-button-layout-layered-bt dx-diagram-i", cssClass: CSS_CLASSES_LARGE_ICON_ITEM }, layoutLayeredLeftToRight: { command: DiagramCommand.AutoLayoutLayeredHorizontal, text: _message.default.format("dxDiagram-commandLayoutLeftToRight"), hint: _message.default.format("dxDiagram-commandLayoutLeftToRight"), icon: "dx-diagram-i-button-layout-layered-lr dx-diagram-i", cssClass: CSS_CLASSES_LARGE_ICON_ITEM }, layoutLayeredRightToLeft: { command: DiagramCommand.AutoLayoutLayeredHorizontalRightToLeft, text: _message.default.format("dxDiagram-commandLayoutRightToLeft"), hint: _message.default.format("dxDiagram-commandLayoutRightToLeft"), icon: "dx-diagram-i-button-layout-layered-rl dx-diagram-i", cssClass: CSS_CLASSES_LARGE_ICON_ITEM }, fullScreen: { command: DiagramCommand.Fullscreen, hint: _message.default.format("dxDiagram-commandFullscreen"), text: _message.default.format("dxDiagram-commandFullscreen"), icon: "dx-diagram-i dx-diagram-i-button-fullscreen", menuIcon: "dx-diagram-i dx-diagram-i-menu-fullscreen", cssClass: CSS_CLASSES_COLOR_EDITOR_ITEM }, units: { command: DiagramCommand.ViewUnits, hint: _message.default.format("dxDiagram-commandUnits"), text: _message.default.format("dxDiagram-commandUnits"), widget: "dxSelectBox" }, simpleView: { command: DiagramCommand.ToggleSimpleView, hint: _message.default.format("dxDiagram-commandSimpleView"), text: _message.default.format("dxDiagram-commandSimpleView"), widget: "dxCheckBox" }, showGrid: { command: DiagramCommand.ShowGrid, hint: _message.default.format("dxDiagram-commandShowGrid"), text: _message.default.format("dxDiagram-commandShowGrid"), widget: "dxCheckBox" }, snapToGrid: { command: DiagramCommand.SnapToGrid, hint: _message.default.format("dxDiagram-commandSnapToGrid"), text: _message.default.format("dxDiagram-commandSnapToGrid"), widget: "dxCheckBox" }, gridSize: { command: DiagramCommand.GridSize, hint: _message.default.format("dxDiagram-commandGridSize"), text: _message.default.format("dxDiagram-commandGridSize"), widget: "dxSelectBox" }, pageSize: { command: DiagramCommand.PageSize, hint: _message.default.format("dxDiagram-commandPageSize"), text: _message.default.format("dxDiagram-commandPageSize"), widget: "dxSelectBox", cssClass: CSS_CLASSES_LARGE_EDITOR_ITEM, getCommandValue: v => JSON.parse(v), getEditorValue: v => JSON.stringify(v) }, pageOrientation: { command: DiagramCommand.PageLandscape, hint: _message.default.format("dxDiagram-commandPageOrientation"), text: _message.default.format("dxDiagram-commandPageOrientation"), widget: "dxSelectBox", items: [{ value: true, text: _message.default.format("dxDiagram-commandPageOrientationLandscape") }, { value: false, text: _message.default.format("dxDiagram-commandPageOrientationPortrait") }], cssClass: CSS_CLASSES_MEDIUM_EDITOR_ITEM }, pageColor: { command: DiagramCommand.PageColor, hint: _message.default.format("dxDiagram-commandPageColor"), text: _message.default.format("dxDiagram-commandPageColor"), widget: "dxColorBox", icon: "dx-diagram-i dx-diagram-i-button-fill", menuIcon: "dx-diagram-i dx-diagram-i-menu-fill", cssClass: CSS_CLASSES_COLOR_EDITOR_ITEM }, zoomLevel: { command: DiagramCommand.ZoomLevel, hint: _message.default.format("dxDiagram-commandZoomLevel"), text: _message.default.format("dxDiagram-commandZoomLevel"), widget: "dxTextBox", items: [SEPARATOR_COMMAND, { command: DiagramCommand.FitToScreen, hint: _message.default.format("dxDiagram-commandFitToContent"), text: _message.default.format("dxDiagram-commandFitToContent") }, { command: DiagramCommand.FitToWidth, hint: _message.default.format("dxDiagram-commandFitToWidth"), text: _message.default.format("dxDiagram-commandFitToWidth") }, SEPARATOR_COMMAND, { command: DiagramCommand.AutoZoomToContent, hint: _message.default.format("dxDiagram-commandAutoZoomByContent"), text: _message.default.format("dxDiagram-commandAutoZoomByContent") }, { command: DiagramCommand.AutoZoomToWidth, hint: _message.default.format("dxDiagram-commandAutoZoomByWidth"), text: _message.default.format("dxDiagram-commandAutoZoomByWidth") }], getEditorDisplayValue: v => Math.round(100 * v) + "%", cssClass: CSS_CLASSES_SMALL_EDITOR_ITEM }, toolbox: { command: this.SHOW_TOOLBOX_COMMAND_NAME, iconChecked: "dx-diagram-i dx-diagram-i-button-toolbox-close", iconUnchecked: "dx-diagram-i dx-diagram-i-button-toolbox-open", hint: _message.default.format("dxDiagram-uiShowToolbox"), text: _message.default.format("dxDiagram-uiShowToolbox") }, propertiesPanel: { command: this.SHOW_PROPERTIES_PANEL_COMMAND_NAME, iconChecked: "close", iconUnchecked: "dx-diagram-i dx-diagram-i-button-properties-panel-open", hint: _message.default.format("dxDiagram-uiProperties"), text: _message.default.format("dxDiagram-uiProperties") } }) }, getMainToolbarCommands: function(commands, excludeCommands) { const allCommands = this.getAllCommands(); const mainToolbarCommands = commands ? this._getPreparedCommands(allCommands, commands) : this._getDefaultMainToolbarCommands(allCommands); return this._prepareToolbarCommands(mainToolbarCommands, excludeCommands) }, _getDefaultMainToolbarCommands: function(allCommands) { return this._defaultMainToolbarCommands || (this._defaultMainToolbarCommands = [allCommands.undo, allCommands.redo, allCommands.separator, allCommands.fontName, allCommands.fontSize, allCommands.bold, allCommands.italic, allCommands.underline, allCommands.separator, allCommands.lineWidth, allCommands.lineStyle, allCommands.separator, allCommands.fontColor, allCommands.lineColor, allCommands.fillColor, allCommands.separator, allCommands.textAlignLeft, allCommands.textAlignCenter, allCommands.textAlignRight, allCommands.separator, allCommands.connectorLineType, allCommands.connectorLineStart, allCommands.connectorLineEnd, allCommands.separator, { text: _message.default.format("dxDiagram-uiLayout"), showText: "always", items: [{ text: _message.default.format("dxDiagram-uiLayoutTree"), items: [allCommands.layoutTreeTopToBottom, allCommands.layoutTreeBottomToTop, allCommands.layoutTreeLeftToRight, allCommands.layoutTreeRightToLeft] }, { text: _message.default.format("dxDiagram-uiLayoutLayered"), items: [allCommands.layoutLayeredTopToBottom, allCommands.layoutLayeredBottomToTop, allCommands.layoutLayeredLeftToRight, allCommands.layoutLayeredRightToLeft] }] }]) }, getHistoryToolbarCommands: function(commands, excludeCommands) { const allCommands = this.getAllCommands(); const historyToolbarCommands = commands ? this._getPreparedCommands(allCommands, commands) : this._getDefaultHistoryToolbarCommands(allCommands); return this._prepareToolbarCommands(historyToolbarCommands, excludeCommands) }, _getDefaultHistoryToolbarCommands: function(allCommands) { return this._defaultHistoryToolbarCommands || (this._defaultHistoryToolbarCommands = [allCommands.undo, allCommands.redo, allCommands.separator, allCommands.toolbox]) }, getViewToolbarCommands: function(commands, excludeCommands) { const allCommands = this.getAllCommands(); const viewToolbarCommands = commands ? this._getPreparedCommands(allCommands, commands) : this._getDefaultViewToolbarCommands(allCommands); return this._prepareToolbarCommands(viewToolbarCommands, excludeCommands) }, _getDefaultViewToolbarCommands: function(allCommands) { return this._defaultViewToolbarCommands || (this._defaultViewToolbarCommands = [allCommands.zoomLevel, allCommands.separator, allCommands.fullScreen, allCommands.separator, { widget: "dxButton", icon: "export", text: _message.default.format("dxDiagram-uiExport"), hint: _message.default.format("dxDiagram-uiExport"), items: [allCommands.exportSvg, allCommands.exportPng, allCommands.exportJpg] }, { icon: "preferences", hint: _message.default.format("dxDiagram-uiSettings"), text: _message.default.format("dxDiagram-uiSettings"), items: [allCommands.units, allCommands.separator, allCommands.showGrid, allCommands.snapToGrid, allCommands.gridSize, allCommands.separator, allCommands.simpleView, allCommands.toolbox] }]) }, getPropertiesToolbarCommands: function(commands, excludeCommands) { const allCommands = this.getAllCommands(); const propertiesCommands = commands ? this._getPreparedCommands(allCommands, commands) : this._getDefaultPropertiesToolbarCommands(allCommands); return this._prepareToolbarCommands(propertiesCommands, excludeCommands) }, _getDefaultPropertiesToolbarCommands: function(allCommands) { return this._defaultPropertiesToolbarCommands || (this._defaultPropertiesToolbarCommands = [allCommands.propertiesPanel]) }, _getDefaultPropertyPanelCommandGroups: function() { return this._defaultPropertyPanelCommandGroups || (this._defaultPropertyPanelCommandGroups = [{ title: _message.default.format("dxDiagram-uiStyle"), groups: [{ title: _message.default.format("dxDiagram-uiText"), commands: ["fontName", "fontSize", "bold", "italic", "underline", "textAlignLeft", "textAlignCenter", "textAlignRight", "fontColor"] }, { title: _message.default.format("dxDiagram-uiObject"), commands: ["lineStyle", "lineWidth", "lineColor", "fillColor"] }, { title: _message.default.format("dxDiagram-uiConnector"), commands: ["connectorLineType", "connectorLineStart", "connectorLineEnd"] }] }, { title: _message.default.format("dxDiagram-uiLayout"), groups: [{ title: _message.default.format("dxDiagram-uiLayoutLayered"), commands: ["layoutLayeredTopToBottom", "layoutLayeredBottomToTop", "layoutLayeredLeftToRight", "layoutLayeredRightToLeft"] }, { title: _message.default.format("dxDiagram-uiLayoutTree"), commands: ["layoutTreeTopToBottom", "layoutTreeBottomToTop", "layoutTreeLeftToRight", "layoutTreeRightToLeft"] }] }, { title: _message.default.format("dxDiagram-uiDiagram"), groups: [{ title: _message.default.format("dxDiagram-uiPage"), commands: ["pageSize", "pageOrientation", "pageColor"] }] }]) }, _preparePropertyPanelGroups: function(groups) { const allCommands = this.getAllCommands(); const result = []; groups.forEach((g => { let commands = g.commands; if (commands) { commands = this._getPreparedCommands(allCommands, commands); commands = this._prepareToolbarCommands(commands) } let subGroups; if (g.groups) { subGroups = []; g.groups.forEach((sg => { let subCommands = sg.commands; if (subCommands) { subCommands = this._getPreparedCommands(allCommands, subCommands); subCommands = this._prepareToolbarCommands(subCommands) } subGroups.push({ title: sg.title, commands: subCommands }) })) } result.push({ title: g.title, commands: commands, groups: subGroups }) })); return result }, getPropertyPanelCommandTabs: function(commandGroups) { commandGroups = commandGroups || this._getDefaultPropertyPanelCommandGroups(); return this._preparePropertyPanelGroups(commandGroups) }, getContextMenuCommands: function(commands) { const allCommands = this.getAllCommands(); const contextMenuCommands = commands ? this._getPreparedCommands(allCommands, commands) : this._getDefaultContextMenuCommands(allCommands); return this._prepareContextMenuCommands(contextMenuCommands) }, _getDefaultContextMenuCommands: function(allCommands) { return this._defaultContextMenuCommands || (this._defaultContextMenuCommands = [allCommands.cut, allCommands.copy, allCommands.paste, allCommands.delete, allCommands.separator, allCommands.selectAll, allCommands.separator, allCommands.bringToFront, allCommands.sendToBack, allCommands.separator, allCommands.lock, allCommands.unlock, allCommands.separator, allCommands.insertShapeImage, allCommands.editShapeImage, allCommands.deleteShapeImage]) }, _getPreparedCommands(allCommands, commands) { return commands.map((c => { if (c.widget && "separator" === c.widget) { const command = { command: c, location: c.location }; return command } else if (allCommands[c]) { return allCommands[c] } else if (c.text || c.icon || c.name) { const internalCommand = c.name && allCommands[c.name]; const command = { command: internalCommand && internalCommand.command, name: c.name, location: c.location, text: c.text || internalCommand && internalCommand.text, hint: c.text || internalCommand && internalCommand.hint, icon: c.icon || internalCommand && internalCommand.icon, menuIcon: c.icon || internalCommand && internalCommand.menuIcon, widget: internalCommand && internalCommand.widget, cssClass: internalCommand && internalCommand.cssClass, getParameter: internalCommand && internalCommand.getParameter, getCommandValue: internalCommand && internalCommand.getCommandValue, getEditorValue: internalCommand && internalCommand.getEditorValue, getEditorDisplayValue: internalCommand && internalCommand.getEditorDisplayValue, iconChecked: internalCommand && internalCommand.iconChecked, iconUnchecked: internalCommand && internalCommand.iconUnchecked }; if (Array.isArray(c.items)) { command.items = this._getPreparedCommands(allCommands, c.items) } else { command.items = internalCommand && internalCommand.items } return command } })).filter((c => c)) }, _prepareContextMenuCommands(commands, excludeCommands, rootCommand) { let beginGroup = false; return commands.map((c => { if (!this._isValidCommand(c, excludeCommands)) { return } if (c.widget && "separator" === c.widget) { beginGroup = true } else { const command = this._cloneCommand(c, excludeCommands); command.icon = command.menuIcon; command.beginGroup = beginGroup; command.rootCommand = !command.command ? rootCommand && rootCommand.command : void 0; beginGroup = false; return command } })).filter((c => c)) }, _prepareToolbarCommands(commands, excludeCommands) { return commands.map((c => { if (this._isValidCommand(c, excludeCommands)) { return this._cloneCommand(c, excludeCommands) } })).filter((c => c)).filter(((c, index, arr) => { if ("separator" === c.widget && index === arr.length - 1) { return false } return c })) }, _cloneCommand(c, excludeCommands) { const command = (0, _extend.extend)({}, c); if (Array.isArray(c.items)) { command.items = this._prepareContextMenuCommands(c.items, excludeCommands, command) } return command }, _isValidCommand(c, excludeCommands) { excludeCommands = excludeCommands || []; return -1 === excludeCommands.indexOf(c.command) }, _exportTo(widget, dataURI, format, mimeString) { const window = (0, _window.getWindow)(); if (window && window.atob && (0, _type.isFunction)(window.Blob)) { const blob = this._getBlobByDataURI(window, dataURI, mimeString); const options = widget.option("export"); _file_saver.fileSaver.saveAs(options.fileName || "foo", format, blob) } }, _getBlobByDataURI(window, dataURI, mimeString) { const byteString = window.atob(dataURI.split(",")[1]); const ia = new Uint8Array(byteString.length); for (let i = 0; i < byteString.length; i++) { ia[i] = byteString.charCodeAt(i) } return new window.Blob([ia.buffer], { type: mimeString }) } }; exports.default = DiagramCommandsManager; module.exports = exports.default; module.exports.default = exports.default }, 73360: /*!********************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/ui/diagram/diagram.edges_option.js ***! \********************************************************************************/ function(module, exports, __webpack_require__) { exports.default = void 0; var _diagram = (e = __webpack_require__( /*! ./diagram.items_option */ 88186), e && e.__esModule ? e : { default: e }); var e; class EdgesOption extends _diagram.default { _getKeyExpr() { return this._diagramWidget._createOptionGetter("edges.keyExpr") } } exports.default = EdgesOption; module.exports = exports.default; module.exports.default = exports.default }, 11744: /*!****************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/ui/diagram/diagram.importer.js ***! \****************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { exports.getDiagram = function() { if (!_devexpressDiagram.default) { throw _ui.default.Error("E1041", "devexpress-diagram") } return Diagram }; var _ui = (e = __webpack_require__( /*! ../widget/ui.errors */ 35185), e && e.__esModule ? e : { default: e }); var e; var _devexpressDiagram = function(e, r) { if (!r && e && e.__esModule) { return e } if (null === e || "object" != typeof e && "function" != typeof e) { return { default: e } } var t = _getRequireWildcardCache(r); if (t && t.has(e)) { return t.get(e) } var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) { if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u] } } return n.default = e, t && t.set(e, n), n }(__webpack_require__( /*! devexpress-diagram */ 36761)); var Diagram = _devexpressDiagram; function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) { return null } var r = new WeakMap, t = new WeakMap; return (_getRequireWildcardCache = function(e) { return e ? t : r })(e) } }, 88186: /*!********************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/ui/diagram/diagram.items_option.js ***! \********************************************************************************/ function(module, exports, __webpack_require__) { exports.default = void 0; var _extend = __webpack_require__( /*! ../../core/utils/extend */ 52576); var _component = __webpack_require__( /*! ../../core/component */ 17863); var _data = __webpack_require__( /*! ../../common/data */ 11036); const ItemsOptionBase = _component.Component.inherit({}).include(_data.DataHelperMixin); exports.default = class extends ItemsOptionBase { constructor(diagramWidget) { super(); this._diagramWidget = diagramWidget; this._resetCache() } _dataSourceChangedHandler(newItems, e) { this._resetCache(); this._items = newItems.map((item => (0, _extend.extend)(true, {}, item))); this._dataSourceItems = newItems.slice(); if (e && e.changes) { const internalChanges = e.changes.filter((change => change.internalChange)); const externalChanges = e.changes.filter((change => !change.internalChange)); if (internalChanges.length) { this._reloadContentByChanges(internalChanges, false) } if (externalChanges.length) { this._reloadContentByChanges(externalChanges, true) } } else { this._diagramWidget._onDataSourceChanged() } } _dataSourceLoadingChangedHandler(isLoading) { if (isLoading && !this._dataSource.isLoaded()) { this._diagramWidget._showLoadingIndicator() } else { this._diagramWidget._hideLoadingIndicator() } } _prepareData(dataObj) { for (const key in dataObj) { if (!Object.prototype.hasOwnProperty.call(dataObj, key)) { continue } if (void 0 === dataObj[key]) { dataObj[key] = null } } return dataObj } insert(data, callback, errorCallback) { this._resetCache(); const store = this._getStore(); store.insert(this._prepareData(data)).done(((data, key) => { store.push([{ type: "insert", key: key, data: data, internalChange: true }]); if (callback) { callback(data) } this._resetCache() })).fail((error => { if (errorCallback) { errorCallback(error) } this._resetCache() })) } update(key, data, callback, errorCallback) { const store = this._getStore(); const storeKey = this._getStoreKey(store, key, data); store.update(storeKey, this._prepareData(data)).done(((data, key) => { store.push([{ type: "update", key: key, data: data, internalChange: true }]); if (callback) { callback(key, data) } })).fail((error => { if (errorCallback) { errorCallback(error) } })) } remove(key, data, callback, errorCallback) { this._resetCache(); const store = this._getStore(); const storeKey = this._getStoreKey(store, key, data); store.remove(storeKey).done((key => { store.push([{ type: "remove", key: key, internalChange: true }]); if (callback) { callback(key) } this._resetCache() })).fail((error => { if (errorCallback) { errorCallback(error) } this._resetCache() })) } findItem(itemKey) { if (!this._items) { return null } return this._getItemByKey(itemKey) } getItems() { return this._items } hasItems() { return !!this._items } _reloadContentByChanges(changes, isExternalChanges) { changes = changes.map((change => (0, _extend.extend)(change, { internalKey: this._getInternalKey(change.key) }))); this._diagramWidget._reloadContentByChanges(changes, isExternalChanges) } _getItemByKey(key) { this._ensureCache(); const cache = this._cache; const index = this._getIndexByKey(key); return cache.items[index] } _getIndexByKey(key) { this._ensureCache(); const cache = this._cache; if ("object" === typeof key) { for (let i = 0, length = cache.keys.length; i < length; i++) { if (cache.keys[i] === key) { return i } } } else { const keySet = cache.keySet || cache.keys.reduce(((accumulator, key, index) => { accumulator[key] = index; return accumulator }), {}); if (!cache.keySet) { cache.keySet = keySet } return keySet[key] } return -1 } _ensureCache() { const cache = this._cache; if (!cache.keys) { cache.keys = []; cache.items = []; this._fillCache(cache, this._items) } } _fillCache(cache, items) { if (!items || !items.length) { return } const keyExpr = this._getKeyExpr(); if (keyExpr) { items.forEach((item => { cache.keys.push(keyExpr(item)); cache.items.push(item) })) } const itemsExpr = this._getItemsExpr(); if (itemsExpr) { items.forEach((item => this._fillCache(cache, itemsExpr(item)))) } const containerChildrenExpr = this._getContainerChildrenExpr(); if (containerChildrenExpr) { items.forEach((item => this._fillCache(cache, containerChildrenExpr(item)))) } } _getKeyExpr() { throw "Not Implemented" } _getItemsExpr() {} _getContainerChildrenExpr() {} _initDataSource() { super._initDataSource(); this._dataSource && this._dataSource.paginate(false) } _dataSourceOptions() { return { paginate: false } } _getStore() { return this._dataSource && this._dataSource.store() } _getStoreKey(store, internalKey, data) { let storeKey = store.keyOf(data); if (storeKey === data) { const keyExpr = this._getKeyExpr(); this._dataSourceItems.forEach((item => { if (keyExpr(item) === internalKey) { storeKey = item } })) } return storeKey } _getInternalKey(storeKey) { if ("object" === typeof storeKey) { const keyExpr = this._getKeyExpr(); return keyExpr(storeKey) } return storeKey } _resetCache() { this._cache = {} } }; module.exports = exports.default; module.exports.default = exports.default }, 96221: /*!********************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/ui/diagram/diagram.nodes_option.js ***! \********************************************************************************/ function(module, exports, __webpack_require__) { exports.default = void 0; var _diagram = (e = __webpack_require__( /*! ./diagram.items_option */ 88186), e && e.__esModule ? e : { default: e }); var e; class NodesOption extends _diagram.default { _getKeyExpr() { return this._diagramWidget._createOptionGetter("nodes.keyExpr") } _getItemsExpr() { return this._diagramWidget._createOptionGetter("nodes.itemsExpr") } _getContainerChildrenExpr() { return this._diagramWidget._createOptionGetter("nodes.containerChildrenExpr") } } exports.default = NodesOption; module.exports = exports.default; module.exports.default = exports.default }, 79892: /*!**********************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/ui/diagram/diagram.options_update.js ***! \**********************************************************************************/ function(module, exports, __webpack_require__) { exports.default = void 0; var _diagram = (e = __webpack_require__( /*! ./diagram.bar */ 35629), e && e.__esModule ? e : { default: e }); var e; var _diagram2 = __webpack_require__( /*! ./diagram.importer */ 11744); class DiagramOptionsUpdateBar extends _diagram.default { constructor(owner) { super(owner); const { DiagramCommand: DiagramCommand } = (0, _diagram2.getDiagram)(); this.commandOptions = {}; this.commandOptions[DiagramCommand.Fullscreen] = "fullScreen"; this.commandOptions[DiagramCommand.ZoomLevel] = function(value) { if ("object" === typeof this._getOption("zoomLevel")) { this._setOption("zoomLevel.value", value) } else { this._setOption("zoomLevel", value) } }; this.commandOptions[DiagramCommand.SwitchAutoZoom] = function(value) { const { AutoZoomMode: AutoZoomMode } = (0, _diagram2.getDiagram)(); switch (value) { case AutoZoomMode.FitContent: this._setOption("autoZoomMode", "fitContent"); break; case AutoZoomMode.FitToWidth: this._setOption("autoZoomMode", "fitWidth"); break; case AutoZoomMode.Disabled: this._setOption("autoZoomMode", "disabled") } }; this.commandOptions[DiagramCommand.ToggleSimpleView] = "simpleView"; this.commandOptions[DiagramCommand.ShowGrid] = "showGrid"; this.commandOptions[DiagramCommand.SnapToGrid] = "snapToGrid"; this.commandOptions[DiagramCommand.GridSize] = function(value) { if ("object" === typeof this._getOption("gridSize")) { this._setOption("gridSize.value", value) } else { this._setOption("gridSize", value) } }; this.commandOptions[DiagramCommand.ViewUnits] = "viewUnits"; this.commandOptions[DiagramCommand.PageSize] = function(value) { const pageSize = this._getOption("pageSize"); if (void 0 === pageSize || pageSize.width !== value.width || pageSize.height !== value.height) { this._setOption("pageSize", value) } }; this.commandOptions[DiagramCommand.PageLandscape] = function(value) { this._setOption("pageOrientation", value ? "landscape" : "portrait") }; this.commandOptions[DiagramCommand.ViewUnits] = function(value) { const { DiagramUnit: DiagramUnit } = (0, _diagram2.getDiagram)(); switch (value) { case DiagramUnit.In: this._setOption("viewUnits", "in"); break; case DiagramUnit.Cm: this._setOption("viewUnits", "cm"); break; case DiagramUnit.Px: this._setOption("viewUnits", "px") } }; this.commandOptions[DiagramCommand.PageColor] = "pageColor"; this._updateLock = 0 } getCommandKeys() { return Object.keys(this.commandOptions).map((function(key) { return parseInt(key) })) } setItemValue(key, value) { if (this.isUpdateLocked()) { return } this.beginUpdate(); try { if ("function" === typeof this.commandOptions[key]) { this.commandOptions[key].call(this, value) } else { this._setOption(this.commandOptions[key], value) } } finally { this.endUpdate() } } beginUpdate() { this._updateLock++ } endUpdate() { this._updateLock-- } isUpdateLocked() { return this._updateLock > 0 } _getOption(name) { return this._owner.option(name) } _setOption(name, value) { this._owner.option(name, value) } } exports.default = DiagramOptionsUpdateBar; module.exports = exports.default; module.exports.default = exports.default }, 74611: /*!***********************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/ui/diagram/diagram.toolbox_manager.js ***! \***********************************************************************************/ function(module, exports, __webpack_require__) { exports.default = void 0; var _message = (e = __webpack_require__( /*! ../../common/core/localization/message */ 4671), e && e.__esModule ? e : { default: e }); var e; const DiagramToolboxManager = { getDefaultGroups() { return this._groups || (this._groups = { general: { category: "general", title: _message.default.format("dxDiagram-categoryGeneral") }, flowchart: { category: "flowchart", title: _message.default.format("dxDiagram-categoryFlowchart") }, orgChart: { category: "orgChart", title: _message.default.format("dxDiagram-categoryOrgChart") }, containers: { category: "containers", title: _message.default.format("dxDiagram-categoryContainers") }, custom: { category: "custom", title: _message.default.format("dxDiagram-categoryCustom") } }) }, getGroups: function(groups) { const defaultGroups = this.getDefaultGroups(); if (groups) { return groups.map((function(g) { if ("string" === typeof g) { return { category: g, title: defaultGroups[g] && defaultGroups[g].title || g } } return g })).filter((function(g) { return g })) } return [defaultGroups.general, defaultGroups.flowchart, defaultGroups.orgChart, defaultGroups.containers] } }; exports.default = DiagramToolboxManager; module.exports = exports.default; module.exports.default = exports.default }, 48941: /*!***********************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/ui/diagram/ui.diagram.context_menu.js ***! \***********************************************************************************/ function(module, exports, __webpack_require__) { exports.default = void 0; var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../core/renderer */ 64553)); var _ui = _interopRequireDefault(__webpack_require__( /*! ../widget/ui.widget */ 11118)); var _context_menu = _interopRequireDefault(__webpack_require__( /*! ../context_menu */ 34378)); var _diagram = _interopRequireDefault(__webpack_require__( /*! ./diagram.commands_manager */ 43304)); var _uiDiagram = _interopRequireDefault(__webpack_require__( /*! ./ui.diagram.menu_helper */ 8708)); var _diagram2 = _interopRequireDefault(__webpack_require__( /*! ./diagram.bar */ 35629)); var _diagram3 = __webpack_require__( /*! ./diagram.importer */ 11744); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } class DiagramContextMenuWrapper extends _ui.default { _init() { super._init(); this._createOnVisibilityChangingAction(); this._createOnInternalCommand(); this._createOnCustomCommand(); this._createOnItemClickAction(); this._tempState = void 0; this._commands = []; this._commandToIndexMap = {}; this.bar = new DiagramContextMenuBar(this) } _initMarkup() { super._initMarkup(); this._commands = this._getCommands(); this._commandToIndexMap = {}; this._fillCommandToIndexMap(this._commands, []); this._$contextMenuTargetElement = (0, _renderer.default)("<div>").addClass("dx-diagram-touchbar-target").appendTo(this.$element()); const $contextMenu = (0, _renderer.default)("<div>").appendTo(this.$element()); this._contextMenuInstance = this._createComponent($contextMenu, DiagramContextMenu, { isTouchBarMode: this._isTouchBarMode(), cssClass: this._isTouchBarMode() ? "dx-diagram-touchbar" : _uiDiagram.default.getContextMenuCssClass(), hideOnOutsideClick: false, showEvent: "", focusStateEnabled: false, items: this._commands, position: this._isTouchBarMode() ? { my: { x: "center", y: "bottom" }, at: { x: "center", y: "top" }, of: this._$contextMenuTargetElement } : {}, itemTemplate: function(itemData, itemIndex, itemElement) { _uiDiagram.default.getContextMenuItemTemplate(this, itemData, itemIndex, itemElement) }, onItemClick: _ref => { let { itemData: itemData } = _ref; return this._onItemClick(itemData) }, onShowing: e => { if (true === this._inOnShowing) { return } this._inOnShowing = true; this._onVisibilityChangingAction({ visible: true, component: this }); e.component.option("items", e.component.option("items")); delete this._inOnShowing } }) } _show(x, y, selection) { this._contextMenuInstance.hide(); if (this._isTouchBarMode()) { this._$contextMenuTargetElement.show(); if (!selection) { selection = { x: x, y: y, width: 0, height: 0 } } const widthCorrection = selection.width > 800 ? 0 : (800 - selection.width) / 2; this._$contextMenuTargetElement.css({ left: selection.x - widthCorrection, top: selection.y - 32, width: selection.width + 2 * widthCorrection, height: selection.height + 64 }); this._contextMenuInstance.show() } else { this._contextMenuInstance.option("position", { offset: x + " " + y }); this._contextMenuInstance.show() } } _hide() { this._$contextMenuTargetElement.hide(); this._contextMenuInstance.hide() } _isTouchBarMode() { const { Browser: Browser } = (0, _diagram3.getDiagram)(); return Browser.TouchUI } _onItemClick(itemData) { let processed = false; if (this._onItemClickAction) { processed = this._onItemClickAction(itemData) } if (!processed) { _uiDiagram.default.onContextMenuItemClick(this, itemData, this._executeCommand.bind(this)); this._contextMenuInstance.hide() } } _executeCommand(command, name, value) { if ("number" === typeof command) { this.bar.raiseBarCommandExecuted(command, value) } else if ("string" === typeof command) { this._onInternalCommandAction({ command: command }) } if (void 0 !== name) { this._onCustomCommandAction({ name: name }) } } _createOnInternalCommand() { this._onInternalCommandAction = this._createActionByOption("onInternalCommand") } _createOnCustomCommand() { this._onCustomCommandAction = this._createActionByOption("onCustomCommand") } _getCommands() { return _diagram.default.getContextMenuCommands(this.option("commands")) } _fillCommandToIndexMap(commands, indexPath) { commands.forEach(((command, index) => { const commandIndexPath = indexPath.concat([index]); if (void 0 !== command.command) { this._commandToIndexMap[command.command] = commandIndexPath } if (Array.isArray(command.items)) { this._fillCommandToIndexMap(command.items, commandIndexPath) } })) } _setItemEnabled(key, enabled) { this._setItemVisible(key, enabled) } _setItemVisible(key, visible) { const itemOptionText = _uiDiagram.default.getItemOptionText(this._contextMenuInstance, this._commandToIndexMap[key]); _uiDiagram.default.updateContextMenuItemVisible(this._contextMenuInstance, itemOptionText, visible) } _setItemValue(key, value) { const itemOptionText = _uiDiagram.default.getItemOptionText(this._contextMenuInstance, this._commandToIndexMap[key]); _uiDiagram.default.updateContextMenuItemValue(this._contextMenuInstance, itemOptionText, key, value) } _setItemSubItems(key, items) { const itemOptionText = _uiDiagram.default.getItemOptionText(this._contextMenuInstance, this._commandToIndexMap[key]); _uiDiagram.default.updateContextMenuItems(this._contextMenuInstance, itemOptionText, key, items) } _setEnabled(enabled) { this._contextMenuInstance.option("disabled", !enabled) } isVisible() { return this._inOnShowing } _createOnVisibilityChangingAction() { this._onVisibilityChangingAction = this._createActionByOption("onVisibilityChanging") } _createOnItemClickAction() { this._onItemClickAction = this._createActionByOption("onItemClick") } _optionChanged(args) { switch (args.name) { case "onVisibilityChanging": this._createOnVisibilityChangingAction(); break; case "onInternalCommand": this._createOnInternalCommand(); break; case "onCustomCommand": this._createOnCustomCommand(); break; case "onItemClick": this._createOnItemClickAction(); break; case "commands": this._invalidate(); break; case "export": break; default: super._optionChanged(args) } } } class DiagramContextMenu extends _context_menu.default { _renderContextMenuOverlay() { super._renderContextMenuOverlay(); if (this._overlay && this.option("isTouchBarMode")) { this._overlay && this._overlay.option("onShown", (() => { const $content = (0, _renderer.default)(this._overlay.$content()); $content.parent().addClass("dx-diagram-touchbar-overlay") })) } } } class DiagramContextMenuBar extends _diagram2.default { constructor(owner) { super(owner) } getCommandKeys() { return this._getKeys(this._owner._commands) } setItemValue(key, value) { this._owner._setItemValue(key, value) } setItemEnabled(key, enabled) { this._owner._setItemEnabled(key, enabled) } setItemVisible(key, visible) { this._owner._setItemVisible(key, visible) } setItemSubItems(key, items) { this._owner._setItemSubItems(key, items) } setEnabled(enabled) { this._owner._setEnabled(enabled) } isVisible() { return this._owner.isVisible() } } exports.default = { DiagramContextMenuWrapper: DiagramContextMenuWrapper, DiagramContextMenu: DiagramContextMenu }; module.exports = exports.default; module.exports.default = exports.default }, 13815: /*!**************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/ui/diagram/ui.diagram.context_toolbox.js ***! \**************************************************************************************/ function(module, exports, __webpack_require__) { exports.default = void 0; var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../core/renderer */ 64553)); var _ui = _interopRequireDefault(__webpack_require__( /*! ../widget/ui.widget */ 11118)); var _ui2 = _interopRequireDefault(__webpack_require__( /*! ../popover/ui.popover */ 98894)); var _diagram = __webpack_require__( /*! ./diagram.importer */ 11744); var _window = __webpack_require__( /*! ../../core/utils/window */ 3104); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } class DiagramContextToolbox extends _ui.default { _init() { super._init(); this._onShownAction = this._createActionByOption("onShown"); const window = (0, _window.getWindow)(); this._popoverPositionData = [{ my: { x: "center", y: "top" }, at: { x: "center", y: "bottom" }, offset: { x: 0, y: 5 }, calcMaxHeight: rect => Math.max(150, window.innerHeight - rect.bottom - 6) }, { my: { x: "right", y: "center" }, at: { x: "left", y: "center" }, offset: { x: -5, y: 0 }, calcMaxHeight: rect => Math.max(150, 2 * Math.min(rect.top, window.innerHeight - rect.bottom) - 2) }, { my: { x: "center", y: "bottom" }, at: { x: "center", y: "top" }, offset: { x: 0, y: -5 }, calcMaxHeight: rect => Math.max(150, rect.top - 6) }, { my: { x: "left", y: "center" }, at: { x: "right", y: "center" }, offset: { x: 5, y: 0 }, calcMaxHeight: rect => Math.max(150, 2 * Math.min(rect.top, window.innerHeight - rect.bottom) - 2) }] } _initMarkup() { super._initMarkup(); this._$popoverTargetElement = (0, _renderer.default)("<div>").addClass("dx-diagram-context-toolbox-target").appendTo(this.$element()); const $popoverElement = (0, _renderer.default)("<div>").addClass("dx-diagram-context-toolbox").appendTo(this.$element()); if (this._isTouchMode()) { $popoverElement.addClass("dx-diagram-touch-context-toolbox") } this._popoverInstance = this._createComponent($popoverElement, _ui2.default, { hideOnOutsideClick: false, container: this.$element() }) } _isTouchMode() { const { Browser: Browser } = (0, _diagram.getDiagram)(); return Browser.TouchUI } _show(x, y, side, category, callback) { this._popoverInstance.hide(); this._$popoverTargetElement.css({ left: x + this._popoverPositionData[side].offset.x, top: y + this._popoverPositionData[side].offset.y }).show(); const window = (0, _window.getWindow)(); const targetDiv = this._$popoverTargetElement.get(0); this._$popoverTargetElement.css({ left: targetDiv.offsetLeft - (targetDiv.getBoundingClientRect().left + window.scrollX - targetDiv.offsetLeft), top: targetDiv.offsetTop - (targetDiv.getBoundingClientRect().top + window.scrollY - targetDiv.offsetTop) }); const posRect = targetDiv.getBoundingClientRect(); this._popoverInstance.option({ maxHeight: this._popoverPositionData[side].calcMaxHeight(posRect), width: void 0 !== this.option("toolboxWidth") ? this.option("toolboxWidth") : void 0, position: { my: this._popoverPositionData[side].my, at: this._popoverPositionData[side].at, of: this._$popoverTargetElement }, contentTemplate: () => (0, _renderer.default)("<div>").append((0, _renderer.default)("<div>").addClass("dx-diagram-context-toolbox-content")).dxScrollView({ width: "100%", height: "100%" }), onContentReady: () => { const $element = this.$element().find(".dx-diagram-context-toolbox-content"); this._onShownAction({ category: category, callback: callback, $element: $element, hide: () => this._popoverInstance.hide() }) } }); this._popoverInstance.show() } _hide() { this._$popoverTargetElement.hide(); this._popoverInstance.hide() } } exports.default = DiagramContextToolbox; module.exports = exports.default; module.exports.default = exports.default }, 57846: /*!*************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/ui/diagram/ui.diagram.dialog_manager.js ***! \*************************************************************************************/ function(module, exports, __webpack_require__) { exports.default = void 0; var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../core/renderer */ 64553)); var _diagram = __webpack_require__( /*! ./diagram.importer */ 11744); var _message = _interopRequireDefault(__webpack_require__( /*! ../../common/core/localization/message */ 4671)); var _file_uploader = _interopRequireDefault(__webpack_require__( /*! ../file_uploader */ 26980)); var _window = __webpack_require__( /*! ../../core/utils/window */ 3104); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } const DiagramDialogManager = { getConfigurations: function() { const { DiagramCommand: DiagramCommand } = (0, _diagram.getDiagram)(); return this.dialogList || (this.dialogList = [{ command: DiagramCommand.InsertShapeImage, title: _message.default.format("dxDiagram-dialogInsertShapeImageTitle"), onGetContent: this.getChangeImageDialogContent }, { command: DiagramCommand.EditShapeImage, title: _message.default.format("dxDiagram-dialogEditShapeImageTitle"), onGetContent: this.getChangeImageDialogContent }]) }, getChangeImageDialogContent: function(args) { const $uploader = (0, _renderer.default)("<div>"); args.component._createComponent($uploader, _file_uploader.default, { selectButtonText: _message.default.format("dxDiagram-dialogEditShapeImageSelectButton"), accept: "image/*", uploadMode: "useForm", onValueChanged: function(e) { const window = (0, _window.getWindow)(); const reader = new window.FileReader; reader.onload = function(e) { args.component._commandParameter = e.target.result }; reader.readAsDataURL(e.value[0]) } }); return $uploader }, getDialogParameters(command) { const commandIndex = this.getConfigurations().map((c => c.command)).indexOf(command); if (commandIndex >= 0) { return this.getConfigurations()[commandIndex] } else { return null } } }; exports.default = DiagramDialogManager; module.exports = exports.default; module.exports.default = exports.default }, 55485: /*!******************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/ui/diagram/ui.diagram.dialogs.js ***! \******************************************************************************/ function(module, exports, __webpack_require__) { exports.default = void 0; var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../core/renderer */ 64553)); var _ui = _interopRequireDefault(__webpack_require__( /*! ../widget/ui.widget */ 11118)); var _message = _interopRequireDefault(__webpack_require__( /*! ../../common/core/localization/message */ 4671)); var _ui2 = _interopRequireDefault(__webpack_require__( /*! ../popup/ui.popup */ 10720)); var _extend = __webpack_require__( /*! ../../core/utils/extend */ 52576); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } class DiagramDialog extends _ui.default { _init() { super._init(); this._command = void 0; this._isShown = false; this._createOnGetContentOption(); this._createOnHiddenOption() } _initMarkup() { super._initMarkup(); this._command = this.option("command"); this._$popupElement = (0, _renderer.default)("<div>").appendTo(this.$element()); this._popup = this._createComponent(this._$popupElement, _ui2.default, { title: this.option("title"), maxWidth: this.option("maxWidth"), height: this.option("height"), toolbarItems: this.option("toolbarItems"), onHidden: this._onHiddenAction }) } _clean() { delete this._popup; this._$popupElement && this._$popupElement.remove() } _getDefaultOptions() { return (0, _extend.extend)(super._getDefaultOptions(), { title: "", maxWidth: 500, height: "auto", toolbarItems: this._getToolbarItems() }) } _getToolbarItems() { return [this._getOkToolbarItem(), this._getCancelToolbarItem()] } _getOkToolbarItem() { return { widget: "dxButton", location: "after", toolbar: "bottom", options: { text: _message.default.format("dxDiagram-dialogButtonOK"), onClick: function() { this._command.execute(this._commandParameter); this._hide() }.bind(this) } } } _getCancelToolbarItem() { return { widget: "dxButton", location: "after", toolbar: "bottom", options: { text: _message.default.format("dxDiagram-dialogButtonCancel"), onClick: this._hide.bind(this) } } } _optionChanged(args) { switch (args.name) { case "title": case "maxWidth": case "height": case "toolbarItems": this._popup.option(args.name, args.value); break; case "command": this._command = args.value; break; case "onGetContent": this._createOnGetContentOption(); break; case "onHidden": this._createOnHiddenOption(); break; default: super._optionChanged(args) } } _createOnGetContentOption() { this._onGetContentAction = this._createActionByOption("onGetContent") } _createOnHiddenOption() { this._onHiddenAction = this._createActionByOption("onHidden") } _hide() { this._popup.hide(); this._isShown = false } _show() { this._popup.$content().empty().append(this._onGetContentAction()); this._popup.show(); this._isShown = true } isVisible() { return this._isShown } } exports.default = DiagramDialog; module.exports = exports.default; module.exports.default = exports.default }, 80209: /*!*************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/ui/diagram/ui.diagram.floating_panel.js ***! \*************************************************************************************/ function(module, exports, __webpack_require__) { exports.default = void 0; var _size = __webpack_require__( /*! ../../core/utils/size */ 57653); var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../core/renderer */ 64553)); var _extend = __webpack_require__( /*! ../../core/utils/extend */ 52576); var _window = __webpack_require__( /*! ../../core/utils/window */ 3104); var _ui = _interopRequireDefault(__webpack_require__( /*! ../popup/ui.popup */ 10720)); var _uiDiagram = _interopRequireDefault(__webpack_require__( /*! ./ui.diagram.panel */ 29738)); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } class DiagramFloatingPanel extends _uiDiagram.default { _init() { super._init(); this._createOnVisibilityChangingAction(); this._createOnVisibilityChangedAction() } isVisible() { return this.option("isVisible") } isMobileView() { return this.option("isMobileView") } _initMarkup() { super._initMarkup(); const $parent = this.$element(); const $popupElement = (0, _renderer.default)("<div>").addClass(this._getPopupClass()).addClass(this.isMobileView() && "dx-diagram-mobile-popup").appendTo($parent); this._popup = this._createComponent($popupElement, _ui.default, this._getPopupOptions()); this._updatePopupVisible() } show() { this.option("isVisible", true) } hide() { this.option("isVisible", false) } toggle() { this.option("isVisible", !this.isVisible()) } repaint() { this._popup.repaint() } _getPopupContent() { return this._popup.content() } _getPopupTitle() { const $content = (0, _renderer.default)(this._getPopupContent()); return $content.parent().find(".dx-popup-title") } _getPointerUpElements() { return [this._getPopupContent(), this._getPopupTitle()] } _getVerticalPaddingsAndBorders() { const $content = (0, _renderer.default)(this._getPopupContent()); return (0, _size.getOuterHeight)($content) - (0, _size.getHeight)($content) } _getHorizontalPaddingsAndBorders() { const $content = (0, _renderer.default)(this._getPopupContent()); return (0, _size.getOuterWidth)($content) - (0, _size.getWidth)($content) } _getPopupClass() { return "" } _getPopupWidth() { return this.option("width") || "auto" } _getPopupMaxWidth() { return this.option("maxWidth") } _getPopupMinWidth() { return this.option("minWidth") } _getPopupHeight() { return this.option("height") || "auto" } _getPopupMaxHeight() { return this.option("maxHeight") } _getPopupMinHeight() { return this.option("minHeight") } _getPopupPosition() { return {} } _getPopupContainer() { return this.option("container") } _getPopupSlideAnimationObject(properties) { return (0, _extend.extend)({ type: "slide", start: () => { (0, _renderer.default)("body").css("overflow", "hidden") }, complete: () => { (0, _renderer.default)("body").css("overflow", "") } }, properties) } _getPopupAnimation() { return { hide: { type: "fadeOut" }, show: { type: "fadeIn" } } } _getPopupOptions() { const that = this; let wrapperClass = this._getPopupClass(); if (this.isMobileView()) { wrapperClass += " dx-diagram-mobile-popup" } return { animation: (0, _window.hasWindow)() ? this._getPopupAnimation() : null, shading: false, showTitle: false, focusStateEnabled: false, container: this._getPopupContainer(), width: this._getPopupWidth(), height: this._getPopupHeight(), maxWidth: this._getPopupMaxWidth(), maxHeight: this._getPopupMaxHeight(), minWidth: this._getPopupMinWidth(), minHeight: this._getPopupMinHeight(), position: this._getPopupPosition(), showCloseButton: true, wrapperAttr: { class: wrapperClass }, onContentReady: function() { that._renderPopupContent(that._popup.content()) }, onShowing: () => { this._onVisibilityChangingAction({ visible: true, component: this }) }, onShown: () => { this.option("isVisible", true); this._onVisibilityChangedAction({ visible: true, component: this }) }, onHiding: () => { this._onVisibilityChangingAction({ visible: false, component: this }) }, onHidden: () => { this.option("isVisible", false); this._onVisibilityChangedAction({ visible: false, component: this }) } } } _renderPopupContent($parent) {} _updatePopupVisible() { this._popup.option("visible", this.isVisible()) } _createOnVisibilityChangingAction() { this._onVisibilityChangingAction = this._createActionByOption("onVisibilityChanging") } _createOnVisibilityChangedAction() { this._onVisibilityChangedAction = this._createActionByOption("onVisibilityChanged") } _optionChanged(args) { switch (args.name) { case "onVisibilityChanging": this._createOnVisibilityChangingAction(); break; case "onVisibilityChanged": this._createOnVisibilityChangedAction(); break; case "container": this._popup.option("container", this._getPopupContainer()); break; case "width": this._popup.option("width", this._getPopupWidth()); break; case "height": this._popup.option("height", this._getPopupHeight()); break; case "maxWidth": this._popup.option("maxWidth", this._getPopupMaxWidth()); break; case "maxHeight": this._popup.option("maxHeight", this._getPopupMaxHeight()); break; case "minWidth": this._popup.option("minWidth", this._getPopupMinWidth()); break; case "minHeight": this._popup.option("minHeight", this._getPopupMinHeight()); break; case "isMobileView": this._invalidate(); break; case "isVisible": this._updatePopupVisible(); break; default: super._optionChanged(args) } } _getDefaultOptions() { return (0, _extend.extend)(super._getDefaultOptions(), { isVisible: true, isMobileView: false, offsetX: 0, offsetY: 0 }) } } exports.default = DiagramFloatingPanel; module.exports = exports.default; module.exports.default = exports.default }, 98580: /*!**************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/ui/diagram/ui.diagram.history_toolbar.js ***! \**************************************************************************************/ function(module, exports, __webpack_require__) { exports.default = void 0; var _uiDiagram = _interopRequireDefault(__webpack_require__( /*! ./ui.diagram.toolbar */ 29339)); var _diagram = _interopRequireDefault(__webpack_require__( /*! ./diagram.commands_manager */ 43304)); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } class DiagramHistoryToolbar extends _uiDiagram.default { _getCommands() { return _diagram.default.getHistoryToolbarCommands(this.option("commands"), this._getExcludeCommands()) } _getExcludeCommands() { const commands = [].concat(this.option("excludeCommands")); if (!this.option("isMobileView")) { commands.push(_diagram.default.SHOW_TOOLBOX_COMMAND_NAME) } return commands } } exports.default = DiagramHistoryToolbar; module.exports = exports.default; module.exports.default = exports.default }, 14006: /*!**********************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/ui/diagram/ui.diagram.js ***! \**********************************************************************/ function(module, exports, __webpack_require__) { exports.default = void 0; var _size = __webpack_require__( /*! ../../core/utils/size */ 57653); var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../core/renderer */ 64553)); var _ui = _interopRequireDefault(__webpack_require__( /*! ../widget/ui.widget */ 11118)); var _load_indicator = _interopRequireDefault(__webpack_require__( /*! ../load_indicator */ 11979)); var _component_registrator = _interopRequireDefault(__webpack_require__( /*! ../../core/component_registrator */ 92848)); var _extend = __webpack_require__( /*! ../../core/utils/extend */ 52576); var _type = __webpack_require__( /*! ../../core/utils/type */ 11528); var _data = __webpack_require__( /*! ../../core/utils/data */ 31e3); var _position = _interopRequireDefault(__webpack_require__( /*! ../../common/core/animation/position */ 3030)); var _diagram = __webpack_require__( /*! ./diagram.importer */ 11744); var _window = __webpack_require__( /*! ../../core/utils/window */ 3104); var _element = __webpack_require__( /*! ../../core/element */ 61404); var _events_engine = _interopRequireDefault(__webpack_require__( /*! ../../common/core/events/core/events_engine */ 92774)); var _index = __webpack_require__( /*! ../../common/core/events/utils/index */ 98834); var _message = _interopRequireDefault(__webpack_require__( /*! ../../common/core/localization/message */ 4671)); var _number = _interopRequireDefault(__webpack_require__( /*! ../../common/core/localization/number */ 52771)); var zIndexPool = function(e, r) { if (!r && e && e.__esModule) { return e } if (null === e || "object" != typeof e && "function" != typeof e) { return { default: e } } var t = _getRequireWildcardCache(r); if (t && t.has(e)) { return t.get(e) } var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) { if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u] } } return n.default = e, t && t.set(e, n), n }(__webpack_require__( /*! ../../__internal/ui/overlay/m_z_index */ 84893)); var _ui2 = _interopRequireDefault(__webpack_require__( /*! ../overlay/ui.overlay */ 89132)); var _uiDiagram = _interopRequireDefault(__webpack_require__( /*! ./ui.diagram.toolbar */ 29339)); var _uiDiagram2 = _interopRequireDefault(__webpack_require__( /*! ./ui.diagram.main_toolbar */ 41499)); var _uiDiagram3 = _interopRequireDefault(__webpack_require__( /*! ./ui.diagram.history_toolbar */ 98580)); var _uiDiagram4 = _interopRequireDefault(__webpack_require__( /*! ./ui.diagram.view_toolbar */ 89771)); var _uiDiagram5 = _interopRequireDefault(__webpack_require__( /*! ./ui.diagram.properties_toolbar */ 81567)); var _uiDiagram6 = _interopRequireDefault(__webpack_require__( /*! ./ui.diagram.context_menu */ 48941)); var _uiDiagram7 = _interopRequireDefault(__webpack_require__( /*! ./ui.diagram.context_toolbox */ 13815)); var _uiDiagram8 = _interopRequireDefault(__webpack_require__( /*! ./ui.diagram.dialogs */ 55485)); var _uiDiagram9 = _interopRequireDefault(__webpack_require__( /*! ./ui.diagram.scroll_view */ 4559)); var _diagram2 = _interopRequireDefault(__webpack_require__( /*! ./diagram.toolbox_manager */ 74611)); var _uiDiagram10 = _interopRequireDefault(__webpack_require__( /*! ./ui.diagram.toolbox */ 50427)); var _uiDiagram11 = _interopRequireDefault(__webpack_require__( /*! ./ui.diagram.properties_panel */ 27574)); var _diagram3 = _interopRequireDefault(__webpack_require__( /*! ./diagram.options_update */ 79892)); var _uiDiagram12 = _interopRequireDefault(__webpack_require__( /*! ./ui.diagram.dialog_manager */ 57846)); var _diagram4 = _interopRequireDefault(__webpack_require__( /*! ./diagram.commands_manager */ 43304)); var _diagram5 = _interopRequireDefault(__webpack_require__( /*! ./diagram.nodes_option */ 96221)); var _diagram6 = _interopRequireDefault(__webpack_require__( /*! ./diagram.edges_option */ 73360)); function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) { return null } var r = new WeakMap, t = new WeakMap; return (_getRequireWildcardCache = function(e) { return e ? t : r })(e) } function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } const FULLSCREEN_CHANGE_EVENT_NAME = (0, _index.addNamespace)("fullscreenchange", "dxDiagramEvent"); const IE_FULLSCREEN_CHANGE_EVENT_NAME = (0, _index.addNamespace)("msfullscreenchange", "dxDiagramEvent"); const WEBKIT_FULLSCREEN_CHANGE_EVENT_NAME = (0, _index.addNamespace)("webkitfullscreenchange", "dxDiagramEvent"); const MOZ_FULLSCREEN_CHANGE_EVENT_NAME = (0, _index.addNamespace)("mozfullscreenchange", "dxDiagramEvent"); class Diagram extends _ui.default { _init() { this._updateDiagramLockCount = 0; this.toggleFullscreenLock = 0; this._toolbars = []; super._init(); this._initDiagram(); this._createCustomCommand() } _initMarkup() { super._initMarkup(); this._toolbars = []; delete this._isMobileScreenSize; const isServerSide = !(0, _window.hasWindow)(); this.$element().addClass("dx-diagram"); delete this._mainToolbar; if (this.option("mainToolbar.visible")) { this._renderMainToolbar() } const $contentWrapper = (0, _renderer.default)("<div>").addClass("dx-diagram-content-wrapper").appendTo(this.$element()); delete this._historyToolbar; delete this._historyToolbarResizeCallback; if (this._isHistoryToolbarVisible()) { this._renderHistoryToolbar($contentWrapper) } delete this._propertiesToolbar; delete this._propertiesToolbarResizeCallback; if (this._isPropertiesPanelEnabled()) { this._renderPropertiesToolbar($contentWrapper) } delete this._viewToolbar; delete this._viewToolbarResizeCallback; if (this.option("viewToolbar.visible")) { this._renderViewToolbar($contentWrapper) } delete this._toolbox; delete this._toolboxResizeCallback; if (this._isToolboxEnabled()) { this._renderToolbox($contentWrapper) } delete this._propertiesPanel; delete this._propertiesPanelResizeCallback; if (this._isPropertiesPanelEnabled()) { this._renderPropertiesPanel($contentWrapper) } this._$content = (0, _renderer.default)("<div>").addClass("dx-diagram-content").appendTo($contentWrapper); delete this._contextMenu; this._diagramInstance.settings.contextMenuEnabled = this.option("contextMenu.enabled"); if (this._diagramInstance.settings.contextMenuEnabled) { this._renderContextMenu($contentWrapper) } delete this._contextToolbox; if (this.option("contextToolbox.enabled")) { this._renderContextToolbox($contentWrapper) } this._renderDialog($contentWrapper); if (!isServerSide) { const $scrollViewWrapper = (0, _renderer.default)("<div>").addClass("dx-diagram-scroll-view").appendTo(this._$content); this._createComponent($scrollViewWrapper, _uiDiagram9.default, { useNativeScrolling: this.option("useNativeScrolling"), onCreateDiagram: e => { this._diagramInstance.createDocument(e.$parent[0], e.scrollView, $contentWrapper[0]) } }) } this._setCustomCommandChecked(_diagram4.default.SHOW_PROPERTIES_PANEL_COMMAND_NAME, this._isPropertiesPanelVisible()); this._setCustomCommandChecked(_diagram4.default.SHOW_TOOLBOX_COMMAND_NAME, this._isToolboxVisible()); this._createOptionsUpdateBar() } _dimensionChanged() { this._isMobileScreenSize = void 0; this._processDiagramResize() } _visibilityChanged(visible) { if (visible) { this._bindDiagramData(); this.repaint() } } _processDiagramResize() { this._diagramInstance.onDimensionChanged(); if (this._historyToolbarResizeCallback) { this._historyToolbarResizeCallback.call(this) } if (this._propertiesToolbarResizeCallback) { this._propertiesToolbarResizeCallback.call(this) } if (this._propertiesPanelResizeCallback) { this._propertiesPanelResizeCallback.call(this) } if (this._viewToolbarResizeCallback) { this._viewToolbarResizeCallback.call(this) } if (this._toolboxResizeCallback) { this._toolboxResizeCallback.call(this) } } isMobileScreenSize() { if (void 0 === this._isMobileScreenSize) { this._isMobileScreenSize = (0, _window.hasWindow)() && (0, _size.getOuterWidth)(this.$element()) < 576 } return this._isMobileScreenSize } _captureFocus() { if (this._diagramInstance) { this._diagramInstance.captureFocus() } } _captureFocusOnTimeout() { this._captureFocusTimeout = setTimeout((() => { this._captureFocus(); delete this._captureFocusTimeout }), 100) } _killCaptureFocusTimeout() { if (this._captureFocusTimeout) { clearTimeout(this._captureFocusTimeout); delete this._captureFocusTimeout } } notifyBarCommandExecuted() { this._captureFocusOnTimeout() } _registerToolbar(component) { this._registerBar(component); this._toolbars.push(component) } _registerBar(component) { component.bar.onChanged.add(this); this._diagramInstance.registerBar(component.bar) } _getExcludeCommands() { const excludeCommands = []; if (!this._isToolboxEnabled()) { excludeCommands.push(_diagram4.default.SHOW_TOOLBOX_COMMAND_NAME) } if (!this._isPropertiesPanelEnabled()) { excludeCommands.push(_diagram4.default.SHOW_PROPERTIES_PANEL_COMMAND_NAME) } return excludeCommands } _getToolbarBaseOptions() { return { onContentReady: _ref => { let { component: component } = _ref; return this._registerToolbar(component) }, onSubMenuVisibilityChanging: _ref2 => { let { component: component } = _ref2; return this._diagramInstance.updateBarItemsState(component.bar) }, onPointerUp: this._onPanelPointerUp.bind(this), export: this.option("export"), excludeCommands: this._getExcludeCommands(), onInternalCommand: this._onInternalCommand.bind(this), onCustomCommand: this._onCustomCommand.bind(this), isMobileView: this.isMobileScreenSize() } } _onInternalCommand(e) { switch (e.command) { case _diagram4.default.SHOW_TOOLBOX_COMMAND_NAME: if (this._toolbox) { this._toolbox.toggle() } break; case _diagram4.default.SHOW_PROPERTIES_PANEL_COMMAND_NAME: if (this._propertiesPanel) { this._propertiesPanel.toggle() } } } _onCustomCommand(e) { this._customCommandAction({ name: e.name }) } _renderMainToolbar() { const $toolbarWrapper = (0, _renderer.default)("<div>").addClass("dx-diagram-toolbar-wrapper").appendTo(this.$element()); this._mainToolbar = this._createComponent($toolbarWrapper, _uiDiagram2.default, (0, _extend.extend)(this._getToolbarBaseOptions(), { commands: this.option("mainToolbar.commands"), skipAdjustSize: true })) } _isHistoryToolbarVisible() { return this.option("historyToolbar.visible") && !this.isReadOnlyMode() } _renderHistoryToolbar($parent) { const $container = (0, _renderer.default)("<div>").addClass("dx-diagram-floating-toolbar-container").appendTo($parent); this._historyToolbar = this._createComponent($container, _uiDiagram3.default, (0, _extend.extend)(this._getToolbarBaseOptions(), { commands: this.option("historyToolbar.commands"), locateInMenu: "never" })); this._updateHistoryToolbarPosition(); this._historyToolbarResizeCallback = () => { this._historyToolbar.option("isMobileView", this.isMobileScreenSize()) } } _updateHistoryToolbarPosition() { if (!(0, _window.hasWindow)()) { return } _position.default.setup(this._historyToolbar.$element(), { my: "left top", at: "left top", of: this._historyToolbar.$element().parent(), offset: "12 12" }) } _isToolboxEnabled() { return "disabled" !== this.option("toolbox.visibility") && !this.isReadOnlyMode() } _isToolboxVisible() { return "visible" === this.option("toolbox.visibility") || "auto" === this.option("toolbox.visibility") && !this.isMobileScreenSize() } _renderToolbox($parent) { const isServerSide = !(0, _window.hasWindow)(); const $toolBox = (0, _renderer.default)("<div>").appendTo($parent); const bounds = this._getToolboxBounds($parent, isServerSide); this._toolbox = this._createComponent($toolBox, _uiDiagram10.default, { isMobileView: this.isMobileScreenSize(), isVisible: this._isToolboxVisible(), container: this.$element(), height: bounds.height, offsetParent: $parent, offsetX: bounds.offsetX, offsetY: bounds.offsetY, showSearch: this.option("toolbox.showSearch"), toolboxGroups: this._getToolboxGroups(), toolboxWidth: this.option("toolbox.width"), onShapeCategoryRendered: e => { if (isServerSide) { return } this._diagramInstance.createToolbox(e.$element[0], "texts" === e.displayMode, e.shapes || e.category, { shapeIconSpacing: 12, shapeIconCountInRow: this.option("toolbox.shapeIconsPerRow"), shapeIconAttributes: { "data-toggle": e.dataToggle } }) }, onFilterChanged: e => { if (isServerSide) { return } this._diagramInstance.applyToolboxFilter(e.text, e.filteringToolboxes) }, onVisibilityChanging: e => { if (isServerSide) { return } this._setCustomCommandChecked(_diagram4.default.SHOW_TOOLBOX_COMMAND_NAME, e.visible); if (this._propertiesPanel) { if (e.visible && this.isMobileScreenSize()) { this._propertiesPanel.hide() } } if (this._historyToolbar) { if (e.visible && this.isMobileScreenSize()) { this._historyToolbarZIndex = zIndexPool.create(_ui2.default.baseZIndex()); this._historyToolbar.$element().css("zIndex", this._historyToolbarZIndex); this._historyToolbar.$element().css("boxShadow", "none") } } if (this._viewToolbar) { this._viewToolbar.$element().css("opacity", e.visible && this.isMobileScreenSize() ? "0" : "1"); this._viewToolbar.$element().css("pointerEvents", e.visible && this.isMobileScreenSize() ? "none" : "") } }, onVisibilityChanged: e => { if (!e.visible && !this._textInputStarted) { this._captureFocus() } if (!isServerSide) { if (this._historyToolbar) { if (!e.visible && this.isMobileScreenSize() && this._historyToolbarZIndex) { zIndexPool.remove(this._historyToolbarZIndex); this._historyToolbar.$element().css("zIndex", ""); this._historyToolbar.$element().css("boxShadow", ""); this._historyToolbarZIndex = void 0 } } } }, onPointerUp: this._onPanelPointerUp.bind(this) }); this._toolbox._popup.option("propagateOutsideClick", !this.option("fullScreen")); this._toolboxResizeCallback = () => { const bounds = this._getToolboxBounds($parent, isServerSide); this._toolbox.option("height", bounds.height); const prevIsMobileView = this._toolbox.option("isMobileView"); if (prevIsMobileView !== this.isMobileScreenSize()) { this._toolbox.option({ isMobileView: this.isMobileScreenSize(), isVisible: this._isToolboxVisible() }); this._setCustomCommandChecked(_diagram4.default.SHOW_TOOLBOX_COMMAND_NAME, this._isToolboxVisible()) } this._toolbox.updateMaxHeight() } } _getToolboxBounds($parent, isServerSide) { const result = { offsetX: 12, offsetY: 12, height: !isServerSide ? (0, _size.getHeight)($parent) - 24 : 0 }; if (this._historyToolbar && !isServerSide) { result.offsetY += (0, _size.getOuterHeight)(this._historyToolbar.$element()) + 12; result.height -= (0, _size.getOuterHeight)(this._historyToolbar.$element()) + 12 } if (this._viewToolbar && !isServerSide) { result.height -= (0, _size.getOuterHeight)(this._viewToolbar.$element()) + this._getViewToolbarYOffset(isServerSide) } return result } _renderViewToolbar($parent) { const isServerSide = !(0, _window.hasWindow)(); const $container = (0, _renderer.default)("<div>").addClass("dx-diagram-floating-toolbar-container").appendTo($parent); this._viewToolbar = this._createComponent($container, _uiDiagram4.default, (0, _extend.extend)(this._getToolbarBaseOptions(), { commands: this.option("viewToolbar.commands"), locateInMenu: "never" })); this._updateViewToolbarPosition($container, $parent, isServerSide); this._viewToolbarResizeCallback = () => { this._updateViewToolbarPosition($container, $parent, isServerSide) } } _getViewToolbarYOffset(isServerSide) { if (isServerSide) { return } let result = 12; if (this._viewToolbar && this._propertiesToolbar) { result += ((0, _size.getOuterHeight)(this._propertiesToolbar.$element()) - (0, _size.getOuterHeight)(this._viewToolbar.$element())) / 2 } return result } _updateViewToolbarPosition($container, $parent, isServerSide) { if (isServerSide) { return } _position.default.setup($container, { my: "left bottom", at: "left bottom", of: $parent, offset: "12 -" + this._getViewToolbarYOffset(isServerSide) }) } _isPropertiesPanelEnabled() { return "disabled" !== this.option("propertiesPanel.visibility") && !this.isReadOnlyMode() } _isPropertiesPanelVisible() { return "visible" === this.option("propertiesPanel.visibility") } _renderPropertiesToolbar($parent) { const isServerSide = !(0, _window.hasWindow)(); const $container = (0, _renderer.default)("<div>").addClass("dx-diagram-floating-toolbar-container").addClass("dx-diagram-properties-panel-toolbar-container").appendTo($parent); this._propertiesToolbar = this._createComponent($container, _uiDiagram5.default, (0, _extend.extend)(this._getToolbarBaseOptions(), { buttonStylingMode: "contained", buttonType: "default", locateInMenu: "never" })); this._updatePropertiesToolbarPosition($container, $parent, isServerSide); this._propertiesToolbarResizeCallback = () => { this._updatePropertiesToolbarPosition($container, $parent, isServerSide) } } _updatePropertiesToolbarPosition($container, $parent, isServerSide) { if (isServerSide) { return } _position.default.setup($container, { my: "right bottom", at: "right bottom", of: $parent, offset: "-12 -12" }) } _renderPropertiesPanel($parent) { const isServerSide = !(0, _window.hasWindow)(); const $propertiesPanel = (0, _renderer.default)("<div>").appendTo($parent); const offsetY = 24 + (!isServerSide ? (0, _size.getOuterHeight)(this._propertiesToolbar.$element()) : 0); this._propertiesPanel = this._createComponent($propertiesPanel, _uiDiagram11.default, { isMobileView: this.isMobileScreenSize(), isVisible: this._isPropertiesPanelVisible(), container: this.$element(), offsetParent: $parent, offsetX: 12, offsetY: offsetY, propertyTabs: this.option("propertiesPanel.tabs"), onCreateToolbar: e => { e.toolbar = this._createComponent(e.$parent, _uiDiagram.default, (0, _extend.extend)(this._getToolbarBaseOptions(), { commands: e.commands, locateInMenu: "never", editorStylingMode: "outlined" })) }, onVisibilityChanging: e => { if (isServerSide) { return } this._updatePropertiesPanelGroupBars(e.component); this._setCustomCommandChecked(_diagram4.default.SHOW_PROPERTIES_PANEL_COMMAND_NAME, e.visible); if (this._toolbox) { if (e.visible && this.isMobileScreenSize()) { this._toolbox.hide() } } }, onVisibilityChanged: e => { if (!e.visible && !this._textInputStarted) { this._captureFocus() } }, onSelectedGroupChanged: _ref3 => { let { component: component } = _ref3; return this._updatePropertiesPanelGroupBars(component) }, onPointerUp: this._onPanelPointerUp.bind(this) }); this._propertiesPanelResizeCallback = () => { const prevIsMobileView = this._propertiesPanel.option("isMobileView"); if (prevIsMobileView !== this.isMobileScreenSize()) { this._propertiesPanel.option({ isMobileView: this.isMobileScreenSize(), isVisible: this._isPropertiesPanelVisible() }); this._setCustomCommandChecked(_diagram4.default.SHOW_PROPERTIES_PANEL_COMMAND_NAME, this._isPropertiesPanelVisible()) } } } _updatePropertiesPanelGroupBars(component) { component.getActiveToolbars().forEach((toolbar => { this._diagramInstance.updateBarItemsState(toolbar.bar) })) } _onPanelPointerUp() { this._captureFocusOnTimeout() } _renderContextMenu($parent) { const $contextMenu = (0, _renderer.default)("<div>").appendTo($parent); this._contextMenu = this._createComponent($contextMenu, _uiDiagram6.default.DiagramContextMenuWrapper, { commands: this.option("contextMenu.commands"), onContentReady: _ref4 => { let { component: component } = _ref4; return this._registerBar(component) }, onVisibilityChanging: _ref5 => { let { component: component } = _ref5; return this._diagramInstance.updateBarItemsState(component.bar) }, onItemClick: itemData => this._onBeforeCommandExecuted(itemData.command), export: this.option("export"), excludeCommands: this._getExcludeCommands(), onInternalCommand: this._onInternalCommand.bind(this), onCustomCommand: this._onCustomCommand.bind(this) }) } _renderContextToolbox($parent) { const isServerSide = !(0, _window.hasWindow)(); const category = this.option("contextToolbox.category"); const displayMode = this.option("contextToolbox.displayMode"); const shapes = this.option("contextToolbox.shapes"); const $contextToolbox = (0, _renderer.default)("<div>").appendTo($parent); this._contextToolbox = this._createComponent($contextToolbox, _uiDiagram7.default, { toolboxWidth: this.option("contextToolbox.width"), onShown: e => { if (isServerSide) { return } const $toolboxContainer = (0, _renderer.default)(e.$element); let isTextGroup = "texts" === displayMode; if (!shapes && !category && !isTextGroup) { const group = this._getToolboxGroups().filter((function(g) { return g.category === e.category }))[0]; if (group) { isTextGroup = "texts" === group.displayMode } } this._diagramInstance.createContextToolbox($toolboxContainer[0], isTextGroup, shapes || category || e.category, { shapeIconSpacing: 12, shapeIconCountInRow: this.option("contextToolbox.shapeIconsPerRow") }, (shapeType => { e.callback(shapeType); this._captureFocus(); e.hide() })) } }) } _setCustomCommandChecked(command, checked) { this._toolbars.forEach((tb => { tb.setCommandChecked(command, checked) })) } _onBeforeCommandExecuted(command) { const dialogParameters = _uiDiagram12.default.getDialogParameters(command); if (dialogParameters) { this._showDialog(dialogParameters) } return !!dialogParameters } _renderDialog($parent) { const $dialogElement = (0, _renderer.default)("<div>").appendTo($parent); this._dialogInstance = this._createComponent($dialogElement, _uiDiagram8.default, {}) } _showDialog(dialogParameters) { if (this._dialogInstance) { this._dialogInstance.option("onGetContent", dialogParameters.onGetContent); this._dialogInstance.option("onHidden", function() { this._captureFocus() }.bind(this)); this._dialogInstance.option("command", this._diagramInstance.getCommand(dialogParameters.command)); this._dialogInstance.option("title", dialogParameters.title); this._dialogInstance._show() } } _showLoadingIndicator() { this._loadingIndicator = (0, _renderer.default)("<div>").addClass("dx-diagram-loading-indicator"); this._createComponent(this._loadingIndicator, _load_indicator.default, {}); const $parent = this._$content || this.$element(); $parent.append(this._loadingIndicator) } _hideLoadingIndicator() { if (!this._loadingIndicator) { return } this._loadingIndicator.remove(); this._loadingIndicator = null } _initDiagram() { const { DiagramControl: DiagramControl } = (0, _diagram.getDiagram)(); this._diagramInstance = new DiagramControl; this._diagramInstance.onChanged = this._raiseDataChangeAction.bind(this); this._diagramInstance.onEdgeInserted = this._raiseEdgeInsertedAction.bind(this); this._diagramInstance.onEdgeUpdated = this._raiseEdgeUpdatedAction.bind(this); this._diagramInstance.onEdgeRemoved = this._raiseEdgeRemovedAction.bind(this); this._diagramInstance.onNodeInserted = this._raiseNodeInsertedAction.bind(this); this._diagramInstance.onNodeUpdated = this._raiseNodeUpdatedAction.bind(this); this._diagramInstance.onNodeRemoved = this._raiseNodeRemovedAction.bind(this); this._diagramInstance.onToolboxDragStart = this._raiseToolboxDragStart.bind(this); this._diagramInstance.onToolboxDragEnd = this._raiseToolboxDragEnd.bind(this); this._diagramInstance.onTextInputStart = this._raiseTextInputStart.bind(this); this._diagramInstance.onTextInputEnd = this._raiseTextInputEnd.bind(this); this._diagramInstance.onToggleFullscreen = this._onToggleFullScreen.bind(this); this._diagramInstance.onShowContextMenu = this._onShowContextMenu.bind(this); this._diagramInstance.onHideContextMenu = this._onHideContextMenu.bind(this); this._diagramInstance.onShowContextToolbox = this._onShowContextToolbox.bind(this); this._diagramInstance.onHideContextToolbox = this._onHideContextToolbox.bind(this); this._diagramInstance.onNativeAction.add({ notifyItemClick: this._raiseItemClickAction.bind(this), notifyItemDblClick: this._raiseItemDblClickAction.bind(this), notifySelectionChanged: this._raiseSelectionChanged.bind(this) }); this._diagramInstance.onRequestOperation = this._raiseRequestEditOperation.bind(this); this._updateEventSubscriptionMethods(); this._updateDefaultItemProperties(); this._updateEditingSettings(); this._updateShapeTexts(); this._updateUnitItems(); this._updateFormatUnitsMethod(); if ("in" !== this.option("units")) { this._updateUnitsState() } if (this.isReadOnlyMode()) { this._updateReadOnlyState() } if (this.option("pageSize")) { if (this.option("pageSize.items")) { this._updatePageSizeItemsState() } if (this.option("pageSize.width") && this.option("pageSize.height")) { this._updatePageSizeState() } } if ("portrait" !== this.option("pageOrientation")) { this._updatePageOrientationState() } if ("#ffffff" !== this.option("pageColor")) { this._updatePageColorState() } if ("in" !== this.option("viewUnits")) { this._updateViewUnitsState() } if (!this.option("showGrid")) { this._updateShowGridState() } if (!this.option("snapToGrid")) { this._updateSnapToGridState() } if (this.option("gridSize")) { this._updateGridSizeState() } if (1 !== this.option("zoomLevel")) { this._updateZoomLevelState() } if (this.option("simpleView")) { this._updateSimpleViewState() } if ("disabled" !== this.option("autoZoomMode")) { this._updateAutoZoomState() } if (this.option("fullScreen")) { const window = (0, _window.getWindow)(); if (window && window.self !== window.top) { this.option("fullScreen", false) } else { this._updateFullscreenState() } } this._createOptionsUpdateBar(); if ((0, _window.hasWindow)()) { this._diagramInstance.initMeasurer(this.$element()[0]) } this._updateCustomShapes(this._getCustomShapes()); this._refreshDataSources() } _createOptionsUpdateBar() { if (!this.optionsUpdateBar) { this.optionsUpdateBar = new _diagram3.default(this); this._diagramInstance.registerBar(this.optionsUpdateBar) } } _deleteOptionsUpdateBar() { delete this.optionsUpdateBar } _clean() { if (this._diagramInstance) { this._diagramInstance.cleanMarkup((element => { (0, _renderer.default)(element).empty() })); this._deleteOptionsUpdateBar() } super._clean() } _dispose() { this._killCaptureFocusTimeout(); super._dispose(); if (this._diagramInstance) { this._diagramInstance.dispose(); this._diagramInstance = void 0 } } _executeDiagramCommand(command, parameter) { this._diagramInstance.getCommand(command).execute(parameter) } getNodeDataSource() { return this._nodesOption && this._nodesOption.getDataSource() } getEdgeDataSource() { return this._edgesOption && this._edgesOption.getDataSource() } _refreshDataSources() { this._beginUpdateDiagram(); this._refreshNodesDataSource(); this._refreshEdgesDataSource(); this._endUpdateDiagram() } _refreshNodesDataSource() { if (this._nodesOption) { this._nodesOption._disposeDataSource(); delete this._nodesOption } if (this.option("nodes.dataSource")) { this._nodesOption = new _diagram5.default(this); this._nodesOption.option("dataSource", this.option("nodes.dataSource")); this._nodesOption._refreshDataSource() } } _refreshEdgesDataSource() { if (this._edgesOption) { this._edgesOption._disposeDataSource(); delete this._edgesOption } if (this.option("edges.dataSource")) { this._edgesOption = new _diagram6.default(this); this._edgesOption.option("dataSource", this.option("edges.dataSource")); this._edgesOption._refreshDataSource() } } _getDiagramData() { let value; const { DiagramCommand: DiagramCommand } = (0, _diagram.getDiagram)(); this._executeDiagramCommand(DiagramCommand.Export, (function(data) { value = data })); return value } _setDiagramData(data, keepExistingItems) { const { DiagramCommand: DiagramCommand } = (0, _diagram.getDiagram)(); this._executeDiagramCommand(DiagramCommand.Import, { data: data, keepExistingItems: keepExistingItems }) } isReadOnlyMode() { return this.option("readOnly") || this.option("disabled") } _onDataSourceChanged() { this._bindDiagramData() } _getChangesKeys(changes) { return changes.map((change => { if ((0, _type.isDefined)(change.internalKey)) { return change.internalKey } else if ((0, _type.isDefined)(change.key)) { return change.key } else { return null } })).filter((key => (0, _type.isDefined)(key))) } _createOptionGetter(optionName) { const expr = this.option(optionName); return expr && (0, _data.compileGetter)(expr) } _onRequestUpdateLayout(changes) { if (!this._requestLayoutUpdateAction) { this._createRequestLayoutUpdateAction() } const eventArgs = { changes: changes, allowed: false }; this._requestLayoutUpdateAction(eventArgs); return eventArgs.allowed } _createOptionSetter(optionName) { const expr = this.option(optionName); if ((0, _type.isFunction)(expr)) { return expr } return expr && (0, _data.compileSetter)(expr) } _bindDiagramData() { if (this._updateDiagramLockCount || !this._isBindingMode()) { return } const { DiagramCommand: DiagramCommand, ConnectorLineOption: ConnectorLineOption, ConnectorLineEnding: ConnectorLineEnding } = (0, _diagram.getDiagram)(); let lineOptionGetter; let lineOptionSetter; let startLineEndingGetter; let startLineEndingSetter; let endLineEndingGetter; let endLineEndingSetter; let containerChildrenGetter; let containerChildrenSetter; const data = { nodeDataSource: this._nodesOption && this._nodesOption.getItems(), edgeDataSource: this._edgesOption && this._edgesOption.getItems(), nodeDataImporter: { getKey: this._createOptionGetter("nodes.keyExpr"), setKey: this._createOptionSetter("nodes.keyExpr"), getCustomData: this._createOptionGetter("nodes.customDataExpr"), setCustomData: this._createOptionSetter("nodes.customDataExpr"), getLocked: this._createOptionGetter("nodes.lockedExpr"), setLocked: this._createOptionSetter("nodes.lockedExpr"), getStyle: this._createOptionGetter("nodes.styleExpr"), setStyle: this._createOptionSetter("nodes.styleExpr"), getStyleText: this._createOptionGetter("nodes.textStyleExpr"), setStyleText: this._createOptionSetter("nodes.textStyleExpr"), getZIndex: this._createOptionGetter("nodes.zIndexExpr"), setZIndex: this._createOptionSetter("nodes.zIndexExpr"), getType: this._createOptionGetter("nodes.typeExpr"), setType: this._createOptionSetter("nodes.typeExpr"), getText: this._createOptionGetter("nodes.textExpr"), setText: this._createOptionSetter("nodes.textExpr"), getImage: this._createOptionGetter("nodes.imageUrlExpr"), setImage: this._createOptionSetter("nodes.imageUrlExpr"), getLeft: this._createOptionGetter("nodes.leftExpr"), setLeft: this._createOptionSetter("nodes.leftExpr"), getTop: this._createOptionGetter("nodes.topExpr"), setTop: this._createOptionSetter("nodes.topExpr"), getWidth: this._createOptionGetter("nodes.widthExpr"), setWidth: this._createOptionSetter("nodes.widthExpr"), getHeight: this._createOptionGetter("nodes.heightExpr"), setHeight: this._createOptionSetter("nodes.heightExpr"), getParentKey: this._createOptionGetter("nodes.parentKeyExpr"), setParentKey: this._createOptionSetter("nodes.parentKeyExpr"), getItems: this._createOptionGetter("nodes.itemsExpr"), setItems: this._createOptionSetter("nodes.itemsExpr"), getChildren: containerChildrenGetter = this._createOptionGetter("nodes.containerChildrenExpr"), setChildren: containerChildrenSetter = this._createOptionSetter("nodes.containerChildrenExpr"), getContainerKey: !containerChildrenGetter && !containerChildrenSetter && this._createOptionGetter("nodes.containerKeyExpr"), setContainerKey: !containerChildrenGetter && !containerChildrenSetter && this._createOptionSetter("nodes.containerKeyExpr") }, edgeDataImporter: { getKey: this._createOptionGetter("edges.keyExpr"), setKey: this._createOptionSetter("edges.keyExpr"), getCustomData: this._createOptionGetter("edges.customDataExpr"), setCustomData: this._createOptionSetter("edges.customDataExpr"), getLocked: this._createOptionGetter("edges.lockedExpr"), setLocked: this._createOptionSetter("edges.lockedExpr"), getStyle: this._createOptionGetter("edges.styleExpr"), setStyle: this._createOptionSetter("edges.styleExpr"), getStyleText: this._createOptionGetter("edges.textStyleExpr"), setStyleText: this._createOptionSetter("edges.textStyleExpr"), getZIndex: this._createOptionGetter("edges.zIndexExpr"), setZIndex: this._createOptionSetter("edges.zIndexExpr"), getFrom: this._createOptionGetter("edges.fromExpr"), setFrom: this._createOptionSetter("edges.fromExpr"), getFromPointIndex: this._createOptionGetter("edges.fromPointIndexExpr"), setFromPointIndex: this._createOptionSetter("edges.fromPointIndexExpr"), getTo: this._createOptionGetter("edges.toExpr"), setTo: this._createOptionSetter("edges.toExpr"), getToPointIndex: this._createOptionGetter("edges.toPointIndexExpr"), setToPointIndex: this._createOptionSetter("edges.toPointIndexExpr"), getPoints: this._createOptionGetter("edges.pointsExpr"), setPoints: this._createOptionSetter("edges.pointsExpr"), getText: this._createOptionGetter("edges.textExpr"), setText: this._createOptionSetter("edges.textExpr"), getLineOption: (lineOptionGetter = this._createOptionGetter("edges.lineTypeExpr")) && function(obj) { const lineType = lineOptionGetter(obj); return this._getConnectorLineOption(lineType) }.bind(this), setLineOption: (lineOptionSetter = this._createOptionSetter("edges.lineTypeExpr")) && function(obj, value) { switch (value) { case ConnectorLineOption.Straight: value = "straight"; break; case ConnectorLineOption.Orthogonal: value = "orthogonal" } lineOptionSetter(obj, value) }.bind(this), getStartLineEnding: (startLineEndingGetter = this._createOptionGetter("edges.fromLineEndExpr")) && function(obj) { const lineEnd = startLineEndingGetter(obj); return this._getConnectorLineEnding(lineEnd) }.bind(this), setStartLineEnding: (startLineEndingSetter = this._createOptionSetter("edges.fromLineEndExpr")) && function(obj, value) { switch (value) { case ConnectorLineEnding.Arrow: value = "arrow"; break; case ConnectorLineEnding.OutlinedTriangle: value = "outlinedTriangle"; break; case ConnectorLineEnding.FilledTriangle: value = "filledTriangle"; break; case ConnectorLineEnding.None: value = "none" } startLineEndingSetter(obj, value) }.bind(this), getEndLineEnding: (endLineEndingGetter = this._createOptionGetter("edges.toLineEndExpr")) && function(obj) { const lineEnd = endLineEndingGetter(obj); return this._getConnectorLineEnding(lineEnd) }.bind(this), setEndLineEnding: (endLineEndingSetter = this._createOptionSetter("edges.toLineEndExpr")) && function(obj, value) { switch (value) { case ConnectorLineEnding.Arrow: value = "arrow"; break; case ConnectorLineEnding.OutlinedTriangle: value = "outlinedTriangle"; break; case ConnectorLineEnding.FilledTriangle: value = "filledTriangle"; break; case ConnectorLineEnding.None: value = "none" } endLineEndingSetter(obj, value) }.bind(this) }, layoutParameters: this._getDataBindingLayoutParameters() }; if (data.nodeDataSource) { this._executeDiagramCommand(DiagramCommand.BindDocument, data) } } _reloadContentByChanges(changes, isExternalChanges) { const keys = this._getChangesKeys(changes); const applyLayout = this._onRequestUpdateLayout(changes); this._reloadContent(keys, applyLayout, isExternalChanges) } _reloadContent(itemKeys, applyLayout, isExternalChanges) { this._diagramInstance.reloadContent(itemKeys, (() => { let nodeDataSource; let edgeDataSource; if (this._nodesOption && isExternalChanges) { nodeDataSource = this._nodesOption.getItems() } if (this._edgesOption && isExternalChanges) { edgeDataSource = this._edgesOption.getItems() } return { nodeDataSource: nodeDataSource, edgeDataSource: edgeDataSource } }), applyLayout && this._getDataBindingLayoutParameters(), isExternalChanges) } _getConnectorLineOption(lineType) { const { ConnectorLineOption: ConnectorLineOption } = (0, _diagram.getDiagram)(); if ("straight" === lineType) { return ConnectorLineOption.Straight } else { return ConnectorLineOption.Orthogonal } } _getConnectorLineEnding(lineEnd) { const { ConnectorLineEnding: ConnectorLineEnding } = (0, _diagram.getDiagram)(); switch (lineEnd) { case "arrow": return ConnectorLineEnding.Arrow; case "outlinedTriangle": return ConnectorLineEnding.OutlinedTriangle; case "filledTriangle": return ConnectorLineEnding.FilledTriangle; default: return ConnectorLineEnding.None } } _getDataBindingLayoutParameters() { const { DataLayoutType: DataLayoutType, DataLayoutOrientation: DataLayoutOrientation } = (0, _diagram.getDiagram)(); const layoutParametersOption = this.option("nodes.autoLayout") || "off"; const layoutType = layoutParametersOption.type || layoutParametersOption; const parameters = {}; if ("off" !== layoutType && ("auto" !== layoutType || !this._hasNodePositionExprs())) { if ("tree" === layoutType) { parameters.type = DataLayoutType.Tree } else { parameters.type = DataLayoutType.Sugiyama } switch (layoutParametersOption.orientation) { case "vertical": parameters.orientation = DataLayoutOrientation.Vertical; break; case "horizontal": parameters.orientation = DataLayoutOrientation.Horizontal } if (this.option("edges.fromPointIndexExpr") || this.option("edges.toPointIndexExpr")) { parameters.skipPointIndices = true } } parameters.autoSizeEnabled = !!this.option("nodes.autoSizeEnabled"); return parameters } _hasNodePositionExprs() { return this.option("nodes.topExpr") && this.option("nodes.leftExpr") } _getAutoZoomValue(option) { const { AutoZoomMode: AutoZoomMode } = (0, _diagram.getDiagram)(); switch (option) { case "fitContent": return AutoZoomMode.FitContent; case "fitWidth": return AutoZoomMode.FitToWidth; default: return AutoZoomMode.Disabled } } _isBindingMode() { return this._nodesOption && this._nodesOption.hasItems() || this._edgesOption && this._edgesOption.hasItems() } _beginUpdateDiagram() { this._updateDiagramLockCount++ } _endUpdateDiagram() { this._updateDiagramLockCount = Math.max(this._updateDiagramLockCount - 1, 0); if (!this._updateDiagramLockCount) { this._bindDiagramData() } } _getCustomShapes() { return this.option("customShapes") || [] } _getToolboxGroups() { return _diagram2.default.getGroups(this.option("toolbox.groups")) } _updateAllCustomShapes() { this._diagramInstance.removeAllCustomShapes(); this._updateCustomShapes(this._getCustomShapes()) } _updateCustomShapes(customShapes, prevCustomShapes) { if (Array.isArray(prevCustomShapes)) { this._diagramInstance.removeCustomShapes(prevCustomShapes.map((s => s.type))) } if (Array.isArray(customShapes)) { this._diagramInstance.addCustomShapes(customShapes.map((s => { const templateOption = s.template || this.option("customShapeTemplate"); const template = templateOption && this._getTemplate(templateOption); const toolboxTemplateOption = s.toolboxTemplate || this.option("customShapeToolboxTemplate"); const toolboxTemplate = toolboxTemplateOption && this._getTemplate(toolboxTemplateOption); return { category: s.category, type: s.type, baseType: s.baseType, title: s.title, svgUrl: s.backgroundImageUrl, svgToolboxUrl: s.backgroundImageToolboxUrl, svgLeft: s.backgroundImageLeft, svgTop: s.backgroundImageTop, svgWidth: s.backgroundImageWidth, svgHeight: s.backgroundImageHeight, defaultWidth: s.defaultWidth, defaultHeight: s.defaultHeight, toolboxWidthToHeightRatio: s.toolboxWidthToHeightRatio, minWidth: s.minWidth, minHeight: s.minHeight, maxWidth: s.maxWidth, maxHeight: s.maxHeight, allowResize: s.allowResize, defaultText: s.defaultText, allowEditText: s.allowEditText, textLeft: s.textLeft, textTop: s.textTop, textWidth: s.textWidth, textHeight: s.textHeight, defaultImageUrl: s.defaultImageUrl, allowEditImage: s.allowEditImage, imageLeft: s.imageLeft, imageTop: s.imageTop, imageWidth: s.imageWidth, imageHeight: s.imageHeight, connectionPoints: s.connectionPoints && s.connectionPoints.map((pt => ({ x: pt.x, y: pt.y }))), createTemplate: template && ((container, item) => { template.render({ model: this._nativeItemToDiagramItem(item), container: (0, _element.getPublicElement)((0, _renderer.default)(container)) }) }), createToolboxTemplate: toolboxTemplate && ((container, item) => { toolboxTemplate.render({ model: this._nativeItemToDiagramItem(item), container: (0, _element.getPublicElement)((0, _renderer.default)(container)) }) }), destroyTemplate: template && (container => { (0, _renderer.default)(container).empty() }), templateLeft: s.templateLeft, templateTop: s.templateTop, templateWidth: s.templateWidth, templateHeight: s.templateHeight, keepRatioOnAutoSize: s.keepRatioOnAutoSize } }))) } } _getViewport() { const $viewPort = this.$element().closest(".dx-viewport"); return $viewPort.length ? $viewPort : (0, _renderer.default)("body") } _onToggleFullScreen(fullScreen) { if (this.toggleFullscreenLock > 0) { return } this._changeNativeFullscreen(fullScreen); if (fullScreen) { this._prevParent = this.$element().parent(); this._prevFullScreenZIndex = this.$element().css("zIndex"); this._fullScreenZIndex = zIndexPool.create(_ui2.default.baseZIndex()); this.$element().css("zIndex", this._fullScreenZIndex); this.$element().appendTo(this._getViewport()) } else { this.$element().appendTo(this._prevParent); if (this._fullScreenZIndex) { zIndexPool.remove(this._fullScreenZIndex); this.$element().css("zIndex", this._prevFullScreenZIndex) } } this.$element().toggleClass("dx-diagram-fullscreen", fullScreen); this._processDiagramResize(); if (this._toolbox) { this._toolbox.repaint(); this._toolbox._popup.option("propagateOutsideClick", !fullScreen) } if (this._propertiesPanel) { this._propertiesPanel.repaint() } if (this._historyToolbar) { this._updateHistoryToolbarPosition() } } _changeNativeFullscreen(setModeOn) { const window = (0, _window.getWindow)(); if (window.self === window.top || setModeOn === this._inNativeFullscreen()) { return } if (setModeOn) { this._subscribeFullscreenNativeChanged() } else { this._unsubscribeFullscreenNativeChanged() } this._setNativeFullscreen(setModeOn) } _setNativeFullscreen(on) { const window = (0, _window.getWindow)(); const document = window.self.document; const body = window.self.document.body; if (on) { if (body.requestFullscreen) { body.requestFullscreen() } else if (body.mozRequestFullscreen) { body.mozRequestFullscreen() } else if (body.webkitRequestFullscreen) { body.webkitRequestFullscreen() } else if (body.msRequestFullscreen) { body.msRequestFullscreen() } } else if (document.exitFullscreen) { document.exitFullscreen() } else if (document.mozCancelFullscreen) { document.mozCancelFullscreen() } else if (document.webkitExitFullscreen) { document.webkitExitFullscreen() } else if (document.msExitFullscreen) { document.msExitFullscreen() } } _inNativeFullscreen() { const document = (0, _window.getWindow)().document; const fullscreenElement = document.fullscreenElement || document.msFullscreenElement || document.webkitFullscreenElement; const isInFullscreen = fullscreenElement === document.body || document.webkitIsFullscreen; return !!isInFullscreen } _subscribeFullscreenNativeChanged() { const document = (0, _window.getWindow)().document; const handler = this._onNativeFullscreenChangeHandler.bind(this); _events_engine.default.on(document, FULLSCREEN_CHANGE_EVENT_NAME, handler); _events_engine.default.on(document, IE_FULLSCREEN_CHANGE_EVENT_NAME, handler); _events_engine.default.on(document, WEBKIT_FULLSCREEN_CHANGE_EVENT_NAME, handler); _events_engine.default.on(document, MOZ_FULLSCREEN_CHANGE_EVENT_NAME, handler) } _unsubscribeFullscreenNativeChanged() { const document = (0, _window.getWindow)().document; _events_engine.default.off(document, FULLSCREEN_CHANGE_EVENT_NAME); _events_engine.default.off(document, IE_FULLSCREEN_CHANGE_EVENT_NAME); _events_engine.default.off(document, WEBKIT_FULLSCREEN_CHANGE_EVENT_NAME); _events_engine.default.off(document, MOZ_FULLSCREEN_CHANGE_EVENT_NAME) } _onNativeFullscreenChangeHandler() { if (!this._inNativeFullscreen()) { this._unsubscribeFullscreenNativeChanged(); this.option("fullScreen", false) } } _executeDiagramFullscreenCommand(fullscreen) { const { DiagramCommand: DiagramCommand } = (0, _diagram.getDiagram)(); this.toggleFullscreenLock++; this._executeDiagramCommand(DiagramCommand.Fullscreen, fullscreen); this.toggleFullscreenLock-- } _onShowContextMenu(x, y, selection) { if (this._contextMenu) { this._contextMenu._show(x, y, selection) } } _onHideContextMenu() { if (this._contextMenu) { this._contextMenu._hide() } } _onShowContextToolbox(x, y, side, category, callback) { if (this._contextToolbox) { this._contextToolbox._show(x, y, side, category, callback) } } _onHideContextToolbox() { if (this._contextToolbox) { this._contextToolbox._hide() } } _getDiagramUnitValue(value) { const { DiagramUnit: DiagramUnit } = (0, _diagram.getDiagram)(); switch (value) { case "in": default: return DiagramUnit.In; case "cm": return DiagramUnit.Cm; case "px": return DiagramUnit.Px } } _updateReadOnlyState() { const { DiagramCommand: DiagramCommand } = (0, _diagram.getDiagram)(); const readOnly = this.isReadOnlyMode(); this._executeDiagramCommand(DiagramCommand.ToggleReadOnly, readOnly) } _updateZoomLevelState() { if (this.option("zoomLevel.items")) { this._updateZoomLevelItemsState(); const zoomLevel = this.option("zoomLevel.value"); if (!zoomLevel) { return } const { DiagramCommand: DiagramCommand } = (0, _diagram.getDiagram)(); this._executeDiagramCommand(DiagramCommand.ZoomLevel, zoomLevel) } else { const zoomLevel = this.option("zoomLevel.value") || this.option("zoomLevel"); if (!zoomLevel) { return } const { DiagramCommand: DiagramCommand } = (0, _diagram.getDiagram)(); this._executeDiagramCommand(DiagramCommand.ZoomLevel, zoomLevel) } } _updateZoomLevelItemsState() { const zoomLevelItems = this.option("zoomLevel.items"); if (!Array.isArray(zoomLevelItems)) { return } const { DiagramCommand: DiagramCommand } = (0, _diagram.getDiagram)(); this._executeDiagramCommand(DiagramCommand.ZoomLevelItems, zoomLevelItems) } _updateAutoZoomState() { const { DiagramCommand: DiagramCommand } = (0, _diagram.getDiagram)(); this._executeDiagramCommand(DiagramCommand.SwitchAutoZoom, this._getAutoZoomValue(this.option("autoZoomMode"))) } _updateSimpleViewState() { const { DiagramCommand: DiagramCommand } = (0, _diagram.getDiagram)(); this._executeDiagramCommand(DiagramCommand.ToggleSimpleView, this.option("simpleView")) } _updateFullscreenState() { const fullscreen = this.option("fullScreen"); this._executeDiagramFullscreenCommand(fullscreen); this._onToggleFullScreen(fullscreen) } _updateShowGridState() { const { DiagramCommand: DiagramCommand } = (0, _diagram.getDiagram)(); this._executeDiagramCommand(DiagramCommand.ShowGrid, this.option("showGrid")) } _updateSnapToGridState() { const { DiagramCommand: DiagramCommand } = (0, _diagram.getDiagram)(); this._executeDiagramCommand(DiagramCommand.SnapToGrid, this.option("snapToGrid")) } _updateGridSizeState() { if (this.option("gridSize.items")) { this._updateGridSizeItemsState(); const gridSize = this.option("gridSize.value"); if (!gridSize) { return } const { DiagramCommand: DiagramCommand } = (0, _diagram.getDiagram)(); this._executeDiagramCommand(DiagramCommand.GridSize, gridSize) } else { const gridSize = this.option("gridSize.value") || this.option("gridSize"); if (!gridSize) { return } const { DiagramCommand: DiagramCommand } = (0, _diagram.getDiagram)(); this._executeDiagramCommand(DiagramCommand.GridSize, gridSize) } } _updateGridSizeItemsState() { const gridSizeItems = this.option("gridSize.items"); if (!Array.isArray(gridSizeItems)) { return } const { DiagramCommand: DiagramCommand } = (0, _diagram.getDiagram)(); this._executeDiagramCommand(DiagramCommand.GridSizeItems, gridSizeItems) } _updateUnitItems() { const { DiagramLocalizationService: DiagramLocalizationService } = (0, _diagram.getDiagram)(); const items = this._getUnitItems(); if (this._unitItems !== items) { this._unitItems = items; DiagramLocalizationService.unitItems = items } } _getUnitItems() { const { DiagramUnit: DiagramUnit } = (0, _diagram.getDiagram)(); const items = {}; items[DiagramUnit.In] = _message.default.format("dxDiagram-unitIn"); items[DiagramUnit.Cm] = _message.default.format("dxDiagram-unitCm"); items[DiagramUnit.Px] = _message.default.format("dxDiagram-unitPx"); return items } _updateFormatUnitsMethod() { const { DiagramLocalizationService: DiagramLocalizationService } = (0, _diagram.getDiagram)(); DiagramLocalizationService.formatUnit = function(value) { return _number.default.format(value) } } _updateViewUnitsState() { const { DiagramCommand: DiagramCommand } = (0, _diagram.getDiagram)(); this._executeDiagramCommand(DiagramCommand.ViewUnits, this._getDiagramUnitValue(this.option("viewUnits"))) } _updateUnitsState() { const { DiagramCommand: DiagramCommand } = (0, _diagram.getDiagram)(); this._executeDiagramCommand(DiagramCommand.Units, this._getDiagramUnitValue(this.option("units"))) } _updatePageSizeState() { const pageSize = this.option("pageSize"); if (!pageSize || !pageSize.width || !pageSize.height) { return } const { DiagramCommand: DiagramCommand } = (0, _diagram.getDiagram)(); this._executeDiagramCommand(DiagramCommand.PageSize, pageSize) } _updatePageSizeItemsState() { const pageSizeItems = this.option("pageSize.items"); if (!Array.isArray(pageSizeItems)) { return } const { DiagramCommand: DiagramCommand } = (0, _diagram.getDiagram)(); this._executeDiagramCommand(DiagramCommand.PageSizeItems, pageSizeItems) } _updatePageOrientationState() { const { DiagramCommand: DiagramCommand } = (0, _diagram.getDiagram)(); this._executeDiagramCommand(DiagramCommand.PageLandscape, "landscape" === this.option("pageOrientation")) } _updatePageColorState() { const { DiagramCommand: DiagramCommand } = (0, _diagram.getDiagram)(); this._executeDiagramCommand(DiagramCommand.PageColor, this.option("pageColor")) } _updateShapeTexts() { const { DiagramLocalizationService: DiagramLocalizationService } = (0, _diagram.getDiagram)(); const texts = this._getShapeTexts(); if (this._shapeTexts !== texts) { this._shapeTexts = texts; DiagramLocalizationService.shapeTexts = texts } } _getShapeTexts() { const { ShapeTypes: ShapeTypes } = (0, _diagram.getDiagram)(); const texts = {}; texts[ShapeTypes.Text] = _message.default.format("dxDiagram-shapeText"); texts[ShapeTypes.Rectangle] = _message.default.format("dxDiagram-shapeRectangle"); texts[ShapeTypes.Ellipse] = _message.default.format("dxDiagram-shapeEllipse"); texts[ShapeTypes.Cross] = _message.default.format("dxDiagram-shapeCross"); texts[ShapeTypes.Triangle] = _message.default.format("dxDiagram-shapeTriangle"); texts[ShapeTypes.Diamond] = _message.default.format("dxDiagram-shapeDiamond"); texts[ShapeTypes.Heart] = _message.default.format("dxDiagram-shapeHeart"); texts[ShapeTypes.Pentagon] = _message.default.format("dxDiagram-shapePentagon"); texts[ShapeTypes.Hexagon] = _message.default.format("dxDiagram-shapeHexagon"); texts[ShapeTypes.Octagon] = _message.default.format("dxDiagram-shapeOctagon"); texts[ShapeTypes.Star] = _message.default.format("dxDiagram-shapeStar"); texts[ShapeTypes.ArrowLeft] = _message.default.format("dxDiagram-shapeArrowLeft"); texts[ShapeTypes.ArrowUp] = _message.default.format("dxDiagram-shapeArrowUp"); texts[ShapeTypes.ArrowRight] = _message.default.format("dxDiagram-shapeArrowRight"); texts[ShapeTypes.ArrowDown] = _message.default.format("dxDiagram-shapeArrowDown"); texts[ShapeTypes.ArrowUpDown] = _message.default.format("dxDiagram-shapeArrowUpDown"); texts[ShapeTypes.ArrowLeftRight] = _message.default.format("dxDiagram-shapeArrowLeftRight"); texts[ShapeTypes.Process] = _message.default.format("dxDiagram-shapeProcess"); texts[ShapeTypes.Decision] = _message.default.format("dxDiagram-shapeDecision"); texts[ShapeTypes.Terminator] = _message.default.format("dxDiagram-shapeTerminator"); texts[ShapeTypes.PredefinedProcess] = _message.default.format("dxDiagram-shapePredefinedProcess"); texts[ShapeTypes.Document] = _message.default.format("dxDiagram-shapeDocument"); texts[ShapeTypes.MultipleDocuments] = _message.default.format("dxDiagram-shapeMultipleDocuments"); texts[ShapeTypes.ManualInput] = _message.default.format("dxDiagram-shapeManualInput"); texts[ShapeTypes.Preparation] = _message.default.format("dxDiagram-shapePreparation"); texts[ShapeTypes.Data] = _message.default.format("dxDiagram-shapeData"); texts[ShapeTypes.Database] = _message.default.format("dxDiagram-shapeDatabase"); texts[ShapeTypes.HardDisk] = _message.default.format("dxDiagram-shapeHardDisk"); texts[ShapeTypes.InternalStorage] = _message.default.format("dxDiagram-shapeInternalStorage"); texts[ShapeTypes.PaperTape] = _message.default.format("dxDiagram-shapePaperTape"); texts[ShapeTypes.ManualOperation] = _message.default.format("dxDiagram-shapeManualOperation"); texts[ShapeTypes.Delay] = _message.default.format("dxDiagram-shapeDelay"); texts[ShapeTypes.StoredData] = _message.default.format("dxDiagram-shapeStoredData"); texts[ShapeTypes.Display] = _message.default.format("dxDiagram-shapeDisplay"); texts[ShapeTypes.Merge] = _message.default.format("dxDiagram-shapeMerge"); texts[ShapeTypes.Connector] = _message.default.format("dxDiagram-shapeConnector"); texts[ShapeTypes.Or] = _message.default.format("dxDiagram-shapeOr"); texts[ShapeTypes.SummingJunction] = _message.default.format("dxDiagram-shapeSummingJunction"); texts[ShapeTypes.Container] = _message.default.format("dxDiagram-shapeContainerDefaultText"); texts[ShapeTypes.VerticalContainer] = _message.default.format("dxDiagram-shapeVerticalContainer"); texts[ShapeTypes.HorizontalContainer] = _message.default.format("dxDiagram-shapeHorizontalContainer"); texts[ShapeTypes.Card] = _message.default.format("dxDiagram-shapeCardDefaultText"); texts[ShapeTypes.CardWithImageOnLeft] = _message.default.format("dxDiagram-shapeCardWithImageOnLeft"); texts[ShapeTypes.CardWithImageOnTop] = _message.default.format("dxDiagram-shapeCardWithImageOnTop"); texts[ShapeTypes.CardWithImageOnRight] = _message.default.format("dxDiagram-shapeCardWithImageOnRight"); return texts } _updateEventSubscriptionMethods() { const { RenderHelper: RenderHelper } = (0, _diagram.getDiagram)(); RenderHelper.addEventListener = (element, eventName, handler) => { _events_engine.default.on(element, eventName, handler) }; RenderHelper.removeEventListener = (element, eventName, handler) => { _events_engine.default.off(element, eventName, handler) } } _updateDefaultItemProperties() { if (this.option("defaultItemProperties.style")) { this._diagramInstance.setInitialStyleProperties(this.option("defaultItemProperties.style")) } if (this.option("defaultItemProperties.textStyle")) { this._diagramInstance.setInitialTextStyleProperties(this.option("defaultItemProperties.textStyle")) } this._diagramInstance.setInitialConnectorProperties({ lineOption: this._getConnectorLineOption(this.option("defaultItemProperties.connectorLineType")), startLineEnding: this._getConnectorLineEnding(this.option("defaultItemProperties.connectorLineStart")), endLineEnding: this._getConnectorLineEnding(this.option("defaultItemProperties.connectorLineEnd")) }); this._diagramInstance.applyShapeSizeSettings({ shapeMinWidth: this.option("defaultItemProperties.shapeMinWidth"), shapeMaxWidth: this.option("defaultItemProperties.shapeMaxWidth"), shapeMinHeight: this.option("defaultItemProperties.shapeMinHeight"), shapeMaxHeight: this.option("defaultItemProperties.shapeMaxHeight") }) } _updateEditingSettings() { this._diagramInstance.applyOperationSettings({ addShape: this.option("editing.allowAddShape"), addShapeFromToolbox: this.option("editing.allowAddShape"), deleteShape: this.option("editing.allowDeleteShape"), deleteConnector: this.option("editing.allowDeleteConnector"), changeConnection: this.option("editing.allowChangeConnection"), changeConnectorPoints: this.option("editing.allowChangeConnectorPoints"), changeShapeText: this.option("editing.allowChangeShapeText"), changeConnectorText: this.option("editing.allowChangeConnectorText"), resizeShape: this.option("editing.allowResizeShape"), moveShape: this.option("editing.allowMoveShape") }) } fitToContent() { const { DiagramCommand: DiagramCommand } = (0, _diagram.getDiagram)(); this._executeDiagramCommand(DiagramCommand.FitToScreen) } fitToWidth() { const { DiagramCommand: DiagramCommand } = (0, _diagram.getDiagram)(); this._executeDiagramCommand(DiagramCommand.FitToWidth) } focus() { this._captureFocus() } export () { return this._getDiagramData() } exportTo(format, callback) { const command = this._getDiagramExportToCommand(format); this._executeDiagramCommand(command, callback) } _getDiagramExportToCommand(format) { const { DiagramCommand: DiagramCommand } = (0, _diagram.getDiagram)(); switch (format) { case "png": return DiagramCommand.ExportPng; case "jpg": return DiagramCommand.ExportJpg; default: return DiagramCommand.ExportSvg } } import(data, updateExistingItemsOnly) { this._setDiagramData(data, updateExistingItemsOnly); this._raiseDataChangeAction() } updateToolbox() { this._diagramInstance && this._diagramInstance.refreshToolbox(); if (this._toolbox) { this._toolbox.updateTooltips(); this._toolbox.updateFilter(); this._toolbox.updateMaxHeight() } } _getDefaultOptions() { return (0, _extend.extend)(super._getDefaultOptions(), { readOnly: false, zoomLevel: 1, simpleView: false, autoZoomMode: "disabled", fullScreen: false, showGrid: true, snapToGrid: true, units: "in", viewUnits: "in", pageOrientation: "portrait", pageColor: "#ffffff", hasChanges: false, nodes: { dataSource: null, keyExpr: "id", customDataExpr: void 0, lockedExpr: void 0, styleExpr: void 0, textStyleExpr: void 0, zIndexExpr: void 0, typeExpr: "type", textExpr: "text", imageUrlExpr: void 0, parentKeyExpr: void 0, itemsExpr: void 0, leftExpr: void 0, topExpr: void 0, widthExpr: void 0, heightExpr: void 0, containerKeyExpr: "containerKey", containerChildrenExpr: void 0, autoLayout: "auto", autoSizeEnabled: true }, edges: { dataSource: null, keyExpr: "id", customDataExpr: void 0, lockedExpr: void 0, styleExpr: void 0, textStyleExpr: void 0, zIndexExpr: void 0, fromExpr: "from", fromPointIndexExpr: void 0, toExpr: "to", toPointIndexExpr: void 0, pointsExpr: void 0, textExpr: void 0, lineTypeExpr: void 0, fromLineEndExpr: void 0, toLineEndExpr: void 0 }, customShapes: [], toolbox: { visibility: "auto", shapeIconsPerRow: 3, showSearch: true }, mainToolbar: { visible: false }, historyToolbar: { visible: true }, viewToolbar: { visible: true }, contextMenu: { enabled: true }, contextToolbox: { enabled: true, shapeIconsPerRow: 4, width: 152 }, propertiesPanel: { visibility: "auto" }, defaultItemProperties: { connectorLineType: "orthogonal", connectorLineStart: "none", connectorLineEnd: "arrow" }, editing: { allowAddShape: true, allowDeleteShape: true, allowDeleteConnector: true, allowChangeConnection: true, allowChangeConnectorPoints: true, allowChangeShapeText: true, allowChangeConnectorText: true, allowResizeShape: true, allowMoveShape: true }, export: { fileName: "Diagram" }, onItemClick: null, onItemDblClick: null, onSelectionChanged: null, onRequestEditOperation: null, onRequestLayoutUpdate: null }) } _raiseDataChangeAction() { if (this._initialized) { this.option("hasChanges", true) } } _raiseEdgeInsertedAction(data, callback, errorCallback) { if (this._edgesOption) { this._edgesOption.insert(data, callback, errorCallback) } } _raiseEdgeUpdatedAction(key, data, callback, errorCallback) { if (this._edgesOption) { this._edgesOption.update(key, data, callback, errorCallback) } } _raiseEdgeRemovedAction(key, data, callback, errorCallback) { if (this._edgesOption) { this._edgesOption.remove(key, data, callback, errorCallback) } } _raiseNodeInsertedAction(data, callback, errorCallback) { if (this._nodesOption) { this._nodesOption.insert(data, callback, errorCallback) } } _raiseNodeUpdatedAction(key, data, callback, errorCallback) { if (this._nodesOption) { this._nodesOption.update(key, data, callback, errorCallback) } } _raiseNodeRemovedAction(key, data, callback, errorCallback) { if (this._nodesOption) { this._nodesOption.remove(key, data, callback, errorCallback) } } _raiseToolboxDragStart() { if (this._toolbox && this.isMobileScreenSize()) { this._toolbox.hide(); this._toolboxDragHidden = true } } _raiseToolboxDragEnd() { if (this._toolbox && this._toolboxDragHidden) { this._toolbox.show(); delete this._toolboxDragHidden } } _raiseTextInputStart() { this._textInputStarted = true; if (this._propertiesPanel) { if (this.isMobileScreenSize() && this._propertiesPanel.isVisible()) { this._propertiesPanel.hide(); this._propertiesPanelTextInputHidden = true } } if (this._toolbox) { if (this.isMobileScreenSize() && this._toolbox.isVisible()) { this._toolbox.hide(); this._toolboxTextInputHidden = true } } } _raiseTextInputEnd() { if (this._propertiesPanel) { if (this._propertiesPanelTextInputHidden) { this._propertiesPanel.show(); delete this._propertiesPanelTextInputHidden } } if (this._toolbox) { if (this._toolboxTextInputHidden) { this._toolbox.show(); delete this._toolboxTextInputHidden } } this._textInputStarted = false } _createItemClickAction() { this._itemClickAction = this._createActionByOption("onItemClick") } _createItemDblClickAction() { this._itemDblClickAction = this._createActionByOption("onItemDblClick") } _createSelectionChangedAction() { this._selectionChangedAction = this._createActionByOption("onSelectionChanged") } _createRequestEditOperationAction() { this._requestEditOperationAction = this._createActionByOption("onRequestEditOperation") } _createRequestLayoutUpdateAction() { this._requestLayoutUpdateAction = this._createActionByOption("onRequestLayoutUpdate") } _createCustomCommand() { this._customCommandAction = this._createActionByOption("onCustomCommand") } _raiseItemClickAction(nativeItem) { if (!this._itemClickAction) { this._createItemClickAction() } this._itemClickAction({ item: this._nativeItemToDiagramItem(nativeItem) }) } _raiseItemDblClickAction(nativeItem) { if (!this._itemDblClickAction) { this._createItemDblClickAction() } this._itemDblClickAction({ item: this._nativeItemToDiagramItem(nativeItem) }) } _raiseSelectionChanged(nativeItems) { if (!this._selectionChangedAction) { this._createSelectionChangedAction() } this._selectionChangedAction({ items: nativeItems.map(this._nativeItemToDiagramItem.bind(this)) }) } _raiseRequestEditOperation(operation, args) { if (!this._requestEditOperationAction) { this._createRequestEditOperationAction() } const eventArgs = this._getRequestEditOperationEventArgs(operation, args); this._requestEditOperationAction(eventArgs); args.allowed = eventArgs.allowed } _getModelOperation(operation) { const { DiagramModelOperation: DiagramModelOperation } = (0, _diagram.getDiagram)(); switch (operation) { case DiagramModelOperation.AddShape: return "addShape"; case DiagramModelOperation.AddShapeFromToolbox: return "addShapeFromToolbox"; case DiagramModelOperation.DeleteShape: return "deleteShape"; case DiagramModelOperation.DeleteConnector: return "deleteConnector"; case DiagramModelOperation.ChangeConnection: return "changeConnection"; case DiagramModelOperation.ChangeConnectorPoints: return "changeConnectorPoints"; case DiagramModelOperation.BeforeChangeShapeText: return "beforeChangeShapeText"; case DiagramModelOperation.ChangeShapeText: return "changeShapeText"; case DiagramModelOperation.BeforeChangeConnectorText: return "beforeChangeConnectorText"; case DiagramModelOperation.ChangeConnectorText: return "changeConnectorText"; case DiagramModelOperation.ResizeShape: return "resizeShape"; case DiagramModelOperation.MoveShape: return "moveShape" } } _getRequestEditOperationEventArgs(operation, args) { const { DiagramModelOperation: DiagramModelOperation, ConnectorPosition: ConnectorPosition } = (0, _diagram.getDiagram)(); const eventArgs = { operation: this._getModelOperation(operation), allowed: args.allowed, updateUI: args.updateUI, reason: args.updateUI ? "checkUIElementAvailability" : "modelModification" }; switch (operation) { case DiagramModelOperation.AddShape: eventArgs.args = { shape: args.shape && this._nativeItemToDiagramItem(args.shape), position: args.position && { x: args.position.x, y: args.position.y } }; break; case DiagramModelOperation.AddShapeFromToolbox: eventArgs.args = { shapeType: args.shapeType }; break; case DiagramModelOperation.DeleteShape: eventArgs.args = { shape: args.shape && this._nativeItemToDiagramItem(args.shape) }; break; case DiagramModelOperation.DeleteConnector: eventArgs.args = { connector: args.connector && this._nativeItemToDiagramItem(args.connector) }; break; case DiagramModelOperation.ChangeConnection: eventArgs.args = { newShape: args.shape && this._nativeItemToDiagramItem(args.shape), oldShape: args.oldShape && this._nativeItemToDiagramItem(args.oldShape), connector: args.connector && this._nativeItemToDiagramItem(args.connector), connectionPointIndex: args.connectionPointIndex, connectorPosition: args.position === ConnectorPosition.Begin ? "start" : "end" }; break; case DiagramModelOperation.ChangeConnectorPoints: eventArgs.args = { connector: args.connector && this._nativeItemToDiagramItem(args.connector), newPoints: args.points && args.points.map((pt => ({ x: pt.x, y: pt.y }))), oldPoints: args.oldPoints && args.oldPoints.map((pt => ({ x: pt.x, y: pt.y }))) }; break; case DiagramModelOperation.BeforeChangeShapeText: eventArgs.args = { shape: args.shape && this._nativeItemToDiagramItem(args.shape) }; break; case DiagramModelOperation.ChangeShapeText: eventArgs.args = { shape: args.shape && this._nativeItemToDiagramItem(args.shape), text: args.text }; break; case DiagramModelOperation.BeforeChangeConnectorText: eventArgs.args = { connector: args.connector && this._nativeItemToDiagramItem(args.connector), index: args.index }; break; case DiagramModelOperation.ChangeConnectorText: eventArgs.args = { connector: args.connector && this._nativeItemToDiagramItem(args.connector), index: args.index, text: args.text }; break; case DiagramModelOperation.ResizeShape: eventArgs.args = { shape: args.shape && this._nativeItemToDiagramItem(args.shape), newSize: args.size && { width: args.size.width, height: args.size.height }, oldSize: args.oldSize && { width: args.oldSize.width, height: args.oldSize.height } }; break; case DiagramModelOperation.MoveShape: eventArgs.args = { shape: args.shape && this._nativeItemToDiagramItem(args.shape), newPosition: args.position && { x: args.position.x, y: args.position.y }, oldPosition: args.oldPosition && { x: args.oldPosition.x, y: args.oldPosition.y } } } return eventArgs } _nativeItemToDiagramItem(nativeItem) { const { NativeShape: NativeShape } = (0, _diagram.getDiagram)(); const createMethod = nativeItem instanceof NativeShape ? this._nativeShapeToDiagramShape.bind(this) : this._nativeConnectorToDiagramConnector.bind(this); return (0, _extend.extend)({ id: nativeItem.id, key: nativeItem.key, dataItem: void 0 }, createMethod(nativeItem)) } _nativeShapeToDiagramShape(nativeShape) { return { dataItem: this._nodesOption && this._nodesOption.findItem(nativeShape.key), itemType: "shape", text: nativeShape.text, type: nativeShape.type, position: { x: nativeShape.position.x, y: nativeShape.position.y }, size: { width: nativeShape.size.width, height: nativeShape.size.height }, attachedConnectorIds: nativeShape.attachedConnectorIds, containerId: nativeShape.containerId, containerChildItemIds: nativeShape.containerChildItemIds, containerExpanded: nativeShape.containerExpanded } } _nativeConnectorToDiagramConnector(nativeConnector) { return { dataItem: this._edgesOption && this._edgesOption.findItem(nativeConnector.key), itemType: "connector", texts: nativeConnector.texts, fromKey: nativeConnector.fromKey, toKey: nativeConnector.toKey, fromId: nativeConnector.fromId, fromPointIndex: nativeConnector.fromPointIndex, toId: nativeConnector.toId, toPointIndex: nativeConnector.toPointIndex, points: nativeConnector.points.map((pt => ({ x: pt.x, y: pt.y }))) } } getItemByKey(key) { const nativeItem = this._diagramInstance && this._diagramInstance.getNativeItemByDataKey(key); return nativeItem && this._nativeItemToDiagramItem(nativeItem) } getItemById(id) { const nativeItem = this._diagramInstance && this._diagramInstance.getNativeItemByKey(id); return nativeItem && this._nativeItemToDiagramItem(nativeItem) } getItems() { return this._diagramInstance.getNativeItems().map((nativeItem => nativeItem && this._nativeItemToDiagramItem(nativeItem))) } getSelectedItems() { return this._diagramInstance.getNativeSelectedItems().map((nativeItem => nativeItem && this._nativeItemToDiagramItem(nativeItem))) } setSelectedItems(items) { return this._diagramInstance.setSelectedItems(items.map((item => item.id))) } scrollToItem(item) { return this._diagramInstance.scrollToItems([item.id]) } _invalidateContextMenuCommands() { if (this._contextMenu) { this._contextMenu.option({ commands: this.option("contextMenu.commands") }) } } _invalidateMainToolbarCommands() { if (this._mainToolbar) { this._mainToolbar.option({ commands: this.option("mainToolbar.commands") }) } } _invalidateHistoryToolbarCommands() { if (this._historyToolbar) { this._historyToolbar.option({ commands: this.option("historyToolbar.commands") }) } } _invalidateViewToolbarCommands() { if (this._viewToolbar) { this._viewToolbar.option({ commands: this.option("viewToolbar.commands") }) } } _invalidateToolboxGroups() { if (this._toolbox) { this._toolbox.option({ toolboxGroups: this._getToolboxGroups() }) } } _optionChanged(args) { if (!this.optionsUpdateBar || this.optionsUpdateBar.isUpdateLocked()) { return } this.optionsUpdateBar.beginUpdate(); try { this._optionChangedCore(args) } finally { this.optionsUpdateBar.endUpdate() } } _optionChangedCore(args) { switch (args.name) { case "readOnly": case "disabled": this._updateReadOnlyState(); this._invalidate(); break; case "zoomLevel": if ("zoomLevel" === args.fullName || "zoomLevel.items" === args.fullName || "zoomLevel.value" === args.fullName) { this._updateZoomLevelState() } break; case "autoZoomMode": this._updateAutoZoomState(); break; case "simpleView": this._updateSimpleViewState(); break; case "useNativeScrolling": case "contextToolbox": case "propertiesPanel": this._invalidate(); break; case "fullScreen": this._updateFullscreenState(); break; case "showGrid": this._updateShowGridState(); break; case "snapToGrid": this._updateSnapToGridState(); break; case "gridSize": if ("gridSize" === args.fullName || "gridSize.items" === args.fullName || "gridSize.value" === args.fullName) { this._updateGridSizeState() } break; case "viewUnits": this._updateViewUnitsState(); break; case "units": this._updateUnitsState(); break; case "pageSize": if ("pageSize" === args.fullName || "pageSize.items" === args.fullName) { this._updatePageSizeItemsState() } if ("pageSize" === args.fullName || "pageSize.width" === args.fullName || "pageSize.height" === args.fullName) { this._updatePageSizeState() } break; case "pageOrientation": this._updatePageOrientationState(); break; case "pageColor": this._updatePageColorState(); break; case "nodes": if (0 === args.fullName.indexOf("nodes.autoLayout")) { this._refreshDataSources() } else { this._refreshNodesDataSource() } break; case "edges": this._refreshEdgesDataSource(); break; case "customShapes": if (args.fullName !== args.name) { this._updateAllCustomShapes() } else { this._updateCustomShapes(args.value, args.previousValue) } this._invalidate(); break; case "contextMenu": if ("contextMenu.commands" === args.fullName) { this._invalidateContextMenuCommands() } else { this._invalidate() } break; case "toolbox": if ("toolbox.groups" === args.fullName) { this._invalidateToolboxGroups() } else { this._invalidate() } break; case "mainToolbar": if ("mainToolbar.commands" === args.fullName) { this._invalidateMainToolbarCommands() } else { this._invalidate() } break; case "historyToolbar": if ("historyToolbar.commands" === args.fullName) { this._invalidateHistoryToolbarCommands() } else { this._invalidate() } break; case "viewToolbar": if ("viewToolbar.commands" === args.fullName) { this._invalidateViewToolbarCommands() } else { this._invalidate() } break; case "onItemClick": this._createItemClickAction(); break; case "onItemDblClick": this._createItemDblClickAction(); break; case "onSelectionChanged": this._createSelectionChangedAction(); break; case "onRequestEditOperation": this._createRequestEditOperationAction(); break; case "onRequestLayoutUpdate": this._createRequestLayoutUpdateAction(); break; case "onCustomCommand": this._createCustomCommand(); break; case "defaultItemProperties": this._updateDefaultItemProperties(); break; case "editing": this._updateEditingSettings(); break; case "export": this._toolbars.forEach((toolbar => { toolbar.option("export", this.option("export")) })); if (this._contextMenu) { this._contextMenu.option("export", this.option("export")) } break; case "hasChanges": break; default: super._optionChanged(args) } } }(0, _component_registrator.default)("dxDiagram", Diagram); exports.default = Diagram; module.exports = exports.default; module.exports.default = exports.default }, 41499: /*!***********************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/ui/diagram/ui.diagram.main_toolbar.js ***! \***********************************************************************************/ function(module, exports, __webpack_require__) { exports.default = void 0; var _uiDiagram = _interopRequireDefault(__webpack_require__( /*! ./ui.diagram.toolbar */ 29339)); var _diagram = _interopRequireDefault(__webpack_require__( /*! ./diagram.commands_manager */ 43304)); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } class DiagramMainToolbar extends _uiDiagram.default { _getCommands() { return _diagram.default.getMainToolbarCommands(this.option("commands"), this.option("excludeCommands")) } } exports.default = DiagramMainToolbar; module.exports = exports.default; module.exports.default = exports.default }, 8708: /*!**********************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/ui/diagram/ui.diagram.menu_helper.js ***! \**********************************************************************************/ function(module, exports, __webpack_require__) { exports.default = void 0; var _renderer = (e = __webpack_require__( /*! ../../core/renderer */ 64553), e && e.__esModule ? e : { default: e }); var e; var _icon = __webpack_require__( /*! ../../core/utils/icon */ 69629); const DiagramMenuHelper = { getContextMenuItemTemplate(contextMenu, itemData, itemIndex, itemElement) { const $itemElement = (0, _renderer.default)(itemElement); $itemElement.empty(); const itemKey = void 0 !== itemData.rootCommand ? itemData.rootCommand : -1; if (itemData.icon && !itemData.checked) { const $iconElement = (0, _icon.getImageContainer)(itemData.icon); $itemElement.append($iconElement) } else if (contextMenu._menuHasCheckedItems && true === contextMenu._menuHasCheckedItems[itemKey]) { const $checkElement = (0, _icon.getImageContainer)("check"); $checkElement.css("visibility", !itemData.checked ? "hidden" : "visible"); $itemElement.append($checkElement) } $itemElement.append('<span class="dx-menu-item-text">' + itemData.text + "</span>"); if (Array.isArray(itemData.items) && itemData.items.length > 0) { $itemElement.append('<span class="dx-menu-item-popout-container"><div class="dx-menu-item-popout"></div></span>') } }, getContextMenuCssClass: () => "dx-diagram-contextmenu", onContextMenuItemClick(widget, itemData, actionHandler) { if ((void 0 !== itemData.command || void 0 !== itemData.name) && (!Array.isArray(itemData.items) || !itemData.items.length)) { const parameter = DiagramMenuHelper.getItemCommandParameter(widget, itemData); actionHandler.call(this, itemData.command, itemData.name, parameter) } else if (void 0 !== itemData.rootCommand && void 0 !== itemData.value) { const parameter = DiagramMenuHelper.getItemCommandParameter(widget, itemData, itemData.value); actionHandler.call(this, itemData.rootCommand, void 0, parameter) } }, getItemValue: item => "object" === typeof item.value ? JSON.stringify(item.value) : item.value, getItemOptionText(contextMenu, indexPath) { if (contextMenu) { indexPath = indexPath.slice(); const parentItemOptionText = this._getParentItemOptionText(indexPath); if (contextMenu._originalItemsInfo && contextMenu._originalItemsInfo[parentItemOptionText]) { indexPath[indexPath.length - 1] += contextMenu._originalItemsInfo[parentItemOptionText].indexPathCorrection } } return this._getItemOptionTextCore(indexPath) }, _getParentItemOptionText(indexPath) { const parentIndexPath = indexPath.slice(0, indexPath.length - 1); return this._getItemOptionTextCore(parentIndexPath) }, _getItemOptionTextCore: indexPath => indexPath.reduce(((r, i) => r + `items[${i}].`), ""), getItemCommandParameter(widget, item, value) { if (item.getParameter) { return item.getParameter(widget) } return value }, updateContextMenuItems(contextMenu, itemOptionText, rootCommandKey, items) { if (!contextMenu._originalItemsInfo) { contextMenu._originalItemsInfo = {} } if (!contextMenu._originalItemsInfo[itemOptionText]) { contextMenu._originalItemsInfo[itemOptionText] = { items: contextMenu.option(itemOptionText + "items") || [] } } items = items.map((item => ({ value: this.getItemValue(item), text: item.text, checked: item.checked, widget: contextMenu, rootCommand: rootCommandKey }))); const originalItems = contextMenu._originalItemsInfo[itemOptionText].items; contextMenu.option(itemOptionText + "items", items.concat(originalItems)); if (contextMenu._originalItemsInfo[itemOptionText] && originalItems.length) { contextMenu._originalItemsInfo[itemOptionText].indexPathCorrection = items.length } }, updateContextMenuItemVisible(contextMenu, itemOptionText, visible) { contextMenu.option(itemOptionText + "visible", visible) }, updateContextMenuItemValue(contextMenu, itemOptionText, rootCommandKey, value) { const items = contextMenu.option(itemOptionText + "items"); if ("boolean" === typeof value && (!items || !items.length)) { this._setContextMenuHasCheckedItems(contextMenu, -1); contextMenu.option(itemOptionText + "checked", value) } else if (void 0 !== value) { this._setContextMenuHasCheckedItems(contextMenu, rootCommandKey); if (Array.isArray(items)) { items.forEach(((item, index) => { item.checked = item.value === value })) } } }, _setContextMenuHasCheckedItems(contextMenu, key) { if (!contextMenu._menuHasCheckedItems) { contextMenu._menuHasCheckedItems = {} } contextMenu._menuHasCheckedItems[key] = true } }; exports.default = DiagramMenuHelper; module.exports = exports.default; module.exports.default = exports.default }, 29738: /*!****************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/ui/diagram/ui.diagram.panel.js ***! \****************************************************************************/ function(module, exports, __webpack_require__) { exports.default = void 0; var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../core/renderer */ 64553)); var _ui = _interopRequireDefault(__webpack_require__( /*! ../widget/ui.widget */ 11118)); var _events_engine = _interopRequireDefault(__webpack_require__( /*! ../../common/core/events/core/events_engine */ 92774)); var _index = __webpack_require__( /*! ../../common/core/events/utils/index */ 98834); var _pointer = _interopRequireDefault(__webpack_require__( /*! ../../common/core/events/pointer */ 89797)); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } const POINTERUP_EVENT_NAME = (0, _index.addNamespace)(_pointer.default.up, "dxDiagramPanel"); class DiagramPanel extends _ui.default { _init() { super._init(); this._createOnPointerUpAction() } _render() { super._render(); this._attachPointerUpEvent() } _getPointerUpElements() { return [this.$element()] } _attachPointerUpEvent() { const elements = this._getPointerUpElements(); elements.forEach((element => { _events_engine.default.off(element, POINTERUP_EVENT_NAME); _events_engine.default.on(element, POINTERUP_EVENT_NAME, (e => { if (!(0, _renderer.default)(e.target).closest(".dx-textbox").length) { this._onPointerUpAction() } })) })) } _createOnPointerUpAction() { this._onPointerUpAction = this._createActionByOption("onPointerUp") } _optionChanged(args) { if ("onPointerUp" === args.name) { this._createOnPointerUpAction() } else { super._optionChanged(args) } } } exports.default = DiagramPanel; module.exports = exports.default; module.exports.default = exports.default }, 27574: /*!***************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/ui/diagram/ui.diagram.properties_panel.js ***! \***************************************************************************************/ function(module, exports, __webpack_require__) { exports.default = void 0; var _size = __webpack_require__( /*! ../../core/utils/size */ 57653); var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../core/renderer */ 64553)); var _extend = __webpack_require__( /*! ../../core/utils/extend */ 52576); var _scroll_view = _interopRequireDefault(__webpack_require__( /*! ../scroll_view */ 91374)); var _tab_panel = _interopRequireDefault(__webpack_require__( /*! ../tab_panel */ 78175)); var _uiDiagram = _interopRequireDefault(__webpack_require__( /*! ./ui.diagram.floating_panel */ 80209)); var _diagram = _interopRequireDefault(__webpack_require__( /*! ./diagram.commands_manager */ 43304)); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } class DiagramPropertiesPanel extends _uiDiagram.default { _init() { super._init(); this._commandTabs = _diagram.default.getPropertyPanelCommandTabs(this.option("propertyTabs")); this._createOnCreateToolbar(); this._createOnSelectedGroupChanged() } _initMarkup() { this._toolbars = []; this._selectedToolbar = void 0; super._initMarkup() } _getPopupClass() { let className = "dx-diagram-properties-popup"; if (!this._hasTabPanel()) { className += " dx-diagram-properties-popup-notabs" } return className } _getPopupWidth() { return this.isMobileView() ? "100%" : 420 } _getPopupHeight() { return 340 } _getPopupPosition() { const $parent = this.option("offsetParent"); if (this.isMobileView()) { return { my: "left bottom", at: "left bottom", of: $parent } } return { my: "right bottom", at: "right bottom", of: $parent, offset: "-" + this.option("offsetX") + " -" + this.option("offsetY") } } _getPopupAnimation() { const $parent = this.option("offsetParent"); if (this.isMobileView()) { return { hide: this._getPopupSlideAnimationObject({ direction: "bottom", from: { position: { my: "left bottom", at: "left bottom", of: $parent } }, to: { position: { my: "left top", at: "left bottom", of: $parent } } }), show: this._getPopupSlideAnimationObject({ direction: "top", from: { position: { my: "left top", at: "left bottom", of: $parent } }, to: { position: { my: "left bottom", at: "left bottom", of: $parent } } }) } } return super._getPopupAnimation() } _getPopupOptions() { return (0, _extend.extend)(super._getPopupOptions(), { showTitle: this.isMobileView(), showCloseButton: this.isMobileView() }) } _renderPopupContent($parent) { if (!this._commandTabs.length) { return } const $panel = (0, _renderer.default)("<div>").addClass("dx-diagram-properties-panel").appendTo($parent); if (this._hasTabPanel()) { this._renderTabPanel($panel) } else { this._renderTabContent($panel, this._commandTabs[0], 0, true) } } _hasTabPanel() { return this._commandTabs.length > 1 } _renderTabPanel($parent) { const $tabPanel = (0, _renderer.default)("<div>").appendTo($parent); this._tabPanel = this._createComponent($tabPanel, _tab_panel.default, { focusStateEnabled: false, dataSource: this._commandTabs, itemTemplate: (data, index, $element) => { this._renderTabContent($element, data, index) }, onSelectionChanged: e => { this._onSelectedGroupChangedAction(); this._onPointerUpAction() }, onContentReady: e => { this._popup.option("height", (0, _size.getHeight)(e.component.$element()) + this._getVerticalPaddingsAndBorders()); if (this._firstScrollView) { this._scrollViewHeight = (0, _size.getOuterHeight)(this._firstScrollView.$element()); this._firstScrollView.option("height", this._scrollViewHeight) } } }) } _renderTabContent($parent, tab, index, isSingleTab) { const $scrollViewWrapper = (0, _renderer.default)("<div>").appendTo($parent); const scrollView = this._createComponent($scrollViewWrapper, _scroll_view.default, { height: this._scrollViewHeight }); this._renderTabInnerContent(scrollView.content(), tab, index); if (isSingleTab) { this._popup.option("height", (0, _size.getHeight)(scrollView.$element()) + this._getVerticalPaddingsAndBorders()) } else { this._firstScrollView = this._firstScrollView || scrollView } } _renderTabInnerContent($parent, group, index) { if (group.groups) { group.groups.forEach(((sg, si) => { this._renderTabGroupContent($parent, index, sg.title, sg.commands) })) } else if (group.commands) { this._renderTabGroupContent($parent, index, void 0, group.commands) } } _renderTabGroupContent($parent, index, title, commands) { if (title) { (0, _renderer.default)("<div>").addClass("dx-diagram-properties-panel-group-title").appendTo($parent).text(title) } const $toolbar = (0, _renderer.default)("<div>").addClass("dx-diagram-properties-panel-group-toolbar").appendTo($parent); const args = { $parent: $toolbar, commands: commands }; this._onCreateToolbarAction(args); if (!this._toolbars[index]) { this._toolbars[index] = [] } this._toolbars[index].push(args.toolbar); this._selectedToolbar = args.toolbar } getActiveToolbars() { const index = this._tabPanel ? this._tabPanel.option("selectedIndex") : 0; return this._toolbars[index] } _createOnCreateToolbar() { this._onCreateToolbarAction = this._createActionByOption("onCreateToolbar") } _createOnSelectedGroupChanged() { this._onSelectedGroupChangedAction = this._createActionByOption("onSelectedGroupChanged") } _optionChanged(args) { switch (args.name) { case "onCreateToolbar": this._createOnCreateToolbar(); break; case "onSelectedGroupChanged": this._createOnSelectedGroupChanged(); break; case "propertyTabs": this._invalidate(); break; default: super._optionChanged(args) } } } exports.default = DiagramPropertiesPanel; module.exports = exports.default; module.exports.default = exports.default }, 81567: /*!*****************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/ui/diagram/ui.diagram.properties_toolbar.js ***! \*****************************************************************************************/ function(module, exports, __webpack_require__) { exports.default = void 0; var _uiDiagram = _interopRequireDefault(__webpack_require__( /*! ./ui.diagram.toolbar */ 29339)); var _diagram = _interopRequireDefault(__webpack_require__( /*! ./diagram.commands_manager */ 43304)); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } class DiagramPropertiesToolbar extends _uiDiagram.default { _getCommands() { return _diagram.default.getPropertiesToolbarCommands() } } exports.default = DiagramPropertiesToolbar; module.exports = exports.default; module.exports.default = exports.default }, 4559: /*!**********************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/ui/diagram/ui.diagram.scroll_view.js ***! \**********************************************************************************/ function(module, exports, __webpack_require__) { exports.default = void 0; var _size = __webpack_require__( /*! ../../core/utils/size */ 57653); var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../core/renderer */ 64553)); var _ui = _interopRequireDefault(__webpack_require__( /*! ../widget/ui.widget */ 11118)); var _scroll_view = _interopRequireDefault(__webpack_require__( /*! ../scroll_view */ 91374)); var _m_widget_utils = __webpack_require__( /*! ../../__internal/grids/pivot_grid/m_widget_utils */ 12062); var _diagram = __webpack_require__( /*! ./diagram.importer */ 11744); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } class DiagramScrollView extends _ui.default { _init() { super._init(); const { EventDispatcher: EventDispatcher } = (0, _diagram.getDiagram)(); this.onScroll = new EventDispatcher; this._createOnCreateDiagramAction() } _initMarkup() { super._initMarkup(); const $scrollViewWrapper = (0, _renderer.default)("<div>").appendTo(this.$element()); const options = { direction: "both", bounceEnabled: false, scrollByContent: false, onScroll: _ref => { let { scrollOffset: scrollOffset } = _ref; this._raiseOnScroll(scrollOffset.left, scrollOffset.top) } }; const useNativeScrolling = this.option("useNativeScrolling"); if (void 0 !== useNativeScrolling) { options.useNative = useNativeScrolling } this._scrollView = this._createComponent($scrollViewWrapper, _scroll_view.default, options); this._onCreateDiagramAction({ $parent: (0, _renderer.default)(this._scrollView.content()), scrollView: this }) } setScroll(left, top) { this._scrollView.scrollTo({ left: left, top: top }); this._raiseOnScrollWithoutPoint() } offsetScroll(left, top) { this._scrollView.scrollBy({ left: left, top: top }); this._raiseOnScrollWithoutPoint() } getSize() { const { Size: Size } = (0, _diagram.getDiagram)(); const $element = this._scrollView.$element(); return new Size(Math.floor((0, _size.getWidth)($element)), Math.floor((0, _size.getHeight)($element))) } getScrollContainer() { return this._scrollView.$element()[0] } getScrollBarWidth() { return this.option("useNativeScrolling") ? (0, _m_widget_utils.calculateScrollbarWidth)() : 0 } detachEvents() {} _raiseOnScroll(left, top) { const { Point: Point } = (0, _diagram.getDiagram)(); this.onScroll.raise("notifyScrollChanged", (() => new Point(left, top))) } _raiseOnScrollWithoutPoint() { const { Point: Point } = (0, _diagram.getDiagram)(); this.onScroll.raise("notifyScrollChanged", (() => new Point(this._scrollView.scrollLeft(), this._scrollView.scrollTop()))) } _createOnCreateDiagramAction() { this._onCreateDiagramAction = this._createActionByOption("onCreateDiagram") } _optionChanged(args) { switch (args.name) { case "onCreateDiagram": this._createOnCreateDiagramAction(); break; case "useNativeScrolling": break; default: super._optionChanged(args) } } } exports.default = DiagramScrollView; module.exports = exports.default; module.exports.default = exports.default }, 29339: /*!******************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/ui/diagram/ui.diagram.toolbar.js ***! \******************************************************************************/ function(module, exports, __webpack_require__) { exports.default = void 0; var _size = __webpack_require__( /*! ../../core/utils/size */ 57653); var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../core/renderer */ 64553)); var _toolbar = _interopRequireDefault(__webpack_require__( /*! ../toolbar */ 2850)); var _context_menu = _interopRequireDefault(__webpack_require__( /*! ../context_menu */ 34378)); var _diagram = _interopRequireDefault(__webpack_require__( /*! ./diagram.bar */ 35629)); var _extend = __webpack_require__( /*! ../../core/utils/extend */ 52576); var _window = __webpack_require__( /*! ../../core/utils/window */ 3104); var _uiDiagram = _interopRequireDefault(__webpack_require__( /*! ./ui.diagram.panel */ 29738)); var _uiDiagram2 = _interopRequireDefault(__webpack_require__( /*! ./ui.diagram.menu_helper */ 8708)); var _diagram2 = __webpack_require__( /*! ./diagram.importer */ 11744); __webpack_require__( /*! ../select_box */ 60695); __webpack_require__( /*! ../color_box */ 87928); __webpack_require__( /*! ../check_box */ 94319); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } class DiagramToolbar extends _uiDiagram.default { _init() { this._commands = []; this._itemHelpers = {}; this._commandContextMenus = {}; this._contextMenuList = []; this._valueConverters = {}; this.bar = new DiagramToolbarBar(this); this._createOnInternalCommand(); this._createOnCustomCommand(); this._createOnSubMenuVisibilityChangingAction(); super._init() } _initMarkup() { super._initMarkup(); const isServerSide = !(0, _window.hasWindow)(); if (!this.option("skipAdjustSize") && !isServerSide) { (0, _size.setWidth)(this.$element(), "") } this._commands = this._getCommands(); this._itemHelpers = {}; this._commandContextMenus = {}; this._contextMenuList = []; const $toolbar = this._createMainElement(); this._renderToolbar($toolbar); if (!this.option("skipAdjustSize") && !isServerSide) { const $toolbarContent = this.$element().find(".dx-toolbar-before"); (0, _size.setWidth)(this.$element(), (0, _size.getWidth)($toolbarContent)) } } _createMainElement() { return (0, _renderer.default)("<div>").addClass("dx-diagram-toolbar").appendTo(this._$element) } _getCommands() { return this.option("commands") || [] } _renderToolbar($toolbar) { const beforeCommands = this._commands.filter((command => -1 === ["after", "center"].indexOf(command.location))); const centerCommands = this._commands.filter((command => "center" === command.location)); const afterCommands = this._commands.filter((command => "after" === command.location)); const dataSource = [].concat(this._prepareToolbarItems(beforeCommands, "before", this._executeCommand)).concat(this._prepareToolbarItems(centerCommands, "center", this._executeCommand)).concat(this._prepareToolbarItems(afterCommands, "after", this._executeCommand)); this._toolbarInstance = this._createComponent($toolbar, _toolbar.default, { dataSource: dataSource }) } _prepareToolbarItems(items, location, actionHandler) { return items.map((item => (0, _extend.extend)(true, { location: location, locateInMenu: this.option("locateInMenu") }, this._createItem(item, location, actionHandler), this._createItemOptions(item), this._createItemActionOptions(item, actionHandler)))) } _createItem(item, location, actionHandler) { if (item.getCommandValue || item.getEditorValue || item.getEditorDisplayValue) { this._valueConverters[item.command] = { getCommandValue: item.getCommandValue, getEditorValue: item.getEditorValue, getEditorDisplayValue: item.getEditorDisplayValue } } if ("separator" === item.widget) { return { template: (data, index, element) => { (0, _renderer.default)(element).addClass("dx-diagram-toolbar-separator") }, menuItemTemplate: (data, index, element) => { (0, _renderer.default)(element).addClass("dx-diagram-toolbar-menu-separator") } } } return { widget: item.widget || "dxButton", cssClass: item.cssClass, options: { stylingMode: this.option("buttonStylingMode"), type: this.option("buttonType"), text: item.text, hint: item.hint, icon: item.icon || item.iconUnchecked || item.iconChecked, iconChecked: item.iconChecked, iconUnchecked: item.iconUnchecked, onInitialized: e => this._onItemInitialized(e.component, item), onContentReady: e => this._onItemContentReady(e.component, item, actionHandler) } } } _createItemOptions(_ref) { let { widget: widget, command: command, items: items, valueExpr: valueExpr, displayExpr: displayExpr, showText: showText, hint: hint, icon: icon } = _ref; if ("dxSelectBox" === widget) { return this._createSelectBoxItemOptions(command, hint, items, valueExpr, displayExpr) } else if ("dxTextBox" === widget) { return this._createTextBoxItemOptions(command, hint) } else if ("dxColorBox" === widget) { return this._createColorBoxItemOptions(command, hint, icon) } else if (!widget || "dxButton" === widget) { return { showText: showText || "inMenu" } } } _createSelectBoxItemOptions(command, hint, items, valueExpr, displayExpr) { let options = this._createTextEditorItemOptions(hint); options = (0, _extend.extend)(true, options, { options: { dataSource: items, displayExpr: displayExpr || "text", valueExpr: valueExpr || "value" } }); const isSelectButton = items && items.every((i => void 0 !== i.icon)); if (isSelectButton) { options = (0, _extend.extend)(true, options, { options: { fieldTemplate: (data, container) => { (0, _renderer.default)("<i>").addClass(data && data.icon || "dx-diagram-i-selectbox-null-icon dx-diagram-i").appendTo(container); (0, _renderer.default)("<div>").dxTextBox({ readOnly: true, stylingMode: "outlined" }).appendTo(container) }, itemTemplate: (data, index, container) => { (0, _renderer.default)(container).attr("title", data.hint); return `<i class="${data.icon}"></i>` } } }) } return options } _createTextBoxItemOptions(command, hint) { let options = this._createTextEditorItemOptions(hint); options = (0, _extend.extend)(true, options, { options: { readOnly: true, focusStateEnabled: false, hoverStateEnabled: false, buttons: [{ name: "dropDown", location: "after", options: { icon: "spindown", disabled: false, stylingMode: "text", onClick: e => { const contextMenu = this._commandContextMenus[command]; if (contextMenu) { this._toggleContextMenu(contextMenu) } } } }] } }); return options } _createColorBoxItemOptions(command, hint, icon) { let options = this._createTextEditorItemOptions(hint); if (icon) { options = (0, _extend.extend)(true, options, { options: { openOnFieldClick: true, fieldTemplate: (data, container) => { (0, _renderer.default)("<i>").addClass(icon).css("borderBottomColor", data).appendTo(container); (0, _renderer.default)("<div>").dxTextBox({ readOnly: true, stylingMode: "outlined" }).appendTo(container) } } }) } options = (0, _extend.extend)(true, options, { options: { onOpened: () => { if (this.option("isMobileView")) { (0, _renderer.default)("body").addClass("dx-diagram-mobile-toolbar-color-box-opened") } }, onClosed: () => { (0, _renderer.default)("body").removeClass("dx-diagram-mobile-toolbar-color-box-opened") } } }); return options } _createTextEditorItemOptions(hint) { return { options: { stylingMode: this.option("editorStylingMode"), hint: hint } } } _createItemActionOptions(item, handler) { switch (item.widget) { case "dxSelectBox": case "dxColorBox": case "dxCheckBox": return { options: { onValueChanged: e => { const parameter = _uiDiagram2.default.getItemCommandParameter(this, item, e.component.option("value")); handler.call(this, item.command, item.name, parameter) } } }; case "dxTextBox": return {}; default: return { options: { onClick: e => { if (!item.items) { const parameter = _uiDiagram2.default.getItemCommandParameter(this, item); handler.call(this, item.command, item.name, parameter) } else { const contextMenu = e.component._contextMenu; if (contextMenu) { this._toggleContextMenu(contextMenu) } } } } } } } _toggleContextMenu(contextMenu) { this._contextMenuList.forEach((cm => { if (contextMenu !== cm) { cm.hide() } })); contextMenu.toggle() } _onItemInitialized(widget, item) { this._addItemHelper(item.command, new DiagramToolbarItemHelper(widget)) } _onItemContentReady(widget, item, actionHandler) { if (("dxButton" === widget.NAME || "dxTextBox" === widget.NAME) && item.items) { const isTouchMode = this._isTouchMode(); const $menuContainer = (0, _renderer.default)("<div>").appendTo(this.$element()); widget._contextMenu = this._createComponent($menuContainer, _context_menu.default, { items: item.items, target: widget.$element(), cssClass: _uiDiagram2.default.getContextMenuCssClass(), showEvent: "", hideOnOutsideClick: e => !isTouchMode && 0 === (0, _renderer.default)(e.target).closest(widget._contextMenu._dropDownButtonElement).length, focusStateEnabled: false, position: { at: "left bottom" }, itemTemplate: function(itemData, itemIndex, itemElement) { _uiDiagram2.default.getContextMenuItemTemplate(this, itemData, itemIndex, itemElement) }, onItemClick: _ref2 => { let { component: component, itemData: itemData } = _ref2; _uiDiagram2.default.onContextMenuItemClick(this, itemData, actionHandler.bind(this)); if (!itemData.items || !itemData.items.length) { component.hide() } }, onShowing: e => { if (this._showingSubMenu) { return } this._showingSubMenu = e.component; this._onSubMenuVisibilityChangingAction({ visible: true, component: this }); e.component.option("items", e.component.option("items")); delete this._showingSubMenu }, onInitialized: _ref3 => { let { component: component } = _ref3; return this._onContextMenuInitialized(component, item, widget) }, onDisposing: _ref4 => { let { component: component } = _ref4; return this._onContextMenuDisposing(component, item) } }); if (!isTouchMode) { widget._contextMenu._dropDownButtonElement = widget.$element(); if ("dxTextBox" === widget.NAME) { widget._contextMenu._dropDownButtonElement = widget.getButton("dropDown").element() } } } } _isTouchMode() { const { Browser: Browser } = (0, _diagram2.getDiagram)(); return Browser.TouchUI } _onContextMenuInitialized(widget, item, rootWidget) { this._contextMenuList.push(widget); if (item.command) { this._commandContextMenus[item.command] = widget } this._addContextMenuHelper(item, widget, [], rootWidget) } _addItemHelper(command, helper) { if (void 0 !== command) { if (this._itemHelpers[command]) { throw new Error("Toolbar cannot contain duplicated commands.") } this._itemHelpers[command] = helper } } _addContextMenuHelper(item, widget, indexPath, rootWidget) { if (item.items) { item.items.forEach(((subItem, index) => { const itemIndexPath = indexPath.concat(index); this._addItemHelper(subItem.command, new DiagramToolbarSubItemHelper(widget, itemIndexPath, subItem.command, rootWidget)); this._addContextMenuHelper(subItem, widget, itemIndexPath, rootWidget) })) } } _onContextMenuDisposing(widget, item) { this._contextMenuList.splice(this._contextMenuList.indexOf(widget), 1); delete this._commandContextMenus[item.command] } _executeCommand(command, name, value) { if (this._updateLocked) { return } if ("number" === typeof command) { const valueConverter = this._valueConverters[command]; if (valueConverter && valueConverter.getCommandValue) { value = valueConverter.getCommandValue(value) } this.bar.raiseBarCommandExecuted(command, value) } else if ("string" === typeof command) { this._onInternalCommandAction({ command: command }) } if (void 0 !== name) { this._onCustomCommandAction({ name: name }) } } _createOnInternalCommand() { this._onInternalCommandAction = this._createActionByOption("onInternalCommand") } _createOnCustomCommand() { this._onCustomCommandAction = this._createActionByOption("onCustomCommand") } _setItemEnabled(command, enabled) { if (command in this._itemHelpers) { const helper = this._itemHelpers[command]; if (helper.canUpdate(this._showingSubMenu)) { helper.setEnabled(enabled) } } } _setEnabled(enabled) { this._toolbarInstance.option("disabled", !enabled); this._contextMenuList.forEach((contextMenu => { contextMenu.option("disabled", !enabled) })) } _setItemValue(command, value) { try { this._updateLocked = true; if (command in this._itemHelpers) { const helper = this._itemHelpers[command]; if (helper.canUpdate(this._showingSubMenu)) { const valueConverter = this._valueConverters[command]; if (valueConverter && valueConverter.getEditorValue) { value = valueConverter.getEditorValue(value) } let displayValue; if (valueConverter && valueConverter.getEditorDisplayValue) { displayValue = valueConverter.getEditorDisplayValue(value) } const contextMenu = this._commandContextMenus[command]; helper.setValue(value, displayValue, contextMenu, contextMenu && command) } } } finally { this._updateLocked = false } } _setItemSubItems(command, items) { this._updateLocked = true; if (command in this._itemHelpers) { const helper = this._itemHelpers[command]; if (helper.canUpdate(this._showingSubMenu)) { const contextMenu = this._commandContextMenus[command]; helper.setItems(items, contextMenu, contextMenu && command) } } this._updateLocked = false } _createOnSubMenuVisibilityChangingAction() { this._onSubMenuVisibilityChangingAction = this._createActionByOption("onSubMenuVisibilityChanging") } _optionChanged(args) { switch (args.name) { case "isMobileView": (0, _renderer.default)("body").removeClass("dx-diagram-mobile-toolbar-color-box-opened"); this._invalidate(); break; case "onSubMenuVisibilityChanging": this._createOnSubMenuVisibilityChangingAction(); break; case "onInternalCommand": this._createOnInternalCommand(); break; case "onCustomCommand": this._createOnCustomCommand(); break; case "container": case "commands": this._invalidate(); break; case "export": break; default: super._optionChanged(args) } } _getDefaultOptions() { return (0, _extend.extend)(super._getDefaultOptions(), { isMobileView: false, export: { fileName: "Diagram" }, locateInMenu: "auto", buttonStylingMode: "text", buttonType: "normal", editorStylingMode: "filled", skipAdjustSize: false }) } setCommandChecked(command, checked) { this._setItemValue(command, checked) } setCommandEnabled(command, enabled) { this._setItemEnabled(command, enabled) } } class DiagramToolbarBar extends _diagram.default { getCommandKeys() { return this._getKeys(this._owner._commands) } setItemValue(key, value) { this._owner._setItemValue(key, value) } setItemEnabled(key, enabled) { this._owner._setItemEnabled(key, enabled) } setEnabled(enabled) { this._owner._setEnabled(enabled) } setItemSubItems(key, items) { this._owner._setItemSubItems(key, items) } } class DiagramToolbarItemHelper { constructor(widget) { this._widget = widget } canUpdate(showingSubMenu) { return void 0 === showingSubMenu } setEnabled(enabled) { this._widget.option("disabled", !enabled) } setValue(value, displayValue, contextMenu, rootCommandKey) { if ("value" in this._widget.option()) { this._updateEditorValue(value, displayValue) } else if (void 0 !== value) { this._updateButtonValue(value) } if (contextMenu) { this._updateContextMenuItemValue(contextMenu, "", rootCommandKey, value) } } setItems(items, contextMenu, rootCommandKey) { if (contextMenu) { this._updateContextMenuItems(contextMenu, "", rootCommandKey, items) } else { this._updateEditorItems(items) } } _updateContextMenuItems(contextMenu, itemOptionText, rootCommandKey, items) { _uiDiagram2.default.updateContextMenuItems(contextMenu, itemOptionText, rootCommandKey, items) } _updateEditorItems(items) { if ("items" in this._widget.option()) { this._widget.option("items", items.map((item => ({ value: _uiDiagram2.default.getItemValue(item), text: item.text })))) } } _updateEditorValue(value, displayValue) { this._widget.option("value", value); if (!this._widget.option("selectedItem") && displayValue) { this._widget.option("value", displayValue) } } _updateButtonValue(value) { if (this._widget.option("iconChecked") && this._widget.option("iconUnchecked")) { this._widget.option("icon", value ? this._widget.option("iconChecked") : this._widget.option("iconUnchecked")) } else { this._widget.$element().toggleClass("dx-format-active", value) } } _updateContextMenuItemValue(contextMenu, itemOptionText, rootCommandKey, value) { _uiDiagram2.default.updateContextMenuItemValue(contextMenu, itemOptionText, rootCommandKey, value) } } class DiagramToolbarSubItemHelper extends DiagramToolbarItemHelper { constructor(widget, indexPath, rootCommandKey, rootWidget) { super(widget); this._indexPath = indexPath; this._rootCommandKey = rootCommandKey; this._rootWidget = rootWidget } canUpdate(showingSubMenu) { return super.canUpdate(showingSubMenu) || showingSubMenu === this._widget } setEnabled(enabled) { this._widget.option(this._getItemOptionText() + "disabled", !enabled); const rootEnabled = this._hasEnabledCommandItems(this._widget.option("items")); this._rootWidget.option("disabled", !rootEnabled) } _hasEnabledCommandItems(items) { if (items) { return items.some((item => void 0 !== item.command && !item.disabled || this._hasEnabledCommandItems(item.items))) } return false } setValue(value) { this._updateContextMenuItemValue(this._widget, this._getItemOptionText(), this._rootCommandKey, value) } setItems(items) { this._updateContextMenuItems(this._widget, this._getItemOptionText(), this._rootCommandKey, items) } _getItemOptionText() { return _uiDiagram2.default.getItemOptionText(this._widget, this._indexPath) } } exports.default = DiagramToolbar; module.exports = exports.default; module.exports.default = exports.default }, 50427: /*!******************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/ui/diagram/ui.diagram.toolbox.js ***! \******************************************************************************/ function(module, exports, __webpack_require__) { exports.default = void 0; var _size = __webpack_require__( /*! ../../core/utils/size */ 57653); var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../core/renderer */ 64553)); var _extend = __webpack_require__( /*! ../../core/utils/extend */ 52576); var _window = __webpack_require__( /*! ../../core/utils/window */ 3104); var _deferred = __webpack_require__( /*! ../../core/utils/deferred */ 87739); var _message = _interopRequireDefault(__webpack_require__( /*! ../../common/core/localization/message */ 4671)); var _text_box = _interopRequireDefault(__webpack_require__( /*! ../text_box */ 20780)); var _accordion = _interopRequireDefault(__webpack_require__( /*! ../accordion */ 30543)); var _scroll_view = _interopRequireDefault(__webpack_require__( /*! ../scroll_view */ 91374)); var _tooltip = _interopRequireDefault(__webpack_require__( /*! ../tooltip */ 93370)); var _diagram = __webpack_require__( /*! ./diagram.importer */ 11744); var _uiDiagram = _interopRequireDefault(__webpack_require__( /*! ./ui.diagram.floating_panel */ 80209)); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } class DiagramToolbox extends _uiDiagram.default { _init() { super._init(); this._toolboxes = []; this._filterText = ""; this._createOnShapeCategoryRenderedAction(); this._createOnFilterChangedAction() } _getPopupClass() { return "dx-diagram-toolbox-popup" } _getPopupHeight() { return this.isMobileView() ? "100%" : super._getPopupHeight() } _getPopupMaxHeight() { return this.isMobileView() ? "100%" : super._getPopupMaxHeight() } _getPopupMinHeight() { return 130 } _getPopupPosition() { const $parent = this.option("offsetParent"); const position = { my: "left top", at: "left top", of: $parent }; if (!this.isMobileView()) { return (0, _extend.extend)(position, { offset: this.option("offsetX") + " " + this.option("offsetY") }) } return position } _getPopupAnimation() { const $parent = this.option("offsetParent"); if (this.isMobileView()) { return { hide: this._getPopupSlideAnimationObject({ direction: "left", from: { position: { my: "left top", at: "left top", of: $parent } }, to: { position: { my: "right top", at: "left top", of: $parent } } }), show: this._getPopupSlideAnimationObject({ direction: "right", from: { position: { my: "right top", at: "left top", of: $parent } }, to: { position: { my: "left top", at: "left top", of: $parent } } }) } } return super._getPopupAnimation() } _getPopupOptions() { const options = super._getPopupOptions(); if (!this.isMobileView()) { return (0, _extend.extend)(options, { showTitle: true, toolbarItems: [{ widget: "dxButton", location: "center", options: { activeStateEnabled: false, focusStateEnabled: false, hoverStateEnabled: false, icon: "diagram-toolbox-drag", stylingMode: "outlined", type: "normal" } }] }) } return options } _renderPopupContent($parent) { let panelHeight = "100%"; if (this.option("showSearch")) { const $inputContainer = (0, _renderer.default)("<div>").addClass("dx-diagram-toolbox-input-container").appendTo($parent); this._updateElementWidth($inputContainer); this._renderSearchInput($inputContainer); if ((0, _window.hasWindow)()) { panelHeight = "calc(100% - " + (0, _size.getHeight)(this._searchInput.$element()) + "px)" } } const $panel = (0, _renderer.default)("<div>").addClass("dx-diagram-toolbox-panel").appendTo($parent); (0, _size.setHeight)($panel, panelHeight); this._updateElementWidth($panel); this._renderScrollView($panel) } _updateElementWidth($element) { if (void 0 !== this.option("toolboxWidth")) { $element.css("width", this.option("toolboxWidth")) } } updateMaxHeight() { if (this.isMobileView()) { return } let maxHeight = 6; if (this._popup) { const $title = this._getPopupTitle(); maxHeight += (0, _size.getOuterHeight)($title) } if (this._accordion) { maxHeight += (0, _size.getOuterHeight)(this._accordion.$element()) } if (this._searchInput) { maxHeight += (0, _size.getOuterHeight)(this._searchInput.$element()) } this.option("maxHeight", maxHeight) } _renderSearchInput($parent) { const $input = (0, _renderer.default)("<div>").addClass("dx-diagram-toolbox-input").appendTo($parent); this._searchInput = this._createComponent($input, _text_box.default, { stylingMode: "outlined", placeholder: _message.default.format("dxDiagram-uiSearch"), onValueChanged: data => { this._onInputChanged(data.value) }, valueChangeEvent: "keyup", buttons: [{ name: "search", location: "after", options: { activeStateEnabled: false, focusStateEnabled: false, hoverStateEnabled: false, icon: "search", stylingMode: "outlined", type: "normal", onClick: () => { this._searchInput.focus() } } }] }) } _renderScrollView($parent) { const $scrollViewWrapper = (0, _renderer.default)("<div>").appendTo($parent); this._scrollView = this._createComponent($scrollViewWrapper, _scroll_view.default); const _moveIsAllowed = this._scrollView._moveIsAllowed.bind(this._scrollView); this._scrollView._moveIsAllowed = e => { for (let i = 0; i < this._toolboxes.length; i++) { const $element = this._toolboxes[i]; if ((0, _renderer.default)($element).children(".dxdi-tb-start-drag-flag").length) { return false } } return _moveIsAllowed(e) }; const $accordion = (0, _renderer.default)("<div>").appendTo(this._scrollView.content()); this._updateElementWidth($accordion); this._renderAccordion($accordion) } _getAccordionDataSource() { const result = []; const toolboxGroups = this.option("toolboxGroups"); for (let i = 0; i < toolboxGroups.length; i++) { const category = toolboxGroups[i].category; const title = toolboxGroups[i].title; const groupObj = { category: category, title: title || category, expanded: toolboxGroups[i].expanded, displayMode: toolboxGroups[i].displayMode, shapes: toolboxGroups[i].shapes, onTemplate: (widget, $element, data) => { const $toolboxElement = (0, _renderer.default)($element); this._onShapeCategoryRenderedAction({ category: data.category, displayMode: data.displayMode, dataToggle: "shape-toolbox-tooltip", shapes: data.shapes, $element: $toolboxElement }); this._toolboxes.push($toolboxElement); if ("" !== this._filterText) { this._onFilterChangedAction({ text: this._filterText, filteringToolboxes: this._toolboxes.length - 1 }) } this._createTooltips($toolboxElement) } }; result.push(groupObj) } return result } _createTooltips($toolboxElement) { if (this._isTouchMode()) { return } const targets = $toolboxElement.find('[data-toggle="shape-toolbox-tooltip"]'); const $container = this.$element(); targets.each(((index, element) => { const $target = (0, _renderer.default)(element); const title = $target.attr("title"); if (title) { const $tooltip = (0, _renderer.default)("<div>").text(title).appendTo($container); this._createComponent($tooltip, _tooltip.default, { target: $target.get(0), showEvent: "mouseenter", hideEvent: "mouseleave", position: "top", animation: { show: { type: "fade", from: 0, to: 1, delay: 500 }, hide: { type: "fade", from: 1, to: 0, delay: 100 } } }) } })) } _isTouchMode() { const { Browser: Browser } = (0, _diagram.getDiagram)(); return Browser.TouchUI } _renderAccordion($container) { this._accordion = this._createComponent($container, _accordion.default, { multiple: true, animationDuration: 0, activeStateEnabled: false, focusStateEnabled: false, hoverStateEnabled: false, collapsible: true, displayExpr: "title", dataSource: this._getAccordionDataSource(), disabled: this.option("disabled"), itemTemplate: (data, index, $element) => { data.onTemplate(this, $element, data) }, onSelectionChanged: e => { this._updateScrollAnimateSubscription(e.component) }, onContentReady: e => { e.component.option("selectedItems", []); const items = e.component.option("dataSource"); for (let i = 0; i < items.length; i++) { if (false === items[i].expanded) { e.component.collapseItem(i) } else if (true === items[i].expanded) { e.component.expandItem(i) } } if (items.length && void 0 === items[0].expanded) { e.component.expandItem(0) } this._updateScrollAnimateSubscription(e.component) } }) } _updateScrollAnimateSubscription(component) { component._deferredAnimate = new _deferred.Deferred; component._deferredAnimate.done((() => { this.updateMaxHeight(); this._scrollView.update(); this._updateScrollAnimateSubscription(component) })) } _onInputChanged(text) { this._filterText = text; this._onFilterChangedAction({ text: this._filterText, filteringToolboxes: this._toolboxes.map((($element, index) => index)) }); this.updateTooltips(); this.updateMaxHeight(); this._scrollView.update() } updateFilter() { this._onInputChanged(this._filterText) } updateTooltips() { this._toolboxes.forEach(($element => { const $tooltipContainer = (0, _renderer.default)($element); this._createTooltips($tooltipContainer) })) } _createOnShapeCategoryRenderedAction() { this._onShapeCategoryRenderedAction = this._createActionByOption("onShapeCategoryRendered") } _createOnFilterChangedAction() { this._onFilterChangedAction = this._createActionByOption("onFilterChanged") } _optionChanged(args) { switch (args.name) { case "onShapeCategoryRendered": this._createOnShapeCategoryRenderedAction(); break; case "onFilterChanged": this._createOnFilterChangedAction(); break; case "showSearch": case "toolboxWidth": this._invalidate(); break; case "toolboxGroups": this._accordion.option("dataSource", this._getAccordionDataSource()); break; default: super._optionChanged(args) } } } exports.default = DiagramToolbox; module.exports = exports.default; module.exports.default = exports.default }, 89771: /*!***********************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/ui/diagram/ui.diagram.view_toolbar.js ***! \***********************************************************************************/ function(module, exports, __webpack_require__) { exports.default = void 0; var _uiDiagram = _interopRequireDefault(__webpack_require__( /*! ./ui.diagram.toolbar */ 29339)); var _diagram = _interopRequireDefault(__webpack_require__( /*! ./diagram.commands_manager */ 43304)); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } class DiagramViewToolbar extends _uiDiagram.default { _getCommands() { return _diagram.default.getViewToolbarCommands(this.option("commands"), this.option("excludeCommands")) } } exports.default = DiagramViewToolbar; module.exports = exports.default; module.exports.default = exports.default }, 35757: /*!**********************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/ui/dialog.js ***! \**********************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "alert", { enumerable: true, get: function() { return _m_dialog.alert } }); Object.defineProperty(exports, "confirm", { enumerable: true, get: function() { return _m_dialog.confirm } }); Object.defineProperty(exports, "custom", { enumerable: true, get: function() { return _m_dialog.custom } }); var _m_dialog = __webpack_require__( /*! ../__internal/ui/m_dialog */ 84719) }, 5298: /*!*************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/ui/draggable.js ***! \*************************************************************/ function(module, exports, __webpack_require__) { exports.default = void 0; var _m_draggable = (e = __webpack_require__( /*! ../__internal/m_draggable */ 89983), e && e.__esModule ? e : { default: e }); var e; exports.default = _m_draggable.default; module.exports = exports.default; module.exports.default = exports.default }, 7968: /*!**********************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/ui/drawer.js ***! \**********************************************************/ function(module, exports, __webpack_require__) { exports.default = void 0; var _m_drawer = (e = __webpack_require__( /*! ../__internal/ui/drawer/m_drawer */ 13768), e && e.__esModule ? e : { default: e }); var e; exports.default = _m_drawer.default; module.exports = exports.default; module.exports.default = exports.default }, 74417: /*!*****************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/ui/drop_down_box.js ***! \*****************************************************************/ function(module, exports, __webpack_require__) { exports.default = void 0; var _m_drop_down_box = (e = __webpack_require__( /*! ../__internal/ui/m_drop_down_box */ 41163), e && e.__esModule ? e : { default: e }); var e; exports.default = _m_drop_down_box.default; module.exports = exports.default; module.exports.default = exports.default }, 56582: /*!********************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/ui/drop_down_button.js ***! \********************************************************************/ function(module, exports, __webpack_require__) { exports.default = void 0; var _m_drop_down_button = (e = __webpack_require__( /*! ../__internal/ui/m_drop_down_button */ 73096), e && e.__esModule ? e : { default: e }); var e; exports.default = _m_drop_down_button.default; module.exports = exports.default; module.exports.default = exports.default }, 99142: /*!****************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/ui/drop_down_editor/ui.drop_down_editor.js ***! \****************************************************************************************/ function(module, exports, __webpack_require__) { exports.default = void 0; var _m_drop_down_editor = (e = __webpack_require__( /*! ../../__internal/ui/drop_down_editor/m_drop_down_editor */ 28906), e && e.__esModule ? e : { default: e }); var e; exports.default = _m_drop_down_editor.default; module.exports = exports.default; module.exports.default = exports.default }, 78694: /*!*****************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/ui/editor/editor.js ***! \*****************************************************************/ function(module, exports, __webpack_require__) { exports.default = void 0; var _editor = (e = __webpack_require__( /*! ../../__internal/ui/editor/editor */ 24768), e && e.__esModule ? e : { default: e }); var e; exports.default = _editor.default; module.exports = exports.default; module.exports.default = exports.default }, 7632: /*!*****************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/ui/editor/ui.data_expression.js ***! \*****************************************************************************/ function(module, exports, __webpack_require__) { exports.default = void 0; var _m_data_expression = (e = __webpack_require__( /*! ../../__internal/ui/editor/m_data_expression */ 42006), e && e.__esModule ? e : { default: e }); var e; exports.default = _m_data_expression.default; module.exports = exports.default; module.exports.default = exports.default }, 14247: /*!****************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/ui/file_manager.js ***! \****************************************************************/ function(module, exports, __webpack_require__) { exports.default = void 0; var _ui = (e = __webpack_require__( /*! ./file_manager/ui.file_manager */ 85186), e && e.__esModule ? e : { default: e }); var e; exports.default = _ui.default; module.exports = exports.default; module.exports.default = exports.default }, 27018: /*!**************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/ui/file_manager/file_items_controller.js ***! \**************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { exports.OPERATIONS = exports.FileItemsController = void 0; var _provider_base = _interopRequireDefault(__webpack_require__( /*! ../../file_management/provider_base */ 65266)); var _file_system_item = _interopRequireDefault(__webpack_require__( /*! ../../file_management/file_system_item */ 53093)); var _object_provider = _interopRequireDefault(__webpack_require__( /*! ../../file_management/object_provider */ 76856)); var _remote_provider = _interopRequireDefault(__webpack_require__( /*! ../../file_management/remote_provider */ 80175)); var _custom_provider = _interopRequireDefault(__webpack_require__( /*! ../../file_management/custom_provider */ 85096)); var _error = _interopRequireDefault(__webpack_require__( /*! ../../file_management/error */ 46327)); var _error_codes = _interopRequireDefault(__webpack_require__( /*! ../../file_management/error_codes */ 54950)); var _utils = __webpack_require__( /*! ../../file_management/utils */ 56536); var _uiFile_manager = __webpack_require__( /*! ./ui.file_manager.common */ 57011); var _deferred = __webpack_require__( /*! ../../core/utils/deferred */ 87739); var _extend = __webpack_require__( /*! ../../core/utils/extend */ 52576); var _common = __webpack_require__( /*! ../../core/utils/common */ 17781); var _type = __webpack_require__( /*! ../../core/utils/type */ 11528); var _guid = _interopRequireDefault(__webpack_require__( /*! ../../core/guid */ 19427)); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } const OPERATIONS = exports.OPERATIONS = { NAVIGATION: "navigation", REFRESH: "refresh" }; exports.FileItemsController = class { constructor(options) { options = options || {}; this._options = (0, _extend.extend)({}, options); this._isInitialized = false; this._dataLoading = false; this._dataLoadingDeferred = null; this._rootDirectoryInfo = this._createRootDirectoryInfo(options.rootText); this._currentDirectoryInfo = this._rootDirectoryInfo; this._defaultIconMap = this._createDefaultIconMap(); this.startSingleLoad(); this._setSecurityController(); this._setProvider(options.fileProvider); this._initialize() } _initialize() { const result = this._options.currentPathKeys && this._options.currentPathKeys.length ? this.setCurrentPathByKeys(this._options.currentPathKeys) : this.setCurrentPath(this._options.currentPath); const completeInitialization = () => { this._isInitialized = true; this._raiseInitialized() }; if (result) { (0, _deferred.when)(result).always(completeInitialization) } else { completeInitialization() } } _setSecurityController() { this._securityController = new FileSecurityController({ allowedFileExtensions: this._options.allowedFileExtensions, maxFileSize: this._options.uploadMaxFileSize }); this._resetState() } setAllowedFileExtensions(allowedFileExtensions) { if ((0, _type.isDefined)(allowedFileExtensions)) { this._options.allowedFileExtensions = allowedFileExtensions } this._setSecurityController(); this.refresh() } setUploadOptions(_ref) { let { maxFileSize: maxFileSize, chunkSize: chunkSize } = _ref; if ((0, _type.isDefined)(chunkSize)) { this._options.uploadChunkSize = chunkSize } if ((0, _type.isDefined)(maxFileSize)) { this._options.uploadMaxFileSize = maxFileSize; this._setSecurityController(); this.refresh() } } _setProvider(fileProvider) { this._fileProvider = this._createFileProvider(fileProvider); this._resetState() } updateProvider(fileProvider, currentPathKeys) { if (!(0, _type.isDefined)(currentPathKeys)) { return this._updateProviderOnly(fileProvider) } return (0, _deferred.when)(this._getDirectoryByPathParts(this._rootDirectoryInfo, currentPathKeys, true)).then((newDirectory => { if (newDirectory !== this._rootDirectoryInfo) { this._resetCurrentDirectory() } this._setProvider(fileProvider) })).then((() => this.setCurrentPathByKeys(currentPathKeys))) } _updateProviderOnly(fileProvider) { this._resetCurrentDirectory(); this._setProvider(fileProvider); return (0, _deferred.when)(this.refresh()) } _createFileProvider(fileProvider) { if (!fileProvider) { fileProvider = [] } if (Array.isArray(fileProvider)) { return new _object_provider.default({ data: fileProvider }) } if (fileProvider instanceof _provider_base.default) { return fileProvider } switch (fileProvider.type) { case "remote": return new _remote_provider.default(fileProvider); case "custom": return new _custom_provider.default(fileProvider) } return new _object_provider.default(fileProvider) } setCurrentPath(path) { const pathParts = (0, _utils.getPathParts)(path); const rawPath = (0, _utils.pathCombine)(...pathParts); if (this.getCurrentDirectory().fileItem.relativeName === rawPath) { return (new _deferred.Deferred).resolve().promise() } return this._setCurrentDirectoryByPathParts(pathParts) } setCurrentPathByKeys(pathKeys) { if ((0, _common.equalByValue)(this.getCurrentDirectory().fileItem.pathKeys, pathKeys)) { return (new _deferred.Deferred).resolve().promise() } return this._setCurrentDirectoryByPathParts(pathKeys, true) } getCurrentPath() { let currentPath = ""; let directory = this.getCurrentDirectory(); while (directory && !directory.fileItem.isRoot()) { const escapedName = (0, _utils.getEscapedFileName)(directory.fileItem.name); currentPath = (0, _utils.pathCombine)(escapedName, currentPath); directory = directory.parentDirectory } return currentPath } getCurrentPathKeys() { return this.getCurrentDirectory().fileItem.pathKeys } getCurrentDirectory() { return this._currentDirectoryInfo } setCurrentDirectory(directoryInfo, checkActuality) { if (!directoryInfo) { return } if (checkActuality) { directoryInfo = this._getActualDirectoryInfo(directoryInfo) } if (this._currentDirectoryInfo && this._currentDirectoryInfo === directoryInfo) { this._raisePathPotentiallyChanged(); return } const requireRaiseSelectedDirectory = this._currentDirectoryInfo.fileItem.key !== directoryInfo.fileItem.key; this._currentDirectoryInfo = directoryInfo; if (requireRaiseSelectedDirectory && this._isInitialized) { if (!this._dataLoading) { this._raiseDataLoading(OPERATIONS.NAVIGATION) } this._raiseSelectedDirectoryChanged(directoryInfo) } } _resetCurrentDirectory() { this._currentDirectoryInfo = this._rootDirectoryInfo } getCurrentItems(onlyFiles) { return this._dataLoadingDeferred ? this._dataLoadingDeferred.then((() => this._getCurrentItemsInternal(onlyFiles))) : this._getCurrentItemsInternal(onlyFiles) } _getCurrentItemsInternal(onlyFiles) { const currentDirectory = this.getCurrentDirectory(); const getItemsPromise = this.getDirectoryContents(currentDirectory); return getItemsPromise.then((items => { const separatedItems = this._separateItemsByType(items); currentDirectory.fileItem.hasSubDirectories = !!separatedItems.folders.length; return onlyFiles ? separatedItems.files : items })) } getDirectories(parentDirectoryInfo, skipNavigationOnError) { return this.getDirectoryContents(parentDirectoryInfo, skipNavigationOnError).then((itemInfos => itemInfos.filter((info => info.fileItem.isDirectory)))) } _separateItemsByType(itemInfos) { const folders = []; const files = []; itemInfos.forEach((info => info.fileItem.isDirectory ? folders.push(info) : files.push(info))); return { folders: folders, files: files } } getDirectoryContents(parentDirectoryInfo, skipNavigationOnError) { if (!parentDirectoryInfo) { return (new _deferred.Deferred).resolve([this._rootDirectoryInfo]).promise() } if (parentDirectoryInfo.itemsLoaded) { return (new _deferred.Deferred).resolve(parentDirectoryInfo.items).promise() } if (this._singleOperationLockId && parentDirectoryInfo.itemsSingleLoadErrorId === this._singleOperationLockId) { this._changeDirectoryOnError(parentDirectoryInfo, skipNavigationOnError, true); return (new _deferred.Deferred).reject().promise() } const dirKey = parentDirectoryInfo.getInternalKey(); let loadItemsDeferred = this._loadedItems[dirKey]; if (loadItemsDeferred) { return loadItemsDeferred } loadItemsDeferred = this._getFileItems(parentDirectoryInfo, skipNavigationOnError).then((fileItems => { fileItems = fileItems || []; parentDirectoryInfo.items = fileItems.map((fileItem => fileItem.isDirectory && this._createDirectoryInfo(fileItem, parentDirectoryInfo) || this._createFileInfo(fileItem, parentDirectoryInfo))); parentDirectoryInfo.itemsLoaded = true; return parentDirectoryInfo.items }), (() => { if (this._singleOperationLockId && parentDirectoryInfo.itemsSingleLoadErrorId !== this._singleOperationLockId) { parentDirectoryInfo.itemsSingleLoadErrorId = this._singleOperationLockId } return [] })); this._loadedItems[dirKey] = loadItemsDeferred; loadItemsDeferred.always((() => { delete this._loadedItems[dirKey] })); return loadItemsDeferred } _getFileItems(parentDirectoryInfo, skipNavigationOnError) { let loadItemsDeferred = null; try { loadItemsDeferred = this._fileProvider.getItems(parentDirectoryInfo.fileItem) } catch (error) { return this._handleItemLoadError(parentDirectoryInfo, error, skipNavigationOnError) } return (0, _deferred.when)(loadItemsDeferred).then((fileItems => this._securityController.getAllowedItems(fileItems)), (errorInfo => this._handleItemLoadError(parentDirectoryInfo, errorInfo, skipNavigationOnError))) } createDirectory(parentDirectoryInfo, name) { const parentDirItem = parentDirectoryInfo.fileItem; const tempDirInfo = this._createDirInfoByName(name, parentDirectoryInfo); const actionInfo = this._createEditActionInfo("create", tempDirInfo, parentDirectoryInfo); return this._processEditAction(actionInfo, (args => { args.parentDirectory = parentDirItem; args.name = name; this._editingEvents.onDirectoryCreating(args) }), (() => this._fileProvider.createDirectory(parentDirItem, name).done((info => { if (!parentDirItem.isRoot()) { parentDirItem.hasSubDirectories = true } return info }))), (() => { const args = { parentDirectory: parentDirItem, name: name }; this._editingEvents.onDirectoryCreated(args) }), (() => this._resetDirectoryState(parentDirectoryInfo, true))) } renameItem(fileItemInfo, name) { const sourceItem = fileItemInfo.fileItem.createClone(); const actionInfo = this._createEditActionInfo("rename", fileItemInfo, fileItemInfo.parentDirectory, { itemNewName: name }); return this._processEditAction(actionInfo, ((args, itemInfo) => { if (!itemInfo.fileItem.isDirectory) { this._securityController.validateExtension(name) } args.item = sourceItem; args.newName = name; this._editingEvents.onItemRenaming(args) }), (item => this._fileProvider.renameItem(item, name)), (() => { const args = { sourceItem: sourceItem, itemName: name }; this._editingEvents.onItemRenamed(args) }), (() => { const parentDirectory = this._getActualDirectoryInfo(fileItemInfo.parentDirectory); this._resetDirectoryState(parentDirectory); this.setCurrentDirectory(parentDirectory) })) } moveItems(itemInfos, destinationDirectory) { const actionInfo = this._createEditActionInfo("move", itemInfos, destinationDirectory); return this._processEditAction(actionInfo, ((args, itemInfo) => { args.item = itemInfo.fileItem; args.destinationDirectory = destinationDirectory.fileItem; this._editingEvents.onItemMoving(args) }), (item => this._fileProvider.moveItems([item], destinationDirectory.fileItem)), (itemInfo => { const args = { sourceItem: itemInfo.fileItem, parentDirectory: destinationDirectory.fileItem, itemName: itemInfo.fileItem.name, itemPath: (0, _utils.pathCombine)(destinationDirectory.fileItem.path, itemInfo.fileItem.name) }; this._editingEvents.onItemMoved(args) }), (needChangeCurrentDirectory => { itemInfos.forEach((itemInfo => this._resetDirectoryState(itemInfo.parentDirectory, true))); if (needChangeCurrentDirectory) { this._resetDirectoryState(destinationDirectory); this.setCurrentPathByKeys(destinationDirectory.fileItem.pathKeys); destinationDirectory.expanded = true } })) } copyItems(itemInfos, destinationDirectory) { const actionInfo = this._createEditActionInfo("copy", itemInfos, destinationDirectory); return this._processEditAction(actionInfo, ((args, itemInfo) => { args.item = itemInfo.fileItem; args.destinationDirectory = destinationDirectory.fileItem; this._editingEvents.onItemCopying(args) }), (item => this._fileProvider.copyItems([item], destinationDirectory.fileItem)), (itemInfo => { const args = { sourceItem: itemInfo.fileItem, parentDirectory: destinationDirectory.fileItem, itemName: itemInfo.fileItem.name, itemPath: (0, _utils.pathCombine)(destinationDirectory.fileItem.path, itemInfo.fileItem.name) }; this._editingEvents.onItemCopied(args) }), (needChangeCurrentDirectory => { if (needChangeCurrentDirectory) { destinationDirectory = this._getActualDirectoryInfo(destinationDirectory); this._resetDirectoryState(destinationDirectory); this.setCurrentDirectory(destinationDirectory); destinationDirectory.expanded = true } })) } deleteItems(itemInfos) { const directory = itemInfos.length > 0 ? itemInfos[0].parentDirectory : null; const actionInfo = this._createEditActionInfo("delete", itemInfos, directory); return this._processEditAction(actionInfo, ((args, itemInfo) => { args.item = itemInfo.fileItem; this._editingEvents.onItemDeleting(args) }), (item => this._fileProvider.deleteItems([item])), (itemInfo => this._editingEvents.onItemDeleted({ item: itemInfo.fileItem })), (() => { itemInfos.forEach((itemInfo => { const parentDir = this._getActualDirectoryInfo(itemInfo.parentDirectory); this._resetDirectoryState(parentDir); this.setCurrentDirectory(parentDir) })) })) } processUploadSession(sessionInfo, uploadDirectoryInfo) { const itemInfos = this._getItemInfosForUploaderFiles(sessionInfo.files, uploadDirectoryInfo); const actionInfo = this._createEditActionInfo("upload", itemInfos, uploadDirectoryInfo, { sessionInfo: sessionInfo }); return this._processEditAction(actionInfo, (() => {}), ((_, index) => sessionInfo.deferreds[index]), (() => {}), (() => this._resetDirectoryState(uploadDirectoryInfo, true))) } uploadFileChunk(fileData, chunksInfo, destinationDirectory) { let startDeferred = null; if (0 === chunksInfo.chunkIndex) { this._securityController.validateMaxFileSize(fileData.size); this._securityController.validateExtension(fileData.name); startDeferred = this._processBeforeItemEditAction((args => { args.fileData = fileData; args.destinationDirectory = destinationDirectory; this._editingEvents.onFileUploading(args) })) } else { startDeferred = (new _deferred.Deferred).resolve().promise() } let result = startDeferred.then((() => this._fileProvider.uploadFileChunk(fileData, chunksInfo, destinationDirectory))); if (chunksInfo.chunkIndex === chunksInfo.chunkCount - 1) { result = result.done((() => { const args = { fileData: fileData, parentDirectory: destinationDirectory }; this._editingEvents.onFileUploaded(args) })) } return result } abortFileUpload(fileData, chunksInfo, destinationDirectory) { return (0, _deferred.when)(this._fileProvider.abortFileUpload(fileData, chunksInfo, destinationDirectory)) } getFileUploadChunkSize() { const chunkSize = this._options.uploadChunkSize; if (chunkSize && chunkSize > 0) { return chunkSize } return this._fileProvider.getFileUploadChunkSize() } downloadItems(itemInfos) { const deferreds = itemInfos.map((itemInfo => this._processBeforeItemEditAction((args => { args.item = itemInfo.fileItem; this._editingEvents.onItemDownloading(args) }), itemInfo))); return (0, _deferred.when)(...deferreds).then((() => { const items = itemInfos.map((i => i.fileItem)); return (0, _deferred.when)(this._getItemActionResult(this._fileProvider.downloadItems(items))).then((() => {}), (errorInfo => { this._raiseDownloadItemsError(itemInfos, itemInfos[0].parentDirectory, errorInfo) })) }), (errorInfo => { this._raiseDownloadItemsError(itemInfos, itemInfos[0].parentDirectory, errorInfo) })) } getItemContent(itemInfos) { const items = itemInfos.map((i => i.fileItem)); return (0, _deferred.when)(this._fileProvider.getItemsContent(items)) } _handleItemLoadError(parentDirectoryInfo, errorInfo, skipNavigationOnError) { parentDirectoryInfo = this._getActualDirectoryInfo(parentDirectoryInfo); this._raiseGetItemsError(parentDirectoryInfo, errorInfo); this._changeDirectoryOnError(parentDirectoryInfo, skipNavigationOnError); return (new _deferred.Deferred).reject().promise() } _raiseGetItemsError(parentDirectoryInfo, errorInfo) { const actionInfo = this._createEditActionInfo("getItems", parentDirectoryInfo, parentDirectoryInfo); this._raiseEditActionStarting(actionInfo); this._raiseEditActionResultAcquired(actionInfo); this._raiseEditActionError(actionInfo, { errorCode: errorInfo.errorCode, errorText: errorInfo.errorText, fileItem: parentDirectoryInfo.fileItem, index: 0 }) } _raiseDownloadItemsError(targetFileInfos, directory, errorInfo) { const actionInfo = this._createEditActionInfo("download", targetFileInfos, directory); const itemsLength = targetFileInfos.length; actionInfo.singleRequest = 1 === itemsLength; this._raiseEditActionStarting(actionInfo); this._raiseEditActionResultAcquired(actionInfo); for (let index = 0; index < itemsLength - 1; index++) { this._raiseEditActionItemError(actionInfo, { errorCode: errorInfo.errorCode, errorText: errorInfo.errorText, fileItem: targetFileInfos[index].fileItem, index: index }) } this._raiseEditActionError(actionInfo, { errorCode: errorInfo.errorCode, errorText: errorInfo.errorText, fileItem: targetFileInfos[itemsLength - 1].fileItem, index: itemsLength - 1 }) } _changeDirectoryOnError(dirInfo, skipNavigationOnError, isActualDirectoryRequired) { if (isActualDirectoryRequired) { dirInfo = this._getActualDirectoryInfo(dirInfo) } this._resetDirectoryState(dirInfo); dirInfo.expanded = false; if (!skipNavigationOnError) { this.setCurrentDirectory(dirInfo.parentDirectory) } } _getItemActionResult(actionResult) { return Array.isArray(actionResult) ? actionResult[0] : actionResult } _processEditAction(actionInfo, beforeAction, action, afterAction, completeAction) { let isAnyOperationSuccessful = false; this._raiseEditActionStarting(actionInfo); const actionResult = actionInfo.itemInfos.map(((itemInfo, itemIndex) => this._processBeforeItemEditAction(beforeAction, itemInfo).then((() => { const itemActionResult = this._getItemActionResult(action(itemInfo.fileItem, itemIndex)); return itemActionResult.done((() => afterAction(itemInfo))) })))); actionInfo.singleRequest = 1 === actionResult.length; this._raiseEditActionResultAcquired(actionInfo); return (0, _uiFile_manager.whenSome)(actionResult, (info => { isAnyOperationSuccessful = true; this._raiseCompleteEditActionItem(actionInfo, info) }), (errorInfo => this._raiseEditActionItemError(actionInfo, errorInfo))).then((() => { completeAction(isAnyOperationSuccessful); this._raiseCompleteEditAction(actionInfo) })) } _createEditActionInfo(name, targetItemInfos, directory, customData) { targetItemInfos = Array.isArray(targetItemInfos) ? targetItemInfos : [targetItemInfos]; customData = customData || {}; const items = targetItemInfos.map((itemInfo => itemInfo.fileItem)); return { name: name, itemInfos: targetItemInfos, items: items, directory: directory, customData: customData, singleRequest: true } } _processBeforeItemEditAction(action, itemInfo) { const deferred = new _deferred.Deferred; const args = this._createBeforeActionArgs(); try { action(args, itemInfo) } catch (errorInfo) { return deferred.reject(errorInfo).promise() } if (!args.cancel) { deferred.resolve() } else if (true === args.cancel) { return deferred.reject({ errorText: args.errorText, errorCode: args.errorCode }) } else if ((0, _type.isPromise)(args.cancel)) { (0, _deferred.when)(args.cancel).then((res => { if (true === res) { deferred.reject() } else if ((0, _type.isObject)(res) && true === res.cancel) { deferred.reject({ errorText: res.errorText, errorCode: res.errorCode }) } deferred.resolve() }), deferred.resolve) } return deferred.promise() } _createBeforeActionArgs() { return { errorCode: void 0, errorText: "", cancel: false } } _getItemInfosForUploaderFiles(files, parentDirectoryInfo) { const pathInfo = this._getPathInfo(parentDirectoryInfo); const result = []; for (let i = 0; i < files.length; i++) { const file = files[i]; const item = new _file_system_item.default(pathInfo, file.name, false); const itemInfo = this._createFileInfo(item, parentDirectoryInfo); result.push(itemInfo) } return result } refresh() { if (this._lockRefresh) { return this._refreshDeferred } this._lockRefresh = true; return this._executeDataLoad((() => this._refreshDeferred = this._refreshInternal()), OPERATIONS.REFRESH) } startSingleLoad() { this._singleOperationLockId = (new _guid.default).toString() } endSingleLoad() { delete this._singleOperationLockId } _refreshInternal() { const cachedRootInfo = { items: this._rootDirectoryInfo.items }; const selectedKeyParts = this._getDirectoryPathKeyParts(this.getCurrentDirectory()); this._resetDirectoryState(this._rootDirectoryInfo); return this._loadItemsRecursive(this._rootDirectoryInfo, cachedRootInfo).then((() => { const dirInfo = this._findDirectoryByPathKeyParts(selectedKeyParts); this.setCurrentDirectory(dirInfo); delete this._lockRefresh })) } _loadItemsRecursive(directoryInfo, cachedDirectoryInfo) { return this.getDirectories(directoryInfo).then((dirInfos => { const itemDeferreds = []; for (let i = 0; i < dirInfos.length; i++) { const cachedItem = cachedDirectoryInfo.items.find((cache => dirInfos[i].fileItem.key === cache.fileItem.key)); if (!cachedItem) { continue } dirInfos[i].expanded = cachedItem.expanded; if (dirInfos[i].expanded) { itemDeferreds.push(this._loadItemsRecursive(dirInfos[i], cachedItem)) } } return (0, _uiFile_manager.whenSome)(itemDeferreds) }), (() => null)) } _setCurrentDirectoryByPathParts(pathParts, useKeys) { return this._executeDataLoad((() => this._setCurrentDirectoryByPathPartsInternal(pathParts, useKeys)), OPERATIONS.NAVIGATION) } _setCurrentDirectoryByPathPartsInternal(pathParts, useKeys) { return this._getDirectoryByPathParts(this._rootDirectoryInfo, pathParts, useKeys).then((directoryInfo => { for (let info = directoryInfo.parentDirectory; info; info = info.parentDirectory) { info.expanded = true } this.setCurrentDirectory(directoryInfo) }), (() => { this._raisePathPotentiallyChanged() })) } _executeDataLoad(action, operation) { if (this._dataLoadingDeferred) { return this._dataLoadingDeferred.then((() => this._executeDataLoad(action, operation))) } this._dataLoading = true; this._dataLoadingDeferred = new _deferred.Deferred; if (this._isInitialized) { this._raiseDataLoading(operation) } return action().always((() => { const tempDeferred = this._dataLoadingDeferred; this._dataLoadingDeferred = null; this._dataLoading = false; tempDeferred.resolve() })) } _getDirectoryByPathParts(parentDirectoryInfo, pathParts, useKeys) { if (pathParts.length < 1) { return (new _deferred.Deferred).resolve(parentDirectoryInfo).promise() } const fieldName = useKeys ? "key" : "name"; return this.getDirectories(parentDirectoryInfo).then((dirInfos => { const subDirInfo = dirInfos.find((d => d.fileItem[fieldName] === pathParts[0])); if (!subDirInfo) { return (new _deferred.Deferred).reject().promise() } const restPathParts = [...pathParts].splice(1); return this._getDirectoryByPathParts(subDirInfo, restPathParts, useKeys) })) } _getDirectoryPathKeyParts(directoryInfo) { const pathParts = []; while (directoryInfo && directoryInfo.parentDirectory) { pathParts.unshift(directoryInfo.fileItem.key); directoryInfo = directoryInfo.parentDirectory } return pathParts } _findDirectoryByPathKeyParts(keyParts) { let selectedDirInfo = this._rootDirectoryInfo; if (0 === keyParts.length) { return selectedDirInfo } let i = 0; let newSelectedDir = selectedDirInfo; while (newSelectedDir && i < keyParts.length) { newSelectedDir = selectedDirInfo.items.find((info => info.fileItem.key === keyParts[i])); if (newSelectedDir) { selectedDirInfo = newSelectedDir } i++ } return selectedDirInfo } _getActualDirectoryInfo(directoryInfo) { const keys = this._getDirectoryPathKeyParts(directoryInfo); return this._findDirectoryByPathKeyParts(keys) } _createDirInfoByName(name, parentDirectoryInfo) { const dirPathInfo = this._getPathInfo(parentDirectoryInfo); const fileItem = new _file_system_item.default(dirPathInfo, name, true); return this._createDirectoryInfo(fileItem, parentDirectoryInfo) } _createDirectoryInfo(fileItem, parentDirectoryInfo) { return (0, _extend.extend)(this._createFileInfo(fileItem, parentDirectoryInfo), { icon: "folder", expanded: fileItem.isRoot(), items: [] }) } _createFileInfo(fileItem, parentDirectoryInfo) { return { fileItem: fileItem, parentDirectory: parentDirectoryInfo, icon: this._getFileItemDefaultIcon(fileItem), getInternalKey() { return `FIK_${this.fileItem.key}` }, getDisplayName() { return this.displayName || this.fileItem.name } } } _resetDirectoryState(directoryInfo, isActualDirectoryRequired) { if (isActualDirectoryRequired) { directoryInfo = this._getActualDirectoryInfo(directoryInfo) } directoryInfo.itemsLoaded = false; directoryInfo.items = [] } _getFileItemDefaultIcon(fileItem) { if (fileItem.isDirectory) { return "folder" } const extension = fileItem.getFileExtension(); const icon = this._defaultIconMap[extension]; return icon || "doc" } _createDefaultIconMap() { const result = { ".txt": "txtfile", ".rtf": "rtffile", ".doc": "docfile", ".docx": "docxfile", ".xls": "xlsfile", ".xlsx": "xlsxfile", ".ppt": "pptfile", ".pptx": "pptxfile", ".pdf": "pdffile" }; [".png", ".gif", ".jpg", ".jpeg", ".ico", ".bmp"].forEach((extension => { result[extension] = "image" })); return result } _createRootDirectoryInfo(text) { const rootDirectory = new _file_system_item.default(null, "", true); const result = this._createDirectoryInfo(rootDirectory, null); result.displayName = text || "Files"; return result } setRootText(rootText) { this._rootDirectoryInfo.displayName = rootText || "Files" } _raiseInitialized() { this._tryCallAction("onInitialized", { controller: this }) } _raiseDataLoading(operation) { this._tryCallAction("onDataLoading", { operation: operation }) } _raiseSelectedDirectoryChanged(directoryInfo) { this._tryCallAction("onSelectedDirectoryChanged", { selectedDirectoryInfo: directoryInfo }) } _raiseEditActionStarting(actionInfo) { this._tryCallAction("onEditActionStarting", actionInfo) } _raiseEditActionResultAcquired(actionInfo) { this._tryCallAction("onEditActionResultAcquired", actionInfo) } _raiseEditActionError(actionInfo, errorInfo) { this._tryCallAction("onEditActionError", actionInfo, errorInfo) } _raiseEditActionItemError(actionInfo, errorInfo) { this._tryCallAction("onEditActionItemError", actionInfo, errorInfo) } _raiseCompleteEditActionItem(actionInfo, info) { this._tryCallAction("onCompleteEditActionItem", actionInfo, info) } _raiseCompleteEditAction(actionInfo) { this._tryCallAction("onCompleteEditAction", actionInfo) } _raisePathPotentiallyChanged() { this._tryCallAction("onPathPotentiallyChanged") } _tryCallAction(actionName) { const args = Array.prototype.slice.call(arguments, 1); if (this._isInitialized && this._options[actionName]) { this._options[actionName](...args) } } _resetState() { this._selectedDirectory = null; this._rootDirectoryInfo.items = []; this._rootDirectoryInfo.itemsLoaded = false; this._loadedItems = {} } _getPathInfo(directoryInfo) { const pathInfo = []; for (let dirInfo = directoryInfo; dirInfo && !dirInfo.fileItem.isRoot(); dirInfo = dirInfo.parentDirectory) { pathInfo.unshift({ key: dirInfo.fileItem.key, name: dirInfo.fileItem.name }) } return pathInfo } on(eventName, eventHandler) { const finalEventName = `on${eventName}`; this._options[finalEventName] = eventHandler } get _editingEvents() { return this._options.editingEvents } }; class FileSecurityController { constructor(options) { this._options = (0, _extend.extend)({ allowedFileExtensions: [], maxFileSize: 0 }, options); this._extensionsMap = {}; this._allowedFileExtensions.forEach((extension => { this._extensionsMap[extension.toUpperCase()] = true })) } getAllowedItems(items) { if (0 === this._allowedFileExtensions.length) { return items } return items.filter((item => item.isDirectory || this._isValidExtension(item.name))) } validateExtension(name) { if (!this._isValidExtension(name)) { throw new _error.default(_error_codes.default.WrongFileExtension, null) } } validateMaxFileSize(size) { if (this._maxFileSize && size > this._maxFileSize) { throw new _error.default(_error_codes.default.MaxFileSizeExceeded, null) } } _isValidExtension(name) { if (0 === this._allowedFileExtensions.length) { return true } const extension = (0, _utils.getFileExtension)(name).toUpperCase(); return this._extensionsMap[extension] } get _allowedFileExtensions() { return this._options.allowedFileExtensions } get _maxFileSize() { return this._options.maxFileSize } } }, 74327: /*!*******************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/ui/file_manager/ui.file_manager.adaptivity.js ***! \*******************************************************************************************/ function(module, exports, __webpack_require__) { exports.default = void 0; var _size = __webpack_require__( /*! ../../core/utils/size */ 57653); var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../core/renderer */ 64553)); var _extend = __webpack_require__( /*! ../../core/utils/extend */ 52576); var _type = __webpack_require__( /*! ../../core/utils/type */ 11528); var _window = __webpack_require__( /*! ../../core/utils/window */ 3104); var _ui = _interopRequireDefault(__webpack_require__( /*! ../widget/ui.widget */ 11118)); var _drawer = _interopRequireDefault(__webpack_require__( /*! ../drawer */ 7968)); var _splitter_control = _interopRequireDefault(__webpack_require__( /*! ../splitter_control */ 47744)); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } const window = (0, _window.getWindow)(); class FileManagerAdaptivityControl extends _ui.default { _initMarkup() { super._initMarkup(); this._initActions(); this._isInAdaptiveState = false; const $drawer = (0, _renderer.default)("<div>").appendTo(this.$element()); (0, _renderer.default)("<div>").addClass("dx-filemanager-adaptivity-drawer-panel").appendTo($drawer); this._drawer = this._createComponent($drawer, _drawer.default); this._drawer.option({ opened: true, template: this._createDrawerTemplate.bind(this) }); (0, _renderer.default)(this._drawer.content()).addClass("dx-drawer-panel-content-initial"); const $drawerContent = $drawer.find(".dx-filemanager-adaptivity-drawer-panel").first(); const contentRenderer = this.option("contentTemplate"); if ((0, _type.isFunction)(contentRenderer)) { contentRenderer($drawerContent) } this._updateDrawerMaxSize() } _createDrawerTemplate(container) { this.option("drawerTemplate")(container); this._splitter = this._createComponent("<div>", _splitter_control.default, { container: this.$element(), leftElement: (0, _renderer.default)(this._drawer.content()), rightElement: (0, _renderer.default)(this._drawer.viewContent()), onApplyPanelSize: this._onApplyPanelSize.bind(this), onActiveStateChanged: this._onActiveStateChanged.bind(this) }); this._splitter.$element().appendTo(container); this._splitter.disableSplitterCalculation(true) } _render() { super._render(); this._checkAdaptiveState() } _onApplyPanelSize(e) { if (!(0, _window.hasWindow)()) { return } if (!this._splitter.isSplitterMoved()) { this._setDrawerWidth(""); return }(0, _renderer.default)(this._drawer.content()).removeClass("dx-drawer-panel-content-initial"); this._setDrawerWidth(e.leftPanelWidth) } _onActiveStateChanged(_ref) { let { isActive: isActive } = _ref; this._splitter.disableSplitterCalculation(!isActive); !isActive && this._splitter.$element().css("left", "auto") } _setDrawerWidth(width) { (0, _renderer.default)(this._drawer.content()).css("width", width); this._updateDrawerMaxSize(); this._drawer.resizeViewContent() } _updateDrawerMaxSize() { this._drawer.option("maxSize", this._drawer.getRealPanelWidth()) } _dimensionChanged(dimension) { if (!dimension || "height" !== dimension) { this._checkAdaptiveState() } } _checkAdaptiveState() { const oldState = this._isInAdaptiveState; this._isInAdaptiveState = this._isSmallScreen(); if (oldState !== this._isInAdaptiveState) { this.toggleDrawer(!this._isInAdaptiveState, true); (0, _renderer.default)(this._drawer.content()).toggleClass("dx-drawer-panel-content-adaptive", this._isInAdaptiveState); this._raiseAdaptiveStateChanged(this._isInAdaptiveState) } if (this._isInAdaptiveState && this._isDrawerOpened()) { this._updateDrawerMaxSize() } } _isSmallScreen() { return (0, _size.getWidth)(window) <= 573 } _isDrawerOpened() { return this._drawer.option("opened") } _initActions() { this._actions = { onAdaptiveStateChanged: this._createActionByOption("onAdaptiveStateChanged") } } _raiseAdaptiveStateChanged(enabled) { this._actions.onAdaptiveStateChanged({ enabled: enabled }) } _getDefaultOptions() { return (0, _extend.extend)(super._getDefaultOptions(), { drawerTemplate: null, contentTemplate: null, onAdaptiveStateChanged: null }) } _optionChanged(args) { const name = args.name; switch (name) { case "drawerTemplate": case "contentTemplate": this.repaint(); break; case "onAdaptiveStateChanged": this._actions[name] = this._createActionByOption(name); break; default: super._optionChanged(args) } } isInAdaptiveState() { return this._isInAdaptiveState } toggleDrawer(showing, skipAnimation) { this._updateDrawerMaxSize(); this._drawer.option("animationEnabled", !skipAnimation); this._drawer.toggle(showing); const isSplitterActive = this._isDrawerOpened() && !this.isInAdaptiveState(); this._splitter.toggleDisabled(!isSplitterActive) } getSplitterElement() { return this._splitter.getSplitterBorderElement().get(0) } } exports.default = FileManagerAdaptivityControl; module.exports = exports.default; module.exports.default = exports.default }, 81606: /*!********************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/ui/file_manager/ui.file_manager.breadcrumbs.js ***! \********************************************************************************************/ function(module, exports, __webpack_require__) { exports.default = void 0; var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../core/renderer */ 64553)); var _extend = __webpack_require__( /*! ../../core/utils/extend */ 52576); var _ui = _interopRequireDefault(__webpack_require__( /*! ../widget/ui.widget */ 11118)); var _menu = _interopRequireDefault(__webpack_require__( /*! ../menu */ 1614)); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } class FileManagerBreadcrumbs extends _ui.default { _init() { super._init(); this._currentDirectory = null } _initMarkup() { super._initMarkup(); this._initActions(); if (this._currentDirectory) { this._renderMenu() } this.$element().addClass("dx-filemanager-breadcrumbs") } setCurrentDirectory(directory) { if (!this._areDirsEqual(this._currentDirectory, directory)) { this._currentDirectory = directory; this.repaint() } } _renderMenu() { const $menu = (0, _renderer.default)("<div>").appendTo(this.$element()); this._menu = this._createComponent($menu, _menu.default, { dataSource: this._getMenuItems(), onItemClick: this._onItemClick.bind(this), onItemRendered: this._onItemRendered.bind(this) }) } _getMenuItems() { const dirLine = this._getParentDirsLine(); const result = [{ icon: "arrowup", directory: this._currentDirectory.parentDirectory, isPathItem: true, cssClass: "dx-filemanager-breadcrumbs-parent-folder-item" }, { text: "\xa0", cssClass: "dx-filemanager-breadcrumbs-separator-item" }]; dirLine.forEach(((dir, index) => { result.push({ text: dir.getDisplayName(), directory: dir, isPathItem: true }); if (index !== dirLine.length - 1) { result.push({ icon: "spinnext", cssClass: "dx-filemanager-breadcrumbs-path-separator-item" }) } })); return result } _onItemClick(_ref) { let { itemData: itemData } = _ref; if (!itemData.isPathItem) { return } const newDir = itemData.directory; if (!this._areDirsEqual(newDir, this._currentDirectory)) { this._raiseCurrentDirectoryChanged(newDir) } } _onItemRendered(_ref2) { let { itemElement: itemElement, itemData: itemData } = _ref2; if (itemData.cssClass) { (0, _renderer.default)(itemElement).addClass(itemData.cssClass) } } _getParentDirsLine() { let currentDirectory = this._currentDirectory; const result = []; while (currentDirectory) { result.unshift(currentDirectory); currentDirectory = currentDirectory.parentDirectory } return result } _areDirsEqual(dir1, dir2) { return dir1 && dir2 && dir1 === dir2 && dir1.fileItem.key === dir2.fileItem.key } _initActions() { this._actions = { onCurrentDirectoryChanging: this._createActionByOption("onCurrentDirectoryChanging") } } _raiseCurrentDirectoryChanged(currentDirectory) { this._actions.onCurrentDirectoryChanging({ currentDirectory: currentDirectory }) } _getDefaultOptions() { return (0, _extend.extend)(super._getDefaultOptions(), { rootFolderDisplayName: "Files", onCurrentDirectoryChanging: null }) } _optionChanged(args) { const name = args.name; switch (name) { case "rootFolderDisplayName": this.repaint(); break; case "onCurrentDirectoryChanging": this._actions[name] = this._createActionByOption(name); break; default: super._optionChanged(args) } } } exports.default = FileManagerBreadcrumbs; module.exports = exports.default; module.exports.default = exports.default }, 59393: /*!************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/ui/file_manager/ui.file_manager.command_manager.js ***! \************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { exports.defaultPermissions = exports.FileManagerCommandManager = void 0; var _extend = __webpack_require__( /*! ../../core/utils/extend */ 52576); var _iterator = __webpack_require__( /*! ../../core/utils/iterator */ 21274); var _type = __webpack_require__( /*! ../../core/utils/type */ 11528); var _message = (e = __webpack_require__( /*! ../../common/core/localization/message */ 4671), e && e.__esModule ? e : { default: e }); var e; const defaultPermissions = exports.defaultPermissions = { create: false, copy: false, move: false, delete: false, rename: false, upload: false, download: false }; exports.FileManagerCommandManager = class { constructor(permissions) { this._actions = {}; this._permissions = permissions || {}; this._initCommands() } _initCommands() { this._commands = [{ name: "create", text: _message.default.format("dxFileManager-commandCreate"), icon: "newfolder", enabled: this._permissions.create, noFileItemRequired: true }, { name: "rename", text: _message.default.format("dxFileManager-commandRename"), icon: "rename", enabled: this._permissions.rename, isSingleFileItemCommand: true }, { name: "move", text: _message.default.format("dxFileManager-commandMove"), icon: "movetofolder", enabled: this._permissions.move }, { name: "copy", text: _message.default.format("dxFileManager-commandCopy"), icon: "copy", enabled: this._permissions.copy }, { name: "delete", text: _message.default.format("dxFileManager-commandDelete"), icon: "trash", enabled: this._permissions.delete }, { name: "download", text: _message.default.format("dxFileManager-commandDownload"), icon: "download", enabled: this._permissions.download }, { name: "upload", text: _message.default.format("dxFileManager-commandUpload"), icon: "upload", enabled: this._permissions.upload, noFileItemRequired: true }, { name: "refresh", text: _message.default.format("dxFileManager-commandRefresh"), icon: "dx-filemanager-i dx-filemanager-i-refresh", enabled: true, noFileItemRequired: true }, { name: "thumbnails", text: _message.default.format("dxFileManager-commandThumbnails"), icon: "mediumiconslayout", enabled: true, noFileItemRequired: true }, { name: "details", text: _message.default.format("dxFileManager-commandDetails"), icon: "detailslayout", enabled: true, noFileItemRequired: true }, { name: "clearSelection", text: _message.default.format("dxFileManager-commandClearSelection"), icon: "remove", enabled: true }, { name: "showNavPane", hint: _message.default.format("dxFileManager-commandShowNavPane"), icon: "menu", enabled: false, noFileItemRequired: true }]; this._commandMap = {}; this._commands.forEach((command => { this._commandMap[command.name] = command })) } registerActions(actions) { this._actions = (0, _extend.extend)(this._actions, actions) } executeCommand(command, arg) { const commandName = (0, _type.isString)(command) ? command : command.name; const action = this._actions[commandName]; if (action) { return action(arg) } } updatePermissions(permissions) { const resultPermissions = (0, _extend.extend)({}, defaultPermissions, permissions); this._permissions = resultPermissions; (0, _iterator.each)(this._permissions, (permission => { this._commandMap[permission].enabled = this._permissions[permission] })) } setCommandEnabled(commandName, enabled) { const command = this.getCommandByName(commandName); if (command) { command.enabled = enabled } } getCommandByName(name) { return this._commandMap[name] } isCommandAvailable(commandName, itemInfos) { const command = this.getCommandByName(commandName); if (!command || !command.enabled) { return false } if (command.noFileItemRequired) { return true } const itemsLength = itemInfos && itemInfos.length || 0; if (0 === itemsLength || itemInfos.some((item => item.fileItem.isRoot() || item.fileItem.isParentFolder))) { return false } if ("download" === commandName) { return itemInfos.every((itemInfo => !itemInfo.fileItem.isDirectory)) } return !command.isSingleFileItemCommand || 1 === itemsLength } } }, 57011: /*!***************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/ui/file_manager/ui.file_manager.common.js ***! \***************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { exports.whenSome = exports.getMapFromObject = exports.getDisplayFileSize = exports.findItemsByKeys = exports.extendAttributes = void 0; var _deferred = __webpack_require__( /*! ../../core/utils/deferred */ 87739); var _extend = __webpack_require__( /*! ../../core/utils/extend */ 52576); var _common = __webpack_require__( /*! ../../core/utils/common */ 17781); var _type = __webpack_require__( /*! ../../core/utils/type */ 11528); exports.whenSome = function(arg, onSuccess, onError) { onSuccess = onSuccess || _common.noop; onError = onError || _common.noop; if (!Array.isArray(arg)) { arg = [arg] } const deferreds = arg.map(((item, index) => (0, _deferred.when)(item).then((result => { (0, _type.isFunction)(onSuccess) && onSuccess({ item: item, index: index, result: result }); return result }), (error => { if (!error) { error = {} } error.index = index; (0, _type.isFunction)(onError) && onError(error); return (new _deferred.Deferred).resolve().promise() })))); return _deferred.when.apply(null, deferreds) }; exports.getDisplayFileSize = function(byteSize) { const sizesTitles = ["B", "KB", "MB", "GB", "TB"]; let index = 0; let displaySize = byteSize; while (displaySize >= 1024 && index <= sizesTitles.length - 1) { displaySize /= 1024; index++ } displaySize = Math.round(10 * displaySize) / 10; return `${displaySize} ${sizesTitles[index]}` }; exports.extendAttributes = function(targetObject, sourceObject, objectKeysArray) { objectKeysArray.forEach((objectKey => { (0, _extend.extend)(true, targetObject, (0, _type.isDefined)(sourceObject[objectKey]) ? { [objectKey]: sourceObject[objectKey] } : {}) })); return targetObject }; exports.findItemsByKeys = (itemInfos, keys) => { const itemMap = {}; keys.forEach((key => { itemMap[key] = null })); itemInfos.forEach((itemInfo => { const key = itemInfo.fileItem.key; if (Object.prototype.hasOwnProperty.call(itemMap, key)) { itemMap[key] = itemInfo } })); const result = []; keys.forEach((key => { const itemInfo = itemMap[key]; if (itemInfo) { result.push(itemInfo) } })); return result }; exports.getMapFromObject = function(object) { const keys = Object.keys(object); const values = []; keys.forEach((key => values.push(object[key]))); return { keys: keys, values: values } } }, 40729: /*!*********************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/ui/file_manager/ui.file_manager.context_menu.js ***! \*********************************************************************************************/ function(module, exports, __webpack_require__) { exports.default = void 0; var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../core/renderer */ 64553)); var _extend = __webpack_require__( /*! ../../core/utils/extend */ 52576); var _type = __webpack_require__( /*! ../../core/utils/type */ 11528); var _common = __webpack_require__( /*! ../../core/utils/common */ 17781); var _ui = _interopRequireDefault(__webpack_require__( /*! ../widget/ui.widget */ 11118)); var _context_menu = _interopRequireDefault(__webpack_require__( /*! ../context_menu */ 34378)); var _uiFile_manager = __webpack_require__( /*! ./ui.file_manager.common */ 57011); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } const DEFAULT_CONTEXT_MENU_ITEMS = { create: {}, upload: {}, download: {}, rename: {}, move: {}, copy: {}, delete: {}, refresh: { beginGroup: true } }; const DEFAULT_ITEM_ALLOWED_PROPERTIES = ["beginGroup", "closeMenuOnClick", "disabled", "icon", "selectable", "selected", "text", "visible"]; class FileManagerContextMenu extends _ui.default { _initMarkup() { this._initActions(); this._isVisible = false; const $menu = (0, _renderer.default)("<div>").appendTo(this.$element()); this._contextMenu = this._createComponent($menu, _context_menu.default, { cssClass: "dx-filemanager-context-menu", showEvent: "", onItemClick: args => this._onContextMenuItemClick(args.itemData.name, args), onShowing: e => this._onContextMenuShowing(e), onShown: () => this._onContextMenuShown(), onHidden: () => this._onContextMenuHidden() }); super._initMarkup() } showAt(fileItems, element, event, target) { const { itemData: itemData, itemElement: itemElement, isActionButton: isActionButton = false } = target; if (this._isVisible) { this._onContextMenuHidden() } this._menuShowingContext = { targetElement: itemElement, itemData: itemData, fileItems: fileItems, event: event, isActionButton: isActionButton }; const position = { of: element, at: "top left", my: "top left", offset: "" }; if (event) { position.offset = event.offsetX + " " + event.offsetY } else { position.my = "left top"; position.at = "left bottom"; position.boundaryOffset = "1" } this._contextMenu.option({ target: element, position: position }); this._contextMenu.show() } createContextMenuItems(fileItems, contextMenuItems, targetFileItem) { this._targetFileItems = fileItems; this._targetFileItem = (0, _type.isDefined)(targetFileItem) ? targetFileItem : null === fileItems || void 0 === fileItems ? void 0 : fileItems[0]; const result = []; const itemArray = contextMenuItems || this.option("items"); itemArray.forEach((srcItem => { const commandName = (0, _type.isString)(srcItem) ? srcItem : srcItem.name; const item = this._configureItemByCommandName(commandName, srcItem, fileItems, this._targetFileItem); if (this._isContextMenuItemAvailable(item, fileItems)) { result.push(item) } })); return result } _isContextMenuItemAvailable(menuItem, fileItems) { if (!this._isDefaultItem(menuItem.name) || !menuItem._autoHide) { return (0, _common.ensureDefined)(menuItem.visible, true) } if (this._isIsolatedCreationItemCommand(menuItem.name) && fileItems && fileItems.length) { return false } return this._commandManager.isCommandAvailable(menuItem.name, fileItems) } _isIsolatedCreationItemCommand(commandName) { return ("create" === commandName || "upload" === commandName) && this.option("isolateCreationItemCommands") } _isDefaultItem(commandName) { return !!DEFAULT_CONTEXT_MENU_ITEMS[commandName] } _configureItemByCommandName(commandName, item, fileItems, targetFileItem) { if (!this._isDefaultItem(commandName)) { const res = (0, _extend.extend)(true, {}, item); res.originalItemData = item; this._addItemClickHandler(commandName, res); if (Array.isArray(item.items)) { res.items = this.createContextMenuItems(fileItems, item.items, targetFileItem) } return res } const result = this._createMenuItemByCommandName(commandName); const defaultConfig = DEFAULT_CONTEXT_MENU_ITEMS[commandName]; (0, _extend.extend)(result, defaultConfig); result.originalItemData = item; (0, _uiFile_manager.extendAttributes)(result, item, DEFAULT_ITEM_ALLOWED_PROPERTIES); if (!(0, _type.isDefined)(result.visible)) { result._autoHide = true } if (commandName && !result.name) { (0, _extend.extend)(result, { name: commandName }) } return result } _createMenuItemByCommandName(commandName) { const { text: text, icon: icon } = this._commandManager.getCommandByName(commandName); const menuItem = { name: commandName, text: text, icon: icon }; this._addItemClickHandler(commandName, menuItem); return menuItem } _addItemClickHandler(commandName, contextMenuItem) { contextMenuItem.onItemClick = args => this._onContextMenuItemClick(commandName, args) } _onContextMenuItemClick(commandName, args) { var _this$_targetFileItem; const changedArgs = (0, _extend.extend)(true, {}, args); changedArgs.itemData = args.itemData.originalItemData; changedArgs.fileSystemItem = null === (_this$_targetFileItem = this._targetFileItem) || void 0 === _this$_targetFileItem ? void 0 : _this$_targetFileItem.fileItem; changedArgs.viewArea = this.option("viewArea"); this._actions.onItemClick(changedArgs); if (this._isDefaultItem(commandName)) { const targetFileItems = this._isIsolatedCreationItemCommand(commandName) ? null : this._targetFileItems; this._commandManager.executeCommand(commandName, targetFileItems) } } _initActions() { this._actions = { onContextMenuHidden: this._createActionByOption("onContextMenuHidden"), onContextMenuShowing: this._createActionByOption("onContextMenuShowing"), onItemClick: this._createActionByOption("onItemClick") } } _onContextMenuShowing(e) { if (this._isVisible) { this._onContextMenuHidden(true) } e = (0, _extend.extend)(e, this._menuShowingContext, { options: this.option(), cancel: false }); this._actions.onContextMenuShowing(e); if (!e.cancel) { const items = this.createContextMenuItems(this._menuShowingContext.fileItems, null, this._menuShowingContext.fileSystemItem); this._contextMenu.option("dataSource", items) } } tryUpdateVisibleContextMenu() { if (this._isVisible) { const items = this.createContextMenuItems(this._targetFileItems); this._contextMenu.option("dataSource", items) } } _onContextMenuShown() { this._isVisible = true } _onContextMenuHidden(preserveContext) { this._isVisible = false; if (!preserveContext) { this._menuShowingContext = {} } this._contextMenu.option("visible", false); this._raiseContextMenuHidden() } _raiseContextMenuHidden() { this._actions.onContextMenuHidden() } _getDefaultOptions() { return (0, _extend.extend)(super._getDefaultOptions(), { commandManager: null, onContextMenuHidden: null, onItemClick: null }) } _optionChanged(args) { const name = args.name; switch (name) { case "commandManager": this.repaint(); break; case "items": this.tryUpdateVisibleContextMenu(); break; case "onItemClick": case "onContextMenuShowing": case "onContextMenuHidden": this._actions[name] = this._createActionByOption(name); break; default: super._optionChanged(args) } } get _commandManager() { return this.option("commandManager") } } exports.default = FileManagerContextMenu; module.exports = exports.default; module.exports.default = exports.default }, 45295: /*!***************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/ui/file_manager/ui.file_manager.dialog.delete_item.js ***! \***************************************************************************************************/ function(module, exports, __webpack_require__) { exports.default = void 0; var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../core/renderer */ 64553)); var _extend = __webpack_require__( /*! ../../core/utils/extend */ 52576); var _message = _interopRequireDefault(__webpack_require__( /*! ../../common/core/localization/message */ 4671)); var _scroll_view = _interopRequireDefault(__webpack_require__( /*! ../scroll_view */ 91374)); var _uiFile_manager = _interopRequireDefault(__webpack_require__( /*! ./ui.file_manager.dialog */ 47666)); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } class FileManagerDeleteItemDialog extends _uiFile_manager.default { show(_ref) { let { itemName: itemName, itemCount: itemCount } = _ref; const text = 1 === itemCount ? _message.default.format("dxFileManager-dialogDeleteItemSingleItemConfirmation", itemName) : _message.default.format("dxFileManager-dialogDeleteItemMultipleItemsConfirmation", itemCount); if (this._$text) { this._$text.text(text) } else { this._initialText = text } super.show() } _getDialogOptions() { return (0, _extend.extend)(super._getDialogOptions(), { title: _message.default.format("dxFileManager-dialogDeleteItemTitle"), buttonText: _message.default.format("dxFileManager-dialogDeleteItemButtonText"), contentCssClass: "dx-filemanager-dialog-delete-item", popupCssClass: "dx-filemanager-dialog-delete-item-popup", height: "auto", maxHeight: "80vh" }) } _createContentTemplate(element) { super._createContentTemplate(element); this._$text = (0, _renderer.default)("<div>").text(this._initialText).appendTo(this._$contentElement); this._createComponent(this._$contentElement, _scroll_view.default, { width: "100%", height: "100%" }) } _getDialogResult() { return {} } } exports.default = FileManagerDeleteItemDialog; module.exports = exports.default; module.exports.default = exports.default }, 27356: /*!******************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/ui/file_manager/ui.file_manager.dialog.folder_chooser.js ***! \******************************************************************************************************/ function(module, exports, __webpack_require__) { exports.default = void 0; var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../core/renderer */ 64553)); var _extend = __webpack_require__( /*! ../../core/utils/extend */ 52576); var _message = _interopRequireDefault(__webpack_require__( /*! ../../common/core/localization/message */ 4671)); var _uiFile_manager = __webpack_require__( /*! ./ui.file_manager.common */ 57011); var _uiFile_manager2 = _interopRequireDefault(__webpack_require__( /*! ./ui.file_manager.dialog */ 47666)); var _uiFile_manager3 = _interopRequireDefault(__webpack_require__( /*! ./ui.file_manager.files_tree_view */ 82724)); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } class FileManagerFolderChooserDialog extends _uiFile_manager2.default { show() { var _this$_filesTreeView; this._setSelectedDirInfo(null); null === (_this$_filesTreeView = this._filesTreeView) || void 0 === _this$_filesTreeView || _this$_filesTreeView.refresh(); super.show() } switchToCopyDialog(targetItemInfos) { this._targetItemInfos = targetItemInfos; this._setTitle(_message.default.format("dxFileManager-dialogDirectoryChooserCopyTitle")); this._setApplyButtonOptions({ text: _message.default.format("dxFileManager-dialogDirectoryChooserCopyButtonText"), disabled: true }) } switchToMoveDialog(targetItemInfos) { this._targetItemInfos = targetItemInfos; this._setTitle(_message.default.format("dxFileManager-dialogDirectoryChooserMoveTitle")); this._setApplyButtonOptions({ text: _message.default.format("dxFileManager-dialogDirectoryChooserMoveButtonText"), disabled: true }) } _getDialogOptions() { return (0, _extend.extend)(super._getDialogOptions(), { contentCssClass: "dx-filemanager-dialog-folder-chooser", popupCssClass: "dx-filemanager-dialog-folder-chooser-popup" }) } _createContentTemplate(element) { super._createContentTemplate(element); this._filesTreeView = this._createComponent((0, _renderer.default)("<div>"), _uiFile_manager3.default, { getDirectories: this.option("getDirectories"), getCurrentDirectory: () => this._getDialogSelectedDirectory(), onDirectoryClick: e => this._onFilesTreeViewDirectoryClick(e), onFilesTreeViewContentReady: () => this._toggleUnavailableLocationsDisabled(true) }); this._$contentElement.append(this._filesTreeView.$element()) } _getDialogResult() { const result = this._getDialogSelectedDirectory(); return result ? { folder: result } : result } _getDefaultOptions() { return (0, _extend.extend)(super._getDefaultOptions(), { getItems: null }) } _getDialogSelectedDirectory() { return this._selectedDirectoryInfo } _onFilesTreeViewDirectoryClick(_ref) { let { itemData: itemData } = _ref; this._setSelectedDirInfo(itemData); this._filesTreeView.updateCurrentDirectory() } _setSelectedDirInfo(dirInfo) { this._selectedDirectoryInfo = dirInfo; this._setApplyButtonOptions({ disabled: !dirInfo }) } _onPopupShown() { this._toggleUnavailableLocationsDisabled(true); super._onPopupShown() } _onPopupHiding() { this._toggleUnavailableLocationsDisabled(false); super._onPopupHiding() } _toggleUnavailableLocationsDisabled(isDisabled) { if (!this._filesTreeView) { return } const locations = this._getLocationsToProcess(isDisabled); this._filesTreeView.toggleDirectoryExpandedStateRecursive(locations.locationsToExpand[0], isDisabled).then((() => this._filesTreeView.toggleDirectoryLineExpandedState(locations.locationsToCollapse, !isDisabled).then((() => locations.locationKeysToDisable.forEach((key => this._filesTreeView.toggleNodeDisabledState(key, isDisabled))))))) } _getLocationsToProcess(isDisabled) { const expandLocations = {}; const collapseLocations = {}; this._targetItemInfos.forEach((itemInfo => { if (itemInfo.parentDirectory) { expandLocations[itemInfo.parentDirectory.getInternalKey()] = itemInfo.parentDirectory } if (itemInfo.fileItem.isDirectory) { collapseLocations[itemInfo.getInternalKey()] = itemInfo } })); const expandMap = (0, _uiFile_manager.getMapFromObject)(expandLocations); const collapseMap = (0, _uiFile_manager.getMapFromObject)(collapseLocations); return { locationsToExpand: isDisabled ? expandMap.values : [], locationsToCollapse: isDisabled ? collapseMap.values : [], locationKeysToDisable: expandMap.keys.concat(...collapseMap.keys) } } } exports.default = FileManagerFolderChooserDialog; module.exports = exports.default; module.exports.default = exports.default }, 47666: /*!***************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/ui/file_manager/ui.file_manager.dialog.js ***! \***************************************************************************************/ function(module, exports, __webpack_require__) { exports.default = void 0; var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../core/renderer */ 64553)); var _extend = __webpack_require__( /*! ../../core/utils/extend */ 52576); var _type = __webpack_require__( /*! ../../core/utils/type */ 11528); var _message = _interopRequireDefault(__webpack_require__( /*! ../../common/core/localization/message */ 4671)); var _ui = _interopRequireDefault(__webpack_require__( /*! ../widget/ui.widget */ 11118)); var _ui2 = _interopRequireDefault(__webpack_require__( /*! ../popup/ui.popup */ 10720)); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } class FileManagerDialogBase extends _ui.default { _initMarkup() { super._initMarkup(); this._createOnClosedAction(); const options = this._getDialogOptions(); const $popup = (0, _renderer.default)("<div>").appendTo(this.$element()); const popupOptions = { showTitle: true, title: options.title, visible: false, hideOnOutsideClick: true, contentTemplate: this._createContentTemplate.bind(this), toolbarItems: [{ widget: "dxButton", toolbar: "bottom", location: "after", options: { text: options.buttonText, onClick: this._applyDialogChanges.bind(this) } }, { widget: "dxButton", toolbar: "bottom", location: "after", options: { text: _message.default.format("dxFileManager-dialogButtonCancel"), onClick: this._closeDialog.bind(this) } }], onInitialized: _ref => { let { component: component } = _ref; component.registerKeyHandler("enter", this._applyDialogChanges.bind(this)) }, onHiding: this._onPopupHiding.bind(this), onShown: this._onPopupShown.bind(this), _wrapperClassExternal: `dx-filemanager-dialog-popup ${options.popupCssClass??""}` }; if ((0, _type.isDefined)(options.height)) { popupOptions.height = options.height } if ((0, _type.isDefined)(options.maxHeight)) { popupOptions.maxHeight = options.maxHeight } this._popup = this._createComponent($popup, _ui2.default, popupOptions) } show() { this._dialogResult = null; this._popup.show() } _getDialogOptions() { return { title: "Title", buttonText: "ButtonText", contentCssClass: "", popupCssClass: "" } } _createContentTemplate(element) { this._$contentElement = (0, _renderer.default)("<div>").appendTo(element).addClass("dx-filemanager-dialog"); const cssClass = this._getDialogOptions().contentCssClass; if (cssClass) { this._$contentElement.addClass(cssClass) } } _getDialogResult() { return null } _applyDialogChanges() { const result = this._getDialogResult(); if (result) { this._dialogResult = result; this._closeDialog() } } _closeDialog() { this._popup.hide() } _onPopupHiding() { this._onClosedAction({ dialogResult: this._dialogResult }) } _onPopupShown() {} _createOnClosedAction() { this._onClosedAction = this._createActionByOption("onClosed") } _setTitle(newTitle) { this._popup.option("title", newTitle) } _setApplyButtonOptions(options) { this._popup.option("toolbarItems[0].options", options) } _getDefaultOptions() { return (0, _extend.extend)(super._getDefaultOptions(), { onClosed: null }) } _optionChanged(args) { const name = args.name; if ("onClosed" === name) { this._createOnPathChangedAction() } else { super._optionChanged(args) } } } exports.default = FileManagerDialogBase; module.exports = exports.default; module.exports.default = exports.default }, 52625: /*!***************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/ui/file_manager/ui.file_manager.dialog.name_editor.js ***! \***************************************************************************************************/ function(module, exports, __webpack_require__) { exports.default = void 0; var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../core/renderer */ 64553)); var _extend = __webpack_require__( /*! ../../core/utils/extend */ 52576); var _text_box = _interopRequireDefault(__webpack_require__( /*! ../text_box */ 20780)); var _uiFile_manager = _interopRequireDefault(__webpack_require__( /*! ./ui.file_manager.dialog */ 47666)); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } class FileManagerNameEditorDialog extends _uiFile_manager.default { show(name) { name = name || ""; if (this._nameTextBox) { this._nameTextBox.option("value", name) } else { this._initialNameValue = name } super.show() } _onPopupShown() { if (!this._nameTextBox) { return } const $textBoxInput = this._nameTextBox._input(); $textBoxInput.length && $textBoxInput[0].select(); this._nameTextBox.focus() } _getDialogOptions() { return (0, _extend.extend)(super._getDialogOptions(), { title: this.option("title"), buttonText: this.option("buttonText"), contentCssClass: "dx-filemanager-dialog-name-editor", popupCssClass: "dx-filemanager-dialog-name-editor-popup" }) } _createContentTemplate(element) { super._createContentTemplate(element); this._nameTextBox = this._createComponent((0, _renderer.default)("<div>"), _text_box.default, { value: this._initialNameValue, onEnterKey: () => this._hasCompositionJustEnded && this._applyDialogChanges(), onKeyDown: e => this._checkCompositionEnded(e) }); this._$contentElement.append(this._nameTextBox.$element()) } _checkCompositionEnded(_ref) { let { event: event } = _ref; this._hasCompositionJustEnded = 229 !== event.which } _getDialogResult() { const nameValue = this._nameTextBox.option("value"); return nameValue ? { name: nameValue } : null } _getDefaultOptions() { return (0, _extend.extend)(super._getDefaultOptions(), { title: "", buttonText: "" }) } } exports.default = FileManagerNameEditorDialog; module.exports = exports.default; module.exports.default = exports.default }, 57834: /*!***********************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/ui/file_manager/ui.file_manager.dialog_manager.js ***! \***********************************************************************************************/ function(module, exports, __webpack_require__) { exports.default = void 0; var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../core/renderer */ 64553)); var _extend = __webpack_require__( /*! ../../core/utils/extend */ 52576); var _message = _interopRequireDefault(__webpack_require__( /*! ../../common/core/localization/message */ 4671)); var _uiFile_managerDialog = _interopRequireDefault(__webpack_require__( /*! ./ui.file_manager.dialog.name_editor */ 52625)); var _uiFile_managerDialog2 = _interopRequireDefault(__webpack_require__( /*! ./ui.file_manager.dialog.folder_chooser */ 27356)); var _uiFile_managerDialog3 = _interopRequireDefault(__webpack_require__( /*! ./ui.file_manager.dialog.delete_item */ 45295)); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } exports.default = class { constructor($element, options) { this._$element = $element; this._options = options; const baseDialogOptions = { onClosed: this._options.onDialogClosed, rtlEnabled: this._options.rtlEnabled }; const $chooseFolderDialog = (0, _renderer.default)("<div>").appendTo(this._$element); this._chooseDirectoryDialog = new _uiFile_managerDialog2.default($chooseFolderDialog, (0, _extend.extend)(baseDialogOptions, this._options.chooseDirectoryDialog)); const $renameDialog = (0, _renderer.default)("<div>").appendTo(this._$element); this._renameItemDialog = new _uiFile_managerDialog.default($renameDialog, (0, _extend.extend)(baseDialogOptions, { title: _message.default.format("dxFileManager-dialogRenameItemTitle"), buttonText: _message.default.format("dxFileManager-dialogRenameItemButtonText") })); const $createDialog = (0, _renderer.default)("<div>").appendTo(this._$element); this._createItemDialog = new _uiFile_managerDialog.default($createDialog, (0, _extend.extend)(baseDialogOptions, { title: _message.default.format("dxFileManager-dialogCreateDirectoryTitle"), buttonText: _message.default.format("dxFileManager-dialogCreateDirectoryButtonText") })); const $deleteItemDialog = (0, _renderer.default)("<div>").appendTo(this._$element); this._deleteItemDialog = new _uiFile_managerDialog3.default($deleteItemDialog, baseDialogOptions) } getCopyDialog(targetItemInfos) { this._chooseDirectoryDialog.switchToCopyDialog(targetItemInfos); return this._chooseDirectoryDialog } getMoveDialog(targetItemInfos) { this._chooseDirectoryDialog.switchToMoveDialog(targetItemInfos); return this._chooseDirectoryDialog } getRenameItemDialog() { return this._renameItemDialog } getCreateItemDialog() { return this._createItemDialog } getDeleteItemDialog() { return this._deleteItemDialog } updateDialogRtl(value) { [this._chooseDirectoryDialog, this._renameItemDialog, this._createItemDialog, this._deleteItemDialog].forEach((dialog => { dialog.option("rtlEnabled", value) })) } }; module.exports = exports.default; module.exports.default = exports.default }, 9516: /*!****************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/ui/file_manager/ui.file_manager.editing.js ***! \****************************************************************************************/ function(module, exports, __webpack_require__) { exports.default = void 0; var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../core/renderer */ 64553)); var _extend = __webpack_require__( /*! ../../core/utils/extend */ 52576); var _deferred = __webpack_require__( /*! ../../core/utils/deferred */ 87739); var _iterator = __webpack_require__( /*! ../../core/utils/iterator */ 21274); var _string = __webpack_require__( /*! ../../core/utils/string */ 54497); var _type = __webpack_require__( /*! ../../core/utils/type */ 11528); var _message = _interopRequireDefault(__webpack_require__( /*! ../../common/core/localization/message */ 4671)); var _ui = _interopRequireDefault(__webpack_require__( /*! ../widget/ui.widget */ 11118)); var _uiFile_manager = _interopRequireDefault(__webpack_require__( /*! ./ui.file_manager.dialog_manager */ 57834)); var _uiFile_manager2 = _interopRequireDefault(__webpack_require__( /*! ./ui.file_manager.file_uploader */ 9953)); var _uiFile_manager3 = __webpack_require__( /*! ./ui.file_manager.messages */ 7702); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } class FileManagerEditingControl extends _ui.default { _initMarkup() { super._initMarkup(); this._initActions(); this._controller = this.option("controller"); this._controller.on("EditActionStarting", this._onEditActionStarting.bind(this)); this._controller.on("EditActionResultAcquired", this._onEditActionResultAcquired.bind(this)); this._controller.on("EditActionItemError", this._onEditActionItemError.bind(this)); this._controller.on("EditActionError", this._onEditActionError.bind(this)); this._controller.on("CompleteEditActionItem", this._onCompleteEditActionItem.bind(this)); this._controller.on("CompleteEditAction", this._onCompleteEditAction.bind(this)); this._model = this.option("model"); this._uploadOperationInfoMap = {}; this._dialogManager = new _uiFile_manager.default(this.$element(), { chooseDirectoryDialog: { provider: this._controller._fileProvider, getDirectories: this._controller.getDirectories.bind(this._controller), getCurrentDirectory: this._controller.getCurrentDirectory.bind(this._controller) }, rtlEnabled: this.option("rtlEnabled"), onDialogClosed: this._onDialogClosed.bind(this) }); this._fileUploader = this._createFileUploader(); const notificationControl = this.option("notificationControl"); if (notificationControl) { this._initNotificationControl(notificationControl) } this._createMetadataMap() } _initNotificationControl(notificationControl) { this._notificationControl = notificationControl; this._notificationControl.option({ onOperationCanceled: _ref => { let { info: info } = _ref; return this._onCancelUploadSession(info) }, onOperationItemCanceled: _ref2 => { let { item: item, itemIndex: itemIndex } = _ref2; return this._onCancelFileUpload(item, itemIndex) } }) } _getFileUploaderComponent() { return _uiFile_manager2.default } _createFileUploader() { const $fileUploader = (0, _renderer.default)("<div>").appendTo(this.$element()); return this._createComponent($fileUploader, this._getFileUploaderComponent(), { getController: this._getFileUploaderController.bind(this), dropZonePlaceholderContainer: this.option("uploadDropZonePlaceholderContainer"), onUploadSessionStarted: e => this._onUploadSessionStarted(e), onUploadProgress: e => this._onUploadProgress(e), onUploadFinished: e => this._onUploadFinished(e) }) } setUploaderDropZone($element) { this._fileUploader.option("dropZone", $element) } setUploaderSplitterElement(element) { this._fileUploader.option("splitterElement", element) } _getFileUploaderController() { const uploadDirectory = this.uploadDirectoryInfo.fileItem; return { chunkSize: this._controller.getFileUploadChunkSize(), uploadFileChunk: (fileData, chunksInfo) => this._controller.uploadFileChunk(fileData, chunksInfo, uploadDirectory), abortFileUpload: (fileData, chunksInfo) => this._controller.abortFileUpload(fileData, chunksInfo, uploadDirectory) } } _createMetadataMap() { this._metadataMap = { create: { action: arg => this._tryCreate(arg), affectsAllItems: true, singleItemProcessingMessage: _message.default.format("dxFileManager-editingCreateSingleItemProcessingMessage"), singleItemSuccessMessage: _message.default.format("dxFileManager-editingCreateSingleItemSuccessMessage"), singleItemErrorMessage: _message.default.format("dxFileManager-editingCreateSingleItemErrorMessage"), commonErrorMessage: _message.default.format("dxFileManager-editingCreateCommonErrorMessage") }, rename: { action: arg => this._tryRename(arg), singleItemProcessingMessage: _message.default.format("dxFileManager-editingRenameSingleItemProcessingMessage"), singleItemSuccessMessage: _message.default.format("dxFileManager-editingRenameSingleItemSuccessMessage"), singleItemErrorMessage: _message.default.format("dxFileManager-editingRenameSingleItemErrorMessage"), commonErrorMessage: _message.default.format("dxFileManager-editingRenameCommonErrorMessage") }, delete: { action: arg => this._tryDelete(arg), singleItemProcessingMessage: _message.default.format("dxFileManager-editingDeleteSingleItemProcessingMessage"), multipleItemsProcessingMessage: _message.default.format("dxFileManager-editingDeleteMultipleItemsProcessingMessage"), singleItemSuccessMessage: _message.default.format("dxFileManager-editingDeleteSingleItemSuccessMessage"), multipleItemsSuccessMessage: _message.default.format("dxFileManager-editingDeleteMultipleItemsSuccessMessage"), singleItemErrorMessage: _message.default.format("dxFileManager-editingDeleteSingleItemErrorMessage"), multipleItemsErrorMessage: _message.default.format("dxFileManager-editingDeleteMultipleItemsErrorMessage"), commonErrorMessage: _message.default.format("dxFileManager-editingDeleteCommonErrorMessage") }, move: { action: arg => this._tryMove(arg), singleItemProcessingMessage: _message.default.format("dxFileManager-editingMoveSingleItemProcessingMessage"), multipleItemsProcessingMessage: _message.default.format("dxFileManager-editingMoveMultipleItemsProcessingMessage"), singleItemSuccessMessage: _message.default.format("dxFileManager-editingMoveSingleItemSuccessMessage"), multipleItemsSuccessMessage: _message.default.format("dxFileManager-editingMoveMultipleItemsSuccessMessage"), singleItemErrorMessage: _message.default.format("dxFileManager-editingMoveSingleItemErrorMessage"), multipleItemsErrorMessage: _message.default.format("dxFileManager-editingMoveMultipleItemsErrorMessage"), commonErrorMessage: _message.default.format("dxFileManager-editingMoveCommonErrorMessage") }, copy: { action: arg => this._tryCopy(arg), singleItemProcessingMessage: _message.default.format("dxFileManager-editingCopySingleItemProcessingMessage"), multipleItemsProcessingMessage: _message.default.format("dxFileManager-editingCopyMultipleItemsProcessingMessage"), singleItemSuccessMessage: _message.default.format("dxFileManager-editingCopySingleItemSuccessMessage"), multipleItemsSuccessMessage: _message.default.format("dxFileManager-editingCopyMultipleItemsSuccessMessage"), singleItemErrorMessage: _message.default.format("dxFileManager-editingCopySingleItemErrorMessage"), multipleItemsErrorMessage: _message.default.format("dxFileManager-editingCopyMultipleItemsErrorMessage"), commonErrorMessage: _message.default.format("dxFileManager-editingCopyCommonErrorMessage") }, upload: { action: arg => this._tryUpload(arg), allowCancel: true, allowItemProgress: true, singleItemProcessingMessage: _message.default.format("dxFileManager-editingUploadSingleItemProcessingMessage"), multipleItemsProcessingMessage: _message.default.format("dxFileManager-editingUploadMultipleItemsProcessingMessage"), singleItemSuccessMessage: _message.default.format("dxFileManager-editingUploadSingleItemSuccessMessage"), multipleItemsSuccessMessage: _message.default.format("dxFileManager-editingUploadMultipleItemsSuccessMessage"), singleItemErrorMessage: _message.default.format("dxFileManager-editingUploadSingleItemErrorMessage"), multipleItemsErrorMessage: _message.default.format("dxFileManager-editingUploadMultipleItemsErrorMessage"), canceledMessage: _message.default.format("dxFileManager-editingUploadCanceledMessage") }, download: { action: arg => this._download(arg), singleItemProcessingMessage: "", multipleItemsProcessingMessage: "", singleItemErrorMessage: _message.default.format("dxFileManager-editingDownloadSingleItemErrorMessage"), multipleItemsErrorMessage: _message.default.format("dxFileManager-editingDownloadMultipleItemsErrorMessage") }, getItemContent: { action: arg => this._getItemContent(arg) }, getItems: { singleItemProcessingMessage: "", singleItemErrorMessage: _message.default.format("dxFileManager-errorDirectoryOpenFailed"), commonErrorMessage: _message.default.format("dxFileManager-errorDirectoryOpenFailed") } } } getCommandActions() { const result = {}; (0, _iterator.each)(this._metadataMap, (name => { if (Object.prototype.hasOwnProperty.call(this._metadataMap, name)) { result[name] = arg => this._executeAction(name, arg) } })); return result } _executeAction(actionName, arg) { const actionMetadata = this._metadataMap[actionName]; return actionMetadata ? actionMetadata.action(arg) : null } _onCancelUploadSession(info) { this._fileUploader.cancelUpload(info.uploadSessionId) } _onCancelFileUpload(item, itemIndex) { this._fileUploader.cancelFileUpload(item.info.uploadSessionId, itemIndex) } _onUploadProgress(_ref3) { let { sessionId: sessionId, fileIndex: fileIndex, commonValue: commonValue, fileValue: fileValue } = _ref3; const { operationInfo: operationInfo } = this._uploadOperationInfoMap[sessionId]; this._notificationControl.updateOperationItemProgress(operationInfo, fileIndex, 100 * fileValue, 100 * commonValue) } _onUploadFinished(_ref4) { let { sessionId: sessionId, commonValue: commonValue } = _ref4; const { operationInfo: operationInfo } = this._uploadOperationInfoMap[sessionId]; this._notificationControl.finishOperation(operationInfo, 100 * commonValue); this._scheduleUploadSessionDisposal(sessionId, "uploader") } _onUploadSessionStarted(_ref5) { let { sessionInfo: sessionInfo } = _ref5; this._controller.processUploadSession(sessionInfo, this.uploadDirectoryInfo) } _onEditActionStarting(actionInfo) { const actionMetadata = this._metadataMap[actionInfo.name]; const context = new FileManagerActionContext(actionMetadata, actionInfo.itemInfos, actionInfo.directory); const operationInfo = this._notificationControl.addOperation(context.processingMessage, actionMetadata.allowCancel, !actionMetadata.allowItemProgress); (0, _extend.extend)(actionInfo.customData, { context: context, operationInfo: operationInfo }); switch (actionInfo.name) { case "upload": { const sessionId = actionInfo.customData.sessionInfo.sessionId; operationInfo.uploadSessionId = sessionId; this._uploadOperationInfoMap[sessionId] = { operationInfo: operationInfo } } break; case "rename": actionInfo.customData.context.itemNewName = actionInfo.customData.itemNewName } } _onEditActionResultAcquired(actionInfo) { const { context: context, operationInfo: operationInfo } = actionInfo.customData; context.singleRequest = actionInfo.singleRequest; const details = context.itemInfos.map((itemInfo => this._getItemProgressDisplayInfo(itemInfo))); this._notificationControl.addOperationDetails(operationInfo, details, context.actionMetadata.allowCancel) } _onEditActionError(actionInfo, errorInfo) { const { context: context, operationInfo: operationInfo } = actionInfo.customData; context.singleRequest = actionInfo.singleRequest; this._handleActionError(operationInfo, context, errorInfo); this._completeAction(operationInfo, context) } _onEditActionItemError(actionInfo, errorInfo) { const { context: context, operationInfo: operationInfo } = actionInfo.customData; this._handleActionError(operationInfo, context, errorInfo) } _onCompleteEditActionItem(actionInfo, info) { const { context: context, operationInfo: operationInfo } = actionInfo.customData; if (!info.result || !info.result.canceled) { context.completeOperationItem(info.index); this._notificationControl.completeOperationItem(operationInfo, info.index, context.commonProgress) } } _onCompleteEditAction(actionInfo) { const { context: context, operationInfo: operationInfo } = actionInfo.customData; this._completeAction(operationInfo, context); if ("upload" === actionInfo.name) { this._scheduleUploadSessionDisposal(actionInfo.customData.sessionInfo.sessionId, "controller") } } _scheduleUploadSessionDisposal(sessionId, requester) { if ((0, _type.isDefined)(this._uploadOperationInfoMap[sessionId].requester) && this._uploadOperationInfoMap[sessionId].requester !== requester) { delete this._uploadOperationInfoMap[sessionId] } else { this._uploadOperationInfoMap[sessionId].requester = requester } } _tryCreate(parentDirectories) { const parentDirectoryInfo = parentDirectories && parentDirectories[0] || this._getCurrentDirectory(); const newDirName = _message.default.format("dxFileManager-newDirectoryName"); return this._showDialog(this._dialogManager.getCreateItemDialog(), newDirName).then((_ref6 => { let { name: name } = _ref6; return this._controller.createDirectory(parentDirectoryInfo, name) })) } _tryRename(itemInfos) { const itemInfo = itemInfos && itemInfos[0] || this._model.getMultipleSelectedItems()[0]; if (!itemInfo) { return (new _deferred.Deferred).reject().promise() } return this._showDialog(this._dialogManager.getRenameItemDialog(), itemInfo.fileItem.name).then((_ref7 => { let { name: name } = _ref7; return this._controller.renameItem(itemInfo, name) })) } _tryDelete(itemInfos) { itemInfos = itemInfos || this._model.getMultipleSelectedItems(); if (0 === itemInfos.length) { return (new _deferred.Deferred).reject().promise() } const itemName = itemInfos[0].fileItem.name; const itemCount = itemInfos.length; return this._showDialog(this._dialogManager.getDeleteItemDialog(), { itemName: itemName, itemCount: itemCount }).then((() => this._controller.deleteItems(itemInfos))) } _tryMove(itemInfos) { itemInfos = itemInfos || this._model.getMultipleSelectedItems(); if (0 === itemInfos.length) { return (new _deferred.Deferred).reject().promise() } return this._showDialog(this._dialogManager.getMoveDialog(itemInfos)).then((_ref8 => { let { folder: folder } = _ref8; return this._controller.moveItems(itemInfos, folder) })) } _tryCopy(itemInfos) { itemInfos = itemInfos || this._model.getMultipleSelectedItems(); if (0 === itemInfos.length) { return (new _deferred.Deferred).reject().promise() } return this._showDialog(this._dialogManager.getCopyDialog(itemInfos)).then((_ref9 => { let { folder: folder } = _ref9; return this._controller.copyItems(itemInfos, folder) })) } _tryUpload(destinationFolder) { this._uploadDirectoryInfo = null === destinationFolder || void 0 === destinationFolder ? void 0 : destinationFolder[0]; this._fileUploader.tryUpload() } _download(itemInfos) { itemInfos = itemInfos || this._model.getMultipleSelectedItems(); if (0 === itemInfos.length) { return (new _deferred.Deferred).reject().promise() } return this._controller.downloadItems(itemInfos) } _getItemContent(itemInfos) { itemInfos = itemInfos || this._model.getMultipleSelectedItems(); return this._controller.getItemContent(itemInfos) } _completeAction(operationInfo, context) { this._notificationControl.completeOperation(operationInfo, context.completionMessage, !context.success, context.statusText); if (context.hasModifiedItems()) { this._raiseOnSuccess(context.onlyFiles) } } _handleActionError(operationInfo, context, errorInfo) { operationInfo.hasError = true; if (context.singleRequest) { this._handleSingleRequestActionError(operationInfo, context, errorInfo) } else { this._handleMultipleRequestActionError(operationInfo, context, errorInfo) } } _handleSingleRequestActionError(operationInfo, context, errorInfo) { const itemInfo = context.getItemForSingleRequestError(); const itemName = context.getItemName(errorInfo.errorCode); const errorText = this._getErrorText(errorInfo, itemInfo, itemName); context.processSingleRequestError(errorText); const operationErrorInfo = this._getOperationErrorInfo(context); this._notificationControl.completeSingleOperationWithError(operationInfo, operationErrorInfo); if (context.multipleItems) { this._raiseOnSuccess(context.onlyFiles) } } _handleMultipleRequestActionError(operationInfo, context, errorInfo) { const itemInfo = context.getItemForMultipleRequestError(errorInfo.index); const itemName = context.getItemName(errorInfo.errorCode, errorInfo.index); const errorText = this._getErrorText(errorInfo, itemInfo, itemName); context.processMultipleRequestError(errorInfo.index, errorText); const operationErrorInfo = this._getOperationErrorInfo(context); this._notificationControl.addOperationDetailsError(operationInfo, operationErrorInfo) } _getOperationErrorInfo(context) { const detailError = context.errorState.currentDetailError; return { commonErrorText: context.errorState.commonErrorText, item: detailError.itemInfo ? this._getItemProgressDisplayInfo(detailError.itemInfo) : null, itemIndex: detailError.itemIndex, detailErrorText: detailError.errorText } } _getErrorText(errorInfo, itemInfo, itemName) { const errorText = errorInfo.errorText || _uiFile_manager3.FileManagerMessages.get(errorInfo.errorCode, itemName); const errorArgs = { fileSystemItem: null === itemInfo || void 0 === itemInfo ? void 0 : itemInfo.fileItem, errorCode: errorInfo.errorCode, errorText: errorText }; this._raiseOnError(errorArgs); return errorArgs.errorText } _getItemProgressDisplayInfo(itemInfo) { return { commonText: itemInfo.fileItem.name, imageUrl: this._getItemThumbnail(itemInfo) } } _showDialog(dialog, dialogArgument) { this._dialogDeferred = new _deferred.Deferred; dialog.show(dialogArgument); return this._dialogDeferred.promise() } _onDialogClosed(e) { const result = e.dialogResult; if (result) { this._dialogDeferred.resolve(result) } else { this._dialogDeferred.reject() } } updateDialogRtl(value) { this._dialogManager.updateDialogRtl(value) } _getItemThumbnail(item) { const itemThumbnailGetter = this.option("getItemThumbnail"); if (!itemThumbnailGetter) { return null } const info = itemThumbnailGetter(item); return info ? info.thumbnail : null } _initActions() { this._actions = { onSuccess: this._createActionByOption("onSuccess"), onError: this._createActionByOption("onError") } } _getDefaultOptions() { return (0, _extend.extend)(super._getDefaultOptions(), { model: { getMultipleSelectedItems: null }, notificationControl: null, getItemThumbnail: null, onSuccess: null, onError: null }) } _optionChanged(args) { const name = args.name; switch (name) { case "model": this.repaint(); break; case "notificationControl": this._initNotificationControl(args.value); break; case "getItemThumbnail": break; case "uploadDropZonePlaceholderContainer": this._fileUploader.option("dropZonePlaceholderContainer", args.value); break; case "onSuccess": case "onError": this._actions[name] = this._createActionByOption(name); break; default: super._optionChanged(args) } } _raiseOnSuccess(updatedOnlyFiles) { this._actions.onSuccess({ updatedOnlyFiles: updatedOnlyFiles }) } _raiseOnError(args) { this._actions.onError(args) } _getCurrentDirectory() { return this._controller.getCurrentDirectory() } get uploadDirectoryInfo() { return this._uploadDirectoryInfo || this._getCurrentDirectory() } } class FileManagerActionContext { constructor(actionMetadata, itemInfos, directoryInfo) { this._actionMetadata = actionMetadata; this._itemInfos = itemInfos; this._onlyFiles = !this._actionMetadata.affectsAllItems && this._itemInfos.every((info => !info.fileItem.isDirectory)); this._items = this._itemInfos.map((itemInfo => itemInfo.fileItem)); this._multipleItems = this._items.length > 1; this._location = directoryInfo.getDisplayName(); this._singleRequest = true; this._completedItems = []; this._commonProgress = 0; this._errorState = { failedCount: 0 }; this._itemNewName = "" } completeOperationItem(itemIndex) { if (this._singleRequest) { this._completedItems = [...this._items] } else { const item = this._items[itemIndex]; this._completedItems.push(item) } if (!this._actionMetadata.allowItemProgress) { this._commonProgress = this._completedItems.length / this._items.length * 100 } } processSingleRequestError(errorText) { this._errorState.failedCount = 1; this._errorState.commonErrorText = this._multipleItems ? this._actionMetadata.commonErrorMessage : this._actionMetadata.singleItemErrorMessage; const itemIndex = this._multipleItems ? -1 : 1; const itemInfo = this.getItemForSingleRequestError(); this._setCurrentDetailError(itemIndex, itemInfo, errorText) } processMultipleRequestError(itemIndex, errorText) { this._errorState.failedCount++; this._errorState.commonErrorText = this._errorState.failedCount > 1 ? (0, _string.format)(this._actionMetadata.multipleItemsErrorMessage, this._errorState.failedCount) : this._actionMetadata.singleItemErrorMessage; const itemInfo = this.getItemForMultipleRequestError(itemIndex); this._setCurrentDetailError(itemIndex, itemInfo, errorText) } hasModifiedItems() { return this._hasCompletedItems() || this._singleRequest && !this.success && this._multipleItems } getItemForSingleRequestError() { return this._multipleItems ? null : this._itemInfos[0] } getItemForMultipleRequestError(itemIndex) { return this._itemInfos[itemIndex] } getItemName(errorCode, itemIndex) { const itemInfo = this.singleRequest ? this.getItemForSingleRequestError() : this.getItemForMultipleRequestError(itemIndex); let result = null === itemInfo || void 0 === itemInfo ? void 0 : itemInfo.fileItem.name; if (this.itemNewName && this._isItemExistsErrorCode(errorCode)) { result = this.itemNewName } return result } _isItemExistsErrorCode(errorCode) { return errorCode === _uiFile_manager3.ErrorCode.DirectoryExists || errorCode === _uiFile_manager3.ErrorCode.FileExists } _setCurrentDetailError(itemIndex, itemInfo, errorText) { this._errorState.currentDetailError = { itemIndex: itemIndex, itemInfo: itemInfo, errorText: errorText } } _hasCompletedItems() { return this._completedItems.length > 0 } get actionMetadata() { return this._actionMetadata } get itemInfos() { return this._itemInfos } get itemNewName() { return this._itemNewName } set itemNewName(value) { this._itemNewName = value } get errorState() { return this._errorState } get singleRequest() { return this._singleRequest } set singleRequest(value) { this._singleRequest = value } get multipleItems() { return this._multipleItems } get onlyFiles() { return this._onlyFiles } get processingMessage() { return this._multipleItems ? (0, _string.format)(this._actionMetadata.multipleItemsProcessingMessage, this._items.length, this._location) : (0, _string.format)(this._actionMetadata.singleItemProcessingMessage, this._location) } get successMessage() { if (this._hasCompletedItems()) { return this._multipleItems ? (0, _string.format)(this._actionMetadata.multipleItemsSuccessMessage, this._completedItems.length, this._location) : (0, _string.format)(this._actionMetadata.singleItemSuccessMessage, this._location) } else { return this._multipleItems ? (0, _string.format)(this._actionMetadata.multipleItemsErrorMessage, this._items.length) : this._actionMetadata.singleItemErrorMessage } } get completionMessage() { return this.success ? this.successMessage : this.errorState.commonErrorText } get statusText() { return this.success && !this._hasCompletedItems() ? this._actionMetadata.canceledMessage : void 0 } get commonProgress() { return this._commonProgress } get success() { return !this._errorState.failedCount } } exports.default = FileManagerEditingControl; module.exports = exports.default; module.exports.default = exports.default }, 9787: /*!****************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/ui/file_manager/ui.file_manager.file_actions_button.js ***! \****************************************************************************************************/ function(module, exports, __webpack_require__) { exports.default = void 0; var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../core/renderer */ 64553)); var _extend = __webpack_require__( /*! ../../core/utils/extend */ 52576); var _ui = _interopRequireDefault(__webpack_require__( /*! ../widget/ui.widget */ 11118)); var _button = _interopRequireDefault(__webpack_require__( /*! ../button */ 64973)); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } class FileManagerFileActionsButton extends _ui.default { _initMarkup() { this._createClickAction(); const $button = (0, _renderer.default)("<div>"); this.$element().append($button).addClass("dx-filemanager-file-actions-button"); this._button = this._createComponent($button, _button.default, { icon: "overflow", stylingMode: "text", onClick: e => this._raiseClick(e) }); super._initMarkup() } _createClickAction() { this._clickAction = this._createActionByOption("onClick") } _raiseClick(e) { this._clickAction(e) } _getDefaultOptions() { return (0, _extend.extend)(super._getDefaultOptions(), { cssClass: "", onClick: null }) } _optionChanged(args) { const name = args.name; switch (name) { case "cssClass": this.repaint(); break; case "onClick": this._createClickAction(); break; default: super._optionChanged(args) } } setActive(active) { this.$element().toggleClass("dx-filemanager-file-actions-button-activated", active); setTimeout((() => this._button.$element().toggleClass("dx-state-active", active))) } } exports.default = FileManagerFileActionsButton; module.exports = exports.default; module.exports.default = exports.default }, 9953: /*!**********************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/ui/file_manager/ui.file_manager.file_uploader.js ***! \**********************************************************************************************/ function(module, exports, __webpack_require__) { exports.default = void 0; var _size = __webpack_require__( /*! ../../core/utils/size */ 57653); var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../core/renderer */ 64553)); var _extend = __webpack_require__( /*! ../../core/utils/extend */ 52576); var _deferred = __webpack_require__( /*! ../../core/utils/deferred */ 87739); var _window = __webpack_require__( /*! ../../core/utils/window */ 3104); var _guid = _interopRequireDefault(__webpack_require__( /*! ../../core/guid */ 19427)); var _ui = _interopRequireDefault(__webpack_require__( /*! ../widget/ui.widget */ 11118)); var _file_uploader = _interopRequireDefault(__webpack_require__( /*! ../file_uploader */ 26980)); var _uiFile_manager = __webpack_require__( /*! ./ui.file_manager.common */ 57011); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } class FileManagerFileUploader extends _ui.default { _initMarkup() { this._initActions(); this.$element().addClass("dx-filemanager-fileuploader"); this._uploaderInfos = []; this._createInternalFileUploader(); this._createDropZonePlaceholder(); this._setDropZonePlaceholderVisible(false); super._initMarkup() } _createInternalFileUploader() { const chunkSize = this._getController().chunkSize; const $fileUploader = (0, _renderer.default)("<div>").appendTo(this.$element()); const fileUploader = this._createComponent($fileUploader, _file_uploader.default, { name: "file", multiple: true, showFileList: false, activeStateEnabled: false, focusStateEnabled: false, hoverStateEnabled: false, labelText: "", readyToUploadMessage: "", accept: "*", chunkSize: chunkSize, dropZone: this.option("dropZone"), onValueChanged: e => this._onFileUploaderValueChanged(e), onProgress: e => this._onFileUploaderProgress(e), onUploaded: e => this._onFileUploaderUploaded(e), onFilesUploaded: e => this._onFileUploaderAllFilesUploaded(e), onUploadAborted: e => this._onFileUploaderUploadAborted(e), onUploadError: e => this._onFileUploaderUploadError(e), onDropZoneEnter: () => this._setDropZonePlaceholderVisible(true), onDropZoneLeave: () => this._setDropZonePlaceholderVisible(false) }); fileUploader.option({ uploadChunk: (file, chunksData) => this._fileUploaderUploadChunk(fileUploader, file, chunksData), abortUpload: (file, chunksData) => this._fileUploaderAbortUpload(fileUploader, file, chunksData) }); fileUploader._shouldRaiseDragLeaveBase = fileUploader._shouldRaiseDragLeave; fileUploader._shouldRaiseDragLeave = e => this._shouldRaiseDragLeave(e, fileUploader); const uploaderInfo = { fileUploader: fileUploader }; this._uploaderInfos.push(uploaderInfo) } tryUpload() { const info = this._findAndUpdateAvailableUploaderInfo(); if (info) { info.fileUploader._selectFileDialogClickHandler() } } cancelUpload(sessionId) { this._cancelUpload(sessionId) } cancelFileUpload(sessionId, fileIndex) { this._cancelUpload(sessionId, fileIndex) } _cancelUpload(sessionId, fileIndex) { const { fileUploader: fileUploader } = this._findUploaderInfoBySessionId(sessionId); fileUploader.abortUpload(fileIndex) } _fileUploaderUploadChunk(fileUploader, file, chunksInfo) { const { session: session, fileIndex: fileIndex } = this._findSessionByFile(fileUploader, file); const controller = session.controller; chunksInfo.fileIndex = fileIndex; return controller.uploadFileChunk(file, chunksInfo) } _fileUploaderAbortUpload(fileUploader, file, chunksInfo) { const { session: session, fileIndex: fileIndex } = this._findSessionByFile(fileUploader, file); const controller = session.controller; chunksInfo.fileIndex = fileIndex; return controller.abortFileUpload(file, chunksInfo) } _onFileUploaderValueChanged(_ref) { let { component: component, value: value } = _ref; if (0 === value.length) { return } const files = value.slice(); const uploaderInfo = this._findUploaderInfo(component); this._uploadFiles(uploaderInfo, files); setTimeout((() => { if (!this._findAndUpdateAvailableUploaderInfo()) { this._createInternalFileUploader() } })) } _onFileUploaderProgress(_ref2) { let { component: component, file: file, bytesLoaded: bytesLoaded, bytesTotal: bytesTotal } = _ref2; const { session: session, fileIndex: fileIndex } = this._findSessionByFile(component, file); const fileValue = 0 !== bytesTotal ? bytesLoaded / bytesTotal : 1; const commonValue = component.option("progress") / 100; const args = { sessionId: session.id, fileIndex: fileIndex, commonValue: commonValue, fileValue: fileValue }; this._raiseUploadProgress(args) } _onFileUploaderAllFilesUploaded(_ref3) { let { component: component } = _ref3; const { session: session } = this._findSessionByFile(component, component._files[0].value); this._raiseUploadFinished({ sessionId: session.id, commonValue: component.option("progress") / 100 }) } _onFileUploaderUploaded(_ref4) { let { component: component, file: file } = _ref4; const deferred = this._getDeferredForFile(component, file); deferred.resolve() } _onFileUploaderUploadAborted(_ref5) { let { component: component, file: file } = _ref5; const deferred = this._getDeferredForFile(component, file); deferred.resolve({ canceled: true }) } _onFileUploaderUploadError(_ref6) { let { component: component, file: file, error: error } = _ref6; const deferred = this._getDeferredForFile(component, file); deferred.reject(error) } _createDropZonePlaceholder() { this._$dropZonePlaceholder = (0, _renderer.default)("<div>").addClass("dx-filemanager-fileuploader-dropzone-placeholder").appendTo(this.option("dropZonePlaceholderContainer")) } _adjustDropZonePlaceholder() { const $dropZoneTarget = this.option("dropZone"); if (!(0, _window.hasWindow)() || 0 === $dropZoneTarget.length) { return } const placeholderBorderTopWidth = parseFloat(this._$dropZonePlaceholder.css("borderTopWidth")); const placeholderBorderLeftWidth = parseFloat(this._$dropZonePlaceholder.css("borderLeftWidth")); const $placeholderContainer = this.option("dropZonePlaceholderContainer"); const containerBorderBottomWidth = parseFloat($placeholderContainer.css("borderBottomWidth")); const containerBorderLeftWidth = parseFloat($placeholderContainer.css("borderLeftWidth")); const containerHeight = (0, _size.getInnerHeight)($placeholderContainer); const containerOffset = $placeholderContainer.offset(); const dropZoneOffset = $dropZoneTarget.offset(); this._$dropZonePlaceholder.css({ top: dropZoneOffset.top - containerOffset.top - containerHeight - containerBorderBottomWidth, left: dropZoneOffset.left - containerOffset.left - containerBorderLeftWidth }); (0, _size.setHeight)(this._$dropZonePlaceholder, $dropZoneTarget.get(0).offsetHeight - 2 * placeholderBorderTopWidth); (0, _size.setWidth)(this._$dropZonePlaceholder, $dropZoneTarget.get(0).offsetWidth - 2 * placeholderBorderLeftWidth) } _setDropZonePlaceholderVisible(visible) { if (visible) { this._adjustDropZonePlaceholder(); this._$dropZonePlaceholder.css("display", "") } else { this._$dropZonePlaceholder.css("display", "none") } } _shouldRaiseDragLeave(e, uploaderInstance) { return uploaderInstance.isMouseOverElement(e, this.option("splitterElement")) || uploaderInstance._shouldRaiseDragLeaveBase(e, true) } _uploadFiles(uploaderInfo, files) { this._setDropZonePlaceholderVisible(false); const sessionId = (new _guid.default).toString(); const controller = this._getController(); const deferreds = files.map((() => new _deferred.Deferred)); const session = { id: sessionId, controller: controller, files: files, deferreds: deferreds }; uploaderInfo.session = session; const sessionInfo = { sessionId: sessionId, deferreds: deferreds, files: files }; this._raiseUploadSessionStarted(sessionInfo); return (0, _uiFile_manager.whenSome)(deferreds).always((() => setTimeout((() => { uploaderInfo.fileUploader.clear(); uploaderInfo.session = null })))) } _getDeferredForFile(fileUploader, file) { const { session: session, fileIndex: fileIndex } = this._findSessionByFile(fileUploader, file); return session.deferreds[fileIndex] } _findSessionByFile(fileUploader, file) { const uploaderInfo = this._findUploaderInfo(fileUploader); const session = uploaderInfo.session; const fileIndex = session.files.indexOf(file); return { session: session, fileIndex: fileIndex } } _findUploaderInfoBySessionId(sessionId) { for (let i = 0; i < this._uploaderInfos.length; i++) { const uploaderInfo = this._uploaderInfos[i]; const session = uploaderInfo.session; if (session && session.id === sessionId) { return uploaderInfo } } return null } _findAndUpdateAvailableUploaderInfo() { var _info; let info = null; for (let i = 0; i < this._uploaderInfos.length; i++) { const currentInfo = this._uploaderInfos[i]; currentInfo.fileUploader.option("dropZone", ""); if (!info && !currentInfo.session) { info = currentInfo } } null === (_info = info) || void 0 === _info || _info.fileUploader.option("dropZone", this.option("dropZone")); return info } _findUploaderInfo(fileUploader) { for (let i = 0; i < this._uploaderInfos.length; i++) { const info = this._uploaderInfos[i]; if (info.fileUploader === fileUploader) { return info } } return null } _getController() { const controllerGetter = this.option("getController"); return controllerGetter() } _raiseUploadSessionStarted(sessionInfo) { this._actions.onUploadSessionStarted({ sessionInfo: sessionInfo }) } _raiseUploadProgress(args) { this._actions.onUploadProgress(args) } _raiseUploadFinished(args) { this._actions.onUploadFinished(args) } _initActions() { this._actions = { onUploadSessionStarted: this._createActionByOption("onUploadSessionStarted"), onUploadProgress: this._createActionByOption("onUploadProgress"), onUploadFinished: this._createActionByOption("onUploadFinished") } } _getDefaultOptions() { return (0, _extend.extend)(super._getDefaultOptions(), { getController: null, onUploadSessionStarted: null, onUploadProgress: null, onUploadFinished: null, splitterElement: null }) } _optionChanged(args) { const name = args.name; switch (name) { case "getController": this.repaint(); break; case "onUploadSessionStarted": case "onUploadProgress": case "onUploadFinished": this._actions[name] = this._createActionByOption(name); break; case "dropZone": this._findAndUpdateAvailableUploaderInfo(); this._adjustDropZonePlaceholder(); break; case "dropZonePlaceholderContainer": this._$dropZonePlaceholder.detach(); this._$dropZonePlaceholder.appendTo(args.value); break; case "splitterElement": break; default: super._optionChanged(args) } } } exports.default = FileManagerFileUploader; module.exports = exports.default; module.exports.default = exports.default }, 82724: /*!************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/ui/file_manager/ui.file_manager.files_tree_view.js ***! \************************************************************************************************/ function(module, exports, __webpack_require__) { exports.default = void 0; var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../core/renderer */ 64553)); var _extend = __webpack_require__( /*! ../../core/utils/extend */ 52576); var _icon = __webpack_require__( /*! ../../core/utils/icon */ 69629); var _common = __webpack_require__( /*! ../../core/utils/common */ 17781); var _ui = _interopRequireDefault(__webpack_require__( /*! ../widget/ui.widget */ 11118)); var _tree_view = _interopRequireDefault(__webpack_require__( /*! ../tree_view */ 4313)); var _uiFile_manager = _interopRequireDefault(__webpack_require__( /*! ./ui.file_manager.file_actions_button */ 9787)); var _deferred = __webpack_require__( /*! ../../core/utils/deferred */ 87739); var _window = __webpack_require__( /*! ../../core/utils/window */ 3104); var _type = __webpack_require__( /*! ../../core/utils/type */ 11528); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } class FileManagerFilesTreeView extends _ui.default { _initMarkup() { this._initActions(); this._getCurrentDirectory = this.option("getCurrentDirectory"); this._createFileActionsButton = _common.noop; this._storeExpandedState = this.option("storeExpandedState") || false; const $treeView = (0, _renderer.default)("<div>").addClass("dx-filemanager-dirs-tree").appendTo(this.$element()); const treeViewOptions = { dataStructure: "plain", rootValue: "", createChildren: this._onFilesTreeViewCreateSubDirectories.bind(this), itemTemplate: this._createFilesTreeViewItemTemplate.bind(this), keyExpr: "getInternalKey", parentIdExpr: "parentDirectory.getInternalKey", displayExpr: itemInfo => itemInfo.getDisplayName(), hasItemsExpr: "fileItem.hasSubDirectories", onItemClick: e => this._actions.onDirectoryClick(e), onItemExpanded: e => this._onFilesTreeViewItemExpanded(e), onItemCollapsed: e => this._onFilesTreeViewItemCollapsed(e), onItemRendered: e => this._onFilesTreeViewItemRendered(e), onContentReady: () => this._actions.onFilesTreeViewContentReady() }; if (this._contextMenu) { this._contextMenu.option("onContextMenuHidden", (() => this._onContextMenuHidden())); treeViewOptions.onItemContextMenu = e => this._onFilesTreeViewItemContextMenu(e); this._createFileActionsButton = (element, options) => this._createComponent(element, _uiFile_manager.default, options) } this._filesTreeView = this._createComponent($treeView, _tree_view.default, treeViewOptions) } _initActions() { this._actions = { onDirectoryClick: this._createActionByOption("onDirectoryClick"), onFilesTreeViewContentReady: this._createActionByOption("onFilesTreeViewContentReady") } } _render() { super._render(); const that = this; setTimeout((() => { that._updateFocusedElement() })) } _onFilesTreeViewCreateSubDirectories(rootItem) { const getDirectories = this.option("getDirectories"); const directoryInfo = rootItem && rootItem.itemData || null; return getDirectories && getDirectories(directoryInfo, true) } _onFilesTreeViewItemRendered(_ref) { let { itemData: itemData } = _ref; const currentDirectory = this._getCurrentDirectory(); if (currentDirectory && currentDirectory.fileItem.equals(itemData.fileItem)) { this._updateFocusedElement(); this._restoreScrollTopPosition() } } _onFilesTreeViewItemExpanded(_ref2) { let { itemData: itemData } = _ref2; if (this._storeExpandedState) { itemData.expanded = true } } _onFilesTreeViewItemCollapsed(_ref3) { let { itemData: itemData } = _ref3; if (this._storeExpandedState) { itemData.expanded = false } } _createFilesTreeViewItemTemplate(itemData, itemIndex, itemElement) { const $itemElement = (0, _renderer.default)(itemElement); const $itemWrapper = $itemElement.closest(this._filesTreeViewItemSelector); $itemWrapper.data("item", itemData); const $image = (0, _icon.getImageContainer)(itemData.icon); const $text = (0, _renderer.default)("<span>").text(itemData.getDisplayName()).addClass("dx-filemanager-dirs-tree-item-text"); const $button = (0, _renderer.default)("<div>"); $itemElement.append($image, $text, $button); this._createFileActionsButton($button, { onClick: e => this._onFileItemActionButtonClick(e) }) } _onFilesTreeViewItemContextMenu(_ref4) { let { itemElement: itemElement, event: event } = _ref4; event.preventDefault(); event.stopPropagation(); const itemData = (0, _renderer.default)(itemElement).data("item"); this._contextMenu.showAt([itemData], itemElement, event, { itemData: itemData, itemElement: itemElement }) } _onFileItemActionButtonClick(_ref5) { let { component: component, element: element, event: event } = _ref5; event.stopPropagation(); const itemElement = component.$element().closest(this._filesTreeViewItemSelector); const itemData = itemElement.data("item"); const target = { itemData: itemData, itemElement: itemElement, isActionButton: true }; this._contextMenu.showAt([itemData], element, event, target); this._activeFileActionsButton = component; this._activeFileActionsButton.setActive(true) } _onContextMenuHidden() { if (this._activeFileActionsButton) { this._activeFileActionsButton.setActive(false) } } toggleNodeDisabledState(key, state) { const node = this._getNodeByKey(key); if (!node) { return } const items = this._filesTreeView.option("items"); const itemIndex = items.map((item => item.getInternalKey())).indexOf(node.getInternalKey()); if (-1 !== itemIndex) { this._filesTreeView.option(`items[${itemIndex}].disabled`, state) } } _saveScrollTopPosition() { if (!(0, _window.hasWindow)()) { return } this._scrollTopPosition = this._filesTreeView.getScrollable().scrollTop() } _restoreScrollTopPosition() { if (!(0, _window.hasWindow)() || !(0, _type.isNumeric)(this._scrollTopPosition)) { return } setTimeout((() => this._filesTreeView.getScrollable().scrollTo(this._scrollTopPosition))) } _updateFocusedElement() { const directoryInfo = this._getCurrentDirectory(); const $element = this._getItemElementByKey(null === directoryInfo || void 0 === directoryInfo ? void 0 : directoryInfo.getInternalKey()); if (this._$focusedElement) { this._$focusedElement.toggleClass("dx-filemanager-focused-item", false) } this._$focusedElement = $element || (0, _renderer.default)(); this._$focusedElement.toggleClass("dx-filemanager-focused-item", true) } _getNodeByKey(key) { var _this$_filesTreeView; return null === (_this$_filesTreeView = this._filesTreeView) || void 0 === _this$_filesTreeView ? void 0 : _this$_filesTreeView._getNode(key) } _getPublicNode(key) { var _this$_filesTreeView2; const nodesQueue = [...null === (_this$_filesTreeView2 = this._filesTreeView) || void 0 === _this$_filesTreeView2 ? void 0 : _this$_filesTreeView2.getNodes()]; while (nodesQueue.length) { const node = nodesQueue.shift(); if (node.itemData.getInternalKey() === key) { return node } else if (node.children.length) { nodesQueue.push(...node.children) } } return } _getItemElementByKey(key) { const node = this._getNodeByKey(key); if (node) { const $node = this._filesTreeView._getNodeElement(node); if ($node) { return $node.children(this._filesTreeViewItemSelector) } } return null } _getDefaultOptions() { return (0, _extend.extend)(super._getDefaultOptions(), { storeExpandedState: false, initialFolder: null, contextMenu: null, getItems: null, getCurrentDirectory: null, onDirectoryClick: null }) } _optionChanged(args) { const name = args.name; switch (name) { case "storeExpandedState": this._storeExpandedState = this.option(name); break; case "getItems": case "rootFolderDisplayName": case "initialFolder": case "contextMenu": this.repaint(); break; case "getCurrentDirectory": this.getCurrentDirectory = this.option(name); break; case "onDirectoryClick": case "onFilesTreeViewContentReady": this._actions[name] = this._createActionByOption(name); break; default: super._optionChanged(args) } } get _filesTreeViewItemSelector() { return ".dx-treeview-item" } get _contextMenu() { return this.option("contextMenu") } toggleDirectoryExpandedState(directoryInfo, state) { const deferred = new _deferred.Deferred; const treeViewNode = this._getPublicNode(null === directoryInfo || void 0 === directoryInfo ? void 0 : directoryInfo.getInternalKey()); if (!treeViewNode) { return deferred.reject().promise() } if (treeViewNode.expanded === state || treeViewNode.itemsLoaded && !treeViewNode.itemData.fileItem.hasSubDirectories) { return deferred.resolve().promise() } const action = state ? "expandItem" : "collapseItem"; return this._filesTreeView[action](directoryInfo.getInternalKey()) } refresh() { this._$focusedElement = null; this._saveScrollTopPosition(); this._filesTreeView.option("dataSource", []) } updateCurrentDirectory() { if (this._disposed) { return } this._updateFocusedElement(); this._storeExpandedState && this._updateExpandedStateToCurrentDirectory() } _updateExpandedStateToCurrentDirectory() { return this.toggleDirectoryExpandedStateRecursive(this._getCurrentDirectory().parentDirectory, true) } toggleDirectoryExpandedStateRecursive(directoryInfo, state) { const dirLine = []; for (let dirInfo = directoryInfo; dirInfo; dirInfo = dirInfo.parentDirectory) { dirLine.unshift(dirInfo) } return this.toggleDirectoryLineExpandedState(dirLine, state) } toggleDirectoryLineExpandedState(dirLine, state) { if (!dirLine.length) { return (new _deferred.Deferred).resolve().promise() } return this.toggleDirectoryExpandedState(dirLine.shift(), state).then((() => this.toggleDirectoryLineExpandedState(dirLine, state))) } } exports.default = FileManagerFilesTreeView; module.exports = exports.default; module.exports.default = exports.default }, 17772: /*!**************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/ui/file_manager/ui.file_manager.item_list.details.js ***! \**************************************************************************************************/ function(module, exports, __webpack_require__) { exports.default = void 0; var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../core/renderer */ 64553)); var _extend = __webpack_require__( /*! ../../core/utils/extend */ 52576); var _uiFile_manager = __webpack_require__( /*! ./ui.file_manager.common */ 57011); var _type = __webpack_require__( /*! ../../core/utils/type */ 11528); var _message = _interopRequireDefault(__webpack_require__( /*! ../../common/core/localization/message */ 4671)); var _data_grid = _interopRequireDefault(__webpack_require__( /*! ../../ui/data_grid */ 4920)); var _uiFile_manager2 = _interopRequireDefault(__webpack_require__( /*! ./ui.file_manager.item_list */ 84368)); var _uiFile_manager3 = _interopRequireDefault(__webpack_require__( /*! ./ui.file_manager.file_actions_button */ 9787)); var _deferred = __webpack_require__( /*! ../../core/utils/deferred */ 87739); var _file_items_controller = __webpack_require__( /*! ./file_items_controller */ 27018); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } const DEFAULT_COLUMN_CONFIGS = { thumbnail: { caption: "", calculateSortValue: "isDirectory", width: 36, alignment: "center", cssClass: "dx-filemanager-details-item-is-directory" }, name: { caption: _message.default.format("dxFileManager-listDetailsColumnCaptionName") }, dateModified: { caption: _message.default.format("dxFileManager-listDetailsColumnCaptionDateModified"), width: 110, hidingPriority: 1 }, size: { caption: _message.default.format("dxFileManager-listDetailsColumnCaptionFileSize"), width: 90, alignment: "right", hidingPriority: 0 }, isParentFolder: { caption: "isParentFolder", visible: false, sortIndex: 0, sortOrder: "asc" } }; class FileManagerDetailsItemList extends _uiFile_manager2.default { _initMarkup() { this._itemCount = 0; this._focusedItem = null; this._hasParentDirectoryItem = false; this._parentDirectoryItemKey = null; this._selectAllCheckBox = null; this._selectAllCheckBoxUpdating = false; this.$element().addClass("dx-filemanager-details"); this._createFilesView(); this._contextMenu.option("onContextMenuHidden", (() => this._onContextMenuHidden())); super._initMarkup() } _createFilesView() { const $filesView = (0, _renderer.default)("<div>").appendTo(this.$element()); const selectionMode = this._isMultipleSelectionMode() ? "multiple" : "none"; this._filesView = this._createComponent($filesView, _data_grid.default, { dataSource: this._createDataSource(), hoverStateEnabled: true, selection: { mode: selectionMode, showCheckBoxesMode: this._isDesktop() ? "onClick" : "none" }, selectedRowKeys: this.option("selectedItemKeys"), focusedRowKey: this.option("focusedItemKey"), focusedRowEnabled: true, allowColumnResizing: true, scrolling: { mode: "virtual" }, sorting: { mode: "single", showSortIndexes: false }, loadPanel: { shading: true }, showColumnLines: false, showRowLines: false, columnHidingEnabled: false, columns: this._createColumns(), onEditorPreparing: this._onEditorPreparing.bind(this), onRowPrepared: this._onRowPrepared.bind(this), onContextMenuPreparing: this._onContextMenuPreparing.bind(this), onSelectionChanged: this._onFilesViewSelectionChanged.bind(this), onFocusedRowChanged: this._onFilesViewFocusedRowChanged.bind(this), onOptionChanged: this._onFilesViewOptionChanged.bind(this), onContentReady: this._onContentReady.bind(this) }) } _createColumns() { let columns = this.option("detailColumns"); columns = columns.slice(0); columns = columns.map((column => { let extendedItem = column; if ((0, _type.isString)(column)) { extendedItem = { dataField: column } } return this._getPreparedColumn(extendedItem) })); const customizeDetailColumns = this.option("customizeDetailColumns"); if ((0, _type.isFunction)(customizeDetailColumns)) { columns = customizeDetailColumns(columns) } columns.push(this._getPreparedColumn({ dataField: "isParentFolder" })); columns.forEach((column => this._updateColumnDataField(column))); return columns } _getPreparedColumn(columnOptions) { const result = {}; let resultCssClass = ""; if (this._isDefaultColumn(columnOptions.dataField)) { const defaultConfig = (0, _extend.extend)(true, {}, DEFAULT_COLUMN_CONFIGS[columnOptions.dataField]); resultCssClass = defaultConfig.cssClass || ""; switch (columnOptions.dataField) { case "thumbnail": defaultConfig.cellTemplate = this._createThumbnailColumnCell.bind(this); defaultConfig.calculateSortValue = `fileItem.${defaultConfig.calculateSortValue}`; break; case "name": defaultConfig.cellTemplate = this._createNameColumnCell.bind(this); defaultConfig.caption = _message.default.format("dxFileManager-listDetailsColumnCaptionName"); break; case "size": defaultConfig.calculateCellValue = this._calculateSizeColumnCellValue.bind(this); defaultConfig.caption = _message.default.format("dxFileManager-listDetailsColumnCaptionFileSize"); defaultConfig.calculateSortValue = rowData => rowData.fileItem.isDirectory ? -1 : rowData.fileItem.size; break; case "dateModified": defaultConfig.caption = _message.default.format("dxFileManager-listDetailsColumnCaptionDateModified") }(0, _extend.extend)(true, result, defaultConfig) }(0, _uiFile_manager.extendAttributes)(result, columnOptions, ["alignment", "caption", "dataField", "dataType", "hidingPriority", "sortIndex", "sortOrder", "visible", "visibleIndex", "width"]); if (columnOptions.cssClass) { resultCssClass = `${resultCssClass} ${columnOptions.cssClass}` } if (resultCssClass) { result.cssClass = resultCssClass } return result } _updateColumnDataField(column) { const dataItemSuffix = this._isDefaultColumn(column.dataField) ? "" : "dataItem."; column.dataField = "fileItem." + dataItemSuffix + column.dataField; return column } _isDefaultColumn(columnDataField) { return !!DEFAULT_COLUMN_CONFIGS[columnDataField] } _onFileItemActionButtonClick(_ref) { let { component: component, element: element, event: event } = _ref; event.stopPropagation(); const $row = component.$element().closest(this._getItemSelector()); const fileItemInfo = $row.data("item"); this._selectItem(fileItemInfo); const target = { itemData: fileItemInfo, itemElement: $row, isActionButton: true }; const items = this._getFileItemsForContextMenu(fileItemInfo); this._showContextMenu(items, element, event, target); this._activeFileActionsButton = component; this._activeFileActionsButton.setActive(true) } _onContextMenuHidden() { if (this._activeFileActionsButton) { this._activeFileActionsButton.setActive(false) } } _getItemThumbnailCssClass() { return "dx-filemanager-details-item-thumbnail" } _getItemSelector() { return ".dx-data-row" } _onItemDblClick(e) { const $row = (0, _renderer.default)(e.currentTarget); const fileItemInfo = $row.data("item"); this._raiseSelectedItemOpened(fileItemInfo) } _isAllItemsSelected() { const selectableItemsCount = this._hasParentDirectoryItem ? this._itemCount - 1 : this._itemCount; const selectedRowKeys = this._filesView.option("selectedRowKeys"); if (!selectedRowKeys.length) { return false } return selectedRowKeys.length >= selectableItemsCount ? true : void 0 } _onEditorPreparing(_ref2) { let { component: component, command: command, row: row, parentType: parentType, editorOptions: editorOptions } = _ref2; if (!this._filesView) { this._filesView = component } if ("select" === command && row) { if (this._isParentDirectoryItem(row.data)) { editorOptions.disabled = true } } else if ("headerRow" === parentType) { editorOptions.onInitialized = _ref3 => { let { component: component } = _ref3; this._selectAllCheckBox = component }; editorOptions.value = this._isAllItemsSelected(); editorOptions.onValueChanged = args => this._onSelectAllCheckBoxValueChanged(args) } } _onSelectAllCheckBoxValueChanged(_ref4) { let { event: event, previousValue: previousValue, value: value } = _ref4; if (!event) { if (previousValue && !this._selectAllCheckBoxUpdating && this._selectAllCheckBox) { this._selectAllCheckBox.option("value", previousValue) } return } if (this._isAllItemsSelected() === value) { return } if (value) { this._filesView.selectAll() } else { this._filesView.deselectAll() } event.preventDefault() } _onRowPrepared(_ref5) { let { rowType: rowType, rowElement: rowElement, data: data } = _ref5; if ("data" === rowType) { const $row = (0, _renderer.default)(rowElement); $row.data("item", data); if (this._isParentDirectoryItem(data)) { $row.addClass("dx-filemanager-parent-directory-item") } } } _onContextMenuPreparing(e) { if (!this._isDesktop()) { return } let fileItems = null; let item = {}; if (e.row && "data" === e.row.rowType) { item = e.row.data; this._selectItem(item); fileItems = this._getFileItemsForContextMenu(item) } const eventArgs = (0, _extend.extend)({}, { targetElement: "content" === e.target && (0, _type.isDefined)(e.row) ? this._filesView.getRowElement(e.rowIndex) : void 0, itemData: item, options: this._contextMenu.option(), event: e.event, isActionButton: false, cancel: false }); this._raiseContextMenuShowing(eventArgs); e.items = eventArgs.cancel ? [] : this._contextMenu.createContextMenuItems(fileItems, null, item) } _onFilesViewSelectionChanged(_ref6) { let { component: component, selectedRowsData: selectedRowsData, selectedRowKeys: selectedRowKeys, currentSelectedRowKeys: currentSelectedRowKeys, currentDeselectedRowKeys: currentDeselectedRowKeys } = _ref6; this._filesView = this._filesView || component; if (this._selectAllCheckBox) { this._selectAllCheckBoxUpdating = true; this._selectAllCheckBox.option("value", this._isAllItemsSelected()); this._selectAllCheckBoxUpdating = false } const selectedItems = selectedRowsData.map((itemInfo => itemInfo.fileItem)); this._tryRaiseSelectionChanged({ selectedItemInfos: selectedRowsData, selectedItems: selectedItems, selectedItemKeys: selectedRowKeys, currentSelectedItemKeys: currentSelectedRowKeys, currentDeselectedItemKeys: currentDeselectedRowKeys }) } _onFilesViewFocusedRowChanged(e) { var _e$row2; if (!this._isMultipleSelectionMode()) { var _e$row; this._selectItemSingleSelection(null === (_e$row = e.row) || void 0 === _e$row ? void 0 : _e$row.data) } const fileSystemItem = (null === (_e$row2 = e.row) || void 0 === _e$row2 ? void 0 : _e$row2.data.fileItem) || null; this._onFocusedItemChanged({ item: fileSystemItem, itemKey: null === fileSystemItem || void 0 === fileSystemItem ? void 0 : fileSystemItem.key, itemElement: e.rowElement }) } _onFilesViewOptionChanged(_ref7) { let { fullName: fullName } = _ref7; if (fullName.indexOf("sortOrder") > -1) { this._filesView.columnOption("isParentFolder", { sortOrder: "asc", sortIndex: 0 }) } } _resetFocus() { this._setFocusedItemKey(void 0) } _createThumbnailColumnCell(container, cellInfo) { this._getItemThumbnailContainer(cellInfo.data).appendTo(container) } _createNameColumnCell(container, cellInfo) { const $button = (0, _renderer.default)("<div>"); const $name = (0, _renderer.default)("<span>").text(cellInfo.data.fileItem.name).addClass("dx-filemanager-details-item-name"); const $wrapper = (0, _renderer.default)("<div>").append($name, $button).addClass("dx-filemanager-details-item-name-wrapper"); (0, _renderer.default)(container).append($wrapper); this._createComponent($button, _uiFile_manager3.default, { onClick: e => this._onFileItemActionButtonClick(e) }) } _calculateSizeColumnCellValue(rowData) { return rowData.fileItem.isDirectory ? "" : (0, _uiFile_manager.getDisplayFileSize)(rowData.fileItem.size) } _selectItem(fileItemInfo) { const selectItemFunc = this._isMultipleSelectionMode() ? this._selectItemMultipleSelection : this._selectItemSingleSelection; selectItemFunc.call(this, fileItemInfo) } _deselectItem(item) { this._filesView.deselectRows([item.fileItem.key]) } _selectItemSingleSelection(fileItemInfo) { if (!this._focusedItem || !fileItemInfo || this._focusedItem.fileItem.key !== fileItemInfo.fileItem.key) { const oldFocusedItem = this._focusedItem; this._focusedItem = fileItemInfo; const deselectedKeys = []; if (oldFocusedItem) { deselectedKeys.push(oldFocusedItem.fileItem.key) } const selectedItems = []; const selectedKeys = []; if (fileItemInfo && !this._isParentDirectoryItem(fileItemInfo)) { selectedItems.push(fileItemInfo.fileItem); selectedKeys.push(fileItemInfo.fileItem.key) } this._raiseSelectionChanged({ selectedItems: selectedItems, selectedItemKeys: selectedKeys, currentSelectedItemKeys: [...selectedKeys], currentDeselectedItemKeys: deselectedKeys }) } } _selectItemMultipleSelection(_ref8) { let { fileItem: fileItem } = _ref8; if (!this._filesView.isRowSelected(fileItem.key)) { const selectionController = this._filesView.getController("selection"); const preserve = selectionController.isSelectionWithCheckboxes(); this._filesView.selectRows([fileItem.key], preserve) } } _setSelectedItemKeys(itemKeys) { this._filesView.option("selectedRowKeys", itemKeys) } _setFocusedItemKey(itemKey) { var _this$_filesView; null === (_this$_filesView = this._filesView) || void 0 === _this$_filesView || _this$_filesView.option("focusedRowKey", itemKey) } clearSelection() { if (this._isMultipleSelectionMode()) { this._filesView.clearSelection() } else { this._filesView.option("focusedRowIndex", -1) } } refresh(options, operation) { const actualOptions = { dataSource: this._createDataSource() }; if (options && Object.prototype.hasOwnProperty.call(options, "focusedItemKey")) { if ((0, _type.isDefined)(options.focusedItemKey)) { actualOptions.focusedRowKey = options.focusedItemKey } else { actualOptions.focusedRowIndex = -1 } } const hasNoScrollTarget = !(0, _type.isDefined)(actualOptions.focusedRowKey) && -1 === actualOptions.focusedRowIndex; if (hasNoScrollTarget && operation === _file_items_controller.OPERATIONS.NAVIGATION) { actualOptions.paging = { pageIndex: 0 }; this._needResetScrollPosition = true } this._filesView.option(actualOptions); this._refreshDeferred = new _deferred.Deferred; return this._refreshDeferred.promise() } _getScrollable() { return this._filesView.getScrollable() } getSelectedItems() { if (this._isMultipleSelectionMode()) { return this._filesView.getSelectedRowsData() } return this._focusedItem && !this._isParentDirectoryItem(this._focusedItem) ? [this._focusedItem] : [] } } exports.default = FileManagerDetailsItemList; module.exports = exports.default; module.exports.default = exports.default }, 84368: /*!******************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/ui/file_manager/ui.file_manager.item_list.js ***! \******************************************************************************************/ function(module, exports, __webpack_require__) { exports.default = void 0; var _extend = __webpack_require__( /*! ../../core/utils/extend */ 52576); var _deferred = __webpack_require__( /*! ../../core/utils/deferred */ 87739); var _window = __webpack_require__( /*! ../../core/utils/window */ 3104); var _double_click = __webpack_require__( /*! ../../common/core/events/double_click */ 5636); var _index = __webpack_require__( /*! ../../common/core/events/utils/index */ 98834); var _events_engine = _interopRequireDefault(__webpack_require__( /*! ../../common/core/events/core/events_engine */ 92774)); var _icon = __webpack_require__( /*! ../../core/utils/icon */ 69629); var _devices = _interopRequireDefault(__webpack_require__( /*! ../../core/devices */ 65951)); var _custom_store = __webpack_require__( /*! ../../common/data/custom_store */ 63326); var _ui = _interopRequireDefault(__webpack_require__( /*! ../widget/ui.widget */ 11118)); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } class FileManagerItemListBase extends _ui.default { _init() { this._initActions(); this._lockFocusedItemProcessing = false; this._focusedItemKey = this.option("focusedItemKey"); super._init() } _initMarkup() { this._needResetScrollPosition = false; this.$element().addClass("dx-filemanager-files-view"); const dblClickEventName = (0, _index.addNamespace)(_double_click.name, "dxFileManager_open"); _events_engine.default.on(this.$element(), dblClickEventName, this._getItemSelector(), this._onItemDblClick.bind(this)); super._initMarkup() } _initActions() { this._actions = { onError: this._createActionByOption("onError"), onSelectionChanged: this._createActionByOption("onSelectionChanged"), onFocusedItemChanged: this._createActionByOption("onFocusedItemChanged"), onSelectedItemOpened: this._createActionByOption("onSelectedItemOpened"), onContextMenuShowing: this._createActionByOption("onContextMenuShowing"), onItemListDataLoaded: this._createActionByOption("onItemListDataLoaded") } } _getDefaultOptions() { return (0, _extend.extend)(super._getDefaultOptions(), { selectionMode: "single", selectedItemKeys: [], focusedItemKey: void 0, contextMenu: null, getItems: null, getItemThumbnail: null, onError: null, onSelectionChanged: null, onFocusedItemChanged: null, onSelectedItemOpened: null, onContextMenuShowing: null }) } _optionChanged(args) { const name = args.name; switch (name) { case "selectionMode": case "contextMenu": case "getItems": case "getItemThumbnail": this.repaint(); break; case "selectedItemKeys": this._setSelectedItemKeys(args.value); break; case "focusedItemKey": if (!this._lockFocusedItemProcessing) { this._setFocusedItemKey(args.value) } break; case "onError": case "onSelectedItemOpened": case "onSelectionChanged": case "onFocusedItemChanged": case "onContextMenuShowing": case "onItemListDataLoaded": this._actions[name] = this._createActionByOption(name); break; default: super._optionChanged(args) } } _getItems() { return this._getItemsInternal().done((itemInfos => { this._itemCount = itemInfos.length; if (0 === this._itemCount) { this._resetFocus() } const parentDirectoryItem = this._findParentDirectoryItem(itemInfos); this._hasParentDirectoryItem = !!parentDirectoryItem; this._parentDirectoryItemKey = parentDirectoryItem ? parentDirectoryItem.fileItem.key : null })).always((() => { this._onDataLoaded() })) } _getItemsInternal() { const itemsGetter = this.option("getItems"); const itemsResult = itemsGetter ? itemsGetter() : []; return (0, _deferred.when)(itemsResult) } _raiseOnError(error) { this._actions.onError({ error: error }) } _raiseSelectionChanged(args) { this._actions.onSelectionChanged(args) } _raiseFocusedItemChanged(args) { this._actions.onFocusedItemChanged(args) } _raiseSelectedItemOpened(fileItemInfo) { this._actions.onSelectedItemOpened({ fileItemInfo: fileItemInfo }) } _raiseContextMenuShowing(e) { this._actions.onContextMenuShowing(e) } _raiseItemListDataLoaded() { this._actions.onItemListDataLoaded() } _onDataLoaded() { var _this$_refreshDeferre; this._raiseItemListDataLoaded(); null === (_this$_refreshDeferre = this._refreshDeferred) || void 0 === _this$_refreshDeferre || _this$_refreshDeferre.resolve() } _onContentReady() { if (this._needResetScrollPosition) { this._resetScrollTopPosition(); this._needResetScrollPosition = false } } _tryRaiseSelectionChanged(_ref) { let { selectedItemInfos: selectedItemInfos, selectedItems: selectedItems, selectedItemKeys: selectedItemKeys, currentSelectedItemKeys: currentSelectedItemKeys, currentDeselectedItemKeys: currentDeselectedItemKeys } = _ref; const parentDirectoryItem = this._findParentDirectoryItem(this.getSelectedItems()); if (parentDirectoryItem) { this._deselectItem(parentDirectoryItem) } let raiseEvent = !this._hasParentDirectoryItem; raiseEvent = raiseEvent || this._hasValidKeys(currentSelectedItemKeys) || this._hasValidKeys(currentDeselectedItemKeys); if (raiseEvent) { selectedItemInfos = this._filterOutItemByPredicate(selectedItemInfos, (item => item.fileItem.key === this._parentDirectoryItemKey)); selectedItems = this._filterOutParentDirectory(selectedItems); selectedItemKeys = this._filterOutParentDirectoryKey(selectedItemKeys, true); currentSelectedItemKeys = this._filterOutParentDirectoryKey(currentSelectedItemKeys, true); currentDeselectedItemKeys = this._filterOutParentDirectoryKey(currentDeselectedItemKeys, true); this._raiseSelectionChanged({ selectedItemInfos: selectedItemInfos, selectedItems: selectedItems, selectedItemKeys: selectedItemKeys, currentSelectedItemKeys: currentSelectedItemKeys, currentDeselectedItemKeys: currentDeselectedItemKeys }) } } _onFocusedItemChanged(args) { if (this._focusedItemKey === args.itemKey) { return } this._focusedItemKey = args.itemKey; this._lockFocusedItemProcessing = true; this.option("focusedItemKey", args.itemKey); this._lockFocusedItemProcessing = false; this._raiseFocusedItemChanged(args) } _resetFocus() {} _resetScrollTopPosition() { if (!(0, _window.hasWindow)()) { return } setTimeout((() => { var _this$_getScrollable; return null === (_this$_getScrollable = this._getScrollable()) || void 0 === _this$_getScrollable ? void 0 : _this$_getScrollable.scrollTo(0) })) } _getScrollable() {} _getItemThumbnail(fileInfo) { const itemThumbnailGetter = this.option("getItemThumbnail"); return itemThumbnailGetter ? itemThumbnailGetter(fileInfo) : { thumbnail: "" } } _getItemThumbnailContainer(fileInfo) { const { thumbnail: thumbnail, cssClass: cssClass } = this._getItemThumbnail(fileInfo); const $itemThumbnail = (0, _icon.getImageContainer)(thumbnail).addClass(this._getItemThumbnailCssClass()); if (cssClass) { $itemThumbnail.addClass(cssClass) } return $itemThumbnail } _getItemThumbnailCssClass() { return "" } _getItemSelector() {} _onItemDblClick(e) {} _isDesktop() { return "desktop" === _devices.default.real().deviceType } _showContextMenu(items, element, event, target) { this._contextMenu.showAt(items, element, event, target) } get _contextMenu() { return this.option("contextMenu") } _findParentDirectoryItem(itemInfos) { for (let i = 0; i < itemInfos.length; i++) { const itemInfo = itemInfos[i]; if (this._isParentDirectoryItem(itemInfo)) { return itemInfo } } return null } _getFileItemsForContextMenu(fileItem) { const result = this.getSelectedItems(); if (this._isParentDirectoryItem(fileItem)) { result.push(fileItem) } return result } _isParentDirectoryItem(itemInfo) { return itemInfo.fileItem.isParentFolder } _hasValidKeys(keys) { return keys.length > 1 || 1 === keys.length && keys[0] !== this._parentDirectoryItemKey } _filterOutParentDirectory(array, createNewArray) { return this._filterOutItemByPredicate(array, (item => item.key === this._parentDirectoryItemKey), createNewArray) } _filterOutParentDirectoryKey(array, createNewArray) { return this._filterOutItemByPredicate(array, (key => key === this._parentDirectoryItemKey), createNewArray) } _filterOutItemByPredicate(array, predicate, createNewArray) { let result = array; let index = -1; for (let i = 0; i < array.length; i++) { if (predicate(array[i])) { index = i; break } } if (-1 !== index) { if (createNewArray) { result = [...array] } result.splice(index, 1) } return result } _isMultipleSelectionMode() { return "multiple" === this.option("selectionMode") } _deselectItem(item) {} _setSelectedItemKeys(itemKeys) {} _setFocusedItemKey(itemKey) {} _createDataSource() { return { store: new _custom_store.CustomStore({ key: "fileItem.key", load: this._getItems.bind(this) }) } } getSelectedItems() {} clearSelection() {} selectItem() {} refresh(options, operation) {} } exports.default = FileManagerItemListBase; module.exports = exports.default; module.exports.default = exports.default }, 65485: /*!*****************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/ui/file_manager/ui.file_manager.item_list.thumbnails.js ***! \*****************************************************************************************************/ function(module, exports, __webpack_require__) { exports.default = void 0; var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../core/renderer */ 64553)); var _extend = __webpack_require__( /*! ../../core/utils/extend */ 52576); var _type = __webpack_require__( /*! ../../core/utils/type */ 11528); var _deferred = __webpack_require__( /*! ../../core/utils/deferred */ 87739); var _events_engine = _interopRequireDefault(__webpack_require__( /*! ../../common/core/events/core/events_engine */ 92774)); var _index = __webpack_require__( /*! ../../common/core/events/utils/index */ 98834); var _contextmenu = __webpack_require__( /*! ../../common/core/events/contextmenu */ 80248); var _uiFile_manager = __webpack_require__( /*! ./ui.file_manager.common */ 57011); var _message = _interopRequireDefault(__webpack_require__( /*! ../../common/core/localization/message */ 4671)); var _uiFile_managerItems_listThumbnails = _interopRequireDefault(__webpack_require__( /*! ./ui.file_manager.items_list.thumbnails.list_box */ 42530)); var _uiFile_manager2 = _interopRequireDefault(__webpack_require__( /*! ./ui.file_manager.item_list */ 84368)); var _file_items_controller = __webpack_require__( /*! ./file_items_controller */ 27018); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } class FileManagerThumbnailsItemList extends _uiFile_manager2.default { _initMarkup() { super._initMarkup(); this.$element().addClass("dx-filemanager-thumbnails"); const contextMenuEvent = (0, _index.addNamespace)(_contextmenu.name, "dxFileManager_thumbnails"); _events_engine.default.on(this.$element(), contextMenuEvent, this._onContextMenu.bind(this)); this._createItemList() } _createItemList() { const selectionMode = this._isMultipleSelectionMode() ? "multiple" : "single"; const $itemListContainer = (0, _renderer.default)("<div>").appendTo(this.$element()); this._itemList = this._createComponent($itemListContainer, _uiFile_managerItems_listThumbnails.default, { dataSource: this._createDataSource(), selectionMode: selectionMode, selectedItemKeys: this.option("selectedItemKeys"), focusedItemKey: this.option("focusedItemKey"), activeStateEnabled: true, hoverStateEnabled: true, loopItemFocus: false, focusStateEnabled: true, onItemEnterKeyPressed: this._tryOpen.bind(this), itemThumbnailTemplate: this._getItemThumbnailContainer.bind(this), getTooltipText: this._getTooltipText.bind(this), onSelectionChanged: this._onItemListSelectionChanged.bind(this), onFocusedItemChanged: this._onItemListFocusedItemChanged.bind(this), onContentReady: this._onContentReady.bind(this) }) } _onContextMenu(e) { e.preventDefault(); e.stopPropagation(); if (!this._isDesktop()) { return } let items = null; const targetItemElement = (0, _renderer.default)(e.target).closest(this._getItemSelector()); let targetItem = null; if (targetItemElement.length > 0) { targetItem = this._itemList.getItemByItemElement(targetItemElement); this._itemList.selectItem(targetItem); items = this._getFileItemsForContextMenu(targetItem) } const target = { itemData: targetItem, itemElement: targetItemElement.length ? targetItemElement : void 0 }; this._showContextMenu(items, e.target, e, target) } _getItemThumbnailCssClass() { return "dx-filemanager-thumbnails-item-thumbnail" } _getItemSelector() { return ".dx-filemanager-thumbnails-item" } _getTooltipText(fileItemInfo) { const item = fileItemInfo.fileItem; if (item.tooltipText) { return item.tooltipText } let text = `${item.name}\r\n`; if (!item.isDirectory) { text += `${_message.default.format("dxFileManager-listThumbnailsTooltipTextSize")}: ${(0,_uiFile_manager.getDisplayFileSize)(item.size)}\r\n` } text += `${_message.default.format("dxFileManager-listThumbnailsTooltipTextDateModified")}: ${item.dateModified}`; return text } _onItemDblClick(e) { const $item = (0, _renderer.default)(e.currentTarget); const item = this._itemList.getItemByItemElement($item); this._tryOpen(item) } _tryOpen(item) { if (item) { this._raiseSelectedItemOpened(item) } } _getItemsInternal() { return super._getItemsInternal().then((items => { const deferred = new _deferred.Deferred; setTimeout((() => deferred.resolve(items))); return deferred.promise() })) } _disableDragging() { return false } _getDefaultOptions() { return (0, _extend.extend)(super._getDefaultOptions(), { focusStateEnabled: true }) } _onItemListSelectionChanged(_ref) { let { addedItemKeys: addedItemKeys, removedItemKeys: removedItemKeys } = _ref; const selectedItemInfos = this.getSelectedItems(); const selectedItems = selectedItemInfos.map((itemInfo => itemInfo.fileItem)); const selectedItemKeys = selectedItems.map((item => item.key)); this._tryRaiseSelectionChanged({ selectedItemInfos: selectedItemInfos, selectedItems: selectedItems, selectedItemKeys: selectedItemKeys, currentSelectedItemKeys: addedItemKeys, currentDeselectedItemKeys: removedItemKeys }) } _onItemListFocusedItemChanged(_ref2) { let { item: item, itemElement: itemElement } = _ref2; if (!this._isMultipleSelectionMode()) { this._selectItemSingleSelection(item) } const fileSystemItem = (null === item || void 0 === item ? void 0 : item.fileItem) || null; this._onFocusedItemChanged({ item: fileSystemItem, itemKey: null === fileSystemItem || void 0 === fileSystemItem ? void 0 : fileSystemItem.key, itemElement: itemElement || void 0 }) } _getScrollable() { return this._itemList.getScrollable() } _setSelectedItemKeys(itemKeys) { this._itemList.option("selectedItemKeys", itemKeys) } _setFocusedItemKey(itemKey) { this._itemList.option("focusedItemKey", itemKey) } refresh(options, operation) { const actualOptions = { dataSource: this._createDataSource() }; if (options && Object.prototype.hasOwnProperty.call(options, "focusedItemKey")) { actualOptions.focusedItemKey = options.focusedItemKey } if (options && Object.prototype.hasOwnProperty.call(options, "selectedItemKeys")) { actualOptions.selectedItemKeys = options.selectedItemKeys } if (!(0, _type.isDefined)(actualOptions.focusedItemKey) && operation === _file_items_controller.OPERATIONS.NAVIGATION) { this._needResetScrollPosition = true } this._itemList.option(actualOptions); this._refreshDeferred = new _deferred.Deferred; return this._refreshDeferred.promise() } _deselectItem(item) { const itemElement = this._itemList.getItemElementByItem(item); this._itemList.unselectItem(itemElement) } _selectItemSingleSelection(item) { if (item) { this._itemList.selectItem(item) } else { this._itemList.clearSelection() } } clearSelection() { this._itemList.clearSelection() } getSelectedItems() { return this._itemList.getSelectedItems() } } exports.default = FileManagerThumbnailsItemList; module.exports = exports.default; module.exports.default = exports.default }, 42530: /*!***************************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/ui/file_manager/ui.file_manager.items_list.thumbnails.list_box.js ***! \***************************************************************************************************************/ function(module, exports, __webpack_require__) { exports.default = void 0; var _size = __webpack_require__( /*! ../../core/utils/size */ 57653); var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../core/renderer */ 64553)); var _extend = __webpack_require__( /*! ../../core/utils/extend */ 52576); var _type = __webpack_require__( /*! ../../core/utils/type */ 11528); var _deferred = __webpack_require__( /*! ../../core/utils/deferred */ 87739); var _hold = _interopRequireDefault(__webpack_require__( /*! ../../common/core/events/hold */ 68095)); var _index = __webpack_require__( /*! ../../common/core/events/utils/index */ 98834); var _events_engine = _interopRequireDefault(__webpack_require__( /*! ../../common/core/events/core/events_engine */ 92774)); var _bindable_template = __webpack_require__( /*! ../../core/templates/bindable_template */ 27286); var _scroll_view = _interopRequireDefault(__webpack_require__( /*! ../scroll_view */ 91374)); var _uiCollection_widget = _interopRequireDefault(__webpack_require__( /*! ../collection/ui.collection_widget.edit */ 7607)); var _m_selection = _interopRequireDefault(__webpack_require__( /*! ../../__internal/ui/selection/m_selection */ 53544)); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } const FILE_MANAGER_THUMBNAILS_LIST_BOX_HOLD_EVENT_NAME = (0, _index.addNamespace)(_hold.default.name, "dxFileManagerThumbnailsListBox"); class FileManagerThumbnailListBox extends _uiCollection_widget.default { _initMarkup() { this._initActions(); this._lockFocusedItemProcessing = false; this.$element().addClass("dx-filemanager-thumbnails-view-port"); this._renderScrollView(); this._renderItemsContainer(); this._createScrollViewControl(); super._initMarkup(); this.onFocusedItemChanged = this._onFocusedItemChanged.bind(this); this._layoutUtils = new ListBoxLayoutUtils(this._scrollView, this.$element(), this._$itemContainer, this.itemElements().first()); this._syncFocusedItemKey() } _initActions() { this._actions = { onItemEnterKeyPressed: this._createActionByOption("onItemEnterKeyPressed"), onFocusedItemChanged: this._createActionByOption("onFocusedItemChanged") } } _initTemplates() { super._initTemplates(); this._itemThumbnailTemplate = this.option("itemThumbnailTemplate"); this._getTooltipText = this.option("getTooltipText"); this._templateManager.addDefaultTemplates({ item: new _bindable_template.BindableTemplate(function($container, data, itemModel) { const $itemElement = this._getDefaultItemTemplate(itemModel, $container); $container.append($itemElement) }.bind(this), ["fileItem"], this.option("integrationOptions.watchMethod")) }) } _createScrollViewControl() { if (!this._scrollView) { this._scrollView = this._createComponent(this._$scrollView, _scroll_view.default, { scrollByContent: true, scrollByThumb: true, useKeyboard: false, showScrollbar: "onHover" }) } } _renderScrollView() { if (!this._$scrollView) { this._$scrollView = (0, _renderer.default)("<div>").appendTo(this.$element()) } } getScrollable() { return this._scrollView } _renderItemsContainer() { if (!this._$itemContainer) { this._$itemContainer = (0, _renderer.default)("<div>").addClass("dx-filemanager-thumbnails-container").appendTo(this._$scrollView) } } _render() { super._render(); this._detachEventHandlers(); this._attachEventHandlers() } _clean() { this._detachEventHandlers(); super._clean() } _supportedKeys() { return (0, _extend.extend)(super._supportedKeys(), { upArrow(e) { this._beforeKeyProcessing(e); this._processArrowKeys(-1, false, e) }, downArrow(e) { this._beforeKeyProcessing(e); this._processArrowKeys(1, false, e) }, home(e) { this._beforeKeyProcessing(e); this._processHomeEndKeys(0, true, e) }, end(e) { this._beforeKeyProcessing(e); this._processHomeEndKeys(this._getItemsLength() - 1, true, e) }, pageUp(e) { this._beforeKeyProcessing(e); this._processPageChange(true, e) }, pageDown(e) { this._beforeKeyProcessing(e); this._processPageChange(false, e) }, enter(e) { this._beforeKeyProcessing(e); this._actions.onItemEnterKeyPressed(this._getFocusedItem()) }, A(e) { this._beforeKeyProcessing(e); if ((0, _index.isCommandKeyPressed)(e)) { this.selectAll() } } }) } _beforeKeyProcessing(e) { e.preventDefault(); this._layoutUtils.reset() } _processArrowKeys(offset, horizontal, eventArgs) { const item = this._getFocusedItem(); if (item) { if (!horizontal) { const layout = this._layoutUtils.getLayoutModel(); if (!layout) { return } offset *= layout.itemPerRowCount } const newItemIndex = this._getIndexByItem(item) + offset; this._focusItemByIndex(newItemIndex, true, eventArgs) } } _processHomeEndKeys(index, scrollToItem, eventArgs) { this._focusItemByIndex(index, scrollToItem, eventArgs) } _processPageChange(pageUp, eventArgs) { const item = this._getFocusedItem(); if (!item) { return } const layout = this._layoutUtils.getLayoutModel(); if (!layout) { return } const itemLayout = this._layoutUtils.createItemLayoutModel(this._getIndexByItem(item)); const rowOffset = pageUp ? layout.rowPerPageRate : -layout.rowPerPageRate; const newRowRate = itemLayout.itemRowIndex - rowOffset; const roundFunc = pageUp ? Math.ceil : Math.floor; const newRowIndex = roundFunc(newRowRate); let newItemIndex = newRowIndex * layout.itemPerRowCount + itemLayout.itemColumnIndex; if (newItemIndex < 0) { newItemIndex = 0 } else if (newItemIndex >= this._getItemsLength()) { newItemIndex = this._getItemsLength() - 1 } this._focusItemByIndex(newItemIndex, true, eventArgs) } _processLongTap(e) { const $targetItem = this._closestItemElement((0, _renderer.default)(e.target)); const itemIndex = this._getIndexByItemElement($targetItem); this._selection.changeItemSelection(itemIndex, { control: true }) } _attachEventHandlers() { if ("multiple" === this.option("selectionMode")) { _events_engine.default.on(this._itemContainer(), FILE_MANAGER_THUMBNAILS_LIST_BOX_HOLD_EVENT_NAME, `.${this._itemContentClass()}`, (e => { this._processLongTap(e); e.stopPropagation() })) } _events_engine.default.on(this._itemContainer(), "mousedown selectstart", (e => { if (e.shiftKey) { e.preventDefault() } })) } _detachEventHandlers() { _events_engine.default.off(this._itemContainer(), FILE_MANAGER_THUMBNAILS_LIST_BOX_HOLD_EVENT_NAME); _events_engine.default.off(this._itemContainer(), "mousedown selectstart") } _itemContainer() { return this._$itemContainer } _itemClass() { return "dx-filemanager-thumbnails-item" } _itemDataKey() { return "dxFileManagerItemData" } _getDefaultItemTemplate(fileItemInfo, $itemElement) { $itemElement.attr("title", this._getTooltipText(fileItemInfo)); const $itemThumbnail = this._itemThumbnailTemplate(fileItemInfo); const $itemSpacer = (0, _renderer.default)("<div>").addClass("dx-filemanager-thumbnails-item-spacer"); const $itemName = (0, _renderer.default)("<div>").addClass("dx-filemanager-thumbnails-item-name").text(fileItemInfo.fileItem.name); $itemElement.append($itemThumbnail, $itemSpacer, $itemName) } _itemSelectHandler(e) { let options = {}; if ("multiple" === this.option("selectionMode")) { if (!this._isPreserveSelectionMode) { this._isPreserveSelectionMode = (0, _index.isCommandKeyPressed)(e) || e.shiftKey } options = { control: this._isPreserveSelectionMode, shift: e.shiftKey } } const index = this._getIndexByItemElement(e.currentTarget); this._selection.changeItemSelection(index, options) } _initSelectionModule() { super._initSelectionModule(); const options = (0, _extend.extend)(this._selection.options, { selectedKeys: this.option("selectedItemKeys"), onSelectionChanged: args => { this.option("selectedItems", this._getItemsByKeys(args.selectedItemKeys, args.selectedItems)); this._updateSelectedItems(args) } }); this._selection = new _m_selection.default(options) } _updateSelectedItems(args) { const addedItemKeys = args.addedItemKeys; const removedItemKeys = args.removedItemKeys; if (this._rendered && (addedItemKeys.length || removedItemKeys.length)) { if (!this._rendering) { const addedSelection = []; let normalizedIndex; const removedSelection = []; this._editStrategy.beginCache(); for (let i = 0; i < removedItemKeys.length; i++) { normalizedIndex = this._getIndexByKey(removedItemKeys[i]); removedSelection.push(normalizedIndex); this._removeSelection(normalizedIndex) } for (let i = 0; i < addedItemKeys.length; i++) { normalizedIndex = this._getIndexByKey(addedItemKeys[i]); addedSelection.push(normalizedIndex); this._addSelection(normalizedIndex) } this._editStrategy.endCache(); this._updateSelection(addedSelection, removedSelection) } this._fireSelectionChangeEvent(args) } } _fireSelectionChangeEvent(args) { this._createActionByOption("onSelectionChanged", { excludeValidators: ["disabled", "readOnly"] })(args) } _updateSelection(addedSelection, removedSelection) { const selectedItemsCount = this.getSelectedItems().length; if (0 === selectedItemsCount) { this._isPreserveSelectionMode = false } } _normalizeSelectedItems() { const newKeys = this._getKeysByItems(this.option("selectedItems")); const oldKeys = this._selection.getSelectedItemKeys(); if (!this._compareKeys(oldKeys, newKeys)) { this._selection.setSelection(newKeys) } return (new _deferred.Deferred).resolve().promise() } _focusOutHandler() {} _getItems() { return this.option("items") || [] } _getItemsLength() { return this._getItems().length } _getIndexByItemElement(itemElement) { return this._editStrategy.getNormalizedIndex(itemElement) } _getItemByIndex(index) { return this._getItems()[index] } _getFocusedItem() { return this.getItemByItemElement(this.option("focusedElement")) } _focusItem(item, scrollToItem) { this.option("focusedElement", this.getItemElementByItem(item)); if (scrollToItem) { this._layoutUtils.scrollToItem(this._getIndexByItem(item)) } } _focusItemByIndex(index, scrollToItem, eventArgs) { if (index >= 0 && index < this._getItemsLength()) { const item = this._getItemByIndex(index); this._focusItem(item, scrollToItem, eventArgs) } } _syncFocusedItemKey() { if (!this._syncFocusedItemKeyDeferred) { this._syncFocusedItemKeyDeferred = new _deferred.Deferred } const deferred = this._syncFocusedItemKeyDeferred; if (this._dataSource && this._dataSource.isLoading()) { return deferred.promise() } const focusedItemKey = this.option("focusedItemKey"); if ((0, _type.isDefined)(focusedItemKey)) { const items = this.option("items"); const focusedItem = items.find((item => this.keyOf(item) === focusedItemKey)); if (focusedItem) { this._focusItem(focusedItem, true); deferred.resolve() } else { this.option("focusedItemKey", void 0); deferred.reject() } } else { deferred.resolve() } this._syncFocusedItemKeyDeferred = null; return deferred.promise() } _onFocusedItemChanged() { const focusedItem = this._getFocusedItem(); const newFocusedItemKey = this.keyOf(focusedItem); const oldFocusedItemKey = this.option("focusedItemKey"); if (newFocusedItemKey !== oldFocusedItemKey) { this._lockFocusedItemProcessing = true; this.option("focusedItemKey", newFocusedItemKey); this._lockFocusedItemProcessing = false; this._raiseFocusedItemChanged(focusedItem) } } _raiseFocusedItemChanged(focusedItem) { const args = { item: focusedItem, itemElement: this.option("focusedElement") }; this._actions.onFocusedItemChanged(args) } _changeItemSelection(item, select) { if (this.isItemSelected(item) === select) { return } const itemElement = this.getItemElementByItem(item); const index = this._getIndexByItemElement(itemElement); this._selection.changeItemSelection(index, { control: this._isPreserveSelectionMode }) } _chooseSelectOption() { return "selectedItemKeys" } getSelectedItems() { return this._selection.getSelectedItems() } getItemElementByItem(item) { return this._editStrategy.getItemElement(item) } getItemByItemElement(itemElement) { return this._getItemByIndex(this._getIndexByItemElement(itemElement)) } selectAll() { if ("multiple" !== this.option("selectionMode")) { return } this._selection.selectAll(); this._isPreserveSelectionMode = true } selectItem(item) { this._changeItemSelection(item, true) } deselectItem(item) { this._changeItemSelection(item, false) } clearSelection() { this._selection.deselectAll() } _optionChanged(args) { switch (args.name) { case "items": if (this._layoutUtils) { this._layoutUtils.updateItems(this.itemElements().first()) } super._optionChanged(args); break; case "focusedItemKey": if (this._lockFocusedItemProcessing) { break } if ((0, _type.isDefined)(args.value)) { this._syncFocusedItemKey().done((() => { const focusedItem = this._getFocusedItem(); this._raiseFocusedItemChanged(focusedItem) })) } else { this.option("focusedElement", null); this._raiseFocusedItemChanged(null) } break; case "onItemEnterKeyPressed": case "onFocusedItemChanged": this._actions[args.name] = this._createActionByOption(args.name); break; default: super._optionChanged(args) } } } class ListBoxLayoutUtils { constructor(scrollView, $viewPort, $itemContainer, $item) { this._layoutModel = null; this._scrollView = scrollView; this._$viewPort = $viewPort; this._$itemContainer = $itemContainer; this._$item = $item } updateItems($item) { this._$item = $item } reset() { this._layoutModel = null } getLayoutModel() { if (!this._layoutModel) { this._layoutModel = this._createLayoutModel() } return this._layoutModel } _createLayoutModel() { if (!this._$item) { return null } const itemWidth = (0, _size.getOuterWidth)(this._$item, true); if (0 === itemWidth) { return null } const itemHeight = (0, _size.getOuterHeight)(this._$item, true); const viewPortWidth = (0, _size.getInnerWidth)(this._$itemContainer); const viewPortHeight = (0, _size.getInnerHeight)(this._$viewPort); const viewPortScrollTop = this._scrollView.scrollTop(); const viewPortScrollBottom = viewPortScrollTop + viewPortHeight; const itemPerRowCount = Math.floor(viewPortWidth / itemWidth); const rowPerPageRate = viewPortHeight / itemHeight; return { itemWidth: itemWidth, itemHeight: itemHeight, viewPortWidth: viewPortWidth, viewPortHeight: viewPortHeight, viewPortScrollTop: viewPortScrollTop, viewPortScrollBottom: viewPortScrollBottom, itemPerRowCount: itemPerRowCount, rowPerPageRate: rowPerPageRate } } createItemLayoutModel(index) { const layout = this.getLayoutModel(); if (!layout) { return null } const itemRowIndex = Math.floor(index / layout.itemPerRowCount); const itemColumnIndex = index % layout.itemPerRowCount; const itemTop = itemRowIndex * layout.itemHeight; const itemBottom = itemTop + layout.itemHeight; return { itemRowIndex: itemRowIndex, itemColumnIndex: itemColumnIndex, itemTop: itemTop, itemBottom: itemBottom } } scrollToItem(index) { const layout = this.getLayoutModel(); if (!layout) { return } const itemRowIndex = Math.floor(index / layout.itemPerRowCount); const itemTop = itemRowIndex * layout.itemHeight; const itemBottom = itemTop + layout.itemHeight; let newScrollTop = layout.viewPortScrollTop; if (itemTop < layout.viewPortScrollTop) { newScrollTop = itemTop } else if (itemBottom > layout.viewPortScrollBottom) { newScrollTop = itemBottom - layout.viewPortHeight } this._scrollView.scrollTo(newScrollTop) } } exports.default = FileManagerThumbnailListBox; module.exports = exports.default; module.exports.default = exports.default }, 85186: /*!********************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/ui/file_manager/ui.file_manager.js ***! \********************************************************************************/ function(module, exports, __webpack_require__) { exports.default = void 0; var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../core/renderer */ 64553)); var _extend = __webpack_require__( /*! ../../core/utils/extend */ 52576); var _type = __webpack_require__( /*! ../../core/utils/type */ 11528); var _deferred = __webpack_require__( /*! ../../core/utils/deferred */ 87739); var _common = __webpack_require__( /*! ../../core/utils/common */ 17781); var _message = _interopRequireDefault(__webpack_require__( /*! ../../common/core/localization/message */ 4671)); var _component_registrator = _interopRequireDefault(__webpack_require__( /*! ../../core/component_registrator */ 92848)); var _ui = _interopRequireDefault(__webpack_require__( /*! ../widget/ui.widget */ 11118)); var _notify = _interopRequireDefault(__webpack_require__( /*! ../notify */ 93380)); var _uiFile_manager = __webpack_require__( /*! ./ui.file_manager.common */ 57011); var _file_items_controller = __webpack_require__( /*! ./file_items_controller */ 27018); var _uiFile_manager2 = __webpack_require__( /*! ./ui.file_manager.command_manager */ 59393); var _uiFile_manager3 = _interopRequireDefault(__webpack_require__( /*! ./ui.file_manager.context_menu */ 40729)); var _uiFile_manager4 = _interopRequireDefault(__webpack_require__( /*! ./ui.file_manager.files_tree_view */ 82724)); var _uiFile_managerItem_list = _interopRequireDefault(__webpack_require__( /*! ./ui.file_manager.item_list.details */ 17772)); var _uiFile_managerItem_list2 = _interopRequireDefault(__webpack_require__( /*! ./ui.file_manager.item_list.thumbnails */ 65485)); var _uiFile_manager5 = _interopRequireDefault(__webpack_require__( /*! ./ui.file_manager.toolbar */ 59679)); var _uiFile_manager6 = _interopRequireDefault(__webpack_require__( /*! ./ui.file_manager.notification */ 44313)); var _uiFile_manager7 = _interopRequireDefault(__webpack_require__( /*! ./ui.file_manager.editing */ 9516)); var _uiFile_manager8 = _interopRequireDefault(__webpack_require__( /*! ./ui.file_manager.breadcrumbs */ 81606)); var _uiFile_manager9 = _interopRequireDefault(__webpack_require__( /*! ./ui.file_manager.adaptivity */ 74327)); var _utils = __webpack_require__( /*! ../../core/options/utils */ 53904); var _comparator = __webpack_require__( /*! ../../core/utils/comparator */ 60648); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } const VIEW_AREAS_folders = "navPane", VIEW_AREAS_items = "itemView"; class FileManager extends _ui.default { _initTemplates() {} _init() { super._init(); this._initActions(); this._providerUpdateDeferred = null; this._lockCurrentPathProcessing = false; this._wasRendered = false; this._controller = new _file_items_controller.FileItemsController({ currentPath: this.option("currentPath"), currentPathKeys: this.option("currentPathKeys"), rootText: this.option("rootFolderName"), fileProvider: this.option("fileSystemProvider"), allowedFileExtensions: this.option("allowedFileExtensions"), uploadMaxFileSize: this.option("upload").maxFileSize, uploadChunkSize: this.option("upload").chunkSize, onInitialized: this._onControllerInitialized.bind(this), onDataLoading: this._onDataLoading.bind(this), onSelectedDirectoryChanged: this._onSelectedDirectoryChanged.bind(this), onPathPotentiallyChanged: this._checkPathActuality.bind(this), editingEvents: this._actions.editing }) } _initMarkup() { super._initMarkup(); this._firstItemViewLoad = true; this._lockSelectionProcessing = false; this._lockFocusedItemProcessing = false; this._itemKeyToFocus = void 0; this._loadedWidgets = []; this._commandManager = new _uiFile_manager2.FileManagerCommandManager(this.option("permissions")); this.$element().addClass("dx-filemanager"); if (this._wasRendered) { this._prepareToLoad() } else { this._wasRendered = true } this._createNotificationControl(); this._initCommandManager() } _createNotificationControl() { const $notificationControl = (0, _renderer.default)("<div>").addClass("dx-filemanager-notification-container").appendTo(this.$element()); this._notificationControl = this._createComponent($notificationControl, _uiFile_manager6.default, { progressPanelContainer: this.$element(), contentTemplate: (container, notificationControl) => this._createWrapper(container, notificationControl), onActionProgress: e => this._onActionProgress(e), positionTarget: ".dx-filemanager-container", showProgressPanel: this.option("notifications.showPanel"), showNotificationPopup: this.option("notifications.showPopup") }) } _createWrapper(container, notificationControl) { this._$wrapper = (0, _renderer.default)("<div>").addClass("dx-filemanager-wrapper").appendTo(container); this._createEditing(notificationControl); const $toolbar = (0, _renderer.default)("<div>").appendTo(this._$wrapper); this._toolbar = this._createComponent($toolbar, _uiFile_manager5.default, { commandManager: this._commandManager, generalItems: this.option("toolbar.items"), fileItems: this.option("toolbar.fileSelectionItems"), itemViewMode: this.option("itemView").mode, onItemClick: args => this._actions.onToolbarItemClick(args) }); this._createAdaptivityControl() } _createAdaptivityControl() { const $container = (0, _renderer.default)("<div>").addClass("dx-filemanager-container").appendTo(this._$wrapper); this._adaptivityControl = this._createComponent($container, _uiFile_manager9.default, { drawerTemplate: container => this._createFilesTreeView(container), contentTemplate: container => this._createItemsPanel(container), onAdaptiveStateChanged: e => this._onAdaptiveStateChanged(e) }); this._editing.setUploaderSplitterElement(this._adaptivityControl.getSplitterElement()) } _createEditing(notificationControl) { const $editingContainer = (0, _renderer.default)("<div>").addClass("dx-filemanager-editing-container").appendTo(this.$element()); this._editing = this._createComponent($editingContainer, _uiFile_manager7.default, { controller: this._controller, model: { getMultipleSelectedItems: this._getSelectedItemInfos.bind(this) }, getItemThumbnail: this._getItemThumbnailInfo.bind(this), notificationControl: notificationControl, uploadDropZonePlaceholderContainer: this.$element(), rtlEnabled: this.option("rtlEnabled"), onSuccess: _ref => { let { updatedOnlyFiles: updatedOnlyFiles } = _ref; return this._redrawComponent(updatedOnlyFiles) }, onError: e => this._onEditingError(e) }) } _createItemsPanel($container) { this._$itemsPanel = (0, _renderer.default)("<div>").addClass("dx-filemanager-items-panel").appendTo($container); this._createBreadcrumbs(this._$itemsPanel); this._createItemView(this._$itemsPanel); this._updateUploadDropZone() } _updateUploadDropZone() { const dropZone = this._commandManager.isCommandAvailable("upload") ? this._$itemsPanel : (0, _renderer.default)(); this._editing.setUploaderDropZone(dropZone) } _createFilesTreeView(container) { this._filesTreeViewContextMenu = this._createContextMenu(false, VIEW_AREAS_folders); const $filesTreeView = (0, _renderer.default)("<div>").addClass("dx-filemanager-dirs-panel").appendTo(container); this._filesTreeView = this._createComponent($filesTreeView, _uiFile_manager4.default, { storeExpandedState: true, contextMenu: this._filesTreeViewContextMenu, getDirectories: this.getDirectories.bind(this), getCurrentDirectory: this._getCurrentDirectory.bind(this), onDirectoryClick: _ref2 => { let { itemData: itemData } = _ref2; return this._setCurrentDirectory(itemData) }, onItemListDataLoaded: () => this._tryEndLoading(VIEW_AREAS_folders) }); this._filesTreeView.updateCurrentDirectory() } _createItemView($container, viewMode) { this._itemViewContextMenu = this._createContextMenu(true, VIEW_AREAS_items); const itemViewOptions = this.option("itemView"); const options = { selectionMode: this.option("selectionMode"), selectedItemKeys: this.option("selectedItemKeys"), focusedItemKey: this.option("focusedItemKey"), contextMenu: this._itemViewContextMenu, getItems: this._getItemViewItems.bind(this), onError: _ref3 => { let { error: error } = _ref3; return this._showError(error) }, onSelectionChanged: this._onItemViewSelectionChanged.bind(this), onFocusedItemChanged: this._onItemViewFocusedItemChanged.bind(this), onSelectedItemOpened: this._onSelectedItemOpened.bind(this), onContextMenuShowing: e => this._onContextMenuShowing(VIEW_AREAS_items, e), onItemListItemsLoaded: () => this._tryEndLoading(VIEW_AREAS_items), getItemThumbnail: this._getItemThumbnailInfo.bind(this), customizeDetailColumns: this.option("customizeDetailColumns"), detailColumns: this.option("itemView.details.columns") }; const $itemView = (0, _renderer.default)("<div>").appendTo($container); viewMode = viewMode || itemViewOptions.mode; const widgetClass = "thumbnails" === viewMode ? _uiFile_managerItem_list2.default : _uiFile_managerItem_list.default; this._itemView = this._createComponent($itemView, widgetClass, options) } _createBreadcrumbs($container) { const $breadcrumbs = (0, _renderer.default)("<div>").appendTo($container); this._breadcrumbs = this._createComponent($breadcrumbs, _uiFile_manager8.default, { rootFolderDisplayName: this.option("rootFolderName"), onCurrentDirectoryChanging: _ref4 => { let { currentDirectory: currentDirectory } = _ref4; return this._setCurrentDirectory(currentDirectory, true) } }); this._breadcrumbs.setCurrentDirectory(this._getCurrentDirectory()) } _createContextMenu(isolateCreationItemCommands, viewArea) { const $contextMenu = (0, _renderer.default)("<div>").appendTo(this._$wrapper); return this._createComponent($contextMenu, _uiFile_manager3.default, { commandManager: this._commandManager, items: this.option("contextMenu.items"), onItemClick: args => this._actions.onContextMenuItemClick(args), onContextMenuShowing: e => this._onContextMenuShowing(viewArea, e), isolateCreationItemCommands: isolateCreationItemCommands, viewArea: viewArea }) } _initCommandManager() { const actions = (0, _extend.extend)(this._editing.getCommandActions(), { refresh: () => this._refreshAndShowProgress(), thumbnails: () => this.option("itemView.mode", "thumbnails"), details: () => this.option("itemView.mode", "details"), clearSelection: () => this._clearSelection(), showNavPane: () => this._adaptivityControl.toggleDrawer() }); this._commandManager.registerActions(actions) } _onItemViewSelectionChanged(_ref5) { let { selectedItemInfos: selectedItemInfos, selectedItems: selectedItems, selectedItemKeys: selectedItemKeys, currentSelectedItemKeys: currentSelectedItemKeys, currentDeselectedItemKeys: currentDeselectedItemKeys } = _ref5; this._lockSelectionProcessing = true; this.option("selectedItemKeys", selectedItemKeys); this._lockSelectionProcessing = false; this._actions.onSelectionChanged({ selectedItems: selectedItems, selectedItemKeys: selectedItemKeys, currentSelectedItemKeys: currentSelectedItemKeys, currentDeselectedItemKeys: currentDeselectedItemKeys }); this._updateToolbar(selectedItemInfos) } _onItemViewFocusedItemChanged(e) { this._lockFocusedItemProcessing = true; this.option("focusedItemKey", e.itemKey); this._lockFocusedItemProcessing = false; this._actions.onFocusedItemChanged({ item: e.item, itemElement: e.itemElement }) } _onAdaptiveStateChanged(_ref6) { let { enabled: enabled } = _ref6; this._commandManager.setCommandEnabled("showNavPane", enabled); this._updateToolbar() } _onActionProgress(_ref7) { let { message: message, status: status } = _ref7; this._toolbar.updateRefreshItem(message, status); this._updateToolbar() } _onEditingError(e) { const args = (0, _uiFile_manager.extendAttributes)({}, e, ["errorCode", "errorText", "fileSystemItem"]); this._actions.onErrorOccurred(args); e.errorText = args.errorText } _refreshAndShowProgress() { this._prepareToLoad(); return (0, _deferred.when)(this._notificationControl.tryShowProgressPanel(), this._controller.refresh()).then((() => this._filesTreeView.refresh())) } _isAllWidgetsLoaded() { return 2 === this._loadedWidgets.length && -1 !== this._loadedWidgets.indexOf(VIEW_AREAS_folders) && -1 !== this._loadedWidgets.indexOf(VIEW_AREAS_items) } _tryEndLoading(area) { this._loadedWidgets.push(area); if (this._isAllWidgetsLoaded()) { this._controller.endSingleLoad() } } _prepareToLoad() { this._loadedWidgets = []; this._controller.startSingleLoad() } _updateToolbar(selectedItems) { const items = selectedItems || this._getSelectedItemInfos(); this._toolbar.option("contextItems", (0, _common.ensureDefined)(items, [])) } _switchView(viewMode) { this._disposeWidget(this._itemView.option("contextMenu")); this._disposeWidget(this._itemView); this._createItemView(this._$itemsPanel, viewMode); this._toolbar.option({ itemViewMode: viewMode }) } _disposeWidget(widget) { widget.dispose(); widget.$element().remove() } _clearSelection() { this._itemView.clearSelection() } _showError(message) { this._showNotification(message, false) } _showNotification(message, isSuccess) { (0, _notify.default)({ message: message, width: 450 }, isSuccess ? "success" : "error", 5e3) } _redrawComponent(onlyFileItemsView) { this._itemView.refresh().then((() => !onlyFileItemsView && this._filesTreeView.refresh())) } _getItemViewItems() { const showFolders = this.option("itemView").showFolders; let result = this._controller.getCurrentItems(!showFolders); this._updateToolbarWithSelectionOnFirstLoad(result); if (this.option("itemView.showParentFolder")) { result = (0, _deferred.when)(result).then((items => this._getPreparedItemViewItems(items))) } return result } _updateToolbarWithSelectionOnFirstLoad(itemsResult) { if (!this._firstItemViewLoad) { return } this._firstItemViewLoad = false; const selectedItemKeys = this.option("selectedItemKeys"); if (selectedItemKeys.length > 0) { (0, _deferred.when)(itemsResult).done((items => { const selectedItems = (0, _uiFile_manager.findItemsByKeys)(items, selectedItemKeys); if (selectedItems.length > 0) { this._updateToolbar(selectedItems) } })) } } _getPreparedItemViewItems(items) { const selectedDir = this._getCurrentDirectory(); if (selectedDir.fileItem.isRoot()) { return items } const parentDirItem = selectedDir.fileItem.createClone(); parentDirItem.isParentFolder = true; parentDirItem.name = ".."; parentDirItem.relativeName = ".."; parentDirItem.key = `[*DXPDK*]$40F96F03-FBD8-43DF-91BE-F55F4B8BA871$${selectedDir.fileItem.key}`; const itemsCopy = [...items]; itemsCopy.unshift({ fileItem: parentDirItem, icon: "parentfolder" }); return itemsCopy } _onContextMenuShowing(viewArea, e) { var _e$itemData; let eventArgs = (0, _uiFile_manager.extendAttributes)({}, e, ["targetElement", "cancel", "event"]); eventArgs = (0, _extend.extend)(eventArgs, { viewArea: viewArea, fileSystemItem: null === (_e$itemData = e.itemData) || void 0 === _e$itemData ? void 0 : _e$itemData.fileItem, _isActionButton: e.isActionButton }); this._actions.onContextMenuShowing(eventArgs); e.cancel = (0, _common.ensureDefined)(eventArgs.cancel, false) } _getItemThumbnailInfo(fileInfo) { const func = this.option("customizeThumbnail"); const thumbnail = (0, _type.isFunction)(func) ? func(fileInfo.fileItem) : fileInfo.fileItem.thumbnail; if (thumbnail) { return { thumbnail: thumbnail, cssClass: "dx-filemanager-item-custom-thumbnail" } } return { thumbnail: fileInfo.icon } } _getDefaultOptions() { return (0, _extend.extend)(super._getDefaultOptions(), { fileSystemProvider: null, currentPath: "", currentPathKeys: [], rootFolderName: _message.default.format("dxFileManager-rootDirectoryName"), selectionMode: "multiple", selectedItemKeys: [], focusedItemKey: void 0, toolbar: { items: ["showNavPane", "create", "upload", "switchView", { name: "separator", location: "after" }, "refresh"], fileSelectionItems: ["download", "separator", "move", "copy", "rename", "separator", "delete", "clearSelection", { name: "separator", location: "after" }, "refresh"] }, contextMenu: { items: ["create", "upload", "rename", "move", "copy", "delete", "refresh", "download"] }, itemView: { details: { columns: ["thumbnail", "name", "dateModified", "size"] }, mode: "details", showFolders: true, showParentFolder: true }, customizeThumbnail: null, customizeDetailColumns: null, onContextMenuItemClick: null, onContextMenuShowing: null, onCurrentDirectoryChanged: null, onSelectedFileOpened: null, onSelectionChanged: null, onFocusedItemChanged: null, onToolbarItemClick: null, onErrorOccurred: null, onDirectoryCreating: null, onDirectoryCreated: null, onItemRenaming: null, onItemRenamed: null, onItemDeleting: null, onItemDeleted: null, onItemCopying: null, onItemCopied: null, onItemMoving: null, onItemMoved: null, onFileUploading: null, onFileUploaded: null, onItemDownloading: null, allowedFileExtensions: [], upload: { maxFileSize: 0, chunkSize: 2e5 }, permissions: (0, _extend.extend)({}, _uiFile_manager2.defaultPermissions), notifications: { showPanel: true, showPopup: true } }) } option(options, value) { const optionsToCheck = (0, _utils.normalizeOptions)(options, value); const isGetter = arguments.length < 2 && "object" !== (0, _type.type)(options); const isOptionDefined = name => (0, _type.isDefined)(optionsToCheck[name]); const isOptionValueDiffers = name => { if (!isOptionDefined(name)) { return false } const previousValue = this.option(name); const value = optionsToCheck[name]; return !(0, _comparator.equals)(previousValue, value) }; if (!isGetter && isOptionDefined("fileSystemProvider")) { this._providerUpdateDeferred = new _deferred.Deferred; if (isOptionValueDiffers("currentPath") || isOptionValueDiffers("currentPathKeys")) { this._lockCurrentPathProcessing = true } } return super.option(...arguments) } _optionChanged(args) { const name = args.name; switch (name) { case "currentPath": { const updateFunc = () => { this._lockCurrentPathProcessing = false; return this._controller.setCurrentPath(args.value) }; this._lockCurrentPathProcessing = true; this._providerUpdateDeferred ? this._providerUpdateDeferred.then(updateFunc) : updateFunc() } break; case "currentPathKeys": { const updateFunc = () => { this._lockCurrentPathProcessing = false; return this._controller.setCurrentPathByKeys(args.value) }; this._lockCurrentPathProcessing = true; this._providerUpdateDeferred ? this._providerUpdateDeferred.then(updateFunc) : updateFunc() } break; case "selectedItemKeys": if (!this._lockSelectionProcessing && this._itemView) { this._itemView.option("selectedItemKeys", args.value) } break; case "focusedItemKey": if (!this._lockFocusedItemProcessing && this._itemView) { this._itemView.option("focusedItemKey", args.value) } break; case "rootFolderName": this._controller.setRootText(args.value); this._invalidate(); break; case "fileSystemProvider": { if (!this._lockCurrentPathProcessing) { this._providerUpdateDeferred = new _deferred.Deferred } const pathKeys = this._lockCurrentPathProcessing ? void 0 : this.option("currentPathKeys"); this._controller.updateProvider(args.value, pathKeys).then((() => this._providerUpdateDeferred.resolve())).always((() => { this._providerUpdateDeferred = null; this.repaint() })); break } case "allowedFileExtensions": this._controller.setAllowedFileExtensions(args.value); this._invalidate(); break; case "upload": this._controller.setUploadOptions(this.option("upload")); this._invalidate(); break; case "permissions": this._commandManager.updatePermissions(this.option("permissions")); this._filesTreeViewContextMenu.tryUpdateVisibleContextMenu(); this._itemViewContextMenu.tryUpdateVisibleContextMenu(); this._toolbar.updateItemPermissions(); this._updateUploadDropZone(); break; case "selectionMode": case "customizeThumbnail": case "customizeDetailColumns": this._invalidate(); break; case "itemView": if ("itemView.mode" === args.fullName) { this._switchView(args.value) } else { this._invalidate() } break; case "toolbar": { const toolbarOptions = {}; if ("toolbar" === args.fullName) { if (args.value.items) { toolbarOptions.generalItems = args.value.items } if (args.value.fileSelectionItems) { toolbarOptions.fileItems = args.value.fileSelectionItems } } if (0 === args.fullName.indexOf("toolbar.items")) { toolbarOptions.generalItems = this.option("toolbar.items") } if (0 === args.fullName.indexOf("toolbar.fileSelectionItems")) { toolbarOptions.fileItems = this.option("toolbar.fileSelectionItems") } this._toolbar.option(toolbarOptions) } break; case "contextMenu": if ("contextMenu" === args.fullName && args.value.items || 0 === args.fullName.indexOf("contextMenu.items")) { const contextMenuItems = this.option("contextMenu.items"); this._filesTreeViewContextMenu.option("items", contextMenuItems); this._itemViewContextMenu.option("items", contextMenuItems) } break; case "notifications": this._notificationControl.option("showProgressPanel", this.option("notifications.showPanel")); this._notificationControl.option("showNotificationPopup", this.option("notifications.showPopup")); break; case "onContextMenuItemClick": case "onContextMenuShowing": case "onCurrentDirectoryChanged": case "onSelectedFileOpened": case "onSelectionChanged": case "onFocusedItemChanged": case "onToolbarItemClick": case "onErrorOccurred": this._actions[name] = this._createActionByOption(name); break; case "onDirectoryCreating": case "onDirectoryCreated": case "onItemRenaming": case "onItemRenamed": case "onItemDeleting": case "onItemDeleted": case "onItemCopying": case "onItemCopied": case "onItemMoving": case "onItemMoved": case "onFileUploading": case "onFileUploaded": case "onItemDownloading": this._actions.editing[name] = this._createActionByOption(name); break; case "rtlEnabled": this._editing.updateDialogRtl(args.value); super._optionChanged(args); break; default: super._optionChanged(args) } } _initActions() { this._actions = { onContextMenuItemClick: this._createActionByOption("onContextMenuItemClick"), onContextMenuShowing: this._createActionByOption("onContextMenuShowing"), onCurrentDirectoryChanged: this._createActionByOption("onCurrentDirectoryChanged"), onSelectedFileOpened: this._createActionByOption("onSelectedFileOpened"), onSelectionChanged: this._createActionByOption("onSelectionChanged"), onFocusedItemChanged: this._createActionByOption("onFocusedItemChanged"), onToolbarItemClick: this._createActionByOption("onToolbarItemClick"), onErrorOccurred: this._createActionByOption("onErrorOccurred"), editing: { onDirectoryCreating: this._createActionByOption("onDirectoryCreating"), onDirectoryCreated: this._createActionByOption("onDirectoryCreated"), onItemRenaming: this._createActionByOption("onItemRenaming"), onItemRenamed: this._createActionByOption("onItemRenamed"), onItemDeleting: this._createActionByOption("onItemDeleting"), onItemDeleted: this._createActionByOption("onItemDeleted"), onItemCopying: this._createActionByOption("onItemCopying"), onItemCopied: this._createActionByOption("onItemCopied"), onItemMoving: this._createActionByOption("onItemMoving"), onItemMoved: this._createActionByOption("onItemMoved"), onFileUploading: this._createActionByOption("onFileUploading"), onFileUploaded: this._createActionByOption("onFileUploaded"), onItemDownloading: this._createActionByOption("onItemDownloading") } } } executeCommand(commandName) { return this._commandManager.executeCommand(commandName) } _setCurrentDirectory(directoryInfo, checkActuality) { this._controller.setCurrentDirectory(directoryInfo, checkActuality) } _getCurrentDirectory() { return this._controller.getCurrentDirectory() } _onControllerInitialized(_ref8) { let { controller: controller } = _ref8; this._controller = this._controller || controller; this._syncToCurrentDirectory() } _onDataLoading(_ref9) { let { operation: operation } = _ref9; let options = null; if (operation === _file_items_controller.OPERATIONS.NAVIGATION) { options = { focusedItemKey: this._itemKeyToFocus, selectedItemKeys: this.option("selectedItemKeys") }; this._itemKeyToFocus = void 0 } this._itemView.refresh(options, operation) } _onSelectedDirectoryChanged() { const currentDirectory = this._getCurrentDirectory(); this._syncToCurrentDirectory(); this._actions.onCurrentDirectoryChanged({ directory: currentDirectory.fileItem }) } _syncToCurrentDirectory() { const currentDirectory = this._getCurrentDirectory(); if (this._filesTreeView) { this._filesTreeView.updateCurrentDirectory() } if (this._breadcrumbs) { this._breadcrumbs.setCurrentDirectory(currentDirectory) } this._checkPathActuality() } _checkPathActuality() { if (this._lockCurrentPathProcessing) { return } const currentPath = this._controller.getCurrentPath(); const currentPathKeys = this._controller.getCurrentPathKeys(); const options = {}; if (this.option("currentPath") !== currentPath) { options.currentPath = currentPath } if (!(0, _common.equalByValue)(this.option("currentPathKeys"), currentPathKeys)) { options.currentPathKeys = currentPathKeys } if (!(0, _type.isEmptyObject)(options)) { this.option(options) } } getDirectories(parentDirectoryInfo, skipNavigationOnError) { return this._controller.getDirectories(parentDirectoryInfo, skipNavigationOnError) } _getSelectedItemInfos() { return this._itemView ? this._itemView.getSelectedItems() : [] } refresh() { return this.executeCommand("refresh") } getCurrentDirectory() { const directoryInfo = this._getCurrentDirectory(); return directoryInfo && directoryInfo.fileItem || null } getSelectedItems() { return this._getSelectedItemInfos().map((itemInfo => itemInfo.fileItem)) } _onSelectedItemOpened(_ref10) { let { fileItemInfo: fileItemInfo } = _ref10; const fileItem = fileItemInfo.fileItem; if (!fileItem.isDirectory) { this._actions.onSelectedFileOpened({ file: fileItem }); return } if (fileItem.isParentFolder) { this._itemKeyToFocus = this._getCurrentDirectory().fileItem.key } const newCurrentDirectory = fileItem.isParentFolder ? this._getCurrentDirectory().parentDirectory : fileItemInfo; this._setCurrentDirectory(newCurrentDirectory); if (newCurrentDirectory) { this._filesTreeView.toggleDirectoryExpandedState(newCurrentDirectory.parentDirectory, true) } } }(0, _component_registrator.default)("dxFileManager", FileManager); exports.default = FileManager; module.exports = exports.default; module.exports.default = exports.default }, 7702: /*!*****************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/ui/file_manager/ui.file_manager.messages.js ***! \*****************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "ErrorCode", { enumerable: true, get: function() { return _error_codes.default } }); exports.FileManagerMessages = void 0; var _message = _interopRequireDefault(__webpack_require__( /*! ../../common/core/localization/message */ 4671)); var _error_codes = _interopRequireDefault(__webpack_require__( /*! ../../file_management/error_codes */ 54950)); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } exports.FileManagerMessages = { get: (errorCode, args) => { switch (errorCode) { case _error_codes.default.NoAccess: return _message.default.format("dxFileManager-errorNoAccess"); case _error_codes.default.FileExists: return _message.default.format("dxFileManager-errorFileExistsFormat", args); case _error_codes.default.FileNotFound: return _message.default.format("dxFileManager-errorFileNotFoundFormat", args); case _error_codes.default.DirectoryExists: return _message.default.format("dxFileManager-errorDirectoryExistsFormat", args); case _error_codes.default.DirectoryNotFound: return _message.default.format("dxFileManager-errorDirectoryNotFoundFormat", args); case _error_codes.default.WrongFileExtension: return _message.default.format("dxFileManager-errorWrongFileExtension"); case _error_codes.default.MaxFileSizeExceeded: return _message.default.format("dxFileManager-errorMaxFileSizeExceeded"); case _error_codes.default.InvalidSymbols: return _message.default.format("dxFileManager-errorInvalidSymbols") } return _message.default.format("dxFileManager-errorDefault") } } }, 44313: /*!*********************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/ui/file_manager/ui.file_manager.notification.js ***! \*********************************************************************************************/ function(module, exports, __webpack_require__) { exports.default = void 0; var _size = __webpack_require__( /*! ../../core/utils/size */ 57653); var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../core/renderer */ 64553)); var _extend = __webpack_require__( /*! ../../core/utils/extend */ 52576); var _type = __webpack_require__( /*! ../../core/utils/type */ 11528); var _deferred = __webpack_require__( /*! ../../core/utils/deferred */ 87739); var _window = __webpack_require__( /*! ../../core/utils/window */ 3104); var _ui = _interopRequireDefault(__webpack_require__( /*! ../widget/ui.widget */ 11118)); var _ui2 = _interopRequireDefault(__webpack_require__( /*! ../popup/ui.popup */ 10720)); var _drawer = _interopRequireDefault(__webpack_require__( /*! ../drawer */ 7968)); var _uiFile_manager = __webpack_require__( /*! ./ui.file_manager.notification_manager */ 88989); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } const window = (0, _window.getWindow)(); class FileManagerNotificationControl extends _ui.default { _initMarkup() { super._initMarkup(); this._initActions(); this._isInAdaptiveState = this._isSmallScreen(); this._managerMap = {}; this._notificationManagerStubId = null; this._setNotificationManager(); const $progressPanelContainer = this.option("progressPanelContainer"); const $progressDrawer = (0, _renderer.default)("<div>").addClass("dx-filemanager-notification-drawer").appendTo($progressPanelContainer); (0, _renderer.default)("<div>").addClass("dx-filemanager-notification-drawer-panel").appendTo($progressDrawer); const drawerOptions = (0, _extend.extend)({ opened: false, position: "right", template: container => this._ensureProgressPanelCreated(container) }, this._getProgressDrawerAdaptiveOptions()); this._progressDrawer = this._createComponent($progressDrawer, _drawer.default, drawerOptions); const $drawerContent = $progressDrawer.find(".dx-filemanager-notification-drawer-panel").first(); const contentRenderer = this.option("contentTemplate"); if ((0, _type.isFunction)(contentRenderer)) { contentRenderer($drawerContent, this) } } _setNotificationManager(options) { options = (0, _extend.extend)({ onActionProgressStatusChanged: this._raiseActionProgress.bind(this) }, options); if (!this._notificationManagerStubId) { const stubManager = new _uiFile_manager.NotificationManagerStub(options); this._notificationManagerStubId = stubManager.getId(); this._managerMap[this._notificationManagerStubId] = stubManager } if (!this._isProgressDrawerDisabled()) { const notificationManagerComponent = this._getProgressManagerComponent(); options.isActual = true; const defaultManager = new notificationManagerComponent(options); this._managerMap[defaultManager.getId()] = defaultManager } } _getNotificationManager(operationInfo) { const actualManagerId = (null === operationInfo || void 0 === operationInfo ? void 0 : operationInfo[_uiFile_manager.MANAGER_ID_NAME]) || this._getActualNotificationManagerId(); return this._managerMap[actualManagerId] || this._managerMap[this._notificationManagerStubId] } _clearManagerMap() { const stubManager = this._managerMap[this._notificationManagerStubId]; delete this._managerMap; this._managerMap = { [this._notificationManagerStubId]: stubManager } } _getActualNotificationManagerId() { return Object.keys(this._managerMap).filter((managerId => this._managerMap[managerId].isActual()))[0] } tryShowProgressPanel() { const promise = new _deferred.Deferred; const notificationManager = this._getNotificationManager(); if (notificationManager.isActionProgressStatusDefault() || this._isProgressDrawerOpened() || this._isProgressDrawerDisabled()) { return promise.resolve().promise() } setTimeout((() => { this._progressDrawer.show().done(promise.resolve); this._hidePopup(); notificationManager.tryHideActionProgress() })); return promise.promise() } addOperation(processingMessage, allowCancel, allowProgressAutoUpdate) { const notificationManager = this._getNotificationManager(); return notificationManager.addOperation(processingMessage, allowCancel, allowProgressAutoUpdate) } addOperationDetails(operationInfo, details, showCloseButton) { const notificationManager = this._getNotificationManager(operationInfo); notificationManager.addOperationDetails(operationInfo, details, showCloseButton) } updateOperationItemProgress(operationInfo, itemIndex, itemProgress, commonProgress) { const notificationManager = this._getNotificationManager(operationInfo); notificationManager.updateOperationItemProgress(operationInfo, itemIndex, itemProgress, commonProgress) } completeOperationItem(operationInfo, itemIndex, commonProgress) { const notificationManager = this._getNotificationManager(operationInfo); notificationManager.completeOperationItem(operationInfo, itemIndex, commonProgress) } finishOperation(operationInfo, commonProgress) { const notificationManager = this._getNotificationManager(operationInfo); notificationManager.finishOperation(operationInfo, commonProgress) } completeOperation(operationInfo, commonText, isError, statusText) { const notificationManager = this._getNotificationManager(operationInfo); if (!isError) { this._showPopup(commonText) } notificationManager.completeOperation(operationInfo, commonText, isError, statusText); if (!this._isProgressDrawerOpened() || !notificationManager.hasNoOperations()) { notificationManager.updateActionProgressStatus(operationInfo) } else { notificationManager.tryHideActionProgress() } } completeSingleOperationWithError(operationInfo, errorInfo) { const notificationManager = this._getNotificationManager(operationInfo); notificationManager.completeSingleOperationWithError(operationInfo, errorInfo); this._showPopupError(errorInfo) } addOperationDetailsError(operationInfo, errorInfo) { const notificationManager = this._getNotificationManager(operationInfo); notificationManager.addOperationDetailsError(operationInfo, errorInfo); this._showPopupError(errorInfo) } _hideProgressPanel() { setTimeout((() => this._progressDrawer.hide())) } _isSmallScreen() { if (!(0, _window.hasWindow)()) { return false } return (0, _size.getWidth)(window) <= 1e3 } _dimensionChanged(dimension) { if (!(dimension && "height" === dimension)) { this._checkAdaptiveState() } } _checkAdaptiveState() { const oldState = this._isInAdaptiveState; this._isInAdaptiveState = this._isSmallScreen(); if (oldState !== this._isInAdaptiveState && this._progressDrawer) { const notificationManager = this._getNotificationManager(); if (notificationManager.handleDimensionChanged()) { const options = this._getProgressDrawerAdaptiveOptions(); this._progressDrawer.option(options) } } } _getProgressDrawerAdaptiveOptions() { if (this._isInAdaptiveState) { return { openedStateMode: "overlap", shading: true, hideOnOutsideClick: true } } else { return { openedStateMode: "shrink", shading: false, hideOnOutsideClick: false } } } _ensureProgressPanelCreated(container) { const notificationManager = this._getNotificationManager(); notificationManager.ensureProgressPanelCreated(container, { onOperationCanceled: _ref => { let { info: info } = _ref; return this._raiseOperationCanceled(info) }, onOperationItemCanceled: _ref2 => { let { item: item, itemIndex: itemIndex } = _ref2; return this._raiseOperationItemCanceled(item, itemIndex) }, onPanelClosed: () => this._hideProgressPanel() }) } _getProgressManagerComponent() { return _uiFile_manager.NotificationManager } _isProgressDrawerDisabled() { return !this.option("showProgressPanel") } _isProgressDrawerOpened() { return this._progressDrawer.option("opened") } _hidePopup(forceHide) { if (!this.option("showNotificationPopup") && !forceHide) { return } this._getNotificationPopup().hide() } _showPopup(content, errorMode) { if (this._isProgressDrawerOpened() || !this.option("showNotificationPopup")) { return } this._getNotificationPopup().$wrapper().toggleClass("dx-filemanager-notification-popup-error", !!errorMode); this._getNotificationPopup().option("contentTemplate", content); if (!this._getNotificationPopup().option("visible")) { this._getNotificationPopup().show() } } _showPopupError(errorInfo) { if (!this.option("showNotificationPopup")) { return } const notificationManager = this._getNotificationManager(); const $content = (0, _renderer.default)("<div>"); const $message = (0, _renderer.default)("<div>").addClass("dx-filemanager-notification-common").text(errorInfo.commonErrorText); const $separator = (0, _renderer.default)("<div>").addClass("dx-filemanager-notification-separator"); (0, _renderer.default)("<div>").appendTo($separator); const $details = (0, _renderer.default)("<div>").addClass("dx-filemanager-notification-details"); if (errorInfo.item) { notificationManager.createErrorDetailsProgressBox($details, errorInfo.item, errorInfo.detailErrorText) } else { $message.addClass("dx-filemanager-notification-common-no-item"); notificationManager.renderError($details, errorInfo.detailErrorText) } $content.append($message, $separator, $details); this._showPopup($content, true) } _getNotificationPopup() { if (!this._notificationPopup) { const $popup = (0, _renderer.default)("<div>").appendTo(this.$element()); this._notificationPopup = this._createComponent($popup, _ui2.default, { container: this.$element(), width: "auto", height: "auto", showTitle: false, dragEnabled: false, shading: false, visible: false, hideOnOutsideClick: true, animation: { duration: 0 }, position: { my: "right top", at: "right top", of: this.option("positionTarget"), offset: "-10 -5" }, _wrapperClassExternal: "dx-filemanager-notification-popup" }) } return this._notificationPopup } _raiseActionProgress(message, status) { this._actions.onActionProgress({ message: message, status: status }) } _raiseOperationCanceled(info) { this._actions.onOperationCanceled({ info: info }) } _raiseOperationItemCanceled(item, index) { this._actions.onOperationItemCanceled({ item: item, itemIndex: index }) } _initActions() { this._actions = { onActionProgress: this._createActionByOption("onActionProgress"), onOperationCanceled: this._createActionByOption("onOperationCanceled"), onOperationItemCanceled: this._createActionByOption("onOperationItemCanceled") } } _getDefaultOptions() { return (0, _extend.extend)(super._getDefaultOptions(), { progressPanelContainer: null, contentTemplate: null, onActionProgress: null, onOperationCanceled: null, onOperationItemCanceled: null, showProgressPanel: true, showNotificationPopup: true }) } _optionChanged(args) { const name = args.name; switch (name) { case "progressPanelContainer": case "contentTemplate": break; case "showProgressPanel": this._setNotificationManager(); this._getNotificationManager().updateActionProgressStatus(); if (!args.value) { this._hideProgressPanel(); this._clearManagerMap() } this._progressDrawer.repaint(); break; case "showNotificationPopup": if (!args.value) { this._hidePopup(true) } break; case "onActionProgress": case "onOperationCanceled": case "onOperationItemCanceled": this._actions[name] = this._createActionByOption(name); break; default: super._optionChanged(args) } } } exports.default = FileManagerNotificationControl; module.exports = exports.default; module.exports.default = exports.default }, 51965: /*!************************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/ui/file_manager/ui.file_manager.notification.progress_panel.js ***! \************************************************************************************************************/ function(module, exports, __webpack_require__) { exports.default = void 0; var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../core/renderer */ 64553)); var _extend = __webpack_require__( /*! ../../core/utils/extend */ 52576); var _common = __webpack_require__( /*! ../../core/utils/common */ 17781); var _icon = __webpack_require__( /*! ../../core/utils/icon */ 69629); var _message = _interopRequireDefault(__webpack_require__( /*! ../../common/core/localization/message */ 4671)); var _ui = _interopRequireDefault(__webpack_require__( /*! ../widget/ui.widget */ 11118)); var _progress_bar = _interopRequireDefault(__webpack_require__( /*! ../progress_bar */ 58436)); var _button = _interopRequireDefault(__webpack_require__( /*! ../button */ 64973)); var _scroll_view = _interopRequireDefault(__webpack_require__( /*! ../scroll_view */ 91374)); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } class FileManagerProgressPanel extends _ui.default { _initMarkup() { super._initMarkup(); this._initActions(); this._operationCount = 0; this.$element().addClass("dx-filemanager-progress-panel"); const $scrollView = (0, _renderer.default)("<div>").appendTo(this.$element()); const $container = (0, _renderer.default)("<div>").addClass("dx-filemanager-progress-panel-container").appendTo($scrollView); this._scrollView = this._createComponent($scrollView, _scroll_view.default, { scrollByContent: true, scrollByThumb: true, showScrollbar: "onScroll" }); const $title = (0, _renderer.default)("<div>").addClass("dx-filemanager-progress-panel-title").appendTo($container); (0, _renderer.default)("<div>").text(_message.default.format("dxFileManager-notificationProgressPanelTitle")).addClass("dx-filemanager-progress-panel-title-text").appendTo($title); const $closeButton = (0, _renderer.default)("<div>").addClass("dx-filemanager-progress-panel-close-button").appendTo($title); this._createComponent($closeButton, _button.default, { icon: "close", stylingMode: "text", onClick: () => this._raisePanelClosed() }); this._$infosContainer = (0, _renderer.default)("<div>").addClass("dx-filemanager-progress-panel-infos-container").appendTo($container); this._renderEmptyListText() } _getDefaultOptions() { return (0, _extend.extend)(super._getDefaultOptions(), { onOperationClosed: null, onOperationCanceled: null, onOperationItemCanceled: null, onPanelClosed: null }) } _initActions() { this._actions = { onOperationClosed: this._createActionByOption("onOperationClosed"), onOperationCanceled: this._createActionByOption("onOperationCanceled"), onOperationItemCanceled: this._createActionByOption("onOperationItemCanceled"), onPanelClosed: this._createActionByOption("onPanelClosed") } } _optionChanged(args) { const name = args.name; switch (name) { case "test": break; case "onOperationClosed": case "onOperationCanceled": case "onOperationItemCanceled": this._actions[name] = this._createActionByOption(name); break; default: super._optionChanged(args) } } addOperation(commonText, showCloseButtonAlways, allowProgressAutoUpdate) { if (this._operationCount) { (0, _renderer.default)("<div>").addClass("dx-filemanager-progress-panel-separator").prependTo(this._$infosContainer) } else { this._$infosContainer.empty() } this._operationCount++; const info = { customCloseHandling: showCloseButtonAlways, allowProgressAutoUpdate: (0, _common.ensureDefined)(allowProgressAutoUpdate, true) }; const $info = (0, _renderer.default)("<div>").addClass("dx-filemanager-progress-panel-info").prependTo(this._$infosContainer); info.$info = $info; const $common = (0, _renderer.default)("<div>").addClass("dx-filemanager-progress-panel-common").appendTo($info); info.common = this._createProgressBox($common, { commonText: commonText, showCloseButton: true, showCloseButtonAlways: showCloseButtonAlways, onCloseButtonClick: () => this._closeOperation(info) }); return info } addOperationDetails(info, details, showCloseButton) { info.$info.addClass("dx-filemanager-progress-panel-info-with-details"); const $details = (0, _renderer.default)("<div>").addClass("dx-filemanager-progress-panel-details").appendTo(info.$info); info.details = details.map(((itemInfo, index) => { itemInfo.info = info; return this._createDetailsItem($details, itemInfo, index, false, showCloseButton) })) } _createDetailsItem($container, item, itemIndex, skipProgressBox, showCloseButton) { const $detailsItem = (0, _renderer.default)("<div>").appendTo($container); if (-1 !== itemIndex) { $detailsItem.addClass("dx-card") } return this._createProgressBox($detailsItem, { commonText: item.commonText, imageUrl: item.imageUrl, skipProgressBox: skipProgressBox, showCloseButton: showCloseButton, showCloseButtonAlways: showCloseButton, onCloseButtonClick: () => this._cancelOperationItem(item, itemIndex) }) } completeOperationItem(operationInfo, itemIndex, commonProgress) { if (operationInfo.allowProgressAutoUpdate) { this.updateOperationItemProgress(operationInfo, itemIndex, 100, commonProgress) } this._setCloseButtonVisible(operationInfo.details[itemIndex], false) } updateOperationItemProgress(operationInfo, itemIndex, itemProgress, commonProgress) { this.updateOperationCommonProgress(operationInfo, commonProgress); if (operationInfo.details) { const detailsItem = operationInfo.details[itemIndex]; detailsItem.progressBar.option("value", itemProgress) } } updateOperationCommonProgress(operationInfo, commonProgress) { var _operationInfo$common; null === (_operationInfo$common = operationInfo.common.progressBar) || void 0 === _operationInfo$common || _operationInfo$common.option("value", commonProgress) } completeOperation(info, commonText, isError, statusText) { info.completed = true; info.common.$commonText.text(commonText); if (isError) { this._removeProgressBar(info.common) } else if (info.allowProgressAutoUpdate) { this.updateOperationCommonProgress(info, 100) } if (statusText) { this._setProgressBarText(info.common, statusText) } this._setCloseButtonVisible(info.common, true) } completeSingleOperationWithError(info, errorText) { var _info$details; const detailsItem = null === (_info$details = info.details) || void 0 === _info$details ? void 0 : _info$details[0]; info.completed = true; this._renderOperationError(detailsItem || info.common, errorText); this._setCloseButtonVisible(info.common, true); if (detailsItem) { this._setCloseButtonVisible(detailsItem, false) } } addOperationDetailsError(info, index, errorText) { const detailsItem = info.details[index]; this._renderOperationError(detailsItem, errorText); this._setCloseButtonVisible(detailsItem, false) } _renderError($container, $target, errorText) { (0, _renderer.default)("<div>").text(errorText).addClass("dx-filemanager-progress-box-error").appendTo($container) } _renderEmptyListText() { this._$infosContainer.text(_message.default.format("dxFileManager-notificationProgressPanelEmptyListText")) } _renderOperationError(info, errorText) { this._removeProgressBar(info); this._renderError(info.$wrapper, info.$commonText, errorText) } _removeProgressBar(progressBox) { if (progressBox.progressBar) { progressBox.progressBar.dispose(); progressBox.progressBar.$element().remove(); progressBox.progressBar = null } } _createProgressBox($container, options) { $container.addClass("dx-filemanager-progress-box"); if (!options.showCloseButtonAlways) { $container.addClass("dx-filemanager-progress-box-without-close-button") } if (options.imageUrl) { (0, _icon.getImageContainer)(options.imageUrl).addClass("dx-filemanager-progress-box-image").appendTo($container) } const $wrapper = (0, _renderer.default)("<div>").addClass("dx-filemanager-progress-box-wrapper").appendTo($container); const $commonText = (0, _renderer.default)("<div>").addClass("dx-filemanager-progress-box-common").text(options.commonText).appendTo($wrapper); let progressBar = null; if (!options.skipProgressBox) { const $progressBar = (0, _renderer.default)("<div>").addClass("dx-filemanager-progress-box-progress-bar").appendTo($wrapper); progressBar = this._createComponent($progressBar, _progress_bar.default, { min: 0, max: 100, width: "100%", validationMessageMode: "always", statusFormat: (ratio, value) => this._getStatusString(ratio, value) }) } let closeButton = null; if (options.showCloseButton) { const $button = (0, _renderer.default)("<div>").addClass("dx-filemanager-progress-box-close-button").appendTo($container); closeButton = this._createComponent($button, _button.default, { icon: "dx-filemanager-i dx-filemanager-i-cancel", stylingMode: "text", visible: options.showCloseButtonAlways, onClick: options.onCloseButtonClick }) } return { $commonText: $commonText, progressBar: progressBar, $element: $container, $wrapper: $wrapper, closeButton: closeButton } } _setCloseButtonVisible(progressBox, visible) { if (progressBox.closeButton) { progressBox.$element.toggleClass("dx-filemanager-progress-box-without-close-button", !visible); progressBox.closeButton.option("visible", visible) } } _setProgressBarText(progressBox, text) { progressBox.progressBar.option("statusFormat", (() => text)) } _closeOperation(info) { if (info.customCloseHandling && !info.completed) { this._raiseOperationCanceled(info); this._setCloseButtonVisible(info.common, false); info.details.forEach((item => this._displayClosedOperationItem(item))) } else { this._raiseOperationClosed(info); info.$info.next(".dx-filemanager-progress-panel-separator").remove(); info.$info.remove(); this._operationCount--; if (!this._operationCount) { this._renderEmptyListText() } } } _cancelOperationItem(item, itemIndex) { this._raiseOperationItemCanceled(item, itemIndex); const itemInfo = item.info.details[itemIndex]; this._displayClosedOperationItem(itemInfo) } _displayClosedOperationItem(itemInfo) { this._setProgressBarText(itemInfo, _message.default.format("dxFileManager-notificationProgressPanelOperationCanceled")); this._setCloseButtonVisible(itemInfo, false) } _getStatusString(ratio, value) { return 1 === ratio ? _message.default.format("Done") : Math.round(100 * ratio) + "%" } _raiseOperationClosed(info) { this._actions.onOperationClosed({ info: info }) } _raiseOperationCanceled(info) { this._actions.onOperationCanceled({ info: info }) } _raiseOperationItemCanceled(item, itemIndex) { this._actions.onOperationItemCanceled({ item: item, itemIndex: itemIndex }) } _raisePanelClosed() { this._actions.onPanelClosed() } } exports.default = FileManagerProgressPanel; module.exports = exports.default; module.exports.default = exports.default }, 88989: /*!*****************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/ui/file_manager/ui.file_manager.notification_manager.js ***! \*****************************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { exports.NotificationManagerStub = exports.NotificationManager = exports.MANAGER_ID_NAME = void 0; var _guid = _interopRequireDefault(__webpack_require__( /*! ../../core/guid */ 19427)); var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../core/renderer */ 64553)); var _extend = __webpack_require__( /*! ../../core/utils/extend */ 52576); var _icon = __webpack_require__( /*! ../../core/utils/icon */ 69629); var _uiFile_managerNotification = _interopRequireDefault(__webpack_require__( /*! ./ui.file_manager.notification.progress_panel */ 51965)); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } const MANAGER_ID_NAME = exports.MANAGER_ID_NAME = "__operationInfoManager"; const ACTION_PROGRESS_STATUS_default = "default", ACTION_PROGRESS_STATUS_progress = "progress", ACTION_PROGRESS_STATUS_error = "error", ACTION_PROGRESS_STATUS_success = "success"; class NotificationManagerBase { constructor(_ref) { let { onActionProgressStatusChanged: onActionProgressStatusChanged, isActual: isActual } = _ref; this._id = (new _guid.default).toString(); this._isActual = isActual || false; this._actionProgressStatus = ACTION_PROGRESS_STATUS_default; this._raiseActionProgress = onActionProgressStatusChanged } getId() { return this._id } isActual() { return this._isActual } createErrorDetailsProgressBox($container, item, errorText) { const detailsItem = this._createDetailsItem($container, item); this.renderError(detailsItem.$wrapper, errorText) } renderError($container, errorText) { (0, _renderer.default)("<div>").text(errorText).addClass("dx-filemanager-progress-box-error").appendTo($container) } isActionProgressStatusDefault() { return this._actionProgressStatus === ACTION_PROGRESS_STATUS_default } _createDetailsItem($container, item) { const $detailsItem = (0, _renderer.default)("<div>").appendTo($container); return this._createProgressBox($detailsItem, { commonText: item.commonText, imageUrl: item.imageUrl }) } _createProgressBox($container, options) { $container.addClass("dx-filemanager-progress-box"); if (options.imageUrl) { (0, _icon.getImageContainer)(options.imageUrl).addClass("dx-filemanager-progress-box-image").appendTo($container) } const $wrapper = (0, _renderer.default)("<div>").addClass("dx-filemanager-progress-box-wrapper").appendTo($container); const $commonText = (0, _renderer.default)("<div>").addClass("dx-filemanager-progress-box-common").text(options.commonText).appendTo($wrapper); return { $commonText: $commonText, $element: $container, $wrapper: $wrapper } } } exports.NotificationManagerStub = class extends NotificationManagerBase { addOperation() { return { [MANAGER_ID_NAME]: this._id } } addOperationDetails() {} updateOperationItemProgress() {} completeOperationItem() {} finishOperation() {} completeOperation() {} completeSingleOperationWithError() {} addOperationDetailsError() {} handleDimensionChanged() { return false } ensureProgressPanelCreated() {} tryHideActionProgress() { this._updateActionProgress("", ACTION_PROGRESS_STATUS_default) } updateActionProgressStatus() { this._updateActionProgress("", ACTION_PROGRESS_STATUS_default) } _updateActionProgress(message, status) { if (status !== ACTION_PROGRESS_STATUS_default && status !== ACTION_PROGRESS_STATUS_progress) { return } this._actionProgressStatus = status; this._raiseActionProgress(message, status) } hasNoOperations() { return true } get _operationInProgressCount() { return 0 } set _operationInProgressCount(value) {} get _failedOperationCount() { return 0 } set _failedOperationCount(value) {} }; exports.NotificationManager = class extends NotificationManagerBase { constructor(options) { super(options); this._failedOperationCount = 0; this._operationInProgressCount = 0 } addOperation(processingMessage, allowCancel, allowProgressAutoUpdate) { this._operationInProgressCount++; const operationInfo = this._progressPanel.addOperation(processingMessage, allowCancel, allowProgressAutoUpdate); operationInfo[MANAGER_ID_NAME] = this._id; this._updateActionProgress(processingMessage, ACTION_PROGRESS_STATUS_progress); return operationInfo } addOperationDetails(operationInfo, details, showCloseButton) { this._progressPanel.addOperationDetails(operationInfo, details, showCloseButton) } updateOperationItemProgress(operationInfo, itemIndex, itemProgress, commonProgress) { this._progressPanel.updateOperationItemProgress(operationInfo, itemIndex, itemProgress, commonProgress) } completeOperationItem(operationInfo, itemIndex, commonProgress) { this._progressPanel.completeOperationItem(operationInfo, itemIndex, commonProgress) } finishOperation(operationInfo, commonProgress) { this._progressPanel.updateOperationCommonProgress(operationInfo, commonProgress) } completeOperation(operationInfo, commonText, isError, statusText) { this._operationInProgressCount--; if (isError) { this._failedOperationCount++ } this._progressPanel.completeOperation(operationInfo, commonText, isError, statusText) } completeSingleOperationWithError(operationInfo, errorInfo) { this._progressPanel.completeSingleOperationWithError(operationInfo, errorInfo.detailErrorText); this._notifyError(errorInfo) } addOperationDetailsError(operationInfo, errorInfo) { this._progressPanel.addOperationDetailsError(operationInfo, errorInfo.itemIndex, errorInfo.detailErrorText); this._notifyError(errorInfo) } handleDimensionChanged() { if (this._progressPanel) { this._progressPanel.$element().detach() } return true } ensureProgressPanelCreated(container, options) { if (!this._progressPanel) { const $progressPanelElement = (0, _renderer.default)("<div>").appendTo(container); const ProgressPanelClass = this._getProgressPanelComponent(); this._progressPanel = new ProgressPanelClass($progressPanelElement, (0, _extend.extend)({}, options, { onOperationClosed: _ref2 => { let { info: info } = _ref2; return this._onProgressPanelOperationClosed(info) } })) } else { this._progressPanel.$element().appendTo(container) } } _getProgressPanelComponent() { return _uiFile_managerNotification.default } _onProgressPanelOperationClosed(operationInfo) { if (operationInfo.hasError) { this._failedOperationCount--; this.tryHideActionProgress() } } tryHideActionProgress() { if (this.hasNoOperations()) { this._updateActionProgress("", ACTION_PROGRESS_STATUS_default) } } updateActionProgressStatus(operationInfo) { if (operationInfo) { const status = 0 === this._failedOperationCount ? ACTION_PROGRESS_STATUS_success : ACTION_PROGRESS_STATUS_error; this._updateActionProgress("", status) } } _notifyError(errorInfo) { const status = this.hasNoOperations() ? ACTION_PROGRESS_STATUS_default : ACTION_PROGRESS_STATUS_error; this._updateActionProgress(errorInfo.commonErrorText, status) } _updateActionProgress(message, status) { this._actionProgressStatus = status; this._raiseActionProgress(message, status) } hasNoOperations() { return 0 === this._operationInProgressCount && 0 === this._failedOperationCount } get _operationInProgressCount() { return this._operationInProgressCountInternal } set _operationInProgressCount(value) { this._operationInProgressCountInternal = value } get _failedOperationCount() { return this._failedOperationCountInternal } set _failedOperationCount(value) { this._failedOperationCountInternal = value } } }, 59679: /*!****************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/ui/file_manager/ui.file_manager.toolbar.js ***! \****************************************************************************************/ function(module, exports, __webpack_require__) { exports.default = void 0; var _size = __webpack_require__( /*! ../../core/utils/size */ 57653); var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../core/renderer */ 64553)); var _extend = __webpack_require__( /*! ../../core/utils/extend */ 52576); var _type = __webpack_require__( /*! ../../core/utils/type */ 11528); var _common = __webpack_require__( /*! ../../core/utils/common */ 17781); var _message = _interopRequireDefault(__webpack_require__( /*! ../../common/core/localization/message */ 4671)); var _uiFile_manager = __webpack_require__( /*! ./ui.file_manager.common */ 57011); var _themes = __webpack_require__( /*! ../themes */ 52071); var _ui = _interopRequireDefault(__webpack_require__( /*! ../widget/ui.widget */ 11118)); var _toolbar = _interopRequireDefault(__webpack_require__( /*! ../toolbar */ 2850)); __webpack_require__( /*! ../drop_down_button */ 56582); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } const DEFAULT_ITEM_CONFIGS = { showNavPane: { location: "before" }, create: { location: "before", compactMode: { showText: "inMenu", locateInMenu: "auto" } }, upload: { location: "before", compactMode: { showText: "inMenu", locateInMenu: "auto" } }, refresh: { location: "after", showText: "inMenu", cssClass: "dx-filemanager-toolbar-has-large-icon", compactMode: { showText: "inMenu", locateInMenu: "auto" } }, switchView: { location: "after" }, download: { location: "before", compactMode: { showText: "inMenu", locateInMenu: "auto" } }, move: { location: "before", compactMode: { showText: "inMenu", locateInMenu: "auto" } }, copy: { location: "before", compactMode: { showText: "inMenu", locateInMenu: "auto" } }, rename: { location: "before", compactMode: { showText: "inMenu", locateInMenu: "auto" } }, delete: { location: "before", compactMode: { showText: "inMenu" } }, clearSelection: { location: "after", locateInMenu: "never", compactMode: { showText: "inMenu" } }, separator: { location: "before" } }; const DEFAULT_ITEM_ALLOWED_PROPERTIES = ["visible", "location", "locateInMenu", "disabled", "showText"]; const DEFAULT_ITEM_ALLOWED_OPTION_PROPERTIES = ["accessKey", "elementAttr", "height", "hint", "icon", "stylingMode", "tabIndex", "text", "width"]; const ALWAYS_VISIBLE_TOOLBAR_ITEMS = ["separator", "switchView"]; const REFRESH_ICON_MAP = { default: "dx-filemanager-i dx-filemanager-i-refresh", progress: "dx-filemanager-i dx-filemanager-i-progress", success: "dx-filemanager-i dx-filemanager-i-done", error: "dx-filemanager-i dx-filemanager-i-danger" }; class FileManagerToolbar extends _ui.default { _init() { super._init(); this._generalToolbarVisible = true; this._refreshItemState = { message: "", status: "default" } } _initMarkup() { this._createItemClickedAction(); this._$viewSwitcherPopup = (0, _renderer.default)("<div>").addClass("dx-filemanager-view-switcher-popup"); this._generalToolbar = this._createToolbar(this.option("generalItems"), !this._generalToolbarVisible); this._fileToolbar = this._createToolbar(this.option("fileItems"), this._generalToolbarVisible); this._$viewSwitcherPopup.appendTo(this.$element()); this.$element().addClass("dx-filemanager-toolbar dx-filemanager-general-toolbar") } _render() { super._render(); const toolbar = this._getVisibleToolbar(); this._checkCompactMode(toolbar) } _clean() { delete this._commandManager; delete this._itemClickedAction; delete this._$viewSwitcherPopup; delete this._generalToolbar; delete this._fileToolbar; super._clean() } _dimensionChanged(dimension) { if (!dimension || "height" !== dimension) { const toolbar = this._getVisibleToolbar(); this._checkCompactMode(toolbar) } } _getVisibleToolbar() { return this._generalToolbarVisible ? this._generalToolbar : this._fileToolbar } _createToolbar(items, hidden) { const toolbarItems = this._getPreparedItems(items); const $toolbar = (0, _renderer.default)("<div>").appendTo(this.$element()); const result = this._createComponent($toolbar, _toolbar.default, { items: toolbarItems, visible: !hidden, onItemClick: args => this._raiseItemClicked(args) }); result.compactMode = false; return result } _getPreparedItems(items) { items = items.map((item => { let extendedItem = item; if ((0, _type.isString)(item)) { extendedItem = { name: item } } const commandName = extendedItem.name; const preparedItem = this._configureItemByCommandName(commandName, extendedItem); preparedItem.originalItemData = item; if ("separator" !== commandName) { this._setItemVisibleAvailable(preparedItem) } return preparedItem })); this._updateSeparatorsVisibility(items); return items } _updateSeparatorsVisibility(items, toolbar) { let hasModifications = false; const menuItems = this._getMenuItems(toolbar); const hasItemsBefore = { before: false, center: false, after: false }; const itemGroups = { before: this._getItemsInGroup(items, menuItems, "before"), center: this._getItemsInGroup(items, menuItems, "center"), after: this._getItemsInGroup(items, menuItems, "after") }; items.forEach(((item, i) => { const itemLocation = item.location; if ("separator" === item.name) { const isSeparatorVisible = hasItemsBefore[itemLocation] && this._groupHasItemsAfter(itemGroups[itemLocation]); if (item.visible !== isSeparatorVisible) { hasModifications = true; item.visible = isSeparatorVisible } hasItemsBefore[itemLocation] = false } else { if (!this._isItemInMenu(menuItems, item)) { hasItemsBefore[itemLocation] = hasItemsBefore[itemLocation] || item.visible } itemGroups[itemLocation].shift() } })); if (toolbar && hasModifications) { toolbar.repaint() } return hasModifications } _getMenuItems(toolbar) { const result = toolbar ? toolbar._getMenuItems() : []; return result.map((menuItem => menuItem.originalItemData)) } _isItemInMenu(menuItems, item) { return !!menuItems.length && "never" !== (0, _common.ensureDefined)(item.locateInMenu, "never") && -1 !== menuItems.indexOf(item.originalItemData) } _getItemsInGroup(items, menuItems, groupName) { return items.filter((item => item.location === groupName && !this._isItemInMenu(menuItems, item))) } _groupHasItemsAfter(items) { for (let i = 0; i < items.length; i++) { if ("separator" !== items[i].name && items[i].visible) { return true } } return false } _configureItemByCommandName(commandName, item) { var _result$options; let result = {}; const command = this._commandManager.getCommandByName(commandName); if (command) { result = this._createCommandItem(command) } switch (commandName) { case "separator": result = this._createSeparatorItem(); break; case "switchView": result = this._createViewModeItem() } if (this._isDefaultItem(commandName)) { const defaultConfig = DEFAULT_ITEM_CONFIGS[commandName]; (0, _extend.extend)(true, result, defaultConfig); let resultCssClass = result.cssClass || ""; (0, _uiFile_manager.extendAttributes)(result, item, DEFAULT_ITEM_ALLOWED_PROPERTIES); if ((0, _type.isDefined)(item.options)) { (0, _uiFile_manager.extendAttributes)(result.options, item.options, DEFAULT_ITEM_ALLOWED_OPTION_PROPERTIES) }(0, _uiFile_manager.extendAttributes)(result.options, item, ["text", "icon"]); if (item.cssClass) { resultCssClass = `${resultCssClass} ${item.cssClass}` } if (resultCssClass) { result.cssClass = resultCssClass } if (!(0, _type.isDefined)(item.visible)) { result._autoHide = true } if ("dxButton" === result.widget) { if ("inMenu" === result.showText && !(0, _type.isDefined)(result.options.hint)) { result.options.hint = result.options.text } if (result.compactMode && !(0, _type.isDefined)(result.options.hint)) { this._configureHintForCompactMode(result) } } } else { (0, _extend.extend)(true, result, item); if (!result.widget) { result.widget = "dxButton" } if ("dxButton" === result.widget && !result.compactMode && !result.showText && result.options && result.options.icon && result.options.text) { result.compactMode = { showText: "inMenu" } } } if (commandName && !result.name) { (0, _extend.extend)(result, { name: commandName }) } result.location = (0, _common.ensureDefined)(result.location, "before"); if (!(0, _type.isDefined)(null === (_result$options = result.options) || void 0 === _result$options ? void 0 : _result$options.stylingMode)) { if ("dxButton" === result.widget) { (0, _extend.extend)(true, result, { options: { stylingMode: "text" } }) } if ("dxSelectBox" === result.widget) { (0, _extend.extend)(true, result, { options: { stylingMode: "filled" } }) } } return result } _isDefaultItem(commandName) { return !!DEFAULT_ITEM_CONFIGS[commandName] } _createCommandItem(command) { return { widget: "dxButton", options: { text: command.text, hint: command.hint, commandText: command.text, icon: command.icon, stylingMode: "text", onClick: e => this._executeCommand(command) } } } _createSeparatorItem() { return { template: (data, index, element) => { (0, _renderer.default)(element).addClass("dx-filemanager-toolbar-separator-item") } } } _createViewModeItem() { const commandItems = ["details", "thumbnails"].map((name => { const { text: text, icon: icon } = this._commandManager.getCommandByName(name); return { name: name, text: text, icon: icon } })); const selectedIndex = "thumbnails" === this.option("itemViewMode") ? 1 : 0; const dropDownOptions = { container: this._$viewSwitcherPopup }; if ((0, _themes.isMaterial)()) { dropDownOptions.width = (0, _themes.isCompact)() ? 28 : 36 } else if ((0, _themes.isFluent)()) { dropDownOptions.width = (0, _themes.isCompact)() ? 34 : 40 } return { cssClass: "dx-filemanager-toolbar-viewmode-item", widget: "dxDropDownButton", options: { items: commandItems, keyExpr: "name", selectedItemKey: this.option("itemViewMode"), displayExpr: " ", hint: commandItems[selectedIndex].text, stylingMode: "text", showArrowIcon: false, useSelectMode: true, dropDownOptions: dropDownOptions, onItemClick: e => this._executeCommand(e.itemData.name) } } } _configureHintForCompactMode(item) { item.options.hint = ""; item.compactMode.options = item.compactMode.options || {}; item.compactMode.options.hint = item.options.text } _checkCompactMode(toolbar) { if (toolbar.compactMode) { this._toggleCompactMode(toolbar, false) } const useCompactMode = this._toolbarHasItemsOverflow(toolbar); if (toolbar.compactMode !== useCompactMode) { if (!toolbar.compactMode) { this._toggleCompactMode(toolbar, useCompactMode) } toolbar.compactMode = useCompactMode } else if (toolbar.compactMode) { this._toggleCompactMode(toolbar, true) } } _toolbarHasItemsOverflow(toolbar) { const toolbarWidth = (0, _size.getWidth)(toolbar.$element()); const itemsWidth = toolbar._getItemsWidth(); return toolbarWidth < itemsWidth } _toggleCompactMode(toolbar, useCompactMode) { let hasModifications = false; const items = toolbar.option("items"); items.forEach((item => { if (item.compactMode) { let optionsSource = null; if (useCompactMode) { item.saved = this._getCompactModeOptions(item, item._available); optionsSource = item.compactMode } else { optionsSource = item.saved } const options = this._getCompactModeOptions(optionsSource, item._available); (0, _extend.extend)(true, item, options); hasModifications = true } })); hasModifications = this._updateSeparatorsVisibility(items) || hasModifications; if (hasModifications) { toolbar.repaint() } this._updateSeparatorsVisibility(items, toolbar) } _getCompactModeOptions(_ref, available) { let { showText: showText, locateInMenu: locateInMenu, options: options } = _ref; return { visible: available, showText: (0, _common.ensureDefined)(showText, "always"), locateInMenu: (0, _common.ensureDefined)(locateInMenu, "never"), options: { hint: null === options || void 0 === options ? void 0 : options.hint } } } _ensureAvailableCommandsVisible(toolbar) { let hasModifications = false; const items = toolbar.option("items"); items.forEach((item => { if ("separator" !== item.name) { const itemVisible = item._available; this._setItemVisibleAvailable(item); if (item._available !== itemVisible) { hasModifications = true } } })); hasModifications = this._updateSeparatorsVisibility(items) || hasModifications; if (hasModifications) { toolbar.repaint() } this._updateSeparatorsVisibility(items, toolbar) } _setItemVisibleAvailable(item) { var _item$originalItemDat; const originalVisible = null === (_item$originalItemDat = item.originalItemData) || void 0 === _item$originalItemDat ? void 0 : _item$originalItemDat.visible; item._available = this._isToolbarItemAvailable(item); item.visible = (0, _type.isDefined)(originalVisible) ? originalVisible : item._available } _fileToolbarHasEffectiveItems() { const items = this._fileToolbar.option("items"); return items.some((item => this._isFileToolbarItemAvailable(item))) } _executeCommand(command) { this._commandManager.executeCommand(command) } _isToolbarItemAvailable(toolbarItem) { if (!this._isDefaultItem(toolbarItem.name) || !toolbarItem._autoHide) { return (0, _common.ensureDefined)(toolbarItem.visible, true) } if ("refresh" === toolbarItem.name) { return this._generalToolbarVisible || !!this._isRefreshVisibleInFileToolbar } if (ALWAYS_VISIBLE_TOOLBAR_ITEMS.indexOf(toolbarItem.name) > -1) { return true } return this._isCommandAvailable(toolbarItem.name) } _isFileToolbarItemAvailable(_ref2) { let { name: name, visible: visible } = _ref2; return !this._isDefaultItem(name) && (0, _common.ensureDefined)(visible, true) || "clearSelection" !== name && "refresh" !== name && this._isCommandAvailable(name) } _isCommandAvailable(name) { return this._commandManager.isCommandAvailable(name, this.option("contextItems")) } _updateItemInToolbar(toolbar, commandName, options) { toolbar.beginUpdate(); const items = toolbar.option("items"); for (let i = 0; i < items.length; i++) { const item = items[i]; if (item.name === commandName) { toolbar.option(`items[${i}]`, options); break } } toolbar.endUpdate() } _raiseItemClicked(args) { const changedArgs = (0, _extend.extend)(true, {}, args); changedArgs.itemData = args.itemData.originalItemData; this._itemClickedAction(changedArgs) } _createItemClickedAction() { this._itemClickedAction = this._createActionByOption("onItemClick") } _getDefaultOptions() { return (0, _extend.extend)(super._getDefaultOptions(), { commandManager: null, generalItems: [], fileItems: [], contextItems: [], itemViewMode: "details", onItemClick: null }) } _optionChanged(args) { const name = args.name; switch (name) { case "commandManager": case "itemViewMode": case "generalItems": case "fileItems": this.repaint(); break; case "contextItems": this._update(); break; case "onItemClick": this._itemClickedAction = this._createActionByOption(name); break; default: super._optionChanged(args) } } updateItemPermissions() { this.repaint(); this._restoreRefreshItemState() } _restoreRefreshItemState() { this.updateRefreshItem(this._refreshItemState.message, this._refreshItemState.status) } updateRefreshItem(message, status) { let generalToolbarOptions = null; let text = _message.default.format("dxFileManager-commandRefresh"); let showText = "inMenu"; this._isRefreshVisibleInFileToolbar = false; this._refreshItemState = { message: message, status: status }; if ("default" === status) { generalToolbarOptions = { options: { icon: REFRESH_ICON_MAP.default } } } else { generalToolbarOptions = { options: { icon: REFRESH_ICON_MAP[status] } }; this._isRefreshVisibleInFileToolbar = true; text = message; showText = "always" } const fileToolbarOptions = (0, _extend.extend)({}, generalToolbarOptions, { visible: this._isRefreshVisibleInFileToolbar }); this._applyRefreshItemOptions(generalToolbarOptions, fileToolbarOptions); this._refreshItemTextTimeout = this._updateRefreshItemText("progress" === status, text, showText) } _updateRefreshItemText(isDeferredUpdate, text, showText) { const options = { showText: showText, options: { text: text } }; if (isDeferredUpdate) { return setTimeout((() => { this._applyRefreshItemOptions(options); this._refreshItemTextTimeout = void 0 }), 500) } else { if (this._refreshItemTextTimeout) { clearTimeout(this._refreshItemTextTimeout) } this._applyRefreshItemOptions(options); return } } _applyRefreshItemOptions(generalToolbarOptions, fileToolbarOptions) { if (!fileToolbarOptions) { fileToolbarOptions = (0, _extend.extend)({}, generalToolbarOptions) } this._updateItemInToolbar(this._generalToolbar, "refresh", generalToolbarOptions); this._updateItemInToolbar(this._fileToolbar, "refresh", fileToolbarOptions) } _update() { const showGeneralToolbar = 0 === this.option("contextItems").length || !this._fileToolbarHasEffectiveItems(); if (this._generalToolbarVisible !== showGeneralToolbar) { this._generalToolbar.option("visible", showGeneralToolbar); this._fileToolbar.option("visible", !showGeneralToolbar); this._generalToolbarVisible = showGeneralToolbar; this.$element().toggleClass("dx-filemanager-general-toolbar", showGeneralToolbar); this.$element().toggleClass("dx-filemanager-file-toolbar", !showGeneralToolbar) } const toolbar = this._getVisibleToolbar(); this._ensureAvailableCommandsVisible(toolbar); this._checkCompactMode(toolbar) } get _commandManager() { return this.option("commandManager") } } exports.default = FileManagerToolbar; module.exports = exports.default; module.exports.default = exports.default }, 26980: /*!*****************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/ui/file_uploader.js ***! \*****************************************************************/ function(module, exports, __webpack_require__) { exports.default = void 0; var _m_file_uploader = (e = __webpack_require__( /*! ../__internal/ui/m_file_uploader */ 22354), e && e.__esModule ? e : { default: e }); var e; exports.default = _m_file_uploader.default; module.exports = exports.default; module.exports.default = exports.default }, 35299: /*!******************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/ui/filter_builder.js ***! \******************************************************************/ function(module, exports, __webpack_require__) { exports.default = void 0; var _m_filter_builder = (e = __webpack_require__( /*! ../__internal/filter_builder/m_filter_builder */ 26005), e && e.__esModule ? e : { default: e }); var e; exports.default = _m_filter_builder.default; module.exports = exports.default; module.exports.default = exports.default }, 74075: /*!********************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/ui/form.js ***! \********************************************************/ function(module, exports, __webpack_require__) { exports.default = void 0; var _ui = (e = __webpack_require__( /*! ./form/ui.form */ 37610), e && e.__esModule ? e : { default: e }); var e; exports.default = _ui.default; module.exports = exports.default; module.exports.default = exports.default }, 37610: /*!****************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/ui/form/ui.form.js ***! \****************************************************************/ function(module, exports, __webpack_require__) { exports.default = void 0; var _m_form = (e = __webpack_require__( /*! ../../__internal/ui/form/m_form */ 67350), e && e.__esModule ? e : { default: e }); var e; exports.default = _m_form.default; module.exports = exports.default; module.exports.default = exports.default }, 89987: /*!***********************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/ui/gallery.js ***! \***********************************************************/ function(module, exports, __webpack_require__) { exports.default = void 0; var _m_gallery = (e = __webpack_require__( /*! ../__internal/ui/m_gallery */ 88017), e && e.__esModule ? e : { default: e }); var e; exports.default = _m_gallery.default; module.exports = exports.default; module.exports.default = exports.default }, 16075: /*!*********************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/ui/gantt.js ***! \*********************************************************/ function(module, exports, __webpack_require__) { exports.default = void 0; var _ui = (e = __webpack_require__( /*! ./gantt/ui.gantt */ 9264), e && e.__esModule ? e : { default: e }); var e; exports.default = _ui.default; module.exports = exports.default; module.exports.default = exports.default }, 43895: /*!************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/ui/gantt/gantt_importer.js ***! \************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { exports.getGanttViewCore = function() { if (!_devexpressGantt.default) { throw _ui.default.Error("E1041", "devexpress-gantt") } return _devexpressGantt.default }; var _ui = _interopRequireDefault(__webpack_require__( /*! ../widget/ui.errors */ 35185)); var _devexpressGantt = _interopRequireDefault(__webpack_require__( /*! devexpress-gantt */ 1990)); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } }, 28997: /*!**************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/ui/gantt/ui.gantt.actions.js ***! \**************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { exports.GanttActionsManager = void 0; var _renderer = (e = __webpack_require__( /*! ../../core/renderer */ 64553), e && e.__esModule ? e : { default: e }); var e; var _element = __webpack_require__( /*! ../../core/element */ 61404); var _extend = __webpack_require__( /*! ../../core/utils/extend */ 52576); const Actions_onContextMenuPreparing = "onContextMenuPreparing", Actions_onCustomCommand = "onCustomCommand", Actions_onDependencyDeleted = "onDependencyDeleted", Actions_onDependencyDeleting = "onDependencyDeleting", Actions_onDependencyInserted = "onDependencyInserted", Actions_onDependencyInserting = "onDependencyInserting", Actions_onResourceAssigned = "onResourceAssigned", Actions_onResourceAssigning = "onResourceAssigning", Actions_onResourceDeleted = "onResourceDeleted", Actions_onResourceDeleting = "onResourceDeleting", Actions_onResourceInserted = "onResourceInserted", Actions_onResourceInserting = "onResourceInserting", Actions_onResourceManagerDialogShowing = "onResourceManagerDialogShowing", Actions_onResourceUnassigned = "onResourceUnassigned", Actions_onResourceUnassigning = "onResourceUnassigning", Actions_onSelectionChanged = "onSelectionChanged", Actions_onTaskClick = "onTaskClick", Actions_onTaskDblClick = "onTaskDblClick", Actions_onTaskDeleted = "onTaskDeleted", Actions_onTaskDeleting = "onTaskDeleting", Actions_onTaskEditDialogShowing = "onTaskEditDialogShowing", Actions_onTaskInserted = "onTaskInserted", Actions_onTaskInserting = "onTaskInserting", Actions_onTaskMoving = "onTaskMoving", Actions_onTaskUpdated = "onTaskUpdated", Actions_onTaskUpdating = "onTaskUpdating", Actions_onScaleCellPrepared = "onScaleCellPrepared"; exports.GanttActionsManager = class { constructor(gantt) { this._gantt = gantt; this._mappingHelper = gantt._mappingHelper; this._customFieldsManager = gantt._customFieldsManager } _createActionByOption(optionName) { return this._gantt._createActionByOption(optionName) } _getTaskData(key) { return this._gantt.getTaskData(key) } _convertCoreToMappedData(optionName, coreData) { return this._mappingHelper.convertCoreToMappedData(optionName, coreData) } _convertMappedToCoreData(optionName, mappedData) { return this._mappingHelper.convertMappedToCoreData(optionName, mappedData) } _convertMappedToCoreFields(optionName, fields) { return this._mappingHelper.convertMappedToCoreFields(optionName, fields) } _convertCoreToMappedFields(optionName, fields) { return this._mappingHelper.convertCoreToMappedFields(optionName, fields) } _saveCustomFieldsDataToCache(key, data) { let forceUpdateOnKeyExpire = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : false; let isCustomFieldsUpdateOnly = arguments.length > 3 && void 0 !== arguments[3] ? arguments[3] : false; this._customFieldsManager.saveCustomFieldsDataToCache(key, data, forceUpdateOnKeyExpire, isCustomFieldsUpdateOnly) } createTaskDblClickAction() { this._taskDblClickAction = this._createActionByOption(Actions_onTaskDblClick) } taskDblClickAction(args) { if (!this._taskDblClickAction) { this.createTaskDblClickAction() } this._taskDblClickAction(args) } raiseTaskDblClickAction(key, event) { const args = { cancel: false, data: this._getTaskData(key), event: event, key: key }; this.taskDblClickAction(args); return !args.cancel } createTaskClickAction() { this._taskClickAction = this._createActionByOption(Actions_onTaskClick) } taskClickAction(args) { if (!this._taskClickAction) { this.createTaskClickAction() } this._taskClickAction(args) } raiseTaskClickAction(key, event) { const args = { key: key, event: event, data: this._getTaskData(key) }; this.taskClickAction(args) } createSelectionChangedAction() { this._selectionChangedAction = this._createActionByOption(Actions_onSelectionChanged) } selectionChangedAction(args) { if (!this._selectionChangedAction) { this.createSelectionChangedAction() } this._selectionChangedAction(args) } raiseSelectionChangedAction(selectedRowKey) { this.selectionChangedAction({ selectedRowKey: selectedRowKey }) } createCustomCommandAction() { this._customCommandAction = this._createActionByOption(Actions_onCustomCommand) } customCommandAction(args) { if (!this._customCommandAction) { this.createCustomCommandAction() } this._customCommandAction(args) } raiseCustomCommand(commandName) { this.customCommandAction({ name: commandName }) } createContextMenuPreparingAction() { this._contextMenuPreparingAction = this._createActionByOption(Actions_onContextMenuPreparing) } contextMenuPreparingAction(args) { if (!this._contextMenuPreparingAction) { this.createContextMenuPreparingAction() } this._contextMenuPreparingAction(args) } raiseContextMenuPreparing(options) { this.contextMenuPreparingAction(options) } _getInsertingAction(optionName) { switch (optionName) { case "tasks": return this._getTaskInsertingAction(); case "dependencies": return this._getDependencyInsertingAction(); case "resources": return this._getResourceInsertingAction(); case "resourceAssignments": return this._getResourceAssigningAction() } return () => {} } raiseInsertingAction(optionName, coreArgs) { const action = this._getInsertingAction(optionName); if (action) { const args = { cancel: false, values: this._convertCoreToMappedData(optionName, coreArgs.values) }; action(args); coreArgs.cancel = args.cancel; (0, _extend.extend)(coreArgs.values, this._convertMappedToCoreData(optionName, args.values)); if ("tasks" === optionName) { this._saveCustomFieldsDataToCache("gantt_new_task_key", args.values) } } } createTaskInsertingAction() { this._taskInsertingAction = this._createActionByOption(Actions_onTaskInserting) } taskInsertingAction(args) { const action = this._getTaskInsertingAction(); action(args) } _getTaskInsertingAction() { if (!this._taskInsertingAction) { this.createTaskInsertingAction() } return this._taskInsertingAction } createDependencyInsertingAction() { this._dependencyInsertingAction = this._createActionByOption(Actions_onDependencyInserting) } dependencyInsertingAction(args) { const action = this._getDependencyInsertingAction(); action(args) } _getDependencyInsertingAction() { if (!this._dependencyInsertingAction) { this.createDependencyInsertingAction() } return this._dependencyInsertingAction } createResourceInsertingAction() { this._resourceInsertingAction = this._createActionByOption(Actions_onResourceInserting) } resourceInsertingAction(args) { const action = this._getResourceInsertingAction(); action(args) } _getResourceInsertingAction() { if (!this._resourceInsertingAction) { this.createResourceInsertingAction() } return this._resourceInsertingAction } createResourceAssigningAction() { this._resourceAssigningAction = this._createActionByOption(Actions_onResourceAssigning) } resourceAssigningAction(args) { const action = this._getResourceAssigningAction(); action(args) } _getResourceAssigningAction() { if (!this._resourceAssigningAction) { this.createResourceAssigningAction() } return this._resourceAssigningAction } _getInsertedAction(optionName) { switch (optionName) { case "tasks": return this._getTaskInsertedAction(); case "dependencies": return this._getDependencyInsertedAction(); case "resources": return this._getResourceInsertedAction(); case "resourceAssignments": return this._getResourceAssignedAction() } return () => {} } raiseInsertedAction(optionName, data, key) { const action = this._getInsertedAction(optionName); if (action) { const args = { values: data, key: key }; action(args) } } createTaskInsertedAction() { this._taskInsertedAction = this._createActionByOption(Actions_onTaskInserted) } taskInsertedAction(args) { const action = this._getTaskInsertedAction(); action(args) } _getTaskInsertedAction() { if (!this._taskInsertedAction) { this.createTaskInsertedAction() } return this._taskInsertedAction } createDependencyInsertedAction() { this._dependencyInsertedAction = this._createActionByOption(Actions_onDependencyInserted) } dependencyInsertedAction(args) { const action = this._getDependencyInsertedAction(); action(args) } _getDependencyInsertedAction() { if (!this._dependencyInsertedAction) { this.createDependencyInsertedAction() } return this._dependencyInsertedAction } createResourceInsertedAction() { this._resourceInsertedAction = this._createActionByOption(Actions_onResourceInserted) } resourceInsertedAction(args) { const action = this._getResourceInsertedAction(); action(args) } _getResourceInsertedAction() { if (!this._resourceInsertedAction) { this.createResourceInsertedAction() } return this._resourceInsertedAction } createResourceAssignedAction() { this._resourceAssignedAction = this._createActionByOption(Actions_onResourceAssigned) } resourceAssignedAction(args) { const action = this._getResourceAssignedAction(); action(args) } _getResourceAssignedAction() { if (!this._resourceAssignedAction) { this.createResourceAssignedAction() } return this._resourceAssignedAction } _getDeletingAction(optionName) { switch (optionName) { case "tasks": return this._getTaskDeletingAction(); case "dependencies": return this._getDependencyDeletingAction(); case "resources": return this._getResourceDeletingAction(); case "resourceAssignments": return this._getResourceUnassigningAction() } return () => {} } raiseDeletingAction(optionName, coreArgs) { const action = this._getDeletingAction(optionName); if (action) { const args = { cancel: false, key: coreArgs.key, values: this._convertCoreToMappedData(optionName, coreArgs.values) }; action(args); coreArgs.cancel = args.cancel } } createTaskDeletingAction() { this._taskDeletingAction = this._createActionByOption(Actions_onTaskDeleting) } taskDeletingAction(args) { const action = this._getTaskDeletingAction(); action(args) } _getTaskDeletingAction() { if (!this._taskDeletingAction) { this.createTaskDeletingAction() } return this._taskDeletingAction } createDependencyDeletingAction() { this._dependencyDeletingAction = this._createActionByOption(Actions_onDependencyDeleting) } dependencyDeletingAction(args) { const action = this._getDependencyDeletingAction(); action(args) } _getDependencyDeletingAction() { if (!this._dependencyDeletingAction) { this.createDependencyDeletingAction() } return this._dependencyDeletingAction } createResourceDeletingAction() { this._resourceDeletingAction = this._createActionByOption(Actions_onResourceDeleting) } resourceDeletingAction(args) { const action = this._getResourceDeletingAction(); action(args) } _getResourceDeletingAction() { if (!this._resourceDeletingAction) { this.createResourceDeletingAction() } return this._resourceDeletingAction } createResourceUnassigningAction() { this._resourceUnassigningAction = this._createActionByOption(Actions_onResourceUnassigning) } resourceUnassigningAction(args) { const action = this._getResourceUnassigningAction(); action(args) } _getResourceUnassigningAction() { if (!this._resourceUnassigningAction) { this.createResourceUnassigningAction() } return this._resourceUnassigningAction } _getDeletedAction(optionName) { switch (optionName) { case "tasks": return this._getTaskDeletedAction(); case "dependencies": return this._getDependencyDeletedAction(); case "resources": return this._getResourceDeletedAction(); case "resourceAssignments": return this._getResourceUnassignedAction() } return () => {} } raiseDeletedAction(optionName, key, data) { const action = this._getDeletedAction(optionName); if (action) { const args = { key: key, values: data }; action(args) } } createTaskDeletedAction() { this._taskDeletedAction = this._createActionByOption(Actions_onTaskDeleted) } taskDeletedAction(args) { const action = this._getTaskDeletedAction(); action(args) } _getTaskDeletedAction() { if (!this._taskDeletedAction) { this.createTaskDeletedAction() } return this._taskDeletedAction } createDependencyDeletedAction() { this._dependencyDeletedAction = this._createActionByOption(Actions_onDependencyDeleted) } dependencyDeletedAction(args) { const action = this._getDependencyDeletedAction(); action(args) } _getDependencyDeletedAction() { if (!this._dependencyDeletedAction) { this.createDependencyDeletedAction() } return this._dependencyDeletedAction } createResourceDeletedAction() { this._resourceDeletedAction = this._createActionByOption(Actions_onResourceDeleted) } resourceDeletedAction(args) { const action = this._getResourceDeletedAction(); action(args) } _getResourceDeletedAction() { if (!this._resourceDeletedAction) { this.createResourceDeletedAction() } return this._resourceDeletedAction } createResourceUnassignedAction() { this._resourceUnassignedAction = this._createActionByOption(Actions_onResourceUnassigned) } resourceUnassignedAction(args) { const action = this._getResourceUnassignedAction(); action(args) } _getResourceUnassignedAction() { if (!this._resourceUnassignedAction) { this.createResourceUnassignedAction() } return this._resourceUnassignedAction } _getUpdatingAction(optionName) { if ("tasks" === optionName) { return this._getTaskUpdatingAction() } return () => {} } raiseUpdatingAction(optionName, coreArgs, action) { action = action || this._getUpdatingAction(optionName); if (action) { const isTaskUpdating = "tasks" === optionName; const args = { cancel: false, key: coreArgs.key, newValues: this._convertCoreToMappedData(optionName, coreArgs.newValues), values: isTaskUpdating ? this._getTaskData(coreArgs.key) : this._convertCoreToMappedData(optionName, coreArgs.values) }; if (isTaskUpdating && this._customFieldsManager.cache.hasData(args.key)) { this._customFieldsManager.addCustomFieldsDataFromCache(args.key, args.newValues) } action(args); coreArgs.cancel = args.cancel; (0, _extend.extend)(coreArgs.newValues, this._convertMappedToCoreData(optionName, args.newValues)); if (isTaskUpdating) { if (args.cancel) { this._customFieldsManager.resetCustomFieldsDataCache(args.key) } else { const forceUpdateOnKeyExpire = !Object.keys(coreArgs.newValues).length; this._saveCustomFieldsDataToCache(args.key, args.newValues, forceUpdateOnKeyExpire) } } } } createTaskUpdatingAction() { this._taskUpdatingAction = this._createActionByOption(Actions_onTaskUpdating) } taskUpdatingAction(args) { const action = this._getTaskUpdatingAction(); action(args) } _getTaskUpdatingAction() { if (!this._taskUpdatingAction) { this.createTaskUpdatingAction() } return this._taskUpdatingAction } _getUpdatedAction(optionName) { if ("tasks" === optionName) { return this._getTaskUpdatedAction() } return () => {} } raiseUpdatedAction(optionName, data, key) { const action = this._getUpdatedAction(optionName); if (action) { const args = { values: data, key: key }; action(args) } } createTaskUpdatedAction() { this._taskUpdatedAction = this._createActionByOption(Actions_onTaskUpdated) } taskUpdatedAction(args) { const action = this._getTaskUpdatedAction(); action(args) } _getTaskUpdatedAction() { if (!this._taskUpdatedAction) { this.createTaskUpdatedAction() } return this._taskUpdatedAction } createTaskEditDialogShowingAction() { this._taskEditDialogShowingAction = this._createActionByOption(Actions_onTaskEditDialogShowing) } taskEditDialogShowingAction(args) { const action = this._getTaskEditDialogShowingAction(); action(args) } _getTaskEditDialogShowingAction() { if (!this._taskEditDialogShowingAction) { this.createTaskEditDialogShowingAction() } return this._taskEditDialogShowingAction } raiseTaskEditDialogShowingAction(coreArgs) { const action = this._getTaskEditDialogShowingAction(); if (action) { const args = { cancel: false, key: coreArgs.key, values: this._convertCoreToMappedData("tasks", coreArgs.values), readOnlyFields: this._convertCoreToMappedFields("tasks", coreArgs.readOnlyFields), hiddenFields: this._convertCoreToMappedFields("tasks", coreArgs.hiddenFields) }; action(args); coreArgs.cancel = args.cancel; (0, _extend.extend)(coreArgs.values, this._convertMappedToCoreData("tasks", args.values)); coreArgs.readOnlyFields = this._convertMappedToCoreFields("tasks", args.readOnlyFields); coreArgs.hiddenFields = this._convertMappedToCoreFields("tasks", args.hiddenFields) } } createResourceManagerDialogShowingAction() { this._resourceManagerDialogShowingAction = this._createActionByOption(Actions_onResourceManagerDialogShowing) } resourceManagerDialogShowingAction(args) { const action = this._getResourceManagerDialogShowingAction(); action(args) } _getResourceManagerDialogShowingAction() { if (!this._resourceManagerDialogShowingAction) { this.createResourceManagerDialogShowingAction() } return this._resourceManagerDialogShowingAction } raiseResourceManagerDialogShowingAction(coreArgs) { const action = this._getResourceManagerDialogShowingAction(); if (action) { const mappedResources = coreArgs.values.resources.items.map((r => this._convertMappedToCoreData("resources", r))); const args = { cancel: false, values: mappedResources }; action(args); coreArgs.cancel = args.cancel } } createTaskMovingAction() { this._taskMovingAction = this._createActionByOption(Actions_onTaskMoving) } taskMovingAction(args) { const action = this.getTaskMovingAction(); action(args) } getTaskMovingAction() { if (!this._taskMovingAction) { this.createTaskMovingAction() } return this._taskMovingAction } getScaleCellPreparedAction() { if (!this._scaleCellPreparedAction) { this.createScaleCellPreparedAction() } return this._scaleCellPreparedAction } createScaleCellPreparedAction() { this._scaleCellPreparedAction = this._createActionByOption(Actions_onScaleCellPrepared) } raiseScaleCellPreparedAction(data) { const action = this.getScaleCellPreparedAction(); if (action) { const args = { scaleIndex: data.scaleIndex, scaleType: this._getScaleType(data.scaleType), scaleElement: (0, _element.getPublicElement)((0, _renderer.default)(data.scaleElement)), separatorElement: (0, _element.getPublicElement)((0, _renderer.default)(data.separatorElement)), startDate: new Date(data.start), endDate: new Date(data.end) }; action(args) } } _getScaleType(viewType) { switch (viewType) { case 0: return "minutes"; case 1: return "hours"; case 2: return "sixHours"; case 3: return "days"; case 4: return "weeks"; case 5: return "months"; case 6: return "quarters"; case 7: return "years"; case 8: return "fiveYears"; default: return } } } }, 68962: /*!***********************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/ui/gantt/ui.gantt.bars.js ***! \***********************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { exports.GanttToolbar = exports.GanttContextMenuBar = void 0; var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../core/renderer */ 64553)); var _toolbar = _interopRequireDefault(__webpack_require__( /*! ../toolbar */ 2850)); var _context_menu = _interopRequireDefault(__webpack_require__( /*! ../context_menu */ 34378)); var _message = _interopRequireDefault(__webpack_require__( /*! ../../common/core/localization/message */ 4671)); var _extend = __webpack_require__( /*! ../../core/utils/extend */ 52576); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } const COMMANDS_createTask = 0, COMMANDS_createSubTask = 1, COMMANDS_removeTask = 2, COMMANDS_removeDependency = 3, COMMANDS_taskInformation = 4, COMMANDS_taskAddContextItem = 5, COMMANDS_undo = 6, COMMANDS_redo = 7, COMMANDS_zoomIn = 8, COMMANDS_zoomOut = 9, COMMANDS_fullScreen = 10, COMMANDS_collapseAll = 11, COMMANDS_expandAll = 12, COMMANDS_resourceManager = 13, COMMANDS_toggleResources = 14, COMMANDS_toggleDependencies = 15; class Bar { constructor(element, owner) { this._element = element; this._owner = owner; this._items = []; this._createControl() } createItems(items) { this._cache = null; this._items = this._createItemsCore(items); this._menu.option("items", this._items) } _createItemsCore(items) { return items.map((item => { let result; if ("string" === typeof item) { result = this._createItemByText(item) } else { result = item.name ? (0, _extend.extend)(this._createItemByText(item.name), item) : (0, _extend.extend)(this._getDefaultItemOptions(), item) } if (item.items) { result.items = this._createItemsCore(item.items) } return result })) } _createItemByText(text) { switch (text.toLowerCase()) { case "separator": return this._createSeparator(); case "undo": return this._createDefaultItem(COMMANDS_undo, _message.default.format("dxGantt-undo"), this._getIcon("undo")); case "redo": return this._createDefaultItem(COMMANDS_redo, _message.default.format("dxGantt-redo"), this._getIcon("redo")); case "expandall": return this._createDefaultItem(COMMANDS_expandAll, _message.default.format("dxGantt-expandAll"), this._getIcon("expand")); case "collapseall": return this._createDefaultItem(COMMANDS_collapseAll, _message.default.format("dxGantt-collapseAll"), this._getIcon("collapse")); case "addtask": return this._createDefaultItem(COMMANDS_createTask, _message.default.format("dxGantt-addNewTask"), this._getIcon("add")); case "addsubtask": return this._createDefaultItem(COMMANDS_createSubTask, _message.default.format("dxGantt-contextMenuNewSubtask"), this._getIcon("add-sub-task")); case "deletetask": return this._createDefaultItem(COMMANDS_removeTask, _message.default.format("dxGantt-deleteSelectedTask"), this._getIcon("delete")); case "deletedependency": return this._createDefaultItem(COMMANDS_removeDependency, _message.default.format("dxGantt-contextMenuDeleteDependency"), this._getIcon("delete-dependency")); case "zoomin": return this._createDefaultItem(COMMANDS_zoomIn, _message.default.format("dxGantt-zoomIn"), this._getIcon("zoom-in")); case "zoomout": return this._createDefaultItem(COMMANDS_zoomOut, _message.default.format("dxGantt-zoomOut"), this._getIcon("zoom-out")); case "fullscreen": return this._createDefaultItem(COMMANDS_fullScreen, _message.default.format("dxGantt-fullScreen"), this._getIcon("full-screen")); case "taskdetails": return this._createDefaultItem(COMMANDS_taskInformation, _message.default.format("dxGantt-dialogTaskDetailsTitle") + "...", this._getIcon("task-details")); case "resourcemanager": return this._createDefaultItem(COMMANDS_resourceManager, _message.default.format("dxGantt-dialogResourceManagerTitle"), this._getIcon("resource-manager")); case "showresources": return this._createDefaultItem(COMMANDS_toggleResources, _message.default.format("dxGantt-showResources"), this._getIcon("toggle-resources")); case "showdependencies": return this._createDefaultItem(COMMANDS_toggleDependencies, _message.default.format("dxGantt-showDependencies"), this._getIcon("toggle-dependencies")); default: return (0, _extend.extend)(this._getDefaultItemOptions(), { options: { text: text } }) } } _getDefaultItemOptions() { return {} } _getItemsCache() { if (!this._cache) { this._cache = {}; this._fillCache(this._items) } return this._cache } _fillCache(items) { items.forEach((item => { const key = item.commandId; if (void 0 !== key) { if (!this._cache[key]) { this._cache[key] = [] } this._cache[key].push(item) } if (item.items) { this._fillCache(item.items) } })) } _getIcon(name) { return "dx-gantt-i dx-gantt-i-" + name } getCommandKeys() { const itemsCache = this._getItemsCache(); const result = []; for (const itemKey in itemsCache) { result.push(parseInt(itemKey)) } return result } setItemEnabled(key, enabled) { const itemsCache = this._getItemsCache(); itemsCache[key].forEach((item => { item.disabled = !enabled })) } setItemVisible(key, visible) { const itemsCache = this._getItemsCache(); itemsCache[key].forEach((item => { item.visible = visible })) } setItemValue(_key, _value) {} setEnabled(enabled) { this._menu.option("disabled", !enabled) } updateItemsList() {} isVisible() { return true } isContextMenu() { return false } completeUpdate() {} } exports.GanttToolbar = class extends Bar { _createControl() { this._menu = this._owner._createComponent(this._element, _toolbar.default, { onItemClick: e => { const commandId = e.itemData.commandId; if (void 0 !== commandId) { this._owner._executeCoreCommand(commandId) } } }) } _createDefaultItem(commandId, hint, icon) { return { commandId: commandId, disabled: true, widget: "dxButton", location: "before", options: { icon: icon, stylingMode: "text", hint: hint } } } _createSeparator() { return { location: "before", template: (_data, _index, element) => { (0, _renderer.default)(element).addClass("dx-gantt-toolbar-separator") } } } _getDefaultItemOptions() { return { location: "before", widget: "dxButton" } } completeUpdate() { this._menu.option("items", this._items) } }; exports.GanttContextMenuBar = class extends Bar { _createControl() { this._menu = this._owner._createComponent(this._element, _context_menu.default, { showEvent: void 0, onItemClick: e => { if (void 0 !== e.itemData.commandId) { this._owner._executeCoreCommand(e.itemData.commandId) } else if (void 0 !== e.itemData.name) { this._owner._actionsManager.raiseCustomCommand(e.itemData.name) } } }) } createItems(items) { if (!items || 0 === items.length) { items = this._getDefaultItems() } super.createItems(items) } _getDefaultItems() { return [{ text: _message.default.format("dxGantt-dialogButtonAdd"), commandId: COMMANDS_taskAddContextItem, icon: this._getIcon("add"), items: [{ text: _message.default.format("dxGantt-contextMenuNewTask"), commandId: COMMANDS_createTask, icon: this._getIcon("add-task") }, { text: _message.default.format("dxGantt-contextMenuNewSubtask"), commandId: COMMANDS_createSubTask, icon: this._getIcon("add-sub-task") }] }, { text: _message.default.format("dxGantt-dialogTaskDetailsTitle") + "...", commandId: COMMANDS_taskInformation, icon: this._getIcon("task-details") }, { text: _message.default.format("dxGantt-contextMenuDeleteTask"), commandId: COMMANDS_removeTask, icon: this._getIcon("delete") }, { text: _message.default.format("dxGantt-contextMenuDeleteDependency"), commandId: COMMANDS_removeDependency, icon: this._getIcon("delete-dependency") }] } _createDefaultItem(commandId, text, icon) { return { commandId: commandId, text: text, icon: icon } } show(point, items) { this._menu.option("items", items || this._items); this._menu.option("position.offset", { x: point.x, y: point.y }); this._menu.option("position.collision", "fit"); this._menu.show() } hide() { this._menu.hide() } isContextMenu() { return true } } }, 26344: /*!************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/ui/gantt/ui.gantt.cache.js ***! \************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { exports.GanttDataCache = void 0; var _extend = __webpack_require__( /*! ../../core/utils/extend */ 52576); exports.GanttDataCache = class { constructor() { this._cache = {}; this._timers = {} } saveData(key, data, keyExpireCallback) { if (data) { this._clearTimer(key); const storage = this._getCache(key, true); (0, _extend.extendFromObject)(storage, data, true); if (keyExpireCallback) { this._setExpireTimer(key, keyExpireCallback) } } } pullDataFromCache(key, target) { const data = this._getCache(key); if (data) { (0, _extend.extendFromObject)(target, data) } this._onKeyExpired(key) } hasData(key) { return !!this._cache[key] } resetCache(key) { this._onKeyExpired(key) } _getCache(key, forceCreate) { if (!this._cache[key] && forceCreate) { this._cache[key] = {} } return this._cache[key] } _setExpireTimer(key, callback) { this._timers[key] = setTimeout((() => { callback(key, this._getCache(key)); this._onKeyExpired(key) }), 200) } _onKeyExpired(key) { this._clearCache(key); this._clearTimer(key) } _clearCache(key) { delete this._cache[key] } _clearTimer(key) { const timers = this._timers; if (timers && timers[key]) { clearTimeout(timers[key]); delete timers[key] } } } }, 57967: /*!********************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/ui/gantt/ui.gantt.custom_fields.js ***! \********************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { exports.GanttCustomFieldsManager = void 0; var _data = __webpack_require__( /*! ../../core/utils/data */ 31e3); var _uiGantt = __webpack_require__( /*! ./ui.gantt.cache */ 26344); var _uiGantt2 = __webpack_require__( /*! ./ui.gantt.helper */ 34376); exports.GanttCustomFieldsManager = class { constructor(gantt) { this._gantt = gantt; this._mappingHelper = gantt._mappingHelper; this.cache = new _uiGantt.GanttDataCache } _getTaskCustomFields() { const columns = this._gantt.option("columns"); const columnFields = columns && columns.map((c => c.dataField)); const mappedFields = this._mappingHelper.getTaskMappedFieldNames(); return columnFields ? columnFields.filter((f => mappedFields.indexOf(f) < 0)) : [] } _getCustomFieldsData(data) { return this._getTaskCustomFields().reduce(((previous, field) => { if (data && void 0 !== data[field]) { previous[field] = data[field] } return previous }), {}) } addCustomFieldsData(key, data) { if (data) { const modelData = this._gantt._tasksOption && this._gantt._tasksOption._getItems(); const keyGetter = (0, _data.compileGetter)(this._gantt.option("tasks.keyExpr")); const modelItem = modelData && modelData.filter((obj => keyGetter(obj) === key))[0]; const customFields = this._getTaskCustomFields(); if (modelItem) { for (let i = 0; i < customFields.length; i++) { const field = customFields[i]; if (Object.prototype.hasOwnProperty.call(modelItem, field)) { data[field] = modelItem[field] } } } } } appendCustomFields(data) { const modelData = this._gantt._tasksOption && this._gantt._tasksOption._getItems(); const keyGetter = this._gantt._getTaskKeyGetter(); const invertedData = _uiGantt2.GanttHelper.getInvertedData(modelData, keyGetter); return data.reduce(((previous, item) => { const key = keyGetter(item); const modelItem = invertedData[key]; if (!modelItem) { previous.push(item) } else { const updatedItem = {}; for (const field in modelItem) { updatedItem[field] = Object.prototype.hasOwnProperty.call(item, field) ? item[field] : modelItem[field] } previous.push(updatedItem) } return previous }), []) } addCustomFieldsDataFromCache(key, data) { this.cache.pullDataFromCache(key, data) } saveCustomFieldsDataToCache(key, data) { let forceUpdateOnKeyExpire = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : false; let isCustomFieldsUpdateOnly = arguments.length > 3 && void 0 !== arguments[3] ? arguments[3] : false; const customFieldsData = this._getCustomFieldsData(data); if (Object.keys(customFieldsData).length > 0) { const updateCallback = (key, data) => { const dataOption = this._gantt._tasksOption; if (dataOption && data) { dataOption.update(key, data, ((data, key) => { const updatedCustomFields = {}; this.addCustomFieldsData(key, updatedCustomFields); dataOption._reloadDataSource().done((data => { this._gantt._ganttTreeList.updateDataSource(data ?? dataOption._dataSource, false, isCustomFieldsUpdateOnly) })); const selectedRowKey = this._gantt.option("selectedRowKey"); this._gantt._ganttView._selectTask(selectedRowKey); this._gantt._actionsManager.raiseUpdatedAction("tasks", updatedCustomFields, key) })) } }; this.cache.saveData(key, customFieldsData, forceUpdateOnKeyExpire ? updateCallback : null) } } resetCustomFieldsDataCache(key) { this.cache.resetCache(key) } } }, 9121: /*!******************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/ui/gantt/ui.gantt.data.option.js ***! \******************************************************************************/ function(module, exports, __webpack_require__) { exports.default = void 0; var _component = __webpack_require__( /*! ../../core/component */ 17863); var _data = __webpack_require__( /*! ../../common/data */ 11036); class DataOption extends _component.Component { constructor(optionName, getLoadPanel, dataSourceChangedCallback) { super(); this._optionName = optionName; this._getLoadPanel = getLoadPanel; this._dataSourceChangedCallback = dataSourceChangedCallback } insert(data, callback, errorCallback) { this._showLoadPanel(); this._getStore().insert(data).done((response => { if (callback) { callback(response) } this._hideLoadPanel() })).fail((error => { if (errorCallback) { errorCallback(error) } this._hideLoadPanel() })) } update(key, data, callback, errorCallback) { this._showLoadPanel(); this._getStore().update(key, data).done(((data, key) => { if (callback) { callback(data, key) } this._hideLoadPanel() })).fail((error => { if (errorCallback) { errorCallback(error) } this._hideLoadPanel() })) } remove(key, callback, errorCallback) { this._showLoadPanel(); this._getStore().remove(key).done((key => { if (callback) { callback(key) } this._hideLoadPanel() })).fail((error => { if (errorCallback) { errorCallback(error) } this._hideLoadPanel() })) } _dataSourceChangedHandler(newItems, e) { this._dataSourceChangedCallback(this._optionName, newItems) } _dataSourceOptions() { return { paginate: false } } _dataSourceLoadingChangedHandler(isLoading) { if (isLoading && !this._dataSource.isLoaded()) { this._showLoadPanel() } else { this._hideLoadPanel() } } _showLoadPanel() { var _this$_getLoadPanel; null === (_this$_getLoadPanel = this._getLoadPanel()) || void 0 === _this$_getLoadPanel || _this$_getLoadPanel.show() } _hideLoadPanel() { var _this$_getLoadPanel2; null === (_this$_getLoadPanel2 = this._getLoadPanel()) || void 0 === _this$_getLoadPanel2 || _this$_getLoadPanel2.hide() } _getStore() { return this._dataSource.store() } _getItems() { return this._getStore()._array || this._dataSource.items() } _reloadDataSource() { return this._dataSource.load() } dispose() { this._disposeDataSource() } _optionChanged(args) { args.name } } DataOption.include(_data.DataHelperMixin); exports.default = DataOption; module.exports = exports.default; module.exports.default = exports.default }, 15337: /*!*************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/ui/gantt/ui.gantt.data_changes_processing_helper.js ***! \*************************************************************************************************/ function(__unused_webpack_module, exports) { exports.GanttDataChangesProcessingHelper = void 0; exports.GanttDataChangesProcessingHelper = class { constructor() { this._waitingForGanttViewReady = false; this._waitingForTreeListReady = false; this._completionActions = [] } onGanttViewReady() { this._stopWaitForGanttViewReady(); this.executeActionsIfPossible() } onTreeListReady() { this._stopWaitForTreeListReady(); this.executeActionsIfPossible() } addCompletionAction(action, waitGanttViewReady, waitTreeListReady) { if (action) { if (waitGanttViewReady) { this._startWaitForGanttViewReady() } if (waitTreeListReady) { this._startWaitForTreeListReady() } this._completionActions.push(action) } } executeActionsIfPossible() { if (this._canExecuteActions()) { this._completionActions.forEach((act => act())); this._completionActions = [] } } _startWaitForGanttViewReady() { this._waitingForGanttViewReady = true } _stopWaitForGanttViewReady() { this._waitingForGanttViewReady = false } _startWaitForTreeListReady() { this._waitingForTreeListReady = true } _stopWaitForTreeListReady() { this._waitingForTreeListReady = false } _canExecuteActions() { return !(this._waitingForGanttViewReady || this._waitingForTreeListReady) } } }, 51695: /*!**************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/ui/gantt/ui.gantt.dialogs.js ***! \**************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { exports.GanttDialog = void 0; var _ui = _interopRequireDefault(__webpack_require__( /*! ../popup/ui.popup */ 10720)); var _form = _interopRequireDefault(__webpack_require__( /*! ../form */ 74075)); __webpack_require__( /*! ../tag_box */ 4575); __webpack_require__( /*! ../radio_group */ 84798); var _date = _interopRequireDefault(__webpack_require__( /*! ../../common/core/localization/date */ 38662)); var _message = _interopRequireDefault(__webpack_require__( /*! ../../common/core/localization/message */ 4671)); __webpack_require__( /*! ../list_light */ 80070); __webpack_require__( /*! ../../__internal/ui/list/modules/m_deleting */ 14128); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } exports.GanttDialog = class { constructor(owner, $element) { this._popupInstance = owner._createComponent($element, _ui.default); this.infoMap = { TaskEdit: TaskEditDialogInfo, Resources: ResourcesEditDialogInfo, Confirmation: ConfirmDialogInfo, ConstraintViolation: ConstraintViolationDialogInfo } } _apply() { if (this._dialogInfo.isValidated()) { const result = this._dialogInfo.getResult(); this._callback(result); this.hide() } } show(name, parameters, callback, afterClosing, editingOptions) { this._callback = callback; this._afterClosing = afterClosing; if (!this.infoMap[name]) { return } const isRefresh = this._popupInstance._isVisible() && this._dialogInfo && this._dialogInfo instanceof this.infoMap[name]; this._dialogInfo = new this.infoMap[name](parameters, this._apply.bind(this), this.hide.bind(this), editingOptions); this._popupInstance.option({ showTitle: !!this._dialogInfo.getTitle(), title: this._dialogInfo.getTitle(), toolbarItems: this._dialogInfo.getToolbarItems(), maxWidth: this._dialogInfo.getMaxWidth(), height: this._dialogInfo.getHeight(), contentTemplate: this._dialogInfo.getContentTemplate() }); if (this._afterClosing) { this._popupInstance.option("onHidden", this._afterClosing) } if (!isRefresh) { this._popupInstance.show() } } hide() { this._popupInstance.hide(); if (this._afterClosing) { this._afterClosing() } } }; class DialogInfoBase { constructor(parameters, applyAction, hideAction, editingOptions) { this._parameters = parameters; this._applyAction = applyAction; this._hideAction = hideAction; this._editingOptions = editingOptions } _getFormItems() { return {} } _getFormCssClass() { return "" } _getFormData() { return this._parameters } _updateParameters() {} _getOkToolbarItem() { return this._getToolbarItem("OK", this._applyAction) } _getCancelToolbarItem() { return this._getToolbarItem("Cancel", this._hideAction) } _getYesToolbarItem() { return this._getToolbarItem("Yes", this._applyAction) } _getNoToolbarItem() { return this._getToolbarItem("No", this._hideAction) } _getToolbarItem(localizationText, action) { return { widget: "dxButton", toolbar: "bottom", options: { text: _message.default.format(localizationText), onClick: action } } } getTitle() { return "" } getToolbarItems() { return this._editingOptions.enabled ? [this._getOkToolbarItem(), this._getCancelToolbarItem()] : [this._getCancelToolbarItem()] } getMaxWidth() { return 400 } getHeight() { return "auto" } getContentTemplate() { return content => { this._form = new _form.default(content, { formData: this._getFormData(), items: this._getFormItems(), elementAttr: { class: this._getFormCssClass() }, rtlEnabled: false }); return content } } getResult() { const formData = this.getFormData(); this._updateParameters(formData); return this._parameters } getFormData() { const formData = this._form && this._form.option("formData"); return formData } isValidated() { return true } } class TaskEditDialogInfo extends DialogInfoBase { getTitle() { return _message.default.format("dxGantt-dialogTaskDetailsTitle") } _getFormItems() { const readOnly = !this._editingOptions.enabled || !this._editingOptions.allowTaskUpdating; const readOnlyRange = readOnly || !this._parameters.enableRangeEdit; return [{ dataField: "title", editorType: "dxTextBox", label: { text: _message.default.format("dxGantt-dialogTitle") }, editorOptions: { readOnly: readOnly || this._isReadOnlyField("title") }, visible: !this._isHiddenField("title") }, { dataField: "start", editorType: "dxDateBox", label: { text: _message.default.format("dxGantt-dialogStartTitle") }, editorOptions: { type: "datetime", width: "100%", readOnly: readOnlyRange || this._isReadOnlyField("start") }, visible: !this._isHiddenField("start"), validationRules: [{ type: "required", message: _message.default.format("validation-required-formatted", _message.default.format("dxGantt-dialogStartTitle")) }, { type: "custom", validationCallback: e => { if (this._parameters.isValidationRequired) { const correctDateRange = this._parameters.getCorrectDateRange(this._parameters.id, e.value, this._parameters.end); if (correctDateRange.start.getTime() !== e.value.getTime()) { e.rule.message = this._getValidationMessage(true, correctDateRange.start); return false } } return true } }] }, { dataField: "end", editorType: "dxDateBox", label: { text: _message.default.format("dxGantt-dialogEndTitle") }, editorOptions: { type: "datetime", width: "100%", readOnly: readOnlyRange || this._isReadOnlyField("end") }, visible: !this._isHiddenField("end"), validationRules: [{ type: "required", message: _message.default.format("validation-required-formatted", _message.default.format("dxGantt-dialogEndTitle")) }, { type: "custom", validationCallback: e => { if (this._parameters.isValidationRequired) { const correctDateRange = this._parameters.getCorrectDateRange(this._parameters.id, this._parameters.start, e.value); if (correctDateRange.end.getTime() !== e.value.getTime()) { e.rule.message = this._getValidationMessage(false, correctDateRange.end); return false } } return true } }] }, { dataField: "progress", editorType: "dxNumberBox", label: { text: _message.default.format("dxGantt-dialogProgressTitle") }, editorOptions: { showSpinButtons: true, min: 0, max: 1, format: "#0%", step: .01, readOnly: readOnlyRange || this._isReadOnlyField("progress") }, visible: !this._isHiddenField("progress") }, { dataField: "assigned.items", editorType: "dxTagBox", label: { text: _message.default.format("dxGantt-dialogResourcesTitle") }, editorOptions: { readOnly: readOnly || !this._editingOptions.allowTaskResourceUpdating, dataSource: this._parameters.resources.items, displayExpr: "text", buttons: [{ name: "editResources", location: "after", options: { disabled: !this._editingOptions.allowResourceAdding && !this._editingOptions.allowResourceDeleting, text: "...", hint: _message.default.format("dxGantt-dialogEditResourceListHint"), onClick: () => { this._parameters.showResourcesDialogCommand.execute((() => { this._parameters.showTaskEditDialogCommand.execute() })) } } }] } }] } _getValidationMessage(isStartDependencies, correctDate) { if (isStartDependencies) { return _message.default.format("dxGantt-dialogStartDateValidation", this._getFormattedDateText(correctDate)) } return _message.default.format("dxGantt-dialogEndDateValidation", this._getFormattedDateText(correctDate)) } _getFormattedDateText(date) { return date ? _date.default.format(date, "shortDateShortTime") : "" } _isReadOnlyField(field) { return this._parameters.readOnlyFields.indexOf(field) > -1 } _isHiddenField(field) { return this._parameters.hiddenFields.indexOf(field) > -1 } _getFormData() { const data = {}; for (const field in this._parameters) { data[field] = "progress" === field ? this._parameters[field] / 100 : this._parameters[field] } return data } _updateParameters(formData) { this._parameters.title = formData.title; this._parameters.start = formData.start; this._parameters.end = formData.end; this._parameters.progress = 100 * formData.progress; this._parameters.assigned = formData.assigned } isValidated() { var _this$_form; const validationResult = null === (_this$_form = this._form) || void 0 === _this$_form ? void 0 : _this$_form.validate(); return null === validationResult || void 0 === validationResult ? void 0 : validationResult.isValid } } class ResourcesEditDialogInfo extends DialogInfoBase { getTitle() { return _message.default.format("dxGantt-dialogResourceManagerTitle") } _getFormItems() { return [{ label: { visible: false }, dataField: "resources.items", editorType: "dxList", editorOptions: { allowItemDeleting: this._editingOptions.enabled && this._editingOptions.allowResourceDeleting, itemDeleteMode: "static", selectionMode: "none", items: this._parameters.resources.items, height: 250, noDataText: _message.default.format("dxGantt-dialogEditNoResources"), onInitialized: e => { this.list = e.component }, onItemDeleted: e => { this._parameters.resources.remove(e.itemData) } } }, { label: { visible: false }, editorType: "dxTextBox", editorOptions: { readOnly: !this._editingOptions.enabled || !this._editingOptions.allowResourceAdding, onInitialized: e => { this.textBox = e.component }, onInput: e => { const addButton = e.component.getButton("addResource"); const resourceName = e.component.option("text"); addButton.option("disabled", 0 === resourceName.length) }, buttons: [{ name: "addResource", location: "after", options: { text: _message.default.format("dxGantt-dialogButtonAdd"), disabled: true, onClick: e => { const newItem = this._parameters.resources.createItem(); newItem.text = this.textBox.option("text"); this._parameters.resources.add(newItem); this.list.option("items", this._parameters.resources.items); this.list.scrollToItem(newItem); this.textBox.clear(); e.component.option("disabled", true) } } }] } }] } } class ConfirmDialogInfo extends DialogInfoBase { getContentTemplate() { return content => this._getConfirmMessage() } _getConfirmMessage() { switch (this._parameters.type) { case 0: return _message.default.format("dxGantt-dialogTaskDeleteConfirmation"); case 1: return _message.default.format("dxGantt-dialogDependencyDeleteConfirmation"); case 2: return _message.default.format("dxGantt-dialogResourcesDeleteConfirmation", this._parameters.message); default: return "" } } getToolbarItems() { return [this._getYesToolbarItem(), this._getNoToolbarItem()] } } class ConstraintViolationDialogInfo extends DialogInfoBase { _getFormItems() { const hasCriticalErrors = this._parameters.hasCriticalErrors; const severalErrors = this._parameters.errorsCount > 1; const items = []; const deleteMessage = severalErrors ? "dxGantt-dialogDeleteDependenciesMessage" : "dxGantt-dialogDeleteDependencyMessage"; const moveMessage = severalErrors ? "dxGantt-dialogMoveTaskAndKeepDependenciesMessage" : "dxGantt-dialogMoveTaskAndKeepDependencyMessage"; let titleMessage; if (hasCriticalErrors) { titleMessage = severalErrors ? "dxGantt-dialogConstraintCriticalViolationSeveralTasksMessage" : "dxGantt-dialogConstraintCriticalViolationMessage" } else { titleMessage = severalErrors ? "dxGantt-dialogConstraintViolationSeveralTasksMessage" : "dxGantt-dialogConstraintViolationMessage" } items.push({ text: _message.default.format("dxGantt-dialogCancelOperationMessage"), value: 0 }); items.push({ text: _message.default.format(deleteMessage), value: 1 }); if (!hasCriticalErrors) { items.push({ text: _message.default.format(moveMessage), value: 2 }) } return [{ template: _message.default.format(titleMessage) }, { cssClass: "dx-cv-dialog-row", dataField: "option", label: { visible: false }, editorType: "dxRadioGroup", editorOptions: { items: items, valueExpr: "value", value: 0 } }] } _getFormCssClass() { return "dx-cv-dialog" } _updateParameters(formData) { this._parameters.option = formData.option } } }, 51237: /*!********************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/ui/gantt/ui.gantt.export_helper.js ***! \********************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { exports.GanttExportHelper = void 0; var _window = __webpack_require__( /*! ../../core/utils/window */ 3104); var _m_utils = _interopRequireDefault(__webpack_require__( /*! ../../__internal/grids/grid_core/m_utils */ 53226)); var _type = __webpack_require__( /*! ../../core/utils/type */ 11528); var _date = _interopRequireDefault(__webpack_require__( /*! ../../common/core/localization/date */ 38662)); var _number = _interopRequireDefault(__webpack_require__( /*! ../../common/core/localization/number */ 52771)); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } const window = (0, _window.getWindow)(); exports.GanttExportHelper = class { constructor(gantt) { this._gantt = gantt; this._treeList = gantt._treeList; this._cache = {} } reset() { this._cache = {} } getTreeListTableStyle() { const table = this._getTreeListTable(); const style = window.getComputedStyle(table); return { color: style.color, backgroundColor: style.backgroundColor, fontSize: style.fontSize, fontFamily: style.fontFamily, fontWeight: style.fontWeight, fontStyle: style.fontStyle, textAlign: "left", verticalAlign: "middle" } } getTreeListColCount() { const headerView = this._getHeaderView(); const widths = headerView.getColumnWidths().filter((w => w > 0)); return widths.length } getTreeListHeaderInfo(colIndex) { const element = this._getHeaderElement(colIndex); if (!element) { return null } const style = window.getComputedStyle(element); const styleForExport = { color: style.color, padding: style.padding, paddingLeft: style.paddingLeft, paddingTop: style.paddingTop, paddingRight: style.paddingRight, paddingBottom: style.paddingBottom, verticalAlign: style.verticalAlign, width: this._getColumnWidth(colIndex) }; return { content: element.textContent, styles: styleForExport } } getTreeListCellInfo(key, colIndex) { const node = this._treeList.getNodeByKey(key); const visibleRowIndex = this._treeList.getRowIndexByKey(key); const cell = visibleRowIndex > -1 ? this._getDataCell(visibleRowIndex, colIndex) : null; const style = cell ? window.getComputedStyle(cell) : this._getColumnCellStyle(colIndex); const styleForExport = { color: style.color, padding: style.padding, paddingLeft: style.paddingLeft, paddingTop: style.paddingTop, paddingRight: style.paddingRight, paddingBottom: style.paddingBottom, width: this._getColumnWidth(colIndex) }; if (0 === colIndex) { styleForExport.extraLeftPadding = this._getEmptySpaceWidth(node.level) } return { content: (null === cell || void 0 === cell ? void 0 : cell.textContent) ?? this._getDisplayText(key, colIndex), styles: styleForExport } } getTreeListEmptyDataCellInfo() { return { content: this._treeList.option("noDataText") } } _ensureColumnWidthCache(colIndex) { var _this$_cache; (_this$_cache = this._cache)["columnWidths"] ?? (_this$_cache.columnWidths = {}); if (!this._cache.columnWidths[colIndex]) { const header = this._getHeaderElement(colIndex); this._cache.columnWidths[colIndex] = (null === header || void 0 === header ? void 0 : header.clientWidth) ?? 0 } } _getColumnWidth(colIndex) { this._ensureColumnWidthCache(colIndex); const widths = this._cache.columnWidths; return widths && widths[colIndex] } _getEmptySpaceWidth(level) { if (!this._cache.emptyWidth) { var _this$_cache2; const element = this._getTreeListElement("dx-treelist-empty-space"); (_this$_cache2 = this._cache)["emptyWidth"] ?? (_this$_cache2.emptyWidth = element.offsetWidth ?? 0) } return this._cache.emptyWidth * (level + 1) } _getColumnCellStyle(colIndex) { this._ensureColumnCellStyleCache(colIndex); return this._cache.columnStyles[colIndex] } _ensureColumnCellStyleCache(colIndex) { var _this$_cache3; (_this$_cache3 = this._cache)["columnStyles"] ?? (_this$_cache3.columnStyles = {}); if (!this._cache.columnStyles[colIndex]) { const cell = this._getDataCell(0, colIndex); this._cache.columnStyles[colIndex] = window.getComputedStyle(cell) } } _getTask(key) { this._ensureTaskCache(key); return this._cache.tasks[key] } _ensureTaskCache(key) { var _this$_cache4, _this$_cache$tasks; (_this$_cache4 = this._cache)["tasks"] ?? (_this$_cache4.tasks = {}); (_this$_cache$tasks = this._cache.tasks)[key] ?? (_this$_cache$tasks[key] = this._gantt._findTaskByKey(key)) } _getTreeListTable() { return this._getTreeListElement("dx-treelist-table") } _getTreeListElement(className) { return this._treeList._$element.find("." + className).get(0) } _getDataCell(rowIndex, colIndex) { const treeList = this._treeList; const cellElement = treeList.getCellElement(rowIndex, colIndex); return cellElement && cellElement.length ? cellElement[0] : cellElement } _getHeaderElement(index) { return this._getHeaderView().getHeaderElement(index).get(0) } _getHeaderView() { return this._treeList._views.columnHeadersView } _getDisplayText(key, colIndex) { const task = this._getTask(key); return task && this._getGridDisplayText(colIndex, task) } _getGridDisplayText(colIndex, data) { const columns = this._treeList.getController("columns").getColumns(); const column = columns[colIndex]; const field = null === column || void 0 === column ? void 0 : column.dataField; const format = null === column || void 0 === column ? void 0 : column.format; const value = _m_utils.default.getDisplayValue(column, data[field], data, "data"); if ((0, _type.isDefined)(format)) { if ("date" === (null === column || void 0 === column ? void 0 : column.dataType) || "datetime" === (null === column || void 0 === column ? void 0 : column.dataType)) { const date = (0, _type.isDate)(value) ? value : new Date(value); return _date.default.format(date, format) } if ((0, _type.isNumeric)(value)) { return _number.default.format(value, format) } } return "string" === typeof value ? value : null === value || void 0 === value ? void 0 : value.toString() } } }, 34376: /*!*************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/ui/gantt/ui.gantt.helper.js ***! \*************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { exports.GanttHelper = void 0; var _data = __webpack_require__( /*! ../../core/utils/data */ 31e3); var _type = __webpack_require__( /*! ../../core/utils/type */ 11528); var _message = (e = __webpack_require__( /*! ../../common/core/localization/message */ 4671), e && e.__esModule ? e : { default: e }); var e; const GanttHelper = exports.GanttHelper = { prepareMapHandler: getters => data => Object.keys(getters).reduce(((previous, key) => { const resultKey = "key" === key ? "id" : key; previous[resultKey] = getters[key](data); return previous }), {}), prepareSetterMapHandler: setters => data => Object.keys(setters).reduce(((previous, key) => { const resultKey = "key" === key ? "id" : key; setters[key](previous, data[resultKey]); return previous }), {}), compileGettersByOption(optionValue) { const getters = {}; for (const field in optionValue) { const exprMatches = field.match(/(\w*)Expr/); if (exprMatches) { getters[exprMatches[1]] = (0, _data.compileGetter)(optionValue[exprMatches[0]]) } } return getters }, compileSettersByOption(optionValue) { const setters = {}; for (const field in optionValue) { const exprMatches = field.match(/(\w*)Expr/); if (exprMatches && !(0, _type.isFunction)(optionValue[exprMatches[0]])) { setters[exprMatches[1]] = (0, _data.compileSetter)(optionValue[exprMatches[0]]) } } return setters }, compileFuncSettersByOption(optionValue) { const setters = {}; for (const field in optionValue) { const exprMatches = field.match(/(\w*)Expr/); if (exprMatches && (0, _type.isFunction)(optionValue[exprMatches[0]])) { setters[exprMatches[1]] = optionValue[exprMatches[0]] } } return setters }, getStoreObject(option, modelObject) { const setters = GanttHelper.compileSettersByOption(option); return Object.keys(setters).reduce(((previous, key) => { if ("key" !== key) { setters[key](previous, modelObject[key]) } return previous }), {}) }, getInvertedData(data, keyGetter) { const inverted = {}; if (data) { for (let i = 0; i < data.length; i++) { const dataItem = data[i]; const key = keyGetter(dataItem); inverted[key] = dataItem } } return inverted }, getArrayFromOneElement: element => void 0 === element || null === element ? [] : [element], getSelectionMode: allowSelection => allowSelection ? "single" : "none", convertTreeToList(node, array) { if (null !== node && void 0 !== node && node.data && null !== node && void 0 !== node && node.visible) { array.push(node.data) } for (let i = 0; i < (null === (_node$children = node.children) || void 0 === _node$children ? void 0 : _node$children.length); i++) { var _node$children; const child = node.children[i]; GanttHelper.convertTreeToList(child, array) } }, getAllParentNodesKeys(node, array) { var _node$parent; if (null !== node && void 0 !== node && node.data) { array.push(node.key) } if (null !== node && void 0 !== node && null !== (_node$parent = node.parent) && void 0 !== _node$parent && _node$parent.data) { GanttHelper.getAllParentNodesKeys(node.parent, array) } }, getDefaultOptions: () => ({ tasks: { dataSource: null, keyExpr: "id", parentIdExpr: "parentId", startExpr: "start", endExpr: "end", progressExpr: "progress", titleExpr: "title", colorExpr: "color" }, dependencies: { dataSource: null, keyExpr: "id", predecessorIdExpr: "predecessorId", successorIdExpr: "successorId", typeExpr: "type" }, resources: { dataSource: null, keyExpr: "id", textExpr: "text", colorExpr: "color" }, resourceAssignments: { dataSource: null, keyExpr: "id", taskIdExpr: "taskId", resourceIdExpr: "resourceId" }, columns: void 0, taskListWidth: 300, showResources: true, showDependencies: true, taskTitlePosition: "inside", firstDayOfWeek: void 0, selectedRowKey: void 0, onSelectionChanged: null, onTaskClick: null, onTaskDblClick: null, onTaskInserting: null, onTaskInserted: null, onTaskDeleting: null, onTaskDeleted: null, onTaskUpdating: null, onTaskUpdated: null, onTaskMoving: null, onTaskEditDialogShowing: null, onDependencyInserting: null, onDependencyInserted: null, onDependencyDeleting: null, onDependencyDeleted: null, onResourceInserting: null, onResourceInserted: null, onResourceDeleting: null, onResourceDeleted: null, onResourceAssigning: null, onResourceAssigned: null, onResourceUnassigning: null, onResourceUnassigned: null, onCustomCommand: null, onContextMenuPreparing: null, allowSelection: true, showRowLines: true, stripLines: void 0, scaleType: "auto", scaleTypeRange: { min: "minutes", max: "years" }, editing: { enabled: false, allowTaskAdding: true, allowTaskDeleting: true, allowTaskUpdating: true, allowDependencyAdding: true, allowDependencyDeleting: true, allowResourceAdding: true, allowResourceDeleting: true, allowResourceUpdating: true, allowTaskResourceUpdating: true }, validation: { validateDependencies: false, autoUpdateParentTasks: false, enablePredecessorGap: false }, toolbar: null, contextMenu: { enabled: true, items: void 0 }, taskTooltipContentTemplate: null, taskProgressTooltipContentTemplate: null, taskTimeTooltipContentTemplate: null, taskContentTemplate: null, rootValue: 0, sorting: { ascendingText: _message.default.format("dxGantt-sortingAscendingText"), descendingText: _message.default.format("dxGantt-sortingDescendingText"), clearText: _message.default.format("dxGantt-sortingClearText"), mode: "single", showSortIndexes: false }, filterRow: void 0, headerFilter: void 0, rtlEnabled: false }) } }, 9264: /*!******************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/ui/gantt/ui.gantt.js ***! \******************************************************************/ function(module, exports, __webpack_require__) { exports.default = void 0; var _size = __webpack_require__( /*! ../../core/utils/size */ 57653); var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../core/renderer */ 64553)); var _data = __webpack_require__( /*! ../../core/utils/data */ 31e3); var _extend = __webpack_require__( /*! ../../core/utils/extend */ 52576); var _window = __webpack_require__( /*! ../../core/utils/window */ 3104); var _type = __webpack_require__( /*! ../../core/utils/type */ 11528); var _uiGantt = __webpack_require__( /*! ./ui.gantt.model_changes_listener */ 70136); var _uiGanttData = _interopRequireDefault(__webpack_require__( /*! ./ui.gantt.data.option */ 9121)); var _load_panel = _interopRequireDefault(__webpack_require__( /*! ../load_panel */ 31876)); var _component_registrator = _interopRequireDefault(__webpack_require__( /*! ../../core/component_registrator */ 92848)); var _splitter_control = _interopRequireDefault(__webpack_require__( /*! ../splitter_control */ 47744)); var _ui = _interopRequireDefault(__webpack_require__( /*! ../widget/ui.widget */ 11118)); var _uiGantt2 = __webpack_require__( /*! ./ui.gantt.actions */ 28997); var _uiGantt3 = __webpack_require__( /*! ./ui.gantt.custom_fields */ 57967); var _uiGantt4 = __webpack_require__( /*! ./ui.gantt.dialogs */ 51695); var _uiGantt5 = __webpack_require__( /*! ./ui.gantt.export_helper */ 51237); var _uiGantt6 = __webpack_require__( /*! ./ui.gantt.helper */ 34376); var _uiGantt7 = __webpack_require__( /*! ./ui.gantt.mapping_helper */ 86235); var _uiGantt8 = __webpack_require__( /*! ./ui.gantt.size_helper */ 3116); var _uiGantt9 = __webpack_require__( /*! ./ui.gantt.templates */ 41141); var _uiGantt10 = __webpack_require__( /*! ./ui.gantt.bars */ 68962); var _uiGantt11 = __webpack_require__( /*! ./ui.gantt.treelist */ 95736); var _uiGantt12 = __webpack_require__( /*! ./ui.gantt.view */ 79669); var _uiGantt13 = __webpack_require__( /*! ./ui.gantt.data_changes_processing_helper */ 15337); var _m_utils = _interopRequireDefault(__webpack_require__( /*! ../../__internal/grids/grid_core/m_utils */ 53226)); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } const window = (0, _window.getWindow)(); class Gantt extends _ui.default { _init() { super._init(); _m_utils.default.logHeaderFilterDeprecatedWarningIfNeed(this); this._initGantt(); this._isGanttRendered = false; this._initHelpers() } _initGantt() { this._refreshDataSources() } _initMarkup() { super._initMarkup(); this.$element().addClass("dx-gantt"); this._$toolbarWrapper = (0, _renderer.default)("<div>").addClass("dx-gantt-toolbar-wrapper").appendTo(this.$element()); this._$toolbar = (0, _renderer.default)("<div>").appendTo(this._$toolbarWrapper); this._$mainWrapper = (0, _renderer.default)("<div>").addClass("dx-gantt-main-wrapper").appendTo(this.$element()); this._$treeListWrapper = (0, _renderer.default)("<div>").addClass("dx-gantt-treelist-wrapper").appendTo(this._$mainWrapper); this._$treeList = (0, _renderer.default)("<div>").appendTo(this._$treeListWrapper); this._$splitter = (0, _renderer.default)("<div>").appendTo(this._$mainWrapper); this._$ganttView = (0, _renderer.default)("<div>").addClass("dx-gantt-view").appendTo(this._$mainWrapper); this._$dialog = (0, _renderer.default)("<div>").appendTo(this.$element()); this._$loadPanel = (0, _renderer.default)("<div>").appendTo(this.$element()); this._$contextMenu = (0, _renderer.default)("<div>").appendTo(this.$element()) } _clean() { var _this$_ganttView, _this$_ganttView2; this._savedGanttViewState = null === (_this$_ganttView = this._ganttView) || void 0 === _this$_ganttView ? void 0 : _this$_ganttView.getVisualStateToRestore(); null === (_this$_ganttView2 = this._ganttView) || void 0 === _this$_ganttView2 || _this$_ganttView2._ganttViewCore.cleanMarkup(); delete this._ganttView; delete this._dialogInstance; delete this._loadPanel; delete this._exportHelper; super._clean() } _refresh() { this._isGanttRendered = false; this._contentReadyRaised = false; super._refresh() } _fireContentReadyAction() { if (!this._contentReadyRaised) { super._fireContentReadyAction() } this._contentReadyRaised = true } _dimensionChanged() { var _this$_ganttView3; null === (_this$_ganttView3 = this._ganttView) || void 0 === _this$_ganttView3 || _this$_ganttView3._onDimensionChanged() } _visibilityChanged(visible) { if (visible) { this._refreshGantt() } } _refreshGantt() { this._refreshDataSources(); setTimeout((() => this._refresh())) } _refreshDataSources() { this._refreshDataSource("tasks"); this._refreshDataSource("dependencies"); this._refreshDataSource("resources"); this._refreshDataSource("resourceAssignments") } _renderContent() { this._isMainElementVisible = this.$element().is(":visible"); if (this._isMainElementVisible && !this._isGanttRendered) { this._isGanttRendered = true; this._renderBars(); this._renderTreeList(); this._renderSplitter() } } _renderTreeList() { this._ganttTreeList = new _uiGantt11.GanttTreeList(this); this._treeList = this._ganttTreeList.getTreeList(); this._ganttTreeList.onAfterTreeListCreate() } _renderSplitter() { this._splitter = this._createComponent(this._$splitter, _splitter_control.default, { container: this.$element(), leftElement: this._$treeListWrapper, rightElement: this._$ganttView, onApplyPanelSize: e => { this._sizeHelper.onApplyPanelSize(e) } }); this._splitter.option("initialLeftPanelWidth", this.option("taskListWidth")) } _renderBars() { this._bars = []; this._toolbar = new _uiGantt10.GanttToolbar(this._$toolbar, this); this._updateToolbarContent(); this._bars.push(this._toolbar); this._contextMenuBar = new _uiGantt10.GanttContextMenuBar(this._$contextMenu, this); this._updateContextMenu(); this._bars.push(this._contextMenuBar) } _initHelpers() { this._mappingHelper = new _uiGantt7.GanttMappingHelper(this); this._customFieldsManager = new _uiGantt3.GanttCustomFieldsManager(this); this._actionsManager = new _uiGantt2.GanttActionsManager(this); this._ganttTemplatesManager = new _uiGantt9.GanttTemplatesManager(this); this._sizeHelper = new _uiGantt8.GanttSizeHelper(this); this._dataProcessingHelper = new _uiGantt13.GanttDataChangesProcessingHelper } _initGanttView() { if (this._ganttView) { return } this._ganttView = this._createComponent(this._$ganttView, _uiGantt12.GanttView, { width: "100%", height: this._ganttTreeList.getOffsetHeight(), rowHeight: this._ganttTreeList.getRowHeight(), headerHeight: this._ganttTreeList.getHeaderHeight(), tasks: this._tasks, dependencies: this._dependencies, resources: this._resources, resourceAssignments: this._resourceAssignments, allowSelection: this.option("allowSelection"), selectedRowKey: this.option("selectedRowKey"), showResources: this.option("showResources"), showDependencies: this.option("showDependencies"), startDateRange: this.option("startDateRange"), endDateRange: this.option("endDateRange"), taskTitlePosition: this.option("taskTitlePosition"), firstDayOfWeek: this.option("firstDayOfWeek"), showRowLines: this.option("showRowLines"), scaleType: this.option("scaleType"), scaleTypeRange: this.option("scaleTypeRange"), editing: this.option("editing"), validation: this.option("validation"), stripLines: this.option("stripLines"), bars: this._bars, mainElement: this.$element(), onSelectionChanged: e => { this._ganttTreeList.selectRows(_uiGantt6.GanttHelper.getArrayFromOneElement(e.id)) }, onViewTypeChanged: e => { this._onViewTypeChanged(e.type) }, onScroll: e => { this._ganttTreeList.scrollBy(e.scrollTop) }, onDialogShowing: this._showDialog.bind(this), onPopupMenuShowing: this._showPopupMenu.bind(this), onPopupMenuHiding: this._hidePopupMenu.bind(this), onExpandAll: this._expandAll.bind(this), onCollapseAll: this._collapseAll.bind(this), modelChangesListener: _uiGantt.ModelChangesListener.create(this), exportHelper: this._getExportHelper(), taskTooltipContentTemplate: this._ganttTemplatesManager.getTaskTooltipContentTemplateFunc(this.option("taskTooltipContentTemplate")), taskProgressTooltipContentTemplate: this._ganttTemplatesManager.getTaskProgressTooltipContentTemplateFunc(this.option("taskProgressTooltipContentTemplate")), taskTimeTooltipContentTemplate: this._ganttTemplatesManager.getTaskTimeTooltipContentTemplateFunc(this.option("taskTimeTooltipContentTemplate")), taskContentTemplate: this._ganttTemplatesManager.getTaskContentTemplateFunc(this.option("taskContentTemplate")), onTaskClick: e => { this._ganttTreeList.onRowClick(e) }, onTaskDblClick: e => { this._ganttTreeList.onRowDblClick(e) }, onAdjustControl: () => { this._sizeHelper.onAdjustControl() }, onContentReady: this._onGanttViewContentReady.bind(this), visualState: this._savedGanttViewState }); delete this._savedGanttViewState } _onGanttViewContentReady(e) { if (!this._isParentAutoUpdateMode()) { this._fireContentReadyAction() } } _isParentAutoUpdateMode() { return this.option("validation.autoUpdateParentTasks") } _onTreeListContentReady(e) { if (this._isParentAutoUpdateMode() && this._treeListParentRecalculatedDataUpdating) { this._fireContentReadyAction() } delete this._treeListParentRecalculatedDataUpdating; this._dataProcessingHelper.onTreeListReady() } _onViewTypeChanged(type) { this.option("scaleType", this._actionsManager._getScaleType(type)) } _refreshDataSource(name) { let dataOption = this[`_${name}Option`]; if (dataOption) { dataOption.dispose(); delete this[`_${name}Option`]; delete this[`_${name}`] } dataOption = new _uiGanttData.default(name, this._getLoadPanel.bind(this), ((name, data) => { this._dataSourceChanged(name, data) })); dataOption.option("dataSource", this._getSpecificDataSourceOption(name)); dataOption._refreshDataSource(); this[`_${name}Option`] = dataOption } _getSpecificDataSourceOption(name) { const dataSource = this.option(`${name}.dataSource`); if (!dataSource || Array.isArray(dataSource)) { return { store: { type: "array", data: dataSource ?? [], key: this.option(`${name}.keyExpr`) } } } return dataSource } _dataSourceChanged(dataSourceName, data) { const getters = _uiGantt6.GanttHelper.compileGettersByOption(this.option(dataSourceName)); const validatedData = this._validateSourceData(dataSourceName, data); const mappedData = validatedData.map(_uiGantt6.GanttHelper.prepareMapHandler(getters)); this[`_${dataSourceName}`] = mappedData; this._setGanttViewOption(dataSourceName, mappedData); if ("tasks" === dataSourceName) { var _this$_ganttTreeList, _this$_ganttTreeList2, _this$_ganttTreeList3; this._tasksRaw = validatedData; const forceUpdate = !(null !== (_this$_ganttTreeList = this._ganttTreeList) && void 0 !== _this$_ganttTreeList && _this$_ganttTreeList.getDataSource()) && !this._ganttView; null === (_this$_ganttTreeList2 = this._ganttTreeList) || void 0 === _this$_ganttTreeList2 || _this$_ganttTreeList2.saveExpandedKeys(); null === (_this$_ganttTreeList3 = this._ganttTreeList) || void 0 === _this$_ganttTreeList3 || _this$_ganttTreeList3.updateDataSource(validatedData, forceUpdate) } } _validateSourceData(dataSourceName, data) { return data && "tasks" === dataSourceName ? this._validateTaskData(data) : data } _validateTaskData(data) { const keyGetter = (0, _data.compileGetter)(this.option("tasks.keyExpr")); const parentIdGetter = (0, _data.compileGetter)(this.option("tasks.parentIdExpr")); const rootValue = this.option("rootValue") ?? "dx_dxt_gantt_default_root_value"; const validationTree = {}; for (let i = 0; i < data.length; i++) { const item = data[i]; if (item) { const key = keyGetter(item); const isRootTask = key === rootValue; const treeItem = validationTree[key] ?? (validationTree[key] = { key: key, children: [] }); if (!isRootTask) { const parentId = parentIdGetter(item) ?? rootValue; const parentTreeItem = validationTree[parentId] ?? (validationTree[parentId] = { key: parentId, children: [] }); parentTreeItem.children.push(treeItem); treeItem.parent = parentTreeItem } } } const validKeys = [rootValue]; this._appendChildKeys(validationTree[rootValue], validKeys); return data.filter((item => validKeys.indexOf(keyGetter(item)) > -1)) } _appendChildKeys(treeItem, keys) { const children = null === treeItem || void 0 === treeItem ? void 0 : treeItem.children; for (let i = 0; i < (null === children || void 0 === children ? void 0 : children.length); i++) { const child = children[i]; keys.push(child.key); this._appendChildKeys(child, keys) } } _onRecordInserted(optionName, record, callback) { const dataOption = this[`_${optionName}Option`]; if (dataOption) { const data = _uiGantt6.GanttHelper.getStoreObject(this.option(optionName), record); const isTaskInsert = "tasks" === optionName; if (isTaskInsert) { this._customFieldsManager.addCustomFieldsDataFromCache("gantt_new_task_key", data) } dataOption.insert(data, (response => { const keyGetter = (0, _data.compileGetter)(this.option(`${optionName}.keyExpr`)); const insertedId = keyGetter(response); callback(insertedId); this._executeFuncSetters(optionName, record, insertedId); this._dataProcessingHelper.addCompletionAction((() => { this._actionsManager.raiseInsertedAction(optionName, data, insertedId) }), true, isTaskInsert); this._ganttTreeList.saveExpandedKeys(); dataOption._reloadDataSource().done((data => { if (isTaskInsert) { this._ganttTreeList.onTaskInserted(insertedId, record.parentId) } })) })) } } _onRecordUpdated(optionName, key, values) { const dataOption = this[`_${optionName}Option`]; const isTaskUpdated = "tasks" === optionName; if (dataOption) { const data = this._mappingHelper.convertCoreToMappedData(optionName, values); const hasCustomFieldsData = isTaskUpdated && this._customFieldsManager.cache.hasData(key); if (hasCustomFieldsData) { this._customFieldsManager.addCustomFieldsDataFromCache(key, data) } dataOption.update(key, data, (() => { this._executeFuncSetters(optionName, values, key); this._ganttTreeList.saveExpandedKeys(); this._dataProcessingHelper.addCompletionAction((() => { this._actionsManager.raiseUpdatedAction(optionName, data, key) }), true, isTaskUpdated); dataOption._reloadDataSource() })) } } _onRecordRemoved(optionName, key, data) { const dataOption = this[`_${optionName}Option`]; if (dataOption) { dataOption.remove(key, (() => { this._ganttTreeList.saveExpandedKeys(); this._dataProcessingHelper.addCompletionAction((() => { this._actionsManager.raiseDeletedAction(optionName, key, this._mappingHelper.convertCoreToMappedData(optionName, data)) }), true, "tasks" === optionName); dataOption._reloadDataSource() })) } } _onParentTaskUpdated(data) { const mappedData = this.getTaskDataByCoreData(data); this._actionsManager.raiseUpdatedAction("tasks", mappedData, data.id) } _onParentTasksRecalculated(data) { if (!this.isSieving) { const setters = _uiGantt6.GanttHelper.compileSettersByOption(this.option("tasks")); const treeDataSource = this._customFieldsManager.appendCustomFields(data.map(_uiGantt6.GanttHelper.prepareSetterMapHandler(setters))); setTimeout((() => { var _this$_ganttTreeList4; this._treeListParentRecalculatedDataUpdating = true; null === (_this$_ganttTreeList4 = this._ganttTreeList) || void 0 === _this$_ganttTreeList4 || _this$_ganttTreeList4.setDataSource(treeDataSource) })) } this.isSieving = false } _onGanttViewCoreUpdated() { this._dataProcessingHelper.onGanttViewReady() } _executeFuncSetters(optionName, coreData, key) { const funcSetters = _uiGantt6.GanttHelper.compileFuncSettersByOption(this.option(optionName)); const keysToUpdate = Object.keys(funcSetters).filter((k => (0, _type.isDefined)(coreData[k]))); if (keysToUpdate.length > 0) { const dataObject = this._getDataSourceItem(optionName, key); keysToUpdate.forEach((k => { const setter = funcSetters[k]; setter(dataObject, coreData[k]) })) } } _sortAndFilter() { var _this$_savedSortFilte, _this$_savedSortFilte2, _this$_savedSortFilte3; const treeList = this._treeList; const columns = treeList.getColumns(); const sortedColumns = columns.filter((c => c.sortIndex > -1)); const sortedState = sortedColumns.map((c => ({ sortIndex: c.sortIndex, sortOrder: c.sortOrder }))); const sortedStateChanged = !this._compareSortedState(null === (_this$_savedSortFilte = this._savedSortFilterState) || void 0 === _this$_savedSortFilte ? void 0 : _this$_savedSortFilte.sort, sortedState); const filterValue = treeList.option("filterValue"); const filterChanged = treeList.option("expandNodesOnFiltering") && filterValue !== (null === (_this$_savedSortFilte2 = this._savedSortFilterState) || void 0 === _this$_savedSortFilte2 ? void 0 : _this$_savedSortFilte2.filter); const sieveColumn = sortedColumns[0] || columns.filter((c => { var _c$filterValues; return (0, _type.isDefined)(c.filterValue) || (null === (_c$filterValues = c.filterValues) || void 0 === _c$filterValues ? void 0 : _c$filterValues.length) }))[0]; const isClearSieving = (null === (_this$_savedSortFilte3 = this._savedSortFilterState) || void 0 === _this$_savedSortFilte3 ? void 0 : _this$_savedSortFilte3.sieveColumn) && !sieveColumn; if (sieveColumn || isClearSieving) { const sieveOptions = sieveColumn && { sievedItems: this._ganttTreeList.getSievedItems(), sieveColumn: sieveColumn, expandTasks: filterChanged || filterValue && sortedStateChanged }; this.isSieving = !isClearSieving; this._setGanttViewOption("sieve", sieveOptions) } this._savedSortFilterState = { sort: sortedState, filter: filterValue, sieveColumn: sieveColumn } } _compareSortedState(state1, state2) { if (!state1 || !state2 || state1.length !== state2.length) { return false } return state1.every(((c, i) => c.sortIndex === state2[i].sortIndex && c.sortOrder === state2[i].sortOrder)) } _getToolbarItems() { const items = this.option("toolbar.items"); return items ? items : [] } _updateToolbarContent() { const items = this._getToolbarItems(); if (items.length) { this._$toolbarWrapper.show() } else { this._$toolbarWrapper.hide() } this._toolbar && this._toolbar.createItems(items); this._updateBarItemsState() } _updateContextMenu() { const contextMenuOptions = this.option("contextMenu"); if (contextMenuOptions.enabled && this._contextMenuBar) { this._contextMenuBar.createItems(contextMenuOptions.items); this._updateBarItemsState() } } _updateBarItemsState() { this._ganttView && this._ganttView.updateBarItemsState() } _showDialog(e) { if (!this._dialogInstance) { this._dialogInstance = new _uiGantt4.GanttDialog(this, this._$dialog) } this._dialogInstance.show(e.name, e.parameters, e.callback, e.afterClosing, this.option("editing")) } _showPopupMenu(info) { if (this.option("contextMenu.enabled")) { this._ganttView.getBarManager().updateContextMenu(); const args = { cancel: false, event: info.event, targetType: info.type, targetKey: info.key, items: (0, _extend.extend)(true, [], this._contextMenuBar._items), data: "task" === info.type ? this.getTaskData(info.key) : this.getDependencyData(info.key) }; this._actionsManager.raiseContextMenuPreparing(args); if (!args.cancel) { this._contextMenuBar.show(info.position, args.items) } } } _hidePopupMenu() { this._contextMenuBar.hide() } _getLoadPanel() { if (!this._loadPanel) { this._loadPanel = this._createComponent(this._$loadPanel, _load_panel.default, { position: { of: this.$element() } }) } return this._loadPanel } _getTaskKeyGetter() { return this._getDataSourceItemKeyGetter("tasks") } _findTaskByKey(key) { return this._getDataSourceItem("tasks", key) } _getDataSourceItem(dataOptionName, key) { const dataOption = this[`_${dataOptionName}Option`]; const keyGetter = this._getDataSourceItemKeyGetter(dataOptionName); const items = null === dataOption || void 0 === dataOption ? void 0 : dataOption._getItems(); return items.find((t => keyGetter(t) === key)) } _getDataSourceItemKeyGetter(dataOptionName) { return (0, _data.compileGetter)(this.option(`${dataOptionName}.keyExpr`)) } _setGanttViewOption(optionName, value) { this._ganttView && this._ganttView.option(optionName, value) } _getGanttViewOption(optionName, value) { var _this$_ganttView4; return null === (_this$_ganttView4 = this._ganttView) || void 0 === _this$_ganttView4 ? void 0 : _this$_ganttView4.option(optionName) } _getExportHelper() { this._exportHelper ?? (this._exportHelper = new _uiGantt5.GanttExportHelper(this)); return this._exportHelper } _executeCoreCommand(id) { this._ganttView.executeCoreCommand(id) } _expandAll() { this._changeExpandAll(true) } _collapseAll() { this._changeExpandAll(false) } _onTreeListRowExpandChanged(e, expanded) { if (!this._lockRowExpandEvent) { this._ganttView.changeTaskExpanded(e.key, expanded); this._sizeHelper.adjustHeight() } } _changeExpandAll(expanded, level, rowKey) { var _promise; const allExpandableNodes = []; const nodesToExpand = []; this._treeList.forEachNode((node => { var _node$children; if (null !== (_node$children = node.children) && void 0 !== _node$children && _node$children.length) { allExpandableNodes.push(node) } })); if (rowKey) { const node = this._treeList.getNodeByKey(rowKey); _uiGantt6.GanttHelper.getAllParentNodesKeys(node, nodesToExpand) } let promise; this._lockRowExpandEvent = allExpandableNodes.length > 0; const state = allExpandableNodes.reduce(((previous, node, index) => { if (rowKey) { expanded = nodesToExpand.includes(node.key) } else if (level) { expanded = node.level < level } previous[node.key] = expanded; const action = expanded ? this._treeList.expandRow : this._treeList.collapseRow; const isLast = index === allExpandableNodes.length - 1; if (isLast) { promise = action(node.key) } else { action(node.key) } return previous }), {}); null === (_promise = promise) || void 0 === _promise || _promise.then((() => { this._ganttView.applyTasksExpandedState(state); this._sizeHelper.adjustHeight(); delete this._lockRowExpandEvent })) } getTaskResources(key) { if (!(0, _type.isDefined)(key)) { return null } const coreData = this._ganttView._ganttViewCore.getTaskResources(key); return coreData.map((r => this._mappingHelper.convertCoreToMappedData("resources", r))) } getVisibleTaskKeys() { return this._ganttView._ganttViewCore.getVisibleTaskKeys() } getVisibleDependencyKeys() { return this._ganttView._ganttViewCore.getVisibleDependencyKeys() } getVisibleResourceKeys() { return this._ganttView._ganttViewCore.getVisibleResourceKeys() } getVisibleResourceAssignmentKeys() { return this._ganttView._ganttViewCore.getVisibleResourceAssignmentKeys() } getTaskData(key) { if (!(0, _type.isDefined)(key)) { return null } const coreData = this._ganttView._ganttViewCore.getTaskData(key); const mappedData = this.getTaskDataByCoreData(coreData); return mappedData } getTaskDataByCoreData(coreData) { const mappedData = coreData ? this._mappingHelper.convertCoreToMappedData("tasks", coreData) : null; this._customFieldsManager.addCustomFieldsData(coreData.id, mappedData); return mappedData } insertTask(data) { this._customFieldsManager.saveCustomFieldsDataToCache("gantt_new_task_key", data); this._ganttView._ganttViewCore.insertTask(this._mappingHelper.convertMappedToCoreData("tasks", data)) } deleteTask(key) { this._ganttView._ganttViewCore.deleteTask(key) } updateTask(key, data) { const coreTaskData = this._mappingHelper.convertMappedToCoreData("tasks", data); const isCustomFieldsUpdateOnly = !Object.keys(coreTaskData).length; this._customFieldsManager.saveCustomFieldsDataToCache(key, data, true, isCustomFieldsUpdateOnly); if (isCustomFieldsUpdateOnly) { const customFieldsData = this._customFieldsManager._getCustomFieldsData(data); if (Object.keys(customFieldsData).length > 0) { this._actionsManager.raiseUpdatingAction("tasks", { cancel: false, key: key, newValues: {} }) } } else { this._ganttView._ganttViewCore.updateTask(key, coreTaskData) } } getDependencyData(key) { if (!(0, _type.isDefined)(key)) { return null } const coreData = this._ganttView._ganttViewCore.getDependencyData(key); return coreData ? this._mappingHelper.convertCoreToMappedData("dependencies", coreData) : null } insertDependency(data) { this._ganttView._ganttViewCore.insertDependency(this._mappingHelper.convertMappedToCoreData("dependencies", data)) } deleteDependency(key) { this._ganttView._ganttViewCore.deleteDependency(key) } getResourceData(key) { const coreData = this._ganttView._ganttViewCore.getResourceData(key); return coreData ? this._mappingHelper.convertCoreToMappedData("resources", coreData) : null } deleteResource(key) { this._ganttView._ganttViewCore.deleteResource(key) } insertResource(data, taskKeys) { this._ganttView._ganttViewCore.insertResource(this._mappingHelper.convertMappedToCoreData("resources", data), taskKeys) } getResourceAssignmentData(key) { const coreData = this._ganttView._ganttViewCore.getResourceAssignmentData(key); return coreData ? this._mappingHelper.convertCoreToMappedData("resourceAssignments", coreData) : null } assignResourceToTask(resourceKey, taskKey) { this._ganttView._ganttViewCore.assignResourceToTask(resourceKey, taskKey) } unassignResourceFromTask(resourceKey, taskKey) { this._ganttView._ganttViewCore.unassignResourceFromTask(resourceKey, taskKey) } unassignAllResourcesFromTask(taskKey) { this._ganttView._ganttViewCore.unassignAllResourcesFromTask(taskKey) } updateDimensions() { this._sizeHelper.onAdjustControl() } scrollToDate(date) { this._ganttView._ganttViewCore.scrollToDate(date) } showResourceManagerDialog() { this._ganttView._ganttViewCore.showResourcesDialog() } showTaskDetailsDialog(taskKey) { this._ganttView._ganttViewCore.showTaskDetailsDialog(taskKey) } exportToPdf(options) { return this._exportToPdf(options) } _exportToPdf(options) { var _window$jspdf; this._exportHelper.reset(); const fullOptions = (0, _extend.extend)({}, options); if (fullOptions.createDocumentMethod) { fullOptions.docCreateMethod = fullOptions.createDocumentMethod } fullOptions.pdfDocument ?? (fullOptions.pdfDocument = fullOptions.jsPDFDocument); fullOptions.docCreateMethod ?? (fullOptions.docCreateMethod = (null === (_window$jspdf = window.jspdf) || void 0 === _window$jspdf ? void 0 : _window$jspdf.jsPDF) ?? window.jsPDF); fullOptions.format ?? (fullOptions.format = "a4"); return new Promise((resolve => { var _this$_ganttView5; const doc = null === (_this$_ganttView5 = this._ganttView) || void 0 === _this$_ganttView5 ? void 0 : _this$_ganttView5._ganttViewCore.exportToPdf(fullOptions); resolve(doc) })) } refresh() { return new Promise(((resolve, reject) => { try { this._refreshGantt(); resolve() } catch (e) { reject(e.message) } })) } expandAll() { this._expandAll() } collapseAll() { this._collapseAll() } expandAllToLevel(level) { this._changeExpandAll(false, level) } expandToTask(key) { var _node$parent; const node = this._treeList.getNodeByKey(key); this._changeExpandAll(false, 0, null === node || void 0 === node || null === (_node$parent = node.parent) || void 0 === _node$parent ? void 0 : _node$parent.key) } collapseTask(key) { this._treeList.collapseRow(key) } expandTask(key) { this._treeList.expandRow(key) } showResources(value) { this.option("showResources", value) } showDependencies(value) { this.option("showDependencies", value) } zoomIn() { this._ganttView._ganttViewCore.zoomIn() } zoomOut() { this._ganttView._ganttViewCore.zoomOut() } _getDefaultOptions() { return (0, _extend.extend)(super._getDefaultOptions(), _uiGantt6.GanttHelper.getDefaultOptions()) } _optionChanged(args) { var _this$_ganttTreeList5, _this$_sizeHelper, _this$_ganttTreeList6, _this$_actionsManager, _this$_actionsManager2, _this$_actionsManager3, _this$_actionsManager4, _this$_actionsManager5, _this$_actionsManager6, _this$_actionsManager7, _this$_actionsManager8, _this$_actionsManager9, _this$_actionsManager10, _this$_actionsManager11, _this$_actionsManager12, _this$_actionsManager13, _this$_actionsManager14, _this$_actionsManager15, _this$_actionsManager16, _this$_actionsManager17, _this$_actionsManager18, _this$_actionsManager19, _this$_actionsManager20, _this$_actionsManager21, _this$_actionsManager22, _this$_actionsManager23, _this$_actionsManager24, _this$_actionsManager25, _this$_actionsManager26, _this$_actionsManager27, _this$_ganttTreeList7, _this$_ganttTreeList8, _this$_ganttTemplates, _this$_ganttTemplates2, _this$_ganttTemplates3, _this$_ganttTemplates4, _this$_ganttTreeList9, _this$_sizeHelper2, _this$_sizeHelper3, _this$_ganttTreeList10, _this$_ganttTreeList11, _this$_ganttTreeList12; switch (args.name) { case "tasks": this._refreshDataSource("tasks"); break; case "dependencies": this._refreshDataSource("dependencies"); break; case "resources": this._refreshDataSource("resources"); break; case "resourceAssignments": this._refreshDataSource("resourceAssignments"); break; case "columns": null === (_this$_ganttTreeList5 = this._ganttTreeList) || void 0 === _this$_ganttTreeList5 || _this$_ganttTreeList5.setOption("columns", this._ganttTreeList.getColumns()); break; case "taskListWidth": null === (_this$_sizeHelper = this._sizeHelper) || void 0 === _this$_sizeHelper || _this$_sizeHelper.setInnerElementsWidth(); break; case "showResources": this._setGanttViewOption("showResources", args.value); break; case "showDependencies": this._setGanttViewOption("showDependencies", args.value); break; case "taskTitlePosition": this._setGanttViewOption("taskTitlePosition", args.value); break; case "firstDayOfWeek": this._setGanttViewOption("firstDayOfWeek", args.value); break; case "startDateRange": this._setGanttViewOption("startDateRange", args.value); break; case "endDateRange": this._setGanttViewOption("endDateRange", args.value); break; case "selectedRowKey": null === (_this$_ganttTreeList6 = this._ganttTreeList) || void 0 === _this$_ganttTreeList6 || _this$_ganttTreeList6.selectRows(_uiGantt6.GanttHelper.getArrayFromOneElement(args.value)); break; case "onSelectionChanged": null === (_this$_actionsManager = this._actionsManager) || void 0 === _this$_actionsManager || _this$_actionsManager.createSelectionChangedAction(); break; case "onTaskClick": null === (_this$_actionsManager2 = this._actionsManager) || void 0 === _this$_actionsManager2 || _this$_actionsManager2.createTaskClickAction(); break; case "onTaskDblClick": null === (_this$_actionsManager3 = this._actionsManager) || void 0 === _this$_actionsManager3 || _this$_actionsManager3.createTaskDblClickAction(); break; case "onTaskInserting": null === (_this$_actionsManager4 = this._actionsManager) || void 0 === _this$_actionsManager4 || _this$_actionsManager4.createTaskInsertingAction(); break; case "onTaskInserted": null === (_this$_actionsManager5 = this._actionsManager) || void 0 === _this$_actionsManager5 || _this$_actionsManager5.createTaskInsertedAction(); break; case "onTaskDeleting": null === (_this$_actionsManager6 = this._actionsManager) || void 0 === _this$_actionsManager6 || _this$_actionsManager6.createTaskDeletingAction(); break; case "onTaskDeleted": null === (_this$_actionsManager7 = this._actionsManager) || void 0 === _this$_actionsManager7 || _this$_actionsManager7.createTaskDeletedAction(); break; case "onTaskUpdating": null === (_this$_actionsManager8 = this._actionsManager) || void 0 === _this$_actionsManager8 || _this$_actionsManager8.createTaskUpdatingAction(); break; case "onTaskUpdated": null === (_this$_actionsManager9 = this._actionsManager) || void 0 === _this$_actionsManager9 || _this$_actionsManager9.createTaskUpdatedAction(); break; case "onTaskMoving": null === (_this$_actionsManager10 = this._actionsManager) || void 0 === _this$_actionsManager10 || _this$_actionsManager10.createTaskMovingAction(); break; case "onTaskEditDialogShowing": null === (_this$_actionsManager11 = this._actionsManager) || void 0 === _this$_actionsManager11 || _this$_actionsManager11.createTaskEditDialogShowingAction(); break; case "onResourceManagerDialogShowing": null === (_this$_actionsManager12 = this._actionsManager) || void 0 === _this$_actionsManager12 || _this$_actionsManager12.createResourceManagerDialogShowingAction(); break; case "onDependencyInserting": null === (_this$_actionsManager13 = this._actionsManager) || void 0 === _this$_actionsManager13 || _this$_actionsManager13.createDependencyInsertingAction(); break; case "onDependencyInserted": null === (_this$_actionsManager14 = this._actionsManager) || void 0 === _this$_actionsManager14 || _this$_actionsManager14.createDependencyInsertedAction(); break; case "onDependencyDeleting": null === (_this$_actionsManager15 = this._actionsManager) || void 0 === _this$_actionsManager15 || _this$_actionsManager15.createDependencyDeletingAction(); break; case "onDependencyDeleted": null === (_this$_actionsManager16 = this._actionsManager) || void 0 === _this$_actionsManager16 || _this$_actionsManager16.createDependencyDeletedAction(); break; case "onResourceInserting": null === (_this$_actionsManager17 = this._actionsManager) || void 0 === _this$_actionsManager17 || _this$_actionsManager17.createResourceInsertingAction(); break; case "onResourceInserted": null === (_this$_actionsManager18 = this._actionsManager) || void 0 === _this$_actionsManager18 || _this$_actionsManager18.createResourceInsertedAction(); break; case "onResourceDeleting": null === (_this$_actionsManager19 = this._actionsManager) || void 0 === _this$_actionsManager19 || _this$_actionsManager19.createResourceDeletingAction(); break; case "onResourceDeleted": null === (_this$_actionsManager20 = this._actionsManager) || void 0 === _this$_actionsManager20 || _this$_actionsManager20.createResourceDeletedAction(); break; case "onResourceAssigning": null === (_this$_actionsManager21 = this._actionsManager) || void 0 === _this$_actionsManager21 || _this$_actionsManager21.createResourceAssigningAction(); break; case "onResourceAssigned": null === (_this$_actionsManager22 = this._actionsManager) || void 0 === _this$_actionsManager22 || _this$_actionsManager22.createResourceAssignedAction(); break; case "onResourceUnassigning": null === (_this$_actionsManager23 = this._actionsManager) || void 0 === _this$_actionsManager23 || _this$_actionsManager23.createResourceUnassigningAction(); break; case "onResourceUnassigned": null === (_this$_actionsManager24 = this._actionsManager) || void 0 === _this$_actionsManager24 || _this$_actionsManager24.createResourceUnassignedAction(); break; case "onCustomCommand": null === (_this$_actionsManager25 = this._actionsManager) || void 0 === _this$_actionsManager25 || _this$_actionsManager25.createCustomCommandAction(); break; case "onContextMenuPreparing": null === (_this$_actionsManager26 = this._actionsManager) || void 0 === _this$_actionsManager26 || _this$_actionsManager26.createContextMenuPreparingAction(); break; case "onScaleCellPrepared": null === (_this$_actionsManager27 = this._actionsManager) || void 0 === _this$_actionsManager27 || _this$_actionsManager27.createScaleCellPreparedAction(); break; case "allowSelection": null === (_this$_ganttTreeList7 = this._ganttTreeList) || void 0 === _this$_ganttTreeList7 || _this$_ganttTreeList7.setOption("selection.mode", _uiGantt6.GanttHelper.getSelectionMode(args.value)); this._setGanttViewOption("allowSelection", args.value); break; case "showRowLines": null === (_this$_ganttTreeList8 = this._ganttTreeList) || void 0 === _this$_ganttTreeList8 || _this$_ganttTreeList8.setOption("showRowLines", args.value); this._setGanttViewOption("showRowLines", args.value); break; case "stripLines": this._setGanttViewOption("stripLines", args.value); break; case "scaleType": this._setGanttViewOption("scaleType", args.value); break; case "scaleTypeRange": this._setGanttViewOption("scaleTypeRange", this.option(args.name)); break; case "editing": this._setGanttViewOption("editing", this.option(args.name)); break; case "validation": this._setGanttViewOption("validation", this.option(args.name)); break; case "toolbar": this._updateToolbarContent(); break; case "contextMenu": this._updateContextMenu(); break; case "taskTooltipContentTemplate": this._setGanttViewOption("taskTooltipContentTemplate", null === (_this$_ganttTemplates = this._ganttTemplatesManager) || void 0 === _this$_ganttTemplates ? void 0 : _this$_ganttTemplates.getTaskTooltipContentTemplateFunc(args.value)); break; case "taskProgressTooltipContentTemplate": this._setGanttViewOption("taskProgressTooltipContentTemplate", null === (_this$_ganttTemplates2 = this._ganttTemplatesManager) || void 0 === _this$_ganttTemplates2 ? void 0 : _this$_ganttTemplates2.getTaskProgressTooltipContentTemplateFunc(args.value)); break; case "taskTimeTooltipContentTemplate": this._setGanttViewOption("taskTimeTooltipContentTemplate", null === (_this$_ganttTemplates3 = this._ganttTemplatesManager) || void 0 === _this$_ganttTemplates3 ? void 0 : _this$_ganttTemplates3.getTaskTimeTooltipContentTemplateFunc(args.value)); break; case "taskContentTemplate": this._setGanttViewOption("taskContentTemplate", null === (_this$_ganttTemplates4 = this._ganttTemplatesManager) || void 0 === _this$_ganttTemplates4 ? void 0 : _this$_ganttTemplates4.getTaskContentTemplateFunc(args.value)); break; case "rootValue": null === (_this$_ganttTreeList9 = this._ganttTreeList) || void 0 === _this$_ganttTreeList9 || _this$_ganttTreeList9.setOption("rootValue", args.value); break; case "width": super._optionChanged(args); null === (_this$_sizeHelper2 = this._sizeHelper) || void 0 === _this$_sizeHelper2 || _this$_sizeHelper2.updateGanttWidth(); break; case "height": super._optionChanged(args); null === (_this$_sizeHelper3 = this._sizeHelper) || void 0 === _this$_sizeHelper3 || _this$_sizeHelper3.setGanttHeight((0, _size.getHeight)(this._$element)); break; case "sorting": null === (_this$_ganttTreeList10 = this._ganttTreeList) || void 0 === _this$_ganttTreeList10 || _this$_ganttTreeList10.setOption("sorting", this.option(args.name)); break; case "filterRow": null === (_this$_ganttTreeList11 = this._ganttTreeList) || void 0 === _this$_ganttTreeList11 || _this$_ganttTreeList11.setOption("filterRow", this.option(args.name)); break; case "headerFilter": null === (_this$_ganttTreeList12 = this._ganttTreeList) || void 0 === _this$_ganttTreeList12 || _this$_ganttTreeList12.setOption("headerFilter", this.option(args.name)); break; default: super._optionChanged(args) } } }(0, _component_registrator.default)("dxGantt", Gantt); exports.default = Gantt; module.exports = exports.default; module.exports.default = exports.default }, 86235: /*!*********************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/ui/gantt/ui.gantt.mapping_helper.js ***! \*********************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { exports.GanttMappingHelper = void 0; var _type = __webpack_require__( /*! ../../core/utils/type */ 11528); var _data = __webpack_require__( /*! ../../core/utils/data */ 31e3); const GANTT_MAPPED_FIELD_REGEX = /(\w*)Expr/; exports.GanttMappingHelper = class { constructor(gantt) { this._gantt = gantt } _getMappedFieldName(optionName, coreField) { let coreFieldName = coreField; if ("id" === coreField) { coreFieldName = "key" } return this._gantt.option(`${optionName}.${coreFieldName}Expr`) } getTaskMappedFieldNames() { const mappedFields = []; const mappedFieldsData = this._gantt.option("tasks"); for (const field in mappedFieldsData) { const exprMatches = field.match(GANTT_MAPPED_FIELD_REGEX); const mappedFieldName = exprMatches && mappedFieldsData[exprMatches[0]]; if (mappedFieldName) { mappedFields.push(mappedFieldName) } } return mappedFields } convertCoreToMappedData(optionName, coreData) { return Object.keys(coreData).reduce(((previous, f) => { const mappedField = this._getMappedFieldName(optionName, f); if (mappedField && !(0, _type.isFunction)(mappedField)) { const setter = (0, _data.compileSetter)(mappedField); setter(previous, coreData[f]) } return previous }), {}) } convertMappedToCoreData(optionName, mappedData) { const coreData = {}; if (mappedData) { const mappedFields = this._gantt.option(optionName); for (const field in mappedFields) { const exprMatches = field.match(GANTT_MAPPED_FIELD_REGEX); const mappedFieldName = exprMatches && mappedFields[exprMatches[0]]; if (mappedFieldName && void 0 !== mappedData[mappedFieldName]) { const getter = (0, _data.compileGetter)(mappedFieldName); const coreFieldName = exprMatches[1]; coreData[coreFieldName] = getter(mappedData) } } } return coreData } convertCoreToMappedFields(optionName, fields) { return fields.reduce(((previous, f) => { const mappedField = this._getMappedFieldName(optionName, f); if (mappedField) { previous.push(mappedField) } return previous }), []) } convertMappedToCoreFields(optionName, fields) { const coreFields = []; const mappedFields = this._gantt.option(optionName); for (const field in mappedFields) { const exprMatches = field.match(GANTT_MAPPED_FIELD_REGEX); const mappedFieldName = exprMatches && mappedFields[exprMatches[0]]; if (mappedFieldName && fields.indexOf(mappedFieldName) > -1) { const coreFieldName = exprMatches[1]; coreFields.push(coreFieldName) } } return coreFields } } }, 70136: /*!*****************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/ui/gantt/ui.gantt.model_changes_listener.js ***! \*****************************************************************************************/ function(__unused_webpack_module, exports) { exports.ModelChangesListener = void 0; exports.ModelChangesListener = { create: gantt => ({ NotifyTaskCreated: (task, callback, errorCallback) => { gantt._onRecordInserted("tasks", task, callback) }, NotifyTaskRemoved: (taskId, errorCallback, task) => { gantt._onRecordRemoved("tasks", taskId, task) }, NotifyTaskUpdated: (taskId, newValues, errorCallback) => { gantt._onRecordUpdated("tasks", taskId, newValues) }, NotifyParentTaskUpdated: (task, errorCallback) => { gantt._onParentTaskUpdated(task) }, NotifyDependencyInserted: (dependency, callback, errorCallback) => { gantt._onRecordInserted("dependencies", dependency, callback) }, NotifyDependencyRemoved: (dependencyId, errorCallback, dependency) => { gantt._onRecordRemoved("dependencies", dependencyId, dependency) }, NotifyResourceCreated: (resource, callback, errorCallback) => { gantt._onRecordInserted("resources", resource, callback) }, NotifyResourceRemoved: (resourceId, errorCallback, resource) => { gantt._onRecordRemoved("resources", resourceId, resource) }, NotifyResourceAssigned: (assignment, callback, errorCallback) => { gantt._onRecordInserted("resourceAssignments", assignment, callback) }, NotifyResourceUnassigned: (assignmentId, errorCallback, assignment) => { gantt._onRecordRemoved("resourceAssignments", assignmentId, assignment) }, NotifyParentDataRecalculated: data => { gantt._onParentTasksRecalculated(data) }, NotifyTaskCreating: args => { gantt._actionsManager.raiseInsertingAction("tasks", args) }, NotifyTaskRemoving: args => { gantt._actionsManager.raiseDeletingAction("tasks", args) }, NotifyTaskUpdating: args => { gantt._actionsManager.raiseUpdatingAction("tasks", args) }, NotifyTaskMoving: args => { gantt._actionsManager.raiseUpdatingAction("tasks", args, gantt._actionsManager.getTaskMovingAction()) }, NotifyTaskEditDialogShowing: args => { gantt._actionsManager.raiseTaskEditDialogShowingAction(args) }, NotifyResourceManagerDialogShowing: args => { gantt._actionsManager.raiseResourceManagerDialogShowingAction(args) }, NotifyDependencyInserting: args => { gantt._actionsManager.raiseInsertingAction("dependencies", args) }, NotifyDependencyRemoving: args => { gantt._actionsManager.raiseDeletingAction("dependencies", args) }, NotifyResourceCreating: args => { gantt._actionsManager.raiseInsertingAction("resources", args) }, NotifyResourceRemoving: args => { gantt._actionsManager.raiseDeletingAction("resources", args) }, NotifyResourceAssigning: args => { gantt._actionsManager.raiseInsertingAction("resourceAssignments", args) }, NotifyResourceUnassigning: args => { gantt._actionsManager.raiseDeletingAction("resourceAssignments", args) }, NotifyScaleCellPrepared: args => { gantt._actionsManager.raiseScaleCellPreparedAction(args) }, NotifyGanttViewUpdated: () => { gantt._onGanttViewCoreUpdated() } }) } }, 3116: /*!******************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/ui/gantt/ui.gantt.size_helper.js ***! \******************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { exports.GanttSizeHelper = void 0; var _size = __webpack_require__( /*! ../../core/utils/size */ 57653); var _window = __webpack_require__( /*! ../../core/utils/window */ 3104); exports.GanttSizeHelper = class { constructor(gantt) { this._gantt = gantt } _setTreeListDimension(dimension, value) { var _this$_gantt$_ganttTr; const setter = "width" === dimension ? _size.setWidth : _size.setHeight; const getter = "width" === dimension ? _size.getWidth : _size.getHeight; setter(this._gantt._$treeListWrapper, value); null === (_this$_gantt$_ganttTr = this._gantt._ganttTreeList) || void 0 === _this$_gantt$_ganttTr || _this$_gantt$_ganttTr.setOption(dimension, getter(this._gantt._$treeListWrapper)) } _setGanttViewDimension(dimension, value) { const setter = "width" === dimension ? _size.setWidth : _size.setHeight; const getter = "width" === dimension ? _size.getWidth : _size.getHeight; setter(this._gantt._$ganttView, value); this._gantt._setGanttViewOption(dimension, getter(this._gantt._$ganttView)) } _getPanelsWidthByOption() { var _leftPanelWidth$index, _leftPanelWidth$index2; const ganttWidth = (0, _size.getWidth)(this._gantt._$element); const leftPanelWidth = this._gantt.option("taskListWidth"); let rightPanelWidth; if (!isNaN(leftPanelWidth)) { rightPanelWidth = ganttWidth - parseInt(leftPanelWidth) } else if ((null === (_leftPanelWidth$index = leftPanelWidth.indexOf) || void 0 === _leftPanelWidth$index ? void 0 : _leftPanelWidth$index.call(leftPanelWidth, "px")) > 0) { rightPanelWidth = ganttWidth - parseInt(leftPanelWidth.replace("px", "")) + "px" } else if ((null === (_leftPanelWidth$index2 = leftPanelWidth.indexOf) || void 0 === _leftPanelWidth$index2 ? void 0 : _leftPanelWidth$index2.call(leftPanelWidth, "%")) > 0) { rightPanelWidth = 100 - parseInt(leftPanelWidth.replace("%", "")) + "%" } return { leftPanelWidth: leftPanelWidth, rightPanelWidth: rightPanelWidth } } onAdjustControl() { const elementHeight = (0, _size.getHeight)(this._gantt._$element); this.updateGanttWidth(); this.setGanttHeight(elementHeight) } onApplyPanelSize(e) { this.setInnerElementsWidth(e); this.updateGanttRowHeights() } updateGanttRowHeights() { const rowHeight = this._gantt._ganttTreeList.getRowHeight(); if (this._gantt._getGanttViewOption("rowHeight") !== rowHeight) { var _this$_gantt$_ganttVi; this._gantt._setGanttViewOption("rowHeight", rowHeight); null === (_this$_gantt$_ganttVi = this._gantt._ganttView) || void 0 === _this$_gantt$_ganttVi || _this$_gantt$_ganttVi._ganttViewCore.updateRowHeights(rowHeight) } } adjustHeight() { if (!this._gantt._hasHeight) { this._gantt._setGanttViewOption("height", 0); this._gantt._setGanttViewOption("height", this._gantt._ganttTreeList.getOffsetHeight()) } } setInnerElementsWidth(widths) { if (!(0, _window.hasWindow)()) { return } const takeWithFromOption = !widths; if (takeWithFromOption) { widths = this._getPanelsWidthByOption(); this._setTreeListDimension("width", 0); this._setGanttViewDimension("width", 0) } this._setTreeListDimension("width", widths.leftPanelWidth); this._setGanttViewDimension("width", widths.rightPanelWidth); if (takeWithFromOption) { this._gantt._splitter._setSplitterPositionLeft() } } updateGanttWidth() { this._gantt._splitter._dimensionChanged() } setGanttHeight(height) { var _this$_gantt$_ganttVi2; const toolbarHeightOffset = this._gantt._$toolbarWrapper.get(0).offsetHeight; const mainWrapperHeight = height - toolbarHeightOffset; this._setTreeListDimension("height", mainWrapperHeight); this._setGanttViewDimension("height", mainWrapperHeight); null === (_this$_gantt$_ganttVi2 = this._gantt._ganttView) || void 0 === _this$_gantt$_ganttVi2 || _this$_gantt$_ganttVi2._ganttViewCore.resetAndUpdate() } } }, 45471: /*!**************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/ui/gantt/ui.gantt.task.area.container.js ***! \**************************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { exports.TaskAreaContainer = void 0; var _scroll_view = (e = __webpack_require__( /*! ../scroll_view */ 91374), e && e.__esModule ? e : { default: e }); var e; exports.TaskAreaContainer = class { constructor(element, ganttViewWidget) { this._element = element; this._scrollView = ganttViewWidget._createComponent(this._element, _scroll_view.default, { scrollByContent: false, scrollByThumb: true, showScrollbar: "onHover", direction: "both", onScroll: () => { ganttViewWidget.updateView() } }) } get scrollTop() { return this._scrollView.scrollTop() } set scrollTop(value) { const diff = value - this._scrollView.scrollTop(); if (0 !== diff) { this._scrollView.scrollBy({ left: 0, top: diff }) } } get scrollLeft() { return this._scrollView.scrollLeft() } set scrollLeft(value) { const diff = value - this._scrollView.scrollLeft(); if (0 !== diff) { this._scrollView.scrollBy({ left: diff, top: 0 }) } } get scrollWidth() { return this._scrollView.scrollWidth() } get scrollHeight() { return this._scrollView.scrollHeight() } get isExternal() { return true } getWidth() { return this._element.offsetWidth } getHeight() { return this._element.offsetHeight } getElement() { return this._element } } }, 41141: /*!****************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/ui/gantt/ui.gantt.templates.js ***! \****************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { exports.GanttTemplatesManager = void 0; var _renderer = (e = __webpack_require__( /*! ../../core/renderer */ 64553), e && e.__esModule ? e : { default: e }); var e; var _element = __webpack_require__( /*! ../../core/element */ 61404); exports.GanttTemplatesManager = class { constructor(gantt) { this._gantt = gantt } getTaskTooltipContentTemplateFunc(taskTooltipContentTemplateOption) { const template = taskTooltipContentTemplateOption && this._gantt._getTemplate(taskTooltipContentTemplateOption); const createTemplateFunction = template && ((container, item, callback) => { template.render({ model: this._gantt.getTaskDataByCoreData(item), container: (0, _element.getPublicElement)((0, _renderer.default)(container)), onRendered: () => { callback() } }); return true }); return createTemplateFunction } getTaskProgressTooltipContentTemplateFunc(taskTooltipContentTemplateOption) { const template = taskTooltipContentTemplateOption && this._gantt._getTemplate(taskTooltipContentTemplateOption); const createTemplateFunction = template && ((container, item, callback) => { template.render({ model: item, container: (0, _element.getPublicElement)((0, _renderer.default)(container)), onRendered: () => { callback() } }); return true }); return createTemplateFunction } getTaskTimeTooltipContentTemplateFunc(taskTooltipContentTemplateOption) { const template = taskTooltipContentTemplateOption && this._gantt._getTemplate(taskTooltipContentTemplateOption); const createTemplateFunction = template && ((container, item, callback) => { template.render({ model: item, container: (0, _element.getPublicElement)((0, _renderer.default)(container)), onRendered: () => { callback() } }); return true }); return createTemplateFunction } getTaskContentTemplateFunc(taskContentTemplateOption) { const template = taskContentTemplateOption && this._gantt._getTemplate(taskContentTemplateOption); const createTemplateFunction = template && ((container, item, callback, index) => { item.taskData = this._gantt.getTaskDataByCoreData(item.taskData); template.render({ model: item, container: (0, _element.getPublicElement)((0, _renderer.default)(container)), onRendered: () => { callback(container, index) } }); return true }); return createTemplateFunction } } }, 95736: /*!***************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/ui/gantt/ui.gantt.treelist.js ***! \***************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { exports.GanttTreeList = void 0; var _size = __webpack_require__( /*! ../../core/utils/size */ 57653); var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../core/renderer */ 64553)); var _tree_list = _interopRequireDefault(__webpack_require__( /*! ../tree_list */ 21872)); var _position = __webpack_require__( /*! ../../core/utils/position */ 41639); var _type = __webpack_require__( /*! ../../core/utils/type */ 11528); var _uiGantt = __webpack_require__( /*! ./ui.gantt.helper */ 34376); var _data_source = _interopRequireDefault(__webpack_require__( /*! ../../common/data/data_source */ 14479)); var _array_store = _interopRequireDefault(__webpack_require__( /*! ../../common/data/array_store */ 80556)); var _data = __webpack_require__( /*! ../../core/utils/data */ 31e3); var _uiGanttTreelist = __webpack_require__( /*! ./ui.gantt.treelist.nodes_state */ 19701); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } exports.GanttTreeList = class { constructor(gantt) { this._gantt = gantt; this._$treeList = this._gantt._$treeList } getTreeList() { const { keyExpr: keyExpr, parentIdExpr: parentIdExpr } = this._gantt.option("tasks"); this._treeList = this._gantt._createComponent(this._$treeList, _tree_list.default, { dataSource: this.createDataSource(this._gantt._tasksRaw, keyExpr), keyExpr: keyExpr, filterSyncEnabled: true, parentIdExpr: parentIdExpr, columns: this.getColumns(), columnResizingMode: "nextColumn", height: this._getHeight(), width: this._gantt.option("taskListWidth"), selection: { mode: _uiGantt.GanttHelper.getSelectionMode(this._gantt.option("allowSelection")) }, selectedRowKeys: _uiGantt.GanttHelper.getArrayFromOneElement(this._gantt.option("selectedRowKey")), sorting: this._gantt.option("sorting"), filterRow: this._gantt.option("filterRow"), headerFilter: this._gantt.option("headerFilter"), scrolling: { showScrollbar: "onHover", mode: "virtual" }, allowColumnResizing: true, autoExpandAll: true, showRowLines: this._gantt.option("showRowLines"), rootValue: this._gantt.option("rootValue"), onContentReady: e => { this._onContentReady(e) }, onSelectionChanged: e => { this._onSelectionChanged(e) }, onRowCollapsed: e => { this._onRowCollapsed(e) }, onRowExpanded: e => { this._onRowExpanded(e) }, onRowPrepared: e => { this._onRowPrepared(e) }, onContextMenuPreparing: e => { this._onContextMenuPreparing(e) }, onRowClick: e => { this.onRowClick(e) }, onRowDblClick: e => { this.onRowDblClick(e) }, onNodesInitialized: e => { this._onNodesInitialized(e) }, _disableDeprecationWarnings: true }); return this._treeList } onAfterTreeListCreate() { if (this._postponedGanttInitRequired) { this._initGanttOnContentReady({ component: this._treeList }); delete this._postponedGanttInitRequired } } _onContentReady(e) { const hasTreeList = !!this._treeList; if (hasTreeList) { this._initGanttOnContentReady(e) } else { this._postponedGanttInitRequired = true } this._gantt._onTreeListContentReady(e) } _initGanttOnContentReady(e) { if (e.component.getDataSource()) { this._gantt._initGanttView(); this._initScrollSync(e.component) } this._gantt._sortAndFilter(); this._gantt._sizeHelper.updateGanttRowHeights() } _onSelectionChanged(e) { const selectedRowKey = e.currentSelectedRowKeys[0]; this._gantt._setGanttViewOption("selectedRowKey", selectedRowKey); this._gantt._setOptionWithoutOptionChange("selectedRowKey", selectedRowKey); this._gantt._actionsManager.raiseSelectionChangedAction(selectedRowKey) } _onRowCollapsed(e) { this._gantt._onTreeListRowExpandChanged(e, false) } _onRowExpanded(e) { this._gantt._onTreeListRowExpandChanged(e, true) } _onRowPrepared(e) { if ("data" === e.rowType && e.node.children.length > 0) { (0, _renderer.default)(e.rowElement).addClass("dx-gantt-collapsable-row") } } _onContextMenuPreparing(e) { var _e$row, _e$row2; if ("header" === e.target) { return } if ("data" === (null === (_e$row = e.row) || void 0 === _e$row ? void 0 : _e$row.rowType)) { this.setOption("selectedRowKeys", [e.row.data[this._gantt.option("tasks.keyExpr")]]) } const info = { cancel: false, event: e.event, type: "task", key: null === (_e$row2 = e.row) || void 0 === _e$row2 ? void 0 : _e$row2.key, position: { x: e.event.pageX, y: e.event.pageY } }; this._gantt._showPopupMenu(info); e.event.preventDefault() } _getHeight() { if ((0, _size.getHeight)(this._$treeList)) { return (0, _size.getHeight)(this._$treeList) } this._gantt._hasHeight = (0, _type.isDefined)(this._gantt.option("height")) && "" !== this._gantt.option("height"); return this._gantt._hasHeight ? "100%" : "" } _initScrollSync(treeList) { const treeListScrollable = treeList.getScrollable(); if (treeListScrollable) { treeListScrollable.off("scroll"); treeListScrollable.on("scroll", (e => { this._onScroll(e) })) } } _onScroll(treeListScrollView) { const ganttViewTaskAreaContainer = this._gantt._ganttView.getTaskAreaContainer(); if (ganttViewTaskAreaContainer.scrollTop !== treeListScrollView.component.scrollTop()) { ganttViewTaskAreaContainer.scrollTop = treeListScrollView.component.scrollTop() } } _correctRowsViewRowHeight(height) { const view = this._treeList._views && this._treeList._views.rowsView; if ((null === view || void 0 === view ? void 0 : view._rowHeight) !== height) { view._rowHeight = height } } _skipUpdateTreeListDataSource() { return this._gantt.option("validation.autoUpdateParentTasks") } selectRows(keys) { this.setOption("selectedRowKeys", keys) } scrollBy(scrollTop) { const treeListScrollable = this._treeList.getScrollable(); if (treeListScrollable) { const diff = scrollTop - treeListScrollable.scrollTop(); if (Math.abs(diff) >= 2) { treeListScrollable.scrollBy({ left: 0, top: diff }) } } } updateDataSource(data) { let forceUpdate = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : false; let forceCustomData = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : false; if (!this._skipUpdateTreeListDataSource() || forceUpdate) { this.setDataSource(data) } else if (forceCustomData) { const data = this._treeList.option("dataSource"); this._gantt._onParentTasksRecalculated(data) } } setDataSource(data) { this.setOption("dataSource", this.createDataSource(data)) } createDataSource(data, key) { return data && new _data_source.default({ store: new _array_store.default({ data: data, key: key || this.getOption("keyExpr") }) }) } onRowClick(e) { this._gantt._actionsManager.raiseTaskClickAction(e.key, e.event) } onRowDblClick(e) { if (this._gantt._actionsManager.raiseTaskDblClickAction(e.key, e.event)) { this._gantt._ganttView._ganttViewCore.showTaskEditDialog() } } saveExpandedKeys() { const treeList = this._treeList; const visibleRowCount = null === treeList || void 0 === treeList ? void 0 : treeList.getVisibleRows().length; if (visibleRowCount > 0) { const nodes = this.getAllNodes(); const keys = this.getOption("expandedRowKeys"); const hasExpandedRows = keys && nodes.length !== visibleRowCount; if (hasExpandedRows) { const state = this.getNodesState(); state.applyNodes(nodes, this.getOption("rootValue")); state.saveExpandedState(keys) } } } _onNodesInitialized(e) { const state = this.getNodesState(); const savedKeys = state.getExpandedKeys(); const nodes = this.getAllNodes(); state.applyNodes(nodes, this.getOption("rootValue")); const expandedKeys = state.getExpandedKeys(); if (expandedKeys) { this.setOption("expandedRowKeys", expandedKeys) } if (this.isExpandedStateChanged(savedKeys, expandedKeys)) { const expandedState = nodes.reduce(((previous, node) => { previous[node.key] = expandedKeys ? expandedKeys.includes(node.key) : true; return previous }), {}); this._gantt._ganttView.applyTasksExpandedState(expandedState) } state.clear() } getNodesState() { if (!this._nodeState) { this._nodeState = new _uiGanttTreelist.GanttTreeListNodesState } return this._nodeState } getAllNodes() { var _this$_treeList, _this$_treeList2; const store = null === (_this$_treeList = this._treeList) || void 0 === _this$_treeList || null === (_this$_treeList = _this$_treeList.getDataSource()) || void 0 === _this$_treeList ? void 0 : _this$_treeList.store(); if (!store || !(null !== (_this$_treeList2 = this._treeList) && void 0 !== _this$_treeList2 && _this$_treeList2.getNodeByKey)) { return [] } const keyGetter = (0, _data.compileGetter)(store.key()); return store._array.map((item => this._treeList.getNodeByKey(keyGetter(item)))).filter((item => !!item)) } isExpandedStateChanged(keys1, keys2) { if (null === keys1 && null === keys2) { return false } if ((null === keys1 || void 0 === keys1 ? void 0 : keys1.length) !== (null === keys2 || void 0 === keys2 ? void 0 : keys2.length)) { return true } return keys1.some(((key, index) => key !== keys2[index])) } getOffsetHeight() { return this._gantt._treeList._$element.get(0).offsetHeight } getRowHeight() { const $row = this._treeList._$element.find(".dx-data-row"); let height = $row.length ? (0, _position.getBoundingRect)($row.last().get(0)).height : 34; if (!height) { height = 34 } this._correctRowsViewRowHeight(height); return height } getHeaderHeight() { return (0, _position.getBoundingRect)(this._treeList._$element.find(".dx-treelist-headers").get(0)).height } getColumns() { const columns = this._gantt.option("columns"); if (columns) { for (let i = 0; i < columns.length; i++) { const column = columns[i]; const isKeyColumn = column.dataField === this._gantt.option("tasks.keyExpr") || column.dataField === this._gantt.option("tasks.parentIdExpr"); if (isKeyColumn && !column.dataType) { column.dataType = "object" } } } return columns } getSievedItems() { const rootNode = this._treeList.getRootNode(); if (!rootNode) { return } const resultArray = []; _uiGantt.GanttHelper.convertTreeToList(rootNode, resultArray); const getters = _uiGantt.GanttHelper.compileGettersByOption(this._gantt.option("tasks")); const validatedData = this._gantt._validateSourceData("tasks", resultArray); const mappedData = validatedData.map(_uiGantt.GanttHelper.prepareMapHandler(getters)); return mappedData } setOption(optionName, value) { this._treeList && this._treeList.option(optionName, value) } getOption(optionName) { var _this$_treeList3; return null === (_this$_treeList3 = this._treeList) || void 0 === _this$_treeList3 ? void 0 : _this$_treeList3.option(optionName) } onTaskInserted(insertedId, parentId) { if ((0, _type.isDefined)(parentId)) { const expandedRowKeys = this.getOption("expandedRowKeys"); if (-1 === expandedRowKeys.indexOf(parentId)) { expandedRowKeys.push(parentId); this.setOption("expandedRowKeys", expandedRowKeys) } } this.selectRows(_uiGantt.GanttHelper.getArrayFromOneElement(insertedId)); this.setOption("focusedRowKey", insertedId) } getDataSource() { var _this$_treeList4; return null === (_this$_treeList4 = this._treeList) || void 0 === _this$_treeList4 ? void 0 : _this$_treeList4.getDataSource() } } }, 19701: /*!***************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/ui/gantt/ui.gantt.treelist.nodes_state.js ***! \***************************************************************************************/ function(__unused_webpack_module, exports) { exports.GanttTreeListNodesState = exports.GanttTreeListNodeState = void 0; class GanttTreeListNodeState { constructor(treeListNode) { var _treeListNode$parent; this.collapsed = false; this.key = treeListNode.key; this.children = treeListNode.children.map((node => node.key)); this.parentKey = null === (_treeListNode$parent = treeListNode.parent) || void 0 === _treeListNode$parent ? void 0 : _treeListNode$parent.key } hasChildren() { return this.children.length > 0 } removeChild(state) { const index = this.children.indexOf(state.key); if (index > -1) { this.children = this.children.splice(index, 1) } } equal(state) { if (!state || state.key !== this.key || state.parentKey !== this.parentKey) { return false } if (this.children.length !== state.children.length || this.children.some(((value, index) => value !== state.children[index]))) { return false } return true } } exports.GanttTreeListNodeState = GanttTreeListNodeState; exports.GanttTreeListNodesState = class { constructor() { this._resetHash() } clear() { this._resetHash() } applyNodes(nodes, rootValue) { if (this._rootValue !== rootValue) { this._resetHash(); this._rootValue = rootValue } this._removeNonExistentNodes(nodes.map((node => node.key))); nodes.forEach((node => this._applyNode(node))); this._validateHash() } saveExpandedState(expandedKeys) { this._hasCollapsed = false; this._forEachState((state => { if (state.hasChildren() && !expandedKeys.includes(state.key)) { state.collapsed = true; this._hasCollapsed = true } })) } getExpandedKeys() { if (this._hasCollapsed) { const keys = []; this._forEachState((state => { if (state.hasChildren() && !state.collapsed) { keys.push(state.key) } })); return keys } return null } _resetHash() { this._nodeHash = {}; this._hasCollapsed = false } _getNodeState(key) { return this._nodeHash[key] } _removeNonExistentNodes(existingKeys) { if (existingKeys) { this._forEachState((state => { if (!existingKeys.includes(state.key)) { this._removeStateWithChildren(state) } })) } } _removeStateWithChildren(key) { const state = this._getNodeState(key); if (state) { state.children.forEach((child => this._removeStateWithChildren(child))); const parent = this._getNodeState(state.parentKey); if (parent) { parent.removeChild(state) } delete this._nodeHash[key] } } _applyNode(node) { const nodeState = new GanttTreeListNodeState(node); const oldState = this._getNodeState(node.key); if (!(null !== oldState && void 0 !== oldState && oldState.equal(nodeState))) { this._nodeHash[node.key] = nodeState; this._expandTreelineToNode(node.key) } } _expandTreelineToNode(key) { const state = this._getNodeState(key); let parent = this._getNodeState(null === state || void 0 === state ? void 0 : state.parentKey); while (parent) { parent.collapsed = false; parent = this._getNodeState(parent.parentKey) } } _validateHash() { Object.keys(this._nodeHash).forEach((key => { const state = this._getNodeState(key); const parentKey = null === state || void 0 === state ? void 0 : state.parentKey; if (parentKey !== this._rootValue && !this._getNodeState(parentKey)) { this._removeStateWithChildren(key) } })) } _forEachState(callback) { Object.keys(this._nodeHash).forEach((key => { const state = this._nodeHash[key]; if (state) { callback(state) } })) } } }, 79669: /*!***********************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/ui/gantt/ui.gantt.view.js ***! \***********************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { exports.GanttView = void 0; var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../core/renderer */ 64553)); var _ui = _interopRequireDefault(__webpack_require__( /*! ../widget/ui.widget */ 11118)); var _gantt_importer = __webpack_require__( /*! ./gantt_importer */ 43895); var _uiGanttTaskArea = __webpack_require__( /*! ./ui.gantt.task.area.container */ 45471); var _date = _interopRequireDefault(__webpack_require__( /*! ../../common/core/localization/date */ 38662)); var _type = __webpack_require__( /*! ../../core/utils/type */ 11528); var _message = _interopRequireDefault(__webpack_require__( /*! ../../common/core/localization/message */ 4671)); var _string = __webpack_require__( /*! ../../core/utils/string */ 54497); var _core = _interopRequireDefault(__webpack_require__( /*! ../../common/core/localization/core */ 84109)); var _frame = __webpack_require__( /*! ../../common/core/animation/frame */ 84096); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } const fullScreenModeKey = "fullScreen"; class GanttView extends _ui.default { _init() { super._init(); this._onSelectionChanged = this._createActionByOption("onSelectionChanged"); this._onViewTypeChanged = this._createActionByOption("onViewTypeChanged"); this._onScroll = this._createActionByOption("onScroll"); this._onDialogShowing = this._createActionByOption("onDialogShowing"); this._onPopupMenuShowing = this._createActionByOption("onPopupMenuShowing"); this._onPopupMenuHiding = this._createActionByOption("onPopupMenuHiding"); this._expandAll = this._createActionByOption("onExpandAll"); this._collapseAll = this._createActionByOption("onCollapseAll"); this._taskClick = this._createActionByOption("onTaskClick"); this._taskDblClick = this._createActionByOption("onTaskDblClick"); this._onAdjustControl = this._createActionByOption("onAdjustControl") } _initMarkup() { const GanttView = (0, _gantt_importer.getGanttViewCore)(); this._ganttViewCore = new GanttView(this.$element().get(0), this, { showResources: this.option("showResources"), showDependencies: this.option("showDependencies"), taskTitlePosition: this._getTaskTitlePosition(this.option("taskTitlePosition")), firstDayOfWeek: this._getFirstDayOfWeek(this.option("firstDayOfWeek")), allowSelectTask: this.option("allowSelection"), startDateRange: this.option("startDateRange"), endDateRange: this.option("endDateRange"), editing: this._parseEditingSettings(this.option("editing")), validation: this.option("validation"), stripLines: { stripLines: this.option("stripLines") }, areHorizontalBordersEnabled: this.option("showRowLines"), areAlternateRowsEnabled: false, viewType: this._getViewTypeByScaleType(this.option("scaleType")), viewTypeRange: this._parseViewTypeRangeSettings(this.option("scaleTypeRange")), cultureInfo: this._getCultureInfo(), taskTooltipContentTemplate: this.option("taskTooltipContentTemplate"), taskProgressTooltipContentTemplate: this.option("taskProgressTooltipContentTemplate"), taskTimeTooltipContentTemplate: this.option("taskTimeTooltipContentTemplate"), taskContentTemplate: this.option("taskContentTemplate"), sieve: this.option("sieve") }); this._selectTask(this.option("selectedRowKey")); this.updateBarItemsState(); const visualState = this.option("visualState"); if (visualState) { this._restoreStateFrameId = (0, _frame.requestAnimationFrame)((() => this._restoreVisualState(visualState))) } } _dispose() { super._dispose(); (0, _frame.cancelAnimationFrame)(this._restoreStateFrameId) } _restoreVisualState(state) { if (state.fullScreen) { this._ganttViewCore.setFullScreenMode() } } _getFirstDayOfWeek(value) { return (0, _type.isDefined)(value) ? value : _date.default.firstDayOfWeekIndex() } getTaskAreaContainer() { return this._ganttViewCore.getTaskAreaContainer() } getBarManager() { return this._ganttViewCore.barManager } executeCoreCommand(id) { const command = this._ganttViewCore.getCommandByKey(id); if (command) { command.execute() } } changeTaskExpanded(id, value) { this._ganttViewCore.changeTaskExpanded(id, value) } updateView() { var _this$_ganttViewCore; null === (_this$_ganttViewCore = this._ganttViewCore) || void 0 === _this$_ganttViewCore || _this$_ganttViewCore.updateView() } updateBarItemsState() { this._ganttViewCore.barManager.updateItemsState([]) } setWidth(value) { this._ganttViewCore.setWidth(value) } _onDimensionChanged() { this._ganttViewCore.onBrowserWindowResize() } _selectTask(id) { this._ganttViewCore.selectTaskById(id) } _update(keepExpandState) { var _this$_ganttViewCore2; null === (_this$_ganttViewCore2 = this._ganttViewCore) || void 0 === _this$_ganttViewCore2 || _this$_ganttViewCore2.updateWithDataReload(keepExpandState) } _getCultureInfo() { return { monthNames: _date.default.getMonthNames("wide"), dayNames: _date.default.getDayNames("wide"), abbrMonthNames: _date.default.getMonthNames("abbreviated"), abbrDayNames: _date.default.getDayNames("abbreviated"), quarterNames: this._getQuarterNames(), amText: this._getAmText(), pmText: this._getPmText(), start: _message.default.format("dxGantt-dialogStartTitle"), end: _message.default.format("dxGantt-dialogEndTitle"), progress: _message.default.format("dxGantt-dialogProgressTitle") } } _getAmText() { return this._hasAmPM() ? _date.default.getPeriodNames()[0] : "" } _getPmText() { return this._hasAmPM() ? _date.default.getPeriodNames()[1] : "" } _hasAmPM() { const date = new Date(Date.UTC(2012, 11, 12, 3, 0, 0)); const dateString = date.toLocaleTimeString(_core.default.locale()); return dateString.match(/am|pm/i) || date.toString().match(/am|pm/i) } _getQuarterNames() { const quarterFormat = _message.default.format("dxGantt-quarter"); if (!quarterFormat) { return _date.default.getQuarterNames() } return [(0, _string.format)(quarterFormat, 1), (0, _string.format)(quarterFormat, 2), (0, _string.format)(quarterFormat, 3), (0, _string.format)(quarterFormat, 4)] } _getTaskTitlePosition(value) { switch (value) { case "outside": return 1; case "none": return 2; default: return 0 } } _getViewTypeByScaleType(scaleType) { switch (scaleType) { case "minutes": return 0; case "hours": return 1; case "sixHours": return 2; case "days": return 3; case "weeks": return 4; case "months": return 5; case "quarters": return 6; case "years": return 7; default: return } } _parseEditingSettings(value) { return { enabled: value.enabled, allowDependencyDelete: value.allowDependencyDeleting, allowDependencyInsert: value.allowDependencyAdding, allowTaskDelete: value.allowTaskDeleting, allowTaskInsert: value.allowTaskAdding, allowTaskUpdate: value.allowTaskUpdating, allowResourceDelete: value.allowResourceDeleting, allowResourceInsert: value.allowResourceAdding, allowResourceUpdate: value.allowResourceUpdating, allowTaskResourceUpdate: value.allowTaskResourceUpdating } } _parseViewTypeRangeSettings(value) { return { min: this._getViewTypeByScaleType(value.min), max: this._getViewTypeByScaleType(value.max) } } _optionChanged(args) { switch (args.name) { case "width": super._optionChanged(args); this._ganttViewCore.setWidth(args.value); break; case "height": this._ganttViewCore.setHeight(args.value); break; case "tasks": case "dependencies": case "resources": case "resourceAssignments": this._sieveOptions = void 0; this._update(true); break; case "showResources": this._ganttViewCore.setShowResources(args.value); break; case "showDependencies": this._ganttViewCore.setShowDependencies(args.value); break; case "taskTitlePosition": this._ganttViewCore.setTaskTitlePosition(this._getTaskTitlePosition(args.value)); break; case "firstDayOfWeek": this._ganttViewCore.setFirstDayOfWeek(this._getFirstDayOfWeek(args.value)); break; case "startDateRange": this._ganttViewCore.setStartDateRange(args.value); break; case "endDateRange": this._ganttViewCore.setEndDateRange(args.value); break; case "allowSelection": this._ganttViewCore.setAllowSelection(args.value); break; case "selectedRowKey": this._selectTask(args.value); break; case "editing": this._ganttViewCore.setEditingSettings(this._parseEditingSettings(args.value)); break; case "validation": this._ganttViewCore.setValidationSettings(args.value); this._update(true); break; case "showRowLines": this._ganttViewCore.setRowLinesVisible(args.value); break; case "scaleType": this._ganttViewCore.setViewType(this._getViewTypeByScaleType(args.value)); break; case "scaleTypeRange": this._ganttViewCore.setViewTypeRange(this._getViewTypeByScaleType(args.value.min), this._getViewTypeByScaleType(args.value.max)); break; case "stripLines": this._ganttViewCore.setStripLines({ stripLines: args.value }); break; case "taskTooltipContentTemplate": this._ganttViewCore.setTaskTooltipContentTemplate(args.value); break; case "taskProgressTooltipContentTemplate": this._ganttViewCore.setTaskProgressTooltipContentTemplate(args.value); break; case "taskTimeTooltipContentTemplate": this._ganttViewCore.setTaskTimeTooltipContentTemplate(args.value); break; case "taskContentTemplate": this._ganttViewCore.setTaskContentTemplate(args.value); break; case "sieve": this._sortAndFilter(args.value); break; default: super._optionChanged(args) } } get bars() { return this.option("bars") } getRowHeight() { return this.option("rowHeight") } getHeaderHeight() { return this.option("headerHeight") } getGanttTasksData() { const tasks = this.option("tasks"); const sieveOptions = this.getSieveOptions(); if (null !== sieveOptions && void 0 !== sieveOptions && sieveOptions.sievedItems && null !== sieveOptions && void 0 !== sieveOptions && sieveOptions.sieveColumn) { return sieveOptions.sievedItems } return tasks } _sortAndFilter(args) { this._sieveOptions = args; this._update(!(null !== args && void 0 !== args && args.expandTasks)); const selectedRowKey = this.option("selectedRowKey"); this._selectTask(selectedRowKey) } getSieveOptions() { return this._sieveOptions } getGanttDependenciesData() { return this.option("dependencies") } getGanttResourcesData() { return this.option("resources") } getGanttResourceAssignmentsData() { return this.option("resourceAssignments") } getGanttWorkTimeRules() { return null } getExternalTaskAreaContainer(element) { if (!this._taskAreaContainer) { this._taskAreaContainer = new _uiGanttTaskArea.TaskAreaContainer(element, this) } return this._taskAreaContainer } prepareExternalTaskAreaContainer(element, info) { if (null !== info && void 0 !== info && info.height) { this._taskAreaContainer._scrollView.option("height", info.height) } } changeGanttTaskSelection(id, selected) { this._onSelectionChanged({ id: id, selected: selected }) } onGanttScroll(scrollTop) { this._onScroll({ scrollTop: scrollTop }) } showDialog(name, parameters, callback, afterClosing) { this._onDialogShowing({ name: name, parameters: parameters, callback: callback, afterClosing: afterClosing }) } getModelChangesListener() { return this.option("modelChangesListener") } getExportInfo() { return this.option("exportInfo") } showPopupMenu(info) { this._onPopupMenuShowing(info) } hidePopupMenu(info) { this._onPopupMenuHiding(info) } getMainElement() { return this.option("mainElement").get(0) } adjustControl() { this._onAdjustControl() } getRequireFirstLoadParentAutoCalc() { return this.option("validation.autoUpdateParentTasks") } collapseAll() { this._collapseAll() } expandAll() { this._expandAll() } onTaskClick(key, event) { this._taskClick({ key: key, event: event }); return true } onTaskDblClick(key, event) { return this._taskDblClick({ key: key, event: event }) } onGanttViewContextMenu(event, key, type) { return true } getFormattedDateText(date) { let result = ""; if (date) { const datePart = _date.default.format(date, "shortDate"); const timeFormat = this._hasAmPM() ? "hh:mm a" : "HH:mm"; const timePart = _date.default.format(date, timeFormat); result = datePart + " " + timePart } return result } destroyTemplate(container) { (0, _renderer.default)(container).empty() } onTaskAreaSizeChanged(info) { const scrollView = this._taskAreaContainer._scrollView; if ((0, _type.isDefined)(null === info || void 0 === info ? void 0 : info.height)) { const direction = (null === info || void 0 === info ? void 0 : info.height) > this._taskAreaContainer.getHeight() ? "both" : "horizontal"; scrollView.option("direction", direction) } } updateGanttViewType(type) { this._onViewTypeChanged({ type: type }) } getTreeListTableStyle() { return this.callExportHelperMethod("getTreeListTableStyle") } getTreeListColCount() { return this.callExportHelperMethod("getTreeListColCount") } getTreeListHeaderInfo(colIndex) { return this.callExportHelperMethod("getTreeListHeaderInfo", colIndex) } getTreeListCellInfo(rowIndex, colIndex, key) { return this.callExportHelperMethod("getTreeListCellInfo", key, colIndex) } getTreeListEmptyDataCellInfo() { return this.callExportHelperMethod("getTreeListEmptyDataCellInfo") } callExportHelperMethod(methodName) { const helper = this.option("exportHelper"); for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { args[_key - 1] = arguments[_key] } return helper[methodName](...args) } applyTasksExpandedState(state) { var _this$_ganttViewCore3; null === (_this$_ganttViewCore3 = this._ganttViewCore) || void 0 === _this$_ganttViewCore3 || _this$_ganttViewCore3.applyTasksExpandedState(state) } getVisualStateToRestore() { var _this$_ganttViewCore4, _this$_ganttViewCore5; return { [fullScreenModeKey]: null === (_this$_ganttViewCore4 = this._ganttViewCore) || void 0 === _this$_ganttViewCore4 || null === (_this$_ganttViewCore5 = _this$_ganttViewCore4.isInFullScreenMode) || void 0 === _this$_ganttViewCore5 ? void 0 : _this$_ganttViewCore5.call(_this$_ganttViewCore4) } } } exports.GanttView = GanttView }, 16802: /*!***************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/ui/html_editor.js ***! \***************************************************************/ function(module, exports, __webpack_require__) { exports.default = void 0; var _ui = (e = __webpack_require__( /*! ./html_editor/ui.html_editor */ 4414), e && e.__esModule ? e : { default: e }); var e; exports.default = _ui.default; module.exports = exports.default; module.exports.default = exports.default }, 4414: /*!******************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/ui/html_editor/ui.html_editor.js ***! \******************************************************************************/ function(module, exports, __webpack_require__) { exports.default = void 0; var _html_editor = (e = __webpack_require__( /*! ../../__internal/ui/html_editor/html_editor */ 90660), e && e.__esModule ? e : { default: e }); var e; exports.default = _html_editor.default; module.exports = exports.default; module.exports.default = exports.default }, 22363: /*!************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/ui/informer.js ***! \************************************************************/ function(module, exports, __webpack_require__) { exports.default = void 0; var _informer = (e = __webpack_require__( /*! ../__internal/ui/informer/informer */ 83706), e && e.__esModule ? e : { default: e }); var e; exports.default = _informer.default; module.exports = exports.default; module.exports.default = exports.default }, 3121: /*!********************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/ui/list.js ***! \********************************************************/ function(module, exports, __webpack_require__) { exports.default = void 0; var _list_light = (e = __webpack_require__( /*! ./list_light */ 80070), e && e.__esModule ? e : { default: e }); var e; __webpack_require__( /*! ../__internal/ui/list/modules/m_selection */ 44804); __webpack_require__( /*! ../__internal/ui/list/modules/m_deleting */ 14128); __webpack_require__( /*! ../__internal/ui/list/modules/m_dragging */ 27721); __webpack_require__( /*! ../__internal/ui/list/modules/m_context */ 79269); __webpack_require__( /*! ../__internal/ui/list/modules/m_search */ 18928); exports.default = _list_light.default; module.exports = exports.default; module.exports.default = exports.default }, 80070: /*!**************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/ui/list_light.js ***! \**************************************************************/ function(module, exports, __webpack_require__) { exports.default = void 0; var _m_listEdit = _interopRequireDefault(__webpack_require__( /*! ../__internal/ui/list/m_list.edit.search */ 21978)); var _component_registrator = _interopRequireDefault(__webpack_require__( /*! ../core/component_registrator */ 92848)); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } }(0, _component_registrator.default)("dxList", _m_listEdit.default); exports.default = _m_listEdit.default; module.exports = exports.default; module.exports.default = exports.default }, 11979: /*!******************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/ui/load_indicator.js ***! \******************************************************************/ function(module, exports, __webpack_require__) { exports.default = void 0; var _m_load_indicator = (e = __webpack_require__( /*! ../__internal/ui/m_load_indicator */ 52621), e && e.__esModule ? e : { default: e }); var e; exports.default = _m_load_indicator.default; module.exports = exports.default; module.exports.default = exports.default }, 31876: /*!**************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/ui/load_panel.js ***! \**************************************************************/ function(module, exports, __webpack_require__) { exports.default = void 0; var _m_load_panel = (e = __webpack_require__( /*! ../__internal/ui/m_load_panel */ 14474), e && e.__esModule ? e : { default: e }); var e; exports.default = _m_load_panel.default; module.exports = exports.default; module.exports.default = exports.default }, 99203: /*!**********************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/ui/lookup.js ***! \**********************************************************/ function(module, exports, __webpack_require__) { exports.default = void 0; var _m_lookup = (e = __webpack_require__( /*! ../__internal/ui/m_lookup */ 67825), e && e.__esModule ? e : { default: e }); var e; exports.default = _m_lookup.default; module.exports = exports.default; module.exports.default = exports.default }, 55211: /*!*******************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/ui/map.js ***! \*******************************************************/ function(module, exports, __webpack_require__) { exports.default = void 0; var _m_map = (e = __webpack_require__( /*! ../__internal/ui/map/m_map */ 16028), e && e.__esModule ? e : { default: e }); var e; exports.default = _m_map.default; module.exports = exports.default; module.exports.default = exports.default }, 1614: /*!********************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/ui/menu.js ***! \********************************************************/ function(module, exports, __webpack_require__) { exports.default = void 0; var _m_menu = (e = __webpack_require__( /*! ../__internal/ui/menu/m_menu */ 54572), e && e.__esModule ? e : { default: e }); var e; exports.default = _m_menu.default; module.exports = exports.default; module.exports.default = exports.default }, 24150: /*!**************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/ui/multi_view.js ***! \**************************************************************/ function(module, exports, __webpack_require__) { exports.default = void 0; var _m_multi_view = (e = __webpack_require__( /*! ../__internal/ui/m_multi_view */ 95916), e && e.__esModule ? e : { default: e }); var e; exports.default = _m_multi_view.default; module.exports = exports.default; module.exports.default = exports.default }, 93380: /*!**********************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/ui/notify.js ***! \**********************************************************/ function(module, exports, __webpack_require__) { exports.default = void 0; var _m_notify = (e = __webpack_require__( /*! ../__internal/ui/m_notify */ 93666), e && e.__esModule ? e : { default: e }); var e; exports.default = _m_notify.default; module.exports = exports.default; module.exports.default = exports.default }, 48042: /*!**************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/ui/number_box.js ***! \**************************************************************/ function(module, exports, __webpack_require__) { exports.default = void 0; var _m_number_box = (e = __webpack_require__( /*! ../__internal/ui/number_box/m_number_box */ 42284), e && e.__esModule ? e : { default: e }); var e; exports.default = _m_number_box.default; module.exports = exports.default; module.exports.default = exports.default }, 89132: /*!**********************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/ui/overlay/ui.overlay.js ***! \**********************************************************************/ function(module, exports, __webpack_require__) { exports.default = void 0; var _m_overlay = (e = __webpack_require__( /*! ../../__internal/ui/overlay/m_overlay */ 68632), e && e.__esModule ? e : { default: e }); var e; exports.default = _m_overlay.default; module.exports = exports.default; module.exports.default = exports.default }, 38389: /*!**************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/ui/pagination.js ***! \**************************************************************/ function(module, exports, __webpack_require__) { exports.default = void 0; var _pagination = _interopRequireDefault(__webpack_require__( /*! ../__internal/pagination/wrappers/pagination */ 76988)); var _component_registrator = _interopRequireDefault(__webpack_require__( /*! ../core/component_registrator */ 92848)); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } exports.default = _pagination.default; (0, _component_registrator.default)("dxPagination", _pagination.default); module.exports = exports.default; module.exports.default = exports.default }, 49344: /*!**************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/ui/pivot_grid.js ***! \**************************************************************/ function(module, exports, __webpack_require__) { exports.default = void 0; var _ui = (e = __webpack_require__( /*! ./pivot_grid/ui.pivot_grid */ 49406), e && e.__esModule ? e : { default: e }); var e; exports.default = _ui.default; module.exports = exports.default; module.exports.default = exports.default }, 55067: /*!**************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/ui/pivot_grid/data_source.js ***! \**************************************************************************/ function(module, exports, __webpack_require__) { exports.default = void 0; var _m_data_source = __webpack_require__( /*! ../../__internal/grids/pivot_grid/data_source/m_data_source */ 87993); exports.default = _m_data_source.PivotGridDataSource; module.exports = exports.default; module.exports.default = exports.default }, 35982: /*!******************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/ui/pivot_grid/ui.pivot_grid.field_chooser.js ***! \******************************************************************************************/ function(module, exports, __webpack_require__) { exports.default = void 0; var _m_field_chooser = __webpack_require__( /*! ../../__internal/grids/pivot_grid/field_chooser/m_field_chooser */ 62989); exports.default = _m_field_chooser.FieldChooser; module.exports = exports.default; module.exports.default = exports.default }, 49406: /*!****************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/ui/pivot_grid/ui.pivot_grid.js ***! \****************************************************************************/ function(module, exports, __webpack_require__) { exports.default = void 0; var _m_widget = __webpack_require__( /*! ../../__internal/grids/pivot_grid/m_widget */ 16508); exports.default = _m_widget.PivotGrid; module.exports = exports.default; module.exports.default = exports.default }, 80445: /*!*************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/ui/pivot_grid/xmla_store.js ***! \*************************************************************************/ function(module, exports, __webpack_require__) { exports.default = void 0; var _m_xmla_store = __webpack_require__( /*! ../../__internal/grids/pivot_grid/xmla_store/m_xmla_store */ 48063); exports.default = _m_xmla_store.XmlaStore; module.exports = exports.default; module.exports.default = exports.default }, 55633: /*!****************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/ui/pivot_grid_field_chooser.js ***! \****************************************************************************/ function(module, exports, __webpack_require__) { exports.default = void 0; var _uiPivot_grid = (e = __webpack_require__( /*! ./pivot_grid/ui.pivot_grid.field_chooser */ 35982), e && e.__esModule ? e : { default: e }); var e; exports.default = _uiPivot_grid.default; module.exports = exports.default; module.exports.default = exports.default }, 46184: /*!***********************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/ui/popover.js ***! \***********************************************************/ function(module, exports, __webpack_require__) { exports.default = void 0; var _uiPopover = (e = __webpack_require__( /*! ./popover/ui.popover.full */ 82383), e && e.__esModule ? e : { default: e }); var e; exports.default = _uiPopover.default; module.exports = exports.default; module.exports.default = exports.default }, 82383: /*!***************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/ui/popover/ui.popover.full.js ***! \***************************************************************************/ function(module, exports, __webpack_require__) { exports.default = void 0; var _m_popover = (e = __webpack_require__( /*! ../../__internal/ui/popover/m_popover.full */ 22085), e && e.__esModule ? e : { default: e }); var e; exports.default = _m_popover.default; module.exports = exports.default; module.exports.default = exports.default }, 98894: /*!**********************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/ui/popover/ui.popover.js ***! \**********************************************************************/ function(module, exports, __webpack_require__) { exports.default = void 0; var _m_popover = (e = __webpack_require__( /*! ../../__internal/ui/popover/m_popover */ 7784), e && e.__esModule ? e : { default: e }); var e; exports.default = _m_popover.default; module.exports = exports.default; module.exports.default = exports.default }, 97643: /*!*********************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/ui/popup.js ***! \*********************************************************/ function(module, exports, __webpack_require__) { exports.default = void 0; var _uiPopup = (e = __webpack_require__( /*! ./popup/ui.popup.full */ 92861), e && e.__esModule ? e : { default: e }); var e; exports.default = _uiPopup.default; module.exports = exports.default; module.exports.default = exports.default }, 92861: /*!***********************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/ui/popup/ui.popup.full.js ***! \***********************************************************************/ function(module, exports, __webpack_require__) { exports.default = void 0; var _m_popup = (e = __webpack_require__( /*! ../../__internal/ui/popup/m_popup.full */ 53973), e && e.__esModule ? e : { default: e }); var e; exports.default = _m_popup.default; module.exports = exports.default; module.exports.default = exports.default }, 10720: /*!******************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/ui/popup/ui.popup.js ***! \******************************************************************/ function(module, exports, __webpack_require__) { exports.default = void 0; var _m_popup = (e = __webpack_require__( /*! ../../__internal/ui/popup/m_popup */ 43864), e && e.__esModule ? e : { default: e }); var e; exports.default = _m_popup.default; module.exports = exports.default; module.exports.default = exports.default }, 58436: /*!****************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/ui/progress_bar.js ***! \****************************************************************/ function(module, exports, __webpack_require__) { exports.default = void 0; var _m_progress_bar = (e = __webpack_require__( /*! ../__internal/ui/m_progress_bar */ 74538), e && e.__esModule ? e : { default: e }); var e; exports.default = _m_progress_bar.default; module.exports = exports.default; module.exports.default = exports.default }, 84798: /*!***************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/ui/radio_group.js ***! \***************************************************************/ function(module, exports, __webpack_require__) { exports.default = void 0; var _radio_group = (e = __webpack_require__( /*! ./radio_group/radio_group */ 60266), e && e.__esModule ? e : { default: e }); var e; exports.default = _radio_group.default; module.exports = exports.default; module.exports.default = exports.default }, 86657: /*!****************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/ui/radio_group/radio_button.js ***! \****************************************************************************/ function(module, exports, __webpack_require__) { exports.default = void 0; var _m_radio_button = (e = __webpack_require__( /*! ../../__internal/ui/radio_group/m_radio_button */ 49167), e && e.__esModule ? e : { default: e }); var e; exports.default = _m_radio_button.default; module.exports = exports.default; module.exports.default = exports.default }, 60266: /*!***************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/ui/radio_group/radio_group.js ***! \***************************************************************************/ function(module, exports, __webpack_require__) { exports.default = void 0; var _m_radio_group = (e = __webpack_require__( /*! ../../__internal/ui/radio_group/m_radio_group */ 72076), e && e.__esModule ? e : { default: e }); var e; exports.default = _m_radio_group.default; module.exports = exports.default; module.exports.default = exports.default }, 80790: /*!****************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/ui/range_slider.js ***! \****************************************************************/ function(module, exports, __webpack_require__) { exports.default = void 0; var _m_range_slider = (e = __webpack_require__( /*! ../__internal/ui/m_range_slider */ 49824), e && e.__esModule ? e : { default: e }); var e; exports.default = _m_range_slider.default; module.exports = exports.default; module.exports.default = exports.default }, 28416: /*!*************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/ui/resizable.js ***! \*************************************************************/ function(module, exports, __webpack_require__) { exports.default = void 0; var _m_resizable = (e = __webpack_require__( /*! ../__internal/ui/resizable/m_resizable */ 27560), e && e.__esModule ? e : { default: e }); var e; exports.default = _m_resizable.default; module.exports = exports.default; module.exports.default = exports.default }, 43597: /*!******************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/ui/responsive_box.js ***! \******************************************************************/ function(module, exports, __webpack_require__) { exports.default = void 0; var _m_responsive_box = (e = __webpack_require__( /*! ../__internal/ui/m_responsive_box */ 33979), e && e.__esModule ? e : { default: e }); var e; exports.default = _m_responsive_box.default; module.exports = exports.default; module.exports.default = exports.default }, 17636: /*!*************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/ui/scheduler.js ***! \*************************************************************/ function(module, exports, __webpack_require__) { exports.default = void 0; var _m_scheduler = (e = __webpack_require__( /*! ../__internal/scheduler/m_scheduler */ 21155), e && e.__esModule ? e : { default: e }); var e; exports.default = _m_scheduler.default; module.exports = exports.default; module.exports.default = exports.default }, 91374: /*!***************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/ui/scroll_view.js ***! \***************************************************************/ function(module, exports, __webpack_require__) { exports.default = void 0; var _m_scroll_view = (e = __webpack_require__( /*! ../__internal/ui/scroll_view/m_scroll_view */ 97972), e && e.__esModule ? e : { default: e }); var e; exports.default = _m_scroll_view.default; module.exports = exports.default; module.exports.default = exports.default }, 20876: /*!*****************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/ui/scroll_view/ui.scrollable.js ***! \*****************************************************************************/ function(module, exports, __webpack_require__) { exports.default = void 0; var _m_scrollable = (e = __webpack_require__( /*! ../../__internal/ui/scroll_view/m_scrollable */ 94790), e && e.__esModule ? e : { default: e }); var e; exports.default = _m_scrollable.default; module.exports = exports.default; module.exports.default = exports.default }, 60695: /*!**************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/ui/select_box.js ***! \**************************************************************/ function(module, exports, __webpack_require__) { exports.default = void 0; var _m_select_box = (e = __webpack_require__( /*! ../__internal/ui/m_select_box */ 30149), e && e.__esModule ? e : { default: e }); var e; exports.default = _m_select_box.default; module.exports = exports.default; module.exports.default = exports.default }, 16191: /*!************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/ui/shared/accessibility.js ***! \************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { exports.hiddenFocus = function(element, preventScroll) { isHiddenFocusing = true; element.focus({ preventScroll: preventScroll }); isHiddenFocusing = false }; exports.registerKeyboardAction = function(viewName, instance, $element, selector, action, executeKeyDown) { if (instance.option("useLegacyKeyboardNavigation")) { return _common.noop } const getMainElement = () => (0, _renderer.default)(instance.element()); const keyDownHandler = e => function(viewName, instance, event, action, $mainElement, executeKeyDown) { const isHandled = function(instance, event, executeAction) { const args = { event: event, handled: false }; if (executeAction) { executeAction(args) } else { instance._createActionByOption("onKeyDown")(args) } return args.handled }(instance, event.originalEvent, executeKeyDown); if (isHandled) { return } const keyName = (0, _index.normalizeKeyName)(event); if ("enter" === keyName || "space" === keyName) { saveFocusedElementInfo(event.target, instance); action && action({ event: event }) } else if ("tab" === keyName) { $mainElement.addClass(FOCUS_STATE_CLASS) } else { selectView(viewName, instance, event) } }(viewName, instance, e, action, getMainElement(), executeKeyDown); const mouseDownHandler = () => { isMouseDown = true; getMainElement().removeClass(FOCUS_STATE_CLASS) }; const focusinHandler = () => { if (needToSkipFocusin) { needToSkipFocusin = false; return } const needShowOverlay = !isMouseDown && !isHiddenFocusing; if (needShowOverlay) { getMainElement().addClass(FOCUS_STATE_CLASS) } isMouseDown = false }; const mouseUpHandler = () => { isMouseDown = false }; _events_engine.default.on($element, "keydown", selector, keyDownHandler); _events_engine.default.on($element, "mousedown", selector, mouseDownHandler); _events_engine.default.on($element, "focusin", selector, focusinHandler); _events_engine.default.on($element, "mouseup contextmenu", selector, mouseUpHandler); return () => { _events_engine.default.off($element, "keydown", selector, keyDownHandler); _events_engine.default.off($element, "mousedown", selector, mouseDownHandler); _events_engine.default.off($element, "focusin", selector, focusinHandler); _events_engine.default.off($element, "mouseup contextmenu", selector, mouseUpHandler) } }; exports.restoreFocus = function(instance) { if (!instance.option("useLegacyKeyboardNavigation") && focusedElementInfo) { const viewInstance = focusedElementInfo.viewInstance; if (viewInstance) { const $activeElements = getActiveAccessibleElements(focusedElementInfo.ariaLabel, viewInstance.element()); const $targetElement = $activeElements.eq(focusedElementInfo.index); focusedElementInfo = null; _events_engine.default.trigger($targetElement, "focus") } } }; exports.saveFocusedElementInfo = saveFocusedElementInfo; exports.selectView = selectView; exports.setTabIndex = function(instance, $element) { if (!instance.option("useLegacyKeyboardnavigation")) { $element.attr("tabindex", instance.option("tabindex") || 0) } }; exports.subscribeVisibilityChange = function() { _events_engine.default.on(_dom_adapter.default.getDocument(), "visibilitychange", onDocumentVisibilityChange) }; exports.unsubscribeVisibilityChange = function() { _events_engine.default.off(_dom_adapter.default.getDocument(), "visibilitychange", onDocumentVisibilityChange) }; var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../core/renderer */ 64553)); var _events_engine = _interopRequireDefault(__webpack_require__( /*! ../../common/core/events/core/events_engine */ 92774)); var _index = __webpack_require__( /*! ../../common/core/events/utils/index */ 98834); var _extend = __webpack_require__( /*! ../../core/utils/extend */ 52576); var _dom_adapter = _interopRequireDefault(__webpack_require__( /*! ../../core/dom_adapter */ 64960)); var _common = __webpack_require__( /*! ../../core/utils/common */ 17781); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } const FOCUS_STATE_CLASS = "dx-state-focused"; const FOCUS_DISABLED_CLASS = "dx-cell-focus-disabled"; const viewItemSelectorMap = { groupPanel: [".dx-datagrid-group-panel .dx-group-panel-item[tabindex]"], columnHeaders: [".dx-datagrid-headers .dx-header-row > td.dx-datagrid-action", ".dx-treelist-headers .dx-header-row > td.dx-treelist-action"], filterRow: [".dx-datagrid-headers .dx-datagrid-filter-row .dx-editor-cell .dx-texteditor-input", ".dx-treelist-headers .dx-treelist-filter-row .dx-editor-cell .dx-texteditor-input"], rowsView: [".dx-row-focused", ".dx-datagrid-rowsview .dx-row[tabindex]", ".dx-datagrid-rowsview .dx-row > td[tabindex]", ".dx-datagrid-rowsview .dx-row > td", ".dx-treelist-rowsview .dx-row[tabindex]", ".dx-treelist-rowsview .dx-row > td[tabindex]", ".dx-treelist-rowsview .dx-row > td"], footer: [".dx-datagrid-total-footer .dx-datagrid-summary-item", ".dx-treelist-total-footer .dx-treelist-summary-item"], filterPanel: [".dx-datagrid-filter-panel .dx-icon-filter", ".dx-treelist-filter-panel .dx-icon-filter"], pager: [".dx-datagrid-pager [tabindex]", ".dx-treelist-pager [tabindex]"] }; let isMouseDown = false; let isHiddenFocusing = false; let focusedElementInfo = null; let needToSkipFocusin = false; function saveFocusedElementInfo(target, instance) { const $target = (0, _renderer.default)(target); const ariaLabel = $target.attr("aria-label"); const $activeElements = getActiveAccessibleElements(ariaLabel, instance.element()); const targetIndex = $activeElements.index($target); focusedElementInfo = (0, _extend.extend)({}, { ariaLabel: ariaLabel, index: targetIndex }, { viewInstance: instance }) } function getActiveAccessibleElements(ariaLabel, viewElement) { const $viewElement = (0, _renderer.default)(viewElement); let $activeElements; if (ariaLabel) { const escapedAriaLabel = null === ariaLabel || void 0 === ariaLabel ? void 0 : ariaLabel.replace(/\\/g, "\\\\").replace(/"/g, '\\"'); $activeElements = $viewElement.find(`[aria-label="${escapedAriaLabel}"][tabindex]`) } else { $activeElements = $viewElement.find("[tabindex]") } return $activeElements } function findFocusedViewElement(instanceRootDomNode, viewSelectors, element) { const root = instanceRootDomNode ?? (null === element || void 0 === element ? void 0 : element.getRootNode()) ?? _dom_adapter.default.getDocument(); if (!root) { return } const $root = (0, _renderer.default)(root); for (const index in viewSelectors) { const selector = viewSelectors[index]; const $focusViewElement = $root.find(selector).first(); if ($focusViewElement.length) { return $focusViewElement } } } function onDocumentVisibilityChange() { const focusedElement = _dom_adapter.default.getActiveElement(); needToSkipFocusin = focusedElement && !focusedElement.closest(`.${FOCUS_STATE_CLASS}`) } function selectView(viewName, instance, event) { const keyName = (0, _index.normalizeKeyName)(event); if (event.ctrlKey && ("upArrow" === keyName || "downArrow" === keyName)) { var _instance$component, _instance$component$e; const viewNames = Object.keys(viewItemSelectorMap); let viewItemIndex = viewNames.indexOf(viewName); const instanceRootDomNode = null === instance || void 0 === instance || null === (_instance$component = instance.component) || void 0 === _instance$component || null === (_instance$component$e = _instance$component.element) || void 0 === _instance$component$e ? void 0 : _instance$component$e.call(_instance$component); while (viewItemIndex >= 0 && viewItemIndex < viewNames.length) { viewItemIndex = "upArrow" === keyName ? --viewItemIndex : ++viewItemIndex; const viewName = viewNames[viewItemIndex]; const viewSelectors = viewItemSelectorMap[viewName]; const $focusViewElement = findFocusedViewElement(instanceRootDomNode, viewSelectors, event.target); if ($focusViewElement && $focusViewElement.length) { $focusViewElement.attr("tabindex", instance.option("tabindex") || 0); _events_engine.default.trigger($focusViewElement, "focus"); $focusViewElement.removeClass(FOCUS_DISABLED_CLASS); break } } } } }, 56417: /*!********************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/ui/shared/filtering.js ***! \********************************************************************/ function(module, exports, __webpack_require__) { exports.default = void 0; var _type = __webpack_require__( /*! ../../core/utils/type */ 11528); var _iterator = __webpack_require__( /*! ../../core/utils/iterator */ 21274); const DEFAULT_DATE_INTERVAL = ["year", "month", "day"]; const DEFAULT_DATETIME_INTERVAL = ["year", "month", "day", "hour", "minute"]; const isDateType = function(dataType) { return "date" === dataType || "datetime" === dataType }; const getGroupInterval = function(column) { let index; let result = []; const dateIntervals = ["year", "month", "day", "hour", "minute", "second"]; const groupInterval = column.headerFilter && column.headerFilter.groupInterval; const interval = "quarter" === groupInterval ? "month" : groupInterval; if (isDateType(column.dataType) && null !== groupInterval) { result = "datetime" === column.dataType ? DEFAULT_DATETIME_INTERVAL : DEFAULT_DATE_INTERVAL; index = dateIntervals.indexOf(interval); if (index >= 0) { result = dateIntervals.slice(0, index); result.push(groupInterval); return result } return result } else if ((0, _type.isDefined)(groupInterval)) { return Array.isArray(groupInterval) ? groupInterval : [groupInterval] } }; exports.default = function() { const getFilterSelector = function(column, target) { let selector = column.dataField || column.selector; if ("search" === target) { selector = column.displayField || function(column) { var _column$calculateDisp; return null !== (_column$calculateDisp = column.calculateDisplayValue) && void 0 !== _column$calculateDisp && _column$calculateDisp.context ? column.calculateDisplayValue : null }(column) || selector } return selector }; const getFilterExpressionByRange = function(filterValue, target) { const column = this; let endFilterValue; let startFilterExpression; let endFilterExpression; const selector = getFilterSelector(column, target); if (Array.isArray(filterValue) && (0, _type.isDefined)(filterValue[0]) && (0, _type.isDefined)(filterValue[1])) { startFilterExpression = [selector, ">=", filterValue[0]]; endFilterExpression = [selector, "<=", filterValue[1]]; if (isDateType(column.dataType) && (date = filterValue[1], date.getHours() + date.getMinutes() + date.getSeconds() + date.getMilliseconds() < 1)) { endFilterValue = new Date(filterValue[1].getTime()); if ("date" === column.dataType) { endFilterValue.setDate(filterValue[1].getDate() + 1) } endFilterExpression = [selector, "<", endFilterValue] } return [startFilterExpression, "and", endFilterExpression] } var date }; const getFilterExpressionForDate = function(filterValue, selectedFilterOperation, target) { const column = this; let dateStart; let dateEnd; let dateInterval; const values = function(dateValue) { if ((0, _type.isDate)(dateValue)) { return [dateValue.getFullYear(), dateValue.getMonth(), dateValue.getDate(), dateValue.getHours(), dateValue.getMinutes(), dateValue.getSeconds()] } return (0, _iterator.map)(("" + dateValue).split("/"), (function(value, index) { return 1 === index ? Number(value) - 1 : Number(value) })) }(filterValue); const selector = getFilterSelector(column, target); if ("headerFilter" === target) { dateInterval = getGroupInterval(column)[values.length - 1] } else if ("datetime" === column.dataType) { dateInterval = "minute" } switch (dateInterval) { case "year": dateStart = new Date(values[0], 0, 1); dateEnd = new Date(values[0] + 1, 0, 1); break; case "month": dateStart = new Date(values[0], values[1], 1); dateEnd = new Date(values[0], values[1] + 1, 1); break; case "quarter": dateStart = new Date(values[0], 3 * values[1], 1); dateEnd = new Date(values[0], 3 * values[1] + 3, 1); break; case "hour": dateStart = new Date(values[0], values[1], values[2], values[3]); dateEnd = new Date(values[0], values[1], values[2], values[3] + 1); break; case "minute": dateStart = new Date(values[0], values[1], values[2], values[3], values[4]); dateEnd = new Date(values[0], values[1], values[2], values[3], values[4] + 1); break; case "second": dateStart = new Date(values[0], values[1], values[2], values[3], values[4], values[5]); dateEnd = new Date(values[0], values[1], values[2], values[3], values[4], values[5] + 1); break; default: dateStart = new Date(values[0], values[1], values[2]); dateEnd = new Date(values[0], values[1], values[2] + 1) } switch (selectedFilterOperation) { case "<": return [selector, "<", dateStart]; case "<=": return [selector, "<", dateEnd]; case ">": return [selector, ">=", dateEnd]; case ">=": return [selector, ">=", dateStart]; case "<>": return [ [selector, "<", dateStart], "or", [selector, ">=", dateEnd] ]; default: return [ [selector, ">=", dateStart], "and", [selector, "<", dateEnd] ] } }; const getFilterExpressionForNumber = function(filterValue, selectedFilterOperation, target) { const selector = getFilterSelector(this, target); const groupInterval = getGroupInterval(this); if ("headerFilter" === target && groupInterval && (0, _type.isDefined)(filterValue)) { const values = ("" + filterValue).split("/"); const value = Number(values[values.length - 1]); const interval = groupInterval[values.length - 1]; const startFilterValue = [selector, ">=", value]; const endFilterValue = [selector, "<", value + interval]; const condition = [startFilterValue, "and", endFilterValue]; return condition } return [selector, selectedFilterOperation || "=", filterValue] }; return { defaultCalculateFilterExpression: function(filterValue, selectedFilterOperation, target) { const column = this; const selector = getFilterSelector(column, target); const isSearchByDisplayValue = column.calculateDisplayValue && "search" === target; const dataType = isSearchByDisplayValue && column.lookup && column.lookup.dataType || column.dataType; let filter = null; if (("headerFilter" === target || "filterBuilder" === target) && null === filterValue) { filter = [selector, selectedFilterOperation || "=", null]; if ("string" === dataType) { filter = [filter, "=" === selectedFilterOperation ? "or" : "and", [selector, selectedFilterOperation || "=", ""]] } } else if ("string" === dataType && (!column.lookup || isSearchByDisplayValue)) { filter = [selector, selectedFilterOperation || "contains", filterValue] } else if ("between" === selectedFilterOperation) { return getFilterExpressionByRange.apply(column, [filterValue, target]) } else if (isDateType(dataType) && (0, _type.isDefined)(filterValue)) { return getFilterExpressionForDate.apply(column, arguments) } else if ("number" === dataType) { return getFilterExpressionForNumber.apply(column, arguments) } else { filter = [selector, selectedFilterOperation || "=", filterValue] } return filter }, getGroupInterval: getGroupInterval } }(); module.exports = exports.default; module.exports.default = exports.default }, 87093: /*!**********************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/ui/shared/ui.editor_factory_mixin.js ***! \**********************************************************************************/ function(module, exports, __webpack_require__) { exports.default = void 0; var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../core/renderer */ 64553)); var _events_engine = _interopRequireDefault(__webpack_require__( /*! ../../common/core/events/core/events_engine */ 92774)); var _type = __webpack_require__( /*! ../../core/utils/type */ 11528); var _variable_wrapper = _interopRequireDefault(__webpack_require__( /*! ../../core/utils/variable_wrapper */ 40216)); var _data = __webpack_require__( /*! ../../core/utils/data */ 31e3); var _browser = _interopRequireDefault(__webpack_require__( /*! ../../core/utils/browser */ 48314)); var _extend = __webpack_require__( /*! ../../core/utils/extend */ 52576); var _devices = _interopRequireDefault(__webpack_require__( /*! ../../core/devices */ 65951)); var _element = __webpack_require__( /*! ../../core/element */ 61404); var _utils = __webpack_require__( /*! ../../common/data/data_source/utils */ 97169); var _index = __webpack_require__( /*! ../../common/core/events/utils/index */ 98834); __webpack_require__( /*! ../text_box */ 20780); __webpack_require__( /*! ../number_box */ 48042); __webpack_require__( /*! ../check_box */ 94319); __webpack_require__( /*! ../select_box */ 60695); __webpack_require__( /*! ../date_box */ 2739); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } const { isWrapped: isWrapped } = _variable_wrapper.default; const getResultConfig = function(config, options) { return (0, _extend.extend)(config, { readOnly: options.readOnly, placeholder: options.placeholder, inputAttr: { id: options.id, "aria-labelledby": options["aria-labelledby"] }, tabIndex: options.tabIndex }, options.editorOptions) }; const checkEnterBug = function() { return _browser.default.mozilla || _devices.default.real().ios }; const getTextEditorConfig = function(options) { const data = {}; const isEnterBug = checkEnterBug(); const sharedData = options.sharedData || data; return getResultConfig({ placeholder: options.placeholder, width: options.width, value: options.value, onValueChanged: function(e) { const needDelayedUpdate = "filterRow" === options.parentType || "searchPanel" === options.parentType; const isInputOrKeyUpEvent = e.event && ("input" === e.event.type || "keyup" === e.event.type); const updateValue = function(e, notFireEvent) { options && options.setValue(e.value, notFireEvent) }; clearTimeout(data.valueChangeTimeout); if (isInputOrKeyUpEvent && needDelayedUpdate) { sharedData.valueChangeTimeout = data.valueChangeTimeout = setTimeout((function() { updateValue(e, data.valueChangeTimeout !== sharedData.valueChangeTimeout) }), (0, _type.isDefined)(options.updateValueTimeout) ? options.updateValueTimeout : 0) } else { updateValue(e) } }, onKeyDown: function(e) { if (isEnterBug && "enter" === (0, _index.normalizeKeyName)(e.event)) { _events_engine.default.trigger((0, _renderer.default)(e.component._input()), "change") } }, valueChangeEvent: "change" + ("filterRow" === options.parentType ? " keyup input" : "") }, options) }; const prepareDateBox = function(options) { options.editorName = "dxDateBox"; options.editorOptions = getResultConfig({ value: options.value, onValueChanged: function(args) { options.setValue(args.value) }, onKeyDown: function(_ref) { let { component: component, event: event } = _ref; const useMaskBehavior = component.option("useMaskBehavior"); if ((checkEnterBug() || useMaskBehavior) && "enter" === (0, _index.normalizeKeyName)(event)) { component.blur(); component.focus() } }, displayFormat: options.format, type: options.dataType, dateSerializationFormat: null, width: "filterBuilder" === options.parentType ? void 0 : "auto" }, options) }; const prepareTextBox = function(options) { const config = getTextEditorConfig(options); const isSearching = "searchPanel" === options.parentType; if (options.editorType && "dxTextBox" !== options.editorType) { config.value = options.value } else { config.value = (value = options.value, (0, _type.isDefined)(value) ? value.toString() : "") } var value; config.valueChangeEvent += isSearching ? " keyup input search" : ""; config.mode = config.mode || (isSearching ? "search" : "text"); options.editorName = "dxTextBox"; options.editorOptions = config }; const prepareNumberBox = function(options) { const config = getTextEditorConfig(options); config.value = (0, _type.isDefined)(options.value) ? options.value : null; options.editorName = "dxNumberBox"; options.editorOptions = config }; function prepareLookupEditor(options) { const lookup = options.lookup; let displayGetter; let dataSource; let postProcess; const isFilterRow = "filterRow" === options.parentType; if (lookup) { displayGetter = (0, _data.compileGetter)(lookup.displayExpr); dataSource = lookup.dataSource; if ((0, _type.isFunction)(dataSource) && !isWrapped(dataSource)) { dataSource = dataSource(options.row || {}); ! function(options) { if (options.row && options.row.watch && "dataRow" === options.parentType) { const editorOptions = options.editorOptions || {}; options.editorOptions = editorOptions; let selectBox; const onInitialized = editorOptions.onInitialized; editorOptions.onInitialized = function(e) { onInitialized && onInitialized.apply(this, arguments); selectBox = e.component; selectBox.on("disposing", stopWatch) }; let dataSource; const stopWatch = options.row.watch((() => { dataSource = options.lookup.dataSource(options.row); return dataSource && dataSource.filter }), (() => { selectBox.option("dataSource", dataSource) }), (row => { options.row = row })) } }(options) } if ((0, _type.isObject)(dataSource) || Array.isArray(dataSource)) { dataSource = (0, _utils.normalizeDataSourceOptions)(dataSource); if (isFilterRow) { postProcess = dataSource.postProcess; dataSource.postProcess = function(items) { if (0 === this.pageIndex()) { items = items.slice(0); items.unshift(null) } if (postProcess) { return postProcess.call(this, items) } return items } } } const allowClearing = Boolean(lookup.allowClearing && !isFilterRow); options.editorName = options.editorType ?? "dxSelectBox"; options.editorOptions = getResultConfig({ searchEnabled: true, value: options.value, valueExpr: options.lookup.valueExpr, searchExpr: options.lookup.searchExpr || options.lookup.displayExpr, allowClearing: allowClearing, showClearButton: allowClearing, displayExpr: function(data) { if (null === data) { return options.showAllText } return displayGetter(data) }, dataSource: dataSource, onValueChanged: function(e) { const params = [e.value]; !isFilterRow && params.push(e.component.option("text")); options.setValue.apply(this, params) } }, options) } } function prepareCheckBox(options) { options.editorName = "dxCheckBox"; options.editorOptions = getResultConfig({ elementAttr: { id: options.id }, value: (0, _type.isDefined)(options.value) ? options.value : void 0, hoverStateEnabled: !options.readOnly, focusStateEnabled: !options.readOnly, activeStateEnabled: false, onValueChanged: function(e) { options.setValue && options.setValue(e.value, e) } }, options) } const prepareCustomEditor = options => { options.editorName = options.editorType; options.editorOptions = getResultConfig({ value: options.value, onValueChanged: function(args) { options.setValue(args.value) } }, options) }; const prepareEditor = options => { const prepareDefaultEditor = { dxDateBox: prepareDateBox, dxCheckBox: prepareCheckBox, dxNumberBox: prepareNumberBox, dxTextBox: prepareTextBox }; if (options.lookup) { prepareLookupEditor(options) } else if (options.editorType) { (prepareDefaultEditor[options.editorType] ?? prepareCustomEditor)(options) } else { switch (options.dataType) { case "date": case "datetime": prepareDateBox(options); break; case "boolean": ! function(options) { if ("filterRow" === options.parentType || "filterBuilder" === options.parentType) { prepareLookupEditor((0, _extend.extend)(options, { lookup: { displayExpr: function(data) { if (true === data) { return options.trueText || "true" } else if (false === data) { return options.falseText || "false" } }, dataSource: [true, false] } })) } else { prepareCheckBox(options) } }(options); break; case "number": prepareNumberBox(options); break; default: prepareTextBox(options) } } }; exports.default = Base => class extends Base { createEditor($container, options) { options.cancel = false; options.editorElement = (0, _element.getPublicElement)($container); if (!(0, _type.isDefined)(options.tabIndex)) { options.tabIndex = this.option("tabIndex") } prepareEditor(options); this.executeAction("onEditorPreparing", options); if (options.cancel) { return } if ("dataRow" === options.parentType && !options.isOnForm && !(0, _type.isDefined)(options.editorOptions.showValidationMark)) { options.editorOptions.showValidationMark = false }! function(that, options) { const $editorElement = (0, _renderer.default)(options.editorElement); if (options.editorName && options.editorOptions && $editorElement[options.editorName]) { if ("dxCheckBox" === options.editorName || "dxSwitch" === options.editorName) { if (!options.isOnForm) { $editorElement.addClass(that.addWidgetPrefix("checkbox-size")); $editorElement.parent().addClass("dx-editor-inline-block") } } that._createComponent($editorElement, options.editorName, options.editorOptions); if ("dxDateBox" === options.editorName) { const dateBox = $editorElement.dxDateBox("instance"); const defaultEnterKeyHandler = dateBox._supportedKeys().enter; dateBox.registerKeyHandler("enter", (e => { if (dateBox.option("opened")) { defaultEnterKeyHandler(e) } return true })) } if ("dxTextArea" === options.editorName) { $editorElement.dxTextArea("instance").registerKeyHandler("enter", (function(event) { if ("enter" === (0, _index.normalizeKeyName)(event) && !event.ctrlKey && !event.shiftKey) { event.stopPropagation() } })) } } }(this, options); this.executeAction("onEditorPrepared", options) } }; module.exports = exports.default; module.exports.default = exports.default }, 56220: /*!**********************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/ui/slider.js ***! \**********************************************************/ function(module, exports, __webpack_require__) { exports.default = void 0; var _m_slider = (e = __webpack_require__( /*! ../__internal/ui/slider/m_slider */ 8532), e && e.__esModule ? e : { default: e }); var e; exports.default = _m_slider.default; module.exports = exports.default; module.exports.default = exports.default }, 95305: /*!************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/ui/sortable.js ***! \************************************************************/ function(module, exports, __webpack_require__) { exports.default = void 0; var _m_sortable = (e = __webpack_require__( /*! ../__internal/m_sortable */ 96334), e && e.__esModule ? e : { default: e }); var e; exports.default = _m_sortable.default; module.exports = exports.default; module.exports.default = exports.default }, 67924: /*!*********************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/ui/speed_dial_action.js ***! \*********************************************************************/ function(module, exports, __webpack_require__) { exports.default = void 0; var _m_speed_dial_action = (e = __webpack_require__( /*! ../__internal/ui/speed_dial_action/m_speed_dial_action */ 16616), e && e.__esModule ? e : { default: e }); var e; exports.default = _m_speed_dial_action.default; module.exports = exports.default; module.exports.default = exports.default }, 92725: /*!****************************************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/ui/speed_dial_action/repaint_floating_action_button.js ***! \****************************************************************************************************/ function(module, exports, __webpack_require__) { exports.default = void 0; var _m_repaint_floating_action_button = (e = __webpack_require__( /*! ../../__internal/ui/speed_dial_action/m_repaint_floating_action_button */ 24251), e && e.__esModule ? e : { default: e }); var e; exports.default = _m_repaint_floating_action_button.default; module.exports = exports.default; module.exports.default = exports.default }, 78254: /*!************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/ui/splitter.js ***! \************************************************************/ function(module, exports, __webpack_require__) { exports.default = void 0; var _splitter = (e = __webpack_require__( /*! ../__internal/ui/splitter/splitter */ 32364), e && e.__esModule ? e : { default: e }); var e; exports.default = _splitter.default; module.exports = exports.default; module.exports.default = exports.default }, 47744: /*!********************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/ui/splitter_control.js ***! \********************************************************************/ function(module, exports, __webpack_require__) { exports.default = void 0; var _renderer = _interopRequireDefault(__webpack_require__( /*! ../core/renderer */ 64553)); var _ui = _interopRequireDefault(__webpack_require__( /*! ./widget/ui.widget */ 11118)); var _dom_adapter = _interopRequireDefault(__webpack_require__( /*! ../core/dom_adapter */ 64960)); var _events_engine = _interopRequireDefault(__webpack_require__( /*! ../common/core/events/core/events_engine */ 92774)); var _pointer = _interopRequireDefault(__webpack_require__( /*! ../common/core/events/pointer */ 89797)); var _window = __webpack_require__( /*! ../core/utils/window */ 3104); var _index = __webpack_require__( /*! ../common/core/events/utils/index */ 98834); var _guid = _interopRequireDefault(__webpack_require__( /*! ../core/guid */ 19427)); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } const window = (0, _window.getWindow)(); class SplitterControl extends _ui.default { _init() { super._init(); const eventGuid = (new _guid.default).toString(); this.SPLITTER_POINTER_DOWN_EVENT_NAME = (0, _index.addNamespace)(_pointer.default.down, "dxSplitterResizing" + eventGuid); this.SPLITTER_POINTER_MOVE_EVENT_NAME = (0, _index.addNamespace)(_pointer.default.move, "dxSplitterResizing" + eventGuid); this.SPLITTER_POINTER_UP_EVENT_NAME = (0, _index.addNamespace)(_pointer.default.up, "dxSplitterResizing" + eventGuid) } _initMarkup() { super._initMarkup(); this._initActions(); this._$container = this.option("container"); this._$leftElement = this.option("leftElement"); this._$rightElement = this.option("rightElement"); this.$element().addClass("dx-splitter-wrapper").addClass("dx-splitter-initial"); this._$splitterBorder = (0, _renderer.default)("<div>").addClass("dx-splitter-border").appendTo(this.$element()); this._$splitter = (0, _renderer.default)("<div>").addClass("dx-splitter-bar").addClass("dx-splitter-inactive").appendTo(this._$splitterBorder) } _initActions() { this._actions = { onApplyPanelSize: this._createActionByOption("onApplyPanelSize"), onActiveStateChanged: this._createActionByOption("onActiveStateChanged") } } _render() { super._render(); this._detachEventHandlers(); this._attachEventHandlers() } _clean() { this._detachEventHandlers(); super._clean() } _attachEventHandlers() { const document = _dom_adapter.default.getDocument(); _events_engine.default.on(this._$splitterBorder, this.SPLITTER_POINTER_DOWN_EVENT_NAME, this._onMouseDownHandler.bind(this)); _events_engine.default.on(document, this.SPLITTER_POINTER_MOVE_EVENT_NAME, this._onMouseMoveHandler.bind(this)); _events_engine.default.on(document, this.SPLITTER_POINTER_UP_EVENT_NAME, this._onMouseUpHandler.bind(this)) } _detachEventHandlers() { const document = _dom_adapter.default.getDocument(); _events_engine.default.off(this._$splitterBorder, this.SPLITTER_POINTER_DOWN_EVENT_NAME); _events_engine.default.off(document, this.SPLITTER_POINTER_MOVE_EVENT_NAME); _events_engine.default.off(document, this.SPLITTER_POINTER_UP_EVENT_NAME) } _dimensionChanged(dimension) { if (!dimension || "height" !== dimension) { this._containerWidth = this._$container.get(0).clientWidth; this._setSplitterPositionLeft({ needUpdatePanels: true, usePercentagePanelsWidth: true }) } } _onMouseDownHandler(e) { e.preventDefault(); this._offsetX = e.pageX - this._$splitterBorder.offset().left <= this._getSplitterBorderWidth() ? e.pageX - this._$splitterBorder.offset().left : 0; this._containerWidth = this._$container.get(0).clientWidth; this.$element().removeClass("dx-splitter-initial"); this._toggleActive(true); this._setSplitterPositionLeft({ needUpdatePanels: true }) } _onMouseMoveHandler(e) { if (!this._isSplitterActive) { return } this._setSplitterPositionLeft({ splitterPositionLeft: this._getNewSplitterPositionLeft(e), needUpdatePanels: true }) } _onMouseUpHandler() { if (!this._isSplitterActive) { return } this._leftPanelPercentageWidth = null; this._toggleActive(false); this._setSplitterPositionLeft({ needUpdatePanels: true, usePercentagePanelsWidth: true }) } _getNewSplitterPositionLeft(e) { let newSplitterPositionLeft = e.pageX - this._getContainerLeftOffset() - this._offsetX; newSplitterPositionLeft = Math.max(0 - this._getSplitterOffset(), newSplitterPositionLeft); newSplitterPositionLeft = Math.min(this._containerWidth - this._getSplitterOffset() - this._getSplitterWidth(), newSplitterPositionLeft); return newSplitterPositionLeft } _getContainerLeftOffset() { let offsetLeft = this._$container.offset().left; if (window) { const style = window.getComputedStyle(this._$container.get(0)); const paddingLeft = parseFloat(style.paddingLeft) || 0; const borderLeft = parseFloat(style.borderLeftWidth) || 0; offsetLeft += paddingLeft + borderLeft } return offsetLeft } _getSplitterOffset() { return (this._getSplitterBorderWidth() - this._getSplitterWidth()) / 2 } _getSplitterWidth() { return this._$splitter.get(0).clientWidth } _getSplitterBorderWidth() { return this._$splitterBorder.get(0).clientWidth } _getLeftPanelWidth() { return this._$leftElement.get(0).clientWidth } getSplitterBorderElement() { return this._$splitterBorder } _toggleActive(isActive) { this.$element().toggleClass("dx-splitter-inactive", !isActive); this._$splitter.toggleClass("dx-splitter-inactive", !isActive); this._isSplitterActive = isActive; this._actions.onActiveStateChanged({ isActive: isActive }) } toggleDisabled(isDisabled) { this.$element().toggleClass("dx-state-disabled", isDisabled); this._$splitter.toggleClass("dx-state-disabled", isDisabled) } isSplitterMoved() { return !this.$element().hasClass("dx-splitter-initial") } disableSplitterCalculation(value) { this._isSplitterCalculationDisabled = value } _setSplitterPositionLeft() { let { splitterPositionLeft: splitterPositionLeft = null, needUpdatePanels: needUpdatePanels = false, usePercentagePanelsWidth: usePercentagePanelsWidth = false } = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {}; splitterPositionLeft = splitterPositionLeft || this._getLeftPanelWidth() - this._getSplitterOffset(); const leftPanelWidth = splitterPositionLeft + this._getSplitterOffset(); const rightPanelWidth = this._containerWidth - leftPanelWidth; if (!this._isSplitterCalculationDisabled) { this.$element().css("left", splitterPositionLeft) } this._leftPanelPercentageWidth = this._leftPanelPercentageWidth || this._convertToPercentage(leftPanelWidth); const rightPanelPercentageWidth = this._convertToPercentage(this._containerWidth - this._convertToPixels(this._leftPanelPercentageWidth)); if (!needUpdatePanels) { return } this._actions.onApplyPanelSize({ leftPanelWidth: usePercentagePanelsWidth ? `${this._leftPanelPercentageWidth}%` : leftPanelWidth, rightPanelWidth: usePercentagePanelsWidth ? `${rightPanelPercentageWidth}%` : rightPanelWidth }) } _optionChanged(args) { switch (args.name) { case "initialLeftPanelWidth": this._leftPanelPercentageWidth = this._convertToPercentage(args.value); this._dimensionChanged(); break; case "leftElement": this.repaint(); break; case "onActiveStateChanged": case "onApplyPanelSize": this._actions[args.name] = this._createActionByOption(args.name); break; default: super._optionChanged(args) } } _convertToPercentage(pixelWidth) { return pixelWidth / this._$container.get(0).clientWidth * 100 } _convertToPixels(percentageWidth) { return percentageWidth / 100 * this._$container.get(0).clientWidth } } exports.default = SplitterControl; module.exports = exports.default; module.exports.default = exports.default }, 87244: /*!***********************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/ui/stepper.js ***! \***********************************************************/ function(module, exports, __webpack_require__) { exports.default = void 0; var _stepper = (e = __webpack_require__( /*! ../__internal/ui/stepper/stepper */ 65348), e && e.__esModule ? e : { default: e }); var e; exports.default = _stepper.default; module.exports = exports.default; module.exports.default = exports.default }, 91029: /*!**********************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/ui/switch.js ***! \**********************************************************/ function(module, exports, __webpack_require__) { exports.default = void 0; var _m_switch = (e = __webpack_require__( /*! ../__internal/ui/m_switch */ 94723), e && e.__esModule ? e : { default: e }); var e; exports.default = _m_switch.default; module.exports = exports.default; module.exports.default = exports.default }, 78175: /*!*************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/ui/tab_panel.js ***! \*************************************************************/ function(module, exports, __webpack_require__) { exports.default = void 0; var _tab_panel = (e = __webpack_require__( /*! ../__internal/ui/tab_panel/tab_panel */ 98444), e && e.__esModule ? e : { default: e }); var e; exports.default = _tab_panel.default; module.exports = exports.default; module.exports.default = exports.default }, 94385: /*!********************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/ui/tabs.js ***! \********************************************************/ function(module, exports, __webpack_require__) { exports.default = void 0; var _tabs = (e = __webpack_require__( /*! ../__internal/ui/tabs/tabs */ 43474), e && e.__esModule ? e : { default: e }); var e; exports.default = _tabs.default; module.exports = exports.default; module.exports.default = exports.default }, 4575: /*!***********************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/ui/tag_box.js ***! \***********************************************************/ function(module, exports, __webpack_require__) { exports.default = void 0; var _m_tag_box = (e = __webpack_require__( /*! ../__internal/ui/m_tag_box */ 24341), e && e.__esModule ? e : { default: e }); var e; exports.default = _m_tag_box.default; module.exports = exports.default; module.exports.default = exports.default }, 23116: /*!*************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/ui/text_area.js ***! \*************************************************************/ function(module, exports, __webpack_require__) { exports.default = void 0; var _m_text_area = (e = __webpack_require__( /*! ../__internal/ui/m_text_area */ 36234), e && e.__esModule ? e : { default: e }); var e; exports.default = _m_text_area.default; module.exports = exports.default; module.exports.default = exports.default }, 20780: /*!************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/ui/text_box.js ***! \************************************************************/ function(module, exports, __webpack_require__) { exports.default = void 0; var _text_box = (e = __webpack_require__( /*! ./text_box/text_box */ 20098), e && e.__esModule ? e : { default: e }); var e; exports.default = _text_box.default; module.exports = exports.default; module.exports.default = exports.default }, 20098: /*!*********************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/ui/text_box/text_box.js ***! \*********************************************************************/ function(module, exports, __webpack_require__) { exports.default = void 0; var _m_text_box = (e = __webpack_require__( /*! ../../__internal/ui/text_box/m_text_box */ 85968), e && e.__esModule ? e : { default: e }); var e; exports.default = _m_text_box.default; module.exports = exports.default; module.exports.default = exports.default }, 52071: /*!**********************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/ui/themes.js ***! \**********************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { exports.attachCssClasses = attachCssClasses; exports.current = current; exports.default = void 0; exports.detachCssClasses = detachCssClasses; exports.init = init; exports.initialized = initialized; exports.isCompact = isCompact; exports.isDark = isDark; exports.isFluent = isFluent; exports.isGeneric = isGeneric; exports.isMaterial = isMaterial; exports.isMaterialBased = isMaterialBased; exports.isPendingThemeLoaded = isPendingThemeLoaded; exports.isWebFontLoaded = isWebFontLoaded; exports.ready = themeReady; exports.resetTheme = resetTheme; exports.setDefaultTimeout = setDefaultTimeout; exports.waitForThemeLoad = waitForThemeLoad; exports.waitWebFont = waitWebFont; var _size = __webpack_require__( /*! ../core/utils/size */ 57653); var _devices = _interopRequireDefault(__webpack_require__( /*! ../core/devices */ 65951)); var _dom_adapter = _interopRequireDefault(__webpack_require__( /*! ../core/dom_adapter */ 64960)); var _renderer = _interopRequireDefault(__webpack_require__( /*! ../core/renderer */ 64553)); var _deferred = __webpack_require__( /*! ../core/utils/deferred */ 87739); var _html_parser = __webpack_require__( /*! ../core/utils/html_parser */ 23563); var _iterator = __webpack_require__( /*! ../core/utils/iterator */ 21274); var _ready_callbacks = _interopRequireDefault(__webpack_require__( /*! ../core/utils/ready_callbacks */ 3122)); var _view_port = __webpack_require__( /*! ../core/utils/view_port */ 55355); var _window = __webpack_require__( /*! ../core/utils/window */ 3104); var _themes_callback = __webpack_require__( /*! ./themes_callback */ 88737); var _m_common = __webpack_require__( /*! ../__internal/core/utils/m_common */ 39315); var _ui = _interopRequireDefault(__webpack_require__( /*! ./widget/ui.errors */ 35185)); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } const window = (0, _window.getWindow)(); const ready = _ready_callbacks.default.add; const viewPort = _view_port.value; const viewPortChanged = _view_port.changeCallback; let initDeferred = new _deferred.Deferred; const DX_LINK_SELECTOR = "link[rel=dx-theme]"; const THEME_ATTR = "data-theme"; const ACTIVE_ATTR = "data-active"; const DX_HAIRLINES_CLASS = "dx-hairlines"; const ANY_THEME = "any"; let context; let $activeThemeLink; let knownThemes; let currentThemeName; let pendingThemeName; let defaultTimeout = 15e3; const THEME_MARKER_PREFIX = "dx."; function readThemeMarker() { if (!(0, _window.hasWindow)()) { return null } const element = (0, _renderer.default)("<div>", context).addClass("dx-theme-marker").appendTo(context.documentElement); let result; try { result = window.getComputedStyle(element.get(0)).fontFamily; if (!result) { return null } result = result.replace(/["']/g, ""); if (result.substr(0, THEME_MARKER_PREFIX.length) !== THEME_MARKER_PREFIX) { return null } return result.substr(THEME_MARKER_PREFIX.length) } finally { element.remove() } } function waitForThemeLoad(themeName) { let waitStartTime; let timerId; let intervalCleared = true; pendingThemeName = themeName; function handleLoaded() { pendingThemeName = null; clearInterval(timerId); intervalCleared = true; _themes_callback.themeReadyCallback.fire(); _themes_callback.themeReadyCallback.empty(); initDeferred.resolve() } if (isPendingThemeLoaded() || !defaultTimeout) { handleLoaded() } else { if (!intervalCleared) { if (pendingThemeName) { pendingThemeName = themeName } return } waitStartTime = Date.now(); intervalCleared = false; timerId = setInterval((function() { const isLoaded = isPendingThemeLoaded(); const isTimeout = !isLoaded && Date.now() - waitStartTime > defaultTimeout; if (isTimeout) { _ui.default.log("W0004", pendingThemeName) } if (isLoaded || isTimeout) { handleLoaded() } }), 10) } } function isPendingThemeLoaded() { if (!pendingThemeName) { return true } const anyThemePending = pendingThemeName === ANY_THEME; if ("resolved" === initDeferred.state() && anyThemePending) { return true } const themeMarker = readThemeMarker(); if (themeMarker && anyThemePending) { return true } return themeMarker === pendingThemeName } function init(options) { options = options || {}; ! function(newContext) { try { if (newContext !== context) { knownThemes = null } } catch (x) { knownThemes = null } context = newContext }(options.context || _dom_adapter.default.getDocument()); if (!context) { return }! function() { const $allThemeLinks = (0, _renderer.default)(DX_LINK_SELECTOR, context); if (!$allThemeLinks.length) { return } knownThemes = {}; $activeThemeLink = (0, _renderer.default)((0, _html_parser.parseHTML)("<link rel=stylesheet>"), context); $allThemeLinks.each((function() { const link = (0, _renderer.default)(this, context); const fullThemeName = link.attr(THEME_ATTR); const url = link.attr("href"); const isActive = "true" === link.attr(ACTIVE_ATTR); knownThemes[fullThemeName] = { url: url, isActive: isActive } })); $allThemeLinks.last().after($activeThemeLink); $allThemeLinks.remove() }(); currentThemeName = void 0; current(options) } function current(options) { if (!arguments.length) { currentThemeName = currentThemeName || readThemeMarker(); return currentThemeName } detachCssClasses(viewPort()); options = options || {}; if ("string" === typeof options) { options = { theme: options } } const isAutoInit = options._autoInit; const loadCallback = options.loadCallback; let currentThemeData; currentThemeName = function(desiredThemeName) { const desiredThemeParts = desiredThemeName ? desiredThemeName.split(".") : []; let result = null; if (knownThemes) { if (desiredThemeName in knownThemes) { return desiredThemeName }(0, _iterator.each)(knownThemes, (function(knownThemeName, themeData) { const knownThemeParts = knownThemeName.split("."); if (desiredThemeParts[0] && knownThemeParts[0] !== desiredThemeParts[0]) { return } if (desiredThemeParts[1] && desiredThemeParts[1] !== knownThemeParts[1]) { return } if (desiredThemeParts[2] && desiredThemeParts[2] !== knownThemeParts[2]) { return } if (!result || themeData.isActive) { result = knownThemeName } if (themeData.isActive) { return false } })) } return result }(options.theme || currentThemeName); if (currentThemeName) { currentThemeData = knownThemes[currentThemeName] } if (loadCallback) { _themes_callback.themeReadyCallback.add(loadCallback) } if (currentThemeData) { $activeThemeLink.attr("href", knownThemes[currentThemeName].url); if (_themes_callback.themeReadyCallback.has() || "resolved" !== initDeferred.state() || options._forceTimeout) { waitForThemeLoad(currentThemeName) } } else if (isAutoInit) { if ((0, _window.hasWindow)()) { waitForThemeLoad(ANY_THEME) } _themes_callback.themeReadyCallback.fire(); _themes_callback.themeReadyCallback.empty() } else { throw _ui.default.Error("E0021", currentThemeName) } initDeferred.done((() => attachCssClasses((0, _view_port.originalViewPort)(), currentThemeName))) } let themeClasses; function _attachCssClasses(element, themeName) { themeClasses = function(themeName) { themeName = themeName || current(); const result = []; const themeNameParts = themeName && themeName.split("."); if (themeNameParts) { result.push("dx-theme-" + themeNameParts[0], "dx-theme-" + themeNameParts[0] + "-typography"); if (themeNameParts.length > 1) { result.push("dx-color-scheme-" + themeNameParts[1] + (isMaterialBased(themeName) ? "-" + themeNameParts[2] : "")) } } return result }(themeName).join(" "); (0, _renderer.default)(element).addClass(themeClasses); ! function() { const pixelRatio = (0, _window.hasWindow)() && window.devicePixelRatio; if (!pixelRatio || pixelRatio < 2) { return } const $tester = (0, _renderer.default)("<div>"); $tester.css("border", ".5px solid transparent"); (0, _renderer.default)("body").append($tester); if (1 === (0, _size.getOuterHeight)($tester)) { (0, _renderer.default)(element).addClass(DX_HAIRLINES_CLASS); themeClasses += " " + DX_HAIRLINES_CLASS } $tester.remove() }() } function attachCssClasses(element, themeName) { (0, _deferred.when)(_m_common.uiLayerInitialized).done((() => { _attachCssClasses(element, themeName) })) } function detachCssClasses(element) { (0, _deferred.when)(_m_common.uiLayerInitialized).done((() => { (0, _renderer.default)(element).removeClass(themeClasses) })) } function themeReady(callback) { _themes_callback.themeReadyCallback.add(callback) } function isTheme(themeRegExp, themeName) { if (!themeName) { themeName = currentThemeName || readThemeMarker() } return new RegExp(themeRegExp).test(themeName) } function isMaterialBased(themeName) { return isMaterial(themeName) || isFluent(themeName) } function isMaterial(themeName) { return isTheme("material", themeName) } function isFluent(themeName) { return isTheme("fluent", themeName) } function isGeneric(themeName) { return isTheme("generic", themeName) } function isDark(themeName) { return isTheme("dark", themeName) } function isCompact(themeName) { return isTheme("compact", themeName) } function isWebFontLoaded(text, fontWeight) { const document = _dom_adapter.default.getDocument(); const testElement = document.createElement("span"); testElement.style.position = "absolute"; testElement.style.top = "-9999px"; testElement.style.left = "-9999px"; testElement.style.visibility = "hidden"; testElement.style.fontFamily = "Arial"; testElement.style.fontSize = "250px"; testElement.style.fontWeight = fontWeight; testElement.innerHTML = text; document.body.appendChild(testElement); const etalonFontWidth = testElement.offsetWidth; testElement.style.fontFamily = "Roboto, RobotoFallback, Arial"; const testedFontWidth = testElement.offsetWidth; testElement.parentNode.removeChild(testElement); return etalonFontWidth !== testedFontWidth } function waitWebFont(text, fontWeight) { return new Promise((resolve => { const clear = () => { clearInterval(intervalId); clearTimeout(timeoutId); resolve() }; const intervalId = setInterval((() => { if (isWebFontLoaded(text, fontWeight)) { clear() } }), 15); const timeoutId = setTimeout(clear, 2e3) })) } function autoInit() { init({ _autoInit: true, _forceTimeout: true }); if ((0, _renderer.default)(DX_LINK_SELECTOR, context).length) { throw _ui.default.Error("E0022") } } if ((0, _window.hasWindow)()) { autoInit() } else { ready(autoInit) } viewPortChanged.add((function(viewPort, prevViewPort) { initDeferred.done((function() { detachCssClasses(prevViewPort); attachCssClasses(viewPort) })) })); _devices.default.changed.add((function() { init({ _autoInit: true }) })); function resetTheme() { $activeThemeLink && $activeThemeLink.attr("href", "about:blank"); currentThemeName = null; pendingThemeName = null; initDeferred = new _deferred.Deferred } function initialized(callback) { initDeferred.done(callback) } function setDefaultTimeout(timeout) { defaultTimeout = timeout } exports.default = { setDefaultTimeout: setDefaultTimeout, initialized: initialized, resetTheme: resetTheme, ready: themeReady, waitWebFont: waitWebFont, isWebFontLoaded: isWebFontLoaded, isCompact: isCompact, isDark: isDark, isGeneric: isGeneric, isMaterial: isMaterial, isFluent: isFluent, isMaterialBased: isMaterialBased, detachCssClasses: detachCssClasses, attachCssClasses: attachCssClasses, current: current, waitForThemeLoad: waitForThemeLoad, isPendingThemeLoaded: isPendingThemeLoaded } }, 88737: /*!*******************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/ui/themes_callback.js ***! \*******************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { exports.themeReadyCallback = void 0; var _callbacks = (e = __webpack_require__( /*! ../core/utils/callbacks */ 84718), e && e.__esModule ? e : { default: e }); var e; exports.themeReadyCallback = (0, _callbacks.default)() }, 96993: /*!*************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/ui/tile_view.js ***! \*************************************************************/ function(module, exports, __webpack_require__) { exports.default = void 0; var _m_tile_view = (e = __webpack_require__( /*! ../__internal/ui/m_tile_view */ 9635), e && e.__esModule ? e : { default: e }); var e; exports.default = _m_tile_view.default; module.exports = exports.default; module.exports.default = exports.default }, 36574: /*!*********************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/ui/toast.js ***! \*********************************************************/ function(module, exports, __webpack_require__) { exports.default = void 0; var _m_toast = (e = __webpack_require__( /*! ../__internal/ui/toast/m_toast */ 11100), e && e.__esModule ? e : { default: e }); var e; exports.default = _m_toast.default; module.exports = exports.default; module.exports.default = exports.default }, 41792: /*!*********************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/ui/toast/hide_toasts.js ***! \*********************************************************************/ function(module, exports, __webpack_require__) { exports.default = void 0; var _m_hide_toasts = (e = __webpack_require__( /*! ../../__internal/ui/toast/m_hide_toasts */ 57250), e && e.__esModule ? e : { default: e }); var e; exports.default = _m_hide_toasts.default; module.exports = exports.default; module.exports.default = exports.default }, 2850: /*!***********************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/ui/toolbar.js ***! \***********************************************************/ function(module, exports, __webpack_require__) { exports.default = void 0; var _ui = (e = __webpack_require__( /*! ./toolbar/ui.toolbar */ 8062), e && e.__esModule ? e : { default: e }); var e; exports.default = _ui.default; module.exports = exports.default; module.exports.default = exports.default }, 21667: /*!***************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/ui/toolbar/ui.toolbar.base.js ***! \***************************************************************************/ function(module, exports, __webpack_require__) { exports.default = void 0; var _m_toolbar = (e = __webpack_require__( /*! ../../__internal/ui/toolbar/m_toolbar.base */ 30577), e && e.__esModule ? e : { default: e }); var e; exports.default = _m_toolbar.default; module.exports = exports.default; module.exports.default = exports.default }, 8062: /*!**********************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/ui/toolbar/ui.toolbar.js ***! \**********************************************************************/ function(module, exports, __webpack_require__) { exports.default = void 0; var _m_toolbar = (e = __webpack_require__( /*! ../../__internal/ui/toolbar/m_toolbar */ 56044), e && e.__esModule ? e : { default: e }); var e; exports.default = _m_toolbar.default; module.exports = exports.default; module.exports.default = exports.default }, 93370: /*!***********************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/ui/tooltip.js ***! \***********************************************************/ function(module, exports, __webpack_require__) { exports.default = void 0; var _m_tooltip = (e = __webpack_require__( /*! ../__internal/ui/m_tooltip */ 3504), e && e.__esModule ? e : { default: e }); var e; exports.default = _m_tooltip.default; module.exports = exports.default; module.exports.default = exports.default }, 76256: /*!*************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/ui/track_bar.js ***! \*************************************************************/ function(module, exports, __webpack_require__) { exports.default = void 0; var _m_track_bar = (e = __webpack_require__( /*! ../__internal/ui/m_track_bar */ 37062), e && e.__esModule ? e : { default: e }); var e; exports.default = _m_track_bar.default; module.exports = exports.default; module.exports.default = exports.default }, 21872: /*!*************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/ui/tree_list.js ***! \*************************************************************/ function(module, exports, __webpack_require__) { exports.default = void 0; var _m_widget = (e = __webpack_require__( /*! ../__internal/grids/tree_list/m_widget */ 62514), e && e.__esModule ? e : { default: e }); var e; __webpack_require__( /*! ./tree_list/ui.tree_list.base */ 35551); exports.default = _m_widget.default; module.exports = exports.default; module.exports.default = exports.default }, 35551: /*!*******************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/ui/tree_list/ui.tree_list.base.js ***! \*******************************************************************************/ function(module, exports, __webpack_require__) { exports.default = void 0; var _m_widget_base = (e = __webpack_require__( /*! ../../__internal/grids/tree_list/m_widget_base */ 7444), e && e.__esModule ? e : { default: e }); var e; exports.default = _m_widget_base.default; module.exports = exports.default; module.exports.default = exports.default }, 4313: /*!*************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/ui/tree_view.js ***! \*************************************************************/ function(module, exports, __webpack_require__) { exports.default = void 0; var _m_tree_view = (e = __webpack_require__( /*! ../__internal/ui/tree_view/m_tree_view.search */ 66592), e && e.__esModule ? e : { default: e }); var e; exports.default = _m_tree_view.default; module.exports = exports.default; module.exports.default = exports.default }, 19391: /*!*********************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/ui/validation_engine.js ***! \*********************************************************************/ function(module, exports, __webpack_require__) { exports.default = void 0; var _m_validation_engine = (e = __webpack_require__( /*! ../__internal/ui/m_validation_engine */ 79697), e && e.__esModule ? e : { default: e }); var e; exports.default = _m_validation_engine.default; module.exports = exports.default; module.exports.default = exports.default }, 16390: /*!********************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/ui/validation_group.js ***! \********************************************************************/ function(module, exports, __webpack_require__) { exports.default = void 0; var _m_validation_group = (e = __webpack_require__( /*! ../__internal/ui/m_validation_group */ 89172), e && e.__esModule ? e : { default: e }); var e; exports.default = _m_validation_group.default; module.exports = exports.default; module.exports.default = exports.default }, 59098: /*!**********************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/ui/validation_message.js ***! \**********************************************************************/ function(module, exports, __webpack_require__) { exports.default = void 0; var _m_validation_message = (e = __webpack_require__( /*! ../__internal/ui/m_validation_message */ 22864), e && e.__esModule ? e : { default: e }); var e; exports.default = _m_validation_message.default; module.exports = exports.default; module.exports.default = exports.default }, 10585: /*!**********************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/ui/validation_summary.js ***! \**********************************************************************/ function(module, exports, __webpack_require__) { exports.default = void 0; var _m_validation_summary = (e = __webpack_require__( /*! ../__internal/ui/m_validation_summary */ 31139), e && e.__esModule ? e : { default: e }); var e; exports.default = _m_validation_summary.default; module.exports = exports.default; module.exports.default = exports.default }, 71775: /*!*************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/ui/validator.js ***! \*************************************************************/ function(module, exports, __webpack_require__) { exports.default = void 0; var _m_validator = (e = __webpack_require__( /*! ../__internal/ui/m_validator */ 71449), e && e.__esModule ? e : { default: e }); var e; exports.default = _m_validator.default; module.exports = exports.default; module.exports.default = exports.default }, 35944: /*!********************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/ui/widget/selectors.js ***! \********************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { exports.tabbable = exports.focused = exports.focusable = void 0; var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../core/renderer */ 64553)); var _dom_adapter = _interopRequireDefault(__webpack_require__( /*! ../../core/dom_adapter */ 64960)); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } const focusableFn = function(element, tabIndex) { if (! function(element) { const $element = (0, _renderer.default)(element); return $element.is(":visible") && "hidden" !== $element.css("visibility") && "hidden" !== $element.parents().css("visibility") }(element)) { return false } const nodeName = element.nodeName.toLowerCase(); const isTabIndexNotNaN = !isNaN(tabIndex); const isDisabled = element.disabled; const isDefaultFocus = /^(input|select|textarea|button|object|iframe)$/.test(nodeName); const isHyperlink = "a" === nodeName; let isFocusable; const isContentEditable = element.isContentEditable; if (isDefaultFocus || isContentEditable) { isFocusable = !isDisabled } else if (isHyperlink) { isFocusable = element.href || isTabIndexNotNaN } else { isFocusable = isTabIndexNotNaN } return isFocusable }; exports.focusable = function(index, element) { return focusableFn(element, (0, _renderer.default)(element).attr("tabIndex")) }; exports.tabbable = function(index, element) { const tabIndex = (0, _renderer.default)(element).attr("tabIndex"); return (isNaN(tabIndex) || tabIndex >= 0) && focusableFn(element, tabIndex) }; exports.focused = function($element) { const element = (0, _renderer.default)($element).get(0); return _dom_adapter.default.getActiveElement(element) === element } }, 5080: /*!***************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/ui/widget/swatch_container.js ***! \***************************************************************************/ function(module, exports, __webpack_require__) { exports.default = void 0; var _renderer = (e = __webpack_require__( /*! ../../core/renderer */ 64553), e && e.__esModule ? e : { default: e }); var e; var _view_port = __webpack_require__( /*! ../../core/utils/view_port */ 55355); exports.default = { getSwatchContainer: element => { const $element = (0, _renderer.default)(element); const swatchContainer = $element.closest('[class^="dx-swatch-"], [class*=" dx-swatch-"]'); const viewport = (0, _view_port.value)(); if (!swatchContainer.length) { return viewport } const swatchClassRegex = new RegExp("(\\s|^)(dx-swatch-.*?)(\\s|$)"); const swatchClass = swatchContainer[0].className.match(swatchClassRegex)[2]; let viewportSwatchContainer = viewport.children("." + swatchClass); if (!viewportSwatchContainer.length) { viewportSwatchContainer = (0, _renderer.default)("<div>").addClass(swatchClass).appendTo(viewport) } return viewportSwatchContainer } }; module.exports = exports.default; module.exports.default = exports.default }, 35185: /*!********************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/ui/widget/ui.errors.js ***! \********************************************************************/ function(module, exports, __webpack_require__) { exports.default = void 0; var _error = _interopRequireDefault(__webpack_require__( /*! ../../core/utils/error */ 67264)); var _errors = _interopRequireDefault(__webpack_require__( /*! ../../core/errors */ 87129)); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } exports.default = (0, _error.default)(_errors.default.ERROR_MESSAGES, { E1001: "Module '{0}'. Controller '{1}' is already registered", E1002: "Module '{0}'. Controller '{1}' does not inherit from DevExpress.ui.dxDataGrid.Controller", E1003: "Module '{0}'. View '{1}' is already registered", E1004: "Module '{0}'. View '{1}' does not inherit from DevExpress.ui.dxDataGrid.View", E1005: "Public method '{0}' is already registered", E1006: "Public method '{0}.{1}' does not exist", E1007: "State storing cannot be provided due to the restrictions of the browser", E1010: "The template does not contain the TextBox widget", E1011: 'Items cannot be deleted from the List. Implement the "remove" function in the data store', E1012: "Editing type '{0}' with the name '{1}' is unsupported", E1016: "Unexpected type of data source is provided for a lookup column", E1018: "The 'collapseAll' method cannot be called if you use a remote data source", E1019: "Search mode '{0}' is unavailable", E1020: "The type cannot be changed after initialization", E1021: "{0} '{1}' you are trying to remove does not exist", E1022: 'The "markers" option is given an invalid value. Assign an array instead', E1023: 'The "routes" option is given an invalid value. Assign an array instead', E1025: "This layout is too complex to render", E1026: 'The "calculateCustomSummary" function is missing from a field whose "summaryType" option is set to "custom"', E1031: "Unknown subscription in the Scheduler widget: '{0}'", E1032: "Unknown start date in an appointment: '{0}'", E1033: "Unknown step in the date navigator: '{0}'", E1034: "The browser does not implement an API for saving files", E1035: "The editor cannot be created: {0}", E1037: "Invalid structure of grouped data", E1038: "The browser does not support local storages for local web pages", E1039: "A cell's position cannot be calculated", E1040: "The '{0}' key value is not unique within the data array", E1041: "The '{0}' script is referenced after the DevExtreme scripts or not referenced at all", E1042: "{0} requires the key field to be specified", E1043: "Changes cannot be processed due to the incorrectly set key", E1044: "The key field specified by the keyExpr option does not match the key field specified in the data store", E1045: "Editing requires the key field to be specified in the data store", E1046: "The '{0}' key field is not found in data objects", E1047: 'The "{0}" field is not found in the fields array', E1048: 'The "{0}" operation is not found in the filterOperations array', E1049: "Column '{0}': filtering is allowed but the 'dataField' or 'name' option is not specified", E1050: "The validationRules option does not apply to third-party editors defined in the editCellTemplate", E1052: '{0} should have the "dataSource" option specified', E1053: 'The "buttons" option accepts an array that contains only objects or string values', E1054: "All text editor buttons must have names", E1055: 'One or several text editor buttons have invalid or non-unique "name" values', E1056: 'The {0} widget does not support buttons of the "{1}" type', E1058: 'The "startDayHour" and "endDayHour" options must be integers in the [0, 24] range, with "endDayHour" being greater than "startDayHour".', E1059: "The following column names are not unique: {0}", E1060: "All editable columns must have names", E1061: 'The "offset" option must be an integer in the [-1440, 1440] range, divisible by 5 without a remainder.', E1062: 'The "cellDuration" must be a positive integer, evenly dividing the ("endDayHour" - "startDayHour") interval into minutes.', W1001: 'The "key" option cannot be modified after initialization', W1002: "An item with the key '{0}' does not exist", W1003: "A group with the key '{0}' in which you are trying to select items does not exist", W1004: "The item '{0}' you are trying to select in the group '{1}' does not exist", W1005: "Due to column data types being unspecified, data has been loaded twice in order to apply initial filter settings. To resolve this issue, specify data types for all grid columns.", W1006: "The map service returned the following error: '{0}'", W1007: "No item with key {0} was found in the data source, but this key was used as the parent key for item {1}", W1008: "Cannot scroll to the '{0}' date because it does not exist on the current view", W1009: "Searching works only if data is specified using the dataSource option", W1010: "The capability to select all items works with source data of plain structure only", W1011: 'The "keyExpr" option is not applied when dataSource is not an array', W1012: "The '{0}' key field is not found in data objects", W1013: 'The "message" field in the dialog component was renamed to "messageHtml". Change your code correspondingly. In addition, if you used HTML code in the message, make sure that it is secure', W1014: "The Floating Action Button exceeds the recommended speed dial action count. If you need to display more speed dial actions, increase the maxSpeedDialActionCount option value in the global config.", W1017: "The 'key' property is not specified for a lookup data source. Please specify it to prevent requests for the entire dataset when users filter data.", W1018: "Infinite scrolling may not work properly with multiple selection. To use these features together, set 'selection.deferred' to true or set 'selection.selectAllMode' to 'page'.", W1019: "Filter query string exceeds maximum length limit of {0} characters.", W1020: "hideEvent is ignored when the shading property is true", W1021: "The '{0}' is not rendered because none of the DOM elements match the value of the \"container\" property.", W1022: "{0} JSON parsing error: '{1}'", W1023: "Appointments require unique keys. Otherwise, the agenda view may not work correctly.", W1024: "The client-side export is enabled. Implement the 'onExporting' function.", W1025: "'scrolling.mode' is set to 'virtual' or 'infinite'. Specify the height of the component.", W1026: "The 'ai' toolbar item is defined, but aiIntegration is missing.", W1027: "A prompt should be specified for a custom command." }); module.exports = exports.default; module.exports.default = exports.default }, 44690: /*!******************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/ui/widget/ui.search_box_mixin.js ***! \******************************************************************************/ function(module, exports, __webpack_require__) { exports.default = void 0; var _m_search_box_mixin = (e = __webpack_require__( /*! ../../__internal/ui/collection/m_search_box_mixin */ 45966), e && e.__esModule ? e : { default: e }); var e; exports.default = _m_search_box_mixin.default; module.exports = exports.default; module.exports.default = exports.default }, 11118: /*!********************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/ui/widget/ui.widget.js ***! \********************************************************************/ function(module, exports, __webpack_require__) { exports.default = void 0; var _widget = (e = __webpack_require__( /*! ../../__internal/core/widget/widget */ 89275), e && e.__esModule ? e : { default: e }); var e; exports.default = _widget.default; module.exports = exports.default; module.exports.default = exports.default }, 63322: /*!***************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/ui/widget/utils.ink_ripple.js ***! \***************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { exports.hideWave = hideWave; exports.render = exports.initConfig = void 0; exports.showWave = showWave; var _size = __webpack_require__( /*! ../../core/utils/size */ 57653); var _renderer = (e = __webpack_require__( /*! ../../core/renderer */ 64553), e && e.__esModule ? e : { default: e }); var e; const INKRIPPLE_SHOWING_CLASS = "dx-inkripple-showing"; const INKRIPPLE_HIDING_CLASS = "dx-inkripple-hiding"; const DEFAULT_WAVE_INDEX = 0; const initConfig = function() { let config = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {}; const { useHoldAnimation: useHoldAnimation, waveSizeCoefficient: waveSizeCoefficient, isCentered: isCentered, wavesNumber: wavesNumber } = config; return { waveSizeCoefficient: waveSizeCoefficient || 2, isCentered: isCentered || false, wavesNumber: wavesNumber || 1, durations: getDurations(useHoldAnimation ?? true) } }; exports.initConfig = initConfig; exports.render = function(args) { const config = initConfig(args); return { showWave: showWave.bind(this, config), hideWave: hideWave.bind(this, config) } }; const getWaves = function(element, wavesNumber) { const inkRipple = function(element) { let result = element.children(".dx-inkripple"); if (0 === result.length) { result = (0, _renderer.default)("<div>").addClass("dx-inkripple").appendTo(element) } return result }((0, _renderer.default)(element)); const result = inkRipple.children(".dx-inkripple-wave").toArray(); for (let i = result.length; i < wavesNumber; i++) { const $currentWave = (0, _renderer.default)("<div>").appendTo(inkRipple).addClass("dx-inkripple-wave"); result.push($currentWave[0]) } return (0, _renderer.default)(result) }; const getWaveStyleConfig = function(args, config) { const element = (0, _renderer.default)(config.element); const elementWidth = (0, _size.getOuterWidth)(element); const elementHeight = (0, _size.getOuterHeight)(element); const elementDiagonal = parseInt(Math.sqrt(elementWidth * elementWidth + elementHeight * elementHeight)); const waveSize = Math.min(4e3, parseInt(elementDiagonal * args.waveSizeCoefficient)); let left; let top; if (args.isCentered) { left = (elementWidth - waveSize) / 2; top = (elementHeight - waveSize) / 2 } else { const event = config.event; const position = element.offset(); const x = event.pageX - position.left; const y = event.pageY - position.top; left = x - waveSize / 2; top = y - waveSize / 2 } return { left: left, top: top, height: waveSize, width: waveSize } }; function showWave(args, config) { const $wave = getWaves(config.element, args.wavesNumber).eq(config.wave || DEFAULT_WAVE_INDEX); args.hidingTimeout && clearTimeout(args.hidingTimeout); hideSelectedWave($wave); $wave.css(getWaveStyleConfig(args, config)); args.showingTimeout = setTimeout(showingWaveHandler.bind(this, args, $wave), 0) } function showingWaveHandler(args, $wave) { const durationCss = args.durations.showingScale + "ms"; $wave.addClass(INKRIPPLE_SHOWING_CLASS).css("transitionDuration", durationCss) } function getDurations(useHoldAnimation) { return { showingScale: useHoldAnimation ? 1e3 : 300, hidingScale: 300, hidingOpacity: 300 } } function hideSelectedWave($wave) { $wave.removeClass(INKRIPPLE_HIDING_CLASS).css("transitionDuration", "") } function hideWave(args, config) { args.showingTimeout && clearTimeout(args.showingTimeout); const $wave = getWaves(config.element, config.wavesNumber).eq(config.wave || DEFAULT_WAVE_INDEX); const durations = args.durations; const durationCss = durations.hidingScale + "ms, " + durations.hidingOpacity + "ms"; $wave.addClass(INKRIPPLE_HIDING_CLASS).removeClass(INKRIPPLE_SHOWING_CLASS).css("transitionDuration", durationCss); const animationDuration = Math.max(durations.hidingScale, durations.hidingOpacity); args.hidingTimeout = setTimeout(hideSelectedWave.bind(this, $wave), animationDuration) } }, 71671: /*!****************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/viz/core/base_theme_manager.js ***! \****************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { exports.BaseThemeManager = void 0; var _class = (e = __webpack_require__( /*! ../../core/class */ 55620), e && e.__esModule ? e : { default: e }); var e; var _extend2 = __webpack_require__( /*! ../../core/utils/extend */ 52576); var _type = __webpack_require__( /*! ../../core/utils/type */ 11528); var _iterator = __webpack_require__( /*! ../../core/utils/iterator */ 21274); var _palette = __webpack_require__( /*! ../palette */ 9735); var _utils = __webpack_require__( /*! ./utils */ 28779); var _themes = __webpack_require__( /*! ../themes */ 84560); const _getTheme = _themes.getTheme; const _addCacheItem = _themes.addCacheItem; const _removeCacheItem = _themes.removeCacheItem; const _extend = _extend2.extend; const _each = _iterator.each; function getThemePart(theme, path) { let _theme = theme; path && _each(path.split("."), (function(_, pathItem) { return _theme = _theme[pathItem] })); return _theme } exports.BaseThemeManager = _class.default.inherit({ ctor: function(options) { this._themeSection = options.themeSection; this._fontFields = options.fontFields || []; _addCacheItem(this) }, dispose: function() { _removeCacheItem(this); this._callback = this._theme = this._font = null; return this }, setCallback: function(callback) { this._callback = callback; return this }, setTheme: function(theme, rtl) { this._current = theme; this._rtl = rtl; return this.refresh() }, refresh: function() { const that = this; const current = that._current || {}; let theme = _getTheme(current.name || current); that._themeName = theme.name; that._defaultPalette = theme.defaultPalette; that._font = _extend({}, theme.font, current.font); that._themeSection && _each(that._themeSection.split("."), (function(_, path) { theme = _extend(true, {}, theme[path]) })); that._theme = _extend(true, {}, theme, (0, _type.isString)(current) ? {} : current); that._initializeTheme(); if ((0, _utils.parseScalar)(that._rtl, that._theme.rtlEnabled)) { _extend(true, that._theme, that._theme._rtl) } that._callback(); return that }, theme: function(path) { return getThemePart(this._theme, path) }, themeName: function() { return this._themeName }, createPalette: function(palette, options) { return (0, _palette.createPalette)(palette, options, this._defaultPalette) }, createDiscretePalette: function(palette, count) { return (0, _palette.getDiscretePalette)(palette, count, this._defaultPalette) }, createGradientPalette: function(palette) { return (0, _palette.getGradientPalette)(palette, this._defaultPalette) }, getAccentColor: function(palette) { return (0, _palette.getAccentColor)(palette, this._defaultPalette) }, _initializeTheme: function() { const that = this; _each(that._fontFields || [], (function(_, path) { that._initializeFont(getThemePart(that._theme, path)) })) }, _initializeFont: function(font) { _extend(font, this._font, _extend({}, font)) } }) }, 95943: /*!***************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/viz/core/base_widget.utils.js ***! \***************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { exports.createEventTrigger = function(eventsMap, callbackGetter) { let triggers = {}; (0, _iterator.each)(eventsMap, (function(name, info) { if (info.name) { createEvent(name) } })); let changes; triggerEvent.change = function(name) { const eventInfo = eventsMap[name]; if (eventInfo) { (changes = changes || {})[name] = eventInfo } return !!eventInfo }; triggerEvent.applyChanges = function() { if (changes) { (0, _iterator.each)(changes, (function(name, eventInfo) { createEvent(eventInfo.newName || name) })); changes = null } }; triggerEvent.dispose = function() { eventsMap = callbackGetter = triggers = null }; return triggerEvent; function createEvent(name) { const eventInfo = eventsMap[name]; triggers[eventInfo.name] = callbackGetter(name, eventInfo.actionSettings) } function triggerEvent(name, arg, complete) { triggers[name](arg); complete && complete() } }; exports.createIncidentOccurred = void 0; exports.createResizeHandler = function(contentElement, redrawOnResize, resize) { let disposeHandler; const resizeManager = (resizeCallback = resize, (observe, unsubscribe) => { const { handler: handler, dispose: dispose } = function(callback, unsubscribe) { let timeout; const handler = function() { clearTimeout(timeout); timeout = setTimeout(callback, 100) }; return { handler: handler, dispose() { clearTimeout(timeout); unsubscribe(handler) } } }(resizeCallback, unsubscribe); observe(handler); return dispose }); var resizeCallback; if ("windowonly" === (0, _utils.normalizeEnum)(redrawOnResize)) { disposeHandler = resizeManager((handler => _resize_callbacks.default.add(handler)), (handler => _resize_callbacks.default.remove(handler))) } else if (true === redrawOnResize) { disposeHandler = resizeManager((handler => _resize_observer.default.observe(contentElement, handler)), (() => _resize_observer.default.unobserve(contentElement))) } return disposeHandler }; var _version = __webpack_require__( /*! ../../core/version */ 1956); var _string = __webpack_require__( /*! ../../core/utils/string */ 54497); var _errors_warnings = _interopRequireDefault(__webpack_require__( /*! ./errors_warnings */ 38355)); var _iterator = __webpack_require__( /*! ../../core/utils/iterator */ 21274); var _resize_callbacks = _interopRequireDefault(__webpack_require__( /*! ../../core/utils/resize_callbacks */ 63283)); var _resize_observer = _interopRequireDefault(__webpack_require__( /*! ../../core/resize_observer */ 11787)); var _utils = __webpack_require__( /*! ./utils */ 28779); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } const ERROR_MESSAGES = _errors_warnings.default.ERROR_MESSAGES; exports.createIncidentOccurred = function(widgetName, eventTrigger) { return function(id, args) { eventTrigger("incidentOccurred", { target: { id: id, type: "E" === id[0] ? "error" : "warning", args: args, text: _string.format.apply(null, [ERROR_MESSAGES[id]].concat(args || [])), widget: widgetName, version: _version.version } }) } } }, 38355: /*!*************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/viz/core/errors_warnings.js ***! \*************************************************************************/ function(module, exports, __webpack_require__) { exports.default = void 0; var _error = _interopRequireDefault(__webpack_require__( /*! ../../core/utils/error */ 67264)); var _errors = _interopRequireDefault(__webpack_require__( /*! ../../core/errors */ 87129)); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } exports.default = (0, _error.default)(_errors.default.ERROR_MESSAGES, { E2001: "Invalid data source", E2002: "Axis type and data type are incompatible", E2003: 'The "{0}" data source field contains data of unsupported type', E2004: 'The "{0}" data source field is inconsistent', E2005: 'The value field "{0}" is absent in the data source or all its values are negative', E2006: "A cycle is detected in provided data", E2007: 'The value field "{0}" is absent in the data source', E2008: 'The value field "{0}" must be a string', E2009: 'The value field "{0}" must be a positive numeric value', E2101: "Unknown series type: {0}", E2102: "Ambiguity occurred between two value axes with the same name", E2103: 'The "{0}" option is given an invalid value. Assign a function instead', E2104: "Invalid logarithm base", E2105: 'Invalid value of a "{0}"', E2202: "Invalid {0} scale value", E2203: "The range you are trying to set is invalid", W2002: "The {0} series cannot be drawn because the {1} data field is missing", W2003: "Tick interval is too small", W2101: 'The "{0}" pane does not exist; the last pane is used by default', W2102: 'A value axis with the "{0}" name was created automatically', W2103: "The chart title was hidden due to the container size", W2104: "The legend was hidden due to the container size", W2105: 'The title of the "{0}" axis was hidden due to the container size', W2106: 'The labels of the "{0}" axis were hidden due to the container size', W2107: "The export menu was hidden due to the container size", W2108: "The browser does not support exporting images to {0} format.", W2301: "Invalid value range" }); module.exports = exports.default; module.exports.default = exports.default }, 71115: /*!*****************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/viz/core/helpers.js ***! \*****************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { exports.changes = function() { return new Flags }; exports.expand = expand; exports.replaceInherit = void 0; var _extend2 = __webpack_require__( /*! ../../core/utils/extend */ 52576); var _window = __webpack_require__( /*! ../../core/utils/window */ 3104); var _common = __webpack_require__( /*! ../../core/utils/common */ 17781); const isServerSide = !(0, _window.hasWindow)(); function Flags() { this.reset() } Flags.prototype = { constructor: Flags, add: function(codes) { let i; const ii = codes.length; const flags = this._flags; for (i = 0; i < ii; ++i) { flags[codes[i]] = 1 } }, has: function(code) { return this._flags[code] > 0 }, count: function() { return Object.keys(this._flags).length }, reset: function() { this._flags = {} } }; function combineMaps(baseMap, thisMap) { return baseMap !== thisMap ? (0, _extend2.extend)({}, baseMap, thisMap) : (0, _extend2.extend)({}, baseMap) } function combineLists(baseList, thisList) { return baseList !== thisList ? baseList.concat(thisList) : baseList.slice() } function buildTotalChanges(proto) { proto._totalChangesOrder = proto._optionChangesOrder.concat(proto._layoutChangesOrder, proto._customChangesOrder) } function addChange(settings) { const proto = this.prototype; const code = settings.code; proto["_change_" + code] = settings.handler; if (settings.isThemeDependent) { proto._themeDependentChanges.push(code) } if (settings.option) { proto._optionChangesMap[settings.option] = code }(settings.isOptionChange ? proto._optionChangesOrder : proto._customChangesOrder).push(code); buildTotalChanges(proto) } function createChainExecutor() { const executeChain = function() { let i; const ii = executeChain._chain.length; let result; for (i = 0; i < ii; ++i) { result = executeChain._chain[i].apply(this, arguments) } return result }; executeChain._chain = []; executeChain.add = function(item) { executeChain._chain.push(item) }; executeChain.copy = function(executor) { executeChain._chain = executor._chain.slice() }; return executeChain } function expand(target, name, expander) { let current = target[name]; if (!current) { current = expander } else if (!current.add) { current = createChainExecutor(); current.add(target[name]); current.add(expander) } else { if (false === Object.prototype.hasOwnProperty.call(target, name)) { current = createChainExecutor(); current.copy(target[name]) } current.add(expander) } target[name] = current } function addPlugin(plugin) { const proto = this.prototype; proto._plugins.push(plugin); plugin.fontFields && proto._fontFields.push.apply(proto._fontFields, plugin.fontFields); if (plugin.members) { (0, _extend2.extend)(this.prototype, plugin.members) } if (plugin.customize) { plugin.customize(this) } if (plugin.extenders) { Object.keys(plugin.extenders).forEach((function(key) { const func = plugin.extenders[key]; expand(proto, key, func) }), this) } } exports.replaceInherit = isServerSide ? function(widget) { const _inherit = widget.inherit; widget.inherit = function() { const result = _inherit.apply(this, arguments); const proto = result.prototype; ["_plugins", "_eventsMap", "_initialChanges", "_themeDependentChanges", "_optionChangesMap", "_optionChangesOrder", "_layoutChangesOrder", "_customChangesOrder", "_totalChangesOrder"].forEach((function(key) { proto[key] = {} })); result.addPlugin = _common.noop; return result }; widget.addChange = _common.noop; widget.addPlugin = _common.noop } : function(widget) { const _inherit = widget.inherit; widget.inherit = function() { let proto = this.prototype; const plugins = proto._plugins; const fontFields = proto._fontFields; const eventsMap = proto._eventsMap; const initialChanges = proto._initialChanges; const themeDependentChanges = proto._themeDependentChanges; const optionChangesMap = proto._optionChangesMap; const partialOptionChangesMap = proto._partialOptionChangesMap; const partialOptionChangesPath = proto._partialOptionChangesPath; const optionChangesOrder = proto._optionChangesOrder; const layoutChangesOrder = proto._layoutChangesOrder; const customChangesOrder = proto._customChangesOrder; const result = _inherit.apply(this, arguments); proto = result.prototype; proto._plugins = combineLists(plugins, proto._plugins); proto._fontFields = combineLists(fontFields, proto._fontFields); proto._eventsMap = combineMaps(eventsMap, proto._eventsMap); proto._initialChanges = combineLists(initialChanges, proto._initialChanges); proto._themeDependentChanges = combineLists(themeDependentChanges, proto._themeDependentChanges); proto._optionChangesMap = combineMaps(optionChangesMap, proto._optionChangesMap); proto._partialOptionChangesMap = combineMaps(partialOptionChangesMap, proto._partialOptionChangesMap); proto._partialOptionChangesPath = combineMaps(partialOptionChangesPath, proto._partialOptionChangesPath); proto._optionChangesOrder = combineLists(optionChangesOrder, proto._optionChangesOrder); proto._layoutChangesOrder = combineLists(layoutChangesOrder, proto._layoutChangesOrder); proto._customChangesOrder = combineLists(customChangesOrder, proto._customChangesOrder); buildTotalChanges(proto); result.addPlugin = addPlugin; return result }; widget.prototype._plugins = []; widget.prototype._fontFields = []; widget.addChange = addChange; widget.addPlugin = addPlugin } }, 48874: /*!****************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/viz/core/layout.js ***! \****************************************************************/ function(module, exports, __webpack_require__) { exports.default = void 0; var _utils = __webpack_require__( /*! ./utils */ 28779); const _min = Math.min; const _max = Math.max; const _round = Math.round; const horizontalAlignmentMap = { left: 0, center: 1, right: 2 }; const verticalAlignmentMap = { top: 0, center: 1, bottom: 2 }; const sideMap = { horizontal: 0, vertical: 1 }; const slicersMap = {}; slicersMap[0] = function(a, b, size) { return [a, _min(b, a + size)] }; slicersMap[1] = function(a, b, size) { return [_max(a, (a + b - size) / 2), _min(b, (a + b + size) / 2)] }; slicersMap[2] = function(a, b, size) { return [_max(a, b - size), b] }; function pickValue(value, map, defaultValue) { const val = (0, _utils.normalizeEnum)(value); return val in map ? map[val] : defaultValue } function normalizeLayoutOptions(options) { const side = pickValue(options.side, sideMap, 1); const alignment = [pickValue(options.horizontalAlignment, horizontalAlignmentMap, 1), pickValue(options.verticalAlignment, verticalAlignmentMap, 0)]; return { side: side, primary: (primary = alignment[side], primary < 2 ? 0 : 2), secondary: alignment[1 - side], weak: options.weak, priority: options.priority || 0, header: options.header, position: options.position }; var primary } function getShrink(alignment, size) { return (alignment > 0 ? -1 : 1) * size } function processForward(item, rect, minSize) { const side = item.side; const size = item.element.measure([rect[2] - rect[0], rect[3] - rect[1]]); const minSide = "indside" === item.position ? 0 : minSize[side]; const isValid = size[side] < rect[2 + side] - rect[side] - minSide; if (isValid) { if ("inside" !== item.position) { rect[item.primary + side] += getShrink(item.primary, size[side]) } item.size = size } return isValid } function processRectBackward(item, rect, alignmentRect) { const primarySide = item.side; const secondarySide = (side = primarySide, 1 - side); var side; const itemRect = []; const secondary = (alignment = item.secondary, a = alignmentRect[secondarySide], b = alignmentRect[2 + secondarySide], size = item.size[secondarySide], slicersMap[alignment](a, b, size)); var alignment, a, b, size; itemRect[primarySide] = _round(itemRect[2 + primarySide] = rect[item.primary + primarySide] + ("inside" === item.position ? getShrink(item.primary, item.size[primarySide]) : 0)); itemRect[item.primary + primarySide] = _round(rect[item.primary + primarySide] - getShrink(item.primary, item.size[primarySide])); if ("inside" !== item.position) { rect[item.primary + primarySide] = itemRect[item.primary + primarySide] } itemRect[secondarySide] = _round(secondary[0]); itemRect[2 + secondarySide] = _round(secondary[1]); return itemRect } function processBackward(item, rect, alignmentRect, fitRect, size, targetRect) { const itemRect = processRectBackward(item, rect, alignmentRect); const itemFitRect = processRectBackward(item, fitRect, fitRect); if (size[item.side] > 0) { size[item.side] -= item.size[item.side]; targetRect[item.primary + item.side] = itemRect[item.primary + item.side]; item.element.freeSpace() } else { item.element.move(itemRect, itemFitRect) } } function Layout() { this._targets = [] } Layout.prototype = { constructor: Layout, dispose: function() { this._targets = null }, add: function(target) { this._targets.push(target) }, forward: function(targetRect, minSize) { const rect = targetRect.slice(); const targets = function(targets) { let i; const ii = targets.length; let collection = []; let layout; for (i = 0; i < ii; ++i) { layout = targets[i].layoutOptions(); if (layout) { layout = normalizeLayoutOptions(layout); layout.element = targets[i]; collection.push(layout) } } collection.sort((function(a, b) { return b.side - a.side || a.priority - b.priority })); collection = function(collection) { const weakItem = collection.filter((function(item) { return true === item.weak }))[0]; let headerItem; if (weakItem) { headerItem = collection.filter((function(item) { return weakItem.primary === item.primary && item.side === weakItem.side && item !== weakItem }))[0] } if (weakItem && headerItem) { return [makeHeader(headerItem, weakItem)].concat(collection.filter((function(item) { return !(item === headerItem || item === weakItem) }))) } return collection }(collection); return collection }(this._targets); let i; const ii = targets.length; const cache = []; for (i = 0; i < ii; ++i) { if (processForward(targets[i], rect, minSize)) { cache.push(targets[i]) } else { targets[i].element.freeSpace() } } this._cache = cache.reverse(); return rect }, backward: function(targetRect, alignmentRect) { let size = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : [0, 0]; let backwardRect = targetRect.slice(); const fitRect = targetRect.slice(); const targets = this._cache; let targetSide = 0; let target; let i; const ii = targets.length; for (i = 0; i < ii; ++i) { target = targets[i]; if (target.side !== targetSide) { backwardRect = targetRect.slice() } processBackward(target, backwardRect, alignmentRect, fitRect, size, targetRect); targetSide = target.side } return size } }; function processBackwardHeaderRect(element, rect) { const rectCopy = rect.slice(); const itemRect = processRectBackward(element, rectCopy, rectCopy); itemRect[element.side] = rect[element.side]; itemRect[2 + element.side] = rect[2 + element.side]; return itemRect } function makeHeader(header, weakElement) { const side = header.side; const primary = header.primary; const secondary = header.secondary; return { side: side, primary: primary, secondary: secondary, priority: 0, element: { measure: function(targetSize) { const result = targetSize.slice(); const weakSize = weakElement.element.measure(targetSize.slice()); targetSize[primary] -= weakSize[primary]; const headerSize = header.element.measure(targetSize.slice()); result[side] = weakSize[side] = headerSize[side] = Math.max(headerSize[side], weakSize[side]); weakElement.size = weakSize; header.size = headerSize; return result }, move: function(rect, fitRect) { if (fitRect[2] - fitRect[0] < header.size[0] + weakElement.size[0] - 2) { this.freeSpace(); return } const weakRect = processBackwardHeaderRect(weakElement, fitRect); fitRect[2 + weakElement.primary] = weakRect[weakElement.primary]; const headerFitReact = processBackwardHeaderRect(header, fitRect); if (fitRect[2 + weakElement.primary] < rect[2 + weakElement.primary] && header.size[header.primary] > rect[2 + header.primary] - rect[header.primary]) { rect[2 + weakElement.primary] = fitRect[2 + weakElement.primary] } let headerRect = processBackwardHeaderRect(header, rect); if (headerRect[2 + weakElement.primary] > fitRect[2 + weakElement.primary]) { rect[2 + weakElement.primary] = fitRect[2 + weakElement.primary]; headerRect = processBackwardHeaderRect(header, rect) } weakElement.element.move(weakRect); header.element.move(headerRect, headerFitReact) }, freeSpace: function() { header.element.freeSpace(); weakElement.element.freeSpace() } } } } exports.default = Layout; module.exports = exports.default; module.exports.default = exports.default }, 35523: /*!*****************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/viz/core/renderers/animation.js ***! \*****************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { exports.AnimationController = AnimationController; exports.easingFunctions = exports.animationSvgStep = void 0; var _frame = __webpack_require__( /*! ../../../common/core/animation/frame */ 84096); const noop = function() {}; const easingFunctions = exports.easingFunctions = { easeOutCubic: function(pos, start, end) { return 1 === pos ? end : (1 - Math.pow(1 - pos, 3)) * (end - start) + +start }, linear: function(pos, start, end) { return 1 === pos ? end : pos * (end - start) + +start } }; const animationSvgStep = exports.animationSvgStep = { segments: function(elem, params, progress, easing, currentParams) { const from = params.from; const to = params.to; let curSeg; let seg; let i; let j; const segments = []; for (i = 0; i < from.length; i++) { curSeg = from[i]; seg = [curSeg[0]]; if (curSeg.length > 1) { for (j = 1; j < curSeg.length; j++) { seg.push(easing(progress, curSeg[j], to[i][j])) } } segments.push(seg) } currentParams.segments = params.end && 1 === progress ? params.end : segments; elem.attr({ segments: segments }) }, arc: function(elem, params, progress, easing) { const from = params.from; const to = params.to; const current = {}; for (const i in from) { current[i] = easing(progress, from[i], to[i]) } elem.attr(current) }, transform: function(elem, params, progress, easing, currentParams) { const from = params.from; const to = params.to; const current = {}; for (const i in from) { current[i] = currentParams[i] = easing(progress, from[i], to[i]) } elem.attr(current) }, base: function(elem, params, progress, easing, currentParams, attributeName) { const obj = {}; obj[attributeName] = currentParams[attributeName] = easing(progress, params.from, params.to); elem.attr(obj) }, _: noop, complete: function(element, currentSettings) { element.attr(currentSettings) } }; function step(now) { const that = this; const animateStep = that._animateStep; let attrName; that._progress = that._calcProgress(now); for (attrName in that.params) { const anim = animateStep[attrName] || animateStep.base; anim(that.element, that.params[attrName], that._progress, that._easing, that._currentParams, attrName) } that.options.step && that.options.step(that._easing(that._progress, 0, 1), that._progress); if (1 === that._progress) { return that.stop() } return true } function delayTick(now) { if (now - this._startTime >= this.delay) { this.tick = step } return true } function start(now) { this._startTime = now; this.tick = this.delay ? delayTick : step; return true } function Animation(element, params, options) { this._progress = 0; this.element = element; this.params = params; this.options = options; this.duration = options.partitionDuration ? options.duration * options.partitionDuration : options.duration; this.delay = options.delay && options.duration * options.delay || 0; this._animateStep = options.animateStep || animationSvgStep; this._easing = easingFunctions[options.easing] || easingFunctions.easeOutCubic; this._currentParams = {}; this.tick = start } Animation.prototype = { _calcProgress: function(now) { return Math.min(1, (now - this.delay - this._startTime) / this.duration) }, stop: function(disableComplete) { const options = this.options; const animateStep = this._animateStep; this.stop = this.tick = noop; animateStep.complete && animateStep.complete(this.element, this._currentParams); options.complete && !disableComplete && options.complete() } }; function AnimationController(element) { this._animationCount = 0; this._timerId = null; this._animations = {}; this.element = element } AnimationController.prototype = { _loop: function() { const that = this; const animations = that._animations; let activeAnimation = 0; const now = (new Date).getTime(); let an; const endAnimation = that._endAnimation; for (an in animations) { if (!animations[an].tick(now)) { delete animations[an] } activeAnimation++ } if (0 === activeAnimation) { that.stop(); that._endAnimationTimer = endAnimation && setTimeout((function() { if (0 === that._animationCount) { endAnimation(); that._endAnimation = null } })); return } that._timerId = _frame.requestAnimationFrame.call(null, (function() { that._loop() }), that.element) }, addAnimation: function(animation) { const that = this; that._animations[that._animationCount++] = animation; clearTimeout(that._endAnimationTimer); if (!that._timerId) { clearTimeout(that._startDelay); that._startDelay = setTimeout((function() { that._timerId = 1; that._loop() }), 0) } }, animateElement: function(elem, params, options) { if (elem && params && options) { elem.animation && elem.animation.stop(); this.addAnimation(elem.animation = new Animation(elem, params, options)) } }, onEndAnimation: function(endAnimation) { this._animationCount ? this._endAnimation = endAnimation : endAnimation() }, dispose: function() { this.stop(); this.element = null }, stop: function() { this._animations = {}; this._animationCount = 0; (0, _frame.cancelAnimationFrame)(this._timerId); clearTimeout(this._startDelay); clearTimeout(this._endAnimationTimer); this._timerId = null }, lock: function() { let an; const animations = this._animations; let unstoppable; let hasUnstoppableInAnimations; for (an in animations) { unstoppable = animations[an].options.unstoppable; hasUnstoppableInAnimations = hasUnstoppableInAnimations || unstoppable; if (!unstoppable) { animations[an].stop(true); delete animations[an] } }!hasUnstoppableInAnimations && this.stop() } } }, 63022: /*!****************************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/viz/core/renderers/renderer.js ***! \****************************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { exports.RectSvgElement = exports.PathSvgElement = exports.ArcSvgElement = void 0; exports.Renderer = Renderer; exports.TextSvgElement = exports.SvgElement = void 0; exports.getFuncIri = getFuncIri; exports.processHatchingAttrs = processHatchingAttrs; exports.refreshPaths = void 0; var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../../core/renderer */ 64553)); var _dom_adapter = _interopRequireDefault(__webpack_require__( /*! ../../../core/dom_adapter */ 64960)); var _window = __webpack_require__( /*! ../../../core/utils/window */ 3104); var _call_once = _interopRequireDefault(__webpack_require__( /*! ../../../core/utils/call_once */ 13630)); var _events_engine = _interopRequireDefault(__webpack_require__( /*! ../../../common/core/events/core/events_engine */ 92774)); var _svg = __webpack_require__( /*! ../../../core/utils/svg */ 47420); var _animation = __webpack_require__( /*! ./animation */ 35523); var _utils = __webpack_require__( /*! ../utils */ 28779); var _type = __webpack_require__( /*! ../../../core/utils/type */ 11528); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } const window = (0, _window.getWindow)(); const { max: max, round: round } = Math; const pxAddingExceptions = { "column-count": true, "fill-opacity": true, "flex-grow": true, "flex-shrink": true, "font-weight": true, "line-height": true, opacity: true, order: true, orphans: true, widows: true, "z-index": true, zoom: true }; const NONE = "none"; const objectCreate = function() { if (!Object.create) { return function(proto) { const F = function() {}; F.prototype = proto; return new F } } else { return function(proto) { return Object.create(proto) } } }(); const DEFAULTS = { scaleX: 1, scaleY: 1, "pointer-events": null }; const getBackup = (0, _call_once.default)((function() { const backupContainer = _dom_adapter.default.createElement("div"); backupContainer.style.left = "-9999px"; backupContainer.style.position = "absolute"; return { backupContainer: backupContainer, backupCounter: 0 } })); function isObjectArgument(value) { return value && "string" !== typeof value } function createElement(tagName) { return _dom_adapter.default.createElementNS("http://www.w3.org/2000/svg", tagName) } function getFuncIri(id, pathModified) { return null !== id ? "url(" + (pathModified ? window.location.href.split("#")[0] : "") + "#" + id + ")" : id } function extend(target, source) { let key; for (key in source) { target[key] = source[key] } return target } const preserveAspectRatioMap = { full: NONE, lefttop: "xMinYMin", leftcenter: "xMinYMid", leftbottom: "xMinYMax", centertop: "xMidYMin", center: "xMidYMid", centerbottom: "xMidYMax", righttop: "xMaxYMin", rightcenter: "xMaxYMid", rightbottom: "xMaxYMax" }; function processHatchingAttrs(element, attrs) { if (attrs.hatching && "none" !== (0, _utils.normalizeEnum)(attrs.hatching.direction)) { attrs = extend({}, attrs); attrs.fill = element._hatching = element.renderer.lockDefsElements({ color: attrs.fill, hatching: attrs.hatching }, element._hatching, "pattern"); delete attrs.filter } else if (element._hatching) { element.renderer.releaseDefsElements(element._hatching); element._hatching = null; delete attrs.filter } else if (attrs.filter) { attrs = extend({}, attrs); attrs.filter = element._filter = element.renderer.lockDefsElements({}, element._filter, "filter") } else if (element._filter) { element.renderer.releaseDefsElements(element._filter); element._filter = null } delete attrs.hatching; return attrs } const buildArcPath = function(x, y, innerR, outerR, startAngleCos, startAngleSin, endAngleCos, endAngleSin, isCircle, longFlag) { return ["M", (x + outerR * startAngleCos).toFixed(5), (y - outerR * startAngleSin).toFixed(5), "A", outerR.toFixed(5), outerR.toFixed(5), 0, longFlag, 0, (x + outerR * endAngleCos).toFixed(5), (y - outerR * endAngleSin).toFixed(5), isCircle ? "M" : "L", (x + innerR * endAngleCos).toFixed(5), (y - innerR * endAngleSin).toFixed(5), "A", innerR.toFixed(5), innerR.toFixed(5), 0, longFlag, 1, (x + innerR * startAngleCos).toFixed(5), (y - innerR * startAngleSin).toFixed(5), "Z"].join(" ") }; function buildPathSegments(points, type) { let list = [ ["M", 0, 0] ]; switch (type) { case "line": list = buildLineSegments(points); break; case "area": list = buildLineSegments(points, true); break; case "bezier": list = buildCurveSegments(points); break; case "bezierarea": list = buildCurveSegments(points, true) } return list } function buildLineSegments(points, close) { return buildSegments(points, buildSimpleLineSegment, close) } function buildCurveSegments(points, close) { return buildSegments(points, buildSimpleCurveSegment, close) } function buildSegments(points, buildSimpleSegment, close) { var _points$; let i; let ii; const list = []; if (null !== (_points$ = points[0]) && void 0 !== _points$ && _points$.length) { for (i = 0, ii = points.length; i < ii; ++i) { buildSimpleSegment(points[i], close, list) } } else { buildSimpleSegment(points, close, list) } return list } function buildSimpleLineSegment(points, close, list) { let i = 0; const k0 = list.length; let k = k0; const ii = (points || []).length; if (ii) { if (void 0 !== points[0].x) { for (; i < ii;) { list[k++] = ["L", points[i].x, points[i++].y] } } else { for (; i < ii;) { list[k++] = ["L", points[i++], points[i++]] } } list[k0][0] = "M" } else { list[k] = ["M", 0, 0] } close && list.push(["Z"]); return list } function buildSimpleCurveSegment(points, close, list) { let i; let k = list.length; const ii = (points || []).length; if (ii) { if (void 0 !== points[0].x) { list[k++] = ["M", points[0].x, points[0].y]; for (i = 1; i < ii;) { list[k++] = ["C", points[i].x, points[i++].y, points[i].x, points[i++].y, points[i].x, points[i++].y] } } else { list[k++] = ["M", points[0], points[1]]; for (i = 2; i < ii;) { list[k++] = ["C", points[i++], points[i++], points[i++], points[i++], points[i++], points[i++]] } } } else { list[k] = ["M", 0, 0] } close && list.push(["Z"]); return list } function prepareConstSegment(constSeg, type) { const x = constSeg[constSeg.length - 2]; const y = constSeg[constSeg.length - 1]; switch (type) { case "line": case "area": constSeg[0] = "L"; break; case "bezier": case "bezierarea": constSeg[0] = "C"; constSeg[1] = constSeg[3] = constSeg[5] = x; constSeg[2] = constSeg[4] = constSeg[6] = y } } function makeEqualLineSegments(short, long, type) { const constSeg = short[short.length - 1].slice(); let i = short.length; prepareConstSegment(constSeg, type); for (; i < long.length; i++) { short[i] = constSeg.slice(0) } } function makeEqualAreaSegments(short, long, type) { let i; let head; const shortLength = short.length; const longLength = long.length; let constsSeg1; let constsSeg2; if ((shortLength - 1) % 2 === 0 && (longLength - 1) % 2 === 0) { i = (shortLength - 1) / 2 - 1; head = short.slice(0, i + 1); constsSeg1 = head[head.length - 1].slice(0); constsSeg2 = short.slice(i + 1)[0].slice(0); prepareConstSegment(constsSeg1, type); prepareConstSegment(constsSeg2, type); for (let j = i; j < (longLength - 1) / 2 - 1; j++) { short.splice(j + 1, 0, constsSeg1); short.splice(j + 3, 0, constsSeg2) } } } function baseCss(that, styles) { const elemStyles = that._styles; let key; let value; styles = styles || {}; for (key in styles) { value = styles[key]; if ((0, _type.isDefined)(value)) { value += "number" === typeof value && !pxAddingExceptions[key] ? "px" : ""; elemStyles[key] = "" !== value ? value : null } } for (key in elemStyles) { value = elemStyles[key]; if (value) { that.element.style[key] = value } else if (null === value) { that.element.style[key] = "" } } return that } function fixFuncIri(wrapper, attribute) { const element = wrapper.element; const id = wrapper.attr(attribute); if (id && -1 !== id.indexOf("DevExpress")) { element.removeAttribute(attribute); element.setAttribute(attribute, getFuncIri(id, wrapper.renderer.pathModified)) } } function baseAttr(that, attrs) { attrs = attrs || {}; const settings = that._settings; const attributes = {}; let key; let value; const elem = that.element; const renderer = that.renderer; const rtl = renderer.rtl; let hasTransformations; let recalculateDashStyle; let sw; let i; if (!isObjectArgument(attrs)) { if (attrs in settings) { return settings[attrs] } if (attrs in DEFAULTS) { return DEFAULTS[attrs] } return 0 } extend(attributes, attrs); for (key in attributes) { value = attributes[key]; if (void 0 === value) { continue } settings[key] = value; if ("align" === key) { key = "text-anchor"; value = { left: rtl ? "end" : "start", center: "middle", right: rtl ? "start" : "end" } [value] || null } else if ("dashStyle" === key) { recalculateDashStyle = true; continue } else if ("stroke-width" === key) { recalculateDashStyle = true } else if (value && ("fill" === key || "clip-path" === key || "filter" === key) && 0 === value.indexOf("DevExpress")) { that._addFixIRICallback(); value = getFuncIri(value, renderer.pathModified) } else if (/^(translate(X|Y)|rotate[XY]?|scale(X|Y)|sharp|sharpDirection)$/i.test(key)) { hasTransformations = true; continue } else if (/^(x|y|d)$/i.test(key)) { hasTransformations = true } if (null === value) { elem.removeAttribute(key) } else { elem.setAttribute(key, value) } } if (recalculateDashStyle && "dashStyle" in settings) { value = settings.dashStyle; sw = ("_originalSW" in that ? that._originalSW : settings["stroke-width"]) || 1; key = "stroke-dasharray"; value = null === value ? "" : (0, _utils.normalizeEnum)(value); if ("" === value || "solid" === value || value === NONE) { that.element.removeAttribute(key) } else { value = value.replace(/longdash/g, "8,3,").replace(/dash/g, "4,3,").replace(/dot/g, "1,3,").replace(/,$/, "").split(","); i = value.length; while (i--) { value[i] = parseInt(value[i]) * sw } that.element.setAttribute(key, value.join(",")) } } if (hasTransformations) { that._applyTransformation() } return that } function orderHtmlTree(list, line, node, parentStyle, parentClassName) { let style; let realStyle; let i; let ii; let nodes; if (void 0 !== node.wholeText) { list.push({ value: node.wholeText, style: parentStyle, className: parentClassName, line: line, height: parentStyle["font-size"] || 0 }) } else if ("BR" === node.tagName) { ++line } else if (_dom_adapter.default.isElementNode(node)) { extend(style = {}, parentStyle); switch (node.tagName) { case "B": case "STRONG": style["font-weight"] = "bold"; break; case "I": case "EM": style["font-style"] = "italic"; break; case "U": style["text-decoration"] = "underline" } realStyle = node.style; realStyle.color && (style.fill = realStyle.color); realStyle.fontSize && (style["font-size"] = realStyle.fontSize); realStyle.fontStyle && (style["font-style"] = realStyle.fontStyle); realStyle.fontWeight && (style["font-weight"] = realStyle.fontWeight); realStyle.textDecoration && (style["text-decoration"] = realStyle.textDecoration); for (i = 0, nodes = node.childNodes, ii = nodes.length; i < ii; ++i) { line = orderHtmlTree(list, line, nodes[i], style, node.className || parentClassName) } } return line } function createTspans(items, element, fieldName) { let i; let ii; let item; for (i = 0, ii = items.length; i < ii; ++i) { item = items[i]; item[fieldName] = createElement("tspan"); item[fieldName].appendChild(_dom_adapter.default.createTextNode(item.value)); item.style && baseCss({ element: item[fieldName], _styles: {} }, item.style); item.className && item[fieldName].setAttribute("class", item.className); element.appendChild(item[fieldName]) } } function restoreText() { if (this._hasEllipsis) { this.attr({ text: this._settings.text }) } } function cloneAndRemoveAttrs(node) { let clone; if (node) { clone = node.cloneNode(); clone.removeAttribute("y"); clone.removeAttribute("x") } return clone || node } function detachTitleElements(element) { const titleElements = _dom_adapter.default.querySelectorAll(element, "title"); for (let i = 0; i < titleElements.length; i++) { element.removeChild(titleElements[i]) } return titleElements } function getIndexForEllipsis(text, maxWidth, startBox, endBox) { let k; let kk; if (startBox <= maxWidth && endBox > maxWidth) { for (k = 1, kk = text.value.length; k <= kk; ++k) { if (startBox + text.tspan.getSubStringLength(0, k) > maxWidth) { return k - 1 } } } } function getTextWidth(text) { return text.value.length ? text.tspan.getSubStringLength(0, text.value.length) : 0 } function getEllipsisString(ellipsisMaxWidth, _ref) { let { hideOverflowEllipsis: hideOverflowEllipsis } = _ref; return hideOverflowEllipsis && 0 === ellipsisMaxWidth ? "" : "..." } function setEllipsis(text, ellipsisMaxWidth, options) { const ellipsis = getEllipsisString(ellipsisMaxWidth, options); if (text.value.length && text.tspan.parentNode) { for (let i = text.value.length - 1; i >= 1; i--) { if (text.startBox + text.tspan.getSubStringLength(0, i) < ellipsisMaxWidth) { setNewText(text, i, ellipsis); break } else if (1 === i) { setNewText(text, 0, ellipsis) } } } } function wordWrap(text, maxWidth, ellipsisMaxWidth, options, lastStepBreakIndex) { const wholeText = text.value; let breakIndex; if ("none" !== options.wordWrap) { breakIndex = "normal" === options.wordWrap ? function(text, maxWidth) { const initialIndices = text.startBox > 0 ? [0] : []; const spaceIndices = text.value.split("").reduce(((indices, char, index) => { if (" " === char) { indices.push(index) } return indices }), initialIndices); let spaceIndex = 0; while (void 0 !== spaceIndices[spaceIndex + 1] && text.startBox + text.tspan.getSubStringLength(0, spaceIndices[spaceIndex + 1]) < maxWidth) { spaceIndex++ } return spaceIndices[spaceIndex] }(text, maxWidth) : function(text, maxWidth) { for (let i = 0; i < text.value.length - 1; i++) { if (text.startBox + text.tspan.getSubStringLength(0, i + 1) > maxWidth) { return i } } }(text, maxWidth) } let restLines = []; let restText; if (isFinite(breakIndex) && !(0 === lastStepBreakIndex && 0 === breakIndex)) { setNewText(text, breakIndex, ""); const newTextOffset = " " === wholeText[breakIndex] ? 1 : 0; const restString = wholeText.slice(breakIndex + newTextOffset); if (restString.length) { const restTspan = cloneAndRemoveAttrs(text.tspan); restTspan.textContent = restString; text.tspan.parentNode.appendChild(restTspan); restText = extend(extend({}, text), { value: restString, startBox: 0, height: 0, tspan: restTspan, stroke: cloneAndRemoveAttrs(text.stroke), endBox: restTspan.getSubStringLength(0, restString.length) }); restText.stroke && (restText.stroke.textContent = restString); if (restText.endBox > maxWidth) { restLines = wordWrap(restText, maxWidth, ellipsisMaxWidth, options, breakIndex); if (!restLines.length) { return [] } } } } if (text.value.length) { if ("ellipsis" === options.textOverflow && text.tspan.getSubStringLength(0, text.value.length) > maxWidth) { setEllipsis(text, ellipsisMaxWidth, options) } if ("hide" === options.textOverflow && text.tspan.getSubStringLength(0, text.value.length) > maxWidth) { return [] } } else { text.tspan.parentNode.removeChild(text.tspan) } const parts = []; if (restText) { parts.push(restText) } return [{ commonLength: wholeText.length, parts: parts }].concat(restLines) } function setNewText(text, index) { let insertString = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : "..."; const newText = text.value.substr(0, index) + insertString; text.value = text.tspan.textContent = newText; text.stroke && (text.stroke.textContent = newText); if ("..." === insertString) { text.hasEllipsis = true } } function removeTextSpan(text) { text.tspan.parentNode && text.tspan.parentNode.removeChild(text.tspan); text.stroke && text.stroke.parentNode && text.stroke.parentNode.removeChild(text.stroke) } function setTextNodeAttribute(item, name, value) { item.tspan.setAttribute(name, value); item.stroke && item.stroke.setAttribute(name, value) } function getItemLineHeight(item, defaultValue) { return item.inherits ? maxLengthFontSize(item.height, defaultValue) : item.height || defaultValue } function locateTextNodes(wrapper) { if (!wrapper._texts) { return } const items = wrapper._texts; const x = wrapper._settings.x; const lineHeight = wrapper._getLineHeight(); let i; let ii; let item = items[0]; setTextNodeAttribute(item, "x", x); setTextNodeAttribute(item, "y", wrapper._settings.y); for (i = 1, ii = items.length; i < ii; ++i) { item = items[i]; if (parseFloat(item.height) >= 0) { setTextNodeAttribute(item, "x", x); const height = getItemLineHeight(item, lineHeight); setTextNodeAttribute(item, "dy", height) } } } function maxLengthFontSize(fontSize1, fontSize2) { const parsedHeight1 = parseFloat(fontSize1); const parsedHeight2 = parseFloat(fontSize2); const height1 = parsedHeight1 || 12; const height2 = parsedHeight2 || 12; return height1 > height2 ? !isNaN(parsedHeight1) ? fontSize1 : height1 : !isNaN(parsedHeight2) ? fontSize2 : height2 } function baseAnimate(that, params, options, complete) { options = options || {}; let key; let value; const renderer = that.renderer; const settings = that._settings; const animationParams = {}; const defaults = { translateX: 0, translateY: 0, scaleX: 1, scaleY: 1, rotate: 0, rotateX: 0, rotateY: 0 }; if (complete) { options.complete = complete } if (renderer.animationEnabled()) { for (key in params) { value = params[key]; if (/^(translate(X|Y)|rotate[XY]?|scale(X|Y))$/i.test(key)) { animationParams.transform = animationParams.transform || { from: {}, to: {} }; animationParams.transform.from[key] = key in settings ? Number(settings[key].toFixed(3)) : defaults[key]; animationParams.transform.to[key] = value } else if ("arc" === key || "segments" === key) { animationParams[key] = value } else { animationParams[key] = { from: key in settings ? settings[key] : parseFloat(that.element.getAttribute(key) || 0), to: value } } } renderer.animateElement(that, animationParams, extend(extend({}, renderer._animation), options)) } else { options.step && options.step.call(that, 1, 1); options.complete && options.complete.call(that); that.attr(params) } return that } function buildLink(target, parameters) { const obj = { is: false, name: parameters.name || parameters, after: parameters.after }; if (target) { obj.to = target } else { obj.virtual = true } return obj } let SvgElement = function(renderer, tagName, type) { const that = this; that.renderer = renderer; that.element = createElement(tagName); that._settings = {}; that._styles = {}; if ("path" === tagName) { that.type = type || "line" } }; exports.SvgElement = SvgElement; function removeFuncIriCallback(callback) { fixFuncIriCallbacks.remove(callback) } SvgElement.prototype = { constructor: SvgElement, _getJQElement: function() { return this._$element || (this._$element = (0, _renderer.default)(this.element)) }, _addFixIRICallback: function() { const that = this; const fn = function() { fixFuncIri(that, "fill"); fixFuncIri(that, "clip-path"); fixFuncIri(that, "filter") }; that.element._fixFuncIri = fn; fn.renderer = that.renderer; fixFuncIriCallbacks.add(fn); that._addFixIRICallback = function() {} }, _clearChildrenFuncIri: function() { const clearChildren = function(element) { let i; for (i = 0; i < element.childNodes.length; i++) { removeFuncIriCallback(element.childNodes[i]._fixFuncIri); clearChildren(element.childNodes[i]) } }; clearChildren(this.element) }, dispose: function() { removeFuncIriCallback(this.element._fixFuncIri); this._clearChildrenFuncIri(); this._getJQElement().remove(); return this }, append: function(parent) { (parent || this.renderer.root).element.appendChild(this.element); return this }, remove: function() { const element = this.element; element.parentNode && element.parentNode.removeChild(element); return this }, enableLinks: function() { this._links = []; return this }, virtualLink: function(parameters) { linkItem({ _link: buildLink(null, parameters) }, this); return this }, linkAfter: function(name) { this._linkAfter = name; return this }, linkOn: function(target, parameters) { this._link = buildLink(target, parameters); linkItem(this, target); return this }, linkOff: function() { ! function(target) { let i; const items = target._link.to._links; for (i = 0; items[i] !== target; ++i) {} items.splice(i, 1); updateIndexes(items, i) }(this); this._link = null; return this }, linkAppend: function() { const link = this._link; const items = link.to._links; let i; let next; for (i = link.i + 1; (next = items[i]) && !next._link.is; ++i) {} this._insert(link.to, next); link.is = true; return this }, _insert: function(parent, next) { parent.element.insertBefore(this.element, next ? next.element : null) }, linkRemove: function() { this.remove(); this._link.is = false; return this }, clear: function() { this._clearChildrenFuncIri(); this._getJQElement().empty(); return this }, toBackground: function() { const elem = this.element; const parent = elem.parentNode; parent && parent.insertBefore(elem, parent.firstChild); return this }, toForeground: function() { const elem = this.element; const parent = elem.parentNode; parent && parent.appendChild(elem); return this }, attr: function(attrs) { return baseAttr(this, attrs) }, smartAttr: function(attrs) { return this.attr(processHatchingAttrs(this, attrs)) }, css: function(styles) { return baseCss(this, styles) }, animate: function(params, options, complete) { return baseAnimate(this, params, options, complete) }, sharp(pos, sharpDirection) { return this.attr({ sharp: pos || true, sharpDirection: sharpDirection }) }, _applyTransformation() { const tr = this._settings; let rotateX; let rotateY; const transformations = []; const sharpMode = tr.sharp; const trDirection = tr.sharpDirection || 1; const strokeOdd = tr["stroke-width"] % 2; const correctionX = strokeOdd && ("h" === sharpMode || true === sharpMode) ? .5 * trDirection : 0; const correctionY = strokeOdd && ("v" === sharpMode || true === sharpMode) ? .5 * trDirection : 0; transformations.push("translate(" + ((tr.translateX || 0) + correctionX) + "," + ((tr.translateY || 0) + correctionY) + ")"); if (tr.rotate) { if ("rotateX" in tr) { rotateX = tr.rotateX } else { rotateX = tr.x } if ("rotateY" in tr) { rotateY = tr.rotateY } else { rotateY = tr.y } transformations.push("rotate(" + tr.rotate + "," + (rotateX || 0) + "," + (rotateY || 0) + ")") } const scaleXDefined = (0, _type.isDefined)(tr.scaleX); const scaleYDefined = (0, _type.isDefined)(tr.scaleY); if (scaleXDefined || scaleYDefined) { transformations.push("scale(" + (scaleXDefined ? tr.scaleX : 1) + "," + (scaleYDefined ? tr.scaleY : 1) + ")") } if (transformations.length) { this.element.setAttribute("transform", transformations.join(" ")) } }, move: function(x, y, animate, animOptions) { const obj = {}; (0, _type.isDefined)(x) && (obj.translateX = x); (0, _type.isDefined)(y) && (obj.translateY = y); if (!animate) { this.attr(obj) } else { this.animate(obj, animOptions) } return this }, rotate: function(angle, x, y, animate, animOptions) { const obj = { rotate: angle || 0 }; (0, _type.isDefined)(x) && (obj.rotateX = x); (0, _type.isDefined)(y) && (obj.rotateY = y); if (!animate) { this.attr(obj) } else { this.animate(obj, animOptions) } return this }, _getElementBBox: function() { const elem = this.element; let bBox; try { bBox = elem.getBBox && elem.getBBox() } catch (e) {} return bBox || { x: 0, y: 0, width: elem.offsetWidth || 0, height: elem.offsetHeight || 0 } }, getBBox: function() { const transformation = this._settings; let bBox = this._getElementBBox(); if (transformation.rotate) { bBox = (0, _utils.rotateBBox)(bBox, [("rotateX" in transformation ? transformation.rotateX : transformation.x) || 0, ("rotateY" in transformation ? transformation.rotateY : transformation.y) || 0], -transformation.rotate) } else { bBox = (0, _utils.normalizeBBox)(bBox) } return bBox }, markup: function() { return (0, _svg.getSvgMarkup)(this.element) }, getOffset: function() { return this._getJQElement().offset() }, stopAnimation: function(disableComplete) { const animation = this.animation; animation && animation.stop(disableComplete); return this }, setTitle: function(text) { const titleElem = createElement("title"); titleElem.textContent = text || ""; this.element.appendChild(titleElem) }, removeTitle() { detachTitleElements(this.element) }, data: function(obj, val) { const elem = this.element; let key; if (void 0 !== val) { elem[obj] = val } else { for (key in obj) { elem[key] = obj[key] } } return this }, on: function() { const args = [this._getJQElement()]; args.push.apply(args, arguments); _events_engine.default.on.apply(_events_engine.default, args); return this }, off: function() { const args = [this._getJQElement()]; args.push.apply(args, arguments); _events_engine.default.off.apply(_events_engine.default, args); return this }, trigger: function() { const args = [this._getJQElement()]; args.push.apply(args, arguments); _events_engine.default.trigger.apply(_events_engine.default, args); return this } }; let PathSvgElement = function(renderer, type) { SvgElement.call(this, renderer, "path", type) }; exports.PathSvgElement = PathSvgElement; PathSvgElement.prototype = objectCreate(SvgElement.prototype); extend(PathSvgElement.prototype, { constructor: PathSvgElement, attr: function(attrs) { const that = this; let segments; if (isObjectArgument(attrs)) { attrs = extend({}, attrs); segments = attrs.segments; if ("points" in attrs) { segments = buildPathSegments(attrs.points, that.type); delete attrs.points } if (segments) { attrs.d = function(segments) { const d = []; let k = 0; let i; const ii = segments.length; let segment; let j; let jj; for (i = 0; i < ii; ++i) { segment = segments[i]; for (j = 0, jj = segment.length; j < jj; ++j) { d[k++] = segment[j] } } return d.join(" ") }(segments); that.segments = segments; delete attrs.segments } } return baseAttr(that, attrs) }, animate: function(params, options, complete) { const that = this; const curSegments = that.segments || []; let newSegments; let endSegments; if (that.renderer.animationEnabled() && "points" in params) { newSegments = buildPathSegments(params.points, that.type); endSegments = function(oldSegments, newSegments, type) { const oldLength = oldSegments.length; const newLength = newSegments.length; let i; let originalNewSegments; const makeEqualSegments = -1 !== type.indexOf("area") ? makeEqualAreaSegments : makeEqualLineSegments; if (0 === oldLength) { for (i = 0; i < newLength; i++) { oldSegments.push(newSegments[i].slice(0)) } } else if (oldLength < newLength) { makeEqualSegments(oldSegments, newSegments, type) } else if (oldLength > newLength) { originalNewSegments = newSegments.slice(0); makeEqualSegments(newSegments, oldSegments, type) } return originalNewSegments }(curSegments, newSegments, that.type); params.segments = { from: curSegments, to: newSegments, end: endSegments }; delete params.points } return baseAnimate(that, params, options, complete) } }); let ArcSvgElement = function(renderer) { SvgElement.call(this, renderer, "path", "arc") }; exports.ArcSvgElement = ArcSvgElement; ArcSvgElement.prototype = objectCreate(SvgElement.prototype); extend(ArcSvgElement.prototype, { constructor: ArcSvgElement, attr: function(attrs) { const settings = this._settings; let x; let y; let innerRadius; let outerRadius; let startAngle; let endAngle; if (isObjectArgument(attrs)) { attrs = extend({}, attrs); if ("x" in attrs || "y" in attrs || "innerRadius" in attrs || "outerRadius" in attrs || "startAngle" in attrs || "endAngle" in attrs) { settings.x = x = "x" in attrs ? attrs.x : settings.x; delete attrs.x; settings.y = y = "y" in attrs ? attrs.y : settings.y; delete attrs.y; settings.innerRadius = innerRadius = "innerRadius" in attrs ? attrs.innerRadius : settings.innerRadius; delete attrs.innerRadius; settings.outerRadius = outerRadius = "outerRadius" in attrs ? attrs.outerRadius : settings.outerRadius; delete attrs.outerRadius; settings.startAngle = startAngle = "startAngle" in attrs ? attrs.startAngle : settings.startAngle; delete attrs.startAngle; settings.endAngle = endAngle = "endAngle" in attrs ? attrs.endAngle : settings.endAngle; delete attrs.endAngle; attrs.d = buildArcPath.apply(null, (0, _utils.normalizeArcParams)(x, y, innerRadius, outerRadius, startAngle, endAngle)) } } return baseAttr(this, attrs) }, animate: function(params, options, complete) { const settings = this._settings; const arcParams = { from: {}, to: {} }; if (this.renderer.animationEnabled() && ("x" in params || "y" in params || "innerRadius" in params || "outerRadius" in params || "startAngle" in params || "endAngle" in params)) { arcParams.from.x = settings.x || 0; arcParams.from.y = settings.y || 0; arcParams.from.innerRadius = settings.innerRadius || 0; arcParams.from.outerRadius = settings.outerRadius || 0; arcParams.from.startAngle = settings.startAngle || 0; arcParams.from.endAngle = settings.endAngle || 0; arcParams.to.x = "x" in params ? params.x : settings.x; delete params.x; arcParams.to.y = "y" in params ? params.y : settings.y; delete params.y; arcParams.to.innerRadius = "innerRadius" in params ? params.innerRadius : settings.innerRadius; delete params.innerRadius; arcParams.to.outerRadius = "outerRadius" in params ? params.outerRadius : settings.outerRadius; delete params.outerRadius; arcParams.to.startAngle = "startAngle" in params ? params.startAngle : settings.startAngle; delete params.startAngle; arcParams.to.endAngle = "endAngle" in params ? params.endAngle : settings.endAngle; delete params.endAngle; params.arc = arcParams } return baseAnimate(this, params, options, complete) } }); let RectSvgElement = function(renderer) { SvgElement.call(this, renderer, "rect") }; exports.RectSvgElement = RectSvgElement; RectSvgElement.prototype = objectCreate(SvgElement.prototype); extend(RectSvgElement.prototype, { constructor: RectSvgElement, attr: function(attrs) { const that = this; let x; let y; let width; let height; let sw; let maxSW; let newSW; if (isObjectArgument(attrs)) { attrs = extend({}, attrs); if (void 0 !== attrs.x || void 0 !== attrs.y || void 0 !== attrs.width || void 0 !== attrs.height || void 0 !== attrs["stroke-width"]) { void 0 !== attrs.x ? x = that._originalX = attrs.x : x = that._originalX || 0; void 0 !== attrs.y ? y = that._originalY = attrs.y : y = that._originalY || 0; void 0 !== attrs.width ? width = that._originalWidth = attrs.width : width = that._originalWidth || 0; void 0 !== attrs.height ? height = that._originalHeight = attrs.height : height = that._originalHeight || 0; void 0 !== attrs["stroke-width"] ? sw = that._originalSW = attrs["stroke-width"] : sw = that._originalSW; maxSW = ~~((width < height ? width : height) / 2); newSW = (sw || 0) < maxSW ? sw || 0 : maxSW; attrs.x = x + newSW / 2; attrs.y = y + newSW / 2; attrs.width = width - newSW; attrs.height = height - newSW; ((sw || 0) !== newSW || !(0 === newSW && void 0 === sw)) && (attrs["stroke-width"] = newSW) } if ("sharp" in attrs) { delete attrs.sharp } } return baseAttr(that, attrs) } }); let TextSvgElement = function(renderer) { SvgElement.call(this, renderer, "text"); this.css({ "white-space": "pre" }) }; exports.TextSvgElement = TextSvgElement; TextSvgElement.prototype = objectCreate(SvgElement.prototype); extend(TextSvgElement.prototype, { constructor: TextSvgElement, attr: function(attrs) { const that = this; let isResetRequired; if (!isObjectArgument(attrs)) { return baseAttr(that, attrs) } attrs = extend({}, attrs); const settings = that._settings; const wasStroked = (0, _type.isDefined)(settings.stroke) && (0, _type.isDefined)(settings["stroke-width"]); if (void 0 !== attrs.text) { settings.text = attrs.text; delete attrs.text; isResetRequired = true } if (void 0 !== attrs.stroke) { settings.stroke = attrs.stroke; delete attrs.stroke } if (void 0 !== attrs["stroke-width"]) { settings["stroke-width"] = attrs["stroke-width"]; delete attrs["stroke-width"] } if (void 0 !== attrs["stroke-opacity"]) { settings["stroke-opacity"] = attrs["stroke-opacity"]; delete attrs["stroke-opacity"] } if (void 0 !== attrs.textsAlignment) { ! function(wrapper, alignment) { if (!wrapper._texts || "center" === alignment) { return } const items = wrapper._texts; const direction = "left" === alignment ? -1 : 1; const maxTextWidth = Math.max.apply(Math, items.map((t => getTextWidth(t)))); for (let i = 0; i < items.length; i++) { const item = items[i]; const textWidth = getTextWidth(item); if (0 !== maxTextWidth && maxTextWidth !== textWidth) { setTextNodeAttribute(item, "dx", direction * round((maxTextWidth - textWidth) / 2 * 10) / 10) } } }(that, attrs.textsAlignment); delete attrs.textsAlignment } const isStroked = (0, _type.isDefined)(settings.stroke) && (0, _type.isDefined)(settings["stroke-width"]); baseAttr(that, attrs); isResetRequired = isResetRequired || isStroked !== wasStroked && settings.text; if (isResetRequired) { ! function(wrapper, text, isStroked) { let items; let parsedHtml; wrapper._texts = null; wrapper.clear(); if (null === text) { return } text = "" + text; if (!wrapper.renderer.encodeHtml && (/<[a-z][\s\S]*>/i.test(text) || -1 !== text.indexOf("&"))) { parsedHtml = function(html) { const findTagAttrs = /(?:(<[a-z0-9]+\s*))([\s\S]*?)(>|\/>)/gi; const findStyleAndClassAttrs = /(style|class)\s*=\s*(["'])(?:(?!\2).)*\2\s?/gi; return html.replace(findTagAttrs, (function(allTagAttrs, p1, p2, p3) { p2 = (p2 && p2.match(findStyleAndClassAttrs) || []).map((function(str) { return str })).join(" "); return p1 + p2 + p3 })) }(text); items = function(text) { const items = []; const div = _dom_adapter.default.createElement("div"); div.innerHTML = text.replace(/\r/g, "").replace(/\n/g, "<br/>").replace(/style=/g, "data-style="); div.querySelectorAll("[data-style]").forEach((element => { element.style = element.getAttribute("data-style"); element.removeAttribute("data-style") })); orderHtmlTree(items, 0, div, {}, ""); ! function(items) { let i; let ii; let currentItem = items[0]; let item; for (i = 1, ii = items.length; i < ii; ++i) { item = items[i]; if (item.line === currentItem.line) { currentItem.height = maxLengthFontSize(currentItem.height, item.height); currentItem.inherits = currentItem.inherits || 0 === parseFloat(item.height); item.height = NaN } else { currentItem = item } } }(items); return items }(parsedHtml) } else if (/\n/g.test(text)) { items = function(text) { const texts = text.replace(/\r/g, "").split(/\n/g); let i = 0; const items = []; for (; i < texts.length; i++) { items.push({ value: texts[i].trim(), height: 0, line: i }) } return items }(text) } else if (isStroked) { items = [{ value: text.trim(), height: 0 }] } if (items) { if (items.length) { wrapper._texts = items; if (isStroked) { createTspans(items, wrapper.element, "stroke") } createTspans(items, wrapper.element, "tspan") } } else { wrapper.element.appendChild(_dom_adapter.default.createTextNode(text)) } }(that, settings.text, isStroked); that._hasEllipsis = false } if (isResetRequired || void 0 !== attrs.x || void 0 !== attrs.y) { locateTextNodes(that) } if (isStroked) { ! function(wrapper) { if (!wrapper._texts) { return } const items = wrapper._texts; const stroke = wrapper._settings.stroke; const strokeWidth = wrapper._settings["stroke-width"]; const strokeOpacity = wrapper._settings["stroke-opacity"] || 1; let tspan; let i; let ii; for (i = 0, ii = items.length; i < ii; ++i) { tspan = items[i].stroke; tspan.setAttribute("stroke", stroke); tspan.setAttribute("stroke-width", strokeWidth); tspan.setAttribute("stroke-opacity", strokeOpacity); tspan.setAttribute("stroke-linejoin", "round") } }(that) } return that }, css: function(styles) { styles = styles || {}; baseCss(this, styles); if ("font-size" in styles) { locateTextNodes(this) } return this }, applyEllipsis: function(maxWidth) { const that = this; let lines; let hasEllipsis = false; let i; let ii; let lineParts; let j; let jj; let text; restoreText.call(that); const ellipsis = that.renderer.text("...").attr(that._styles).append(that.renderer.root); const ellipsisWidth = ellipsis.getBBox().width; if (that._getElementBBox().width > maxWidth) { if (maxWidth - ellipsisWidth < 0) { maxWidth = 0 } else { maxWidth -= ellipsisWidth } lines = function(element, texts, maxWidth) { let lines = []; let i; let ii; let text; let startBox; let endBox; if (texts) { for (i = 0, ii = texts.length; i < ii; ++i) { text = texts[i]; if (!lines[text.line]) { text.startBox = startBox = 0; lines.push({ commonLength: text.value.length, parts: [text] }) } else { text.startBox = startBox; lines[text.line].parts.push(text); lines[text.line].commonLength += text.value.length } endBox = startBox + text.tspan.getSubStringLength(0, text.value.length); text.endIndex = getIndexForEllipsis(text, maxWidth, startBox, endBox); startBox = endBox } } else { text = { value: element.textContent, tspan: element }; text.startBox = startBox = 0; endBox = startBox + getTextWidth(text); text.endIndex = getIndexForEllipsis(text, maxWidth, startBox, endBox); lines = [{ commonLength: element.textContent.length, parts: [text] }] } return lines }(that.element, that._texts, maxWidth); for (i = 0, ii = lines.length; i < ii; ++i) { lineParts = lines[i].parts; if (1 === lines[i].commonLength) { continue } for (j = 0, jj = lineParts.length; j < jj; ++j) { text = lineParts[j]; if ((0, _type.isDefined)(text.endIndex)) { setNewText(text, text.endIndex); hasEllipsis = true } else if (text.startBox > maxWidth) { removeTextSpan(text) } } } } ellipsis.remove(); that._hasEllipsis = hasEllipsis; return hasEllipsis }, setMaxSize: function(maxWidth, maxHeight) { let options = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : {}; const that = this; let lines = []; let textChanged = false; let textIsEmpty = false; let ellipsisMaxWidth = maxWidth; restoreText.call(that); const restoreTitleElement = function(element) { const titleElements = detachTitleElements(element); return () => { for (let i = 0; i < titleElements.length; i++) { element.appendChild(titleElements[i]) } } }(this.element); const ellipsis = that.renderer.text("...").attr(that._styles).append(that.renderer.root); const ellipsisWidth = ellipsis.getBBox().width; const { width: width, height: height } = that._getElementBBox(); if ((width || height) && (width > maxWidth || maxHeight && height > maxHeight)) { if (maxWidth - ellipsisWidth < 0) { ellipsisMaxWidth = 0 } else { ellipsisMaxWidth -= ellipsisWidth } lines = function(element, texts, maxWidth, ellipsisMaxWidth, options) { if (!texts) { const textValue = element.textContent; const text = { value: textValue, height: 0, line: 0 }; element.textContent = ""; createTspans([text], element, "tspan"); texts = [text] } return texts.reduce(((_ref3, text) => { let [lines, startBox, endBox, stop, lineNumber] = _ref3; const line = lines[lines.length - 1]; if (stop) { return [lines, startBox, endBox, stop] } if (!line || text.line !== lineNumber) { text.startBox = startBox = 0; lines.push({ commonLength: text.value.length, parts: [text] }) } else { text.startBox = startBox; if (startBox > ellipsisMaxWidth && "none" === options.wordWrap && "ellipsis" === options.textOverflow) { removeTextSpan(text); return [lines, startBox, endBox, stop, lineNumber] } line.parts.push(text); line.commonLength += text.value.length } text.endBox = endBox = startBox + getTextWidth(text); startBox = endBox; if ((0, _type.isDefined)(maxWidth) && endBox > maxWidth) { const wordWrapLines = wordWrap(text, maxWidth, ellipsisMaxWidth, options); if (!wordWrapLines.length) { lines = []; stop = true } else { lines = lines.concat(wordWrapLines.filter((l => l.parts.length > 0))) } } return [lines, startBox, endBox, stop, text.line] }), [ [], 0, 0, false, 0 ])[0] }(that.element, that._texts, maxWidth, ellipsisMaxWidth, options); lines = function(lines, ellipsisMaxWidth, options, maxHeight, lineHeight) { const textOverflow = options.textOverflow; if (!isFinite(maxHeight) || 0 === Number(maxHeight) || "none" === textOverflow) { return lines } const result = lines.reduce(((_ref2, l, index, arr) => { let [lines, commonHeight] = _ref2; const height = function(line, lineHeight) { return line.parts.reduce(((height, text) => max(height, getItemLineHeight(text, lineHeight))), 0) }(l, lineHeight); commonHeight += height; if (commonHeight < maxHeight) { lines.push(l) } else { l.parts.forEach((item => { removeTextSpan(item) })); if ("ellipsis" === textOverflow) { const prevLine = arr[index - 1]; if (prevLine) { const text = prevLine.parts[prevLine.parts.length - 1]; if (!text.hasEllipsis) { if (0 === ellipsisMaxWidth || text.endBox < ellipsisMaxWidth) { setNewText(text, text.value.length, getEllipsisString(ellipsisMaxWidth, options)) } else { setEllipsis(text, ellipsisMaxWidth, options) } } } } } return [lines, commonHeight] }), [ [], 0 ]); if ("hide" === textOverflow && result[1] > maxHeight) { result[0].forEach((l => { l.parts.forEach((item => { removeTextSpan(item) })) })); return [] } return result[0] }(lines, ellipsisMaxWidth, options, maxHeight, parseFloat(this._getLineHeight())); this._texts = lines.reduce(((texts, line) => texts.concat(line.parts)), []).filter((t => "" !== t.value)).map((t => { t.stroke && t.tspan.parentNode.appendChild(t.stroke); return t })).map((t => { t.tspan.parentNode.appendChild(t.tspan); return t })); !this._texts.length && (this._texts = null); textChanged = true; if (this._texts) { locateTextNodes(this) } else { this.element.textContent = ""; textIsEmpty = true } } ellipsis.remove(); that._hasEllipsis = textChanged; restoreTitleElement(); return { rowCount: lines.length, textChanged: textChanged, textIsEmpty: textIsEmpty } }, restoreText: restoreText, _getLineHeight() { return !isNaN(parseFloat(this._styles["font-size"])) ? this._styles["font-size"] : 12 } }); function updateIndexes(items, k) { let i; let item; for (i = k; item = items[i]; ++i) { item._link.i = i } } function linkItem(target, container) { const items = container._links; const key = target._link.after = target._link.after || container._linkAfter; let i; let item; if (key) { for (i = 0; (item = items[i]) && item._link.name !== key; ++i) {} if (item) { for (++i; (item = items[i]) && item._link.after === key; ++i) {} } } else { i = items.length } items.splice(i, 0, target); updateIndexes(items, i) } function Renderer(options) { this.root = this._createElement("svg", { xmlns: "http://www.w3.org/2000/svg", version: "1.1", fill: NONE, stroke: NONE, "stroke-width": 0 }).attr({ class: options.cssClass }).css({ "line-height": "normal", "-moz-user-select": NONE, "-webkit-user-select": NONE, "-webkit-tap-highlight-color": "rgba(0, 0, 0, 0)", display: "block", overflow: "hidden" }); this._init(); this.pathModified = !!options.pathModified; this._$container = (0, _renderer.default)(options.container); this.root.append({ element: options.container }); this._locker = 0; this._backed = false } Renderer.prototype = { constructor: Renderer, _init: function() { this._defs = this._createElement("defs").append(this.root); this._animationController = new _animation.AnimationController(this.root.element); this._animation = { enabled: true, duration: 1e3, easing: "easeOutCubic" } }, setOptions: function(options) { this.rtl = !!options.rtl; this.encodeHtml = !!options.encodeHtml; this.updateAnimationOptions(options.animation || {}); this.root.attr({ direction: this.rtl ? "rtl" : "ltr" }); return this }, _createElement: function(tagName, attr, type) { const elem = new SvgElement(this, tagName, type); attr && elem.attr(attr); return elem }, lock: function() { const that = this; if (0 === that._locker) { that._backed = !that._$container.is(":visible"); if (that._backed) { ! function(root) { if (0 === getBackup().backupCounter) { _dom_adapter.default.getBody().appendChild(getBackup().backupContainer) }++getBackup().backupCounter; root.append({ element: getBackup().backupContainer }) }(that.root) } }++that._locker; return that }, unlock: function() { const that = this; --that._locker; if (0 === that._locker) { if (that._backed) { ! function(root, container) { root.append({ element: container }); --getBackup().backupCounter; if (0 === getBackup().backupCounter) { _dom_adapter.default.getBody().removeChild(getBackup().backupContainer) } }(that.root, that._$container[0]) } that._backed = false } return that }, resize: function(width, height) { if (width >= 0 && height >= 0) { this.root.attr({ width: width, height: height }) } return this }, dispose: function() { const that = this; let key; that.root.dispose(); that._defs.dispose(); that._animationController.dispose(); fixFuncIriCallbacks.removeByRenderer(that); for (key in that) { that[key] = null } return that }, animationEnabled: function() { return !!this._animation.enabled }, updateAnimationOptions: function(newOptions) { extend(this._animation, newOptions); return this }, stopAllAnimations: function(lock) { this._animationController[lock ? "lock" : "stop"](); return this }, animateElement: function(element, params, options) { this._animationController.animateElement(element, params, options); return this }, svg: function() { return this.root.markup() }, getRootOffset: function() { return this.root.getOffset() }, onEndAnimation: function(endAnimation) { this._animationController.onEndAnimation(endAnimation) }, rect: function(x, y, width, height) { const elem = new RectSvgElement(this); return elem.attr({ x: x || 0, y: y || 0, width: width || 0, height: height || 0 }) }, simpleRect: function() { return this._createElement("rect") }, circle: function(x, y, r) { return this._createElement("circle", { cx: x || 0, cy: y || 0, r: r || 0 }) }, g: function() { return this._createElement("g") }, image: function(x, y, w, h, href, location) { const image = this._createElement("image", { x: x || 0, y: y || 0, width: w || 0, height: h || 0, preserveAspectRatio: preserveAspectRatioMap[(0, _utils.normalizeEnum)(location)] || NONE }); image.element.setAttributeNS("http://www.w3.org/1999/xlink", "href", href || ""); return image }, path: function(points, type) { const elem = new PathSvgElement(this, type); return elem.attr({ points: points || [] }) }, arc: function(x, y, innerRadius, outerRadius, startAngle, endAngle) { const elem = new ArcSvgElement(this); return elem.attr({ x: x || 0, y: y || 0, innerRadius: innerRadius || 0, outerRadius: outerRadius || 0, startAngle: startAngle || 0, endAngle: endAngle || 0 }) }, text: function(text, x, y) { const elem = new TextSvgElement(this); return elem.attr({ text: text, x: x || 0, y: y || 0 }) }, linearGradient: function(stops) { let id = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : (0, _utils.getNextDefsSvgId)(); let rotationAngle = arguments.length > 2 ? arguments[2] : void 0; const gradient = this._createElement("linearGradient", { id: id, gradientTransform: `rotate(${rotationAngle||0})` }).append(this._defs); gradient.id = id; this._createGradientStops(stops, gradient); return gradient }, radialGradient: function(stops, id) { const gradient = this._createElement("radialGradient", { id: id }).append(this._defs); this._createGradientStops(stops, gradient); return gradient }, _createGradientStops: function(stops, group) { stops.forEach((stop => { this._createElement("stop", { offset: stop.offset, "stop-color": stop["stop-color"] ?? stop.color, "stop-opacity": stop.opacity }).append(group) })) }, pattern: function(color, hatching, _id) { hatching = hatching || {}; const step = hatching.step || 6; const stepTo2 = step / 2; const stepBy15 = 1.5 * step; const id = _id || (0, _utils.getNextDefsSvgId)(); const d = "right" === (0, _utils.normalizeEnum)(hatching.direction) ? "M " + stepTo2 + " " + -stepTo2 + " L " + -stepTo2 + " " + stepTo2 + " M 0 " + step + " L " + step + " 0 M " + stepBy15 + " " + stepTo2 + " L " + stepTo2 + " " + stepBy15 : "M 0 0 L " + step + " " + step + " M " + -stepTo2 + " " + stepTo2 + " L " + stepTo2 + " " + stepBy15 + " M " + stepTo2 + " " + -stepTo2 + " L " + stepBy15 + " " + stepTo2; const pattern = this._createElement("pattern", { id: id, width: step, height: step, patternUnits: "userSpaceOnUse" }).append(this._defs); pattern.id = id; this.rect(0, 0, step, step).attr({ fill: color, opacity: hatching.opacity }).append(pattern); new PathSvgElement(this).attr({ d: d, "stroke-width": hatching.width || 1, stroke: color }).append(pattern); return pattern }, customPattern: function(id, template, width, height) { const option = { id: id, width: width, height: height, patternContentUnits: "userSpaceOnUse", patternUnits: this._getPatternUnits(width, height) }; const pattern = this._createElement("pattern", option).append(this._defs); template.render({ container: pattern.element }); return pattern }, _getPatternUnits: function(width, height) { if (Number(width) && Number(height)) { return "userSpaceOnUse" } }, _getPointsWithYOffset: function(points, offset) { return points.map((function(point, index) { if (index % 2 !== 0) { return point + offset } return point })) }, clipShape: function(method, methodArgs) { const id = (0, _utils.getNextDefsSvgId)(); let clipPath = this._createElement("clipPath", { id: id }).append(this._defs); const shape = method.apply(this, methodArgs).append(clipPath); shape.id = id; shape.remove = function() { throw "Not implemented" }; shape.dispose = function() { clipPath.dispose(); clipPath = null; return this }; return shape }, clipRect(x, y, width, height) { return this.clipShape(this.rect, arguments) }, clipCircle(x, y, radius) { return this.clipShape(this.circle, arguments) }, shadowFilter: function(x, y, width, height, offsetX, offsetY, blur, color, opacity) { const id = (0, _utils.getNextDefsSvgId)(); const filter = this._createElement("filter", { id: id, x: x || 0, y: y || 0, width: width || 0, height: height || 0 }).append(this._defs); const gaussianBlur = this._createElement("feGaussianBlur", { in: "SourceGraphic", result: "gaussianBlurResult", stdDeviation: blur || 0 }).append(filter); const offset = this._createElement("feOffset", { in: "gaussianBlurResult", result: "offsetResult", dx: offsetX || 0, dy: offsetY || 0 }).append(filter); const flood = this._createElement("feFlood", { result: "floodResult", "flood-color": color || "", "flood-opacity": opacity }).append(filter); const composite = this._createElement("feComposite", { in: "floodResult", in2: "offsetResult", operator: "in", result: "compositeResult" }).append(filter); const finalComposite = this._createElement("feComposite", { in: "SourceGraphic", in2: "compositeResult", operator: "over" }).append(filter); filter.id = id; filter.gaussianBlur = gaussianBlur; filter.offset = offset; filter.flood = flood; filter.composite = composite; filter.finalComposite = finalComposite; filter.attr = function(attrs) { const filterAttrs = {}; const offsetAttrs = {}; const floodAttrs = {}; "x" in attrs && (filterAttrs.x = attrs.x); "y" in attrs && (filterAttrs.y = attrs.y); "width" in attrs && (filterAttrs.width = attrs.width); "height" in attrs && (filterAttrs.height = attrs.height); baseAttr(this, filterAttrs); "blur" in attrs && this.gaussianBlur.attr({ stdDeviation: attrs.blur }); "offsetX" in attrs && (offsetAttrs.dx = attrs.offsetX); "offsetY" in attrs && (offsetAttrs.dy = attrs.offsetY); this.offset.attr(offsetAttrs); "color" in attrs && (floodAttrs["flood-color"] = attrs.color); "opacity" in attrs && (floodAttrs["flood-opacity"] = attrs.opacity); this.flood.attr(floodAttrs); return this }; return filter }, brightFilter: function(type, slope) { const id = (0, _utils.getNextDefsSvgId)(); const filter = this._createElement("filter", { id: id }).append(this._defs); const componentTransferElement = this._createElement("feComponentTransfer").append(filter); const attrs = { type: type, slope: slope }; filter.id = id; this._createElement("feFuncR", attrs).append(componentTransferElement); this._createElement("feFuncG", attrs).append(componentTransferElement); this._createElement("feFuncB", attrs).append(componentTransferElement); return filter }, getGrayScaleFilter: function() { if (this._grayScaleFilter) { return this._grayScaleFilter } const id = (0, _utils.getNextDefsSvgId)(); const filter = this._createElement("filter", { id: id }).append(this._defs); this._createElement("feColorMatrix").attr({ type: "matrix", values: "0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0 0 0 0.6 0" }).append(filter); filter.id = id; this._grayScaleFilter = filter; return filter }, lightenFilter: function(id) { const filter = this._createElement("filter", { id: id }).append(this._defs); this._createElement("feColorMatrix", { type: "matrix", values: "1.3 0 0 0 0 0 1.3 0 0 0 0 0 1.3 0 0 0 0 0 1 0" }).append(filter); filter.id = id; return filter }, initDefsElements: function() { const storage = this._defsElementsStorage = this._defsElementsStorage || { byHash: {}, baseId: (0, _utils.getNextDefsSvgId)() }; const byHash = storage.byHash; let name; for (name in byHash) { byHash[name].pattern.dispose() } storage.byHash = {}; storage.refToHash = {}; storage.nextId = 0 }, drawPattern: function(_ref4, storageId, nextId) { let { color: color, hatching: hatching } = _ref4; return this.pattern(color, hatching, `${storageId}-hatching-${nextId++}`) }, drawFilter: function(_, storageId, nextId) { return this.lightenFilter(`${storageId}-lightening-${nextId++}`) }, lockDefsElements: function(attrs, ref, type) { const storage = this._defsElementsStorage; let storageItem; const hash = "pattern" === type ? function(_ref5) { let { color: color, hatching: hatching } = _ref5; return "@" + color + "::" + hatching.step + ":" + hatching.width + ":" + hatching.opacity + ":" + hatching.direction }(attrs) : "@filter::lightening"; const method = "pattern" === type ? this.drawPattern : this.drawFilter; let pattern; if (storage.refToHash[ref] !== hash) { if (ref) { this.releaseDefsElements(ref) } storageItem = storage.byHash[hash]; if (!storageItem) { pattern = method.call(this, attrs, storage.baseId, storage.nextId++); storageItem = storage.byHash[hash] = { pattern: pattern, count: 0 }; storage.refToHash[pattern.id] = hash }++storageItem.count; ref = storageItem.pattern.id } return ref }, releaseDefsElements: function(ref) { const storage = this._defsElementsStorage; const hash = storage.refToHash[ref]; const storageItem = storage.byHash[hash]; if (storageItem && 0 === --storageItem.count) { storageItem.pattern.dispose(); delete storage.byHash[hash]; delete storage.refToHash[ref] } } }; const fixFuncIriCallbacks = function() { let callbacks = []; return { add: function(fn) { callbacks.push(fn) }, remove: function(fn) { callbacks = callbacks.filter((function(el) { return el !== fn })) }, removeByRenderer: function(renderer) { callbacks = callbacks.filter((function(el) { return el.renderer !== renderer })) }, fire: function() { callbacks.forEach((function(fn) { fn() })) } } }(); exports.refreshPaths = function() { fixFuncIriCallbacks.fire() } }, 28779: /*!***************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/viz/core/utils.js ***! \***************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { exports.PANE_PADDING = void 0; exports.adjustVisualRange = function(options, visualRange, wholeRange, dataRange) { const minDefined = (0, _type.isDefined)(visualRange.startValue); const maxDefined = (0, _type.isDefined)(visualRange.endValue); const nonDiscrete = "discrete" !== options.axisType; dataRange = dataRange || wholeRange; const add = getAddFunction(options, false); let min = minDefined ? visualRange.startValue : dataRange.min; let max = maxDefined ? visualRange.endValue : dataRange.max; let rangeLength = visualRange.length; const categories = dataRange.categories; if (nonDiscrete && !(0, _type.isDefined)(min) && !(0, _type.isDefined)(max)) { return { startValue: min, endValue: max } } if ((0, _type.isDefined)(rangeLength)) { if (nonDiscrete) { if ("datetime" === options.dataType && !(0, _type.isNumeric)(rangeLength)) { rangeLength = dateToMilliseconds(rangeLength) } if (maxDefined && !minDefined || !maxDefined && !minDefined) { (0, _type.isDefined)(wholeRange.max) && (max = max > wholeRange.max ? wholeRange.max : max); min = add(max, rangeLength, -1) } else if (minDefined && !maxDefined) { (0, _type.isDefined)(wholeRange.min) && (min = min < wholeRange.min ? wholeRange.min : min); max = add(min, rangeLength) } } else { rangeLength = parseInt(rangeLength); if (!isNaN(rangeLength) && isFinite(rangeLength)) { rangeLength--; if (!maxDefined && !minDefined) { max = categories[categories.length - 1]; min = categories[categories.length - 1 - rangeLength] } else if (minDefined && !maxDefined) { const categoriesInfo = getCategoriesInfo(categories, min, void 0); max = categoriesInfo.categories[rangeLength] } else if (!minDefined && maxDefined) { const categoriesInfo = getCategoriesInfo(categories, void 0, max); min = categoriesInfo.categories[categoriesInfo.categories.length - 1 - rangeLength] } } } } if (nonDiscrete) { if ((0, _type.isDefined)(wholeRange.max) && max > wholeRange.max) { max = wholeRange.max } if ((0, _type.isDefined)(wholeRange.min) && min < wholeRange.min) { min = wholeRange.min } } return { startValue: min, endValue: max } }; exports.convertAngleToRendererSpace = void 0; exports.convertPolarToXY = function(centerCoords, startAngle, angle, radius) { const normalizedRadius = radius > 0 ? radius : 0; angle = (0, _type.isDefined)(angle) ? angle + startAngle - 90 : 0; const cosSin = getCosAndSin(angle); return { x: _round(centerCoords.x + normalizedRadius * cosSin.cos), y: _round(centerCoords.y + normalizedRadius * cosSin.sin) } }; exports.convertVisualRangeObject = function(visualRange, convertToVisualRange) { if (convertToVisualRange) { return visualRange } return [visualRange.startValue, visualRange.endValue] }; exports.enumParser = exports.degreesToRadians = exports.decreaseGaps = exports.convertXYToPolar = void 0; exports.extractColor = function(color, isBase) { if ((0, _type.isString)(color) || !color) { return color } else if (isBase) { return color.base } else { return color.fillId || color.base } }; exports.getAddFunction = getAddFunction; exports.getLog = exports.getDistance = exports.getDecimalOrder = exports.getCosAndSin = exports.getCategoriesInfo = exports.getAppropriateFormat = exports.getAdjustedLog10 = void 0; exports.getLogExt = getLogExt; exports.getVerticallyShiftedAngularCoords = exports.getPower = exports.getNextDefsSvgId = void 0; exports.getVizRangeObject = function(value) { if (Array.isArray(value)) { return { startValue: value[0], endValue: value[1] } } else { return value || {} } }; exports.isRelativeHeightPane = isRelativeHeightPane; exports.map = map; exports.mergeMarginOptions = function(opt1, opt2) { return { checkInterval: opt1.checkInterval || opt2.checkInterval, size: _max(opt1.size || 0, opt2.size || 0), percentStick: opt1.percentStick || opt2.percentStick, sizePointNormalState: _max(opt1.sizePointNormalState || 0, opt2.sizePointNormalState || 0) } }; exports.normalizeAngle = void 0; exports.normalizeArcParams = function(x, y, innerRadius, outerRadius, startAngle, endAngle) { let isCircle; let noArc = true; const angleDiff = roundValue(endAngle, 3) - roundValue(startAngle, 3); if (angleDiff) { if (abs(angleDiff) % 360 === 0) { startAngle = 0; endAngle = 360; isCircle = true; endAngle -= .01 } if (startAngle > 360) { startAngle %= 360 } if (endAngle > 360) { endAngle %= 360 } if (startAngle > endAngle) { startAngle -= 360 } noArc = false } startAngle *= PI_DIV_180; endAngle *= PI_DIV_180; return [x, y, Math.min(outerRadius, innerRadius), Math.max(outerRadius, innerRadius), Math.cos(startAngle), Math.sin(startAngle), Math.cos(endAngle), Math.sin(endAngle), isCircle, floor(abs(endAngle - startAngle) / PI) % 2 ? "1" : "0", noArc] }; exports.normalizeBBox = normalizeBBox; exports.normalizeEnum = normalizeEnum; exports.normalizePanesHeight = function(panes) { panes.forEach((pane => { const height = pane.height; let unit = 0; let parsedHeight = parseFloat(height) || void 0; if ((0, _type.isString)(height) && height.indexOf("px") > -1 || (0, _type.isNumeric)(height) && height > 1) { parsedHeight = _round(parsedHeight); unit = 1 } if (!unit && parsedHeight) { if ((0, _type.isString)(height) && height.indexOf("%") > -1) { parsedHeight /= 100; unit = 2 } else if (parsedHeight < 0) { parsedHeight = parsedHeight < -1 ? 1 : abs(parsedHeight) } } pane.height = parsedHeight; pane.unit = unit })); const relativeHeightPanes = panes.filter(isRelativeHeightPane); const weightSum = relativeHeightPanes.reduce(((prev, next) => prev + (next.height || 0)), 0); const weightHeightCount = relativeHeightPanes.length; const emptyHeightPanes = relativeHeightPanes.filter((pane => !pane.height)); const emptyHeightCount = emptyHeightPanes.length; if (weightSum < 1 && emptyHeightCount) { emptyHeightPanes.forEach((pane => pane.height = (1 - weightSum) / emptyHeightCount)) } else if (weightSum > 1 || weightSum < 1 && !emptyHeightCount || 1 === weightSum && emptyHeightCount) { if (emptyHeightCount) { const weightForEmpty = weightSum / weightHeightCount; const emptyWeightSum = emptyHeightCount * weightForEmpty; relativeHeightPanes.filter((pane => pane.height)).forEach((pane => pane.height *= (weightSum - emptyWeightSum) / weightSum)); emptyHeightPanes.forEach((pane => pane.height = weightForEmpty)) } relativeHeightPanes.forEach((pane => pane.height *= 1 / weightSum)) } }; exports.patchFontOptions = exports.parseScalar = void 0; exports.pointInCanvas = function(canvas, x, y) { return x >= canvas.left && x <= canvas.right && y >= canvas.top && y <= canvas.bottom }; exports.raiseTo = exports.processSeriesTemplate = void 0; exports.raiseToExt = raiseToExt; exports.rangesAreEqual = function(range, rangeFromOptions) { if (Array.isArray(rangeFromOptions)) { return range.length === rangeFromOptions.length && range.every(((item, i) => valueOf(item) === valueOf(rangeFromOptions[i]))) } else { return valueOf(range.startValue) === valueOf(rangeFromOptions.startValue) && valueOf(range.endValue) === valueOf(rangeFromOptions.endValue) } }; exports.rotateBBox = function(bBox, center, angle) { const cos = _Number(_cos(angle * PI_DIV_180).toFixed(3)); const sin = _Number(_sin(angle * PI_DIV_180).toFixed(3)); const w2 = bBox.width / 2; const h2 = bBox.height / 2; const centerX = bBox.x + w2; const centerY = bBox.y + h2; const w2_ = abs(w2 * cos) + abs(h2 * sin); const h2_ = abs(w2 * sin) + abs(h2 * cos); const centerX_ = center[0] + (centerX - center[0]) * cos + (centerY - center[1]) * sin; const centerY_ = center[1] - (centerX - center[0]) * sin + (centerY - center[1]) * cos; return normalizeBBox({ x: centerX_ - w2_, y: centerY_ - h2_, width: 2 * w2_, height: 2 * h2_ }) }; exports.roundValue = void 0; exports.setCanvasValues = setCanvasValues; exports.unique = void 0; exports.updatePanesCanvases = function(panes, canvas, rotated) { let distributedSpace = 0; const padding = PANE_PADDING; const paneSpace = rotated ? canvas.width - canvas.left - canvas.right : canvas.height - canvas.top - canvas.bottom; const totalCustomSpace = panes.reduce(((prev, cur) => prev + (!isRelativeHeightPane(cur) ? cur.height : 0)), 0); const usefulSpace = paneSpace - padding * (panes.length - 1) - totalCustomSpace; const startName = rotated ? "left" : "top"; const endName = rotated ? "right" : "bottom"; panes.forEach((pane => { const calcLength = !isRelativeHeightPane(pane) ? pane.height : _round(pane.height * usefulSpace); pane.canvas = pane.canvas || {}; (0, _extend.extend)(pane.canvas, canvas); pane.canvas[startName] = canvas[startName] + distributedSpace; pane.canvas[endName] = canvas[endName] + (paneSpace - calcLength - distributedSpace); distributedSpace = distributedSpace + calcLength + padding; setCanvasValues(pane.canvas) })) }; exports.valueOf = valueOf; var _common = __webpack_require__( /*! ../../core/utils/common */ 17781); var _type = __webpack_require__( /*! ../../core/utils/type */ 11528); var _extend = __webpack_require__( /*! ../../core/utils/extend */ 52576); var _iterator = __webpack_require__( /*! ../../core/utils/iterator */ 21274); var _math = __webpack_require__( /*! ../../core/utils/math */ 50254); var _date = _interopRequireDefault(__webpack_require__( /*! ../../core/utils/date */ 41380)); var _color = _interopRequireDefault(__webpack_require__( /*! ../../color */ 43101)); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } const { PI: PI, LN10: LN10, abs: abs, log: log, floor: floor, ceil: ceil, pow: pow, sqrt: sqrt, atan2: atan2 } = Math; const _min = Math.min; const _max = Math.max; const _cos = Math.cos; const _sin = Math.sin; const _round = Math.round; const dateToMilliseconds = _date.default.dateToMilliseconds; const MAX_PIXEL_COUNT = 1e10; const PI_DIV_180 = PI / 180; const _isNaN = isNaN; const _Number = Number; let numDefsSvgElements = 1; const PANE_PADDING = exports.PANE_PADDING = 10; const getLog = function(value, base) { if (!value) { return NaN } return log(value) / log(base) }; exports.getLog = getLog; exports.getAdjustedLog10 = function(value) { return (0, _math.adjust)(getLog(value, 10)) }; const raiseTo = function(power, base) { return pow(base, power) }; exports.raiseTo = raiseTo; const normalizeAngle = function(angle) { return (angle % 360 + 360) % 360 }; exports.normalizeAngle = normalizeAngle; exports.convertAngleToRendererSpace = function(angle) { return 90 - angle }; const degreesToRadians = function(value) { return PI * value / 180 }; exports.degreesToRadians = degreesToRadians; const getCosAndSin = function(angle) { const angleInRadians = degreesToRadians(angle); return { cos: _cos(angleInRadians), sin: _sin(angleInRadians) } }; exports.getCosAndSin = getCosAndSin; const getDistance = function(x1, y1, x2, y2) { const diffX = x2 - x1; const diffY = y2 - y1; return sqrt(diffY * diffY + diffX * diffX) }; exports.getDistance = getDistance; const getDecimalOrder = function(number) { let n = abs(number); let cn; if (!_isNaN(n)) { if (n > 0) { n = log(n) / LN10; cn = ceil(n); return cn - n < 1e-14 ? cn : floor(n) } return 0 } return NaN }; exports.getDecimalOrder = getDecimalOrder; exports.getAppropriateFormat = function(start, end, count) { const order = _max(getDecimalOrder(start), getDecimalOrder(end)); let precision = -getDecimalOrder(abs(end - start) / count); let format; if (!_isNaN(order) && !_isNaN(precision)) { if (abs(order) <= 4) { format = "fixedPoint"; precision < 0 && (precision = 0); precision > 4 && (precision = 4) } else { format = "exponential"; precision += order - 1; precision > 3 && (precision = 3) } return { type: format, precision: precision } } return null }; const roundValue = function(value, precision) { if (precision > 20) { precision = 20 } if ((0, _type.isNumeric)(value)) { if ((0, _type.isExponential)(value)) { return _Number(value.toExponential(precision)) } else { return _Number(value.toFixed(precision)) } } }; exports.roundValue = roundValue; exports.getPower = function(value) { return value.toExponential().split("e")[1] }; function map(array, callback) { let i = 0; const len = array.length; const result = []; let value; while (i < len) { value = callback(array[i], i); if (null !== value) { result.push(value) } i++ } return result } function selectByKeys(object, keys) { return map(keys, (key => object[key] ? object[key] : null)) } function decreaseFields(object, keys, eachDecrease, decrease) { let dec = decrease; (0, _iterator.each)(keys, ((_, key) => { if (object[key]) { object[key] -= eachDecrease; dec -= eachDecrease } })); return dec } function normalizeEnum(value) { return String(value).toLowerCase() } function setCanvasValues(canvas) { if (canvas) { canvas.originalTop = canvas.top; canvas.originalBottom = canvas.bottom; canvas.originalLeft = canvas.left; canvas.originalRight = canvas.right } return canvas } function normalizeBBoxField(value) { return -MAX_PIXEL_COUNT < value && value < +MAX_PIXEL_COUNT ? value : 0 } function normalizeBBox(bBox) { const xl = normalizeBBoxField(floor(bBox.x)); const yt = normalizeBBoxField(floor(bBox.y)); const xr = normalizeBBoxField(ceil(bBox.width + bBox.x)); const yb = normalizeBBoxField(ceil(bBox.height + bBox.y)); const result = { x: xl, y: yt, width: xr - xl, height: yb - yt }; result.isEmpty = !result.x && !result.y && !result.width && !result.height; return result } exports.decreaseGaps = function(object, keys, decrease) { let arrayGaps; do { arrayGaps = selectByKeys(object, keys); arrayGaps.push(ceil(decrease / arrayGaps.length)); decrease = decreaseFields(object, keys, _min.apply(null, arrayGaps), decrease) } while (decrease > 0 && arrayGaps.length > 1); return decrease }; exports.parseScalar = function(value, defaultValue) { return void 0 !== value ? value : defaultValue }; exports.enumParser = function(values) { const stored = {}; let i; let ii; for (i = 0, ii = values.length; i < ii; ++i) { stored[normalizeEnum(values[i])] = 1 } return function(value, defaultValue) { const _value = normalizeEnum(value); return stored[_value] ? _value : defaultValue } }; exports.patchFontOptions = function(options) { const fontOptions = {}; (0, _iterator.each)(options || {}, (function(key, value) { if (/^(cursor)$/i.test(key)) {} else if ("opacity" === key) { value = null } else if ("color" === key) { key = "fill"; if ("opacity" in options) { const color = new _color.default(value); value = `rgba(${color.r},${color.g},${color.b},${options.opacity})` } } else { key = "font-" + key } fontOptions[key] = value })); return fontOptions }; exports.convertXYToPolar = function(centerCoords, x, y) { const radius = getDistance(centerCoords.x, centerCoords.y, x, y); const angle = atan2(y - centerCoords.y, x - centerCoords.x); return { phi: _round(normalizeAngle(180 * angle / PI)), r: _round(radius) } }; exports.processSeriesTemplate = function(seriesTemplate, items) { const customizeSeries = (0, _type.isFunction)(seriesTemplate.customizeSeries) ? seriesTemplate.customizeSeries : _common.noop; const nameField = seriesTemplate.nameField; const generatedSeries = {}; const seriesOrder = []; let series; let i = 0; let length; let data; items = items || []; for (length = items.length; i < length; i++) { data = items[i]; if (nameField in data) { series = generatedSeries[data[nameField]]; if (!series) { series = generatedSeries[data[nameField]] = { name: data[nameField], nameFieldValue: data[nameField] }; seriesOrder.push(series.name) } } } return map(seriesOrder, (function(orderedName) { const group = generatedSeries[orderedName]; return (0, _extend.extend)(group, customizeSeries.call(null, group.name)) })) }; const getCategoriesInfo = function(categories, startValue, endValue) { if (0 === categories.length) { return { categories: [] } } startValue = (0, _type.isDefined)(startValue) ? startValue : categories[0]; endValue = (0, _type.isDefined)(endValue) ? endValue : categories[categories.length - 1]; const categoriesValue = map(categories, (category => null === category || void 0 === category ? void 0 : category.valueOf())); let indexStartValue = categoriesValue.indexOf(startValue.valueOf()); let indexEndValue = categoriesValue.indexOf(endValue.valueOf()); let swapBuf; let inverted = false; indexStartValue < 0 && (indexStartValue = 0); indexEndValue < 0 && (indexEndValue = categories.length - 1); if (indexEndValue < indexStartValue) { swapBuf = indexEndValue; indexEndValue = indexStartValue; indexStartValue = swapBuf; inverted = true } const visibleCategories = categories.slice(indexStartValue, indexEndValue + 1); const lastIdx = visibleCategories.length - 1; return { categories: visibleCategories, start: visibleCategories[inverted ? lastIdx : 0], end: visibleCategories[inverted ? 0 : lastIdx], inverted: inverted } }; exports.getCategoriesInfo = getCategoriesInfo; function isRelativeHeightPane(pane) { return !(pane.unit % 2) } exports.unique = function(array) { const values = {}; return map(array, (function(item) { const result = !values[item] ? item : null; values[item] = true; return result })) }; exports.getVerticallyShiftedAngularCoords = function(bBox, dy, center) { const isPositive = bBox.x + bBox.width / 2 >= center.x; const horizontalOffset1 = (isPositive ? bBox.x : bBox.x + bBox.width) - center.x; const verticalOffset1 = bBox.y - center.y; const verticalOffset2 = verticalOffset1 + dy; const horizontalOffset2 = _round(sqrt(horizontalOffset1 * horizontalOffset1 + verticalOffset1 * verticalOffset1 - verticalOffset2 * verticalOffset2)); const dx = (isPositive ? +horizontalOffset2 : -horizontalOffset2) || horizontalOffset1; return { x: center.x + (isPositive ? dx : dx - bBox.width), y: bBox.y + dy } }; function getAddFunction(range, correctZeroLevel) { if ("datetime" === range.dataType) { return function(rangeValue, marginValue) { let sign = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : 1; return new Date(rangeValue.getTime() + sign * marginValue) } } if ("logarithmic" === range.axisType) { return function(rangeValue, marginValue) { let sign = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : 1; const log = getLogExt(rangeValue, range.base) + sign * marginValue; return raiseToExt(log, range.base) } } return function(rangeValue, marginValue) { let sign = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : 1; const newValue = rangeValue + sign * marginValue; return correctZeroLevel && newValue * rangeValue <= 0 ? 0 : newValue } } function getLogExt(value, base) { let allowNegatives = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : false; let linearThreshold = arguments.length > 3 ? arguments[3] : void 0; if (!allowNegatives) { return getLog(value, base) } if (0 === value) { return 0 } const transformValue = getLog(abs(value), base) - (linearThreshold - 1); if (transformValue < 0) { return 0 } return (0, _math.adjust)((0, _math.sign)(value) * transformValue, Number(pow(base, linearThreshold - 1).toFixed(abs(linearThreshold)))) } function raiseToExt(value, base) { let allowNegatives = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : false; let linearThreshold = arguments.length > 3 ? arguments[3] : void 0; if (!allowNegatives) { return raiseTo(value, base) } if (0 === value) { return 0 } const transformValue = raiseTo(abs(value) + (linearThreshold - 1), base); if (transformValue < 0) { return 0 } return (0, _math.adjust)((0, _math.sign)(value) * transformValue, Number(pow(base, linearThreshold).toFixed(abs(linearThreshold)))) } function valueOf(value) { return value && value.valueOf() } exports.getNextDefsSvgId = () => "DevExpress_" + numDefsSvgElements++ }, 9735: /*!************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/viz/palette.js ***! \************************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { exports.createPalette = createPalette; exports.currentPalette = currentPalette; exports.generateColors = function(palette, count) { let options = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : { keepLastColorInEnd: false }; options.type = options.baseColorSet; options.extensionMode = options.paletteExtensionMode; return createPalette(palette, options).generateColors(count) }; exports.getAccentColor = function(palette, themeDefault) { palette = getPalette(palette, { themeDefault: themeDefault }); return palette.accentColor || palette[0] }; exports.getDiscretePalette = function(source, size, themeDefaultPalette) { const palette = size > 0 ? function(source, count) { const colorCount = count - 1; const sourceCount = source.length - 1; const colors = []; const gradient = []; let i; function addColor(pos) { const k = sourceCount * pos; const kl = _floor(k); const kr = _ceil(k); gradient.push(colors[kl].blend(colors[kr], k - kl).toHex()) } for (i = 0; i <= sourceCount; ++i) { colors.push(new _color.default(source[i])) } if (colorCount > 0) { for (i = 0; i <= colorCount; ++i) { addColor(i / colorCount) } } else { addColor(.5) } return gradient }(getPalette(source, { type: "gradientSet", themeDefault: themeDefaultPalette }), size) : []; return { getColor: function(index) { return palette[index] || null } } }; exports.getGradientPalette = function(source, themeDefaultPalette) { const palette = getPalette(source, { type: "gradientSet", themeDefault: themeDefaultPalette }); const color1 = new _color.default(palette[0]); const color2 = new _color.default(palette[1]); return { getColor: function(ratio) { return 0 <= ratio && ratio <= 1 ? color1.blend(color2, ratio).toHex() : null } } }; exports.getPalette = getPalette; exports.registerPalette = function(name, palette) { const item = {}; let paletteName; if (_isArray(palette)) { item.simpleSet = palette.slice(0) } else if (palette) { item.simpleSet = _isArray(palette.simpleSet) ? palette.simpleSet.slice(0) : void 0; item.indicatingSet = _isArray(palette.indicatingSet) ? palette.indicatingSet.slice(0) : void 0; item.gradientSet = _isArray(palette.gradientSet) ? palette.gradientSet.slice(0) : void 0; item.accentColor = palette.accentColor } if (!item.accentColor) { item.accentColor = item.simpleSet && item.simpleSet[0] } if (item.simpleSet || item.indicatingSet || item.gradientSet) { paletteName = (0, _utils.normalizeEnum)(name); (0, _extend.extend)(palettes[paletteName] = palettes[paletteName] || {}, item) } }; var _utils = __webpack_require__( /*! ./core/utils */ 28779); var _extend = __webpack_require__( /*! ../core/utils/extend */ 52576); var _color = (e = __webpack_require__( /*! ../color */ 43101), e && e.__esModule ? e : { default: e }); var e; var _type = __webpack_require__( /*! ../core/utils/type */ 11528); const _floor = Math.floor; const _ceil = Math.ceil; const _isArray = Array.isArray; const HIGHLIGHTING_STEP = 50; const DEFAULT_PALETTE = "material"; const palettes = { [DEFAULT_PALETTE]: { simpleSet: ["#1db2f5", "#f5564a", "#97c95c", "#ffc720", "#eb3573", "#a63db8"], indicatingSet: ["#97c95c", "#ffc720", "#f5564a"], gradientSet: ["#1db2f5", "#97c95c"], accentColor: "#1db2f5" }, office: { simpleSet: ["#5f8b95", "#ba4d51", "#af8a53", "#955f71", "#859666", "#7e688c"], indicatingSet: ["#a3b97c", "#e1b676", "#ec7f83"], gradientSet: ["#5f8b95", "#ba4d51"], accentColor: "#ba4d51" }, "harmony light": { simpleSet: ["#fcb65e", "#679ec5", "#ad79ce", "#7abd5c", "#e18e92", "#b6d623", "#b7abea", "#85dbd5"], indicatingSet: ["#b6d623", "#fcb65e", "#e18e92"], gradientSet: ["#7abd5c", "#fcb65e"], accentColor: "#679ec5" }, "soft pastel": { simpleSet: ["#60a69f", "#78b6d9", "#6682bb", "#a37182", "#eeba69", "#90ba58", "#456c68", "#7565a4"], indicatingSet: ["#90ba58", "#eeba69", "#a37182"], gradientSet: ["#78b6d9", "#eeba69"], accentColor: "#60a69f" }, pastel: { simpleSet: ["#bb7862", "#70b3a1", "#bb626a", "#057d85", "#ab394b", "#dac599", "#153459", "#b1d2c6"], indicatingSet: ["#70b3a1", "#dac599", "#bb626a"], gradientSet: ["#bb7862", "#70b3a1"], accentColor: "#bb7862" }, bright: { simpleSet: ["#70c92f", "#f8ca00", "#bd1550", "#e97f02", "#9d419c", "#7e4452", "#9ab57e", "#36a3a6"], indicatingSet: ["#70c92f", "#f8ca00", "#bd1550"], gradientSet: ["#e97f02", "#f8ca00"], accentColor: "#e97f02" }, soft: { simpleSet: ["#cbc87b", "#9ab57e", "#e55253", "#7e4452", "#e8c267", "#565077", "#6babac", "#ad6082"], indicatingSet: ["#9ab57e", "#e8c267", "#e55253"], gradientSet: ["#9ab57e", "#e8c267"], accentColor: "#565077" }, ocean: { simpleSet: ["#75c099", "#acc371", "#378a8a", "#5fa26a", "#064970", "#38c5d2", "#00a7c6", "#6f84bb"], indicatingSet: ["#c8e394", "#7bc59d", "#397c8b"], gradientSet: ["#acc371", "#38c5d2"], accentColor: "#378a8a" }, vintage: { simpleSet: ["#dea484", "#efc59c", "#cb715e", "#eb9692", "#a85c4c", "#f2c0b5", "#c96374", "#dd956c"], indicatingSet: ["#ffe5c6", "#f4bb9d", "#e57660"], gradientSet: ["#efc59c", "#cb715e"], accentColor: "#cb715e" }, violet: { simpleSet: ["#d1a1d1", "#eeacc5", "#7b5685", "#7e7cad", "#a13d73", "#5b41ab", "#e287e2", "#689cc1"], indicatingSet: ["#d8e2f6", "#d0b2da", "#d56a8a"], gradientSet: ["#eeacc5", "#7b5685"], accentColor: "#7b5685" }, carmine: { simpleSet: ["#fb7764", "#73d47f", "#fed85e", "#d47683", "#dde392", "#757ab2"], indicatingSet: ["#5cb85c", "#f0ad4e", "#d9534f"], gradientSet: ["#fb7764", "#73d47f"], accentColor: "#f05b41" }, "dark moon": { simpleSet: ["#4ddac1", "#f4c99a", "#80dd9b", "#f998b3", "#4aaaa0", "#a5aef1"], indicatingSet: ["#59d8a4", "#f0ad4e", "#f9517e"], gradientSet: ["#4ddac1", "#f4c99a"], accentColor: "#3debd3" }, "soft blue": { simpleSet: ["#7ab8eb", "#97da97", "#facb86", "#e78683", "#839bda", "#4db7be"], indicatingSet: ["#5cb85c", "#f0ad4e", "#d9534f"], gradientSet: ["#7ab8eb", "#97da97"], accentColor: "#7ab8eb" }, "dark violet": { simpleSet: ["#9c63ff", "#64c064", "#eead51", "#d2504b", "#4b6bbf", "#2da7b0"], indicatingSet: ["#5cb85c", "#f0ad4e", "#d9534f"], gradientSet: ["#9c63ff", "#64c064"], accentColor: "#9c63ff" }, "green mist": { simpleSet: ["#3cbab2", "#8ed962", "#5b9d95", "#efcc7c", "#f1929f", "#4d8dab"], indicatingSet: ["#72d63c", "#ffc852", "#f74a5e"], gradientSet: ["#3cbab2", "#8ed962"], accentColor: "#3cbab2" } }; let currentPaletteName; function currentPalette(name) { if (void 0 === name) { return currentPaletteName || DEFAULT_PALETTE } else { name = (0, _utils.normalizeEnum)(name); currentPaletteName = name in palettes ? name : void 0 } } function getPalette(palette, parameters) { parameters = parameters || {}; palette = palette || (void 0 === currentPaletteName ? parameters.themeDefault : currentPalette()); let result; const type = parameters.type; if (_isArray(palette)) { return palette.slice(0) } else { if ((0, _type.isString)(palette)) { result = palettes[(0, _utils.normalizeEnum)(palette)] } if (!result) { result = palettes[currentPalette()] } } return type ? result[type].slice(0) : result } function RingBuf(buf) { let ind = 0; this.next = function() { const res = buf[ind++]; if (ind === buf.length) { this.reset() } return res }; this.reset = function() { ind = 0 } } function getAlternateColorsStrategy(palette, parameters) { const stepHighlight = parameters.useHighlight ? HIGHLIGHTING_STEP : 0; const paletteSteps = new RingBuf([0, stepHighlight, -stepHighlight]); let currentPalette = []; function reset() { const step = paletteSteps.next(); currentPalette = step ? function(originalPalette, step) { const palette = []; let i; const ii = originalPalette.length; for (i = 0; i < ii; ++i) { palette.push(getNewColor(originalPalette[i], step)) } return palette }(palette, step) : palette.slice(0) } return { getColor: function(index) { const color = currentPalette[index % palette.length]; if (index % palette.length === palette.length - 1) { reset() } return color }, generateColors: function(count) { const colors = []; count = count || parameters.count; for (let i = 0; i < count; i++) { colors.push(this.getColor(i)) } return colors }, reset: function() { paletteSteps.reset(); reset() } } } function getExtrapolateColorsStrategy(palette, parameters) { return { getColor: function(index, count) { const paletteCount = palette.length; const cycles = _floor((count - 1) / paletteCount + 1); const color = palette[index % paletteCount]; if (cycles > 1) { return function(color, cycleIndex, cycleCount) { const hsl = new _color.default(color).hsl; let l = hsl.l / 100; const diapason = cycleCount - 1 / cycleCount; let minL = l - .5 * diapason; let maxL = l + .5 * diapason; const cycleMiddle = (cycleCount - 1) / 2; const cycleDiff = cycleIndex - cycleMiddle; if (minL < Math.min(.5, .9 * l)) { minL = Math.min(.5, .9 * l) } if (maxL > Math.max(.8, l + .15 * (1 - l))) { maxL = Math.max(.8, l + .15 * (1 - l)) } if (cycleDiff < 0) { l -= (minL - l) * cycleDiff / cycleMiddle } else { l += cycleDiff / cycleMiddle * (maxL - l) } hsl.l = 100 * l; return _color.default.prototype.fromHSL(hsl).toHex() }(color, _floor(index / paletteCount), cycles) } return color }, generateColors: function(count) { const colors = []; count = count || parameters.count; for (let i = 0; i < count; i++) { colors.push(this.getColor(i, count)) } return colors }, reset: function() {} } } function getColorMixer(palette, parameters) { const paletteCount = palette.length; let extendedPalette = []; function distributeColors(count, colorsCount, startIndex, distribution) { const groupSize = Math.floor(count / colorsCount); let extraItems = count - colorsCount * groupSize; let i = startIndex; let middleIndex; let size; while (i < startIndex + count) { size = groupSize; if (extraItems > 0) { size += 1; extraItems-- } middleIndex = size > 2 ? Math.floor(size / 2) : 0; distribution.push(i + middleIndex); i += size } return distribution.sort((function(a, b) { return a - b })) } function getColorAndDistance(arr, startIndex, count) { startIndex = (count + startIndex) % count; let distance = 0; for (let i = startIndex; i < 2 * count; i += 1) { const index = (count + i) % count; if (arr[index]) { return [arr[index], distance] } distance++ } } function extendPalette(count) { if (count <= paletteCount) { return palette } let result = []; const colorInGroups = paletteCount - 2; let currentColorIndex = 0; let cleanColorIndices = []; if (parameters.keepLastColorInEnd) { cleanColorIndices = distributeColors(count - 2, colorInGroups, 1, [0, count - 1]) } else { cleanColorIndices = distributeColors(count - 1, paletteCount - 1, 1, [0]) } for (let i = 0; i < count; i++) { if (cleanColorIndices.indexOf(i) > -1) { result[i] = palette[currentColorIndex++] } } result = function(paletteWithEmptyColors, paletteLength) { for (let i = 0; i < paletteLength; i++) { const color = paletteWithEmptyColors[i]; if (!color) { let color1 = paletteWithEmptyColors[i - 1]; if (!color1) { continue } else { const c2 = getColorAndDistance(paletteWithEmptyColors, i, paletteLength); const color2 = new _color.default(c2[0]); color1 = new _color.default(color1); for (let j = 0; j < c2[1]; j++, i++) { paletteWithEmptyColors[i] = color1.blend(color2, (j + 1) / (c2[1] + 1)).toHex() } } } } return paletteWithEmptyColors }(result, count); return result } return { getColor: function(index, count) { count = count || parameters.count || paletteCount; if (extendedPalette.length !== count) { extendedPalette = extendPalette(count) } return extendedPalette[index % count] }, generateColors: function(count, repeat) { count = count || parameters.count || paletteCount; if (repeat && count > paletteCount) { const colors = extendPalette(paletteCount); for (let i = 0; i < count - paletteCount; i++) { colors.push(colors[i]) } return colors } else { return paletteCount > 0 ? extendPalette(count).slice(0, count) : [] } }, reset: function() {} } } function createPalette(palette, parameters, themeDefaultPalette) { const paletteObj = { dispose() { this._extensionStrategy = null }, getNextColor(count) { return this._extensionStrategy.getColor(this._currentColor++, count) }, generateColors(count, parameters) { return this._extensionStrategy.generateColors(count, (parameters || {}).repeat) }, reset() { this._currentColor = 0; this._extensionStrategy.reset(); return this } }; parameters = parameters || {}; const extensionMode = (parameters.extensionMode || "").toLowerCase(); const colors = getPalette(palette, { type: parameters.type || "simpleSet", themeDefault: themeDefaultPalette }); if ("alternate" === extensionMode) { paletteObj._extensionStrategy = getAlternateColorsStrategy(colors, parameters) } else if ("extrapolate" === extensionMode) { paletteObj._extensionStrategy = getExtrapolateColorsStrategy(colors, parameters) } else { paletteObj._extensionStrategy = getColorMixer(colors, parameters) } paletteObj.reset(); return paletteObj } function getNewColor(currentColor, step) { let newColor = new _color.default(currentColor).alter(step); const lightness = (color = newColor, .3 * color.r + .59 * color.g + .11 * color.b); var color; if (lightness > 200 || lightness < 55) { newColor = new _color.default(currentColor).alter(-step / 2) } return newColor.toHex() } }, 84560: /*!***********************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/viz/themes.js ***! \***********************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { exports.addCacheItem = function(target) { const cacheUid = ++nextCacheUid; target._cache = cacheUid; widgetsCache[cacheUid] = target }; exports.currentTheme = currentTheme; exports.getTheme = getTheme; exports.refreshTheme = function() { Object.keys(widgetsCache).forEach((key => { widgetsCache[key].refresh() })); return this }; exports.registerTheme = registerTheme; exports.registerThemeSchemeAlias = function(from, to) { themesSchemeMapping[from] = to }; exports.removeCacheItem = function(target) { delete widgetsCache[target._cache] }; var _extend2 = __webpack_require__( /*! ../core/utils/extend */ 52576); var _utils = __webpack_require__( /*! ./core/utils */ 28779); var _themes = __webpack_require__( /*! ../ui/themes */ 52071); var _type = __webpack_require__( /*! ../core/utils/type */ 11528); var _index = _interopRequireDefault(__webpack_require__( /*! ../__internal/viz/core/themes/generic/light/index */ 4702)); var _carmine = _interopRequireDefault(__webpack_require__( /*! ../__internal/viz/core/themes/generic/carmine */ 58208)); var _dark = _interopRequireDefault(__webpack_require__( /*! ../__internal/viz/core/themes/generic/dark */ 52541)); var _contrast = _interopRequireDefault(__webpack_require__( /*! ../__internal/viz/core/themes/generic/contrast */ 2611)); var _darkmoon = _interopRequireDefault(__webpack_require__( /*! ../__internal/viz/core/themes/generic/darkmoon */ 9940)); var _darkviolet = _interopRequireDefault(__webpack_require__( /*! ../__internal/viz/core/themes/generic/darkviolet */ 26374)); var _greenmist = _interopRequireDefault(__webpack_require__( /*! ../__internal/viz/core/themes/generic/greenmist */ 29431)); var _softblue = _interopRequireDefault(__webpack_require__( /*! ../__internal/viz/core/themes/generic/softblue */ 56829)); var _index2 = _interopRequireDefault(__webpack_require__( /*! ../__internal/viz/core/themes/material/index */ 55073)); var _index3 = _interopRequireDefault(__webpack_require__( /*! ../__internal/viz/core/themes/fluent/index */ 12638)); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } const themes = {}; const themesMapping = {}; const themesSchemeMapping = {}; const _extend = _extend2.extend; let currentThemeName = null; let defaultTheme; let nextCacheUid = 0; const widgetsCache = {}; function getTheme(themeName) { const name = (0, _utils.normalizeEnum)(themeName); return themes[name] || themes[themesMapping[name] || currentTheme()] } function findThemeNameByName(name, scheme) { const fullThemeKey = `${name}.${scheme}`; return themesMapping[fullThemeKey] || themesSchemeMapping[fullThemeKey] || themesMapping[name] } function currentTheme(themeName, colorScheme) { if (!arguments.length) { return currentThemeName || findThemeNameByName((0, _themes.current)()) || defaultTheme } const scheme = (0, _utils.normalizeEnum)(colorScheme); currentThemeName = (null !== themeName && void 0 !== themeName && themeName.platform ? function(platform, version, scheme) { return findThemeNameByName(platform + version, scheme) || findThemeNameByName(platform, scheme) }((0, _utils.normalizeEnum)(themeName.platform), themeName.version, scheme) : findThemeNameByName((0, _utils.normalizeEnum)(themeName), scheme)) || currentThemeName; return this } function registerTheme(theme, baseThemeName) { const themeName = (0, _utils.normalizeEnum)(theme && theme.name); if (themeName) { theme.isDefault && (defaultTheme = themeName); ! function(themeName, targetThemeName) { const themeInfo = function(themeName, splitter) { const k = themeName.indexOf(splitter); return k > 0 ? { name: themeName.substring(0, k), scheme: themeName.substring(k + 1) } : null }(themeName, ".") || { name: themeName }; const name = themeInfo.name; const scheme = themeInfo.scheme; if (scheme) { const fullThemeKey = `${name}.${scheme}`; themesMapping[name] = themesMapping[name] || targetThemeName; themesMapping[fullThemeKey] = targetThemeName } else { themesMapping[name] = targetThemeName } }(themeName, themeName); themes[themeName] = _extend(true, {}, getTheme(baseThemeName), function(theme) { theme = _extend(true, { loadingIndicator: { font: {} }, export: { font: {} }, legend: { font: {}, border: {} }, title: { font: {} }, tooltip: { font: {} }, "chart:common": {}, "chart:common:axis": { grid: {}, minorGrid: {}, tick: {}, minorTick: {}, title: { font: {} }, label: { font: {} } }, "chart:common:annotation": { font: {}, border: {} }, chart: { commonSeriesSettings: { candlestick: {} } }, pie: {}, polar: {}, gauge: { scale: { tick: {}, minorTick: {}, label: { font: {} } } }, barGauge: {}, funnel: {}, sankey: {}, map: { background: {} }, treeMap: { tile: { selectionStyle: { border: {} } }, group: { border: {}, selectionStyle: { border: {} }, label: { font: {} } } }, rangeSelector: { scale: { tick: {}, minorTick: {}, label: { font: {} } }, chart: {} }, sparkline: {}, bullet: {} }, theme); mergeScalar(theme.loadingIndicator, "backgroundColor", theme); mergeScalar(theme.chart.commonSeriesSettings.candlestick, "innerColor", null, theme.backgroundColor); mergeScalar(theme.map.background, "color", null, theme.backgroundColor); mergeScalar(theme.title.font, "color", null, theme.primaryTitleColor); mergeObject(theme.title, "subtitle", null, theme.title); mergeScalar(theme.legend.font, "color", null, theme.secondaryTitleColor); mergeScalar(theme.legend.border, "color", null, theme.gridColor); ! function(theme) { const commonAxisSettings = theme["chart:common:axis"]; const colorFieldName = "color"; [commonAxisSettings.grid, commonAxisSettings.minorGrid].forEach((obj => { mergeScalar(obj, colorFieldName, null, theme.gridColor) })); [commonAxisSettings, commonAxisSettings.tick, commonAxisSettings.minorTick, commonAxisSettings.label.font].forEach((obj => { mergeScalar(obj, colorFieldName, null, theme.axisColor) })); mergeScalar(commonAxisSettings.title.font, colorFieldName, null, theme.secondaryTitleColor); mergeScalar(theme.gauge.scale.label.font, colorFieldName, null, theme.axisColor); mergeScalar(theme.gauge.scale.tick, colorFieldName, null, theme.backgroundColor); mergeScalar(theme.gauge.scale.minorTick, colorFieldName, null, theme.backgroundColor); mergeScalar(theme.rangeSelector.scale.label.font, colorFieldName, null, theme.axisColor) }(theme); ["chart", "pie", "polar", "gauge", "barGauge", "map", "treeMap", "funnel", "rangeSelector", "sparkline", "bullet", "sankey"].forEach((section => { mergeScalar(theme[section], "redrawOnResize", theme); mergeScalar(theme[section], "containerBackgroundColor", null, theme.backgroundColor); mergeObject(theme[section], "tooltip", theme); mergeObject(theme[section], "export", theme) })); ["chart", "pie", "polar", "gauge", "barGauge", "map", "treeMap", "funnel", "rangeSelector", "sankey"].forEach((section => { mergeObject(theme[section], "loadingIndicator", theme); mergeObject(theme[section], "legend", theme); mergeObject(theme[section], "title", theme) })); ["chart", "pie", "polar"].forEach((section => { mergeObject(theme, section, null, theme["chart:common"]) })); ["chart", "polar"].forEach((section => { theme[section] = theme[section] || {}; mergeObject(theme[section], "commonAxisSettings", null, theme["chart:common:axis"]) })); ["chart", "polar", "map", "pie"].forEach((section => { theme[section] = theme[section] || {}; mergeObject(theme[section], "commonAnnotationSettings", null, theme["chart:common:annotation"]) })); mergeObject(theme.rangeSelector.chart, "commonSeriesSettings", theme.chart); mergeObject(theme.rangeSelector.chart, "dataPrepareSettings", theme.chart); mergeScalar(theme.treeMap.group.border, "color", null, theme.gridColor); mergeScalar(theme.treeMap.tile.selectionStyle.border, "color", null, theme.primaryTitleColor); mergeScalar(theme.treeMap.group.selectionStyle.border, "color", null, theme.primaryTitleColor); mergeScalar(theme.map.legend, "backgroundColor", theme); ! function(theme) { const map = theme.map; ["area", "line", "marker"].forEach((section => { mergeObject(map, "layer:" + section, null, map.layer) })); ["dot", "bubble", "pie", "image"].forEach((section => { mergeObject(map, "layer:marker:" + section, null, map["layer:marker"]) })) }(theme); return theme }(theme)) } } function mergeScalar(target, field, source, sourceValue) { const _value = (null === source || void 0 === source ? void 0 : source[field]) ?? sourceValue; if (void 0 !== _value && void 0 === target[field]) { target[field] = _value } } function mergeObject(target, field, source, sourceValue) { const _value = (null === source || void 0 === source ? void 0 : source[field]) ?? sourceValue; if (void 0 !== _value) { target[field] = _extend(true, {}, _value, target[field]) } } if ((0, _type.isEmptyObject)(themes) && (0, _type.isEmptyObject)(themesMapping) && !defaultTheme) { [].concat(_index.default, _carmine.default, _dark.default, _contrast.default, _darkmoon.default, _darkviolet.default, _greenmist.default, _softblue.default, _index2.default, _index3.default).forEach((t => { registerTheme(t.theme, t.baseThemeName) })) } }, 2225: /*!**********************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/viz/utils.js ***! \**********************************************************/ function(__unused_webpack_module, exports, __webpack_require__) { exports.prepareSegmentRectPoints = exports.floorCanvasDimensions = exports.areCanvasesDifferent = void 0; Object.defineProperty(exports, "refreshPaths", { enumerable: true, get: function() { return _renderer.refreshPaths } }); var _renderer = __webpack_require__( /*! ./core/renderers/renderer */ 63022); var _iterator = __webpack_require__( /*! ../core/utils/iterator */ 21274); function _extends() { return _extends = Object.assign ? Object.assign.bind() : function(n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) { ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]) } } return n }, _extends.apply(null, arguments) } const { floor: floor } = Math; exports.prepareSegmentRectPoints = function(left, top, width, height, borderOptions) { const maxSW = ~~((width < height ? width : height) / 2); const sw = borderOptions.width || 0; const newSW = sw < maxSW ? sw : maxSW; left += newSW / 2; top += newSW / 2; width -= newSW; height -= newSW; const right = left + width; const bottom = top + height; let points = []; let segments = []; let segmentSequence; let visiblyOpt = 0; let prevSegmentVisibility = 0; const allSegment = { top: [ [left, top], [right, top] ], right: [ [right, top], [right, bottom] ], bottom: [ [right, bottom], [left, bottom] ], left: [ [left, bottom], [left, top] ] }; (0, _iterator.each)(allSegment, (function(seg) { const visibility = !!borderOptions[seg]; visiblyOpt = 2 * visiblyOpt + ~~visibility })); switch (visiblyOpt) { case 13: case 9: segmentSequence = ["left", "top", "right", "bottom"]; break; case 11: segmentSequence = ["bottom", "left", "top", "right"]; break; default: segmentSequence = ["top", "right", "bottom", "left"] }(0, _iterator.each)(segmentSequence, (function(_, seg) { const segmentVisibility = !!borderOptions[seg]; if (!prevSegmentVisibility && segments.length) { points.push(segments); segments = [] } if (segmentVisibility) { (0, _iterator.each)(allSegment[seg].slice(prevSegmentVisibility), (function(_, segment) { segments = segments.concat(segment) })) } prevSegmentVisibility = ~~segmentVisibility })); segments.length && points.push(segments); 1 === points.length && (points = points[0]); return { points: points, pathType: 15 === visiblyOpt ? "area" : "line" } }; exports.areCanvasesDifferent = function(canvas1, canvas2) { const sizeLessThreshold = ["width", "height"].every((key => Math.abs(canvas1[key] - canvas2[key]) < 1)); const canvasCoordsIsEqual = ["left", "right", "top", "bottom"].every((key => canvas1[key] === canvas2[key])); return !(sizeLessThreshold && canvasCoordsIsEqual) }; exports.floorCanvasDimensions = function(canvas) { return _extends({}, canvas, { height: floor(canvas.height), width: floor(canvas.width) }) } }, 1990: /*!******************************************!*\ !*** external "window.DevExpress.Gantt" ***! \******************************************/ function(module) { module.exports = window.DevExpress.Gantt }, 40765: /*!******************************************!*\ !*** external "window.DevExpress.Quill" ***! \******************************************/ function(module) { module.exports = window.DevExpress.Quill }, 36761: /*!********************************************!*\ !*** external "window.DevExpress.diagram" ***! \********************************************/ function(module) { module.exports = window.DevExpress.diagram }, 87626: /*!***********************************!*\ !*** external "window.Globalize" ***! \***********************************/ function(module) { module.exports = window.Globalize }, 87531: /*!*******************************!*\ !*** external "window.JSZip" ***! \*******************************/ function(module) { module.exports = window.JSZip }, 10561: /*!********************************!*\ !*** external "window.jQuery" ***! \********************************/ function(module) { module.exports = window.jQuery }, 78117: /*!****************************!*\ !*** external "window.ko" ***! \****************************/ function(module) { module.exports = window.ko } }; var __webpack_module_cache__ = {}; function __webpack_require__(moduleId) { var cachedModule = __webpack_module_cache__[moduleId]; if (void 0 !== cachedModule) { return cachedModule.exports } var module = __webpack_module_cache__[moduleId] = { exports: {} }; __webpack_modules__[moduleId](module, module.exports, __webpack_require__); return module.exports }!void(__webpack_require__.d = function(exports, definition) { for (var key in definition) { if (__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) { Object.defineProperty(exports, key, { enumerable: true, get: definition[key] }) } } }); !void(__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop) }); !void(__webpack_require__.r = function(exports) { if ("undefined" !== typeof Symbol && Symbol.toStringTag) { Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" }) } Object.defineProperty(exports, "__esModule", { value: true }) }); /*!***************************************************************!*\ !*** ./artifacts/transpiled-renovation-npm/bundles/dx.web.js ***! \***************************************************************/ __webpack_require__( /*! ./modules/parts/widgets-web */ 84789) }();